@ecodev/natural 46.0.0 → 47.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/esm2020/lib/classes/abstract-controller.mjs +3 -3
- package/esm2020/lib/classes/abstract-detail.mjs +3 -3
- package/esm2020/lib/classes/abstract-editable-list.mjs +5 -5
- package/esm2020/lib/classes/abstract-list.mjs +4 -4
- package/esm2020/lib/classes/abstract-navigable-list.mjs +3 -3
- package/esm2020/lib/classes/utility.mjs +8 -5
- package/esm2020/lib/directives/http-prefix.directive.mjs +3 -3
- package/esm2020/lib/modules/alert/alert.module.mjs +8 -8
- package/esm2020/lib/modules/alert/alert.service.mjs +7 -7
- package/esm2020/lib/modules/alert/confirm.component.mjs +7 -7
- package/esm2020/lib/modules/avatar/avatar.module.mjs +4 -4
- package/esm2020/lib/modules/avatar/component/avatar.component.mjs +3 -3
- package/esm2020/lib/modules/avatar/service/avatar.service.mjs +3 -3
- package/esm2020/lib/modules/columns-picker/columns-picker-column.directive.mjs +3 -3
- package/esm2020/lib/modules/columns-picker/columns-picker.component.mjs +24 -24
- package/esm2020/lib/modules/columns-picker/columns-picker.module.mjs +9 -9
- package/esm2020/lib/modules/common/common-module.mjs +8 -8
- package/esm2020/lib/modules/common/directives/linkable-tab.directive.mjs +6 -6
- package/esm2020/lib/modules/common/directives/src-density.directive.mjs +7 -7
- package/esm2020/lib/modules/common/pipes/capitalize.pipe.mjs +3 -3
- package/esm2020/lib/modules/common/pipes/ellipsis.pipe.mjs +3 -3
- package/esm2020/lib/modules/common/pipes/enum.pipe.mjs +3 -3
- package/esm2020/lib/modules/common/pipes/swiss-date.pipe.mjs +3 -3
- package/esm2020/lib/modules/common/pipes/time-ago.pipe.mjs +3 -3
- package/esm2020/lib/modules/common/services/memory-storage.mjs +3 -3
- package/esm2020/lib/modules/common/services/seo.service.mjs +3 -3
- package/esm2020/lib/modules/detail-header/detail-header.component.mjs +4 -4
- package/esm2020/lib/modules/detail-header/detail-header.module.mjs +6 -6
- package/esm2020/lib/modules/dialog-trigger/dialog-trigger.component.mjs +6 -6
- package/esm2020/lib/modules/dialog-trigger/dialog-trigger.module.mjs +6 -6
- package/esm2020/lib/modules/dropdown-components/abstract-association-select-component.directive.mjs +3 -3
- package/esm2020/lib/modules/dropdown-components/natural-dropdown-components.module.mjs +11 -11
- package/esm2020/lib/modules/dropdown-components/type-date/type-date.component.mjs +9 -8
- package/esm2020/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +5 -5
- package/esm2020/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +6 -6
- package/esm2020/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +6 -6
- package/esm2020/lib/modules/dropdown-components/type-number/type-number.component.mjs +7 -7
- package/esm2020/lib/modules/dropdown-components/type-select/type-select.component.mjs +9 -9
- package/esm2020/lib/modules/dropdown-components/type-text/type-text.component.mjs +5 -5
- package/esm2020/lib/modules/file/abstract-file.mjs +4 -4
- package/esm2020/lib/modules/file/component/file.component.mjs +5 -5
- package/esm2020/lib/modules/file/file-drop.directive.mjs +3 -3
- package/esm2020/lib/modules/file/file-select.directive.mjs +3 -3
- package/esm2020/lib/modules/file/file.module.mjs +4 -4
- package/esm2020/lib/modules/file/file.service.mjs +4 -4
- package/esm2020/lib/modules/fixed-button/fixed-button.component.mjs +4 -4
- package/esm2020/lib/modules/fixed-button/fixed-button.module.mjs +6 -6
- package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +13 -13
- package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.module.mjs +6 -6
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +7 -7
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +3 -3
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +8 -8
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +6 -6
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector.module.mjs +12 -12
- package/esm2020/lib/modules/icon/icon.component.mjs +3 -3
- package/esm2020/lib/modules/icon/icon.module.mjs +4 -4
- package/esm2020/lib/modules/logger/error-handler.mjs +4 -4
- package/esm2020/lib/modules/logger/error.module.mjs +4 -4
- package/esm2020/lib/modules/matomo/matomo-module.module.mjs +4 -4
- package/esm2020/lib/modules/matomo/matomo.service.mjs +4 -4
- package/esm2020/lib/modules/panels/abstract-panel.mjs +3 -3
- package/esm2020/lib/modules/panels/panels.component.mjs +3 -3
- package/esm2020/lib/modules/panels/panels.module.mjs +6 -6
- package/esm2020/lib/modules/panels/panels.service.mjs +9 -9
- package/esm2020/lib/modules/relations/relations.component.mjs +9 -9
- package/esm2020/lib/modules/relations/relations.module.mjs +11 -11
- package/esm2020/lib/modules/search/dropdown-container/dropdown-container.component.mjs +5 -5
- package/esm2020/lib/modules/search/dropdown-container/dropdown.service.mjs +3 -3
- package/esm2020/lib/modules/search/facet-selector/facet-selector.component.mjs +4 -4
- package/esm2020/lib/modules/search/group/group.component.mjs +3 -3
- package/esm2020/lib/modules/search/input/input.component.mjs +18 -18
- package/esm2020/lib/modules/search/search/search.component.mjs +4 -4
- package/esm2020/lib/modules/search/search.module.mjs +10 -10
- package/esm2020/lib/modules/select/abstract-select.component.mjs +14 -14
- package/esm2020/lib/modules/select/select/select.component.mjs +12 -12
- package/esm2020/lib/modules/select/select-enum/select-enum.component.mjs +6 -6
- package/esm2020/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +8 -8
- package/esm2020/lib/modules/select/select.module.mjs +12 -12
- package/esm2020/lib/modules/sidenav/sidenav/sidenav.component.mjs +3 -3
- package/esm2020/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +3 -3
- package/esm2020/lib/modules/sidenav/sidenav-content/sidenav-content.component.mjs +3 -3
- package/esm2020/lib/modules/sidenav/sidenav-stack.service.mjs +3 -3
- package/esm2020/lib/modules/sidenav/sidenav.module.mjs +6 -6
- package/esm2020/lib/modules/sidenav/sidenav.service.mjs +3 -3
- package/esm2020/lib/modules/stamp/stamp-module.module.mjs +4 -4
- package/esm2020/lib/modules/stamp/stamp.component.mjs +3 -3
- package/esm2020/lib/modules/table-button/table-button.component.mjs +4 -4
- package/esm2020/lib/modules/table-button/table-button.module.mjs +6 -6
- package/esm2020/lib/services/abstract-model.service.mjs +1 -1
- package/esm2020/lib/services/debounce.service.mjs +3 -3
- package/esm2020/lib/services/enum.service.mjs +3 -3
- package/esm2020/lib/services/link-mutation.service.mjs +3 -3
- package/esm2020/lib/services/persistence.service.mjs +3 -3
- package/esm2020/lib/services/swiss-parsing-date-adapter.service.mjs +3 -3
- package/esm2020/lib/types/types.mjs +1 -1
- package/fesm2015/ecodev-natural.mjs +516 -512
- package/fesm2015/ecodev-natural.mjs.map +1 -1
- package/fesm2020/ecodev-natural.mjs +516 -512
- package/fesm2020/ecodev-natural.mjs.map +1 -1
- package/lib/classes/abstract-controller.d.ts +1 -1
- package/lib/classes/abstract-detail.d.ts +1 -1
- package/lib/classes/abstract-editable-list.d.ts +2 -2
- package/lib/classes/abstract-list.d.ts +3 -3
- package/lib/classes/abstract-navigable-list.d.ts +3 -3
- package/lib/classes/utility.d.ts +1 -1
- package/lib/directives/http-prefix.directive.d.ts +1 -1
- package/lib/modules/alert/alert.module.d.ts +4 -4
- package/lib/modules/alert/alert.service.d.ts +2 -2
- package/lib/modules/alert/confirm.component.d.ts +1 -1
- package/lib/modules/avatar/component/avatar.component.d.ts +2 -2
- package/lib/modules/avatar/sources/source.d.ts +1 -1
- package/lib/modules/columns-picker/columns-picker-column.directive.d.ts +1 -1
- package/lib/modules/columns-picker/columns-picker.component.d.ts +1 -1
- package/lib/modules/columns-picker/columns-picker.module.d.ts +5 -5
- package/lib/modules/common/common-module.d.ts +4 -4
- package/lib/modules/common/directives/linkable-tab.directive.d.ts +2 -2
- package/lib/modules/common/directives/src-density.directive.d.ts +1 -1
- package/lib/modules/common/services/memory-storage.d.ts +1 -1
- package/lib/modules/common/services/seo.service.d.ts +4 -4
- package/lib/modules/detail-header/detail-header.component.d.ts +1 -1
- package/lib/modules/detail-header/detail-header.module.d.ts +2 -2
- package/lib/modules/dialog-trigger/dialog-trigger.component.d.ts +4 -4
- package/lib/modules/dialog-trigger/dialog-trigger.module.d.ts +2 -2
- package/lib/modules/dropdown-components/abstract-association-select-component.directive.d.ts +1 -1
- package/lib/modules/dropdown-components/natural-dropdown-components.module.d.ts +7 -7
- package/lib/modules/dropdown-components/type-date/type-date.component.d.ts +1 -1
- package/lib/modules/dropdown-components/type-date-range/type-date-range.component.d.ts +1 -1
- package/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.d.ts +2 -2
- package/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.d.ts +1 -1
- package/lib/modules/dropdown-components/type-number/type-number.component.d.ts +1 -1
- package/lib/modules/dropdown-components/type-select/type-select.component.d.ts +3 -3
- package/lib/modules/dropdown-components/type-text/type-text.component.d.ts +1 -1
- package/lib/modules/dropdown-components/types.d.ts +2 -2
- package/lib/modules/file/abstract-file.d.ts +1 -1
- package/lib/modules/file/component/file.component.d.ts +1 -1
- package/lib/modules/file/file-drop.directive.d.ts +1 -1
- package/lib/modules/file/file-select.directive.d.ts +1 -1
- package/lib/modules/file/types.d.ts +1 -1
- package/lib/modules/fixed-button/fixed-button.component.d.ts +1 -1
- package/lib/modules/fixed-button/fixed-button.module.d.ts +2 -2
- package/lib/modules/fixed-button-detail/fixed-button-detail.component.d.ts +2 -2
- package/lib/modules/fixed-button-detail/fixed-button-detail.module.d.ts +2 -2
- package/lib/modules/hierarchic-selector/classes/hierarchic-configuration.d.ts +1 -1
- package/lib/modules/hierarchic-selector/classes/hierarchic-filters-configuration.d.ts +1 -1
- package/lib/modules/hierarchic-selector/classes/model-node.d.ts +1 -1
- package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.d.ts +1 -1
- package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.d.ts +2 -2
- package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.d.ts +1 -1
- package/lib/modules/hierarchic-selector/hierarchic-selector.module.d.ts +8 -8
- package/lib/modules/icon/icon.component.d.ts +1 -1
- package/lib/modules/matomo/matomo.service.d.ts +2 -2
- package/lib/modules/panels/abstract-panel.d.ts +1 -1
- package/lib/modules/panels/panels.component.d.ts +1 -1
- package/lib/modules/panels/panels.module.d.ts +2 -2
- package/lib/modules/panels/panels.service.d.ts +1 -1
- package/lib/modules/panels/types.d.ts +2 -2
- package/lib/modules/relations/relations.component.d.ts +2 -2
- package/lib/modules/relations/relations.module.d.ts +7 -7
- package/lib/modules/search/classes/graphql-doctrine.types.d.ts +1 -1
- package/lib/modules/search/dropdown-container/dropdown-container.component.d.ts +1 -1
- package/lib/modules/search/facet-selector/facet-selector.component.d.ts +1 -1
- package/lib/modules/search/group/group.component.d.ts +1 -1
- package/lib/modules/search/input/input.component.d.ts +1 -1
- package/lib/modules/search/search/search.component.d.ts +1 -1
- package/lib/modules/search/search.module.d.ts +5 -5
- package/lib/modules/search/types/facet.d.ts +2 -2
- package/lib/modules/search/types/values.d.ts +2 -2
- package/lib/modules/select/abstract-select.component.d.ts +2 -2
- package/lib/modules/select/select/select.component.d.ts +3 -3
- package/lib/modules/select/select-enum/select-enum.component.d.ts +2 -2
- package/lib/modules/select/select-hierarchic/select-hierarchic.component.d.ts +1 -1
- package/lib/modules/select/select.module.d.ts +8 -8
- package/lib/modules/sidenav/sidenav/sidenav.component.d.ts +1 -1
- package/lib/modules/sidenav/sidenav-container/sidenav-container.component.d.ts +1 -1
- package/lib/modules/sidenav/sidenav-content/sidenav-content.component.d.ts +1 -1
- package/lib/modules/sidenav/sidenav.module.d.ts +2 -2
- package/lib/modules/stamp/stamp.component.d.ts +2 -2
- package/lib/modules/table-button/table-button.component.d.ts +1 -1
- package/lib/modules/table-button/table-button.module.d.ts +2 -2
- package/lib/services/abstract-model.service.d.ts +6 -6
- package/lib/services/debounce.service.d.ts +1 -1
- package/lib/services/persistence.service.d.ts +1 -1
- package/lib/types/types.d.ts +12 -12
- package/package.json +12 -12
|
@@ -9,9 +9,9 @@ import * as i0 from "@angular/core";
|
|
|
9
9
|
import * as i1 from "../dropdown-container/dropdown.service";
|
|
10
10
|
import * as i2 from "@angular/common";
|
|
11
11
|
import * as i3 from "@angular/forms";
|
|
12
|
-
import * as i4 from "@angular/material/form-field";
|
|
13
|
-
import * as i5 from "@angular/material/input";
|
|
14
|
-
import * as i6 from "@angular/material/button";
|
|
12
|
+
import * as i4 from "@angular/material/legacy-form-field";
|
|
13
|
+
import * as i5 from "@angular/material/legacy-input";
|
|
14
|
+
import * as i6 from "@angular/material/legacy-button";
|
|
15
15
|
import * as i7 from "@angular/material/core";
|
|
16
16
|
import * as i8 from "../../icon/icon.component";
|
|
17
17
|
// Required to check invalid fields when initializing natural-search
|
|
@@ -29,6 +29,16 @@ function isComponentValid(component) {
|
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
export class NaturalInputComponent {
|
|
32
|
+
/**
|
|
33
|
+
* Custom management for taking the focus from parent context
|
|
34
|
+
* When focusing manually on the <input>, a dropdown is opened
|
|
35
|
+
* But when the focus is given from angular in a parent context (like a dialog) the dropdown would open and we don't want it.
|
|
36
|
+
*/
|
|
37
|
+
focus() {
|
|
38
|
+
this.neutralizeDropdownOpening = true;
|
|
39
|
+
this.input.nativeElement.focus();
|
|
40
|
+
this.neutralizeDropdownOpening = false;
|
|
41
|
+
}
|
|
32
42
|
constructor(element, dropdownService, injector) {
|
|
33
43
|
this.element = element;
|
|
34
44
|
this.dropdownService = dropdownService;
|
|
@@ -85,16 +95,6 @@ export class NaturalInputComponent {
|
|
|
85
95
|
*/
|
|
86
96
|
this.neutralizeDropdownOpening = false;
|
|
87
97
|
}
|
|
88
|
-
/**
|
|
89
|
-
* Custom management for taking the focus from parent context
|
|
90
|
-
* When focusing manually on the <input>, a dropdown is opened
|
|
91
|
-
* But when the focus is given from angular in a parent context (like a dialog) the dropdown would open and we don't want it.
|
|
92
|
-
*/
|
|
93
|
-
focus() {
|
|
94
|
-
this.neutralizeDropdownOpening = true;
|
|
95
|
-
this.input.nativeElement.focus();
|
|
96
|
-
this.neutralizeDropdownOpening = false;
|
|
97
|
-
}
|
|
98
98
|
ngOnInit() {
|
|
99
99
|
this.input.nativeElement.addEventListener('focus', () => {
|
|
100
100
|
this.openDropdown();
|
|
@@ -298,11 +298,11 @@ export class NaturalInputComponent {
|
|
|
298
298
|
return selection;
|
|
299
299
|
}
|
|
300
300
|
}
|
|
301
|
-
NaturalInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
302
|
-
NaturalInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
303
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
301
|
+
NaturalInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalInputComponent, deps: [{ token: i0.ElementRef }, { token: i1.NaturalDropdownService }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Component });
|
|
302
|
+
NaturalInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NaturalInputComponent, selector: "natural-input", inputs: { placeholder: "placeholder", searchFieldName: "searchFieldName", selection: "selection", facets: "facets" }, outputs: { selectionChange: "selectionChange", cleared: "cleared" }, host: { listeners: { "focus": "focus()" } }, viewQueries: [{ propertyName: "ripple", first: true, predicate: MatRipple, descendants: true, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!-- click condition should match to allow click action only when no other button is visible -->\n<mat-form-field #field matRipple (click)=\"!selection && !(facet && !selection) ? openDropdown() : null\">\n <mat-label *ngIf=\"facet\">{{ facet.display }}</mat-label>\n <mat-label *ngIf=\"!facet\">{{ placeholder }}</mat-label>\n\n <input\n #input\n (blur)=\"search($event)\"\n (keydown.enter)=\"search($event)\"\n [attr.size]=\"length\"\n [errorStateMatcher]=\"errorMatcher\"\n [formControl]=\"formCtrl\"\n [readonly]=\"(isDropdown() && !!selection) || isFlag()\"\n autocomplete=\"off\"\n matInput\n type=\"text\"\n />\n\n <!-- TODO : replace this void button -->\n <div *ngIf=\"!facet && !selection\" class=\"search-icon\" matPrefix>\n <natural-icon name=\"search\"></natural-icon>\n </div>\n\n <button (click)=\"clear()\" *ngIf=\"selection\" mat-icon-button matSuffix>\n <natural-icon name=\"close\"></natural-icon>\n </button>\n\n <button (click)=\"clear()\" *ngIf=\"facet && !selection\" mat-icon-button matSuffix>\n <natural-icon name=\"undo\"></natural-icon>\n </button>\n</mat-form-field>\n<div class=\"hide\">{{ formCtrl.value ? formCtrl.value : facet ? facet.display : placeholder }}</div>\n", styles: [":host{position:relative;overflow:hidden;border-top-left-radius:4px;border-top-right-radius:4px;display:flex;flex-direction:column}:host .mat-menu-ripple{inset:0;position:absolute;pointer-events:none}:host .hide{color:transparent;height:0;margin:0 50px 0 10px;font-size:inherit;white-space:nowrap;font-family:Roboto,Helvetica Neue,sans-serif}:host .search-icon{display:block;width:35px;height:35px}:host .search-icon natural-icon{margin:5px auto 0}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatLegacyPrefix, selector: "[matPrefix]" }, { kind: "directive", type: i4.MatLegacySuffix, selector: "[matSuffix]" }, { kind: "directive", type: i5.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "component", type: i6.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i7.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i8.NaturalIconComponent, selector: "natural-icon", inputs: ["label", "labelColor", "labelPosition", "name", "size"] }] });
|
|
303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalInputComponent, decorators: [{
|
|
304
304
|
type: Component,
|
|
305
|
-
args: [{ selector: 'natural-input', template: "<!-- click condition should match to allow click action only when no other button is visible -->\n<mat-form-field #field matRipple (click)=\"!selection && !(facet && !selection) ? openDropdown() : null\">\n <mat-label *ngIf=\"facet\">{{ facet.display }}</mat-label>\n <mat-label *ngIf=\"!facet\">{{ placeholder }}</mat-label>\n\n <input\n #input\n (blur)=\"search($event)\"\n (keydown.enter)=\"search($event)\"\n [attr.size]=\"length\"\n [errorStateMatcher]=\"errorMatcher\"\n [formControl]=\"formCtrl\"\n [readonly]=\"(isDropdown() && !!selection) || isFlag()\"\n autocomplete=\"off\"\n matInput\n type=\"text\"\n />\n\n <!-- TODO : replace this void button -->\n <div *ngIf=\"!facet && !selection\" class=\"search-icon\" matPrefix>\n <natural-icon name=\"search\"></natural-icon>\n </div>\n\n <button (click)=\"clear()\" *ngIf=\"selection\" mat-icon-button matSuffix>\n <natural-icon name=\"close\"></natural-icon>\n </button>\n\n <button (click)=\"clear()\" *ngIf=\"facet && !selection\" mat-icon-button matSuffix>\n <natural-icon name=\"undo\"></natural-icon>\n </button>\n</mat-form-field>\n<div class=\"hide\">{{ formCtrl.value ? formCtrl.value : facet ? facet.display : placeholder }}</div>\n", styles: [":host{position:relative;overflow:hidden;border-top-left-radius:4px;border-top-right-radius:4px;display:flex;flex-direction:column}:host .mat-menu-ripple{
|
|
305
|
+
args: [{ selector: 'natural-input', template: "<!-- click condition should match to allow click action only when no other button is visible -->\n<mat-form-field #field matRipple (click)=\"!selection && !(facet && !selection) ? openDropdown() : null\">\n <mat-label *ngIf=\"facet\">{{ facet.display }}</mat-label>\n <mat-label *ngIf=\"!facet\">{{ placeholder }}</mat-label>\n\n <input\n #input\n (blur)=\"search($event)\"\n (keydown.enter)=\"search($event)\"\n [attr.size]=\"length\"\n [errorStateMatcher]=\"errorMatcher\"\n [formControl]=\"formCtrl\"\n [readonly]=\"(isDropdown() && !!selection) || isFlag()\"\n autocomplete=\"off\"\n matInput\n type=\"text\"\n />\n\n <!-- TODO : replace this void button -->\n <div *ngIf=\"!facet && !selection\" class=\"search-icon\" matPrefix>\n <natural-icon name=\"search\"></natural-icon>\n </div>\n\n <button (click)=\"clear()\" *ngIf=\"selection\" mat-icon-button matSuffix>\n <natural-icon name=\"close\"></natural-icon>\n </button>\n\n <button (click)=\"clear()\" *ngIf=\"facet && !selection\" mat-icon-button matSuffix>\n <natural-icon name=\"undo\"></natural-icon>\n </button>\n</mat-form-field>\n<div class=\"hide\">{{ formCtrl.value ? formCtrl.value : facet ? facet.display : placeholder }}</div>\n", styles: [":host{position:relative;overflow:hidden;border-top-left-radius:4px;border-top-right-radius:4px;display:flex;flex-direction:column}:host .mat-menu-ripple{inset:0;position:absolute;pointer-events:none}:host .hide{color:transparent;height:0;margin:0 50px 0 10px;font-size:inherit;white-space:nowrap;font-family:Roboto,Helvetica Neue,sans-serif}:host .search-icon{display:block;width:35px;height:35px}:host .search-icon natural-icon{margin:5px auto 0}\n"] }]
|
|
306
306
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NaturalDropdownService }, { type: i0.EnvironmentInjector }]; }, propDecorators: { ripple: [{
|
|
307
307
|
type: ViewChild,
|
|
308
308
|
args: [MatRipple, { static: true }]
|
|
@@ -325,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImpor
|
|
|
325
325
|
type: HostListener,
|
|
326
326
|
args: ['focus']
|
|
327
327
|
}] } });
|
|
328
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL2lucHV0L2lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULGVBQWUsRUFDZix5QkFBeUIsRUFHekIsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsV0FBVyxFQUFnQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBb0IsU0FBUyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFcEUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUNILHFCQUFxQixHQUd4QixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBQyxzQkFBc0IsRUFBNkIsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7OztBQUs5RyxvRUFBb0U7QUFDcEUsTUFBTSx1QkFBdUI7SUFDbEIsWUFBWSxDQUFDLE9BQW9DO1FBQ3BELE9BQU8sQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ3hDLENBQUM7Q0FDSjtBQUVELFNBQVMsZ0JBQWdCLENBQUMsU0FBNEI7SUFDbEQsT0FBTyxHQUE0QixFQUFFO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdEIsT0FBTyxFQUFDLFNBQVMsRUFBRSxJ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QUFsRCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBS08sS0FBSztzQkFBL0MsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUtsQixXQUFXO3NCQUExQixLQUFLO2dCQUtVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBS1UsU0FBUztzQkFBeEIsS0FBSztnQkFLVSxNQUFNO3NCQUFyQixLQUFLO2dCQUtvQixlQUFlO3NCQUF4QyxNQUFNO2dCQUttQixPQUFPO3NCQUFoQyxNQUFNO2dCQW1EQSxLQUFLO3NCQURYLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBjcmVhdGVDb21wb25lbnQsXG4gICAgY3JlYXRlRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBFbGVtZW50UmVmLFxuICAgIEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU3RhdGljUHJvdmlkZXIsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Vycm9yU3RhdGVNYXRjaGVyLCBNYXRSaXBwbGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkfSBmcm9tICcuLi9jbGFzc2VzL2dyYXBocWwtZG9jdHJpbmUudHlwZXMnO1xuaW1wb3J0IHtnZXRGYWNldEZyb21TZWxlY3Rpb259IGZyb20gJy4uL2NsYXNzZXMvdXRpbHMnO1xuaW1wb3J0IHtOYXR1cmFsRHJvcGRvd25SZWZ9IGZyb20gJy4uL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi1yZWYnO1xuaW1wb3J0IHtcbiAgICBOQVRVUkFMX0RST1BET1dOX0RBVEEsXG4gICAgTmF0dXJhbERyb3Bkb3duRGF0YSxcbiAgICBOYXR1cmFsRHJvcGRvd25TZXJ2aWNlLFxufSBmcm9tICcuLi9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24uc2VydmljZSc7XG5pbXBvcnQge0ZhY2V0U2VsZWN0b3JDb21wb25lbnQsIEZhY2V0U2VsZWN0b3JDb25maWd1cmF0aW9ufSBmcm9tICcuLi9mYWNldC1zZWxlY3Rvci9mYWNldC1zZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHtEcm9wZG93bkNvbXBvbmVudH0gZnJvbSAnLi4vdHlwZXMvZHJvcGRvd24tY29tcG9uZW50JztcbmltcG9ydCB7RHJvcGRvd25GYWNldCwgRmFjZXQsIEZsYWdGYWNldCwgTmF0dXJhbFNlYXJjaEZhY2V0c30gZnJvbSAnLi4vdHlwZXMvZmFjZXQnO1xuaW1wb3J0IHtEcm9wZG93blJlc3VsdCwgTmF0dXJhbFNlYXJjaFNlbGVjdGlvbn0gZnJvbSAnLi4vdHlwZXMvdmFsdWVzJztcblxuLy8gUmVxdWlyZWQgdG8gY2hlY2sgaW52YWxpZCBmaWVsZHMgd2hlbiBpbml0aWFsaXppbmcgbmF0dXJhbC1zZWFyY2hcbmNsYXNzIEFsd2F5c0Vycm9yU3RhdGVNYXRjaGVyIGltcGxlbWVudHMgRXJyb3JTdGF0ZU1hdGNoZXIge1xuICAgIHB1YmxpYyBpc0Vycm9yU3RhdGUoY29udHJvbDogRm9ybUNvbnRyb2w8dW5rbm93bj4gfCBudWxsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIWNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gaXNDb21wb25lbnRWYWxpZChjb21wb25lbnQ6IERyb3Bkb3duQ29tcG9uZW50KTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICBpZiAoIWNvbXBvbmVudC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7Y29tcG9uZW50OiB0cnVlfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmF0dXJhbC1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBDb250cm9scyB0aGUgcmlwcGxlIGVmZmVjdCwgdXNlZCB3aGVuIG9wZW5pbmcgYSBkcm9wZG93blxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoTWF0UmlwcGxlLCB7c3RhdGljOiB0cnVlfSkgcHVibGljIHJpcHBsZSE6IE1hdFJpcHBsZTtcblxuICAgIC8qKlxuICAgICAqIE5hdGl2ZSBlbGVtZW50IHJlZiBmb3IgPGlucHV0PiByZWxhdGVkIHRvIHRoaXMgPG5hdHVyYWwtaW5wdXQ+IGNvbXBvbmVudFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0Jywge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyBpbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBMYWJlbCBmb3IgdGhpcyBmaWVsZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGZpZWxkIG9uIHdoaWNoIGRvIGEgZ2xvYmFsIHNlYXJjaCAod2l0aG91dCBmYWNldClcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgc2VhcmNoRmllbGROYW1lID0gJ3NlYXJjaCc7XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RlZCBzZXR0ZWQgZm9yIHRoaXMgY29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHNlbGVjdGlvbjogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQXZhaWxhYmxlIGZhY2V0cywgYWxsb3dzIHRoZSB1c2VyIHRvIHBpY2sgb25lLCB0aGFuIGdlbmVyYXRlZCB0aGVuIGEgc2VsZWN0aW9uXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGZhY2V0cyE6IE5hdHVyYWxTZWFyY2hGYWNldHM7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyB3aGVuIHVzZXIgYSBhZGRlZC91cGRhdGVkL2RlbGV0ZWQgYSBzZWFyY2ggKGZyb20gZ2xvYmFsIGNvbnRleHQgb3IgZnJvbSBmYWNldClcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TmF0dXJhbFNlYXJjaFNlbGVjdGlvbj4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gdXNlciByZW1vdmVzIHRoZSBzZWFyY2ggYnkgcHJlc3NpbmcgdGhlIGNyb3NzIGljb25cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNsZWFyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5hdHVyYWxJbnB1dENvbXBvbmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIFNlbGVjdGVkIGZhY2V0IGZyb20gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGZhY2V0c1xuICAgICAqL1xuICAgIHB1YmxpYyBmYWNldDogRmFjZXQgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENvbnRyb2xsZXIgZm9yIHRoZSBpbnB1dCBmaWVsZFxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBmb3JtQ3RybCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbWVyIGVycm9yIG1hdGNoZXIgdGhhdCBzaG91bGQgdmFsaWRhdGUgb24gZWFjaCBjaGFuZ2UgKGluY2x1ZGluZyBpbml0aWFsaXNhdGlvbilcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZXJyb3JNYXRjaGVyID0gbmV3IEFsd2F5c0Vycm9yU3RhdGVNYXRjaGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBSZWZlcmVuY2Ugb2YgdGhlIG9wZW5lZCBkcm9wZG93biBjb250YWluZXJcbiAgICAgKi9cbiAgICBwcml2YXRlIGRyb3Bkb3duUmVmOiBOYXR1cmFsRHJvcGRvd25SZWYgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSBvZiB0aGUgY29tcG9uZW50IGluc2lkZSB0aGUgZHJvcGRvd24gY29udGFpbmVyXG4gICAgICovXG4gICAgcHJpdmF0ZSBkcm9wZG93bkNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPERyb3Bkb3duQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogIE1pbmltdW0gaW5wdXQgbGVuZ3RoIChudW1iZXIgb2YgY2hhcnMpXG4gICAgICogIFNlZSBsZW5ndGggYXR0cmlidXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBtaW5MZW5ndGggPSA1O1xuXG4gICAgLyoqXG4gICAgICogU2l6ZSBvZiB0aGUgaW5wdXQgKG51bWJlciBvZiBjaGFycylcbiAgICAgKiBNYXRjaCB0aGUgaW5wdXQuc2l6ZSBhdHRyaWJ1dGVcbiAgICAgKi9cbiAgICBwdWJsaWMgbGVuZ3RoID0gdGhpcy5taW5MZW5ndGg7XG5cbiAgICAvKipcbiAgICAgKiBGbGFnLCB0aGF0LCBpZiBtYXJrZWQgYXMgeWVzLCBwcmV2ZW50cyB0aGUgb3BlbmluZyBvZiB0aGUgZHJvcGRvd25cbiAgICAgKiBJcyB1c2VkIHRvIHByZXZlbnQgZHJvcGRvd24gb3BlbmluZyB3aGVuIG5hdHVyYWwtc2VhcmNoIHRha2VzIHRoZSBmb2N1cyBmcm9tIHBhcmVudCBjb250ZXh0IChsaWtlIG9uIG1vZGFsIG9wZW5pbmcpXG4gICAgICovXG4gICAgcHJpdmF0ZSBuZXV0cmFsaXplRHJvcGRvd25PcGVuaW5nID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gbWFuYWdlbWVudCBmb3IgdGFraW5nIHRoZSBmb2N1cyBmcm9tIHBhcmVudCBjb250ZXh0XG4gICAgICogV2hlbiBmb2N1c2luZyBtYW51YWxseSBvbiB0aGUgPGlucHV0PiwgYSBkcm9wZG93biBpcyBvcGVuZWRcbiAgICAgKiBCdXQgd2hlbiB0aGUgZm9jdXMgaXMgZ2l2ZW4gZnJvbSBhbmd1bGFyIGluIGEgcGFyZW50IGNvbnRleHQgKGxpa2UgYSBkaWFsb2cpIHRoZSBkcm9wZG93biB3b3VsZCBvcGVuIGFuZCB3ZSBkb24ndCB3YW50IGl0LlxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJylcbiAgICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmV1dHJhbGl6ZURyb3Bkb3duT3BlbmluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB0aGlzLm5ldXRyYWxpemVEcm9wZG93bk9wZW5pbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZHJvcGRvd25TZXJ2aWNlOiBOYXR1cmFsRHJvcGRvd25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRyb3Bkb3duUmVmKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtQ3RybC52YWx1ZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9ICRsb2NhbGl6ZWBSZWNoZXJjaGVgO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJTaXplID0gKHRoaXMuZmFjZXQgPyB0aGlzLmZhY2V0LmRpc3BsYXkubGVuZ3RoIDogdGhpcy5wbGFjZWhvbGRlci5sZW5ndGgpICogMC42NjtcbiAgICAgICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLm1pbkxlbmd0aCwgTWF0aC5jZWlsKHBsYWNlaG9sZGVyU2l6ZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25Db21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZmFjZXRzICYmIHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xlYXIoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5mYWNldHMgJiYgdGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZmFjZXQgPSBnZXRGYWNldEZyb21TZWxlY3Rpb24odGhpcy5mYWNldHMsIHRoaXMuc2VsZWN0aW9uKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZHJvcGRvd25Db21wb25lbnQgPSB0aGlzLmNyZWF0ZUNvbXBvbmVudCh0aGlzLmZhY2V0IGFzIERyb3Bkb3duRmFjZXQ8RmFjZXRTZWxlY3RvckNvbmZpZ3VyYXRpb24+KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUN0cmwuc2V0VmFsaWRhdG9ycyhbaXNDb21wb25lbnRWYWxpZChkcm9wZG93bkNvbXBvbmVudCldKTtcbiAgICAgICAgICAgICAgICBkcm9wZG93bkNvbXBvbmVudC5yZW5kZXJlZFZhbHVlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUN0cmwuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmxhZygpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQ3RybC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uICYmXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uZmllbGQgPT09IHRoaXMuc2VhcmNoRmllbGROYW1lICYmXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY29uZGl0aW9uLmxpa2VcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIGdsb2JhbCBzZWFyY2ggbW9kZVxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUN0cmwuc2V0VmFsdWUoJycgKyB0aGlzLnNlbGVjdGlvbi5jb25kaXRpb24ubGlrZS52YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIElmIGNvbXBvbmVudCBpcyBpbnZhbGlkIChubyBmYWNldCBhbmQgbm90IGEgZ2xvYmFsIHNlYXJjaCksIGNsZWFyIGZyb20gcmVzdWx0IGFuZCBkZXN0cm95IGNvbXBvbmVudFxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbGVhcigpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2goZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICghdGhpcy5mb3JtQ3RybC52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5mb3JtQ3RybC52YWxpZCAmJiB0aGlzLmZvcm1DdHJsLmRpcnR5KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuZ2V0U2VsZWN0aW9uKHtsaWtlOiB7dmFsdWU6IHRoaXMuZm9ybUN0cmwudmFsdWV9fSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZhY2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB0aGlzLmNsZWFyZWQuZW1pdCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kcm9wZG93blJlZiB8fCB0aGlzLm5ldXRyYWxpemVEcm9wZG93bk9wZW5pbmcpIHtcbiAgICAgICAgICAgIC8vIFByZXZlbnQgdG8gb3BlbiBtdWx0aXBsZSBkcm9wZG93bnMuXG4gICAgICAgICAgICAvLyBIYXBwZW5zIGFzIHdlIG9wZW4gb24gXCJmb2N1c1wiLCBhbmQgYWx0K3RhYiByZS1hY3RpdmF0ZSBmb2N1cyBvbiBhbiBlbGVtZW50IHRoYXQgYWxyZWFkeSBoYWRcbiAgICAgICAgICAgIC8vIGZvY3VzIHdoZW4gbGVhdmluZyB3aW5kb3cgd2l0aCBhbm90aGVyIGFsdCt0YWJcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGF1bmNoUmlwcGxlKCk7XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZmFjZXQgYW5kIG5vIHN0cmluZyB0eXBlZCwgc2hvdyBwYW5lbCB0byBzZWxlY3QgdGhlIGZhY2V0XG4gICAgICAgIGlmICghdGhpcy5mYWNldCAmJiAhdGhpcy5mb3JtQ3RybC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuRmFjZXRTZWxlY3RvckRyb3Bkb3duKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiBhIGZhY2V0IGlzIHNlbGVjdGVkLCBvcGVuIHNwZWNpZmljIGNvbXBvbmVudCBkcm9wZG93blxuICAgICAgICAgICAgdGhpcy5vcGVuVHlwZURyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNEcm9wZG93bigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuZmFjZXQgJiYgKHRoaXMuZmFjZXQgYXMgRHJvcGRvd25GYWNldDx1bmtub3duPikuY29tcG9uZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGbGFnKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5mYWNldCAmJiAodGhpcy5mYWNldCBhcyBGbGFnRmFjZXQpLmNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDb21wb25lbnQoZmFjZXQ6IERyb3Bkb3duRmFjZXQ8dW5rbm93bj4pOiBEcm9wZG93bkNvbXBvbmVudCB7XG4gICAgICAgIC8vIEFsd2F5cyBkZXN0cm95IGFuZCByZWNyZWF0ZSBjb21wb25lbnRcbiAgICAgICAgLy8gVG9kbyA6IHRlc3QgaWYgZmFjZXQgaGFzIGNoYW5nZWQsIGlmIG5vdCByZS11c2UgdGhlIGNvbXBvbmVudFxuICAgICAgICBpZiAodGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25kaXRpb24gPSB0aGlzLnNlbGVjdGlvbiA/ICh0aGlzLnNlbGVjdGlvbi5jb25kaXRpb24gYXMgRmlsdGVyR3JvdXBDb25kaXRpb25GaWVsZCkgOiBudWxsO1xuICAgICAgICBjb25zdCBkYXRhOiBOYXR1cmFsRHJvcGRvd25EYXRhID0ge1xuICAgICAgICAgICAgY29uZGl0aW9uOiBjb25kaXRpb24sXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uOiBmYWNldC5jb25maWd1cmF0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gY3JlYXRlRW52aXJvbm1lbnRJbmplY3Rvcih0aGlzLmNyZWF0ZVByb3ZpZGVycyhkYXRhKSwgdGhpcy5pbmplY3Rvcik7XG4gICAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnRSZWYgPSBjcmVhdGVDb21wb25lbnQoZmFjZXQuY29tcG9uZW50LCB7XG4gICAgICAgICAgICBlbnZpcm9ubWVudEluamVjdG9yOiBpbmplY3RvcixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGRvd25Db21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVQcm92aWRlcnMoZGF0YTogTmF0dXJhbERyb3Bkb3duRGF0YSk6IFN0YXRpY1Byb3ZpZGVyW10ge1xuICAgICAgICAvLyBDdXN0b21pemUgaW5qZWN0b3IgdG8gYWxsb3cgZGF0YSBhbmQgZHJvcGRvd24gcmVmZXJlbmNlIGluamVjdGlvbiBpbiBjb21wb25lbnRcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBOYXR1cmFsRHJvcGRvd25SZWYsXG4gICAgICAgICAgICAgICAgdXNlVmFsdWU6IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb3ZpZGU6IE5BVFVSQUxfRFJPUERPV05fREFUQSxcbiAgICAgICAgICAgICAgICB1c2VWYWx1ZTogZGF0YSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsYXVuY2hSaXBwbGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJpcHBsZVJlZiA9IHRoaXMucmlwcGxlLmxhdW5jaCh7XG4gICAgICAgICAgICBwZXJzaXN0ZW50OiB0cnVlLFxuICAgICAgICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJpcHBsZVJlZi5mYWRlT3V0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuRmFjZXRTZWxlY3RvckRyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZmFjZXRzIHx8ICh0aGlzLmZhY2V0cyAmJiAhdGhpcy5mYWNldHMubGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0YTogTmF0dXJhbERyb3Bkb3duRGF0YTxGYWNldFNlbGVjdG9yQ29uZmlndXJhdGlvbj4gPSB7XG4gICAgICAgICAgICBjb25kaXRpb246IHt9LFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgICAgIGZhY2V0czogdGhpcy5mYWNldHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluamVjdG9yVG9rZW5zID0gdGhpcy5jcmVhdGVQcm92aWRlcnMoZGF0YSk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25SZWYgPSB0aGlzLmRyb3Bkb3duU2VydmljZS5vcGVuKEZhY2V0U2VsZWN0b3JDb21wb25lbnQsIHRoaXMuZWxlbWVudCwgaW5qZWN0b3JUb2tlbnMsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5kcm9wZG93blJlZi5jbG9zZWQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duUmVmID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZmFjZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGYWNldChyZXN1bHQuZmFjZXQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5UeXBlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0Ryb3Bkb3duKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRyb3Bkb3duRmFjZXQgPSB0aGlzLmZhY2V0IGFzIERyb3Bkb3duRmFjZXQ8dW5rbm93bj47XG5cbiAgICAgICAgY29uc3QgZGF0YTogTmF0dXJhbERyb3Bkb3duRGF0YSA9IHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjogdGhpcy5zZWxlY3Rpb24gPyB0aGlzLnNlbGVjdGlvbi5jb25kaXRpb24gOiBudWxsLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjogZHJvcGRvd25GYWNldC5jb25maWd1cmF0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluamVjdG9yVG9rZW5zID0gdGhpcy5jcmVhdGVQcm92aWRlcnMoZGF0YSk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRyb3Bkb3duRmFjZXQuY29tcG9uZW50O1xuICAgICAgICB0aGlzLmRyb3Bkb3duUmVmID0gdGhpcy5kcm9wZG93blNlcnZpY2Uub3BlbihcbiAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudCxcbiAgICAgICAgICAgIGluamVjdG9yVG9rZW5zLFxuICAgICAgICAgICAgZHJvcGRvd25GYWNldC5zaG93VmFsaWRhdGVCdXR0b24gIT09IHVuZGVmaW5lZCA/IGRyb3Bkb3duRmFjZXQuc2hvd1ZhbGlkYXRlQnV0dG9uIDogdHJ1ZSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRyb3Bkb3duUmVmLmNsb3NlZC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25SZWYgPSBudWxsO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShyZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZhY2V0KGZhY2V0OiBGYWNldCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZhY2V0ID0gZmFjZXQ7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5UeXBlRHJvcGRvd24oKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmxhZygpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb246IChmYWNldCBhcyBGbGFnRmFjZXQpLmNvbmRpdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhbHVlKHJlc3VsdDogRHJvcGRvd25SZXN1bHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZmFjZXQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5nZXRTZWxlY3Rpb24ocmVzdWx0LmNvbmRpdGlvbikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3Rpb24oY29uZGl0aW9uOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uWydjb25kaXRpb24nXSk6IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24ge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb246IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICBmaWVsZDogdGhpcy5mYWNldCA/IHRoaXMuZmFjZXQuZmllbGQgOiB0aGlzLnNlYXJjaEZpZWxkTmFtZSxcbiAgICAgICAgICAgIGNvbmRpdGlvbjogY29uZGl0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmZhY2V0ICYmIHRoaXMuZmFjZXQubmFtZSkge1xuICAgICAgICAgICAgc2VsZWN0aW9uLm5hbWUgPSB0aGlzLmZhY2V0Lm5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0aW9uO1xuICAgIH1cbn1cbiIsIjwhLS0gY2xpY2sgY29uZGl0aW9uIHNob3VsZCBtYXRjaCB0byBhbGxvdyBjbGljayBhY3Rpb24gb25seSB3aGVuIG5vIG90aGVyIGJ1dHRvbiBpcyB2aXNpYmxlIC0tPlxuPG1hdC1mb3JtLWZpZWxkICNmaWVsZCBtYXRSaXBwbGUgKGNsaWNrKT1cIiFzZWxlY3Rpb24gJiYgIShmYWNldCAmJiAhc2VsZWN0aW9uKSA/IG9wZW5Ecm9wZG93bigpIDogbnVsbFwiPlxuICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJmYWNldFwiPnt7IGZhY2V0LmRpc3BsYXkgfX08L21hdC1sYWJlbD5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwiIWZhY2V0XCI+e3sgcGxhY2Vob2xkZXIgfX08L21hdC1sYWJlbD5cblxuICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgKGJsdXIpPVwic2VhcmNoKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIFthdHRyLnNpemVdPVwibGVuZ3RoXCJcbiAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImVycm9yTWF0Y2hlclwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ3RybFwiXG4gICAgICAgIFtyZWFkb25seV09XCIoaXNEcm9wZG93bigpICYmICEhc2VsZWN0aW9uKSB8fCBpc0ZsYWcoKVwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAvPlxuXG4gICAgPCEtLSBUT0RPIDogcmVwbGFjZSB0aGlzIHZvaWQgYnV0dG9uIC0tPlxuICAgIDxkaXYgKm5nSWY9XCIhZmFjZXQgJiYgIXNlbGVjdGlvblwiIGNsYXNzPVwic2VhcmNoLWljb25cIiBtYXRQcmVmaXg+XG4gICAgICAgIDxuYXR1cmFsLWljb24gbmFtZT1cInNlYXJjaFwiPjwvbmF0dXJhbC1pY29uPlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXIoKVwiICpuZ0lmPVwic2VsZWN0aW9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeD5cbiAgICAgICAgPG5hdHVyYWwtaWNvbiBuYW1lPVwiY2xvc2VcIj48L25hdHVyYWwtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKGNsaWNrKT1cImNsZWFyKClcIiAqbmdJZj1cImZhY2V0ICYmICFzZWxlY3Rpb25cIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4PlxuICAgICAgICA8bmF0dXJhbC1pY29uIG5hbWU9XCJ1bmRvXCI+PC9uYXR1cmFsLWljb24+XG4gICAgPC9idXR0b24+XG48L21hdC1mb3JtLWZpZWxkPlxuPGRpdiBjbGFzcz1cImhpZGVcIj57eyBmb3JtQ3RybC52YWx1ZSA/IGZvcm1DdHJsLnZhbHVlIDogZmFjZXQgPyBmYWNldC5kaXNwbGF5IDogcGxhY2Vob2xkZXIgfX08L2Rpdj5cbiJdfQ==
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL2lucHV0L2lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULGVBQWUsRUFDZix5QkFBeUIsRUFHekIsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsV0FBVyxFQUFnQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBb0IsU0FBUyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFcEUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUNILHFCQUFxQixHQUd4QixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBQyxzQkFBc0IsRUFBNkIsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7OztBQUs5RyxvRUFBb0U7QUFDcEUsTUFBTSx1QkFBdUI7SUFDbEIsWUFBWSxDQUFDLE9BQW9DO1FBQ3BELE9BQU8sQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ3hDLENBQUM7Q0FDSjtBQUVELFNBQVMsZ0JBQWdCLENBQUMsU0FBNEI7SUFDbEQsT0FBTyxHQUE0QixFQUFFO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdEIsT0FBTyxFQUFDLFNBQVMsRUFBRSxJ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QWxELFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFLTyxLQUFLO3NCQUEvQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBS2xCLFdBQVc7c0JBQTFCLEtBQUs7Z0JBS1UsZUFBZTtzQkFBOUIsS0FBSztnQkFLVSxTQUFTO3NCQUF4QixLQUFLO2dCQUtVLE1BQU07c0JBQXJCLEtBQUs7Z0JBS29CLGVBQWU7c0JBQXhDLE1BQU07Z0JBS21CLE9BQU87c0JBQWhDLE1BQU07Z0JBbURBLEtBQUs7c0JBRFgsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIGNyZWF0ZUNvbXBvbmVudCxcbiAgICBjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTdGF0aWNQcm92aWRlcixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RXJyb3JTdGF0ZU1hdGNoZXIsIE1hdFJpcHBsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge0ZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGR9IGZyb20gJy4uL2NsYXNzZXMvZ3JhcGhxbC1kb2N0cmluZS50eXBlcyc7XG5pbXBvcnQge2dldEZhY2V0RnJvbVNlbGVjdGlvbn0gZnJvbSAnLi4vY2xhc3Nlcy91dGlscyc7XG5pbXBvcnQge05hdHVyYWxEcm9wZG93blJlZn0gZnJvbSAnLi4vZHJvcGRvd24tY29udGFpbmVyL2Ryb3Bkb3duLXJlZic7XG5pbXBvcnQge1xuICAgIE5BVFVSQUxfRFJPUERPV05fREFUQSxcbiAgICBOYXR1cmFsRHJvcGRvd25EYXRhLFxuICAgIE5hdHVyYWxEcm9wZG93blNlcnZpY2UsXG59IGZyb20gJy4uL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7RmFjZXRTZWxlY3RvckNvbXBvbmVudCwgRmFjZXRTZWxlY3RvckNvbmZpZ3VyYXRpb259IGZyb20gJy4uL2ZhY2V0LXNlbGVjdG9yL2ZhY2V0LXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQge0Ryb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuLi90eXBlcy9kcm9wZG93bi1jb21wb25lbnQnO1xuaW1wb3J0IHtEcm9wZG93bkZhY2V0LCBGYWNldCwgRmxhZ0ZhY2V0LCBOYXR1cmFsU2VhcmNoRmFjZXRzfSBmcm9tICcuLi90eXBlcy9mYWNldCc7XG5pbXBvcnQge0Ryb3Bkb3duUmVzdWx0LCBOYXR1cmFsU2VhcmNoU2VsZWN0aW9ufSBmcm9tICcuLi90eXBlcy92YWx1ZXMnO1xuXG4vLyBSZXF1aXJlZCB0byBjaGVjayBpbnZhbGlkIGZpZWxkcyB3aGVuIGluaXRpYWxpemluZyBuYXR1cmFsLXNlYXJjaFxuY2xhc3MgQWx3YXlzRXJyb3JTdGF0ZU1hdGNoZXIgaW1wbGVtZW50cyBFcnJvclN0YXRlTWF0Y2hlciB7XG4gICAgcHVibGljIGlzRXJyb3JTdGF0ZShjb250cm9sOiBGb3JtQ29udHJvbDx1bmtub3duPiB8IG51bGwpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhY29udHJvbCAmJiBjb250cm9sLmludmFsaWQ7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0NvbXBvbmVudFZhbGlkKGNvbXBvbmVudDogRHJvcGRvd25Db21wb25lbnQpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuICgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAgIGlmICghY29tcG9uZW50LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtjb21wb25lbnQ6IHRydWV9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYXR1cmFsLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHRoZSByaXBwbGUgZWZmZWN0LCB1c2VkIHdoZW4gb3BlbmluZyBhIGRyb3Bkb3duXG4gICAgICovXG4gICAgQFZpZXdDaGlsZChNYXRSaXBwbGUsIHtzdGF0aWM6IHRydWV9KSBwdWJsaWMgcmlwcGxlITogTWF0UmlwcGxlO1xuXG4gICAgLyoqXG4gICAgICogTmF0aXZlIGVsZW1lbnQgcmVmIGZvciA8aW5wdXQ+IHJlbGF0ZWQgdG8gdGhpcyA8bmF0dXJhbC1pbnB1dD4gY29tcG9uZW50XG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7c3RhdGljOiB0cnVlfSkgcHVibGljIGlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIExhYmVsIGZvciB0aGlzIGZpZWxkXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgZmllbGQgb24gd2hpY2ggZG8gYSBnbG9iYWwgc2VhcmNoICh3aXRob3V0IGZhY2V0KVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hGaWVsZE5hbWUgPSAnc2VhcmNoJztcblxuICAgIC8qKlxuICAgICAqIFNlbGVjdGVkIHNldHRlZCBmb3IgdGhpcyBjb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0aW9uOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBBdmFpbGFibGUgZmFjZXRzLCBhbGxvd3MgdGhlIHVzZXIgdG8gcGljayBvbmUsIHRoYW4gZ2VuZXJhdGVkIHRoZW4gYSBzZWxlY3Rpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgZmFjZXRzITogTmF0dXJhbFNlYXJjaEZhY2V0cztcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gdXNlciBhIGFkZGVkL3VwZGF0ZWQvZGVsZXRlZCBhIHNlYXJjaCAoZnJvbSBnbG9iYWwgY29udGV4dCBvciBmcm9tIGZhY2V0KVxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxOYXR1cmFsU2VhcmNoU2VsZWN0aW9uPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiB1c2VyIHJlbW92ZXMgdGhlIHNlYXJjaCBieSBwcmVzc2luZyB0aGUgY3Jvc3MgaWNvblxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgY2xlYXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TmF0dXJhbElucHV0Q29tcG9uZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogU2VsZWN0ZWQgZmFjZXQgZnJvbSB0aGUgbGlzdCBvZiBhdmFpbGFibGUgZmFjZXRzXG4gICAgICovXG4gICAgcHVibGljIGZhY2V0OiBGYWNldCB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQ29udHJvbGxlciBmb3IgdGhlIGlucHV0IGZpZWxkXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZvcm1DdHJsID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tZXIgZXJyb3IgbWF0Y2hlciB0aGF0IHNob3VsZCB2YWxpZGF0ZSBvbiBlYWNoIGNoYW5nZSAoaW5jbHVkaW5nIGluaXRpYWxpc2F0aW9uKVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBlcnJvck1hdGNoZXIgPSBuZXcgQWx3YXlzRXJyb3JTdGF0ZU1hdGNoZXIoKTtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSBvZiB0aGUgb3BlbmVkIGRyb3Bkb3duIGNvbnRhaW5lclxuICAgICAqL1xuICAgIHByaXZhdGUgZHJvcGRvd25SZWY6IE5hdHVyYWxEcm9wZG93blJlZiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUmVmZXJlbmNlIG9mIHRoZSBjb21wb25lbnQgaW5zaWRlIHRoZSBkcm9wZG93biBjb250YWluZXJcbiAgICAgKi9cbiAgICBwcml2YXRlIGRyb3Bkb3duQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8RHJvcGRvd25Db21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiAgTWluaW11bSBpbnB1dCBsZW5ndGggKG51bWJlciBvZiBjaGFycylcbiAgICAgKiAgU2VlIGxlbmd0aCBhdHRyaWJ1dGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG1pbkxlbmd0aCA9IDU7XG5cbiAgICAvKipcbiAgICAgKiBTaXplIG9mIHRoZSBpbnB1dCAobnVtYmVyIG9mIGNoYXJzKVxuICAgICAqIE1hdGNoIHRoZSBpbnB1dC5zaXplIGF0dHJpYnV0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBsZW5ndGggPSB0aGlzLm1pbkxlbmd0aDtcblxuICAgIC8qKlxuICAgICAqIEZsYWcsIHRoYXQsIGlmIG1hcmtlZCBhcyB5ZXMsIHByZXZlbnRzIHRoZSBvcGVuaW5nIG9mIHRoZSBkcm9wZG93blxuICAgICAqIElzIHVzZWQgdG8gcHJldmVudCBkcm9wZG93biBvcGVuaW5nIHdoZW4gbmF0dXJhbC1zZWFyY2ggdGFrZXMgdGhlIGZvY3VzIGZyb20gcGFyZW50IGNvbnRleHQgKGxpa2Ugb24gbW9kYWwgb3BlbmluZylcbiAgICAgKi9cbiAgICBwcml2YXRlIG5ldXRyYWxpemVEcm9wZG93bk9wZW5pbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBtYW5hZ2VtZW50IGZvciB0YWtpbmcgdGhlIGZvY3VzIGZyb20gcGFyZW50IGNvbnRleHRcbiAgICAgKiBXaGVuIGZvY3VzaW5nIG1hbnVhbGx5IG9uIHRoZSA8aW5wdXQ+LCBhIGRyb3Bkb3duIGlzIG9wZW5lZFxuICAgICAqIEJ1dCB3aGVuIHRoZSBmb2N1cyBpcyBnaXZlbiBmcm9tIGFuZ3VsYXIgaW4gYSBwYXJlbnQgY29udGV4dCAobGlrZSBhIGRpYWxvZykgdGhlIGRyb3Bkb3duIHdvdWxkIG9wZW4gYW5kIHdlIGRvbid0IHdhbnQgaXQuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICAgIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZXV0cmFsaXplRHJvcGRvd25PcGVuaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMubmV1dHJhbGl6ZURyb3Bkb3duT3BlbmluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkcm9wZG93blNlcnZpY2U6IE5hdHVyYWxEcm9wZG93blNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bigpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZHJvcGRvd25SZWYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1DdHJsLnZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25SZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gJGxvY2FsaXplYFJlY2hlcmNoZWA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwbGFjZWhvbGRlclNpemUgPSAodGhpcy5mYWNldCA/IHRoaXMuZmFjZXQuZGlzcGxheS5sZW5ndGggOiB0aGlzLnBsYWNlaG9sZGVyLmxlbmd0aCkgKiAwLjY2O1xuICAgICAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubWluTGVuZ3RoLCBNYXRoLmNlaWwocGxhY2Vob2xkZXJTaXplKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5mYWNldHMgJiYgdGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbGVhcigpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZhY2V0cyAmJiB0aGlzLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5mYWNldCA9IGdldEZhY2V0RnJvbVNlbGVjdGlvbih0aGlzLmZhY2V0cywgdGhpcy5zZWxlY3Rpb24pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkcm9wZG93bkNvbXBvbmVudCA9IHRoaXMuY3JlYXRlQ29tcG9uZW50KHRoaXMuZmFjZXQgYXMgRHJvcGRvd25GYWNldDxGYWNldFNlbGVjdG9yQ29uZmlndXJhdGlvbj4pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQ3RybC5zZXRWYWxpZGF0b3JzKFtpc0NvbXBvbmVudFZhbGlkKGRyb3Bkb3duQ29tcG9uZW50KV0pO1xuICAgICAgICAgICAgICAgIGRyb3Bkb3duQ29tcG9uZW50LnJlbmRlcmVkVmFsdWUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ3RybC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNGbGFnKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbHVlKCcnKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gJiZcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5maWVsZCA9PT0gdGhpcy5zZWFyY2hGaWVsZE5hbWUgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5jb25kaXRpb24ubGlrZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgLy8gZ2xvYmFsIHNlYXJjaCBtb2RlXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQ3RybC5zZXRWYWx1ZSgnJyArIHRoaXMuc2VsZWN0aW9uLmNvbmRpdGlvbi5saWtlLnZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgY29tcG9uZW50IGlzIGludmFsaWQgKG5vIGZhY2V0IGFuZCBub3QgYSBnbG9iYWwgc2VhcmNoKSwgY2xlYXIgZnJvbSByZXN1bHQgYW5kIGRlc3Ryb3kgY29tcG9uZW50XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNsZWFyKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNlYXJjaChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmZvcm1DdHJsLnZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZvcm1DdHJsLnZhbGlkICYmIHRoaXMuZm9ybUN0cmwuZGlydHkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5nZXRTZWxlY3Rpb24oe2xpa2U6IHt2YWx1ZTogdGhpcy5mb3JtQ3RybC52YWx1ZX19KSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmFjZXQgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuZm9ybUN0cmwuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIHRoaXMuY2xlYXJlZC5lbWl0KHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuRHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duUmVmIHx8IHRoaXMubmV1dHJhbGl6ZURyb3Bkb3duT3BlbmluZykge1xuICAgICAgICAgICAgLy8gUHJldmVudCB0byBvcGVuIG11bHRpcGxlIGRyb3Bkb3ducy5cbiAgICAgICAgICAgIC8vIEhhcHBlbnMgYXMgd2Ugb3BlbiBvbiBcImZvY3VzXCIsIGFuZCBhbHQrdGFiIHJlLWFjdGl2YXRlIGZvY3VzIG9uIGFuIGVsZW1lbnQgdGhhdCBhbHJlYWR5IGhhZFxuICAgICAgICAgICAgLy8gZm9jdXMgd2hlbiBsZWF2aW5nIHdpbmRvdyB3aXRoIGFub3RoZXIgYWx0K3RhYlxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYXVuY2hSaXBwbGUoKTtcblxuICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBmYWNldCBhbmQgbm8gc3RyaW5nIHR5cGVkLCBzaG93IHBhbmVsIHRvIHNlbGVjdCB0aGUgZmFjZXRcbiAgICAgICAgaWYgKCF0aGlzLmZhY2V0ICYmICF0aGlzLmZvcm1DdHJsLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5GYWNldFNlbGVjdG9yRHJvcGRvd24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIGEgZmFjZXQgaXMgc2VsZWN0ZWQsIG9wZW4gc3BlY2lmaWMgY29tcG9uZW50IGRyb3Bkb3duXG4gICAgICAgICAgICB0aGlzLm9wZW5UeXBlRHJvcGRvd24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc0Ryb3Bkb3duKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5mYWNldCAmJiAodGhpcy5mYWNldCBhcyBEcm9wZG93bkZhY2V0PHVua25vd24+KS5jb21wb25lbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0ZsYWcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLmZhY2V0ICYmICh0aGlzLmZhY2V0IGFzIEZsYWdGYWNldCkuY29uZGl0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNvbXBvbmVudChmYWNldDogRHJvcGRvd25GYWNldDx1bmtub3duPik6IERyb3Bkb3duQ29tcG9uZW50IHtcbiAgICAgICAgLy8gQWx3YXlzIGRlc3Ryb3kgYW5kIHJlY3JlYXRlIGNvbXBvbmVudFxuICAgICAgICAvLyBUb2RvIDogdGVzdCBpZiBmYWNldCBoYXMgY2hhbmdlZCwgaWYgbm90IHJlLXVzZSB0aGUgY29tcG9uZW50XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IHRoaXMuc2VsZWN0aW9uID8gKHRoaXMuc2VsZWN0aW9uLmNvbmRpdGlvbiBhcyBGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IGRhdGE6IE5hdHVyYWxEcm9wZG93bkRhdGEgPSB7XG4gICAgICAgICAgICBjb25kaXRpb246IGNvbmRpdGlvbixcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb246IGZhY2V0LmNvbmZpZ3VyYXRpb24sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yKHRoaXMuY3JlYXRlUHJvdmlkZXJzKGRhdGEpLCB0aGlzLmluamVjdG9yKTtcbiAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZiA9IGNyZWF0ZUNvbXBvbmVudChmYWNldC5jb21wb25lbnQsIHtcbiAgICAgICAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IGluamVjdG9yLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVByb3ZpZGVycyhkYXRhOiBOYXR1cmFsRHJvcGRvd25EYXRhKTogU3RhdGljUHJvdmlkZXJbXSB7XG4gICAgICAgIC8vIEN1c3RvbWl6ZSBpbmplY3RvciB0byBhbGxvdyBkYXRhIGFuZCBkcm9wZG93biByZWZlcmVuY2UgaW5qZWN0aW9uIGluIGNvbXBvbmVudFxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb3ZpZGU6IE5hdHVyYWxEcm9wZG93blJlZixcbiAgICAgICAgICAgICAgICB1c2VWYWx1ZTogbnVsbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogTkFUVVJBTF9EUk9QRE9XTl9EQVRBLFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBkYXRhLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxhdW5jaFJpcHBsZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmlwcGxlUmVmID0gdGhpcy5yaXBwbGUubGF1bmNoKHtcbiAgICAgICAgICAgIHBlcnNpc3RlbnQ6IHRydWUsXG4gICAgICAgICAgICBjZW50ZXJlZDogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmlwcGxlUmVmLmZhZGVPdXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5GYWNldFNlbGVjdG9yRHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5mYWNldHMgfHwgKHRoaXMuZmFjZXRzICYmICF0aGlzLmZhY2V0cy5sZW5ndGgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhOiBOYXR1cmFsRHJvcGRvd25EYXRhPEZhY2V0U2VsZWN0b3JDb25maWd1cmF0aW9uPiA9IHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjoge30sXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICAgICAgZmFjZXRzOiB0aGlzLmZhY2V0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaW5qZWN0b3JUb2tlbnMgPSB0aGlzLmNyZWF0ZVByb3ZpZGVycyhkYXRhKTtcbiAgICAgICAgdGhpcy5kcm9wZG93blJlZiA9IHRoaXMuZHJvcGRvd25TZXJ2aWNlLm9wZW4oRmFjZXRTZWxlY3RvckNvbXBvbmVudCwgdGhpcy5lbGVtZW50LCBpbmplY3RvclRva2VucywgZmFsc2UpO1xuICAgICAgICB0aGlzLmRyb3Bkb3duUmVmLmNsb3NlZC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25SZWYgPSBudWxsO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5mYWNldCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEZhY2V0KHJlc3VsdC5mYWNldCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQuY29uZGl0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlblR5cGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRHJvcGRvd24oKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZHJvcGRvd25GYWNldCA9IHRoaXMuZmFjZXQgYXMgRHJvcGRvd25GYWNldDx1bmtub3duPjtcblxuICAgICAgICBjb25zdCBkYXRhOiBOYXR1cmFsRHJvcGRvd25EYXRhID0ge1xuICAgICAgICAgICAgY29uZGl0aW9uOiB0aGlzLnNlbGVjdGlvbiA/IHRoaXMuc2VsZWN0aW9uLmNvbmRpdGlvbiA6IG51bGwsXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uOiBkcm9wZG93bkZhY2V0LmNvbmZpZ3VyYXRpb24sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaW5qZWN0b3JUb2tlbnMgPSB0aGlzLmNyZWF0ZVByb3ZpZGVycyhkYXRhKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gZHJvcGRvd25GYWNldC5jb21wb25lbnQ7XG4gICAgICAgIHRoaXMuZHJvcGRvd25SZWYgPSB0aGlzLmRyb3Bkb3duU2VydmljZS5vcGVuKFxuICAgICAgICAgICAgY29tcG9uZW50LFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LFxuICAgICAgICAgICAgaW5qZWN0b3JUb2tlbnMsXG4gICAgICAgICAgICBkcm9wZG93bkZhY2V0LnNob3dWYWxpZGF0ZUJ1dHRvbiAhPT0gdW5kZWZpbmVkID8gZHJvcGRvd25GYWNldC5zaG93VmFsaWRhdGVCdXR0b24gOiB0cnVlLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZHJvcGRvd25SZWYuY2xvc2VkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93blJlZiA9IG51bGw7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RmFjZXQoZmFjZXQ6IEZhY2V0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmFjZXQgPSBmYWNldDtcblxuICAgICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duKCkpIHtcbiAgICAgICAgICAgIHRoaXMub3BlblR5cGVEcm9wZG93bigpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNGbGFnKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoe1xuICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogKGZhY2V0IGFzIEZsYWdGYWNldCkuY29uZGl0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFsdWUocmVzdWx0OiBEcm9wZG93blJlc3VsdCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mYWNldCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLmdldFNlbGVjdGlvbihyZXN1bHQuY29uZGl0aW9uKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNlbGVjdGlvbihjb25kaXRpb246IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb25bJ2NvbmRpdGlvbiddKTogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbjogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbiA9IHtcbiAgICAgICAgICAgIGZpZWxkOiB0aGlzLmZhY2V0ID8gdGhpcy5mYWNldC5maWVsZCA6IHRoaXMuc2VhcmNoRmllbGROYW1lLFxuICAgICAgICAgICAgY29uZGl0aW9uOiBjb25kaXRpb24sXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMuZmFjZXQgJiYgdGhpcy5mYWNldC5uYW1lKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24ubmFtZSA9IHRoaXMuZmFjZXQubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3Rpb247XG4gICAgfVxufVxuIiwiPCEtLSBjbGljayBjb25kaXRpb24gc2hvdWxkIG1hdGNoIHRvIGFsbG93IGNsaWNrIGFjdGlvbiBvbmx5IHdoZW4gbm8gb3RoZXIgYnV0dG9uIGlzIHZpc2libGUgLS0+XG48bWF0LWZvcm0tZmllbGQgI2ZpZWxkIG1hdFJpcHBsZSAoY2xpY2spPVwiIXNlbGVjdGlvbiAmJiAhKGZhY2V0ICYmICFzZWxlY3Rpb24pID8gb3BlbkRyb3Bkb3duKCkgOiBudWxsXCI+XG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cImZhY2V0XCI+e3sgZmFjZXQuZGlzcGxheSB9fTwvbWF0LWxhYmVsPlxuICAgIDxtYXQtbGFiZWwgKm5nSWY9XCIhZmFjZXRcIj57eyBwbGFjZWhvbGRlciB9fTwvbWF0LWxhYmVsPlxuXG4gICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICAoYmx1cik9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgW2F0dHIuc2l6ZV09XCJsZW5ndGhcIlxuICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiZXJyb3JNYXRjaGVyXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1DdHJsXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cIihpc0Ryb3Bkb3duKCkgJiYgISFzZWxlY3Rpb24pIHx8IGlzRmxhZygpXCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgIC8+XG5cbiAgICA8IS0tIFRPRE8gOiByZXBsYWNlIHRoaXMgdm9pZCBidXR0b24gLS0+XG4gICAgPGRpdiAqbmdJZj1cIiFmYWNldCAmJiAhc2VsZWN0aW9uXCIgY2xhc3M9XCJzZWFyY2gtaWNvblwiIG1hdFByZWZpeD5cbiAgICAgICAgPG5hdHVyYWwtaWNvbiBuYW1lPVwic2VhcmNoXCI+PC9uYXR1cmFsLWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhcigpXCIgKm5nSWY9XCJzZWxlY3Rpb25cIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4PlxuICAgICAgICA8bmF0dXJhbC1pY29uIG5hbWU9XCJjbG9zZVwiPjwvbmF0dXJhbC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXIoKVwiICpuZ0lmPVwiZmFjZXQgJiYgIXNlbGVjdGlvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXg+XG4gICAgICAgIDxuYXR1cmFsLWljb24gbmFtZT1cInVuZG9cIj48L25hdHVyYWwtaWNvbj5cbiAgICA8L2J1dHRvbj5cbjwvbWF0LWZvcm0tZmllbGQ+XG48ZGl2IGNsYXNzPVwiaGlkZVwiPnt7IGZvcm1DdHJsLnZhbHVlID8gZm9ybUN0cmwudmFsdWUgOiBmYWNldCA/IGZhY2V0LmRpc3BsYXkgOiBwbGFjZWhvbGRlciB9fTwvZGl2PlxuIl19
|
|
@@ -2,7 +2,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
|
2
2
|
import { deepClone } from '../classes/utils';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "@angular/material/button";
|
|
5
|
+
import * as i2 from "@angular/material/legacy-button";
|
|
6
6
|
import * as i3 from "@angular/material/divider";
|
|
7
7
|
import * as i4 from "../../icon/icon.component";
|
|
8
8
|
import * as i5 from "../group/group.component";
|
|
@@ -60,9 +60,9 @@ export class NaturalSearchComponent {
|
|
|
60
60
|
this.selectionChange.emit([[]]);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
NaturalSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
64
|
-
NaturalSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
65
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
63
|
+
NaturalSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
64
|
+
NaturalSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NaturalSearchComponent, selector: "natural-search", inputs: { placeholder: "placeholder", facets: "facets", multipleGroups: "multipleGroups", selections: "selections" }, outputs: { selectionChange: "selectionChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"natural-search\">\n <div class=\"groupsWrapper\">\n <ng-container *ngFor=\"let groupSelections of innerSelections; let i = index; let last = last\">\n <div class=\"groupWrapper\">\n <natural-group\n (selectionChange)=\"updateGroup($event, i)\"\n [facets]=\"facets\"\n [placeholder]=\"placeholder\"\n [selections]=\"groupSelections\"\n ></natural-group>\n\n <div class=\"endOfRowButton inGroup\">\n <button (click)=\"removeGroup(i)\" *ngIf=\"innerSelections.length > 1\" mat-icon-button>\n <natural-icon name=\"remove\"></natural-icon>\n </button>\n </div>\n\n <div class=\"endOfRowButton inGroup\">\n <button (click)=\"addGroup()\" *ngIf=\"last && multipleGroups\" mat-icon-button>\n <natural-icon name=\"add\"></natural-icon>\n </button>\n </div>\n\n <!-- Spaceholder to keep fields alignment (prevent to push until end of line)--->\n <div *ngIf=\"!last\" class=\"spacer\"></div>\n </div>\n <mat-divider *ngIf=\"!last\"></mat-divider>\n </ng-container>\n </div>\n\n <div class=\"endOfRowButton outOfGroup\">\n <button (click)=\"clear()\" mat-icon-button>\n <natural-icon name=\"close\"></natural-icon>\n </button>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host .natural-search{display:flex;flex-direction:row;align-items:flex-end}:host .natural-search .groupsWrapper{display:flex;flex-direction:column;flex:1;min-width:0}:host .natural-search .groupWrapper{display:flex;flex-direction:row;margin-bottom:10px;min-width:0}:host .natural-search .groupWrapper natural-group{flex:1;max-width:100%}:host .natural-search .groupWrapper:last-of-type{margin-bottom:0}:host .natural-search .groupWrapper .spacer{width:40px;height:40px}:host .natural-search .endOfRowButton{height:53px;display:flex;flex-direction:row;align-items:center;margin-bottom:10px}:host .natural-search mat-divider{margin:-10px 10px 10px 0}\n"], 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: "component", type: i2.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i4.NaturalIconComponent, selector: "natural-icon", inputs: ["label", "labelColor", "labelPosition", "name", "size"] }, { kind: "component", type: i5.NaturalGroupComponent, selector: "natural-group", inputs: ["placeholder", "facets", "selections"], outputs: ["selectionChange"] }] });
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalSearchComponent, decorators: [{
|
|
66
66
|
type: Component,
|
|
67
67
|
args: [{ selector: 'natural-search', template: "<div class=\"natural-search\">\n <div class=\"groupsWrapper\">\n <ng-container *ngFor=\"let groupSelections of innerSelections; let i = index; let last = last\">\n <div class=\"groupWrapper\">\n <natural-group\n (selectionChange)=\"updateGroup($event, i)\"\n [facets]=\"facets\"\n [placeholder]=\"placeholder\"\n [selections]=\"groupSelections\"\n ></natural-group>\n\n <div class=\"endOfRowButton inGroup\">\n <button (click)=\"removeGroup(i)\" *ngIf=\"innerSelections.length > 1\" mat-icon-button>\n <natural-icon name=\"remove\"></natural-icon>\n </button>\n </div>\n\n <div class=\"endOfRowButton inGroup\">\n <button (click)=\"addGroup()\" *ngIf=\"last && multipleGroups\" mat-icon-button>\n <natural-icon name=\"add\"></natural-icon>\n </button>\n </div>\n\n <!-- Spaceholder to keep fields alignment (prevent to push until end of line)--->\n <div *ngIf=\"!last\" class=\"spacer\"></div>\n </div>\n <mat-divider *ngIf=\"!last\"></mat-divider>\n </ng-container>\n </div>\n\n <div class=\"endOfRowButton outOfGroup\">\n <button (click)=\"clear()\" mat-icon-button>\n <natural-icon name=\"close\"></natural-icon>\n </button>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host .natural-search{display:flex;flex-direction:row;align-items:flex-end}:host .natural-search .groupsWrapper{display:flex;flex-direction:column;flex:1;min-width:0}:host .natural-search .groupWrapper{display:flex;flex-direction:row;margin-bottom:10px;min-width:0}:host .natural-search .groupWrapper natural-group{flex:1;max-width:100%}:host .natural-search .groupWrapper:last-of-type{margin-bottom:0}:host .natural-search .groupWrapper .spacer{width:40px;height:40px}:host .natural-search .endOfRowButton{height:53px;display:flex;flex-direction:row;align-items:center;margin-bottom:10px}:host .natural-search mat-divider{margin:-10px 10px 10px 0}\n"] }]
|
|
68
68
|
}], propDecorators: { placeholder: [{
|
|
@@ -3,12 +3,12 @@ import { PortalModule } from '@angular/cdk/portal';
|
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
4
|
import { NgModule } from '@angular/core';
|
|
5
5
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
6
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
6
|
+
import { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-button';
|
|
7
7
|
import { MatRippleModule } from '@angular/material/core';
|
|
8
|
-
import { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';
|
|
9
|
-
import { MatInputModule } from '@angular/material/input';
|
|
10
|
-
import { MatListModule } from '@angular/material/list';
|
|
11
|
-
import { MatMenuModule } from '@angular/material/menu';
|
|
8
|
+
import { MAT_LEGACY_FORM_FIELD_DEFAULT_OPTIONS as MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/legacy-form-field';
|
|
9
|
+
import { MatLegacyInputModule as MatInputModule } from '@angular/material/legacy-input';
|
|
10
|
+
import { MatLegacyListModule as MatListModule } from '@angular/material/legacy-list';
|
|
11
|
+
import { MatLegacyMenuModule as MatMenuModule } from '@angular/material/legacy-menu';
|
|
12
12
|
import { NaturalIconModule } from '../icon/icon.module';
|
|
13
13
|
import { NaturalDropdownContainerComponent } from './dropdown-container/dropdown-container.component';
|
|
14
14
|
import { FacetSelectorComponent } from './facet-selector/facet-selector.component';
|
|
@@ -18,8 +18,8 @@ import { NaturalSearchComponent } from './search/search.component';
|
|
|
18
18
|
import * as i0 from "@angular/core";
|
|
19
19
|
export class NaturalSearchModule {
|
|
20
20
|
}
|
|
21
|
-
NaturalSearchModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
22
|
-
NaturalSearchModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
21
|
+
NaturalSearchModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
22
|
+
NaturalSearchModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.2", ngImport: i0, type: NaturalSearchModule, declarations: [NaturalSearchComponent,
|
|
23
23
|
NaturalGroupComponent,
|
|
24
24
|
NaturalInputComponent,
|
|
25
25
|
NaturalDropdownContainerComponent,
|
|
@@ -33,7 +33,7 @@ NaturalSearchModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
|
|
|
33
33
|
OverlayModule,
|
|
34
34
|
MatListModule,
|
|
35
35
|
NaturalIconModule], exports: [NaturalSearchComponent] });
|
|
36
|
-
NaturalSearchModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
36
|
+
NaturalSearchModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalSearchModule, providers: [
|
|
37
37
|
{
|
|
38
38
|
provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,
|
|
39
39
|
useValue: { appearance: 'fill' },
|
|
@@ -48,7 +48,7 @@ NaturalSearchModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ver
|
|
|
48
48
|
OverlayModule,
|
|
49
49
|
MatListModule,
|
|
50
50
|
NaturalIconModule] });
|
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalSearchModule, decorators: [{
|
|
52
52
|
type: NgModule,
|
|
53
53
|
args: [{
|
|
54
54
|
declarations: [
|
|
@@ -79,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImpor
|
|
|
79
79
|
],
|
|
80
80
|
}]
|
|
81
81
|
}] });
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9zZWFyY2gubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFDLHFCQUFxQixJQUFJLGVBQWUsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMscUNBQXFDLElBQUksOEJBQThCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1SCxPQUFPLEVBQUMsb0JBQW9CLElBQUksY0FBYyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEYsT0FBTyxFQUFDLG1CQUFtQixJQUFJLGFBQWEsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxhQUFhLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUNwRyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7QUE4QmpFLE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQixpQkExQnhCLHNCQUFzQjtRQUN0QixxQkFBcUI7UUFDckIscUJBQXFCO1FBQ3JCLGlDQUFpQztRQUNqQyxzQkFBc0IsYUFJdEIsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2QsZUFBZTtRQUNmLGFBQWE7UUFDYixlQUFlO1FBQ2YsWUFBWTtRQUNaLGFBQWE7UUFDYixhQUFhO1FBQ2IsaUJBQWlCLGFBWFgsc0JBQXNCO2lIQW9CdkIsbUJBQW1CLGFBUGpCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsOEJBQThCO1lBQ3ZDLFFBQVEsRUFBRSxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7U0FDakM7S0FDSixZQWhCRyxZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCxlQUFlO1FBQ2YsYUFBYTtRQUNiLGVBQWU7UUFDZixZQUFZO1FBQ1osYUFBYTtRQUNiLGFBQWE7UUFDYixpQkFBaUI7MkZBU1osbUJBQW1CO2tCQTVCL0IsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUU7d0JBQ1Ysc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLHFCQUFxQjt3QkFDckIsaUNBQWlDO3dCQUNqQyxzQkFBc0I7cUJBQ3pCO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsaUJBQWlCO3FCQUNwQjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLDhCQUE4Qjs0QkFDdkMsUUFBUSxFQUFFLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzt5QkFDakM7cUJBQ0o7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge092ZXJsYXlNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7UG9ydGFsTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0TGVnYWN5QnV0dG9uTW9kdWxlIGFzIE1hdEJ1dHRvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWJ1dHRvbic7XG5pbXBvcnQge01hdFJpcHBsZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge01BVF9MRUdBQ1lfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMgYXMgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZm9ybS1maWVsZCc7XG5pbXBvcnQge01hdExlZ2FjeUlucHV0TW9kdWxlIGFzIE1hdElucHV0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktaW5wdXQnO1xuaW1wb3J0IHtNYXRMZWdhY3lMaXN0TW9kdWxlIGFzIE1hdExpc3RNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1saXN0JztcbmltcG9ydCB7TWF0TGVnYWN5TWVudU1vZHVsZSBhcyBNYXRNZW51TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktbWVudSc7XG5pbXBvcnQge05hdHVyYWxJY29uTW9kdWxlfSBmcm9tICcuLi9pY29uL2ljb24ubW9kdWxlJztcbmltcG9ydCB7TmF0dXJhbERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50fSBmcm9tICcuL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7RmFjZXRTZWxlY3RvckNvbXBvbmVudH0gZnJvbSAnLi9mYWNldC1zZWxlY3Rvci9mYWNldC1zZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHtOYXR1cmFsR3JvdXBDb21wb25lbnR9IGZyb20gJy4vZ3JvdXAvZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7TmF0dXJhbElucHV0Q29tcG9uZW50fSBmcm9tICcuL2lucHV0L2lucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQge05hdHVyYWxTZWFyY2hDb21wb25lbnR9IGZyb20gJy4vc2VhcmNoL3NlYXJjaC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBOYXR1cmFsU2VhcmNoQ29tcG9uZW50LFxuICAgICAgICBOYXR1cmFsR3JvdXBDb21wb25lbnQsXG4gICAgICAgIE5hdHVyYWxJbnB1dENvbXBvbmVudCxcbiAgICAgICAgTmF0dXJhbERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50LFxuICAgICAgICBGYWNldFNlbGVjdG9yQ29tcG9uZW50LFxuICAgIF0sXG4gICAgZXhwb3J0czogW05hdHVyYWxTZWFyY2hDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRNZW51TW9kdWxlLFxuICAgICAgICBNYXRSaXBwbGVNb2R1bGUsXG4gICAgICAgIFBvcnRhbE1vZHVsZSxcbiAgICAgICAgT3ZlcmxheU1vZHVsZSxcbiAgICAgICAgTWF0TGlzdE1vZHVsZSxcbiAgICAgICAgTmF0dXJhbEljb25Nb2R1bGUsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TLFxuICAgICAgICAgICAgdXNlVmFsdWU6IHthcHBlYXJhbmNlOiAnZmlsbCd9LFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxTZWFyY2hNb2R1bGUge31cbiJdfQ==
|
|
@@ -25,6 +25,16 @@ class ExternalFormControlMatcher extends ErrorStateMatcher {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
export class AbstractSelect extends NaturalAbstractController {
|
|
28
|
+
/**
|
|
29
|
+
* If the field is required
|
|
30
|
+
*/
|
|
31
|
+
set required(value) {
|
|
32
|
+
this._required = coerceBooleanProperty(value);
|
|
33
|
+
this.applyRequired();
|
|
34
|
+
}
|
|
35
|
+
get required() {
|
|
36
|
+
return !!this._required;
|
|
37
|
+
}
|
|
28
38
|
constructor(ngControl) {
|
|
29
39
|
super();
|
|
30
40
|
this.ngControl = ngControl;
|
|
@@ -62,16 +72,6 @@ export class AbstractSelect extends NaturalAbstractController {
|
|
|
62
72
|
}
|
|
63
73
|
this.matcher = new ExternalFormControlMatcher(this);
|
|
64
74
|
}
|
|
65
|
-
/**
|
|
66
|
-
* If the field is required
|
|
67
|
-
*/
|
|
68
|
-
set required(value) {
|
|
69
|
-
this._required = coerceBooleanProperty(value);
|
|
70
|
-
this.applyRequired();
|
|
71
|
-
}
|
|
72
|
-
get required() {
|
|
73
|
-
return !!this._required;
|
|
74
|
-
}
|
|
75
75
|
ngDoCheck() {
|
|
76
76
|
if (this.ngControl) {
|
|
77
77
|
this.applyRequired();
|
|
@@ -152,9 +152,9 @@ export class AbstractSelect extends NaturalAbstractController {
|
|
|
152
152
|
this.internalCtrl.updateValueAndValidity();
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
|
-
AbstractSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
156
|
-
AbstractSelect.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
157
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
155
|
+
AbstractSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: AbstractSelect, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
156
|
+
AbstractSelect.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: AbstractSelect, inputs: { placeholder: "placeholder", floatPlaceholder: "floatPlaceholder", required: "required", navigateTo: "navigateTo", clearLabel: "clearLabel", showIcon: "showIcon", icon: "icon", displayWith: "displayWith", disabled: "disabled" }, outputs: { selectionChange: "selectionChange", blur: "blur" }, usesInheritance: true, ngImport: i0 });
|
|
157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: AbstractSelect, decorators: [{
|
|
158
158
|
type: Directive
|
|
159
159
|
}], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
|
|
160
160
|
type: Optional
|
|
@@ -183,4 +183,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImpor
|
|
|
183
183
|
}], disabled: [{
|
|
184
184
|
type: Input
|
|
185
185
|
}] } });
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdC9hYnN0cmFjdC1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBQyxTQUFTLEVBQVcsWUFBWSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUdILFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsZUFBZSxFQUVmLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRXpELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7QUFFNUU7Ozs7O0dBS0c7QUFDSCxNQUFNLDBCQUFpQyxTQUFRLGlCQUFpQjtJQUM1RCxZQUFvQyxTQUErQjtRQUMvRCxLQUFLLEVBQUUsQ0FBQztRQUR3QixjQUFTLEdBQVQsU0FBUyxDQUFzQjtJQUVuRSxDQUFDO0lBRWUsWUFBWTtRQUN4QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFDdEYsSUFBSSxZQUFZLEVBQUU7WUFDZCxPQUFPLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2xGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKO0FBR0QsTUFBTSxPQUFnQixjQUNs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QUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3hEO2FBQU07WUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3ZDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQy9DLENBQUM7OzJHQWxNaUIsY0FBYzsrRkFBZCxjQUFjOzJGQUFkLGNBQWM7a0JBRG5DLFNBQVM7OzBCQXFGYyxRQUFROzswQkFBSSxJQUFJOzRDQWhGcEIsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBTUssUUFBUTtzQkFEbEIsS0FBSztnQkFlVSxVQUFVO3NCQUF6QixLQUFLO2dCQUtVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBS1UsUUFBUTtzQkFBdkIsS0FBSztnQkFLVSxJQUFJO3NCQUFuQixLQUFLO2dCQUtVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBS29CLGVBQWU7c0JBQXhDLE1BQU07Z0JBTW1CLElBQUk7c0JBQTdCLE1BQU07Z0JBMkRJLFFBQVE7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7RGlyZWN0aXZlLCBEb0NoZWNrLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2VsZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0Q29udHJvbCxcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3JtQ29udHJvbERpcmVjdGl2ZSxcbiAgICBGb3JtQ29udHJvbE5hbWUsXG4gICAgTmdDb250cm9sLFxuICAgIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RXJyb3JTdGF0ZU1hdGNoZXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtGbG9hdExhYmVsVHlwZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdENvbnRyb2xsZXJ9IGZyb20gJy4uLy4uL2NsYXNzZXMvYWJzdHJhY3QtY29udHJvbGxlcic7XG5cbi8qKlxuICogVGhpcyB3aWxsIGNvbXBsZXRlbHkgaWdub3JlIGludGVybmFsIGZvcm1Db250cm9sIGFuZCBpbnN0ZWFkIHVzZSB0aGUgb25lIGZyb20gdGhlIGNvbXBvbmVudFxuICogd2hpY2ggY29tZXMgZnJvbSBvdXRzaWRlIG9mIHRoaXMgY29tcG9uZW50LiBUaGlzIGJhc2ljYWxseSBhbGxvd3MgdXMgdG8gKipub3QqKiBkZXBlbmQgb25cbiAqIHRvdWNoZWQgc3RhdHVzIHByb3BhZ2F0aW9uIGJldHdlZW4gb3V0c2lkZSBhbmQgaW5zaWRlIHdvcmxkLCBhbmQgdGh1cyBnZXQgcmlkIG9mIG91ciBsZWdhY3lcbiAqIGN1c3RvbSBGb3JtQ29udHJvbCBjbGFzcyAoXCJOYXR1cmFsRm9ybUNvbnRyb2xcIikuXG4gKi9cbmNsYXNzIEV4dGVybmFsRm9ybUNvbnRyb2xNYXRjaGVyPFQsIEk+IGV4dGVuZHMgRXJyb3JTdGF0ZU1hdGNoZXIge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudDogQWJzdHJhY3RTZWxlY3Q8VCwgST4pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgaXNFcnJvclN0YXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBleHRlcm5hbEN0cmwgPSB0aGlzLmNvbXBvbmVudC5uZ0NvbnRyb2w/LmNvbnRyb2wgfHwgdGhpcy5jb21wb25lbnQuaW50ZXJuYWxDdHJsO1xuICAgICAgICBpZiAoZXh0ZXJuYWxDdHJsKSB7XG4gICAgICAgICAgICByZXR1cm4gISEoZXh0ZXJuYWxDdHJsLmVycm9ycyAmJiAoZXh0ZXJuYWxDdHJsLnRvdWNoZWQgfHwgZXh0ZXJuYWxDdHJsLmRpcnR5KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFNlbGVjdDxWLCBJPlxuICAgIGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0Q29udHJvbGxlclxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEb0NoZWNrXG57XG4gICAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmbG9hdFBsYWNlaG9sZGVyOiBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcblxuICAgIC8qKlxuICAgICAqIElmIHRoZSBmaWVsZCBpcyByZXF1aXJlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuYXBwbHlSZXF1aXJlZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX3JlcXVpcmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQWRkIGEgc3VmZml4IGJ1dHRvbiB0aGF0IGlzIGEgbGluayB0byBnaXZlbiBkZXN0aW5hdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBuYXZpZ2F0ZVRvPzogYW55W10gfCBzdHJpbmcgfCBudWxsO1xuXG4gICAgLyoqXG4gICAgICogSWYgcHJvdmlkZWQgY2F1c2UgYSBuZXcgY2xlYXIgYnV0dG9uIHRvIGFwcGVhclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjbGVhckxhYmVsPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBzaG93IHRoZSBzZWFyY2ggaWNvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93SWNvbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBJY29uIG5hbWVcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaWNvbiA9ICdzZWFyY2gnO1xuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdG8gY3VzdG9taXplIHRoZSByZW5kZXJpbmcgb2YgdGhlIHNlbGVjdGVkIGl0ZW0gYXMgdGV4dCBpbiBpbnB1dFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5V2l0aD86IChpdGVtOiBWIHwgbnVsbCkgPT4gc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRW1pdCB0aGUgc2VsZWN0ZWQgdmFsdWUgd2hlbmV2ZXIgaXQgY2hhbmdlc1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxWIHwgbnVsbD4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gaW50ZXJuYWwgaW5wdXQgaXMgYmx1cnJlZFxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgYmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIENvbnRhaW5zIGludGVybmFsIHJlcHJlc2VudGF0aW9uIGZvciBjdXJyZW50IHNlbGVjdGlvbi5cbiAgICAgKlxuICAgICAqIEl0IGlzICoqbm90KiogbmVjZXNzYXJpbHkgYFYgfCBudWxsYC5cbiAgICAgKlxuICAgICAqIC0gTmF0dXJhbFNlbGVjdENvbXBvbmVudDogYHN0cmluZyB8IFYgfCBudWxsYC4gV2UgYWxsb3cgYHN0cmluZ2BcbiAgICAgKiAgIG9ubHkgd2hlbiBgb3B0aW9uUmVxdWlyZWRgIGlzIGZhbHNlLCBzbyBtb3N0IG9mIHRoZSB0aW1lIGl0IGlzIGBWIHwgbnVsbGAuXG4gICAgICogLSBOYXR1cmFsU2VsZWN0SGllcmFyY2hpY0NvbXBvbmVudDogYHN0cmluZyB8IG51bGxgLlxuICAgICAqIC0gTmF0dXJhbFNlbGVjdEVudW1Db21wb25lbnQ6IGBWIHwgbnVsbGAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGludGVybmFsQ3RybCA9IG5ldyBGb3JtQ29udHJvbDxJIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKipcbiAgICAgKiBJbnRlcmZhY2Ugd2l0aCBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAgICAqIE5vdGlmaWVzIHBhcmVudCBtb2RlbCAvIGZvcm0gY29udHJvbGxlclxuICAgICAqL1xuICAgIHB1YmxpYyBvbkNoYW5nZT86IChpdGVtOiBWIHwgbnVsbCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEludGVyZmFjZSB3aXRoIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAgICogTm90aWZpZXMgcGFyZW50IG1vZGVsIC8gZm9ybSBjb250cm9sbGVyXG4gICAgICovXG4gICAgcHVibGljIG9uVG91Y2hlZD86ICgpID0+IHZvaWQ7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgbWF0Y2hlcjogRXh0ZXJuYWxGb3JtQ29udHJvbE1hdGNoZXI8ViwgST47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgcmVhZG9ubHkgbmdDb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWF0Y2hlciA9IG5ldyBFeHRlcm5hbEZvcm1Db250cm9sTWF0Y2hlcih0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlSZXF1aXJlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IEkgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxDdHJsLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzUmVhY3RpdmUgPSB0aGlzLm5nQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sRGlyZWN0aXZlIHx8IHRoaXMubmdDb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2xOYW1lO1xuICAgICAgICBpZiAoaXNSZWFjdGl2ZSAmJiB0eXBlb2YgdGhpcy5fcmVxdWlyZWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJzxuYXR1cmFsLXNlbGVjdC0qPiBzaG91bGQgbm90IGJlIHVzZWQgYXMgUmVhY3RpdmVGb3JtIGFuZCB3aXRoIHRoZSBbcmVxdWlyZWRdIGF0dHJpYnV0ZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgdmFsdWUgY2FuIGJlIGNoYW5nZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgZGlzYWJsZWQgPyB0aGlzLmludGVybmFsQ3RybC5kaXNhYmxlKCkgOiB0aGlzLmludGVybmFsQ3RybC5lbmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKGl0ZW06IFYgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGlzcGxheUZuKCk6IChpdGVtOiBWIHwgbnVsbCkgPT4gc3RyaW5nO1xuXG4gICAgcHVibGljIGNsZWFyKGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgLy8gRW1wdHkgaW5wdXRcbiAgICAgICAgdGhpcy5pbnRlcm5hbEN0cmwuc2V0VmFsdWUobnVsbCwge2VtaXRFdmVudDogZW1pdEV2ZW50fSk7XG5cbiAgICAgICAgLy8gcHJvcGFnYXRlVmFsdWUgY2hhbmdlXG4gICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWUobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcHJvcGFnYXRlVmFsdWUodmFsdWU6IFYgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIC8vIGJlZm9yZSBzZWxlY3Rpb25DaGFuZ2UgdG8gYWxsb3cgZm9ybUNvbnRyb2wgdG8gdXBkYXRlIGJlZm9yZSBjaGFuZ2UgaXMgZWZmZWN0aXZlbHkgZW1pdHRlZFxuICAgICAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93Q2xlYXJCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsQ3RybD8uZW5hYmxlZCAmJiAhIXRoaXMuY2xlYXJMYWJlbCAmJiAhIXRoaXMuaW50ZXJuYWxDdHJsLnZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b3VjaCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub25Ub3VjaGVkKSB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhc1JlcXVpcmVkRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbD8uY29udHJvbCA/IHRoaXMubmdDb250cm9sPy5jb250cm9sIDogdGhpcy5pbnRlcm5hbEN0cmw7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwbHkgVmFsaWRhdG9ycy5yZXF1aXJlZCBvbiB0aGUgaW50ZXJuYWwgZm9ybSwgYmFzZWQgb24gbmdDb250cm9sIG9yIFtyZXF1aXJlZF0gYXR0cmlidXRlLCBnaXZpbmcgcHJpb3JpdHkgdG8gYXR0cmlidXRlLlxuICAgICAqL1xuICAgIHByaXZhdGUgYXBwbHlSZXF1aXJlZCgpOiB2b2lkIHtcbiAgICAgICAgLy8gUmVxdWlyZWQgc3RhdHVzIG9uIHBhcmVudCB2YWxpZGF0b3JcbiAgICAgICAgY29uc3Qgb3V0ZXJSZXF1aXJlZFN0YXR1cyA9IHRoaXM/Lm5nQ29udHJvbD8uY29udHJvbD8udmFsaWRhdG9yPy4oe30gYXMgQWJzdHJhY3RDb250cm9sKT8ucmVxdWlyZWQ7XG5cbiAgICAgICAgLy8gV2FudGVkIHJlcXVpcmVkIHN0YXR1cywgZ2l2aW5nIHByaW9yaXR5IHRvIHRlbXBsYXRlXG4gICAgICAgIGNvbnN0IG5ld1JlcXVpcmVkU3RhdHVzID0gdHlwZW9mIHRoaXMuX3JlcXVpcmVkICE9PSAndW5kZWZpbmVkJyA/IHRoaXMuX3JlcXVpcmVkIDogb3V0ZXJSZXF1aXJlZFN0YXR1cztcblxuICAgICAgICAvLyBBY3R1YWwgaW50ZXJuYWwgdmFsaWRhdGlvbiBzdGF0dXNcbiAgICAgICAgY29uc3QgY3VycmVudFJlcXVpcmVkU3RhdHVzID0gdGhpcy5pbnRlcm5hbEN0cmw/LnZhbGlkYXRvcj8uKHt9IGFzIEFic3RyYWN0Q29udHJvbCk/LnJlcXVpcmVkO1xuXG4gICAgICAgIC8vIElmIHdhbnRlZCBzdGF0dXMgaXMgc2ltaWxhciB0byBhY3R1YWwgc3RhdHVzLCBzdG9wIGV2ZXJ5dGhpbmdcbiAgICAgICAgaWYgKGN1cnJlbnRSZXF1aXJlZFN0YXR1cyA9PT0gbmV3UmVxdWlyZWRTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFwcGx5IG9ubHkgaWYgY2hhbmdlZFxuICAgICAgICBpZiAobmV3UmVxdWlyZWRTdGF0dXMpIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxDdHJsLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmludGVybmFsQ3RybC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW50ZXJuYWxDdHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG59XG4iXX0=
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdC9hYnN0cmFjdC1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBQyxTQUFTLEVBQVcsWUFBWSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUdILFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsZUFBZSxFQUVmLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRXpELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7QUFFNUU7Ozs7O0dBS0c7QUFDSCxNQUFNLDBCQUFpQyxTQUFRLGlCQUFpQjtJQUM1RCxZQUFvQyxTQUErQjtRQUMvRCxLQUFLLEVBQUUsQ0FBQztRQUR3QixjQUFTLEdBQVQsU0FBUyxDQUFzQjtJQUVuRSxDQUFDO0lBRWUsWUFBWTtRQUN4QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFDdEYsSUFBSSxZQUFZLEVBQUU7WUFDZCxPQUFPLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2xGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKO0FBR0QsTUFBTSxPQUFnQixjQUNs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QyxZQUFZLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4RDthQUFNO1lBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN2QztRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUMvQyxDQUFDOzsyR0FsTWlCLGNBQWM7K0ZBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQURuQyxTQUFTOzswQkFxRmMsUUFBUTs7MEJBQUksSUFBSTs0Q0FoRnBCLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQU1LLFFBQVE7c0JBRGxCLEtBQUs7Z0JBZVUsVUFBVTtzQkFBekIsS0FBSztnQkFLVSxVQUFVO3NCQUF6QixLQUFLO2dCQUtVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBS1UsSUFBSTtzQkFBbkIsS0FBSztnQkFLVSxXQUFXO3NCQUExQixLQUFLO2dCQUtvQixlQUFlO3NCQUF4QyxNQUFNO2dCQU1tQixJQUFJO3NCQUE3QixNQUFNO2dCQTJESSxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge0RpcmVjdGl2ZSwgRG9DaGVjaywgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNlbGZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2wsXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybUNvbnRyb2xEaXJlY3RpdmUsXG4gICAgRm9ybUNvbnRyb2xOYW1lLFxuICAgIE5nQ29udHJvbCxcbiAgICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Vycm9yU3RhdGVNYXRjaGVyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7TGVnYWN5RmxvYXRMYWJlbFR5cGUgYXMgRmxvYXRMYWJlbFR5cGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1mb3JtLWZpZWxkJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0Q29udHJvbGxlcn0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9hYnN0cmFjdC1jb250cm9sbGVyJztcblxuLyoqXG4gKiBUaGlzIHdpbGwgY29tcGxldGVseSBpZ25vcmUgaW50ZXJuYWwgZm9ybUNvbnRyb2wgYW5kIGluc3RlYWQgdXNlIHRoZSBvbmUgZnJvbSB0aGUgY29tcG9uZW50XG4gKiB3aGljaCBjb21lcyBmcm9tIG91dHNpZGUgb2YgdGhpcyBjb21wb25lbnQuIFRoaXMgYmFzaWNhbGx5IGFsbG93cyB1cyB0byAqKm5vdCoqIGRlcGVuZCBvblxuICogdG91Y2hlZCBzdGF0dXMgcHJvcGFnYXRpb24gYmV0d2VlbiBvdXRzaWRlIGFuZCBpbnNpZGUgd29ybGQsIGFuZCB0aHVzIGdldCByaWQgb2Ygb3VyIGxlZ2FjeVxuICogY3VzdG9tIEZvcm1Db250cm9sIGNsYXNzIChcIk5hdHVyYWxGb3JtQ29udHJvbFwiKS5cbiAqL1xuY2xhc3MgRXh0ZXJuYWxGb3JtQ29udHJvbE1hdGNoZXI8VCwgST4gZXh0ZW5kcyBFcnJvclN0YXRlTWF0Y2hlciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50OiBBYnN0cmFjdFNlbGVjdDxULCBJPikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBpc0Vycm9yU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGV4dGVybmFsQ3RybCA9IHRoaXMuY29tcG9uZW50Lm5nQ29udHJvbD8uY29udHJvbCB8fCB0aGlzLmNvbXBvbmVudC5pbnRlcm5hbEN0cmw7XG4gICAgICAgIGlmIChleHRlcm5hbEN0cmwpIHtcbiAgICAgICAgICAgIHJldHVybiAhIShleHRlcm5hbEN0cmwuZXJyb3JzICYmIChleHRlcm5hbEN0cmwudG91Y2hlZCB8fCBleHRlcm5hbEN0cmwuZGlydHkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0U2VsZWN0PFYsIEk+XG4gICAgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RDb250cm9sbGVyXG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIERvQ2hlY2tcbntcbiAgICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGZsb2F0UGxhY2Vob2xkZXI6IEZsb2F0TGFiZWxUeXBlID0gJ2F1dG8nO1xuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIGZpZWxkIGlzIHJlcXVpcmVkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgdGhpcy5hcHBseVJlcXVpcmVkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fcmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgYSBzdWZmaXggYnV0dG9uIHRoYXQgaXMgYSBsaW5rIHRvIGdpdmVuIGRlc3RpbmF0aW9uXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIG5hdmlnYXRlVG8/OiBhbnlbXSB8IHN0cmluZyB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBJZiBwcm92aWRlZCBjYXVzZSBhIG5ldyBjbGVhciBidXR0b24gdG8gYXBwZWFyXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGNsZWFyTGFiZWw/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIHNlYXJjaCBpY29uXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHNob3dJY29uID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEljb24gbmFtZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpY29uID0gJ3NlYXJjaCc7XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBjdXN0b21pemUgdGhlIHJlbmRlcmluZyBvZiB0aGUgc2VsZWN0ZWQgaXRlbSBhcyB0ZXh0IGluIGlucHV0XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGRpc3BsYXlXaXRoPzogKGl0ZW06IFYgfCBudWxsKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0IHRoZSBzZWxlY3RlZCB2YWx1ZSB3aGVuZXZlciBpdCBjaGFuZ2VzXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFYgfCBudWxsPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiBpbnRlcm5hbCBpbnB1dCBpcyBibHVycmVkXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogQ29udGFpbnMgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gZm9yIGN1cnJlbnQgc2VsZWN0aW9uLlxuICAgICAqXG4gICAgICogSXQgaXMgKipub3QqKiBuZWNlc3NhcmlseSBgViB8IG51bGxgLlxuICAgICAqXG4gICAgICogLSBOYXR1cmFsU2VsZWN0Q29tcG9uZW50OiBgc3RyaW5nIHwgViB8IG51bGxgLiBXZSBhbGxvdyBgc3RyaW5nYFxuICAgICAqICAgb25seSB3aGVuIGBvcHRpb25SZXF1aXJlZGAgaXMgZmFsc2UsIHNvIG1vc3Qgb2YgdGhlIHRpbWUgaXQgaXMgYFYgfCBudWxsYC5cbiAgICAgKiAtIE5hdHVyYWxTZWxlY3RIaWVyYXJjaGljQ29tcG9uZW50OiBgc3RyaW5nIHwgbnVsbGAuXG4gICAgICogLSBOYXR1cmFsU2VsZWN0RW51bUNvbXBvbmVudDogYFYgfCBudWxsYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgaW50ZXJuYWxDdHJsID0gbmV3IEZvcm1Db250cm9sPEkgfCBudWxsPihudWxsKTtcblxuICAgIC8qKlxuICAgICAqIEludGVyZmFjZSB3aXRoIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAgICogTm90aWZpZXMgcGFyZW50IG1vZGVsIC8gZm9ybSBjb250cm9sbGVyXG4gICAgICovXG4gICAgcHVibGljIG9uQ2hhbmdlPzogKGl0ZW06IFYgfCBudWxsKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogSW50ZXJmYWNlIHdpdGggQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgICAgKiBOb3RpZmllcyBwYXJlbnQgbW9kZWwgLyBmb3JtIGNvbnRyb2xsZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Ub3VjaGVkPzogKCkgPT4gdm9pZDtcblxuICAgIHB1YmxpYyByZWFkb25seSBtYXRjaGVyOiBFeHRlcm5hbEZvcm1Db250cm9sTWF0Y2hlcjxWLCBJPjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyByZWFkb25seSBuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tYXRjaGVyID0gbmV3IEV4dGVybmFsRm9ybUNvbnRyb2xNYXRjaGVyKHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5hcHBseVJlcXVpcmVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogSSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbEN0cmwuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNSZWFjdGl2ZSA9IHRoaXMubmdDb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2xEaXJlY3RpdmUgfHwgdGhpcy5uZ0NvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbE5hbWU7XG4gICAgICAgIGlmIChpc1JlYWN0aXZlICYmIHR5cGVvZiB0aGlzLl9yZXF1aXJlZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignPG5hdHVyYWwtc2VsZWN0LSo+IHNob3VsZCBub3QgYmUgdXNlZCBhcyBSZWFjdGl2ZUZvcm0gYW5kIHdpdGggdGhlIFtyZXF1aXJlZF0gYXR0cmlidXRlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB2YWx1ZSBjYW4gYmUgY2hhbmdlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgICAgICBkaXNhYmxlZCA/IHRoaXMuaW50ZXJuYWxDdHJsLmRpc2FibGUoKSA6IHRoaXMuaW50ZXJuYWxDdHJsLmVuYWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoaXRlbTogViB8IG51bGwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXREaXNwbGF5Rm4oKTogKGl0ZW06IFYgfCBudWxsKSA9PiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY2xlYXIoZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICAvLyBFbXB0eSBpbnB1dFxuICAgICAgICB0aGlzLmludGVybmFsQ3RybC5zZXRWYWx1ZShudWxsLCB7ZW1pdEV2ZW50OiBlbWl0RXZlbnR9KTtcblxuICAgICAgICAvLyBwcm9wYWdhdGVWYWx1ZSBjaGFuZ2VcbiAgICAgICAgaWYgKGVtaXRFdmVudCkge1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBwcm9wYWdhdGVWYWx1ZSh2YWx1ZTogViB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgLy8gYmVmb3JlIHNlbGVjdGlvbkNoYW5nZSB0byBhbGxvdyBmb3JtQ29udHJvbCB0byB1cGRhdGUgYmVmb3JlIGNoYW5nZSBpcyBlZmZlY3RpdmVseSBlbWl0dGVkXG4gICAgICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dDbGVhckJ1dHRvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxDdHJsPy5lbmFibGVkICYmICEhdGhpcy5jbGVhckxhYmVsICYmICEhdGhpcy5pbnRlcm5hbEN0cmwudmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHRvdWNoKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vblRvdWNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzUmVxdWlyZWRFcnJvcigpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMubmdDb250cm9sPy5jb250cm9sID8gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wgOiB0aGlzLmludGVybmFsQ3RybDtcblxuICAgICAgICByZXR1cm4gY29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcHBseSBWYWxpZGF0b3JzLnJlcXVpcmVkIG9uIHRoZSBpbnRlcm5hbCBmb3JtLCBiYXNlZCBvbiBuZ0NvbnRyb2wgb3IgW3JlcXVpcmVkXSBhdHRyaWJ1dGUsIGdpdmluZyBwcmlvcml0eSB0byBhdHRyaWJ1dGUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBhcHBseVJlcXVpcmVkKCk6IHZvaWQge1xuICAgICAgICAvLyBSZXF1aXJlZCBzdGF0dXMgb24gcGFyZW50IHZhbGlkYXRvclxuICAgICAgICBjb25zdCBvdXRlclJlcXVpcmVkU3RhdHVzID0gdGhpcz8ubmdDb250cm9sPy5jb250cm9sPy52YWxpZGF0b3I/Lih7fSBhcyBBYnN0cmFjdENvbnRyb2wpPy5yZXF1aXJlZDtcblxuICAgICAgICAvLyBXYW50ZWQgcmVxdWlyZWQgc3RhdHVzLCBnaXZpbmcgcHJpb3JpdHkgdG8gdGVtcGxhdGVcbiAgICAgICAgY29uc3QgbmV3UmVxdWlyZWRTdGF0dXMgPSB0eXBlb2YgdGhpcy5fcmVxdWlyZWQgIT09ICd1bmRlZmluZWQnID8gdGhpcy5fcmVxdWlyZWQgOiBvdXRlclJlcXVpcmVkU3RhdHVzO1xuXG4gICAgICAgIC8vIEFjdHVhbCBpbnRlcm5hbCB2YWxpZGF0aW9uIHN0YXR1c1xuICAgICAgICBjb25zdCBjdXJyZW50UmVxdWlyZWRTdGF0dXMgPSB0aGlzLmludGVybmFsQ3RybD8udmFsaWRhdG9yPy4oe30gYXMgQWJzdHJhY3RDb250cm9sKT8ucmVxdWlyZWQ7XG5cbiAgICAgICAgLy8gSWYgd2FudGVkIHN0YXR1cyBpcyBzaW1pbGFyIHRvIGFjdHVhbCBzdGF0dXMsIHN0b3AgZXZlcnl0aGluZ1xuICAgICAgICBpZiAoY3VycmVudFJlcXVpcmVkU3RhdHVzID09PSBuZXdSZXF1aXJlZFN0YXR1cykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXBwbHkgb25seSBpZiBjaGFuZ2VkXG4gICAgICAgIGlmIChuZXdSZXF1aXJlZFN0YXR1cykge1xuICAgICAgICAgICAgdGhpcy5pbnRlcm5hbEN0cmwuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxDdHJsLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnRlcm5hbEN0cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbn1cbiJdfQ==
|