@marcura/marcura-combobox 6.1.0 → 6.1.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.
Files changed (64) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/combobox.injectables.mjs +5 -5
  3. package/esm2020/lib/combobox.module.mjs +103 -103
  4. package/esm2020/lib/components/abstract-combobox/abstract-combobox.component.mjs +240 -240
  5. package/esm2020/lib/components/abstract-dropdown/abstract-dropdown.component.mjs +230 -230
  6. package/esm2020/lib/components/combobox/combobox.component.mjs +365 -361
  7. package/esm2020/lib/components/combobox-popup-footer/combobox-popup-footer.component.mjs +38 -38
  8. package/esm2020/lib/components/dropdown/dropdown.component.mjs +234 -234
  9. package/esm2020/lib/components/multiselect/multiselect.component.mjs +247 -247
  10. package/esm2020/lib/directives/combobox-item-template.directive.mjs +13 -13
  11. package/esm2020/lib/directives/dropdown-item-template.directive.mjs +13 -13
  12. package/esm2020/lib/directives/dropdown-value-template.directive.mjs +13 -13
  13. package/esm2020/lib/directives/multiselect-item-template.directive.mjs +13 -13
  14. package/esm2020/lib/directives/multiselect-tag-template.directive.mjs +13 -13
  15. package/esm2020/lib/directives/multiselect-tag-wrapper.directive.mjs +60 -60
  16. package/esm2020/lib/model/combobox-changed.event.mjs +4 -4
  17. package/esm2020/lib/model/combobox-item.type.mjs +12 -12
  18. package/esm2020/lib/model/combobox-kendo-component.interface.mjs +2 -2
  19. package/esm2020/lib/model/combobox-localization.interface.mjs +2 -2
  20. package/esm2020/lib/model/combobox-search-fn.type.mjs +1 -1
  21. package/esm2020/lib/model/combobox-search-settings-operator.enum.mjs +6 -6
  22. package/esm2020/lib/model/combobox-search-settings.interface.mjs +2 -2
  23. package/esm2020/lib/model/dropdown-changed.event.mjs +4 -4
  24. package/esm2020/lib/model/dropdown-kendo-component.interface.mjs +2 -2
  25. package/esm2020/lib/model/dropdown-localization.interface.mjs +2 -2
  26. package/esm2020/lib/model/dropdown-localizer.interface.mjs +2 -2
  27. package/esm2020/lib/model/multiselect-changed.event.mjs +4 -4
  28. package/esm2020/lib/model/multiselect-localization.interface.mjs +2 -2
  29. package/esm2020/marcura-marcura-combobox.mjs +4 -4
  30. package/esm2020/public-api.mjs +25 -25
  31. package/fesm2015/marcura-marcura-combobox.mjs +1482 -1478
  32. package/fesm2015/marcura-marcura-combobox.mjs.map +1 -1
  33. package/fesm2020/marcura-marcura-combobox.mjs +1477 -1473
  34. package/fesm2020/marcura-marcura-combobox.mjs.map +1 -1
  35. package/index.d.ts +5 -5
  36. package/lib/combobox.injectables.d.ts +8 -8
  37. package/lib/combobox.module.d.ts +25 -25
  38. package/lib/components/abstract-combobox/abstract-combobox.component.d.ts +59 -59
  39. package/lib/components/abstract-dropdown/abstract-dropdown.component.d.ts +76 -76
  40. package/lib/components/combobox/combobox.component.d.ts +65 -64
  41. package/lib/components/combobox-popup-footer/combobox-popup-footer.component.d.ts +13 -13
  42. package/lib/components/dropdown/dropdown.component.d.ts +45 -45
  43. package/lib/components/multiselect/multiselect.component.d.ts +51 -51
  44. package/lib/directives/combobox-item-template.directive.d.ts +5 -5
  45. package/lib/directives/dropdown-item-template.directive.d.ts +5 -5
  46. package/lib/directives/dropdown-value-template.directive.d.ts +5 -5
  47. package/lib/directives/multiselect-item-template.directive.d.ts +5 -5
  48. package/lib/directives/multiselect-tag-template.directive.d.ts +5 -5
  49. package/lib/directives/multiselect-tag-wrapper.directive.d.ts +21 -21
  50. package/lib/model/combobox-changed.event.d.ts +3 -3
  51. package/lib/model/combobox-item.type.d.ts +4 -4
  52. package/lib/model/combobox-kendo-component.interface.d.ts +7 -7
  53. package/lib/model/combobox-localization.interface.d.ts +5 -5
  54. package/lib/model/combobox-search-fn.type.d.ts +3 -3
  55. package/lib/model/combobox-search-settings-operator.enum.d.ts +4 -4
  56. package/lib/model/combobox-search-settings.interface.d.ts +5 -5
  57. package/lib/model/dropdown-changed.event.d.ts +3 -3
  58. package/lib/model/dropdown-kendo-component.interface.d.ts +6 -6
  59. package/lib/model/dropdown-localization.interface.d.ts +3 -3
  60. package/lib/model/dropdown-localizer.interface.d.ts +5 -5
  61. package/lib/model/multiselect-changed.event.d.ts +3 -3
  62. package/lib/model/multiselect-localization.interface.d.ts +5 -5
  63. package/package.json +1 -1
  64. package/public-api.d.ts +24 -24
@@ -1,247 +1,247 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, forwardRef, HostBinding, Inject, Input, Optional, Renderer2, TemplateRef, ViewChild, } from '@angular/core';
2
- import { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { ABSTRACT_CONTROL_COMPONENT, OPENABLE_CONTROL_COMPONENT, STATEABLE_CONTROL_COMPONENT, TYPEABLE_CONTROL_COMPONENT, } from '@marcura/marcura-common';
4
- import { MultiSelectComponent } from '@progress/kendo-angular-dropdowns';
5
- import { filter } from 'rxjs/operators';
6
- import { MULTISELECT_LOCALIZER } from '../../combobox.injectables';
7
- import { MultiselectItemTemplateDirective } from '../../directives/multiselect-item-template.directive';
8
- import { MultiselectTagTemplateDirective } from '../../directives/multiselect-tag-template.directive';
9
- import { MultiselectChangedEvent } from '../../model/multiselect-changed.event';
10
- import { AbstractComboboxComponent } from '../abstract-combobox/abstract-combobox.component';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/common";
13
- import * as i2 from "@angular/forms";
14
- import * as i3 from "@progress/kendo-angular-dropdowns";
15
- import * as i4 from "@marcura/marcura-tag";
16
- import * as i5 from "../combobox-popup-footer/combobox-popup-footer.component";
17
- import * as i6 from "../../directives/multiselect-tag-wrapper.directive";
18
- export class MultiselectComponent extends AbstractComboboxComponent {
19
- get hasValue() {
20
- return this.valueFormControl.value && this.valueFormControl.value.length > 0;
21
- }
22
- get hasIsFocusedCssClass() {
23
- return this.isFocused;
24
- }
25
- get hasIsHoveredCssClass() {
26
- return this._isHovered.value;
27
- }
28
- get hasIsDisabledCssClass() {
29
- return this.isDisabled;
30
- }
31
- get isSuccessType() {
32
- return this._isSuccessType;
33
- }
34
- get isErrorType() {
35
- return this._isErrorType;
36
- }
37
- get isWarningType() {
38
- return this._isWarningType;
39
- }
40
- get isHighlightedState() {
41
- return this._isHighlightedState;
42
- }
43
- get hasIsLoadingCssClass() {
44
- return this.isLoading || this._isSearching.value;
45
- }
46
- get hasHasResetCssClass() {
47
- return this.hasReset;
48
- }
49
- get hasIsOutlineCssClass() {
50
- return this.isOutline;
51
- }
52
- get loadingText() {
53
- return this._loadingText || this._localization.loadingText;
54
- }
55
- set loadingText(loadingText) {
56
- this._loadingText = loadingText;
57
- }
58
- get noItemsText() {
59
- return this._noItemsText || this._localization.noItemsText;
60
- }
61
- set noItemsText(noItemsText) {
62
- this._noItemsText = noItemsText;
63
- }
64
- get minSearchText() {
65
- return this._minSearchText || this._localization.minSearchText;
66
- }
67
- set minSearchText(minSearchText) {
68
- this._minSearchText = minSearchText;
69
- }
70
- get popupSettings() {
71
- return {
72
- animate: true,
73
- popupClass: `sg-multiselect-popup${this.isGroupable ? ' sg-multiselect-popup--is-groupable' : ''} ${this.popupClass || ''}`,
74
- };
75
- }
76
- constructor(changeDetectorRef, renderer, _localizer) {
77
- super(changeDetectorRef, renderer);
78
- this._localizer = _localizer;
79
- this.valueFormControl = new FormControl();
80
- this._loadingText = null;
81
- this._noItemsText = null;
82
- this._minSearchText = null;
83
- this._localization = {
84
- loadingText: 'Loading...',
85
- noItemsText: 'No items found.',
86
- minSearchText: 'Enter {minSearchCharacters} or more characters.',
87
- };
88
- this.defaultValue = [];
89
- this.itemTemplate = null;
90
- this.tagTemplate = null;
91
- this.hasCssClass = true;
92
- this.isReadOnlyTag = null;
93
- this.isActivatedTag = () => false;
94
- this.tagColor = () => null;
95
- this._localize();
96
- }
97
- ngOnInit() {
98
- this._setComponent(this.component);
99
- this.init();
100
- // Opened.
101
- this._observer.listen(this._isOpen.pipe(filter((event) => event.isOpen)), () => {
102
- this._hasSearched.next(false);
103
- if (!this.areItemsCached && this._loadedItems.value.length === 0) {
104
- this.loadItems(this._searchText.value);
105
- }
106
- });
107
- this._observer.listen(this._isOpen.pipe(filter((event) => event.isOpen)), () => this.opened.emit());
108
- }
109
- _emitChanged(value) {
110
- this.changed.emit(new MultiselectChangedEvent(value));
111
- }
112
- hasValueChanged(value) {
113
- const isOldValueEmpty = this.value === null || this.value === undefined || this.value.length === 0;
114
- const isNewValueEmpty = value === null || value === undefined || value.length === 0;
115
- if (isOldValueEmpty && isNewValueEmpty) {
116
- return false;
117
- }
118
- if (isOldValueEmpty || isNewValueEmpty) {
119
- return true;
120
- }
121
- return (this.value.length !== value.length || this.value.some((item, index) => !this.isItemEqual(item, value[index])));
122
- }
123
- _localize() {
124
- if (!this._localizer) {
125
- return;
126
- }
127
- this._localization = this._localizer.localization;
128
- this._observer.listen(this._localizer.localizationChanged, (localization) => {
129
- this._localization = localization;
130
- });
131
- }
132
- }
133
- MultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: MultiselectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: MULTISELECT_LOCALIZER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
134
- MultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: MultiselectComponent, selector: "sg-multiselect", inputs: { formControl: "formControl", loadingText: "loadingText", noItemsText: "noItemsText", minSearchText: "minSearchText", isReadOnlyTag: "isReadOnlyTag", isActivatedTag: "isActivatedTag", tagColor: "tagColor" }, host: { properties: { "class.sg-multiselect": "this.hasCssClass", "class.sg-multiselect--has-value": "this.hasValue", "class.sg-multiselect--is-focused": "this.hasIsFocusedCssClass", "class.sg-multiselect--is-hovered": "this.hasIsHoveredCssClass", "class.sg-multiselect--is-disabled": "this.hasIsDisabledCssClass", "class.sg-multiselect--type-success": "this.isSuccessType", "class.sg-multiselect--type-error": "this.isErrorType", "class.sg-multiselect--type-warning": "this.isWarningType", "class.sg-multiselect--state-highlighted": "this.isHighlightedState", "class.sg-multiselect--is-loading": "this.hasIsLoadingCssClass", "class.sg-multiselect--has-reset": "this.hasHasResetCssClass", "class.sg-multiselect--is-outline": "this.hasIsOutlineCssClass" } }, providers: [
135
- {
136
- provide: NG_VALUE_ACCESSOR,
137
- useExisting: forwardRef(() => MultiselectComponent),
138
- multi: true,
139
- },
140
- {
141
- provide: ABSTRACT_CONTROL_COMPONENT,
142
- useExisting: forwardRef(() => MultiselectComponent),
143
- },
144
- {
145
- provide: OPENABLE_CONTROL_COMPONENT,
146
- useExisting: forwardRef(() => MultiselectComponent),
147
- },
148
- {
149
- provide: STATEABLE_CONTROL_COMPONENT,
150
- useExisting: forwardRef(() => MultiselectComponent),
151
- },
152
- {
153
- provide: TYPEABLE_CONTROL_COMPONENT,
154
- useExisting: forwardRef(() => MultiselectComponent),
155
- },
156
- ], queries: [{ propertyName: "itemTemplate", first: true, predicate: MultiselectItemTemplateDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "tagTemplate", first: true, predicate: MultiselectTagTemplateDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "component", first: true, predicate: ["component"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<kendo-multiselect\r\n #component\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"valueFormControl\"\r\n [data]=\"combinedItems | async\"\r\n [filterable]=\"isSearchable\"\r\n [valueField]=\"valueKey\"\r\n [textField]=\"textKey\"\r\n [loading]=\"isLoadingSpinnerVisible | async\"\r\n [clearButton]=\"false\"\r\n [popupSettings]=\"popupSettings\"\r\n [listHeight]=\"listHeight\"\r\n [valuePrimitive]=\"isPrimitiveValue\"\r\n (filterChange)=\"onSearched($event)\"\r\n (valueChange)=\"onChanged($event)\"\r\n (open)=\"onOpened()\"\r\n (close)=\"onClosed()\"\r\n (focus)=\"onFocused()\"\r\n (blur)=\"onBlurred()\"\r\n>\r\n <ng-template kendoDropDownListFooterTemplate>\r\n <sg-combobox-popup-footer\r\n [isLoadingTextVisible]=\"isLoadingTextVisible | async\"\r\n [isNoItemsTextVisible]=\"isNoItemsTextVisible | async\"\r\n [isMinSearchTextVisible]=\"isMinSearchTextVisible | async\"\r\n [loadingText]=\"loadingText\"\r\n [noItemsText]=\"noItemsText\"\r\n [minSearchText]=\"minSearchText\"\r\n [minSearchCharacters]=\"minSearchCharacters\"\r\n >\r\n </sg-combobox-popup-footer>\r\n </ng-template>\r\n <ng-template kendoDropDownListNoDataTemplate></ng-template>\r\n <ng-template *ngIf=\"itemTemplate\" kendoMultiSelectItemTemplate let-dataItem>\r\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\r\n </ng-template>\r\n <ng-template kendoMultiSelectTagTemplate let-dataItem>\r\n <span\r\n #tagWrapper=\"multiselectTagWrapper\"\r\n sgMultiselectTagWrapper\r\n [isReadOnly]=\"isReadOnlyTag && isReadOnlyTag(dataItem)\"\r\n >\r\n <sg-tag\r\n [icon]=\"tagWrapper.isReadOnly ? '' : 'far fa-times'\"\r\n [color]=\"tagColor(dataItem)\"\r\n [isActivated]=\"isActivatedTag(dataItem)\"\r\n >\r\n <ng-container *ngIf=\"tagTemplate\" [ngTemplateOutlet]=\"tagTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\">\r\n </ng-container>\r\n <ng-container *ngIf=\"!tagTemplate\">{{ dataItem[textField] }}</ng-container>\r\n </sg-tag>\r\n </span>\r\n </ng-template>\r\n</kendo-multiselect>\r\n<div class=\"sg-multiselect__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\r\n <i class=\"far fa-times\"></i>\r\n</div>\r\n<div class=\"sg-multiselect__state-line\"></div>\r\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FooterTemplateDirective, selector: "[kendoDropDownListFooterTemplate],[kendoComboBoxFooterTemplate],[kendoDropDownTreeFooterTemplate],[kendoMultiColumnComboBoxFooterTemplate],[kendoAutoCompleteFooterTemplate],[kendoMultiSelectFooterTemplate],[kendoMultiSelectTreeFooterTemplate]" }, { kind: "directive", type: i3.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }, { kind: "directive", type: i3.NoDataTemplateDirective, selector: "[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]" }, { kind: "directive", type: i3.TagTemplateDirective, selector: "[kendoMultiSelectTagTemplate],[kendoMultiSelectTreeTagTemplate]" }, { kind: "component", type: i3.MultiSelectComponent, selector: "kendo-multiselect", inputs: ["focusableId", "autoClose", "tabindex", "disabled", "readonly", "filterable", "listHeight", "clearButton", "tagMapper", "allowCustom", "valueNormalizer", "data", "value", "tabIndex", "placeholder", "itemDisabled", "checkboxes", "virtual", "popupSettings", "valuePrimitive", "loading", "valueField", "textField"], outputs: ["filterChange", "valueChange", "open", "opened", "close", "closed", "focus", "blur", "removeTag"], exportAs: ["kendoMultiSelect"] }, { kind: "component", type: i4.TagComponent, selector: "sg-tag", inputs: ["isBorderless", "color", "icon", "isActivated", "isDisabled", "isLoading", "isFocusable", "isHoverable", "isReadOnly"], outputs: ["clicked", "focused", "blurred", "iconClicked", "spinnerClicked"] }, { kind: "component", type: i5.ComboboxPopupFooterComponent, selector: "sg-combobox-popup-footer", inputs: ["isLoadingTextVisible", "isNoItemsTextVisible", "isMinSearchTextVisible", "loadingText", "noItemsText", "minSearchText", "minSearchCharacters"] }, { kind: "directive", type: i6.MultiselectTagWrapperDirective, selector: "[sgMultiselectTagWrapper]", inputs: ["isReadOnly"], exportAs: ["multiselectTagWrapper"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: MultiselectComponent, decorators: [{
158
- type: Component,
159
- args: [{ selector: 'sg-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
160
- {
161
- provide: NG_VALUE_ACCESSOR,
162
- useExisting: forwardRef(() => MultiselectComponent),
163
- multi: true,
164
- },
165
- {
166
- provide: ABSTRACT_CONTROL_COMPONENT,
167
- useExisting: forwardRef(() => MultiselectComponent),
168
- },
169
- {
170
- provide: OPENABLE_CONTROL_COMPONENT,
171
- useExisting: forwardRef(() => MultiselectComponent),
172
- },
173
- {
174
- provide: STATEABLE_CONTROL_COMPONENT,
175
- useExisting: forwardRef(() => MultiselectComponent),
176
- },
177
- {
178
- provide: TYPEABLE_CONTROL_COMPONENT,
179
- useExisting: forwardRef(() => MultiselectComponent),
180
- },
181
- ], template: "<kendo-multiselect\r\n #component\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"valueFormControl\"\r\n [data]=\"combinedItems | async\"\r\n [filterable]=\"isSearchable\"\r\n [valueField]=\"valueKey\"\r\n [textField]=\"textKey\"\r\n [loading]=\"isLoadingSpinnerVisible | async\"\r\n [clearButton]=\"false\"\r\n [popupSettings]=\"popupSettings\"\r\n [listHeight]=\"listHeight\"\r\n [valuePrimitive]=\"isPrimitiveValue\"\r\n (filterChange)=\"onSearched($event)\"\r\n (valueChange)=\"onChanged($event)\"\r\n (open)=\"onOpened()\"\r\n (close)=\"onClosed()\"\r\n (focus)=\"onFocused()\"\r\n (blur)=\"onBlurred()\"\r\n>\r\n <ng-template kendoDropDownListFooterTemplate>\r\n <sg-combobox-popup-footer\r\n [isLoadingTextVisible]=\"isLoadingTextVisible | async\"\r\n [isNoItemsTextVisible]=\"isNoItemsTextVisible | async\"\r\n [isMinSearchTextVisible]=\"isMinSearchTextVisible | async\"\r\n [loadingText]=\"loadingText\"\r\n [noItemsText]=\"noItemsText\"\r\n [minSearchText]=\"minSearchText\"\r\n [minSearchCharacters]=\"minSearchCharacters\"\r\n >\r\n </sg-combobox-popup-footer>\r\n </ng-template>\r\n <ng-template kendoDropDownListNoDataTemplate></ng-template>\r\n <ng-template *ngIf=\"itemTemplate\" kendoMultiSelectItemTemplate let-dataItem>\r\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\r\n </ng-template>\r\n <ng-template kendoMultiSelectTagTemplate let-dataItem>\r\n <span\r\n #tagWrapper=\"multiselectTagWrapper\"\r\n sgMultiselectTagWrapper\r\n [isReadOnly]=\"isReadOnlyTag && isReadOnlyTag(dataItem)\"\r\n >\r\n <sg-tag\r\n [icon]=\"tagWrapper.isReadOnly ? '' : 'far fa-times'\"\r\n [color]=\"tagColor(dataItem)\"\r\n [isActivated]=\"isActivatedTag(dataItem)\"\r\n >\r\n <ng-container *ngIf=\"tagTemplate\" [ngTemplateOutlet]=\"tagTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\">\r\n </ng-container>\r\n <ng-container *ngIf=\"!tagTemplate\">{{ dataItem[textField] }}</ng-container>\r\n </sg-tag>\r\n </span>\r\n </ng-template>\r\n</kendo-multiselect>\r\n<div class=\"sg-multiselect__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\r\n <i class=\"far fa-times\"></i>\r\n</div>\r\n<div class=\"sg-multiselect__state-line\"></div>\r\n" }]
182
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
183
- type: Optional
184
- }, {
185
- type: Inject,
186
- args: [MULTISELECT_LOCALIZER]
187
- }] }]; }, propDecorators: { formControl: [{
188
- type: Input
189
- }], component: [{
190
- type: ViewChild,
191
- args: ['component', { static: true }]
192
- }], itemTemplate: [{
193
- type: ContentChild,
194
- args: [MultiselectItemTemplateDirective, { read: TemplateRef, static: true }]
195
- }], tagTemplate: [{
196
- type: ContentChild,
197
- args: [MultiselectTagTemplateDirective, { read: TemplateRef, static: true }]
198
- }], hasCssClass: [{
199
- type: HostBinding,
200
- args: ['class.sg-multiselect']
201
- }], hasValue: [{
202
- type: HostBinding,
203
- args: ['class.sg-multiselect--has-value']
204
- }], hasIsFocusedCssClass: [{
205
- type: HostBinding,
206
- args: ['class.sg-multiselect--is-focused']
207
- }], hasIsHoveredCssClass: [{
208
- type: HostBinding,
209
- args: ['class.sg-multiselect--is-hovered']
210
- }], hasIsDisabledCssClass: [{
211
- type: HostBinding,
212
- args: ['class.sg-multiselect--is-disabled']
213
- }], isSuccessType: [{
214
- type: HostBinding,
215
- args: ['class.sg-multiselect--type-success']
216
- }], isErrorType: [{
217
- type: HostBinding,
218
- args: ['class.sg-multiselect--type-error']
219
- }], isWarningType: [{
220
- type: HostBinding,
221
- args: ['class.sg-multiselect--type-warning']
222
- }], isHighlightedState: [{
223
- type: HostBinding,
224
- args: ['class.sg-multiselect--state-highlighted']
225
- }], hasIsLoadingCssClass: [{
226
- type: HostBinding,
227
- args: ['class.sg-multiselect--is-loading']
228
- }], hasHasResetCssClass: [{
229
- type: HostBinding,
230
- args: ['class.sg-multiselect--has-reset']
231
- }], hasIsOutlineCssClass: [{
232
- type: HostBinding,
233
- args: ['class.sg-multiselect--is-outline']
234
- }], loadingText: [{
235
- type: Input
236
- }], noItemsText: [{
237
- type: Input
238
- }], minSearchText: [{
239
- type: Input
240
- }], isReadOnlyTag: [{
241
- type: Input
242
- }], isActivatedTag: [{
243
- type: Input
244
- }], tagColor: [{
245
- type: Input
246
- }] } });
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL211bHRpc2VsZWN0L211bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tdWx0aXNlbGVjdC9tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQiwwQkFBMEIsR0FDM0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUMsb0JBQW9CLEVBQWdCLE1BQU0sbUNBQW1DLENBQUM7QUFDdEYsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQ3RHLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBRXBHLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBRTlFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGtEQUFrRCxDQUFDOzs7Ozs7OztBQThCM0YsTUFBTSxPQUFPLG9CQUE0QixTQUFRLHlCQUEyRTtJ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QixXQUFXO3VCQUFDLGlDQUFpQztnQkFLbkMsb0JBQW9CO3NCQUQ5QixXQUFXO3VCQUFDLGtDQUFrQztnQkFLcEMsV0FBVztzQkFEckIsS0FBSztnQkFRSyxXQUFXO3NCQURyQixLQUFLO2dCQVFLLGFBQWE7c0JBRHZCLEtBQUs7Z0JBUUMsYUFBYTtzQkFEbkIsS0FBSztnQkFHQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLFFBQVE7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEFCU1RSQUNUX0NPTlRST0xfQ09NUE9ORU5ULFxuICBPUEVOQUJMRV9DT05UUk9MX0NPTVBPTkVOVCxcbiAgU1RBVEVBQkxFX0NPTlRST0xfQ09NUE9ORU5ULFxuICBUWVBFQUJMRV9DT05UUk9MX0NPTVBPTkVOVCxcbn0gZnJvbSAnQG1hcmN1cmEvbWFyY3VyYS1jb21tb24nO1xuaW1wb3J0IHtUYWdDb2xvcn0gZnJvbSAnQG1hcmN1cmEvbWFyY3VyYS10YWcnO1xuaW1wb3J0IHtNdWx0aVNlbGVjdENvbXBvbmVudCwgUG9wdXBTZXR0aW5nc30gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZHJvcGRvd25zJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge01VTFRJU0VMRUNUX0xPQ0FMSVpFUn0gZnJvbSAnLi4vLi4vY29tYm9ib3guaW5qZWN0YWJsZXMnO1xuaW1wb3J0IHtNdWx0aXNlbGVjdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9tdWx0aXNlbGVjdC1pdGVtLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge011bHRpc2VsZWN0VGFnVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbXVsdGlzZWxlY3QtdGFnLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0lEcm9wZG93bkxvY2FsaXplcn0gZnJvbSAnLi4vLi4vbW9kZWwvZHJvcGRvd24tbG9jYWxpemVyLmludGVyZmFjZSc7XG5pbXBvcnQge011bHRpc2VsZWN0Q2hhbmdlZEV2ZW50fSBmcm9tICcuLi8uLi9tb2RlbC9tdWx0aXNlbGVjdC1jaGFuZ2VkLmV2ZW50JztcbmltcG9ydCB7SU11bHRpc2VsZWN0TG9jYWxpemF0aW9ufSBmcm9tICcuLi8uLi9tb2RlbC9tdWx0aXNlbGVjdC1sb2NhbGl6YXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7QWJzdHJhY3RDb21ib2JveENvbXBvbmVudH0gZnJvbSAnLi4vYWJzdHJhY3QtY29tYm9ib3gvYWJzdHJhY3QtY29tYm9ib3guY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ctbXVsdGlzZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJ211bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTXVsdGlzZWxlY3RDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBQlNUUkFDVF9DT05UUk9MX0NPTVBPTkVOVCxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE11bHRpc2VsZWN0Q29tcG9uZW50KSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE9QRU5BQkxFX0NPTlRST0xfQ09NUE9ORU5ULFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTXVsdGlzZWxlY3RDb21wb25lbnQpLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogU1RBVEVBQkxFX0NPTlRST0xfQ09NUE9ORU5ULFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTXVsdGlzZWxlY3RDb21wb25lbnQpLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogVFlQRUFCTEVfQ09OVFJPTF9DT01QT05FTlQsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNdWx0aXNlbGVjdENvbXBvbmVudCksXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlzZWxlY3RDb21wb25lbnQ8VEl0ZW0+IGV4dGVuZHMgQWJzdHJhY3RDb21ib2JveENvbXBvbmVudDxUSXRlbSwgVEl0ZW1bXSwgTXVsdGlzZWxlY3RDaGFuZ2VkRXZlbnQ8VEl0ZW1bXT4+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgcHVibGljIG92ZXJyaWRlIGZvcm1Db250cm9sITogRm9ybUNvbnRyb2w8VEl0ZW1bXT47XG4gIHB1YmxpYyBvdmVycmlkZSByZWFkb25seSB2YWx1ZUZvcm1Db250cm9sOiBGb3JtQ29udHJvbDxUSXRlbVtdPiA9IG5ldyBGb3JtQ29udHJvbCgpO1xuXG4gIHByaXZhdGUgX2xvYWRpbmdUZXh0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbm9JdGVtc1RleHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9taW5TZWFyY2hUZXh0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbG9jYWxpemF0aW9uOiBJTXVsdGlzZWxlY3RMb2NhbGl6YXRpb24gPSB7XG4gICAgbG9hZGluZ1RleHQ6ICdMb2FkaW5nLi4uJyxcbiAgICBub0l0ZW1zVGV4dDogJ05vIGl0ZW1zIGZvdW5kLicsXG4gICAgbWluU2VhcmNoVGV4dDogJ0VudGVyIHttaW5TZWFyY2hDaGFyYWN0ZXJzfSBvciBtb3JlIGNoYXJhY3RlcnMuJyxcbiAgfTtcbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGRlZmF1bHRWYWx1ZTogVEl0ZW1bXSA9IFtdO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbXBvbmVudCcsIHtzdGF0aWM6IHRydWV9KVxuICBwdWJsaWMgY29tcG9uZW50ITogTXVsdGlTZWxlY3RDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGQoTXVsdGlzZWxlY3RJdGVtVGVtcGxhdGVEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlfSlcbiAgcHVibGljIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBAQ29udGVudENoaWxkKE11bHRpc2VsZWN0VGFnVGVtcGxhdGVEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlfSlcbiAgcHVibGljIHRhZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2ctbXVsdGlzZWxlY3QnKVxuICBwdWJsaWMgcmVhZG9ubHkgaGFzQ3NzQ2xhc3M6IGJvb2xlYW4gPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNnLW11bHRpc2VsZWN0LS1oYXMtdmFsdWUnKVxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGhhc1ZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlRm9ybUNvbnRyb2wudmFsdWUgJiYgdGhpcy52YWx1ZUZvcm1Db250cm9sLnZhbHVlLmxlbmd0aCA+IDA7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZy1tdWx0aXNlbGVjdC0taXMtZm9jdXNlZCcpXG4gIHB1YmxpYyBnZXQgaGFzSXNGb2N1c2VkQ3NzQ2xhc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNGb2N1c2VkO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2ctbXVsdGlzZWxlY3QtLWlzLWhvdmVyZWQnKVxuICBwdWJsaWMgZ2V0IGhhc0lzSG92ZXJlZENzc0NsYXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0hvdmVyZWQudmFsdWU7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZy1tdWx0aXNlbGVjdC0taXMtZGlzYWJsZWQnKVxuICBwdWJsaWMgZ2V0IGhhc0lzRGlzYWJsZWRDc3NDbGFzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0Rpc2FibGVkO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2ctbXVsdGlzZWxlY3QtLXR5cGUtc3VjY2VzcycpXG4gIHB1YmxpYyBnZXQgaXNTdWNjZXNzVHlwZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdWNjZXNzVHlwZTtcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNnLW11bHRpc2VsZWN0LS10eXBlLWVycm9yJylcbiAgcHVibGljIGdldCBpc0Vycm9yVHlwZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNFcnJvclR5cGU7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZy1tdWx0aXNlbGVjdC0tdHlwZS13YXJuaW5nJylcbiAgcHVibGljIGdldCBpc1dhcm5pbmdUeXBlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1dhcm5pbmdUeXBlO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2ctbXVsdGlzZWxlY3QtLXN0YXRlLWhpZ2hsaWdodGVkJylcbiAgcHVibGljIGdldCBpc0hpZ2hsaWdodGVkU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzSGlnaGxpZ2h0ZWRTdGF0ZTtcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNnLW11bHRpc2VsZWN0LS1pcy1sb2FkaW5nJylcbiAgcHVibGljIGdldCBoYXNJc0xvYWRpbmdDc3NDbGFzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0xvYWRpbmcgfHwgdGhpcy5faXNTZWFyY2hpbmcudmFsdWU7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZy1tdWx0aXNlbGVjdC0taGFzLXJlc2V0JylcbiAgcHVibGljIGdldCBoYXNIYXNSZXNldENzc0NsYXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhc1Jlc2V0O1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2ctbXVsdGlzZWxlY3QtLWlzLW91dGxpbmUnKVxuICBwdWJsaWMgZ2V0IGhhc0lzT3V0bGluZUNzc0NsYXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzT3V0bGluZTtcbiAgfVxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGxvYWRpbmdUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmdUZXh0IHx8IHRoaXMuX2xvY2FsaXphdGlvbi5sb2FkaW5nVGV4dDtcbiAgfVxuICBwdWJsaWMgc2V0IGxvYWRpbmdUZXh0KGxvYWRpbmdUZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9sb2FkaW5nVGV4dCA9IGxvYWRpbmdUZXh0O1xuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgbm9JdGVtc1RleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbm9JdGVtc1RleHQgfHwgdGhpcy5fbG9jYWxpemF0aW9uLm5vSXRlbXNUZXh0O1xuICB9XG4gIHB1YmxpYyBzZXQgbm9JdGVtc1RleHQobm9JdGVtc1RleHQ6IHN0cmluZykge1xuICAgIHRoaXMuX25vSXRlbXNUZXh0ID0gbm9JdGVtc1RleHQ7XG4gIH1cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBtaW5TZWFyY2hUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX21pblNlYXJjaFRleHQgfHwgdGhpcy5fbG9jYWxpemF0aW9uLm1pblNlYXJjaFRleHQ7XG4gIH1cbiAgcHVibGljIHNldCBtaW5TZWFyY2hUZXh0KG1pblNlYXJjaFRleHQ6IHN0cmluZykge1xuICAgIHRoaXMuX21pblNlYXJjaFRleHQgPSBtaW5TZWFyY2hUZXh0O1xuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc1JlYWRPbmx5VGFnOiAoKGl0ZW06IFRJdGVtKSA9PiBib29sZWFuKSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKVxuICBwdWJsaWMgaXNBY3RpdmF0ZWRUYWc6IChpdGVtOiBUSXRlbSkgPT4gYm9vbGVhbiA9ICgpID0+IGZhbHNlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgdGFnQ29sb3I6IChpdGVtOiBUSXRlbSkgPT4gVGFnQ29sb3IgfCBudWxsID0gKCkgPT4gbnVsbDtcbiAgcHVibGljIGdldCBwb3B1cFNldHRpbmdzKCk6IFBvcHVwU2V0dGluZ3Mge1xuICAgIHJldHVybiB7XG4gICAgICBhbmltYXRlOiB0cnVlLFxuICAgICAgcG9wdXBDbGFzczogYHNnLW11bHRpc2VsZWN0LXBvcHVwJHt0aGlzLmlzR3JvdXBhYmxlID8gJyBzZy1tdWx0aXNlbGVjdC1wb3B1cC0taXMtZ3JvdXBhYmxlJyA6ICcnfSAke1xuICAgICAgICB0aGlzLnBvcHVwQ2xhc3MgfHwgJydcbiAgICAgIH1gLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KE1VTFRJU0VMRUNUX0xPQ0FMSVpFUilcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9sb2NhbGl6ZXI6IElEcm9wZG93bkxvY2FsaXplcjxJTXVsdGlzZWxlY3RMb2NhbGl6YXRpb24+XG4gICkge1xuICAgIHN1cGVyKGNoYW5nZURldGVjdG9yUmVmLCByZW5kZXJlcik7XG4gICAgdGhpcy5fbG9jYWxpemUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXRDb21wb25lbnQodGhpcy5jb21wb25lbnQpO1xuICAgIHRoaXMuaW5pdCgpO1xuXG4gICAgLy8gT3BlbmVkLlxuICAgIHRoaXMuX29ic2VydmVyLmxpc3Rlbih0aGlzLl9pc09wZW4ucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC5pc09wZW4pKSwgKCkgPT4ge1xuICAgICAgdGhpcy5faGFzU2VhcmNoZWQubmV4dChmYWxzZSk7XG5cbiAgICAgIGlmICghdGhpcy5hcmVJdGVtc0NhY2hlZCAmJiB0aGlzLl9sb2FkZWRJdGVtcy52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5sb2FkSXRlbXModGhpcy5fc2VhcmNoVGV4dC52YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5fb2JzZXJ2ZXIubGlzdGVuKHRoaXMuX2lzT3Blbi5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50LmlzT3BlbikpLCAoKSA9PiB0aGlzLm9wZW5lZC5lbWl0KCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIF9lbWl0Q2hhbmdlZCh2YWx1ZTogVEl0ZW1bXSk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlZC5lbWl0KG5ldyBNdWx0aXNlbGVjdENoYW5nZWRFdmVudCh2YWx1ZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGhhc1ZhbHVlQ2hhbmdlZCh2YWx1ZTogVEl0ZW1bXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzT2xkVmFsdWVFbXB0eTogYm9vbGVhbiA9IHRoaXMudmFsdWUgPT09IG51bGwgfHwgdGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMudmFsdWUubGVuZ3RoID09PSAwO1xuICAgIGNvbnN0IGlzTmV3VmFsdWVFbXB0eTogYm9vbGVhbiA9IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUubGVuZ3RoID09PSAwO1xuXG4gICAgaWYgKGlzT2xkVmFsdWVFbXB0eSAmJiBpc05ld1ZhbHVlRW1wdHkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoaXNPbGRWYWx1ZUVtcHR5IHx8IGlzTmV3VmFsdWVFbXB0eSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudmFsdWUubGVuZ3RoICE9PSB2YWx1ZS5sZW5ndGggfHwgdGhpcy52YWx1ZS5zb21lKChpdGVtLCBpbmRleCkgPT4gIXRoaXMuaXNJdGVtRXF1YWwoaXRlbSwgdmFsdWVbaW5kZXhdKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9jYWxpemUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9sb2NhbGl6ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2NhbGl6YXRpb24gPSB0aGlzLl9sb2NhbGl6ZXIubG9jYWxpemF0aW9uO1xuICAgIHRoaXMuX29ic2VydmVyLmxpc3Rlbih0aGlzLl9sb2NhbGl6ZXIubG9jYWxpemF0aW9uQ2hhbmdlZCwgKGxvY2FsaXphdGlvbikgPT4ge1xuICAgICAgdGhpcy5fbG9jYWxpemF0aW9uID0gbG9jYWxpemF0aW9uO1xuICAgIH0pO1xuICB9XG59XG4iLCI8a2VuZG8tbXVsdGlzZWxlY3RcclxuICAjY29tcG9uZW50XHJcbiAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICBbZm9ybUNvbnRyb2xdPVwidmFsdWVGb3JtQ29udHJvbFwiXHJcbiAgW2RhdGFdPVwiY29tYmluZWRJdGVtcyB8IGFzeW5jXCJcclxuICBbZmlsdGVyYWJsZV09XCJpc1NlYXJjaGFibGVcIlxyXG4gIFt2YWx1ZUZpZWxkXT1cInZhbHVlS2V5XCJcclxuICBbdGV4dEZpZWxkXT1cInRleHRLZXlcIlxyXG4gIFtsb2FkaW5nXT1cImlzTG9hZGluZ1NwaW5uZXJWaXNpYmxlIHwgYXN5bmNcIlxyXG4gIFtjbGVhckJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgW3BvcHVwU2V0dGluZ3NdPVwicG9wdXBTZXR0aW5nc1wiXHJcbiAgW2xpc3RIZWlnaHRdPVwibGlzdEhlaWdodFwiXHJcbiAgW3ZhbHVlUHJpbWl0aXZlXT1cImlzUHJpbWl0aXZlVmFsdWVcIlxyXG4gIChmaWx0ZXJDaGFuZ2UpPVwib25TZWFyY2hlZCgkZXZlbnQpXCJcclxuICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2VkKCRldmVudClcIlxyXG4gIChvcGVuKT1cIm9uT3BlbmVkKClcIlxyXG4gIChjbG9zZSk9XCJvbkNsb3NlZCgpXCJcclxuICAoZm9jdXMpPVwib25Gb2N1c2VkKClcIlxyXG4gIChibHVyKT1cIm9uQmx1cnJlZCgpXCJcclxuPlxyXG4gIDxuZy10ZW1wbGF0ZSBrZW5kb0Ryb3BEb3duTGlzdEZvb3RlclRlbXBsYXRlPlxyXG4gICAgPHNnLWNvbWJvYm94LXBvcHVwLWZvb3RlclxyXG4gICAgICBbaXNMb2FkaW5nVGV4dFZpc2libGVdPVwiaXNMb2FkaW5nVGV4dFZpc2libGUgfCBhc3luY1wiXHJcbiAgICAgIFtpc05vSXRlbXNUZXh0VmlzaWJsZV09XCJpc05vSXRlbXNUZXh0VmlzaWJsZSB8IGFzeW5jXCJcclxuICAgICAgW2lzTWluU2VhcmNoVGV4dFZpc2libGVdPVwiaXNNaW5TZWFyY2hUZXh0VmlzaWJsZSB8IGFzeW5jXCJcclxuICAgICAgW2xvYWRpbmdUZXh0XT1cImxvYWRpbmdUZXh0XCJcclxuICAgICAgW25vSXRlbXNUZXh0XT1cIm5vSXRlbXNUZXh0XCJcclxuICAgICAgW21pblNlYXJjaFRleHRdPVwibWluU2VhcmNoVGV4dFwiXHJcbiAgICAgIFttaW5TZWFyY2hDaGFyYWN0ZXJzXT1cIm1pblNlYXJjaENoYXJhY3RlcnNcIlxyXG4gICAgPlxyXG4gICAgPC9zZy1jb21ib2JveC1wb3B1cC1mb290ZXI+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctdGVtcGxhdGUga2VuZG9Ecm9wRG93bkxpc3ROb0RhdGFUZW1wbGF0ZT48L25nLXRlbXBsYXRlPlxyXG4gIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIml0ZW1UZW1wbGF0ZVwiIGtlbmRvTXVsdGlTZWxlY3RJdGVtVGVtcGxhdGUgbGV0LWRhdGFJdGVtPlxyXG4gICAgPHNwYW4gW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtOiBkYXRhSXRlbX1cIj48L3NwYW4+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctdGVtcGxhdGUga2VuZG9NdWx0aVNlbGVjdFRhZ1RlbXBsYXRlIGxldC1kYXRhSXRlbT5cclxuICAgIDxzcGFuXHJcbiAgICAgICN0YWdXcmFwcGVyPVwibXVsdGlzZWxlY3RUYWdXcmFwcGVyXCJcclxuICAgICAgc2dNdWx0aXNlbGVjdFRhZ1dyYXBwZXJcclxuICAgICAgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seVRhZyAmJiBpc1JlYWRPbmx5VGFnKGRhdGFJdGVtKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzZy10YWdcclxuICAgICAgICBbaWNvbl09XCJ0YWdXcmFwcGVyLmlzUmVhZE9ubHkgPyAnJyA6ICdmYXIgZmEtdGltZXMnXCJcclxuICAgICAgICBbY29sb3JdPVwidGFnQ29sb3IoZGF0YUl0ZW0pXCJcclxuICAgICAgICBbaXNBY3RpdmF0ZWRdPVwiaXNBY3RpdmF0ZWRUYWcoZGF0YUl0ZW0pXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWdUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhZ1RlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtOiBkYXRhSXRlbX1cIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhZ1RlbXBsYXRlXCI+e3sgZGF0YUl0ZW1bdGV4dEZpZWxkXSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3NnLXRhZz5cclxuICAgIDwvc3Bhbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2tlbmRvLW11bHRpc2VsZWN0PlxyXG48ZGl2IGNsYXNzPVwic2ctbXVsdGlzZWxlY3RfX3Jlc2V0XCIgKm5nSWY9XCIhaXNEaXNhYmxlZFwiIChjbGljayk9XCJvblJlc2V0Q2xpY2tlZCgpXCI+XHJcbiAgPGkgY2xhc3M9XCJmYXIgZmEtdGltZXNcIj48L2k+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwic2ctbXVsdGlzZWxlY3RfX3N0YXRlLWxpbmVcIj48L2Rpdj5cclxuIl19
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, forwardRef, HostBinding, Inject, Input, Optional, Renderer2, TemplateRef, ViewChild, } from '@angular/core';
2
+ import { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { ABSTRACT_CONTROL_COMPONENT, OPENABLE_CONTROL_COMPONENT, STATEABLE_CONTROL_COMPONENT, TYPEABLE_CONTROL_COMPONENT, } from '@marcura/marcura-common';
4
+ import { MultiSelectComponent } from '@progress/kendo-angular-dropdowns';
5
+ import { filter } from 'rxjs/operators';
6
+ import { MULTISELECT_LOCALIZER } from '../../combobox.injectables';
7
+ import { MultiselectItemTemplateDirective } from '../../directives/multiselect-item-template.directive';
8
+ import { MultiselectTagTemplateDirective } from '../../directives/multiselect-tag-template.directive';
9
+ import { MultiselectChangedEvent } from '../../model/multiselect-changed.event';
10
+ import { AbstractComboboxComponent } from '../abstract-combobox/abstract-combobox.component';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/common";
13
+ import * as i2 from "@angular/forms";
14
+ import * as i3 from "@progress/kendo-angular-dropdowns";
15
+ import * as i4 from "@marcura/marcura-tag";
16
+ import * as i5 from "../combobox-popup-footer/combobox-popup-footer.component";
17
+ import * as i6 from "../../directives/multiselect-tag-wrapper.directive";
18
+ export class MultiselectComponent extends AbstractComboboxComponent {
19
+ get hasValue() {
20
+ return this.valueFormControl.value && this.valueFormControl.value.length > 0;
21
+ }
22
+ get hasIsFocusedCssClass() {
23
+ return this.isFocused;
24
+ }
25
+ get hasIsHoveredCssClass() {
26
+ return this._isHovered.value;
27
+ }
28
+ get hasIsDisabledCssClass() {
29
+ return this.isDisabled;
30
+ }
31
+ get isSuccessType() {
32
+ return this._isSuccessType;
33
+ }
34
+ get isErrorType() {
35
+ return this._isErrorType;
36
+ }
37
+ get isWarningType() {
38
+ return this._isWarningType;
39
+ }
40
+ get isHighlightedState() {
41
+ return this._isHighlightedState;
42
+ }
43
+ get hasIsLoadingCssClass() {
44
+ return this.isLoading || this._isSearching.value;
45
+ }
46
+ get hasHasResetCssClass() {
47
+ return this.hasReset;
48
+ }
49
+ get hasIsOutlineCssClass() {
50
+ return this.isOutline;
51
+ }
52
+ get loadingText() {
53
+ return this._loadingText || this._localization.loadingText;
54
+ }
55
+ set loadingText(loadingText) {
56
+ this._loadingText = loadingText;
57
+ }
58
+ get noItemsText() {
59
+ return this._noItemsText || this._localization.noItemsText;
60
+ }
61
+ set noItemsText(noItemsText) {
62
+ this._noItemsText = noItemsText;
63
+ }
64
+ get minSearchText() {
65
+ return this._minSearchText || this._localization.minSearchText;
66
+ }
67
+ set minSearchText(minSearchText) {
68
+ this._minSearchText = minSearchText;
69
+ }
70
+ get popupSettings() {
71
+ return {
72
+ animate: true,
73
+ popupClass: `sg-multiselect-popup${this.isGroupable ? ' sg-multiselect-popup--is-groupable' : ''} ${this.popupClass || ''}`,
74
+ };
75
+ }
76
+ constructor(changeDetectorRef, renderer, _localizer) {
77
+ super(changeDetectorRef, renderer);
78
+ this._localizer = _localizer;
79
+ this.valueFormControl = new FormControl();
80
+ this._loadingText = null;
81
+ this._noItemsText = null;
82
+ this._minSearchText = null;
83
+ this._localization = {
84
+ loadingText: 'Loading...',
85
+ noItemsText: 'No items found.',
86
+ minSearchText: 'Enter {minSearchCharacters} or more characters.',
87
+ };
88
+ this.defaultValue = [];
89
+ this.itemTemplate = null;
90
+ this.tagTemplate = null;
91
+ this.hasCssClass = true;
92
+ this.isReadOnlyTag = null;
93
+ this.isActivatedTag = () => false;
94
+ this.tagColor = () => null;
95
+ this._localize();
96
+ }
97
+ ngOnInit() {
98
+ this._setComponent(this.component);
99
+ this.init();
100
+ // Opened.
101
+ this._observer.listen(this._isOpen.pipe(filter((event) => event.isOpen)), () => {
102
+ this._hasSearched.next(false);
103
+ if (!this.areItemsCached && this._loadedItems.value.length === 0) {
104
+ this.loadItems(this._searchText.value);
105
+ }
106
+ });
107
+ this._observer.listen(this._isOpen.pipe(filter((event) => event.isOpen)), () => this.opened.emit());
108
+ }
109
+ _emitChanged(value) {
110
+ this.changed.emit(new MultiselectChangedEvent(value));
111
+ }
112
+ hasValueChanged(value) {
113
+ const isOldValueEmpty = this.value === null || this.value === undefined || this.value.length === 0;
114
+ const isNewValueEmpty = value === null || value === undefined || value.length === 0;
115
+ if (isOldValueEmpty && isNewValueEmpty) {
116
+ return false;
117
+ }
118
+ if (isOldValueEmpty || isNewValueEmpty) {
119
+ return true;
120
+ }
121
+ return (this.value.length !== value.length || this.value.some((item, index) => !this.isItemEqual(item, value[index])));
122
+ }
123
+ _localize() {
124
+ if (!this._localizer) {
125
+ return;
126
+ }
127
+ this._localization = this._localizer.localization;
128
+ this._observer.listen(this._localizer.localizationChanged, (localization) => {
129
+ this._localization = localization;
130
+ });
131
+ }
132
+ }
133
+ MultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: MultiselectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: MULTISELECT_LOCALIZER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
134
+ MultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: MultiselectComponent, selector: "sg-multiselect", inputs: { formControl: "formControl", loadingText: "loadingText", noItemsText: "noItemsText", minSearchText: "minSearchText", isReadOnlyTag: "isReadOnlyTag", isActivatedTag: "isActivatedTag", tagColor: "tagColor" }, host: { properties: { "class.sg-multiselect": "this.hasCssClass", "class.sg-multiselect--has-value": "this.hasValue", "class.sg-multiselect--is-focused": "this.hasIsFocusedCssClass", "class.sg-multiselect--is-hovered": "this.hasIsHoveredCssClass", "class.sg-multiselect--is-disabled": "this.hasIsDisabledCssClass", "class.sg-multiselect--type-success": "this.isSuccessType", "class.sg-multiselect--type-error": "this.isErrorType", "class.sg-multiselect--type-warning": "this.isWarningType", "class.sg-multiselect--state-highlighted": "this.isHighlightedState", "class.sg-multiselect--is-loading": "this.hasIsLoadingCssClass", "class.sg-multiselect--has-reset": "this.hasHasResetCssClass", "class.sg-multiselect--is-outline": "this.hasIsOutlineCssClass" } }, providers: [
135
+ {
136
+ provide: NG_VALUE_ACCESSOR,
137
+ useExisting: forwardRef(() => MultiselectComponent),
138
+ multi: true,
139
+ },
140
+ {
141
+ provide: ABSTRACT_CONTROL_COMPONENT,
142
+ useExisting: forwardRef(() => MultiselectComponent),
143
+ },
144
+ {
145
+ provide: OPENABLE_CONTROL_COMPONENT,
146
+ useExisting: forwardRef(() => MultiselectComponent),
147
+ },
148
+ {
149
+ provide: STATEABLE_CONTROL_COMPONENT,
150
+ useExisting: forwardRef(() => MultiselectComponent),
151
+ },
152
+ {
153
+ provide: TYPEABLE_CONTROL_COMPONENT,
154
+ useExisting: forwardRef(() => MultiselectComponent),
155
+ },
156
+ ], queries: [{ propertyName: "itemTemplate", first: true, predicate: MultiselectItemTemplateDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "tagTemplate", first: true, predicate: MultiselectTagTemplateDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "component", first: true, predicate: ["component"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<kendo-multiselect\n #component\n [placeholder]=\"placeholder\"\n [formControl]=\"valueFormControl\"\n [data]=\"combinedItems | async\"\n [filterable]=\"isSearchable\"\n [valueField]=\"valueKey\"\n [textField]=\"textKey\"\n [loading]=\"isLoadingSpinnerVisible | async\"\n [clearButton]=\"false\"\n [popupSettings]=\"popupSettings\"\n [listHeight]=\"listHeight\"\n [valuePrimitive]=\"isPrimitiveValue\"\n (filterChange)=\"onSearched($event)\"\n (valueChange)=\"onChanged($event)\"\n (open)=\"onOpened()\"\n (close)=\"onClosed()\"\n (focus)=\"onFocused()\"\n (blur)=\"onBlurred()\"\n>\n <ng-template kendoDropDownListFooterTemplate>\n <sg-combobox-popup-footer\n [isLoadingTextVisible]=\"isLoadingTextVisible | async\"\n [isNoItemsTextVisible]=\"isNoItemsTextVisible | async\"\n [isMinSearchTextVisible]=\"isMinSearchTextVisible | async\"\n [loadingText]=\"loadingText\"\n [noItemsText]=\"noItemsText\"\n [minSearchText]=\"minSearchText\"\n [minSearchCharacters]=\"minSearchCharacters\"\n >\n </sg-combobox-popup-footer>\n </ng-template>\n <ng-template kendoDropDownListNoDataTemplate></ng-template>\n <ng-template *ngIf=\"itemTemplate\" kendoMultiSelectItemTemplate let-dataItem>\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\n </ng-template>\n <ng-template kendoMultiSelectTagTemplate let-dataItem>\n <span\n #tagWrapper=\"multiselectTagWrapper\"\n sgMultiselectTagWrapper\n [isReadOnly]=\"isReadOnlyTag && isReadOnlyTag(dataItem)\"\n >\n <sg-tag\n [icon]=\"tagWrapper.isReadOnly ? '' : 'far fa-times'\"\n [color]=\"tagColor(dataItem)\"\n [isActivated]=\"isActivatedTag(dataItem)\"\n >\n <ng-container *ngIf=\"tagTemplate\" [ngTemplateOutlet]=\"tagTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\">\n </ng-container>\n <ng-container *ngIf=\"!tagTemplate\">{{ dataItem[textField] }}</ng-container>\n </sg-tag>\n </span>\n </ng-template>\n</kendo-multiselect>\n<div class=\"sg-multiselect__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\n <i class=\"far fa-times\"></i>\n</div>\n<div class=\"sg-multiselect__state-line\"></div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FooterTemplateDirective, selector: "[kendoDropDownListFooterTemplate],[kendoComboBoxFooterTemplate],[kendoDropDownTreeFooterTemplate],[kendoMultiColumnComboBoxFooterTemplate],[kendoAutoCompleteFooterTemplate],[kendoMultiSelectFooterTemplate],[kendoMultiSelectTreeFooterTemplate]" }, { kind: "directive", type: i3.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }, { kind: "directive", type: i3.NoDataTemplateDirective, selector: "[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]" }, { kind: "directive", type: i3.TagTemplateDirective, selector: "[kendoMultiSelectTagTemplate],[kendoMultiSelectTreeTagTemplate]" }, { kind: "component", type: i3.MultiSelectComponent, selector: "kendo-multiselect", inputs: ["focusableId", "autoClose", "tabindex", "disabled", "readonly", "filterable", "listHeight", "clearButton", "tagMapper", "allowCustom", "valueNormalizer", "data", "value", "tabIndex", "placeholder", "itemDisabled", "checkboxes", "virtual", "popupSettings", "valuePrimitive", "loading", "valueField", "textField"], outputs: ["filterChange", "valueChange", "open", "opened", "close", "closed", "focus", "blur", "removeTag"], exportAs: ["kendoMultiSelect"] }, { kind: "component", type: i4.TagComponent, selector: "sg-tag", inputs: ["isBorderless", "color", "icon", "isActivated", "isDisabled", "isLoading", "isFocusable", "isHoverable", "isReadOnly"], outputs: ["clicked", "focused", "blurred", "iconClicked", "spinnerClicked"] }, { kind: "component", type: i5.ComboboxPopupFooterComponent, selector: "sg-combobox-popup-footer", inputs: ["isLoadingTextVisible", "isNoItemsTextVisible", "isMinSearchTextVisible", "loadingText", "noItemsText", "minSearchText", "minSearchCharacters"] }, { kind: "directive", type: i6.MultiselectTagWrapperDirective, selector: "[sgMultiselectTagWrapper]", inputs: ["isReadOnly"], exportAs: ["multiselectTagWrapper"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: MultiselectComponent, decorators: [{
158
+ type: Component,
159
+ args: [{ selector: 'sg-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
160
+ {
161
+ provide: NG_VALUE_ACCESSOR,
162
+ useExisting: forwardRef(() => MultiselectComponent),
163
+ multi: true,
164
+ },
165
+ {
166
+ provide: ABSTRACT_CONTROL_COMPONENT,
167
+ useExisting: forwardRef(() => MultiselectComponent),
168
+ },
169
+ {
170
+ provide: OPENABLE_CONTROL_COMPONENT,
171
+ useExisting: forwardRef(() => MultiselectComponent),
172
+ },
173
+ {
174
+ provide: STATEABLE_CONTROL_COMPONENT,
175
+ useExisting: forwardRef(() => MultiselectComponent),
176
+ },
177
+ {
178
+ provide: TYPEABLE_CONTROL_COMPONENT,
179
+ useExisting: forwardRef(() => MultiselectComponent),
180
+ },
181
+ ], template: "<kendo-multiselect\n #component\n [placeholder]=\"placeholder\"\n [formControl]=\"valueFormControl\"\n [data]=\"combinedItems | async\"\n [filterable]=\"isSearchable\"\n [valueField]=\"valueKey\"\n [textField]=\"textKey\"\n [loading]=\"isLoadingSpinnerVisible | async\"\n [clearButton]=\"false\"\n [popupSettings]=\"popupSettings\"\n [listHeight]=\"listHeight\"\n [valuePrimitive]=\"isPrimitiveValue\"\n (filterChange)=\"onSearched($event)\"\n (valueChange)=\"onChanged($event)\"\n (open)=\"onOpened()\"\n (close)=\"onClosed()\"\n (focus)=\"onFocused()\"\n (blur)=\"onBlurred()\"\n>\n <ng-template kendoDropDownListFooterTemplate>\n <sg-combobox-popup-footer\n [isLoadingTextVisible]=\"isLoadingTextVisible | async\"\n [isNoItemsTextVisible]=\"isNoItemsTextVisible | async\"\n [isMinSearchTextVisible]=\"isMinSearchTextVisible | async\"\n [loadingText]=\"loadingText\"\n [noItemsText]=\"noItemsText\"\n [minSearchText]=\"minSearchText\"\n [minSearchCharacters]=\"minSearchCharacters\"\n >\n </sg-combobox-popup-footer>\n </ng-template>\n <ng-template kendoDropDownListNoDataTemplate></ng-template>\n <ng-template *ngIf=\"itemTemplate\" kendoMultiSelectItemTemplate let-dataItem>\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\n </ng-template>\n <ng-template kendoMultiSelectTagTemplate let-dataItem>\n <span\n #tagWrapper=\"multiselectTagWrapper\"\n sgMultiselectTagWrapper\n [isReadOnly]=\"isReadOnlyTag && isReadOnlyTag(dataItem)\"\n >\n <sg-tag\n [icon]=\"tagWrapper.isReadOnly ? '' : 'far fa-times'\"\n [color]=\"tagColor(dataItem)\"\n [isActivated]=\"isActivatedTag(dataItem)\"\n >\n <ng-container *ngIf=\"tagTemplate\" [ngTemplateOutlet]=\"tagTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\">\n </ng-container>\n <ng-container *ngIf=\"!tagTemplate\">{{ dataItem[textField] }}</ng-container>\n </sg-tag>\n </span>\n </ng-template>\n</kendo-multiselect>\n<div class=\"sg-multiselect__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\n <i class=\"far fa-times\"></i>\n</div>\n<div class=\"sg-multiselect__state-line\"></div>\n" }]
182
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
183
+ type: Optional
184
+ }, {
185
+ type: Inject,
186
+ args: [MULTISELECT_LOCALIZER]
187
+ }] }]; }, propDecorators: { formControl: [{
188
+ type: Input
189
+ }], component: [{
190
+ type: ViewChild,
191
+ args: ['component', { static: true }]
192
+ }], itemTemplate: [{
193
+ type: ContentChild,
194
+ args: [MultiselectItemTemplateDirective, { read: TemplateRef, static: true }]
195
+ }], tagTemplate: [{
196
+ type: ContentChild,
197
+ args: [MultiselectTagTemplateDirective, { read: TemplateRef, static: true }]
198
+ }], hasCssClass: [{
199
+ type: HostBinding,
200
+ args: ['class.sg-multiselect']
201
+ }], hasValue: [{
202
+ type: HostBinding,
203
+ args: ['class.sg-multiselect--has-value']
204
+ }], hasIsFocusedCssClass: [{
205
+ type: HostBinding,
206
+ args: ['class.sg-multiselect--is-focused']
207
+ }], hasIsHoveredCssClass: [{
208
+ type: HostBinding,
209
+ args: ['class.sg-multiselect--is-hovered']
210
+ }], hasIsDisabledCssClass: [{
211
+ type: HostBinding,
212
+ args: ['class.sg-multiselect--is-disabled']
213
+ }], isSuccessType: [{
214
+ type: HostBinding,
215
+ args: ['class.sg-multiselect--type-success']
216
+ }], isErrorType: [{
217
+ type: HostBinding,
218
+ args: ['class.sg-multiselect--type-error']
219
+ }], isWarningType: [{
220
+ type: HostBinding,
221
+ args: ['class.sg-multiselect--type-warning']
222
+ }], isHighlightedState: [{
223
+ type: HostBinding,
224
+ args: ['class.sg-multiselect--state-highlighted']
225
+ }], hasIsLoadingCssClass: [{
226
+ type: HostBinding,
227
+ args: ['class.sg-multiselect--is-loading']
228
+ }], hasHasResetCssClass: [{
229
+ type: HostBinding,
230
+ args: ['class.sg-multiselect--has-reset']
231
+ }], hasIsOutlineCssClass: [{
232
+ type: HostBinding,
233
+ args: ['class.sg-multiselect--is-outline']
234
+ }], loadingText: [{
235
+ type: Input
236
+ }], noItemsText: [{
237
+ type: Input
238
+ }], minSearchText: [{
239
+ type: Input
240
+ }], isReadOnlyTag: [{
241
+ type: Input
242
+ }], isActivatedTag: [{
243
+ type: Input
244
+ }], tagColor: [{
245
+ type: Input
246
+ }] } });
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL211bHRpc2VsZWN0L211bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tdWx0aXNlbGVjdC9tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQiwwQkFBMEIsR0FDM0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUMsb0JBQW9CLEVBQWdCLE1BQU0sbUNBQW1DLENBQUM7QUFDdEYsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQ3RHLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBRXBHLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBRTlFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGtEQUFrRCxDQUFDOzs7Ozs7OztBQThCM0YsTUFBTSxPQUFPLG9CQUE0QixTQUFRLHlCQUEyRTtJ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QixXQUFXO3VCQUFDLGlDQUFpQztnQkFLbkMsb0JBQW9CO3NCQUQ5QixXQUFXO3VCQUFDLGtDQUFrQztnQkFLcEMsV0FBVztzQkFEckIsS0FBSztnQkFRSyxXQUFXO3NCQURyQixLQUFLO2dCQVFLLGFBQWE7c0JBRHZCLEtBQUs7Z0JBUUMsYUFBYTtzQkFEbkIsS0FBSztnQkFHQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLFFBQVE7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEFCU1RSQUNUX0NPTlRST0xfQ09NUE9ORU5ULFxuICBPUEVOQUJMRV9DT05UUk9MX0NPTVBPTkVOVCxcbiAgU1RBVEVBQkxFX0NPTlRST0xfQ09NUE9ORU5ULFxuICBUWVBFQUJMRV9DT05UUk9MX0NPTVBPTkVOVCxcbn0gZnJvbSAnQG1hcmN1cmEvbWFyY3VyYS1jb21tb24nO1xuaW1wb3J0IHtUYWdDb2xvcn0gZnJvbSAnQG1hcmN1cmEvbWFyY3VyYS10YWcnO1xuaW1wb3J0IHtNdWx0aVNlbGVjdENvbXBvbmVudCwgUG9wdXBTZXR0aW5nc30gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZHJvcGRvd25zJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge01VTFRJU0VMRUNUX0xPQ0FMSVpFUn0gZnJvbSAnLi4vLi4vY29tYm9ib3guaW5qZWN0YWJsZXMnO1xuaW1wb3J0IHtNdWx0aXNlbGVjdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9tdWx0aXNlbGVjdC1pdGVtLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge011bHRpc2VsZWN0VGFnVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbXVsdGlzZWxlY3QtdGFnLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0lEcm9wZG93bkxvY2FsaXplcn0gZnJvbSAnLi4vLi4vbW9kZWwvZHJvcGRvd24tbG9jYWxpemVyLmludGVyZmFjZSc7XG5pbXBvcnQge011bHRpc2VsZWN0Q2hhbmdlZEV2ZW50fSBmcm9tICcuLi8uLi9tb2RlbC9tdWx0aXNlbGVjdC1jaGFuZ2VkLmV2ZW50JztcbmltcG9ydCB7SU11bHRpc2VsZWN0TG9jYWxpemF0aW9ufSBmcm9tICcuLi8uLi9tb2RlbC9tdWx0aXNlbGVjdC1sb2NhbGl6YXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7QWJzdHJhY3RDb21ib2JveENvbXBvbmVudH0gZnJvbSAnLi4vYWJzdHJhY3QtY29tYm9ib3gvYWJzdHJhY3QtY29tYm9ib3guY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ctbXVsdGlzZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJ211bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTXVsdGlzZWxlY3RDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBQlNUUkFDVF9DT05UUk9MX0NPTVBPTkVOVCxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE11bHRpc2VsZWN0Q29tcG9uZW50KSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE9QRU5BQkxFX0NPTlRST0xfQ09NUE9ORU5ULFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTXVsdGlzZWxlY3RDb21wb25lbnQpLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogU1RBVEVBQkxFX0NPTlRST0xfQ09NUE9ORU5ULFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTXVsdGlzZWxlY3RDb21wb25lbnQpLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogVFlQRUFCTEVfQ09OVFJPTF9DT01QT05FTlQsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNdWx0aXNlbGVjdENvbXBvbmVudCksXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlzZWxlY3RDb21wb25lbnQ8VEl0ZW0+IGV4dGVuZHMgQWJzdHJhY3RDb21ib2JveENvbXBvbmVudDxUSXRlbSwgVEl0ZW1bXSwgTXVsdGlzZWxlY3RDaGFuZ2VkRXZlbnQ8VEl0ZW1bXT4+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgcHVibGljIG92ZXJyaWRlIGZvcm1Db250cm9sITogRm9ybUNvbnRyb2w8VEl0ZW1bXT47XG4gIHB1YmxpYyBvdmVycmlkZSByZWFkb25seSB2YWx1ZUZvcm1Db250cm9sOiBGb3JtQ29udHJvbDxUSXRlbVtdPiA9IG5ldyBGb3JtQ29udHJvbCgpO1xuXG4gIHByaXZhdGUgX2xvYWRpbmdUZXh0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbm9JdGVtc1RleHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9taW5TZWFyY2hUZXh0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbG9jYWxpemF0aW9uOiBJTXVsdGlzZWxlY3RMb2NhbGl6YXRpb24gPSB7XG4gICAgbG9hZGluZ1RleHQ6ICdMb2FkaW5nLi4uJyxcbiAgICBub0l0ZW1zVGV4dDogJ05vIGl0ZW1zIGZvdW5kLicsXG4gICAgbWluU2VhcmNoVGV4dDogJ0VudGVyIHttaW5TZWFyY2hDaGFyYWN0ZXJzfSBvciBtb3JlIGNoYXJhY3RlcnMuJyxcbiAgfTtcbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGRlZmF1bHRWYWx1ZTogVEl0ZW1bXSA9IFtdO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbXBvbmVudCcsIHtzdGF0aWM6IHRydWV9KVxuICBwdWJsaWMgY29tcG9uZW50ITogTXVsdGlTZWxlY3RDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGQoTXVsdGlzZWxlY3RJdGVtVGVtcGxhdGVEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlfSlcbiAgcHVibGljIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBAQ29udGVudENoaWxkKE11bHRpc2VsZWN0VGFnVGVtcGxhdGVEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlfSlcbiAgcHVibGljIHRhZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2ctbXVsdGlzZWxlY3QnKVxuICBwdWJsaWMgcmVhZG9ubHkgaGFzQ3NzQ2xhc3M6IGJvb2xlYW4gPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNnLW11bHRpc2VsZWN0LS1oYXMtdmFsdWUnKVxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGhhc1ZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlRm9ybUNvbnRyb2wudmFsdWUgJiYgdGhpcy52YWx1ZUZvcm1Db250cm9sLnZhbHVlLmxlbmd0aCA+IDA7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZy1tdWx0aXNlbGVjdC0taXMtZm9jdXNlZCcpXG4gIHB1YmxpYyBnZXQgaGFzSXNGb2N1c2VkQ3NzQ2xhc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNGb2N1c2VkO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2ctbXVsdGlzZWxlY3QtLWlzLWhvdmVyZWQnKVxuICBwdWJsaWMgZ2V0IGhhc0lzSG92ZXJlZENzc0NsYXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0hvdmVyZWQudmFsdWU7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZy1tdWx0aXNlbGVjdC0taXMtZGlzYWJsZWQnKVxuICBwdWJsaWMgZ2V0IGhhc0lzRGlzYWJsZWRDc3NDbGFzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0Rpc2FibGVkO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2ctbXVsdGlzZWxlY3QtLXR5cGUtc3VjY2VzcycpXG4gIHB1YmxpYyBnZXQgaXNTdWNjZXNzVHlwZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdWNjZXNzVHlwZTtcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNnLW11bHRpc2VsZWN0LS10eXBlLWVycm9yJylcbiAgcHVibGljIGdldCBpc0Vycm9yVHlwZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNFcnJvclR5cGU7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZy1tdWx0aXNlbGVjdC0tdHlwZS13YXJuaW5nJylcbiAgcHVibGljIGdldCBpc1dhcm5pbmdUeXBlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1dhcm5pbmdUeXBlO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2ctbXVsdGlzZWxlY3QtLXN0YXRlLWhpZ2hsaWdodGVkJylcbiAgcHVibGljIGdldCBpc0hpZ2hsaWdodGVkU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzSGlnaGxpZ2h0ZWRTdGF0ZTtcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNnLW11bHRpc2VsZWN0LS1pcy1sb2FkaW5nJylcbiAgcHVibGljIGdldCBoYXNJc0xvYWRpbmdDc3NDbGFzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0xvYWRpbmcgfHwgdGhpcy5faXNTZWFyY2hpbmcudmFsdWU7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZy1tdWx0aXNlbGVjdC0taGFzLXJlc2V0JylcbiAgcHVibGljIGdldCBoYXNIYXNSZXNldENzc0NsYXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhc1Jlc2V0O1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2ctbXVsdGlzZWxlY3QtLWlzLW91dGxpbmUnKVxuICBwdWJsaWMgZ2V0IGhhc0lzT3V0bGluZUNzc0NsYXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzT3V0bGluZTtcbiAgfVxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGxvYWRpbmdUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmdUZXh0IHx8IHRoaXMuX2xvY2FsaXphdGlvbi5sb2FkaW5nVGV4dDtcbiAgfVxuICBwdWJsaWMgc2V0IGxvYWRpbmdUZXh0KGxvYWRpbmdUZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9sb2FkaW5nVGV4dCA9IGxvYWRpbmdUZXh0O1xuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgbm9JdGVtc1RleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbm9JdGVtc1RleHQgfHwgdGhpcy5fbG9jYWxpemF0aW9uLm5vSXRlbXNUZXh0O1xuICB9XG4gIHB1YmxpYyBzZXQgbm9JdGVtc1RleHQobm9JdGVtc1RleHQ6IHN0cmluZykge1xuICAgIHRoaXMuX25vSXRlbXNUZXh0ID0gbm9JdGVtc1RleHQ7XG4gIH1cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBtaW5TZWFyY2hUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX21pblNlYXJjaFRleHQgfHwgdGhpcy5fbG9jYWxpemF0aW9uLm1pblNlYXJjaFRleHQ7XG4gIH1cbiAgcHVibGljIHNldCBtaW5TZWFyY2hUZXh0KG1pblNlYXJjaFRleHQ6IHN0cmluZykge1xuICAgIHRoaXMuX21pblNlYXJjaFRleHQgPSBtaW5TZWFyY2hUZXh0O1xuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc1JlYWRPbmx5VGFnOiAoKGl0ZW06IFRJdGVtKSA9PiBib29sZWFuKSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKVxuICBwdWJsaWMgaXNBY3RpdmF0ZWRUYWc6IChpdGVtOiBUSXRlbSkgPT4gYm9vbGVhbiA9ICgpID0+IGZhbHNlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgdGFnQ29sb3I6IChpdGVtOiBUSXRlbSkgPT4gVGFnQ29sb3IgfCBudWxsID0gKCkgPT4gbnVsbDtcbiAgcHVibGljIGdldCBwb3B1cFNldHRpbmdzKCk6IFBvcHVwU2V0dGluZ3Mge1xuICAgIHJldHVybiB7XG4gICAgICBhbmltYXRlOiB0cnVlLFxuICAgICAgcG9wdXBDbGFzczogYHNnLW11bHRpc2VsZWN0LXBvcHVwJHt0aGlzLmlzR3JvdXBhYmxlID8gJyBzZy1tdWx0aXNlbGVjdC1wb3B1cC0taXMtZ3JvdXBhYmxlJyA6ICcnfSAke1xuICAgICAgICB0aGlzLnBvcHVwQ2xhc3MgfHwgJydcbiAgICAgIH1gLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KE1VTFRJU0VMRUNUX0xPQ0FMSVpFUilcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9sb2NhbGl6ZXI6IElEcm9wZG93bkxvY2FsaXplcjxJTXVsdGlzZWxlY3RMb2NhbGl6YXRpb24+XG4gICkge1xuICAgIHN1cGVyKGNoYW5nZURldGVjdG9yUmVmLCByZW5kZXJlcik7XG4gICAgdGhpcy5fbG9jYWxpemUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXRDb21wb25lbnQodGhpcy5jb21wb25lbnQpO1xuICAgIHRoaXMuaW5pdCgpO1xuXG4gICAgLy8gT3BlbmVkLlxuICAgIHRoaXMuX29ic2VydmVyLmxpc3Rlbih0aGlzLl9pc09wZW4ucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC5pc09wZW4pKSwgKCkgPT4ge1xuICAgICAgdGhpcy5faGFzU2VhcmNoZWQubmV4dChmYWxzZSk7XG5cbiAgICAgIGlmICghdGhpcy5hcmVJdGVtc0NhY2hlZCAmJiB0aGlzLl9sb2FkZWRJdGVtcy52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5sb2FkSXRlbXModGhpcy5fc2VhcmNoVGV4dC52YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5fb2JzZXJ2ZXIubGlzdGVuKHRoaXMuX2lzT3Blbi5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50LmlzT3BlbikpLCAoKSA9PiB0aGlzLm9wZW5lZC5lbWl0KCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIF9lbWl0Q2hhbmdlZCh2YWx1ZTogVEl0ZW1bXSk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlZC5lbWl0KG5ldyBNdWx0aXNlbGVjdENoYW5nZWRFdmVudCh2YWx1ZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGhhc1ZhbHVlQ2hhbmdlZCh2YWx1ZTogVEl0ZW1bXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzT2xkVmFsdWVFbXB0eTogYm9vbGVhbiA9IHRoaXMudmFsdWUgPT09IG51bGwgfHwgdGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMudmFsdWUubGVuZ3RoID09PSAwO1xuICAgIGNvbnN0IGlzTmV3VmFsdWVFbXB0eTogYm9vbGVhbiA9IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUubGVuZ3RoID09PSAwO1xuXG4gICAgaWYgKGlzT2xkVmFsdWVFbXB0eSAmJiBpc05ld1ZhbHVlRW1wdHkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoaXNPbGRWYWx1ZUVtcHR5IHx8IGlzTmV3VmFsdWVFbXB0eSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudmFsdWUubGVuZ3RoICE9PSB2YWx1ZS5sZW5ndGggfHwgdGhpcy52YWx1ZS5zb21lKChpdGVtLCBpbmRleCkgPT4gIXRoaXMuaXNJdGVtRXF1YWwoaXRlbSwgdmFsdWVbaW5kZXhdKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9jYWxpemUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9sb2NhbGl6ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2NhbGl6YXRpb24gPSB0aGlzLl9sb2NhbGl6ZXIubG9jYWxpemF0aW9uO1xuICAgIHRoaXMuX29ic2VydmVyLmxpc3Rlbih0aGlzLl9sb2NhbGl6ZXIubG9jYWxpemF0aW9uQ2hhbmdlZCwgKGxvY2FsaXphdGlvbikgPT4ge1xuICAgICAgdGhpcy5fbG9jYWxpemF0aW9uID0gbG9jYWxpemF0aW9uO1xuICAgIH0pO1xuICB9XG59XG4iLCI8a2VuZG8tbXVsdGlzZWxlY3RcbiAgI2NvbXBvbmVudFxuICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICBbZm9ybUNvbnRyb2xdPVwidmFsdWVGb3JtQ29udHJvbFwiXG4gIFtkYXRhXT1cImNvbWJpbmVkSXRlbXMgfCBhc3luY1wiXG4gIFtmaWx0ZXJhYmxlXT1cImlzU2VhcmNoYWJsZVwiXG4gIFt2YWx1ZUZpZWxkXT1cInZhbHVlS2V5XCJcbiAgW3RleHRGaWVsZF09XCJ0ZXh0S2V5XCJcbiAgW2xvYWRpbmddPVwiaXNMb2FkaW5nU3Bpbm5lclZpc2libGUgfCBhc3luY1wiXG4gIFtjbGVhckJ1dHRvbl09XCJmYWxzZVwiXG4gIFtwb3B1cFNldHRpbmdzXT1cInBvcHVwU2V0dGluZ3NcIlxuICBbbGlzdEhlaWdodF09XCJsaXN0SGVpZ2h0XCJcbiAgW3ZhbHVlUHJpbWl0aXZlXT1cImlzUHJpbWl0aXZlVmFsdWVcIlxuICAoZmlsdGVyQ2hhbmdlKT1cIm9uU2VhcmNoZWQoJGV2ZW50KVwiXG4gICh2YWx1ZUNoYW5nZSk9XCJvbkNoYW5nZWQoJGV2ZW50KVwiXG4gIChvcGVuKT1cIm9uT3BlbmVkKClcIlxuICAoY2xvc2UpPVwib25DbG9zZWQoKVwiXG4gIChmb2N1cyk9XCJvbkZvY3VzZWQoKVwiXG4gIChibHVyKT1cIm9uQmx1cnJlZCgpXCJcbj5cbiAgPG5nLXRlbXBsYXRlIGtlbmRvRHJvcERvd25MaXN0Rm9vdGVyVGVtcGxhdGU+XG4gICAgPHNnLWNvbWJvYm94LXBvcHVwLWZvb3RlclxuICAgICAgW2lzTG9hZGluZ1RleHRWaXNpYmxlXT1cImlzTG9hZGluZ1RleHRWaXNpYmxlIHwgYXN5bmNcIlxuICAgICAgW2lzTm9JdGVtc1RleHRWaXNpYmxlXT1cImlzTm9JdGVtc1RleHRWaXNpYmxlIHwgYXN5bmNcIlxuICAgICAgW2lzTWluU2VhcmNoVGV4dFZpc2libGVdPVwiaXNNaW5TZWFyY2hUZXh0VmlzaWJsZSB8IGFzeW5jXCJcbiAgICAgIFtsb2FkaW5nVGV4dF09XCJsb2FkaW5nVGV4dFwiXG4gICAgICBbbm9JdGVtc1RleHRdPVwibm9JdGVtc1RleHRcIlxuICAgICAgW21pblNlYXJjaFRleHRdPVwibWluU2VhcmNoVGV4dFwiXG4gICAgICBbbWluU2VhcmNoQ2hhcmFjdGVyc109XCJtaW5TZWFyY2hDaGFyYWN0ZXJzXCJcbiAgICA+XG4gICAgPC9zZy1jb21ib2JveC1wb3B1cC1mb290ZXI+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSBrZW5kb0Ryb3BEb3duTGlzdE5vRGF0YVRlbXBsYXRlPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIml0ZW1UZW1wbGF0ZVwiIGtlbmRvTXVsdGlTZWxlY3RJdGVtVGVtcGxhdGUgbGV0LWRhdGFJdGVtPlxuICAgIDxzcGFuIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogZGF0YUl0ZW19XCI+PC9zcGFuPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUga2VuZG9NdWx0aVNlbGVjdFRhZ1RlbXBsYXRlIGxldC1kYXRhSXRlbT5cbiAgICA8c3BhblxuICAgICAgI3RhZ1dyYXBwZXI9XCJtdWx0aXNlbGVjdFRhZ1dyYXBwZXJcIlxuICAgICAgc2dNdWx0aXNlbGVjdFRhZ1dyYXBwZXJcbiAgICAgIFtpc1JlYWRPbmx5XT1cImlzUmVhZE9ubHlUYWcgJiYgaXNSZWFkT25seVRhZyhkYXRhSXRlbSlcIlxuICAgID5cbiAgICAgIDxzZy10YWdcbiAgICAgICAgW2ljb25dPVwidGFnV3JhcHBlci5pc1JlYWRPbmx5ID8gJycgOiAnZmFyIGZhLXRpbWVzJ1wiXG4gICAgICAgIFtjb2xvcl09XCJ0YWdDb2xvcihkYXRhSXRlbSlcIlxuICAgICAgICBbaXNBY3RpdmF0ZWRdPVwiaXNBY3RpdmF0ZWRUYWcoZGF0YUl0ZW0pXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhZ1RlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFnVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGRhdGFJdGVtfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWdUZW1wbGF0ZVwiPnt7IGRhdGFJdGVtW3RleHRGaWVsZF0gfX08L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc2ctdGFnPlxuICAgIDwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwva2VuZG8tbXVsdGlzZWxlY3Q+XG48ZGl2IGNsYXNzPVwic2ctbXVsdGlzZWxlY3RfX3Jlc2V0XCIgKm5nSWY9XCIhaXNEaXNhYmxlZFwiIChjbGljayk9XCJvblJlc2V0Q2xpY2tlZCgpXCI+XG4gIDxpIGNsYXNzPVwiZmFyIGZhLXRpbWVzXCI+PC9pPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwic2ctbXVsdGlzZWxlY3RfX3N0YXRlLWxpbmVcIj48L2Rpdj5cbiJdfQ==