@provoly/dashboard 0.20.4 → 0.20.6
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/dataset/components/dataset-detail/dataset-detail.component.d.ts +2 -1
- package/dataset/i18n/en.translations.d.ts +2 -1
- package/dataset/i18n/fr.translations.d.ts +2 -1
- package/dataset/style/_o-pry-dataset-card.scss +0 -1
- package/dataset/style/_o-pry-dataset-detail.scss +2 -53
- package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +3 -3
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +20 -4
- package/esm2022/dataset/i18n/en.translations.mjs +3 -2
- package/esm2022/dataset/i18n/fr.translations.mjs +3 -2
- package/esm2022/dataset/style/css.component.mjs +2 -2
- package/esm2022/filters/autocomplete/autocomplete.component.mjs +16 -10
- package/esm2022/lib/core/components/about/about.component.mjs +3 -3
- package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +3 -3
- package/esm2022/lib/core/components/select/select.component.mjs +42 -13
- package/esm2022/lib/core/i18n/en.translations.mjs +1 -2
- package/esm2022/lib/core/i18n/fr.translations.mjs +1 -2
- package/esm2022/lib/core/model/display-options.interface.mjs +2 -2
- package/esm2022/lib/core/model/item.interface.mjs +1 -1
- package/esm2022/lib/core/store/class/class.actions.mjs +1 -4
- package/esm2022/lib/core/store/class/class.effects.mjs +1 -4
- package/esm2022/lib/core/store/class/class.interface.mjs +1 -1
- package/esm2022/lib/core/store/class/class.reducer.mjs +3 -13
- package/esm2022/lib/core/store/class/class.selectors.mjs +1 -3
- package/esm2022/lib/core/store/class/class.service.mjs +1 -9
- package/esm2022/lib/core/store/config/config.selectors.mjs +1 -3
- package/esm2022/lib/core/store/config/config.service.mjs +4 -7
- package/esm2022/lib/dashboard/item-utils.mjs +4 -4
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +3 -3
- package/esm2022/presentation/components/presentation.component.mjs +3 -3
- package/esm2022/presentation/components/title-presentation/title-presentation.component.mjs +11 -21
- package/esm2022/presentation/style/css.component.mjs +2 -2
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +3 -3
- package/esm2022/restitution/i18n/en.translations.mjs +2 -2
- package/esm2022/restitution/style/css.component.mjs +2 -2
- package/esm2022/search/i18n/en.translations.mjs +2 -1
- package/esm2022/search/i18n/fr.translations.mjs +2 -1
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +3 -7
- package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +2 -2
- package/fesm2022/provoly-dashboard-admin.mjs +8 -8
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +25 -7
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +15 -9
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +14 -24
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +5 -5
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-search.mjs +2 -0
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +2 -6
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +57 -61
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/filters/autocomplete/autocomplete.component.d.ts +1 -0
- package/lib/core/components/select/select.component.d.ts +2 -1
- package/lib/core/i18n/en.translations.d.ts +0 -1
- package/lib/core/i18n/fr.translations.d.ts +0 -1
- package/lib/core/model/item.interface.d.ts +1 -1
- package/lib/core/store/class/class.actions.d.ts +1 -12
- package/lib/core/store/class/class.effects.d.ts +0 -5
- package/lib/core/store/class/class.interface.d.ts +0 -6
- package/lib/core/store/class/class.reducer.d.ts +2 -3
- package/lib/core/store/class/class.selectors.d.ts +0 -1
- package/lib/core/store/class/class.service.d.ts +1 -5
- package/lib/core/store/config/config.selectors.d.ts +0 -1
- package/package.json +7 -13
- package/presentation/components/title-presentation/title-presentation.component.d.ts +3 -5
- package/presentation/style/_o-pry-presentation.scss +1 -48
- package/restitution/i18n/en.translations.d.ts +1 -1
- package/restitution/style/_o-restitution.scss +11 -14
- package/search/i18n/en.translations.d.ts +1 -0
- package/search/i18n/fr.translations.d.ts +1 -0
- package/styles/base/_utils.scss +4 -0
- package/styles/components/_a-tooltip.scss +25 -18
- package/styles/components/_m-info-icon.scss +16 -0
- package/styles/components/_m-presentation-title.scss +14 -0
- package/styles/components/_o-about.scss +2 -24
- package/styles/main.scss +2 -0
- package/styles-theme/components-theme/_o-pry-dataset.theme.scss +0 -8
- package/styles-theme/components-theme/_o-pry-presentation.theme.scss +1 -1
- package/styles-theme/components-theme/_o-restitution.theme.scss +10 -0
- package/esm2022/supervision/components/supervision-business-data/supervision-business-data.component.mjs +0 -34
- package/esm2022/supervision/components/supervision-flow/supervision-flow.component.mjs +0 -33
- package/esm2022/supervision/components/supervision-infrastructures/supervision-infrastructures.component.mjs +0 -51
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.mjs +0 -27
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +0 -100
- package/esm2022/supervision/components/supervision-layout/supervision-layout.component.mjs +0 -47
- package/esm2022/supervision/components/supervision-menu/supervision-menu.component.mjs +0 -32
- package/esm2022/supervision/components/supervision-title/supervision-title.component.mjs +0 -24
- package/esm2022/supervision/components/supervision.component.mjs +0 -19
- package/esm2022/supervision/i18n/en.translations.mjs +0 -58
- package/esm2022/supervision/i18n/fr.translations.mjs +0 -58
- package/esm2022/supervision/provoly-dashboard-supervision.mjs +0 -5
- package/esm2022/supervision/public-api.mjs +0 -2
- package/esm2022/supervision/store/supervision-api.model.mjs +0 -2
- package/esm2022/supervision/store/supervision.actions.mjs +0 -33
- package/esm2022/supervision/store/supervision.effects.mjs +0 -60
- package/esm2022/supervision/store/supervision.reducer.mjs +0 -111
- package/esm2022/supervision/store/supervision.selectors.mjs +0 -35
- package/esm2022/supervision/store/supervision.service.mjs +0 -54
- package/esm2022/supervision/supervision-routing.module.mjs +0 -96
- package/esm2022/supervision/supervision.module.mjs +0 -96
- package/fesm2022/provoly-dashboard-supervision.mjs +0 -861
- package/fesm2022/provoly-dashboard-supervision.mjs.map +0 -1
- package/supervision/components/supervision-business-data/supervision-business-data.component.d.ts +0 -14
- package/supervision/components/supervision-flow/supervision-flow.component.d.ts +0 -14
- package/supervision/components/supervision-infrastructures/supervision-infrastructures.component.d.ts +0 -18
- package/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.d.ts +0 -12
- package/supervision/components/supervision-integration-errors/supervision-integration-errors.component.d.ts +0 -29
- package/supervision/components/supervision-layout/supervision-layout.component.d.ts +0 -21
- package/supervision/components/supervision-menu/supervision-menu.component.d.ts +0 -13
- package/supervision/components/supervision-title/supervision-title.component.d.ts +0 -11
- package/supervision/components/supervision.component.d.ts +0 -9
- package/supervision/i18n/en.translations.d.ts +0 -57
- package/supervision/i18n/fr.translations.d.ts +0 -57
- package/supervision/index.d.ts +0 -5
- package/supervision/public-api.d.ts +0 -1
- package/supervision/store/supervision-api.model.d.ts +0 -36
- package/supervision/store/supervision.actions.d.ts +0 -121
- package/supervision/store/supervision.effects.d.ts +0 -51
- package/supervision/store/supervision.reducer.d.ts +0 -22
- package/supervision/store/supervision.selectors.d.ts +0 -18
- package/supervision/store/supervision.service.d.ts +0 -19
- package/supervision/supervision-routing.module.d.ts +0 -7
- package/supervision/supervision.module.d.ts +0 -25
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
2
|
import { BaseFilterComponent } from '@provoly/dashboard';
|
|
3
|
-
import { BehaviorSubject, catchError, debounceTime, distinctUntilChanged,
|
|
3
|
+
import { BehaviorSubject, catchError, debounceTime, distinctUntilChanged, of, switchMap } from 'rxjs';
|
|
4
4
|
import equal from 'fast-deep-equal/es6';
|
|
5
5
|
import { tap } from 'rxjs/operators';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -20,12 +20,15 @@ export class AutocompleteComponent extends BaseFilterComponent {
|
|
|
20
20
|
ngOnInit() {
|
|
21
21
|
super.ngOnInit();
|
|
22
22
|
this.search$.next(this._value);
|
|
23
|
-
this.autocomplete$ = this.search$.pipe(distinctUntilChanged((p, v) => equal(p, v)), debounceTime(500),
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
this.loader = false
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
this.autocomplete$ = this.search$.pipe(distinctUntilChanged((p, v) => equal(p, v)), debounceTime(500), switchMap((search) => {
|
|
24
|
+
if (!!search && search.length > 2) {
|
|
25
|
+
this.loader = true;
|
|
26
|
+
return this.searchService.autocomplete(this.filter?.attributes, search, this.filter?.limit).pipe(tap(() => (this.loader = false)), catchError((err) => {
|
|
27
|
+
this.loader = false;
|
|
28
|
+
throw err;
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
return of([]);
|
|
29
32
|
}));
|
|
30
33
|
}
|
|
31
34
|
setFilter(value) {
|
|
@@ -38,11 +41,14 @@ export class AutocompleteComponent extends BaseFilterComponent {
|
|
|
38
41
|
const value = $event ? $event.target.value : '';
|
|
39
42
|
this.search$.next(value);
|
|
40
43
|
}
|
|
44
|
+
clear() {
|
|
45
|
+
this.search$.next('');
|
|
46
|
+
}
|
|
41
47
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i1.Store }, { token: i2.SearchService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
42
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AutocompleteComponent, selector: "pry-autocomplete", usesInheritance: true, ngImport: i0, template: "<pry-autocomplete-css></pry-autocomplete-css>\n<div\n class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\"\n *ngIf=\"filter\"\n (keyup)=\"updateSearch($event)\"\n #ref\n>\n <div class=\"no-widget no-widget__loader\">\n <pry-icon\n iconSvg=\"loader\"\n class=\"no-widget__loading\"\n [alt]=\"'@pry.widget.target.loading' | i18n\"\n [width]=\"20\"\n [height]=\"20\"\n *ngIf=\"loader\"\n />\n </div>\n <label class=\"a-label m-filter__label\" for=\"{{ filter.name }}\">{{ filter.name }} : </label>\n <pry-select\n [id]=\"filter.name\"\n [items]=\"autocomplete$ | async\"\n [ngModel]=\"filter.value\"\n (ngModelChange)=\"setFilter($event)\"\n [clearable]=\"true\"\n [autocomplete]=\"true\"\n aria-labelledby=\"item-label\"\n (blur)=\"updateSearch($event)\"\n [elementRef]=\"ref\"\n ></pry-select>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryAutocompleteCssComponent, selector: "pry-autocomplete-css" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }] }); }
|
|
48
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AutocompleteComponent, selector: "pry-autocomplete", usesInheritance: true, ngImport: i0, template: "<pry-autocomplete-css></pry-autocomplete-css>\n<div\n class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\"\n *ngIf=\"filter\"\n (keyup)=\"updateSearch($event)\"\n #ref\n>\n <div class=\"no-widget no-widget__loader\">\n <pry-icon\n iconSvg=\"loader\"\n class=\"no-widget__loading\"\n [alt]=\"'@pry.widget.target.loading' | i18n\"\n [width]=\"20\"\n [height]=\"20\"\n *ngIf=\"loader\"\n />\n </div>\n <label class=\"a-label m-filter__label\" for=\"{{ filter.name }}\">{{ filter.name }} : </label>\n <pry-select\n [id]=\"filter.name\"\n [items]=\"autocomplete$ | async\"\n [ngModel]=\"filter.value\"\n (ngModelChange)=\"setFilter($event)\"\n [clearable]=\"true\"\n [autocomplete]=\"true\"\n aria-labelledby=\"item-label\"\n (blur)=\"updateSearch($event)\"\n [elementRef]=\"ref\"\n (cleared)=\"clear()\"\n ></pry-select>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryAutocompleteCssComponent, selector: "pry-autocomplete-css" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }] }); }
|
|
43
49
|
}
|
|
44
50
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
45
51
|
type: Component,
|
|
46
|
-
args: [{ selector: 'pry-autocomplete', template: "<pry-autocomplete-css></pry-autocomplete-css>\n<div\n class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\"\n *ngIf=\"filter\"\n (keyup)=\"updateSearch($event)\"\n #ref\n>\n <div class=\"no-widget no-widget__loader\">\n <pry-icon\n iconSvg=\"loader\"\n class=\"no-widget__loading\"\n [alt]=\"'@pry.widget.target.loading' | i18n\"\n [width]=\"20\"\n [height]=\"20\"\n *ngIf=\"loader\"\n />\n </div>\n <label class=\"a-label m-filter__label\" for=\"{{ filter.name }}\">{{ filter.name }} : </label>\n <pry-select\n [id]=\"filter.name\"\n [items]=\"autocomplete$ | async\"\n [ngModel]=\"filter.value\"\n (ngModelChange)=\"setFilter($event)\"\n [clearable]=\"true\"\n [autocomplete]=\"true\"\n aria-labelledby=\"item-label\"\n (blur)=\"updateSearch($event)\"\n [elementRef]=\"ref\"\n ></pry-select>\n</div>\n" }]
|
|
52
|
+
args: [{ selector: 'pry-autocomplete', template: "<pry-autocomplete-css></pry-autocomplete-css>\n<div\n class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\"\n *ngIf=\"filter\"\n (keyup)=\"updateSearch($event)\"\n #ref\n>\n <div class=\"no-widget no-widget__loader\">\n <pry-icon\n iconSvg=\"loader\"\n class=\"no-widget__loading\"\n [alt]=\"'@pry.widget.target.loading' | i18n\"\n [width]=\"20\"\n [height]=\"20\"\n *ngIf=\"loader\"\n />\n </div>\n <label class=\"a-label m-filter__label\" for=\"{{ filter.name }}\">{{ filter.name }} : </label>\n <pry-select\n [id]=\"filter.name\"\n [items]=\"autocomplete$ | async\"\n [ngModel]=\"filter.value\"\n (ngModelChange)=\"setFilter($event)\"\n [clearable]=\"true\"\n [autocomplete]=\"true\"\n aria-labelledby=\"item-label\"\n (blur)=\"updateSearch($event)\"\n [elementRef]=\"ref\"\n (cleared)=\"clear()\"\n ></pry-select>\n</div>\n" }]
|
|
47
53
|
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.SearchService }]; } });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2ZpbHRlcnMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9maWx0ZXJzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFpQixNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xILE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQU1yQyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsbUJBQW1CO0lBSzVELFlBQVksS0FBWSxFQUFVLGFBQTRCO1FBQzVELEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQURtQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUo5RCxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFMUMsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUl0QixJQUFJLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRVEsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDcEMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzNDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQzlGLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFDaEMsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO29CQUNwQixNQUFNLEdBQUcsQ0FBQztnQkFDWixDQUFDLENBQUMsQ0FDSCxDQUFDO2FBQ0g7WUFDRCxPQUFPLEVBQUUsQ0FBQyxFQUFjLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ2hDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWM7UUFDekIsYUFBYTtRQUNiLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7K0dBOUNVLHFCQUFxQjttR0FBckIscUJBQXFCLCtFQ1hsQyxnNkJBK0JBOzs0RkRwQmEscUJBQXFCO2tCQUpqQyxTQUFTOytCQUNFLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQmFzZUZpbHRlckNvbXBvbmVudCwgU2VhcmNoU2VydmljZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwvZXM2JztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudCBleHRlbmRzIEJhc2VGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHNlYXJjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICBhdXRvY29tcGxldGUkPzogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIGxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHN0b3JlOiBTdG9yZSwgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlKSB7XG4gICAgc3VwZXIoc3RvcmUpO1xuICAgIHRoaXMudHlwZSA9ICdhdXRvY29tcGxldGUnO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLnNlYXJjaCQubmV4dCh0aGlzLl92YWx1ZSk7XG4gICAgdGhpcy5hdXRvY29tcGxldGUkID0gdGhpcy5zZWFyY2gkLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocCwgdikgPT4gZXF1YWwocCwgdikpLFxuICAgICAgZGVib3VuY2VUaW1lKDUwMCksXG4gICAgICBzd2l0Y2hNYXAoKHNlYXJjaCkgPT4ge1xuICAgICAgICBpZiAoISFzZWFyY2ggJiYgc2VhcmNoLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoU2VydmljZS5hdXRvY29tcGxldGUodGhpcy5maWx0ZXI/LmF0dHJpYnV0ZXMsIHNlYXJjaCwgdGhpcy5maWx0ZXI/LmxpbWl0KS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+ICh0aGlzLmxvYWRlciA9IGZhbHNlKSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihbXSBhcyBzdHJpbmdbXSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzZXRGaWx0ZXIodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5maWx0ZXI/LnZhbHVlKSB7XG4gICAgICBzdXBlci51cGRhdGVGaWx0ZXIodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVNlYXJjaCgkZXZlbnQ/OiBFdmVudCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB2YWx1ZSA9ICRldmVudCA/ICRldmVudC50YXJnZXQhLnZhbHVlIDogJyc7XG4gICAgdGhpcy5zZWFyY2gkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5zZWFyY2gkLm5leHQoJycpO1xuICB9XG59XG4iLCI8cHJ5LWF1dG9jb21wbGV0ZS1jc3M+PC9wcnktYXV0b2NvbXBsZXRlLWNzcz5cbjxkaXZcbiAgY2xhc3M9XCJtLWZpbHRlcl9faW5wdXQtd3JhcHBlciBtLWZpbHRlcl9faW5wdXQtd3JhcHBlci0tZHJvcGRvd25cIlxuICAqbmdJZj1cImZpbHRlclwiXG4gIChrZXl1cCk9XCJ1cGRhdGVTZWFyY2goJGV2ZW50KVwiXG4gICNyZWZcbj5cbiAgPGRpdiBjbGFzcz1cIm5vLXdpZGdldCBuby13aWRnZXRfX2xvYWRlclwiPlxuICAgIDxwcnktaWNvblxuICAgICAgaWNvblN2Zz1cImxvYWRlclwiXG4gICAgICBjbGFzcz1cIm5vLXdpZGdldF9fbG9hZGluZ1wiXG4gICAgICBbYWx0XT1cIidAcHJ5LndpZGdldC50YXJnZXQubG9hZGluZycgfCBpMThuXCJcbiAgICAgIFt3aWR0aF09XCIyMFwiXG4gICAgICBbaGVpZ2h0XT1cIjIwXCJcbiAgICAgICpuZ0lmPVwibG9hZGVyXCJcbiAgICAvPlxuICA8L2Rpdj5cbiAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbCBtLWZpbHRlcl9fbGFiZWxcIiBmb3I9XCJ7eyBmaWx0ZXIubmFtZSB9fVwiPnt7IGZpbHRlci5uYW1lIH19Jm5ic3A7OiZuYnNwOzwvbGFiZWw+XG4gIDxwcnktc2VsZWN0XG4gICAgW2lkXT1cImZpbHRlci5uYW1lXCJcbiAgICBbaXRlbXNdPVwiYXV0b2NvbXBsZXRlJCB8IGFzeW5jXCJcbiAgICBbbmdNb2RlbF09XCJmaWx0ZXIudmFsdWVcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldEZpbHRlcigkZXZlbnQpXCJcbiAgICBbY2xlYXJhYmxlXT1cInRydWVcIlxuICAgIFthdXRvY29tcGxldGVdPVwidHJ1ZVwiXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiaXRlbS1sYWJlbFwiXG4gICAgKGJsdXIpPVwidXBkYXRlU2VhcmNoKCRldmVudClcIlxuICAgIFtlbGVtZW50UmVmXT1cInJlZlwiXG4gICAgKGNsZWFyZWQpPVwiY2xlYXIoKVwiXG4gID48L3ByeS1zZWxlY3Q+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -31,12 +31,12 @@ export class PryAboutComponent {
|
|
|
31
31
|
return !!value && (!!backVersion.chartVersion || !!frontVersion.libVersion);
|
|
32
32
|
}
|
|
33
33
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryAboutComponent, deps: [{ token: i1.Store }, { token: i2.PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryAboutComponent, selector: "pry-about", inputs: { tooltipPosition: "tooltipPosition" }, ngImport: i0, template: "<div class=\"o-about\">\n <div class=\"info-icon
|
|
34
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryAboutComponent, selector: "pry-about", inputs: { tooltipPosition: "tooltipPosition" }, ngImport: i0, template: "<div class=\"o-about\">\n <div class=\"m-info-icon\">\n <span>i</span>\n </div>\n <div class=\"o-about__tooltip -position-{{ tooltipPosition }}\">\n <ng-container *ngFor=\"let version of (version$ | async) ?? {} | keyvalue\">\n <div class=\"o-about__line\">\n {{ '@pry.about.' + version.key | i18n }}\n <p class=\"a-chips -md\" [class.-not-found]=\"!hasVersion(version.value)\">\n {{ displayVersion(version.value) }}\n </p>\n </div>\n </ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
|
|
35
35
|
}
|
|
36
36
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryAboutComponent, decorators: [{
|
|
37
37
|
type: Component,
|
|
38
|
-
args: [{ selector: 'pry-about', template: "<div class=\"o-about\">\n <div class=\"info-icon
|
|
38
|
+
args: [{ selector: 'pry-about', template: "<div class=\"o-about\">\n <div class=\"m-info-icon\">\n <span>i</span>\n </div>\n <div class=\"o-about__tooltip -position-{{ tooltipPosition }}\">\n <ng-container *ngFor=\"let version of (version$ | async) ?? {} | keyvalue\">\n <div class=\"o-about__line\">\n {{ '@pry.about.' + version.key | i18n }}\n <p class=\"a-chips -md\" [class.-not-found]=\"!hasVersion(version.value)\">\n {{ displayVersion(version.value) }}\n </p>\n </div>\n </ng-container>\n </div>\n</div>\n" }]
|
|
39
39
|
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.PryI18nService }]; }, propDecorators: { tooltipPosition: [{
|
|
40
40
|
type: Input
|
|
41
41
|
}] } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2NvcmUvY29tcG9uZW50cy9hYm91dC9hYm91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9jb21wb25lbnRzL2Fib3V0L2Fib3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSWpELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7OztBQU90RSxNQUFNLE9BQU8saUJBQWlCO0lBVzVCLFlBQW9CLEtBQVksRUFBVSxXQUEyQjtRQUFqRCxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBVjVELG9CQUFlLEdBUUgsUUFBUSxDQUFDO1FBRzVCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBdUM7UUFDcEQsTUFBTSxXQUFXLEdBQUcsS0FBdUIsQ0FBQztRQUM1QyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUU7WUFDcEMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzVDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsS0FBd0IsQ0FBQztRQUM5QyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFO1lBQzdCLE9BQU8sWUFBWSxDQUFDLFVBQVUsQ0FBQztTQUNoQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQXVDO1FBQ2hELE1BQU0sV0FBVyxHQUFHLEtBQXVCLENBQUM7UUFDNUMsTUFBTSxZQUFZLEdBQUcsS0FBd0IsQ0FBQztRQUM5QyxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7K0dBaENVLGlCQUFpQjttR0FBakIsaUJBQWlCLGlHQ1o5Qiw0Z0JBZUE7OzRGREhhLGlCQUFpQjtrQkFKN0IsU0FBUzsrQkFDRSxXQUFXO3lIQUlaLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByeUkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnQWN0aW9ucyB9IGZyb20gJy4uLy4uL3N0b3JlL2NvbmZpZy9jb25maWcuYWN0aW9ucyc7XG5pbXBvcnQgeyBDb25maWdTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zdG9yZS9jb25maWcvY29uZmlnLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBCYWNrZW5kVmVyc2lvbiwgRnJvbnRlbmRWZXJzaW9uLCBWZXJzaW9ucyB9IGZyb20gJy4uLy4uL3N0b3JlL2NvbmZpZy92ZXJzaW9ucy5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktYWJvdXQnLFxuICB0ZW1wbGF0ZVVybDogJ2Fib3V0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlBYm91dENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRvb2x0aXBQb3NpdGlvbjpcbiAgICB8ICd0b3AnXG4gICAgfCAnYm90dG9tJ1xuICAgIHwgJ2xlZnQnXG4gICAgfCAncmlnaHQnXG4gICAgfCAndG9wLWxlZnQnXG4gICAgfCAndG9wLXJpZ2h0J1xuICAgIHwgJ2JvdHRvbS1sZWZ0J1xuICAgIHwgJ2JvdHRvbS1yaWdodCcgPSAnYm90dG9tJztcbiAgdmVyc2lvbiQ6IE9ic2VydmFibGU8VmVyc2lvbnMgfCBudWxsPjtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUsIHByaXZhdGUgaTE4blNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmxvYWRWZXJzaW9ucygpKTtcbiAgICB0aGlzLnZlcnNpb24kID0gdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnNlbGVjdFZlcnNpb25zKTtcbiAgfVxuXG4gIGRpc3BsYXlWZXJzaW9uKHZhbHVlOiBCYWNrZW5kVmVyc2lvbiB8IEZyb250ZW5kVmVyc2lvbikge1xuICAgIGNvbnN0IGJhY2tWZXJzaW9uID0gdmFsdWUgYXMgQmFja2VuZFZlcnNpb247XG4gICAgaWYgKCEhYmFja1ZlcnNpb24uYXBwbGljYXRpb25WZXJzaW9uKSB7XG4gICAgICByZXR1cm4gYCR7YmFja1ZlcnNpb24uYXBwbGljYXRpb25WZXJzaW9ufWA7XG4gICAgfVxuICAgIGNvbnN0IGZyb250VmVyc2lvbiA9IHZhbHVlIGFzIEZyb250ZW5kVmVyc2lvbjtcbiAgICBpZiAoISFmcm9udFZlcnNpb24ubGliVmVyc2lvbikge1xuICAgICAgcmV0dXJuIGZyb250VmVyc2lvbi5saWJWZXJzaW9uO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pMThuU2VydmljZS5pbnN0YW50KCdAcHJ5LmFib3V0Lm5vVmVyc2lvbicpO1xuICB9XG5cbiAgaGFzVmVyc2lvbih2YWx1ZTogQmFja2VuZFZlcnNpb24gfCBGcm9udGVuZFZlcnNpb24pIHtcbiAgICBjb25zdCBiYWNrVmVyc2lvbiA9IHZhbHVlIGFzIEJhY2tlbmRWZXJzaW9uO1xuICAgIGNvbnN0IGZyb250VmVyc2lvbiA9IHZhbHVlIGFzIEZyb250ZW5kVmVyc2lvbjtcbiAgICByZXR1cm4gISF2YWx1ZSAmJiAoISFiYWNrVmVyc2lvbi5jaGFydFZlcnNpb24gfHwgISFmcm9udFZlcnNpb24ubGliVmVyc2lvbik7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJvLWFib3V0XCI+XG4gIDxkaXYgY2xhc3M9XCJtLWluZm8taWNvblwiPlxuICAgIDxzcGFuPmk8L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiby1hYm91dF9fdG9vbHRpcCAtcG9zaXRpb24te3sgdG9vbHRpcFBvc2l0aW9uIH19XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmVyc2lvbiBvZiAodmVyc2lvbiQgfCBhc3luYykgPz8ge30gfCBrZXl2YWx1ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tYWJvdXRfX2xpbmVcIj5cbiAgICAgICAge3sgJ0BwcnkuYWJvdXQuJyArIHZlcnNpb24ua2V5IHwgaTE4biB9fVxuICAgICAgICA8cCBjbGFzcz1cImEtY2hpcHMgLW1kXCIgW2NsYXNzLi1ub3QtZm91bmRdPVwiIWhhc1ZlcnNpb24odmVyc2lvbi52YWx1ZSlcIj5cbiAgICAgICAgICB7eyBkaXNwbGF5VmVyc2lvbih2ZXJzaW9uLnZhbHVlKSB9fVxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -20,10 +20,10 @@ export class BaseMenuComponent extends SubscriptionnerDirective {
|
|
|
20
20
|
console.error('Must override init function');
|
|
21
21
|
}
|
|
22
22
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseMenuComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BaseMenuComponent, selector: "pry-base-menu", usesInheritance: true, ngImport: i0, template: "<nav class=\"m-nav-links\">\n <ng-container *ngFor=\"let sub of subMenu$ | async\">\n <ul class=\"m-nav-links__list\">\n <ng-container *ngFor=\"let menu of sub.subMenus\">\n <li\n *pryAccess=\"{ module: menu.module, page: menu.page, subMenu: menu.subMenu }\"\n class=\"m-nav-links__list__item\"\n >\n <a [routerLink]=\"menu.menu\" class=\"a-btn a-btn--secondary -width-full\" [routerLinkActive]=\"'is-active'\">\n {{ baseMenuTranslation + menu.menu | i18n }}\n </a>\n </li>\n </ng-container>\n </ul>\n </ng-container>\n
|
|
23
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BaseMenuComponent, selector: "pry-base-menu", usesInheritance: true, ngImport: i0, template: "<nav class=\"m-nav-links\">\n <ng-container *ngFor=\"let sub of subMenu$ | async\">\n <ul class=\"m-nav-links__list\">\n <ng-container *ngFor=\"let menu of sub.subMenus\">\n <li\n *pryAccess=\"{ module: menu.module, page: menu.page, subMenu: menu.subMenu }\"\n class=\"m-nav-links__list__item\"\n >\n <a [routerLink]=\"menu.menu\" class=\"a-btn a-btn--secondary -width-full\" [routerLinkActive]=\"'is-active'\">\n {{ baseMenuTranslation + menu.menu | i18n }}\n </a>\n </li>\n </ng-container>\n </ul>\n </ng-container>\n</nav>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.I18nPipe, name: "i18n" }] }); }
|
|
24
24
|
}
|
|
25
25
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseMenuComponent, decorators: [{
|
|
26
26
|
type: Component,
|
|
27
|
-
args: [{ selector: 'pry-base-menu', template: "<nav class=\"m-nav-links\">\n <ng-container *ngFor=\"let sub of subMenu$ | async\">\n <ul class=\"m-nav-links__list\">\n <ng-container *ngFor=\"let menu of sub.subMenus\">\n <li\n *pryAccess=\"{ module: menu.module, page: menu.page, subMenu: menu.subMenu }\"\n class=\"m-nav-links__list__item\"\n >\n <a [routerLink]=\"menu.menu\" class=\"a-btn a-btn--secondary -width-full\" [routerLinkActive]=\"'is-active'\">\n {{ baseMenuTranslation + menu.menu | i18n }}\n </a>\n </li>\n </ng-container>\n </ul>\n </ng-container>\n
|
|
27
|
+
args: [{ selector: 'pry-base-menu', template: "<nav class=\"m-nav-links\">\n <ng-container *ngFor=\"let sub of subMenu$ | async\">\n <ul class=\"m-nav-links__list\">\n <ng-container *ngFor=\"let menu of sub.subMenus\">\n <li\n *pryAccess=\"{ module: menu.module, page: menu.page, subMenu: menu.subMenu }\"\n class=\"m-nav-links__list__item\"\n >\n <a [routerLink]=\"menu.menu\" class=\"a-btn a-btn--secondary -width-full\" [routerLinkActive]=\"'is-active'\">\n {{ baseMenuTranslation + menu.menu | i18n }}\n </a>\n </li>\n </ng-container>\n </ul>\n </ng-container>\n</nav>\n" }]
|
|
28
28
|
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9jb3JlL2NvbXBvbmVudHMvYmFzZS1tZW51L2Jhc2UtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9jb21wb25lbnRzL2Jhc2UtbWVudS9iYXNlLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQzs7Ozs7OztBQW1CbkcsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHdCQUF3QjtJQU03RCxZQUFzQixLQUFpQjtRQUNyQyxLQUFLLEVBQUUsQ0FBQztRQURZLFVBQUssR0FBTCxLQUFLLENBQVk7UUFMdkMsd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBT3ZCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBWTtRQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDL0MsQ0FBQzsrR0FqQlUsaUJBQWlCO21HQUFqQixpQkFBaUIsNEVDdEI5Qix1bUJBZ0JBOzs0RkRNYSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0UsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kYXNoYm9hcmQvY29tcG9uZW50cy9zdWJzY3JpcHRpb25uZXIuZGlyZWN0aXZlJztcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlTWVudUl0ZW0ge1xuICBtZW51OiBzdHJpbmc7XG4gIG1vZHVsZT86IHN0cmluZztcbiAgcGFnZT86IHN0cmluZztcbiAgc3ViTWVudT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWJNZW51IHtcbiAgbmFtZT86IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBzdWJNZW51czogQmFzZU1lbnVJdGVtW107XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1iYXNlLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYmFzZS1tZW51LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBCYXNlTWVudUNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB7XG4gIGJhc2VNZW51VHJhbnNsYXRpb24gPSAnJztcbiAgbWVudXMkPzogT2JzZXJ2YWJsZTxCYXNlTWVudUl0ZW1bXT47XG4gIHN1Yk1lbnUkPzogT2JzZXJ2YWJsZTxTdWJNZW51W10+O1xuICBoaWdobGlnaHRlZE1lbnUkPzogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzdG9yZTogU3RvcmU8YW55Pikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBzZWxlY3QobWVudTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc29sZS5lcnJvcignTXVzdCBvdmVycmlkZSBzZWxlY3QgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIGluaXQoKTogdm9pZCB7XG4gICAgY29uc29sZS5lcnJvcignTXVzdCBvdmVycmlkZSBpbml0IGZ1bmN0aW9uJyk7XG4gIH1cbn1cbiIsIjxuYXYgY2xhc3M9XCJtLW5hdi1saW5rc1wiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWIgb2Ygc3ViTWVudSQgfCBhc3luY1wiPlxuICAgIDx1bCBjbGFzcz1cIm0tbmF2LWxpbmtzX19saXN0XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZW51IG9mIHN1Yi5zdWJNZW51c1wiPlxuICAgICAgICA8bGlcbiAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6IG1lbnUubW9kdWxlLCBwYWdlOiBtZW51LnBhZ2UsIHN1Yk1lbnU6IG1lbnUuc3ViTWVudSB9XCJcbiAgICAgICAgICBjbGFzcz1cIm0tbmF2LWxpbmtzX19saXN0X19pdGVtXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIm1lbnUubWVudVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeSAtd2lkdGgtZnVsbFwiIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIidpcy1hY3RpdmUnXCI+XG4gICAgICAgICAgICB7eyBiYXNlTWVudVRyYW5zbGF0aW9uICsgbWVudS5tZW51IHwgaTE4biB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdWw+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uYXY+XG4iXX0=
|
|
@@ -4,6 +4,8 @@ import { BehaviorSubject, combineLatest } from 'rxjs';
|
|
|
4
4
|
import { map } from 'rxjs/operators';
|
|
5
5
|
import { OverlayConfig } from '@angular/cdk/overlay';
|
|
6
6
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
7
|
+
import equal from 'fast-deep-equal/es6';
|
|
8
|
+
import { SubscriptionnerDirective } from '../../../dashboard/components/subscriptionner.directive';
|
|
7
9
|
import * as i0 from "@angular/core";
|
|
8
10
|
import * as i1 from "@angular/cdk/overlay";
|
|
9
11
|
import * as i2 from "@angular/common";
|
|
@@ -11,7 +13,7 @@ import * as i3 from "@angular/forms";
|
|
|
11
13
|
import * as i4 from "../icon/icon.component";
|
|
12
14
|
import * as i5 from "../../i18n/i18n.pipe";
|
|
13
15
|
let uniqueId = 0;
|
|
14
|
-
export class PrySelectComponent {
|
|
16
|
+
export class PrySelectComponent extends SubscriptionnerDirective {
|
|
15
17
|
set items(items) {
|
|
16
18
|
this._items$.next(items ?? []);
|
|
17
19
|
}
|
|
@@ -22,6 +24,7 @@ export class PrySelectComponent {
|
|
|
22
24
|
return 'select-modal-' + this.id;
|
|
23
25
|
}
|
|
24
26
|
constructor(_cd, overlay, viewContainerRef) {
|
|
27
|
+
super();
|
|
25
28
|
this._cd = _cd;
|
|
26
29
|
this.overlay = overlay;
|
|
27
30
|
this.viewContainerRef = viewContainerRef;
|
|
@@ -47,16 +50,31 @@ export class PrySelectComponent {
|
|
|
47
50
|
this._disabled = false;
|
|
48
51
|
this.focused = false;
|
|
49
52
|
this.modalWidth = 200;
|
|
50
|
-
this.matchingItems$ = combineLatest([this._items$, this.search$, this.searchSelected$]).pipe(map(([items, term, alreadySelected]) => term && term.length > 0 && !alreadySelected
|
|
53
|
+
this.matchingItems$ = combineLatest([this._items$, this.search$, this.searchSelected$]).pipe(map(([items, term, alreadySelected]) => this.autocomplete && term && term.length > 0 && !alreadySelected
|
|
51
54
|
? items.filter((i) => {
|
|
52
55
|
const itemValue = this.bindLabel ? i?.[this.bindLabel] : i;
|
|
53
56
|
return itemValue.indexOf(term) > -1;
|
|
54
57
|
})
|
|
55
58
|
: items));
|
|
56
|
-
this.valueItems$ = combineLatest([this.value$, this._items$]).pipe(map(([value, items]) => (this.multiple ? value ?? [] : !!value ? [value] : []).map((value) =>
|
|
57
|
-
const
|
|
58
|
-
return
|
|
59
|
-
|
|
59
|
+
this.valueItems$ = combineLatest([this.value$, this._items$]).pipe(map(([value, items]) => (this.multiple ? value ?? [] : !!value ? [value] : []).map((value) => {
|
|
60
|
+
const keyProp = this.bindValue ?? this.bindLabel ?? 'id';
|
|
61
|
+
return items.find((item) => {
|
|
62
|
+
return typeof item === 'object'
|
|
63
|
+
? typeof value === 'object'
|
|
64
|
+
? item[keyProp] === value[keyProp]
|
|
65
|
+
: item[keyProp] === value
|
|
66
|
+
: item === value;
|
|
67
|
+
});
|
|
68
|
+
})));
|
|
69
|
+
this.subscriptions.add(this.valueItems$.subscribe((item) => {
|
|
70
|
+
if (!this.multiple) {
|
|
71
|
+
const itemValue = this.bindLabel ? item[0]?.[this.bindLabel] : item[0];
|
|
72
|
+
if (itemValue) {
|
|
73
|
+
this.search$.next(itemValue);
|
|
74
|
+
this.searchSelected$.next(true);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}));
|
|
60
78
|
}
|
|
61
79
|
registerOnChange(fn) {
|
|
62
80
|
this._onChange = fn;
|
|
@@ -69,7 +87,7 @@ export class PrySelectComponent {
|
|
|
69
87
|
this._cd.markForCheck();
|
|
70
88
|
}
|
|
71
89
|
writeValue(obj) {
|
|
72
|
-
if (this.value$.getValue()
|
|
90
|
+
if (!equal(this.value$.getValue(), obj)) {
|
|
73
91
|
this.value$.next(obj);
|
|
74
92
|
this._onChange(this.value$.getValue());
|
|
75
93
|
this._onTouched();
|
|
@@ -81,7 +99,10 @@ export class PrySelectComponent {
|
|
|
81
99
|
clear($event, item) {
|
|
82
100
|
$event.stopPropagation();
|
|
83
101
|
const itemValue = this.bindValue ? item?.[this.bindValue] : item;
|
|
84
|
-
this.
|
|
102
|
+
const keyProp = this.bindValue ?? this.bindLabel ?? 'id';
|
|
103
|
+
this.writeValue(this.value$
|
|
104
|
+
.getValue()
|
|
105
|
+
.filter((i) => (typeof itemValue === 'object' ? i[keyProp] !== itemValue[keyProp] : i !== itemValue)));
|
|
85
106
|
}
|
|
86
107
|
clearAll($event) {
|
|
87
108
|
$event.stopPropagation();
|
|
@@ -101,12 +122,18 @@ export class PrySelectComponent {
|
|
|
101
122
|
}
|
|
102
123
|
select($event, item, index) {
|
|
103
124
|
const itemValue = this.bindValue ? item?.[this.bindValue] : item;
|
|
125
|
+
const keyProp = this.bindValue ?? this.bindLabel ?? 'id';
|
|
104
126
|
if (this.multiple) {
|
|
105
127
|
if (!this.value$.getValue()) {
|
|
106
128
|
this.writeValue([itemValue]);
|
|
107
129
|
}
|
|
108
130
|
else {
|
|
109
|
-
if (
|
|
131
|
+
if (typeof itemValue === 'object'
|
|
132
|
+
? this.value$
|
|
133
|
+
.getValue()
|
|
134
|
+
.map((val) => val[keyProp])
|
|
135
|
+
.includes(itemValue[keyProp])
|
|
136
|
+
: this.value$.getValue().includes(itemValue)) {
|
|
110
137
|
this.clear($event, item);
|
|
111
138
|
}
|
|
112
139
|
else {
|
|
@@ -134,7 +161,9 @@ export class PrySelectComponent {
|
|
|
134
161
|
this.overlayRef = this.overlay.create(this.getOverlayConfig());
|
|
135
162
|
this.overlayRef.backdropClick().subscribe(() => {
|
|
136
163
|
this.toggle(false);
|
|
137
|
-
|
|
164
|
+
if (this.autocomplete) {
|
|
165
|
+
this.writeValue(this.search$.getValue());
|
|
166
|
+
}
|
|
138
167
|
});
|
|
139
168
|
this.overlayRef.attach(new TemplatePortal(this.optionsModal, this.viewContainerRef));
|
|
140
169
|
}
|
|
@@ -183,7 +212,7 @@ export class PrySelectComponent {
|
|
|
183
212
|
useExisting: forwardRef(() => PrySelectComponent),
|
|
184
213
|
multi: true
|
|
185
214
|
}
|
|
186
|
-
], viewQueries: [{ propertyName: "optionsModal", first: true, predicate: ["optionsModal"], descendants: true, read: TemplateRef }, { propertyName: "selectElement", first: true, predicate: ["selectElement"], descendants: true }], ngImport: i0, template: "<div\n class=\"a-pry-select\"\n [attr.aria-disabled]=\"disabled\"\n #selectElement\n [class.-focused]=\"focused\"\n (click)=\"toggle()\"\n role=\"combobox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-owns]=\"open ? modalId : null\"\n aria-haspopup=\"listbox\"\n>\n <ng-container *ngIf=\"autocomplete; else noAutocomplete\">\n <input\n type=\"text\"\n class=\"a-pry-select__search\"\n [ngModel]=\"search$.getValue()\"\n (ngModelChange)=\"search($event)\"\n (focus)=\"toggle(true)\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"open ? modalId : null\"\n />\n </ng-container>\n <ng-template #noAutocomplete>\n <ng-container *ngIf=\"(valueItems$ | async).length === 0; else selectedValues\">\n <span class=\"a-pry-select__placeholder\">{{ placeholder }}</span>\n </ng-container>\n <ng-template #selectedValues>\n <ng-container *ngFor=\"let item of valueItems$ | async\">\n <div class=\"a-pry-select__value\" [class.pry-select-form]=\"isForm\" [class.-multiple]=\"multiple\">\n <ng-container *ngIf=\"template; else noTemplateLabel\">\n <ng-
|
|
215
|
+
], viewQueries: [{ propertyName: "optionsModal", first: true, predicate: ["optionsModal"], descendants: true, read: TemplateRef }, { propertyName: "selectElement", first: true, predicate: ["selectElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"a-pry-select\"\n [attr.aria-disabled]=\"disabled\"\n #selectElement\n [class.-focused]=\"focused\"\n (click)=\"toggle()\"\n role=\"combobox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-owns]=\"open ? modalId : null\"\n aria-haspopup=\"listbox\"\n>\n <ng-container *ngIf=\"autocomplete; else noAutocomplete\">\n <input\n type=\"text\"\n class=\"a-pry-select__search\"\n [ngModel]=\"search$.getValue()\"\n (ngModelChange)=\"search($event)\"\n (focus)=\"toggle(true)\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"open ? modalId : null\"\n [attr.aria-disabled]=\"disabled\"\n [disabled]=\"disabled\"\n />\n </ng-container>\n <ng-template #noAutocomplete>\n <ng-container *ngIf=\"(valueItems$ | async).length === 0; else selectedValues\">\n <span class=\"a-pry-select__placeholder\">{{ placeholder }}</span>\n </ng-container>\n <ng-template #selectedValues>\n <ng-container *ngFor=\"let item of valueItems$ | async\">\n <div class=\"a-pry-select__value\" [class.pry-select-form]=\"isForm\" [class.-multiple]=\"multiple\">\n <ng-container *ngIf=\"template; else noTemplateLabel\">\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-container>\n <ng-template #noTemplateLabel>\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n <ng-container *ngIf=\"bindLabel ? item?.[bindLabel] : item as value\">\n {{ (i18nPrefix ?? '') + value | i18n : { warn: false } }}\n <span\n *ngIf=\"multiple && clearable\"\n class=\"a-pry-select__clear\"\n (click)=\"clear($event, item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n </ng-container>\n </ng-template>\n </div>\n </ng-container>\n </ng-template>\n <div class=\"a-pry-select__filler\"></div>\n </ng-template>\n <span *ngIf=\"clearable\" class=\"a-pry-select__clear\" (click)=\"clearAll($event)\" aria-hidden=\"true\">\u00D7</span>\n <pry-icon\n class=\"a-pry-select__toggle\"\n [iconSvg]=\"open ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n</div>\n<ng-template #optionsModal>\n <div\n role=\"listbox\"\n [attr.aria-label]=\"'@pry.select.label' | i18n\"\n [id]=\"modalId\"\n [attr.aria-activedescendant]=\"'select-option-' + activeDescendant\"\n [attr.aria-multiselectable]=\"multiple\"\n [attr.required]=\"required\"\n [attr.aria-readonly]=\"readonly\"\n >\n <ng-container *ngFor=\"let item of matchingItems$ | async; let index = index\">\n <div\n class=\"a-pry-select__options__option\"\n [attr.aria-selected]=\"(valueItems$ | async).includes(item)\"\n [attr.aria-checked]=\"(valueItems$ | async).includes(item)\"\n [attr.aria-disabled]=\"disabled\"\n (click)=\"select($event, item, index)\"\n [style.width.px]=\"modalWidth\"\n role=\"option\"\n [id]=\"'select-option-' + index\"\n >\n <ng-container *ngIf=\"template; else noTemplate\">\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-container>\n <ng-template #noTemplate>\n <pry-icon *ngIf=\"bindIcon\" [iconSvg]=\"item[bindIcon]\" [width]=\"iconSize[0]\" [height]=\"iconSize[1]\"></pry-icon>\n <ng-container *ngIf=\"bindLabel ? item?.[bindLabel] : item as value\">\n {{ (i18nPrefix ? i18nPrefix : '') + value | i18n : { warn: false } }}\n </ng-container>\n </ng-template>\n </div>\n </ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.I18nPipe, name: "i18n" }] }); }
|
|
187
216
|
}
|
|
188
217
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PrySelectComponent, decorators: [{
|
|
189
218
|
type: Component,
|
|
@@ -193,7 +222,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
193
222
|
useExisting: forwardRef(() => PrySelectComponent),
|
|
194
223
|
multi: true
|
|
195
224
|
}
|
|
196
|
-
], template: "<div\n class=\"a-pry-select\"\n [attr.aria-disabled]=\"disabled\"\n #selectElement\n [class.-focused]=\"focused\"\n (click)=\"toggle()\"\n role=\"combobox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-owns]=\"open ? modalId : null\"\n aria-haspopup=\"listbox\"\n>\n <ng-container *ngIf=\"autocomplete; else noAutocomplete\">\n <input\n type=\"text\"\n class=\"a-pry-select__search\"\n [ngModel]=\"search$.getValue()\"\n (ngModelChange)=\"search($event)\"\n (focus)=\"toggle(true)\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"open ? modalId : null\"\n />\n </ng-container>\n <ng-template #noAutocomplete>\n <ng-container *ngIf=\"(valueItems$ | async).length === 0; else selectedValues\">\n <span class=\"a-pry-select__placeholder\">{{ placeholder }}</span>\n </ng-container>\n <ng-template #selectedValues>\n <ng-container *ngFor=\"let item of valueItems$ | async\">\n <div class=\"a-pry-select__value\" [class.pry-select-form]=\"isForm\" [class.-multiple]=\"multiple\">\n <ng-container *ngIf=\"template; else noTemplateLabel\">\n <ng-
|
|
225
|
+
], template: "<div\n class=\"a-pry-select\"\n [attr.aria-disabled]=\"disabled\"\n #selectElement\n [class.-focused]=\"focused\"\n (click)=\"toggle()\"\n role=\"combobox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-owns]=\"open ? modalId : null\"\n aria-haspopup=\"listbox\"\n>\n <ng-container *ngIf=\"autocomplete; else noAutocomplete\">\n <input\n type=\"text\"\n class=\"a-pry-select__search\"\n [ngModel]=\"search$.getValue()\"\n (ngModelChange)=\"search($event)\"\n (focus)=\"toggle(true)\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"open ? modalId : null\"\n [attr.aria-disabled]=\"disabled\"\n [disabled]=\"disabled\"\n />\n </ng-container>\n <ng-template #noAutocomplete>\n <ng-container *ngIf=\"(valueItems$ | async).length === 0; else selectedValues\">\n <span class=\"a-pry-select__placeholder\">{{ placeholder }}</span>\n </ng-container>\n <ng-template #selectedValues>\n <ng-container *ngFor=\"let item of valueItems$ | async\">\n <div class=\"a-pry-select__value\" [class.pry-select-form]=\"isForm\" [class.-multiple]=\"multiple\">\n <ng-container *ngIf=\"template; else noTemplateLabel\">\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-container>\n <ng-template #noTemplateLabel>\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n <ng-container *ngIf=\"bindLabel ? item?.[bindLabel] : item as value\">\n {{ (i18nPrefix ?? '') + value | i18n : { warn: false } }}\n <span\n *ngIf=\"multiple && clearable\"\n class=\"a-pry-select__clear\"\n (click)=\"clear($event, item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n </ng-container>\n </ng-template>\n </div>\n </ng-container>\n </ng-template>\n <div class=\"a-pry-select__filler\"></div>\n </ng-template>\n <span *ngIf=\"clearable\" class=\"a-pry-select__clear\" (click)=\"clearAll($event)\" aria-hidden=\"true\">\u00D7</span>\n <pry-icon\n class=\"a-pry-select__toggle\"\n [iconSvg]=\"open ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n</div>\n<ng-template #optionsModal>\n <div\n role=\"listbox\"\n [attr.aria-label]=\"'@pry.select.label' | i18n\"\n [id]=\"modalId\"\n [attr.aria-activedescendant]=\"'select-option-' + activeDescendant\"\n [attr.aria-multiselectable]=\"multiple\"\n [attr.required]=\"required\"\n [attr.aria-readonly]=\"readonly\"\n >\n <ng-container *ngFor=\"let item of matchingItems$ | async; let index = index\">\n <div\n class=\"a-pry-select__options__option\"\n [attr.aria-selected]=\"(valueItems$ | async).includes(item)\"\n [attr.aria-checked]=\"(valueItems$ | async).includes(item)\"\n [attr.aria-disabled]=\"disabled\"\n (click)=\"select($event, item, index)\"\n [style.width.px]=\"modalWidth\"\n role=\"option\"\n [id]=\"'select-option-' + index\"\n >\n <ng-container *ngIf=\"template; else noTemplate\">\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-container>\n <ng-template #noTemplate>\n <pry-icon *ngIf=\"bindIcon\" [iconSvg]=\"item[bindIcon]\" [width]=\"iconSize[0]\" [height]=\"iconSize[1]\"></pry-icon>\n <ng-container *ngIf=\"bindLabel ? item?.[bindLabel] : item as value\">\n {{ (i18nPrefix ? i18nPrefix : '') + value | i18n : { warn: false } }}\n </ng-container>\n </ng-template>\n </div>\n </ng-container>\n </div>\n</ng-template>\n" }]
|
|
197
226
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { items: [{
|
|
198
227
|
type: Input
|
|
199
228
|
}], clearable: [{
|
|
@@ -239,4 +268,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
239
268
|
}], elementRef: [{
|
|
240
269
|
type: Input
|
|
241
270
|
}] } });
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9jb3JlL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFFckQsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBY2pCLE1BQU0sT0FBTyxrQkFBa0I7SUFVN0IsSUFBYSxLQUFLLENBQUMsS0FBK0I7UUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFxQkQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFhRCxJQUFJLE9BQU87UUFDVCxPQUFPLGVBQWUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ25DLENB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QUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQVEyQyxZQUFZO3NCQUE3RCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ2IsYUFBYTtzQkFBL0MsU0FBUzt1QkFBQyxlQUFlO2dCQUNqQixVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxubGV0IHVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUHJ5U2VsZWN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFByeVNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcHVibGljIGlkOiBudW1iZXIgPSB1bmlxdWVJZCsrO1xuICBfaXRlbXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuICBtYXRjaGluZ0l0ZW1zJDogT2JzZXJ2YWJsZTxhbnk+O1xuICBvcGVuID0gZmFsc2U7XG4gIGFjdGl2ZURlc2NlbmRhbnQ6IG51bWJlciA9IC0xO1xuICB2YWx1ZUl0ZW1zJDogT2JzZXJ2YWJsZTxhbnk+O1xuICB2YWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4odW5kZWZpbmVkKTtcbiAgc2VhcmNoU2VsZWN0ZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgQElucHV0KCkgc2V0IGl0ZW1zKGl0ZW1zOiBhbnlbXSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9pdGVtcyQubmV4dChpdGVtcyA/PyBbXSk7XG4gIH1cblxuICBASW5wdXQoKSBjbGVhcmFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcbiAgQElucHV0KCkgY2xvc2VPblNlbGVjdCA9IHRydWU7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBASW5wdXQoKSBpc0Zvcm0gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQ/OiBhbnk7XG4gIEBJbnB1dCgpIG5hbWU/OiBhbnk7XG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGF1dG9jb21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBiaW5kVmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgYmluZExhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGljb25TaXplID0gWzE0LCAxNF07XG4gIEBJbnB1dCgpIGJpbmRJY29uOiBhbnk7XG4gIEBJbnB1dCgpIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgaTE4blByZWZpeDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBPdXRwdXQoKSBzZWFyY2hlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgY2xlYXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgc2VhcmNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuICBAVmlld0NoaWxkKCdvcHRpb25zTW9kYWwnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIG9wdGlvbnNNb2RhbCE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdEVsZW1lbnQnKSBwdWJsaWMgc2VsZWN0RWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBASW5wdXQoKSBlbGVtZW50UmVmITogSFRNTERpdkVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSBfb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkID0gKCkgPT4ge307XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG4gIGZvY3VzZWQgPSBmYWxzZTtcbiAgbW9kYWxXaWR0aCA9IDIwMDtcblxuICBnZXQgbW9kYWxJZCgpIHtcbiAgICByZXR1cm4gJ3NlbGVjdC1tb2RhbC0nICsgdGhpcy5pZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICB0aGlzLm1hdGNoaW5nSXRlbXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5faXRlbXMkLCB0aGlzLnNlYXJjaCQsIHRoaXMuc2VhcmNoU2VsZWN0ZWQkXSkucGlwZShcbiAgICAgIG1hcCgoW2l0ZW1zLCB0ZXJtLCBhbHJlYWR5U2VsZWN0ZWRdKSA9PlxuICAgICAgICB0ZXJtICYmIHRlcm0ubGVuZ3RoID4gMCAmJiAhYWxyZWFkeVNlbGVjdGVkXG4gICAgICAgICAgPyBpdGVtcy5maWx0ZXIoKGkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXRlbVZhbHVlID0gdGhpcy5iaW5kTGFiZWwgPyBpPy5bdGhpcy5iaW5kTGFiZWxdIDogaTtcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1WYWx1ZS5pbmRleE9mKHRlcm0pID4gLTE7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIDogaXRlbXNcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMudmFsdWVJdGVtcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnZhbHVlJCwgdGhpcy5faXRlbXMkXSkucGlwZShcbiAgICAgIG1hcCgoW3ZhbHVlLCBpdGVtc10pID0+XG4gICAgICAgICh0aGlzLm11bHRpcGxlID8gdmFsdWUgPz8gW10gOiAhIXZhbHVlID8gW3ZhbHVlXSA6IFtdKS5tYXAoKHZhbHVlOiBhbnkpID0+XG4gICAgICAgICAgaXRlbXMuZmluZCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbVZhbHVlID0gdGhpcy5iaW5kVmFsdWUgPyBpdGVtPy5bdGhpcy5iaW5kVmFsdWVdIDogaXRlbTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtVmFsdWUgPT09IHZhbHVlO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52YWx1ZSQuZ2V0VmFsdWUoKSAhPT0gb2JqKSB7XG4gICAgICB0aGlzLnZhbHVlJC5uZXh0KG9iaik7XG4gICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLnZhbHVlJC5nZXRWYWx1ZSgpKTtcbiAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLnNlYXJjaCQubmV4dChvYmopO1xuICAgICAgdGhpcy5zZWFyY2hTZWxlY3RlZCQubmV4dCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBjbGVhcigkZXZlbnQ6IEV2ZW50LCBpdGVtOiBhbnkpIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgaXRlbVZhbHVlID0gdGhpcy5iaW5kVmFsdWUgPyBpdGVtPy5bdGhpcy5iaW5kVmFsdWVdIDogaXRlbTtcbiAgICB0aGlzLndyaXRlVmFsdWUodGhpcy52YWx1ZSQuZ2V0VmFsdWUoKS5maWx0ZXIoKGk6IGFueSkgPT4gaSAhPT0gaXRlbVZhbHVlKSk7XG4gIH1cblxuICBjbGVhckFsbCgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUoW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgdGhpcy5zZWFyY2goJycpO1xuICAgIHRoaXMuY2xlYXJlZC5uZXh0KCk7XG4gIH1cblxuICBzZWFyY2goJGV2ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlYXJjaCQubmV4dCgkZXZlbnQpO1xuICAgIHRoaXMuc2VhcmNoZWQubmV4dCgkZXZlbnQpO1xuICAgIHRoaXMuc2VhcmNoU2VsZWN0ZWQkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgc2VsZWN0KCRldmVudDogRXZlbnQsIGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IHRoaXMuYmluZFZhbHVlID8gaXRlbT8uW3RoaXMuYmluZFZhbHVlXSA6IGl0ZW07XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGlmICghdGhpcy52YWx1ZSQuZ2V0VmFsdWUoKSkge1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUoW2l0ZW1WYWx1ZV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUkLmdldFZhbHVlKCkuaW5jbHVkZXMoaXRlbVZhbHVlKSkge1xuICAgICAgICAgIHRoaXMuY2xlYXIoJGV2ZW50LCBpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUoWy4uLnRoaXMudmFsdWUkLmdldFZhbHVlKCksIGl0ZW1WYWx1ZV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZShpdGVtVmFsdWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICB0aGlzLnRvZ2dsZShmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudCA9IGluZGV4O1xuICAgIGNvbnN0IGl0ZW1MYWJlbCA9IHRoaXMuYmluZExhYmVsID8gaXRlbT8uW3RoaXMuYmluZExhYmVsXSA6IGl0ZW07XG4gICAgdGhpcy5zZWFyY2gkLm5leHQoaXRlbUxhYmVsKTtcbiAgICB0aGlzLnNlYXJjaFNlbGVjdGVkJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgdG9nZ2xlKGZvcmNlPzogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgaWYgKHRoaXMub3BlbiAhPT0gZm9yY2UpIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZm9yY2UgIT09IHVuZGVmaW5lZCA/IGZvcmNlIDogIXRoaXMub3BlbjtcbiAgICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICAgIHRoaXMubW9kYWxXaWR0aCA9IHRoaXMuX2VsZW1lbnRSZWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggLSA1O1xuICAgICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUodGhpcy5nZXRPdmVybGF5Q29uZmlnKCkpO1xuICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLnNlYXJjaCQuZ2V0VmFsdWUoKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5vcHRpb25zTW9kYWwsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3ZlcmxheUNvbmZpZygpOiBPdmVybGF5Q29uZmlnIHtcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fZWxlbWVudFJlZilcbiAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICAgICAgICB9XG4gICAgICBdKTtcblxuICAgIGNvbnN0IHNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xuICAgIHJldHVybiBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHNjcm9sbFN0cmF0ZWd5LFxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBwYW5lbENsYXNzOiBbJ2EtcHJ5LXNlbGVjdF9fb3B0aW9ucyddLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2EtcHJ5LXNlbGVjdF9fYmFja2Ryb3AnXG4gICAgfSk7XG4gIH1cblxuICBnZXQgX2VsZW1lbnRSZWYoKTogSFRNTERpdkVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYgPz8gdGhpcy5zZWxlY3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgI3NlbGVjdEVsZW1lbnRcbiAgW2NsYXNzLi1mb2N1c2VkXT1cImZvY3VzZWRcIlxuICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICByb2xlPVwiY29tYm9ib3hcIlxuICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW5cIlxuICBbYXR0ci5hcmlhLW93bnNdPVwib3BlbiA/IG1vZGFsSWQgOiBudWxsXCJcbiAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXV0b2NvbXBsZXRlOyBlbHNlIG5vQXV0b2NvbXBsZXRlXCI+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdF9fc2VhcmNoXCJcbiAgICAgIFtuZ01vZGVsXT1cInNlYXJjaCQuZ2V0VmFsdWUoKVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAoZm9jdXMpPVwidG9nZ2xlKHRydWUpXCJcbiAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPVwibGlzdFwiXG4gICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIm9wZW4gPyBtb2RhbElkIDogbnVsbFwiXG4gICAgLz5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjbm9BdXRvY29tcGxldGU+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih2YWx1ZUl0ZW1zJCB8IGFzeW5jKS5sZW5ndGggPT09IDA7IGVsc2Ugc2VsZWN0ZWRWYWx1ZXNcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYS1wcnktc2VsZWN0X19wbGFjZWhvbGRlclwiPnt7IHBsYWNlaG9sZGVyIH19PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjc2VsZWN0ZWRWYWx1ZXM+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHZhbHVlSXRlbXMkIHwgYXN5bmNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImEtcHJ5LXNlbGVjdF9fdmFsdWVcIiBbY2xhc3MucHJ5LXNlbGVjdC1mb3JtXT1cImlzRm9ybVwiIFtjbGFzcy4tbXVsdGlwbGVdPVwibXVsdGlwbGVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVtcGxhdGU7IGVsc2Ugbm9UZW1wbGF0ZUxhYmVsXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWNsZWFyPVwiY2xlYXJcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW0sIGNsZWFyIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub1RlbXBsYXRlTGFiZWw+XG4gICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgKm5nSWY9XCJiaW5kSWNvblwiXG4gICAgICAgICAgICAgIFtpY29uU3ZnXT1cIml0ZW1bYmluZEljb25dXCJcbiAgICAgICAgICAgICAgW3dpZHRoXT1cImljb25TaXplWzBdXCJcbiAgICAgICAgICAgICAgW2hlaWdodF09XCJpY29uU2l6ZVsxXVwiXG4gICAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJiaW5kTGFiZWwgPyBpdGVtPy5bYmluZExhYmVsXSA6IGl0ZW0gYXMgdmFsdWVcIj5cbiAgICAgICAgICAgICAge3sgKGkxOG5QcmVmaXggPz8gJycpICsgdmFsdWUgfCBpMThuIDogeyB3YXJuOiBmYWxzZSB9IH19XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtdWx0aXBsZSAmJiBjbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0X19jbGVhclwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPsOXPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiYS1wcnktc2VsZWN0X19maWxsZXJcIj48L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPHNwYW4gKm5nSWY9XCJjbGVhcmFibGVcIiBjbGFzcz1cImEtcHJ5LXNlbGVjdF9fY2xlYXJcIiAoY2xpY2spPVwiY2xlYXJBbGwoJGV2ZW50KVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPsOXPC9zcGFuPlxuICA8cHJ5LWljb25cbiAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdF9fdG9nZ2xlXCJcbiAgICBbaWNvblN2Z109XCJvcGVuID8gJ2NoZXZyb25fdG9wJyA6ICdjaGV2cm9uX2JvdHRvbSdcIlxuICAgIFt3aWR0aF09XCJpY29uU2l6ZVswXVwiXG4gICAgW2hlaWdodF09XCJpY29uU2l6ZVsxXVwiXG4gID48L3ByeS1pY29uPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI29wdGlvbnNNb2RhbD5cbiAgPGRpdlxuICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidAcHJ5LnNlbGVjdC5sYWJlbCcgfCBpMThuXCJcbiAgICBbaWRdPVwibW9kYWxJZFwiXG4gICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cIidzZWxlY3Qtb3B0aW9uLScgKyBhY3RpdmVEZXNjZW5kYW50XCJcbiAgICBbYXR0ci5hcmlhLW11bHRpc2VsZWN0YWJsZV09XCJtdWx0aXBsZVwiXG4gICAgW2F0dHIucmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFthdHRyLmFyaWEtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtYXRjaGluZ0l0ZW1zJCB8IGFzeW5jOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdF9fb3B0aW9uc19fb3B0aW9uXCJcbiAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCIodmFsdWVJdGVtcyQgfCBhc3luYykuaW5jbHVkZXMoaXRlbSlcIlxuICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiKHZhbHVlSXRlbXMkIHwgYXN5bmMpLmluY2x1ZGVzKGl0ZW0pXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3QoJGV2ZW50LCBpdGVtLCBpbmRleClcIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwibW9kYWxXaWR0aFwiXG4gICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICBbaWRdPVwiJ3NlbGVjdC1vcHRpb24tJyArIGluZGV4XCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbXBsYXRlOyBlbHNlIG5vVGVtcGxhdGVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbSwgY2xlYXIgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNub1RlbXBsYXRlPlxuICAgICAgICAgIDxwcnktaWNvbiAqbmdJZj1cImJpbmRJY29uXCIgW2ljb25TdmddPVwiaXRlbVtiaW5kSWNvbl1cIiBbd2lkdGhdPVwiaWNvblNpemVbMF1cIiBbaGVpZ2h0XT1cImljb25TaXplWzFdXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYmluZExhYmVsID8gaXRlbT8uW2JpbmRMYWJlbF0gOiBpdGVtIGFzIHZhbHVlXCI+XG4gICAgICAgICAgICB7eyAoaTE4blByZWZpeCA/IGkxOG5QcmVmaXggOiAnJykgKyB2YWx1ZSB8IGkxOG4gOiB7IHdhcm46IGZhbHNlIH0gfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
271
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9jb3JlL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxLQUFLLE1BQU0scUJBQXFCLENBQUM7QUFDeEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seURBQXlELENBQUM7Ozs7Ozs7QUFFbkcsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBY2pCLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSx3QkFBd0I7SUFVOUQsSUFBYSxLQUFLLENBQUMsS0FBK0I7UUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFxQkQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJ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OytCQUNFLFlBQVksYUFHWDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQzs0QkFDakQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7NkpBWVksS0FBSztzQkFBakIsS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQVEyQyxZQUFZO3NCQUE3RCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ2IsYUFBYTtzQkFBL0MsU0FBUzt1QkFBQyxlQUFlO2dCQUNqQixVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwvZXM2JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2Rhc2hib2FyZC9jb21wb25lbnRzL3N1YnNjcmlwdGlvbm5lci5kaXJlY3RpdmUnO1xuXG5sZXQgdW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG5cbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQcnlTZWxlY3RDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUHJ5U2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwdWJsaWMgaWQ6IG51bWJlciA9IHVuaXF1ZUlkKys7XG4gIF9pdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gIG1hdGNoaW5nSXRlbXMkOiBPYnNlcnZhYmxlPGFueT47XG4gIG9wZW4gPSBmYWxzZTtcbiAgYWN0aXZlRGVzY2VuZGFudDogbnVtYmVyID0gLTE7XG4gIHZhbHVlSXRlbXMkOiBPYnNlcnZhYmxlPGFueT47XG4gIHZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih1bmRlZmluZWQpO1xuICBzZWFyY2hTZWxlY3RlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBASW5wdXQoKSBzZXQgaXRlbXMoaXRlbXM6IGFueVtdIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2l0ZW1zJC5uZXh0KGl0ZW1zID8/IFtdKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGNsZWFyYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBjbG9zZU9uU2VsZWN0ID0gdHJ1ZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzRm9ybSA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZD86IGFueTtcbiAgQElucHV0KCkgbmFtZT86IGFueTtcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGJpbmRWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBiaW5kTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgaWNvblNpemUgPSBbMTQsIDE0XTtcbiAgQElucHV0KCkgYmluZEljb246IGFueTtcbiAgQElucHV0KCkgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBpMThuUHJlZml4OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQE91dHB1dCgpIHNlYXJjaGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBjbGVhcmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBzZWFyY2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG4gIEBWaWV3Q2hpbGQoJ29wdGlvbnNNb2RhbCcsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgb3B0aW9uc01vZGFsITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0RWxlbWVudCcpIHB1YmxpYyBzZWxlY3RFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBJbnB1dCgpIGVsZW1lbnRSZWYhOiBIVE1MRGl2RWxlbWVudDtcblxuICBwcml2YXRlIF9vbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICBwcml2YXRlIF9vblRvdWNoZWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcbiAgZm9jdXNlZCA9IGZhbHNlO1xuICBtb2RhbFdpZHRoID0gMjAwO1xuXG4gIGdldCBtb2RhbElkKCkge1xuICAgIHJldHVybiAnc2VsZWN0LW1vZGFsLScgKyB0aGlzLmlkO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5tYXRjaGluZ0l0ZW1zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2l0ZW1zJCwgdGhpcy5zZWFyY2gkLCB0aGlzLnNlYXJjaFNlbGVjdGVkJF0pLnBpcGUoXG4gICAgICBtYXAoKFtpdGVtcywgdGVybSwgYWxyZWFkeVNlbGVjdGVkXSkgPT5cbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGUgJiYgdGVybSAmJiB0ZXJtLmxlbmd0aCA+IDAgJiYgIWFscmVhZHlTZWxlY3RlZFxuICAgICAgICAgID8gaXRlbXMuZmlsdGVyKChpKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IHRoaXMuYmluZExhYmVsID8gaT8uW3RoaXMuYmluZExhYmVsXSA6IGk7XG4gICAgICAgICAgICAgIHJldHVybiBpdGVtVmFsdWUuaW5kZXhPZih0ZXJtKSA+IC0xO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICA6IGl0ZW1zXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnZhbHVlSXRlbXMkID0gY29tYmluZUxhdGVzdChbdGhpcy52YWx1ZSQsIHRoaXMuX2l0ZW1zJF0pLnBpcGUoXG4gICAgICBtYXAoKFt2YWx1ZSwgaXRlbXNdKSA9PlxuICAgICAgICAodGhpcy5tdWx0aXBsZSA/IHZhbHVlID8/IFtdIDogISF2YWx1ZSA/IFt2YWx1ZV0gOiBbXSkubWFwKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3Qga2V5UHJvcCA9IHRoaXMuYmluZFZhbHVlID8/IHRoaXMuYmluZExhYmVsID8/ICdpZCc7XG4gICAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbmQoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgPyB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgPyBpdGVtW2tleVByb3BdID09PSB2YWx1ZVtrZXlQcm9wXVxuICAgICAgICAgICAgICAgIDogaXRlbVtrZXlQcm9wXSA9PT0gdmFsdWVcbiAgICAgICAgICAgICAgOiBpdGVtID09PSB2YWx1ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnZhbHVlSXRlbXMkLnN1YnNjcmliZSgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICBjb25zdCBpdGVtVmFsdWUgPSB0aGlzLmJpbmRMYWJlbCA/IGl0ZW1bMF0/Llt0aGlzLmJpbmRMYWJlbF0gOiBpdGVtWzBdO1xuICAgICAgICAgIGlmIChpdGVtVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoJC5uZXh0KGl0ZW1WYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFNlbGVjdGVkJC5uZXh0KHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIWVxdWFsKHRoaXMudmFsdWUkLmdldFZhbHVlKCksIG9iaikpIHtcbiAgICAgIHRoaXMudmFsdWUkLm5leHQob2JqKTtcbiAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMudmFsdWUkLmdldFZhbHVlKCkpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuc2VhcmNoJC5uZXh0KG9iaik7XG4gICAgICB0aGlzLnNlYXJjaFNlbGVjdGVkJC5uZXh0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyKCRldmVudDogRXZlbnQsIGl0ZW06IGFueSkge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBpdGVtVmFsdWUgPSB0aGlzLmJpbmRWYWx1ZSA/IGl0ZW0/Llt0aGlzLmJpbmRWYWx1ZV0gOiBpdGVtO1xuICAgIGNvbnN0IGtleVByb3AgPSB0aGlzLmJpbmRWYWx1ZSA/PyB0aGlzLmJpbmRMYWJlbCA/PyAnaWQnO1xuICAgIHRoaXMud3JpdGVWYWx1ZShcbiAgICAgIHRoaXMudmFsdWUkXG4gICAgICAgIC5nZXRWYWx1ZSgpXG4gICAgICAgIC5maWx0ZXIoKGk6IGFueSkgPT4gKHR5cGVvZiBpdGVtVmFsdWUgPT09ICdvYmplY3QnID8gaVtrZXlQcm9wXSAhPT0gaXRlbVZhbHVlW2tleVByb3BdIDogaSAhPT0gaXRlbVZhbHVlKSlcbiAgICApO1xuICB9XG5cbiAgY2xlYXJBbGwoJGV2ZW50OiBFdmVudCkge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKFtdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoKCcnKTtcbiAgICB0aGlzLmNsZWFyZWQubmV4dCgpO1xuICB9XG5cbiAgc2VhcmNoKCRldmVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWFyY2gkLm5leHQoJGV2ZW50KTtcbiAgICB0aGlzLnNlYXJjaGVkLm5leHQoJGV2ZW50KTtcbiAgICB0aGlzLnNlYXJjaFNlbGVjdGVkJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHNlbGVjdCgkZXZlbnQ6IEV2ZW50LCBpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBpdGVtVmFsdWUgPSB0aGlzLmJpbmRWYWx1ZSA/IGl0ZW0/Llt0aGlzLmJpbmRWYWx1ZV0gOiBpdGVtO1xuICAgIGNvbnN0IGtleVByb3AgPSB0aGlzLmJpbmRWYWx1ZSA/PyB0aGlzLmJpbmRMYWJlbCA/PyAnaWQnO1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICBpZiAoIXRoaXMudmFsdWUkLmdldFZhbHVlKCkpIHtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKFtpdGVtVmFsdWVdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0eXBlb2YgaXRlbVZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgPyB0aGlzLnZhbHVlJFxuICAgICAgICAgICAgICAgIC5nZXRWYWx1ZSgpXG4gICAgICAgICAgICAgICAgLm1hcCgodmFsOiBhbnkpID0+IHZhbFtrZXlQcm9wXSlcbiAgICAgICAgICAgICAgICAuaW5jbHVkZXMoaXRlbVZhbHVlW2tleVByb3BdKVxuICAgICAgICAgICAgOiB0aGlzLnZhbHVlJC5nZXRWYWx1ZSgpLmluY2x1ZGVzKGl0ZW1WYWx1ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5jbGVhcigkZXZlbnQsIGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShbLi4udGhpcy52YWx1ZSQuZ2V0VmFsdWUoKSwgaXRlbVZhbHVlXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKGl0ZW1WYWx1ZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgIHRoaXMudG9nZ2xlKGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50ID0gaW5kZXg7XG4gICAgY29uc3QgaXRlbUxhYmVsID0gdGhpcy5iaW5kTGFiZWwgPyBpdGVtPy5bdGhpcy5iaW5kTGFiZWxdIDogaXRlbTtcbiAgICB0aGlzLnNlYXJjaCQubmV4dChpdGVtTGFiZWwpO1xuICAgIHRoaXMuc2VhcmNoU2VsZWN0ZWQkLm5leHQodHJ1ZSk7XG4gIH1cblxuICB0b2dnbGUoZm9yY2U/OiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICBpZiAodGhpcy5vcGVuICE9PSBmb3JjZSkge1xuICAgICAgICB0aGlzLm9wZW4gPSBmb3JjZSAhPT0gdW5kZWZpbmVkID8gZm9yY2UgOiAhdGhpcy5vcGVuO1xuICAgICAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICAgICAgdGhpcy5tb2RhbFdpZHRoID0gdGhpcy5fZWxlbWVudFJlZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAtIDU7XG4gICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh0aGlzLmdldE92ZXJsYXlDb25maWcoKSk7XG4gICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoZmFsc2UpO1xuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlKSB7XG4gICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLnNlYXJjaCQuZ2V0VmFsdWUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5vcHRpb25zTW9kYWwsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3ZlcmxheUNvbmZpZygpOiBPdmVybGF5Q29uZmlnIHtcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fZWxlbWVudFJlZilcbiAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICAgICAgICB9XG4gICAgICBdKTtcblxuICAgIGNvbnN0IHNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xuICAgIHJldHVybiBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHNjcm9sbFN0cmF0ZWd5LFxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBwYW5lbENsYXNzOiBbJ2EtcHJ5LXNlbGVjdF9fb3B0aW9ucyddLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2EtcHJ5LXNlbGVjdF9fYmFja2Ryb3AnXG4gICAgfSk7XG4gIH1cblxuICBnZXQgX2VsZW1lbnRSZWYoKTogSFRNTERpdkVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYgPz8gdGhpcy5zZWxlY3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgI3NlbGVjdEVsZW1lbnRcbiAgW2NsYXNzLi1mb2N1c2VkXT1cImZvY3VzZWRcIlxuICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICByb2xlPVwiY29tYm9ib3hcIlxuICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW5cIlxuICBbYXR0ci5hcmlhLW93bnNdPVwib3BlbiA/IG1vZGFsSWQgOiBudWxsXCJcbiAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXV0b2NvbXBsZXRlOyBlbHNlIG5vQXV0b2NvbXBsZXRlXCI+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdF9fc2VhcmNoXCJcbiAgICAgIFtuZ01vZGVsXT1cInNlYXJjaCQuZ2V0VmFsdWUoKVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAoZm9jdXMpPVwidG9nZ2xlKHRydWUpXCJcbiAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPVwibGlzdFwiXG4gICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIm9wZW4gPyBtb2RhbElkIDogbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgLz5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjbm9BdXRvY29tcGxldGU+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih2YWx1ZUl0ZW1zJCB8IGFzeW5jKS5sZW5ndGggPT09IDA7IGVsc2Ugc2VsZWN0ZWRWYWx1ZXNcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYS1wcnktc2VsZWN0X19wbGFjZWhvbGRlclwiPnt7IHBsYWNlaG9sZGVyIH19PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjc2VsZWN0ZWRWYWx1ZXM+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHZhbHVlSXRlbXMkIHwgYXN5bmNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImEtcHJ5LXNlbGVjdF9fdmFsdWVcIiBbY2xhc3MucHJ5LXNlbGVjdC1mb3JtXT1cImlzRm9ybVwiIFtjbGFzcy4tbXVsdGlwbGVdPVwibXVsdGlwbGVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVtcGxhdGU7IGVsc2Ugbm9UZW1wbGF0ZUxhYmVsXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbSwgY2xlYXIgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9UZW1wbGF0ZUxhYmVsPlxuICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICpuZ0lmPVwiYmluZEljb25cIlxuICAgICAgICAgICAgICBbaWNvblN2Z109XCJpdGVtW2JpbmRJY29uXVwiXG4gICAgICAgICAgICAgIFt3aWR0aF09XCJpY29uU2l6ZVswXVwiXG4gICAgICAgICAgICAgIFtoZWlnaHRdPVwiaWNvblNpemVbMV1cIlxuICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYmluZExhYmVsID8gaXRlbT8uW2JpbmRMYWJlbF0gOiBpdGVtIGFzIHZhbHVlXCI+XG4gICAgICAgICAgICAgIHt7IChpMThuUHJlZml4ID8/ICcnKSArIHZhbHVlIHwgaTE4biA6IHsgd2FybjogZmFsc2UgfSB9fVxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwibXVsdGlwbGUgJiYgY2xlYXJhYmxlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdF9fY2xlYXJcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgID7Dlzwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImEtcHJ5LXNlbGVjdF9fZmlsbGVyXCI+PC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxzcGFuICpuZ0lmPVwiY2xlYXJhYmxlXCIgY2xhc3M9XCJhLXByeS1zZWxlY3RfX2NsZWFyXCIgKGNsaWNrKT1cImNsZWFyQWxsKCRldmVudClcIiBhcmlhLWhpZGRlbj1cInRydWVcIj7Dlzwvc3Bhbj5cbiAgPHByeS1pY29uXG4gICAgY2xhc3M9XCJhLXByeS1zZWxlY3RfX3RvZ2dsZVwiXG4gICAgW2ljb25TdmddPVwib3BlbiA/ICdjaGV2cm9uX3RvcCcgOiAnY2hldnJvbl9ib3R0b20nXCJcbiAgICBbd2lkdGhdPVwiaWNvblNpemVbMF1cIlxuICAgIFtoZWlnaHRdPVwiaWNvblNpemVbMV1cIlxuICA+PC9wcnktaWNvbj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNvcHRpb25zTW9kYWw+XG4gIDxkaXZcbiAgICByb2xlPVwibGlzdGJveFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQHByeS5zZWxlY3QubGFiZWwnIHwgaTE4blwiXG4gICAgW2lkXT1cIm1vZGFsSWRcIlxuICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCInc2VsZWN0LW9wdGlvbi0nICsgYWN0aXZlRGVzY2VuZGFudFwiXG4gICAgW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdPVwibXVsdGlwbGVcIlxuICAgIFthdHRyLnJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbYXR0ci5hcmlhLXJlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbWF0Y2hpbmdJdGVtcyQgfCBhc3luYzsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RfX29wdGlvbnNfX29wdGlvblwiXG4gICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiKHZhbHVlSXRlbXMkIHwgYXN5bmMpLmluY2x1ZGVzKGl0ZW0pXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cIih2YWx1ZUl0ZW1zJCB8IGFzeW5jKS5pbmNsdWRlcyhpdGVtKVwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0KCRldmVudCwgaXRlbSwgaW5kZXgpXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIm1vZGFsV2lkdGhcIlxuICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgW2lkXT1cIidzZWxlY3Qtb3B0aW9uLScgKyBpbmRleFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZW1wbGF0ZTsgZWxzZSBub1RlbXBsYXRlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW0sIGNsZWFyIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9UZW1wbGF0ZT5cbiAgICAgICAgICA8cHJ5LWljb24gKm5nSWY9XCJiaW5kSWNvblwiIFtpY29uU3ZnXT1cIml0ZW1bYmluZEljb25dXCIgW3dpZHRoXT1cImljb25TaXplWzBdXCIgW2hlaWdodF09XCJpY29uU2l6ZVsxXVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJpbmRMYWJlbCA/IGl0ZW0/LltiaW5kTGFiZWxdIDogaXRlbSBhcyB2YWx1ZVwiPlxuICAgICAgICAgICAge3sgKGkxOG5QcmVmaXggPyBpMThuUHJlZml4IDogJycpICsgdmFsdWUgfCBpMThuIDogeyB3YXJuOiBmYWxzZSB9IH19XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|