@tetacom/ng-components 1.1.19 → 1.1.21
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/component/icon/icon/icon.component.d.ts +1 -4
- package/directive/scrollable/scrollable/scrollable.component.d.ts +7 -9
- package/esm2022/component/icon/icon/icon.component.mjs +2 -4
- package/esm2022/component/select/select/select.component.mjs +5 -3
- package/esm2022/directive/scrollable/scrollable/scrollable.component.mjs +33 -42
- package/fesm2022/tetacom-ng-components.mjs +114 -120
- package/fesm2022/tetacom-ng-components.mjs.map +1 -1
- package/package.json +1 -1
- package/style/icon.scss +1 -0
- package/style/list.scss +1 -1
- package/style/select.scss +0 -17
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
import { OnInit } from '@angular/core';
|
|
2
1
|
import { TetaSize } from '../../../common/enum/teta-size.enum';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class IconComponent
|
|
3
|
+
export declare class IconComponent {
|
|
5
4
|
name: string;
|
|
6
5
|
size: TetaSize;
|
|
7
6
|
palette: string;
|
|
8
7
|
class: any;
|
|
9
8
|
private get getClass();
|
|
10
|
-
constructor();
|
|
11
|
-
ngOnInit(): void;
|
|
12
9
|
getName(): string;
|
|
13
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<IconComponent, never>;
|
|
14
11
|
static ɵcmp: i0.ɵɵComponentDeclaration<IconComponent, "teta-icon", never, { "name": { "alias": "name"; "required": false; }; "size": { "alias": "size"; "required": false; }; "palette": { "alias": "palette"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, never, false, never>;
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Observable } from "rxjs";
|
|
1
|
+
import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export declare class ScrollableComponent implements OnInit, OnDestroy {
|
|
5
|
-
private
|
|
6
|
-
private _injector;
|
|
7
|
-
private _ngZone;
|
|
8
|
-
private _animationFrame;
|
|
4
|
+
private _cdr;
|
|
9
5
|
private _scrollDirective;
|
|
10
6
|
private _scrollableWrapper;
|
|
11
7
|
private _scrollbarVertical;
|
|
@@ -14,15 +10,17 @@ export declare class ScrollableComponent implements OnInit, OnDestroy {
|
|
|
14
10
|
showScrollbars: boolean;
|
|
15
11
|
contentClass: string | string[];
|
|
16
12
|
scroll: EventEmitter<Event>;
|
|
17
|
-
scrollSize:
|
|
13
|
+
scrollSize: {
|
|
18
14
|
clientHeight: number;
|
|
19
15
|
clientWidth: number;
|
|
20
16
|
scrollHeight: number;
|
|
21
17
|
scrollWidth: number;
|
|
22
|
-
}
|
|
18
|
+
};
|
|
23
19
|
private _container;
|
|
24
20
|
private _alive;
|
|
25
|
-
|
|
21
|
+
private _observer;
|
|
22
|
+
constructor(_cdr: ChangeDetectorRef);
|
|
23
|
+
private _observe;
|
|
26
24
|
scrollVertical(event: any): void;
|
|
27
25
|
scrollHorizontal(event: any): void;
|
|
28
26
|
ngOnInit(): void;
|
|
@@ -13,8 +13,6 @@ export class IconComponent {
|
|
|
13
13
|
}
|
|
14
14
|
return result.join(' ');
|
|
15
15
|
}
|
|
16
|
-
constructor() { }
|
|
17
|
-
ngOnInit() { }
|
|
18
16
|
getName() {
|
|
19
17
|
return `#${this.name}`;
|
|
20
18
|
}
|
|
@@ -24,7 +22,7 @@ export class IconComponent {
|
|
|
24
22
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: IconComponent, decorators: [{
|
|
25
23
|
type: Component,
|
|
26
24
|
args: [{ selector: 'teta-icon', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg class=\"icon__image\">\n <use [attr.xlink:href]=\"getName()\"></use>\n</svg>\n" }]
|
|
27
|
-
}],
|
|
25
|
+
}], propDecorators: { name: [{
|
|
28
26
|
type: Input
|
|
29
27
|
}], size: [{
|
|
30
28
|
type: Input
|
|
@@ -36,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
|
|
|
36
34
|
type: HostBinding,
|
|
37
35
|
args: ['class']
|
|
38
36
|
}] } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2ljb24vaWNvbi9pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvaWNvbi9pY29uL2ljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBUS9ELE1BQU0sT0FBTyxhQUFhO0lBQ2YsSUFBSSxDQUFTO0lBQ2IsSUFBSSxHQUFhLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDNUIsT0FBTyxDQUFTO0lBRWhCLEtBQUssQ0FBQztJQUVmLElBQ1ksUUFBUTtRQUNsQixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNyQztRQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQzt1R0FsQlUsYUFBYTsyRkFBYixhQUFhLGlMQ2YxQixzRkFHQTs7MkZEWWEsYUFBYTtrQkFOekIsU0FBUzsrQkFDRSxXQUFXLG1CQUdKLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFHTSxRQUFRO3NCQURuQixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUZXRhU2l6ZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9lbnVtL3RldGEtc2l6ZS5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1pY29uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ljb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pY29uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBJY29uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplOiBUZXRhU2l6ZSA9IFRldGFTaXplLk07XG4gIEBJbnB1dCgpIHBhbGV0dGU6IHN0cmluZztcblxuICBASW5wdXQoKSBjbGFzcztcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHJpdmF0ZSBnZXQgZ2V0Q2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCByZXN1bHQgPSBbdGhpcy5jbGFzcywgJ2ljb24nXTtcbiAgICBpZiAodGhpcy5wYWxldHRlKSB7XG4gICAgICByZXN1bHQucHVzaChgaWNvbi0ke3RoaXMucGFsZXR0ZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdC5qb2luKCcgJyk7XG4gIH1cblxuICBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAjJHt0aGlzLm5hbWV9YDtcbiAgfVxufVxuIiwiPHN2ZyBjbGFzcz1cImljb25fX2ltYWdlXCI+XG4gIDx1c2UgW2F0dHIueGxpbms6aHJlZl09XCJnZXROYW1lKClcIj48L3VzZT5cbjwvc3ZnPlxuIl19
|
|
@@ -119,9 +119,11 @@ export class SelectComponent {
|
|
|
119
119
|
}
|
|
120
120
|
itemSelected(option) {
|
|
121
121
|
if (this.multiple) {
|
|
122
|
+
console.log(this.value?.indexOf(option) >= 0);
|
|
122
123
|
return this.value?.indexOf(option) >= 0;
|
|
123
124
|
}
|
|
124
125
|
else {
|
|
126
|
+
console.log(this.value === option);
|
|
125
127
|
return this.value === option;
|
|
126
128
|
}
|
|
127
129
|
}
|
|
@@ -210,7 +212,7 @@ export class SelectComponent {
|
|
|
210
212
|
useExisting: forwardRef(() => SelectComponent),
|
|
211
213
|
multi: true,
|
|
212
214
|
},
|
|
213
|
-
], queries: [{ propertyName: "optionDirective", first: true, predicate: SelectOptionDirective, descendants: true, static: true }, { propertyName: "valueDirective", first: true, predicate: SelectValueDirective, descendants: true, static: true }], ngImport: i0, template: "<ng-container *tetaLet='locale | async as loc'>\n <teta-dropdown [align]='align'\n [verticalAlign]='verticalAlign'\n [autoClose]='autoClose'\n [autoCloseIgnore]='autoCloseIgnore'\n [(open)]='open'\n [appendToBody]='appendToBody'\n [disabled]='disabled'\n [viewType]='viewType'\n class='row row_auto'>\n <div tetaDropdownHead\n [class]=\"'row row_auto select-head select_'+viewType\"\n [class.select-head_invalid]='invalid'>\n <div class='row_auto flex align-center'>\n <teta-icon *ngIf='icon' [name]='icon' [palette]=\"'text'\" class='margin-right-1'></teta-icon>\n <span class='placeholder' *ngIf='(value=== null ||value=== undefined || value?.length === 0)&&!multiple'>\n {{placeholder || loc.notSelected}}\n </span>\n <ng-container\n *ngTemplateOutlet='valueDirective ? valueDirective.template : valueDefault; context: {$implicit: value, value: value}'></ng-container>\n </div>\n <teta-icon [name]=\"'arrowDownSmall'\" [palette]=\"'text'\"></teta-icon>\n </div>\n <div *ngIf='options?.length'\n tetaDropdownContent\n class='select-body row_auto'\n (click)='$event.preventDefault()'>\n <ng-container *ngIf='searchRef'>\n <div class='select-search padding-h-2'>\n <teta-text-field [ngModel]='searchText'\n [class]=\"'select_'+viewType\"\n (ngModelChange)='search($event)'\n [placeholder]='loc.search'\n [leftIconName]=\"'search'\"></teta-text-field>\n </div>\n </ng-container>\n <ng-container *ngIf='visibleOptions?.length;else notFound '>\n <ng-container *ngIf='!multiple && allowNull'>\n <div [class]=\"'margin-h-2 list-item list-item_interactive select_'+viewType\"\n (click)='clear()'>\n {{loc.notSelected}}\n </div>\n <div class='list-divider margin-bottom-0'></div>\n </ng-container>\n <teta-scrollable *ngIf='virtual; else default' class='column column_auto padding-h-2'>\n <cdk-virtual-scroll-viewport tetaScrollable\n [itemSize]='40'\n minBufferPx='200'\n maxBufferPx='600'>\n <div [class]=\"'
|
|
215
|
+
], queries: [{ propertyName: "optionDirective", first: true, predicate: SelectOptionDirective, descendants: true, static: true }, { propertyName: "valueDirective", first: true, predicate: SelectValueDirective, descendants: true, static: true }], ngImport: i0, template: "<ng-container *tetaLet='locale | async as loc'>\n <teta-dropdown [align]='align'\n [verticalAlign]='verticalAlign'\n [autoClose]='autoClose'\n [autoCloseIgnore]='autoCloseIgnore'\n [(open)]='open'\n [appendToBody]='appendToBody'\n [disabled]='disabled'\n [viewType]='viewType'\n class='row row_auto'>\n <div tetaDropdownHead\n [class]=\"'row row_auto select-head select_'+viewType\"\n [class.select-head_invalid]='invalid'>\n <div class='row_auto flex align-center'>\n <teta-icon *ngIf='icon' [name]='icon' [palette]=\"'text'\" class='margin-right-1'></teta-icon>\n <span class='placeholder' *ngIf='(value=== null ||value=== undefined || value?.length === 0)&&!multiple'>\n {{placeholder || loc.notSelected}}\n </span>\n <ng-container\n *ngTemplateOutlet='valueDirective ? valueDirective.template : valueDefault; context: {$implicit: value, value: value}'></ng-container>\n </div>\n <teta-icon [name]=\"'arrowDownSmall'\" [palette]=\"'text'\"></teta-icon>\n </div>\n <div *ngIf='options?.length'\n tetaDropdownContent\n class='select-body row_auto'\n (click)='$event.preventDefault()'>\n <ng-container *ngIf='searchRef'>\n <div class='select-search padding-h-2'>\n <teta-text-field [ngModel]='searchText'\n [class]=\"'select_'+viewType\"\n (ngModelChange)='search($event)'\n [placeholder]='loc.search'\n [leftIconName]=\"'search'\"></teta-text-field>\n </div>\n </ng-container>\n <ng-container *ngIf='visibleOptions?.length;else notFound '>\n <ng-container *ngIf='!multiple && allowNull'>\n <div [class]=\"'margin-h-2 list-item list-item_interactive select_'+viewType\"\n (click)='clear()'>\n {{loc.notSelected}}\n </div>\n <div class='list-divider margin-bottom-0'></div>\n </ng-container>\n <teta-scrollable *ngIf='virtual; else default' class='column column_auto padding-h-2'>\n <cdk-virtual-scroll-viewport tetaScrollable\n [itemSize]='40'\n minBufferPx='200'\n maxBufferPx='600'>\n <div [class]=\"'list-item list-item_interactive justify-content-between select_'+viewType\"\n *cdkVirtualFor='let option of visibleOptions; templateCacheSize: 0;'\n [class.list-item_active]='itemSelected(option)'\n [tetaHighlight]='searchText'\n (click)='clickOption(option, $event)'>\n <div [tetaHighlight]='searchText'>\n <ng-container\n *ngTemplateOutlet='optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}'>\n </ng-container>\n </div>\n <teta-icon *ngIf='itemSelected(option)' [name]=\"'tick'\" [palette]=\"'text'\"\n class='margin-left-2'></teta-icon>\n </div>\n </cdk-virtual-scroll-viewport>\n </teta-scrollable>\n <ng-template #default>\n <teta-scrollable class='column column_auto padding-h-2' [contentClass]=\"['column', 'column_auto']\">\n <div class='list'>\n <div [class]=\"'list-item list-item_interactive justify-content-between select_'+viewType\"\n *ngFor='let option of visibleOptions'\n [class.list-item_active]='itemSelected(option)'\n (click)='clickOption(option, $event)'>\n <span [tetaHighlight]='searchText'>\n <ng-container\n *ngTemplateOutlet='optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}'>\n </ng-container>\n </span>\n <teta-icon *ngIf='itemSelected(option) && multiple' [name]=\"'tick'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </div>\n </teta-scrollable>\n </ng-template>\n </ng-container>\n <div class='row row_auto select-chip-field flex-wrap' *ngIf='multiple && value?.length'>\n <div *ngFor='let item of value' class='tag'>\n {{getText(item)}}\n <teta-icon class='cursor-pointer' [palette]=\"'text'\" [name]=\"'closeCircle'\"\n (click)='removeItemClick(item, $event)'></teta-icon>\n </div>\n </div>\n </div>\n </teta-dropdown>\n <ng-template #notFound>\n <p\n class='padding-h-3 text-overflow-ellipsis overflow-hidden select-not-found-option'>{{notFoundText || loc.notFound}}</p>\n </ng-template>\n <ng-template #optionDefault let-option>\n {{getText(option)}}\n </ng-template>\n <ng-template #valueDefault let-value>\n <div class='row_auto overflow-hidden text-overflow-ellipsis' *ngIf='multiple'>\n {{loc.selected + ' ' + value?.length}}\n </div>\n <ng-container *ngIf='!multiple'>\n <span class='row row_auto overflow-hidden text-overflow-ellipsis'>{{getText(value)}}</span>\n </ng-container>\n </ng-template>\n</ng-container>\n\n", styles: [""], dependencies: [{ kind: "component", type: i2.DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: i3.DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: i4.DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i6.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i6.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "directive", type: i9.HighlightDirective, selector: "[tetaHighlight]", inputs: ["tetaHighlight"] }, { kind: "component", type: i10.TextFieldComponent, selector: "teta-text-field", inputs: ["placeholder", "leftIconName", "disabled", "onlyNumber", "decimalPart", "invalid"] }, { kind: "directive", type: i11.LetDirective, selector: "[tetaLet]", inputs: ["tetaLet"] }, { kind: "directive", type: i12.ScrollableDirective, selector: "[tetaScrollable]" }, { kind: "component", type: i13.ScrollableComponent, selector: "teta-scrollable", inputs: ["direction", "showScrollbars", "contentClass"], outputs: ["scroll"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
214
216
|
}
|
|
215
217
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SelectComponent, decorators: [{
|
|
216
218
|
type: Component,
|
|
@@ -220,7 +222,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
|
|
|
220
222
|
useExisting: forwardRef(() => SelectComponent),
|
|
221
223
|
multi: true,
|
|
222
224
|
},
|
|
223
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *tetaLet='locale | async as loc'>\n <teta-dropdown [align]='align'\n [verticalAlign]='verticalAlign'\n [autoClose]='autoClose'\n [autoCloseIgnore]='autoCloseIgnore'\n [(open)]='open'\n [appendToBody]='appendToBody'\n [disabled]='disabled'\n [viewType]='viewType'\n class='row row_auto'>\n <div tetaDropdownHead\n [class]=\"'row row_auto select-head select_'+viewType\"\n [class.select-head_invalid]='invalid'>\n <div class='row_auto flex align-center'>\n <teta-icon *ngIf='icon' [name]='icon' [palette]=\"'text'\" class='margin-right-1'></teta-icon>\n <span class='placeholder' *ngIf='(value=== null ||value=== undefined || value?.length === 0)&&!multiple'>\n {{placeholder || loc.notSelected}}\n </span>\n <ng-container\n *ngTemplateOutlet='valueDirective ? valueDirective.template : valueDefault; context: {$implicit: value, value: value}'></ng-container>\n </div>\n <teta-icon [name]=\"'arrowDownSmall'\" [palette]=\"'text'\"></teta-icon>\n </div>\n <div *ngIf='options?.length'\n tetaDropdownContent\n class='select-body row_auto'\n (click)='$event.preventDefault()'>\n <ng-container *ngIf='searchRef'>\n <div class='select-search padding-h-2'>\n <teta-text-field [ngModel]='searchText'\n [class]=\"'select_'+viewType\"\n (ngModelChange)='search($event)'\n [placeholder]='loc.search'\n [leftIconName]=\"'search'\"></teta-text-field>\n </div>\n </ng-container>\n <ng-container *ngIf='visibleOptions?.length;else notFound '>\n <ng-container *ngIf='!multiple && allowNull'>\n <div [class]=\"'margin-h-2 list-item list-item_interactive select_'+viewType\"\n (click)='clear()'>\n {{loc.notSelected}}\n </div>\n <div class='list-divider margin-bottom-0'></div>\n </ng-container>\n <teta-scrollable *ngIf='virtual; else default' class='column column_auto padding-h-2'>\n <cdk-virtual-scroll-viewport tetaScrollable\n [itemSize]='40'\n minBufferPx='200'\n maxBufferPx='600'>\n <div [class]=\"'
|
|
225
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *tetaLet='locale | async as loc'>\n <teta-dropdown [align]='align'\n [verticalAlign]='verticalAlign'\n [autoClose]='autoClose'\n [autoCloseIgnore]='autoCloseIgnore'\n [(open)]='open'\n [appendToBody]='appendToBody'\n [disabled]='disabled'\n [viewType]='viewType'\n class='row row_auto'>\n <div tetaDropdownHead\n [class]=\"'row row_auto select-head select_'+viewType\"\n [class.select-head_invalid]='invalid'>\n <div class='row_auto flex align-center'>\n <teta-icon *ngIf='icon' [name]='icon' [palette]=\"'text'\" class='margin-right-1'></teta-icon>\n <span class='placeholder' *ngIf='(value=== null ||value=== undefined || value?.length === 0)&&!multiple'>\n {{placeholder || loc.notSelected}}\n </span>\n <ng-container\n *ngTemplateOutlet='valueDirective ? valueDirective.template : valueDefault; context: {$implicit: value, value: value}'></ng-container>\n </div>\n <teta-icon [name]=\"'arrowDownSmall'\" [palette]=\"'text'\"></teta-icon>\n </div>\n <div *ngIf='options?.length'\n tetaDropdownContent\n class='select-body row_auto'\n (click)='$event.preventDefault()'>\n <ng-container *ngIf='searchRef'>\n <div class='select-search padding-h-2'>\n <teta-text-field [ngModel]='searchText'\n [class]=\"'select_'+viewType\"\n (ngModelChange)='search($event)'\n [placeholder]='loc.search'\n [leftIconName]=\"'search'\"></teta-text-field>\n </div>\n </ng-container>\n <ng-container *ngIf='visibleOptions?.length;else notFound '>\n <ng-container *ngIf='!multiple && allowNull'>\n <div [class]=\"'margin-h-2 list-item list-item_interactive select_'+viewType\"\n (click)='clear()'>\n {{loc.notSelected}}\n </div>\n <div class='list-divider margin-bottom-0'></div>\n </ng-container>\n <teta-scrollable *ngIf='virtual; else default' class='column column_auto padding-h-2'>\n <cdk-virtual-scroll-viewport tetaScrollable\n [itemSize]='40'\n minBufferPx='200'\n maxBufferPx='600'>\n <div [class]=\"'list-item list-item_interactive justify-content-between select_'+viewType\"\n *cdkVirtualFor='let option of visibleOptions; templateCacheSize: 0;'\n [class.list-item_active]='itemSelected(option)'\n [tetaHighlight]='searchText'\n (click)='clickOption(option, $event)'>\n <div [tetaHighlight]='searchText'>\n <ng-container\n *ngTemplateOutlet='optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}'>\n </ng-container>\n </div>\n <teta-icon *ngIf='itemSelected(option)' [name]=\"'tick'\" [palette]=\"'text'\"\n class='margin-left-2'></teta-icon>\n </div>\n </cdk-virtual-scroll-viewport>\n </teta-scrollable>\n <ng-template #default>\n <teta-scrollable class='column column_auto padding-h-2' [contentClass]=\"['column', 'column_auto']\">\n <div class='list'>\n <div [class]=\"'list-item list-item_interactive justify-content-between select_'+viewType\"\n *ngFor='let option of visibleOptions'\n [class.list-item_active]='itemSelected(option)'\n (click)='clickOption(option, $event)'>\n <span [tetaHighlight]='searchText'>\n <ng-container\n *ngTemplateOutlet='optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}'>\n </ng-container>\n </span>\n <teta-icon *ngIf='itemSelected(option) && multiple' [name]=\"'tick'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </div>\n </teta-scrollable>\n </ng-template>\n </ng-container>\n <div class='row row_auto select-chip-field flex-wrap' *ngIf='multiple && value?.length'>\n <div *ngFor='let item of value' class='tag'>\n {{getText(item)}}\n <teta-icon class='cursor-pointer' [palette]=\"'text'\" [name]=\"'closeCircle'\"\n (click)='removeItemClick(item, $event)'></teta-icon>\n </div>\n </div>\n </div>\n </teta-dropdown>\n <ng-template #notFound>\n <p\n class='padding-h-3 text-overflow-ellipsis overflow-hidden select-not-found-option'>{{notFoundText || loc.notFound}}</p>\n </ng-template>\n <ng-template #optionDefault let-option>\n {{getText(option)}}\n </ng-template>\n <ng-template #valueDefault let-value>\n <div class='row_auto overflow-hidden text-overflow-ellipsis' *ngIf='multiple'>\n {{loc.selected + ' ' + value?.length}}\n </div>\n <ng-container *ngIf='!multiple'>\n <span class='row row_auto overflow-hidden text-overflow-ellipsis'>{{getText(value)}}</span>\n </ng-container>\n </ng-template>\n</ng-container>\n\n" }]
|
|
224
226
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.TetaConfigService }]; }, propDecorators: { multiple: [{
|
|
225
227
|
type: HostBinding,
|
|
226
228
|
args: ['class.select_multiple']
|
|
@@ -281,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
|
|
|
281
283
|
type: HostBinding,
|
|
282
284
|
args: ['class.select_disabled']
|
|
283
285
|
}] } });
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvc2VsZWN0L3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC9zZWxlY3Qvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBRVosVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXpFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFJekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWVqRSxNQUFNLE9BQU8sZUFBZTtJQThFaEI7SUFDQTtJQUNBO0lBN0VWLFFBQVEsQ0FBVTtJQUVsQixJQUFhLE9BQU8sQ0FBQyxPQUFjO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQ0UsSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJO1lBQzVCLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUztZQUNqQyxJQUFJLENBQUMsT0FBTyxFQUNaO1lBQ0EsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVRLE9BQU8sQ0FB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Q0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHTixlQUFlO3NCQURkLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlyRCxjQUFjO3NCQURiLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdsQixJQUFJO3NCQUFyQyxXQUFXO3VCQUFDLG1CQUFtQjtnQkFFYyxXQUFXO3NCQUF4RCxXQUFXO3VCQUFDLGNBQWM7Z0JBR2YsUUFBUTtzQkFEbkIsV0FBVzt1QkFBQyxVQUFVO2dCQU1uQixVQUFVO3NCQURiLFdBQVc7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXV0b0Nsb3NlSWdub3JlQ2FzZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9hdXRvLWNsb3NlLWlnbm9yZS1jYXNlJztcbmltcG9ydCB7IEFsaWduIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2VudW0vYWxpZ24uZW51bSc7XG5pbXBvcnQgeyBWZXJ0aWNhbEFsaWduIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2VudW0vdmVydGljYWwtYWxpZ24uZW51bSc7XG5pbXBvcnQgeyB2aWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9tb2RlbC92aWV3LXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgVGV0YUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9sb2NhbGUvdGV0YS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBUZXRhTG9jYWxpc2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbG9jYWxlL3RldGEtbG9jYWxpc2F0aW9uJztcbmltcG9ydCB7IFNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL3NlbGVjdC1vcHRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IFNlbGVjdFZhbHVlRGlyZWN0aXZlIH0gZnJvbSAnLi4vc2VsZWN0LXZhbHVlLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlbGVjdF9tdWx0aXBsZScpXG4gIEBJbnB1dCgpXG4gIG11bHRpcGxlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHNldCBvcHRpb25zKG9wdGlvbnM6IGFueVtdKSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgaWYgKFxuICAgICAgdGhpcy5faW50ZXJuYWxWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgdGhpcy5faW50ZXJuYWxWYWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLm9wdGlvbnNcbiAgICApIHtcbiAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRWYWx1ZSh0aGlzLl9pbnRlcm5hbFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIEBJbnB1dCgpIGludmFsaWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGFsaWduOiBBbGlnbiA9IEFsaWduLm1pbldpZHRoO1xuICBASW5wdXQoKSB2ZXJ0aWNhbEFsaWduOiBWZXJ0aWNhbEFsaWduID0gVmVydGljYWxBbGlnbi5hdXRvO1xuICBASW5wdXQoKSBhdXRvQ2xvc2UgPSB0cnVlO1xuICBASW5wdXQoKSBhdXRvQ2xvc2VJZ25vcmU6IEFycmF5PEF1dG9DbG9zZUlnbm9yZUNhc2U+ID0gWydpbnNpZGUnXTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGl0ZW1TaXplID0gMzI7XG4gIEBJbnB1dCgpIHZpcnR1YWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgYXBwZW5kVG9Cb2R5OiBib29sZWFuO1xuICBASW5wdXQoKSBhbGxvd051bGwgPSB0cnVlO1xuICBASW5wdXQoKSB2aWV3VHlwZTogdmlld1R5cGUgPSAncm91bmRlZCc7XG4gIEBJbnB1dCgpIG5vdEZvdW5kVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSB2YWx1ZVJlZjogKChpdGVtOiBhbnkpID0+IGFueSkgfCBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHRSZWY6ICgoaXRlbTogYW55KSA9PiBzdHJpbmcpIHwgc3RyaW5nO1xuICBASW5wdXQoKSBzZWFyY2hSZWY6IHN0cmluZyB8ICgoaXRlbTogYW55KSA9PiBzdHJpbmcpO1xuXG4gIEBDb250ZW50Q2hpbGQoU2VsZWN0T3B0aW9uRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBvcHRpb25EaXJlY3RpdmU6IFNlbGVjdE9wdGlvbkRpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkKFNlbGVjdFZhbHVlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICB2YWx1ZURpcmVjdGl2ZTogU2VsZWN0VmFsdWVEaXJlY3RpdmU7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZWxlY3Rfb3BlbicpIG9wZW4gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlbGVjdCcpIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0Q2xhc3MgPSB0cnVlO1xuXG4gIEBIb3N0QmluZGluZygndGFiaW5kZXgnKVxuICBwcml2YXRlIGdldCB0YWJpbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IG51bGwgOiAwO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZWxlY3RfZGlzYWJsZWQnKVxuICBnZXQgaXNEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZDtcbiAgfVxuXG4gIHZhbHVlOiBhbnkgfCBhbnlbXTtcbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuICBsb2NhbGU6IE9ic2VydmFibGU8VGV0YUxvY2FsaXNhdGlvbj47XG5cbiAgZ2V0IHZpc2libGVPcHRpb25zKCk6IGFueVtdIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoVGV4dCkge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVyKFxuICAgICAgb3B0aW9uID0+XG4gICAgICAgIHRoaXMuZ2V0U2VhcmNoU3RyaW5nKG9wdGlvbilcbiAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIC5pbmRleE9mKHRoaXMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSA+PSAwXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX29wdGlvbnM6IGFueSB8IGFueVtdO1xuICBwcml2YXRlIF9pbnRlcm5hbFZhbHVlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX2NvbmZpZzogVGV0YUNvbmZpZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLl9jb25maWcubG9jYWxlO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgbGV0IHZhbDogYW55O1xuICAgIGlmICh0aGlzLm11bHRpcGxlID09PSB0cnVlKSB7XG4gICAgICB2YWwgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy52YWx1ZSA9IHZhbDtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY2xpY2tPcHRpb24ob3B0aW9uOiBhbnksIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUgPT09IHRydWUpIHtcbiAgICAgIGlmICghdGhpcy52YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnZhbHVlLmluZGV4T2Yob3B0aW9uKSA+PSAwKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlSXRlbShvcHRpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IFsuLi50aGlzLnZhbHVlLCBvcHRpb25dO1xuICAgICAgfVxuICAgICAgdGhpcy5faW50ZXJuYWxWYWx1ZSA9IHRoaXMudmFsdWUubWFwKF8gPT4gdGhpcy5nZXRWYWx1ZShfKSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX2ludGVybmFsVmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gb3B0aW9uO1xuICAgICAgdGhpcy5faW50ZXJuYWxWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX2ludGVybmFsVmFsdWUpO1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgaXRlbVNlbGVjdGVkKG9wdGlvbjogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlPy5pbmRleE9mKG9wdGlvbikgPj0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IG9wdGlvbjtcbiAgICB9XG4gIH1cblxuICByZW1vdmVJdGVtQ2xpY2sob3B0aW9uOiBhbnksIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5yZW1vdmVJdGVtKG9wdGlvbik7XG4gICAgdGhpcy5faW50ZXJuYWxWYWx1ZSA9IHRoaXMudmFsdWUubWFwKF8gPT4gdGhpcy5nZXRWYWx1ZShfKSk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLl9pbnRlcm5hbFZhbHVlKTtcbiAgfVxuXG4gIHJlbW92ZUl0ZW0ob3B0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5maWx0ZXIoXyA9PiBfICE9PSBvcHRpb24pO1xuICB9XG5cbiAgc2VhcmNoKHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHRleHQ7XG4gIH1cblxuICBnZXRUZXh0KG9wdGlvbjogYW55KTogc3RyaW5nIHtcbiAgICBpZiAob3B0aW9uID09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgc3dpdGNoICh0eXBlb2YgdGhpcy50ZXh0UmVmKSB7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICByZXR1cm4gb3B0aW9uW3RoaXMudGV4dFJlZl07XG4gICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRSZWYob3B0aW9uKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBvcHRpb247XG4gICAgfVxuICB9XG5cbiAgZ2V0VmFsdWUob3B0aW9uOiBhbnkpOiBhbnkge1xuICAgIHN3aXRjaCAodHlwZW9mIHRoaXMudmFsdWVSZWYpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiBvcHRpb25bdGhpcy52YWx1ZVJlZl07XG4gICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlUmVmKG9wdGlvbik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH1cbiAgfVxuXG4gIGdldFNlYXJjaFN0cmluZyhvcHRpb246IGFueSk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0eXBlb2YgdGhpcy5zZWFyY2hSZWYpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiBvcHRpb25bdGhpcy5zZWFyY2hSZWZdO1xuICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hSZWYob3B0aW9uKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSB8IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy5faW50ZXJuYWxWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuZ2V0U2VsZWN0ZWRWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRWYWx1ZSh2YWx1ZTogYW55IHwgYW55W10pIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy52YWx1ZSA9XG4gICAgICAgIHZhbHVlICYmIHRoaXMub3B0aW9uc1xuICAgICAgICAgID8gdGhpcy5vcHRpb25zLmZpbHRlcihcbiAgICAgICAgICAgICAgb3B0aW9uID0+IHZhbHVlLmluZGV4T2YodGhpcy5nZXRWYWx1ZShvcHRpb24pKSA+IC0xXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9XG4gICAgICAgIHRoaXMub3B0aW9ucyAmJlxuICAgICAgICB0aGlzLm9wdGlvbnM/LmZpbmQob3B0aW9uID0+IHRoaXMuZ2V0VmFsdWUob3B0aW9uKSA9PT0gdmFsdWUpO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqdGV0YUxldD0nbG9jYWxlIHwgYXN5bmMgYXMgbG9jJz5cbiAgPHRldGEtZHJvcGRvd24gW2FsaWduXT0nYWxpZ24nXG4gICAgICAgICAgICAgICAgIFt2ZXJ0aWNhbEFsaWduXT0ndmVydGljYWxBbGlnbidcbiAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09J2F1dG9DbG9zZSdcbiAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZUlnbm9yZV09J2F1dG9DbG9zZUlnbm9yZSdcbiAgICAgICAgICAgICAgICAgWyhvcGVuKV09J29wZW4nXG4gICAgICAgICAgICAgICAgIFthcHBlbmRUb0JvZHldPSdhcHBlbmRUb0JvZHknXG4gICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09J2Rpc2FibGVkJ1xuICAgICAgICAgICAgICAgICBbdmlld1R5cGVdPSd2aWV3VHlwZSdcbiAgICAgICAgICAgICAgICAgY2xhc3M9J3JvdyByb3dfYXV0byc+XG4gICAgPGRpdiB0ZXRhRHJvcGRvd25IZWFkXG4gICAgICAgICBbY2xhc3NdPVwiJ3JvdyByb3dfYXV0byBzZWxlY3QtaGVhZCBzZWxlY3RfJyt2aWV3VHlwZVwiXG4gICAgICAgICBbY2xhc3Muc2VsZWN0LWhlYWRfaW52YWxpZF09J2ludmFsaWQnPlxuICAgICAgPGRpdiBjbGFzcz0ncm93X2F1dG8gZmxleCBhbGlnbi1jZW50ZXInPlxuICAgICAgICA8dGV0YS1pY29uICpuZ0lmPSdpY29uJyBbbmFtZV09J2ljb24nIFtwYWxldHRlXT1cIid0ZXh0J1wiIGNsYXNzPSdtYXJnaW4tcmlnaHQtMSc+PC90ZXRhLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPSdwbGFjZWhvbGRlcicgKm5nSWY9Jyh2YWx1ZT09PSBudWxsIHx8dmFsdWU9PT0gdW5kZWZpbmVkIHx8IHZhbHVlPy5sZW5ndGggPT09IDApJiYhbXVsdGlwbGUnPlxuICAgICAgICAgIHt7cGxhY2Vob2xkZXIgfHwgbG9jLm5vdFNlbGVjdGVkfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9J3ZhbHVlRGlyZWN0aXZlID8gdmFsdWVEaXJlY3RpdmUudGVtcGxhdGUgOiB2YWx1ZURlZmF1bHQ7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHZhbHVlLCB2YWx1ZTogdmFsdWV9Jz48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHRldGEtaWNvbiBbbmFtZV09XCInYXJyb3dEb3duU21hbGwnXCIgW3BhbGV0dGVdPVwiJ3RleHQnXCI+PC90ZXRhLWljb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj0nb3B0aW9ucz8ubGVuZ3RoJ1xuICAgICAgICAgdGV0YURyb3Bkb3duQ29udGVudFxuICAgICAgICAgY2xhc3M9J3NlbGVjdC1ib2R5IHJvd19hdXRvJ1xuICAgICAgICAgKGNsaWNrKT0nJGV2ZW50LnByZXZlbnREZWZhdWx0KCknPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj0nc2VhcmNoUmVmJz5cbiAgICAgICAgPGRpdiBjbGFzcz0nc2VsZWN0LXNlYXJjaCBwYWRkaW5nLWgtMic+XG4gICAgICAgICAgPHRldGEtdGV4dC1maWVsZCBbbmdNb2RlbF09J3NlYXJjaFRleHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3NlbGVjdF8nK3ZpZXdUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT0nc2VhcmNoKCRldmVudCknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPSdsb2Muc2VhcmNoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xlZnRJY29uTmFtZV09XCInc2VhcmNoJ1wiPjwvdGV0YS10ZXh0LWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj0ndmlzaWJsZU9wdGlvbnM/Lmxlbmd0aDtlbHNlIG5vdEZvdW5kICc+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9JyFtdWx0aXBsZSAmJiBhbGxvd051bGwnPlxuICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidtYXJnaW4taC0yIGxpc3QtaXRlbSBsaXN0LWl0ZW1faW50ZXJhY3RpdmUgc2VsZWN0Xycrdmlld1R5cGVcIlxuICAgICAgICAgICAgICAgKGNsaWNrKT0nY2xlYXIoKSc+XG4gICAgICAgICAgICB7e2xvYy5ub3RTZWxlY3RlZH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz0nbGlzdC1kaXZpZGVyIG1hcmdpbi1ib3R0b20tMCc+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8dGV0YS1zY3JvbGxhYmxlICpuZ0lmPSd2aXJ0dWFsOyBlbHNlIGRlZmF1bHQnIGNsYXNzPSdjb2x1bW4gY29sdW1uX2F1dG8gcGFkZGluZy1oLTInPlxuICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgdGV0YVNjcm9sbGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtU2l6ZV09JzQwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluQnVmZmVyUHg9JzIwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJ1ZmZlclB4PSc2MDAnPlxuICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ3NlbGVjdC1saXN0LWl0ZW0gc2VsZWN0LWxpc3QtaXRlbV9pbnRlcmFjdGl2ZSBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBzZWxlY3RfJyt2aWV3VHlwZVwiXG4gICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPSdsZXQgb3B0aW9uIG9mIHZpc2libGVPcHRpb25zOyB0ZW1wbGF0ZUNhY2hlU2l6ZTogMDsnXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3QtbGlzdC1pdGVtX2FjdGl2ZV09J2l0ZW1TZWxlY3RlZChvcHRpb24pJ1xuICAgICAgICAgICAgICAgICBbdGV0YUhpZ2hsaWdodF09J3NlYXJjaFRleHQnXG4gICAgICAgICAgICAgICAgIChjbGljayk9J2NsaWNrT3B0aW9uKG9wdGlvbiwgJGV2ZW50KSc+XG4gICAgICAgICAgICAgIDxkaXYgW3RldGFIaWdobGlnaHRdPSdzZWFyY2hUZXh0Jz5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD0nb3B0aW9uRGlyZWN0aXZlID8gb3B0aW9uRGlyZWN0aXZlLnRlbXBsYXRlIDogb3B0aW9uRGVmYXVsdDsgY29udGV4dDogeyRpbXBsaWNpdDogb3B0aW9uLCBvcHRpb246IG9wdGlvbn0nPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHRldGEtaWNvbiAqbmdJZj0naXRlbVNlbGVjdGVkKG9wdGlvbiknIFtuYW1lXT1cIid0aWNrJ1wiIFtwYWxldHRlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9J21hcmdpbi1sZWZ0LTInPjwvdGV0YS1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gICAgICAgIDwvdGV0YS1zY3JvbGxhYmxlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHQ+XG4gICAgICAgICAgPHRldGEtc2Nyb2xsYWJsZSBjbGFzcz0nY29sdW1uIGNvbHVtbl9hdXRvIHBhZGRpbmctaC0yJyBbY29udGVudENsYXNzXT1cIlsnY29sdW1uJywgJ2NvbHVtbl9hdXRvJ11cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9J3NlbGVjdC1saXN0Jz5cbiAgICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ2xpc3QtaXRlbSBsaXN0LWl0ZW1faW50ZXJhY3RpdmUganVzdGlmeS1jb250ZW50LWJldHdlZW4gIHNlbGVjdF8nK3ZpZXdUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAqbmdGb3I9J2xldCBvcHRpb24gb2YgdmlzaWJsZU9wdGlvbnMnXG4gICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdC1saXN0LWl0ZW1fYWN0aXZlXT0naXRlbVNlbGVjdGVkKG9wdGlvbikgJiYgbXVsdGlwbGUnXG4gICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdC1saXN0LWl0ZW1dPSdtdWx0aXBsZSdcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPSdjbGlja09wdGlvbihvcHRpb24sICRldmVudCknPlxuICAgICAgICAgICAgICA8c3BhbiBbdGV0YUhpZ2hsaWdodF09J3NlYXJjaFRleHQnPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PSdvcHRpb25EaXJlY3RpdmUgPyBvcHRpb25EaXJlY3RpdmUudGVtcGxhdGUgOiBvcHRpb25EZWZhdWx0OyBjb250ZXh0OiB7JGltcGxpY2l0OiBvcHRpb24sIG9wdGlvbjogb3B0aW9ufSc+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dGV0YS1pY29uICpuZ0lmPSdpdGVtU2VsZWN0ZWQob3B0aW9uKSAmJiBtdWx0aXBsZScgW25hbWVdPVwiJ3RpY2snXCIgW3BhbGV0dGVdPVwiJ3RleHQnXCI+PC90ZXRhLWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZXRhLXNjcm9sbGFibGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9J3JvdyByb3dfYXV0byBzZWxlY3QtY2hpcC1maWVsZCBmbGV4LXdyYXAnICpuZ0lmPSdtdWx0aXBsZSAmJiB2YWx1ZT8ubGVuZ3RoJz5cbiAgICAgICAgPGRpdiAqbmdGb3I9J2xldCBpdGVtIG9mIHZhbHVlJyBjbGFzcz0ndGFnJz5cbiAgICAgICAgICB7e2dldFRleHQoaXRlbSl9fVxuICAgICAgICAgIDx0ZXRhLWljb24gY2xhc3M9J2N1cnNvci1wb2ludGVyJyBbcGFsZXR0ZV09XCIndGV4dCdcIiBbbmFtZV09XCInY2xvc2VDaXJjbGUnXCJcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9J3JlbW92ZUl0ZW1DbGljayhpdGVtLCAkZXZlbnQpJz48L3RldGEtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC90ZXRhLWRyb3Bkb3duPlxuICA8bmctdGVtcGxhdGUgI25vdEZvdW5kPlxuICAgIDxwXG4gICAgICBjbGFzcz0ncGFkZGluZy1oLTMgdGV4dC1vdmVyZmxvdy1lbGxpcHNpcyBvdmVyZmxvdy1oaWRkZW4gc2VsZWN0LW5vdC1mb3VuZC1vcHRpb24nPnt7bm90Rm91bmRUZXh0IHx8IGxvYy5ub3RGb3VuZH19PC9wPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI29wdGlvbkRlZmF1bHQgbGV0LW9wdGlvbj5cbiAgICB7e2dldFRleHQob3B0aW9uKX19XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjdmFsdWVEZWZhdWx0IGxldC12YWx1ZT5cbiAgICA8ZGl2IGNsYXNzPSdyb3dfYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1vdmVyZmxvdy1lbGxpcHNpcycgKm5nSWY9J211bHRpcGxlJz5cbiAgICAgIHt7bG9jLnNlbGVjdGVkICsgJyAnICsgdmFsdWU/Lmxlbmd0aH19XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj0nIW11bHRpcGxlJz5cbiAgICAgIDxzcGFuIGNsYXNzPSdyb3cgcm93X2F1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtb3ZlcmZsb3ctZWxsaXBzaXMnPnt7Z2V0VGV4dCh2YWx1ZSl9fTwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=
|
|
286
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvc2VsZWN0L3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC9zZWxlY3Qvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBRVosVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXpFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFJekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWVqRSxNQUFNLE9BQU8sZUFBZTtJQThFaEI7SUFDQTtJQUNBO0lBN0VWLFFBQVEsQ0FBVTtJQUVsQixJQUFhLE9BQU8sQ0FBQyxPQUFjO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQ0UsSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJO1lBQzVCLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUztZQUNqQyxJQUFJLENBQUMsT0FBTyxFQUNaO1lBQ0EsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVRLE9BQU8sQ0FB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dkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHTixlQUFlO3NCQURkLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlyRCxjQUFjO3NCQURiLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdsQixJQUFJO3NCQUFyQyxXQUFXO3VCQUFDLG1CQUFtQjtnQkFFYyxXQUFXO3NCQUF4RCxXQUFXO3VCQUFDLGNBQWM7Z0JBR2YsUUFBUTtzQkFEbkIsV0FBVzt1QkFBQyxVQUFVO2dCQU1uQixVQUFVO3NCQURiLFdBQVc7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXV0b0Nsb3NlSWdub3JlQ2FzZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9hdXRvLWNsb3NlLWlnbm9yZS1jYXNlJztcbmltcG9ydCB7IEFsaWduIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2VudW0vYWxpZ24uZW51bSc7XG5pbXBvcnQgeyBWZXJ0aWNhbEFsaWduIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2VudW0vdmVydGljYWwtYWxpZ24uZW51bSc7XG5pbXBvcnQgeyB2aWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9tb2RlbC92aWV3LXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgVGV0YUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9sb2NhbGUvdGV0YS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBUZXRhTG9jYWxpc2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbG9jYWxlL3RldGEtbG9jYWxpc2F0aW9uJztcbmltcG9ydCB7IFNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL3NlbGVjdC1vcHRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IFNlbGVjdFZhbHVlRGlyZWN0aXZlIH0gZnJvbSAnLi4vc2VsZWN0LXZhbHVlLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlbGVjdF9tdWx0aXBsZScpXG4gIEBJbnB1dCgpXG4gIG11bHRpcGxlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHNldCBvcHRpb25zKG9wdGlvbnM6IGFueVtdKSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgaWYgKFxuICAgICAgdGhpcy5faW50ZXJuYWxWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgdGhpcy5faW50ZXJuYWxWYWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLm9wdGlvbnNcbiAgICApIHtcbiAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRWYWx1ZSh0aGlzLl9pbnRlcm5hbFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIEBJbnB1dCgpIGludmFsaWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGFsaWduOiBBbGlnbiA9IEFsaWduLm1pbldpZHRoO1xuICBASW5wdXQoKSB2ZXJ0aWNhbEFsaWduOiBWZXJ0aWNhbEFsaWduID0gVmVydGljYWxBbGlnbi5hdXRvO1xuICBASW5wdXQoKSBhdXRvQ2xvc2UgPSB0cnVlO1xuICBASW5wdXQoKSBhdXRvQ2xvc2VJZ25vcmU6IEFycmF5PEF1dG9DbG9zZUlnbm9yZUNhc2U+ID0gWydpbnNpZGUnXTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGl0ZW1TaXplID0gMzI7XG4gIEBJbnB1dCgpIHZpcnR1YWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgYXBwZW5kVG9Cb2R5OiBib29sZWFuO1xuICBASW5wdXQoKSBhbGxvd051bGwgPSB0cnVlO1xuICBASW5wdXQoKSB2aWV3VHlwZTogdmlld1R5cGUgPSAncm91bmRlZCc7XG4gIEBJbnB1dCgpIG5vdEZvdW5kVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSB2YWx1ZVJlZjogKChpdGVtOiBhbnkpID0+IGFueSkgfCBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHRSZWY6ICgoaXRlbTogYW55KSA9PiBzdHJpbmcpIHwgc3RyaW5nO1xuICBASW5wdXQoKSBzZWFyY2hSZWY6IHN0cmluZyB8ICgoaXRlbTogYW55KSA9PiBzdHJpbmcpO1xuXG4gIEBDb250ZW50Q2hpbGQoU2VsZWN0T3B0aW9uRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBvcHRpb25EaXJlY3RpdmU6IFNlbGVjdE9wdGlvbkRpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkKFNlbGVjdFZhbHVlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICB2YWx1ZURpcmVjdGl2ZTogU2VsZWN0VmFsdWVEaXJlY3RpdmU7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZWxlY3Rfb3BlbicpIG9wZW4gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlbGVjdCcpIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0Q2xhc3MgPSB0cnVlO1xuXG4gIEBIb3N0QmluZGluZygndGFiaW5kZXgnKVxuICBwcml2YXRlIGdldCB0YWJpbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IG51bGwgOiAwO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZWxlY3RfZGlzYWJsZWQnKVxuICBnZXQgaXNEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZDtcbiAgfVxuXG4gIHZhbHVlOiBhbnkgfCBhbnlbXTtcbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuICBsb2NhbGU6IE9ic2VydmFibGU8VGV0YUxvY2FsaXNhdGlvbj47XG5cbiAgZ2V0IHZpc2libGVPcHRpb25zKCk6IGFueVtdIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoVGV4dCkge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVyKFxuICAgICAgb3B0aW9uID0+XG4gICAgICAgIHRoaXMuZ2V0U2VhcmNoU3RyaW5nKG9wdGlvbilcbiAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIC5pbmRleE9mKHRoaXMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSA+PSAwXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX29wdGlvbnM6IGFueSB8IGFueVtdO1xuICBwcml2YXRlIF9pbnRlcm5hbFZhbHVlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX2NvbmZpZzogVGV0YUNvbmZpZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLl9jb25maWcubG9jYWxlO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgbGV0IHZhbDogYW55O1xuICAgIGlmICh0aGlzLm11bHRpcGxlID09PSB0cnVlKSB7XG4gICAgICB2YWwgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy52YWx1ZSA9IHZhbDtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY2xpY2tPcHRpb24ob3B0aW9uOiBhbnksIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUgPT09IHRydWUpIHtcbiAgICAgIGlmICghdGhpcy52YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnZhbHVlLmluZGV4T2Yob3B0aW9uKSA+PSAwKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlSXRlbShvcHRpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IFsuLi50aGlzLnZhbHVlLCBvcHRpb25dO1xuICAgICAgfVxuICAgICAgdGhpcy5faW50ZXJuYWxWYWx1ZSA9IHRoaXMudmFsdWUubWFwKF8gPT4gdGhpcy5nZXRWYWx1ZShfKSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX2ludGVybmFsVmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gb3B0aW9uO1xuICAgICAgdGhpcy5faW50ZXJuYWxWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX2ludGVybmFsVmFsdWUpO1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgaXRlbVNlbGVjdGVkKG9wdGlvbjogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMudmFsdWU/LmluZGV4T2Yob3B0aW9uKSA+PSAwKTtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlPy5pbmRleE9mKG9wdGlvbikgPj0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2codGhpcy52YWx1ZSA9PT0gb3B0aW9uKTtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBvcHRpb247XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlSXRlbUNsaWNrKG9wdGlvbjogYW55LCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMucmVtb3ZlSXRlbShvcHRpb24pO1xuICAgIHRoaXMuX2ludGVybmFsVmFsdWUgPSB0aGlzLnZhbHVlLm1hcChfID0+IHRoaXMuZ2V0VmFsdWUoXykpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5faW50ZXJuYWxWYWx1ZSk7XG4gIH1cblxuICByZW1vdmVJdGVtKG9wdGlvbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuZmlsdGVyKF8gPT4gXyAhPT0gb3B0aW9uKTtcbiAgfVxuXG4gIHNlYXJjaCh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB0ZXh0O1xuICB9XG5cbiAgZ2V0VGV4dChvcHRpb246IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKG9wdGlvbiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHN3aXRjaCAodHlwZW9mIHRoaXMudGV4dFJlZikge1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmV0dXJuIG9wdGlvblt0aGlzLnRleHRSZWZdO1xuICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICByZXR1cm4gdGhpcy50ZXh0UmVmKG9wdGlvbik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH1cbiAgfVxuXG4gIGdldFZhbHVlKG9wdGlvbjogYW55KTogYW55IHtcbiAgICBzd2l0Y2ggKHR5cGVvZiB0aGlzLnZhbHVlUmVmKSB7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICByZXR1cm4gb3B0aW9uW3RoaXMudmFsdWVSZWZdO1xuICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZVJlZihvcHRpb24pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9XG4gIH1cblxuICBnZXRTZWFyY2hTdHJpbmcob3B0aW9uOiBhbnkpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHlwZW9mIHRoaXMuc2VhcmNoUmVmKSB7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICByZXR1cm4gb3B0aW9uW3RoaXMuc2VhcmNoUmVmXTtcbiAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoUmVmKG9wdGlvbik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgZm9jdXMoKSB7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkgfCBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMuX2ludGVybmFsVmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmdldFNlbGVjdGVkVmFsdWUodmFsdWUpO1xuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFNlbGVjdGVkVmFsdWUodmFsdWU6IGFueSB8IGFueVtdKSB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMudmFsdWUgPVxuICAgICAgICB2YWx1ZSAmJiB0aGlzLm9wdGlvbnNcbiAgICAgICAgICA/IHRoaXMub3B0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgICAgIG9wdGlvbiA9PiB2YWx1ZS5pbmRleE9mKHRoaXMuZ2V0VmFsdWUob3B0aW9uKSkgPiAtMVxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPVxuICAgICAgICB0aGlzLm9wdGlvbnMgJiZcbiAgICAgICAgdGhpcy5vcHRpb25zPy5maW5kKG9wdGlvbiA9PiB0aGlzLmdldFZhbHVlKG9wdGlvbikgPT09IHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnRldGFMZXQ9J2xvY2FsZSB8IGFzeW5jIGFzIGxvYyc+XG4gIDx0ZXRhLWRyb3Bkb3duIFthbGlnbl09J2FsaWduJ1xuICAgICAgICAgICAgICAgICBbdmVydGljYWxBbGlnbl09J3ZlcnRpY2FsQWxpZ24nXG4gICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPSdhdXRvQ2xvc2UnXG4gICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VJZ25vcmVdPSdhdXRvQ2xvc2VJZ25vcmUnXG4gICAgICAgICAgICAgICAgIFsob3BlbildPSdvcGVuJ1xuICAgICAgICAgICAgICAgICBbYXBwZW5kVG9Cb2R5XT0nYXBwZW5kVG9Cb2R5J1xuICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPSdkaXNhYmxlZCdcbiAgICAgICAgICAgICAgICAgW3ZpZXdUeXBlXT0ndmlld1R5cGUnXG4gICAgICAgICAgICAgICAgIGNsYXNzPSdyb3cgcm93X2F1dG8nPlxuICAgIDxkaXYgdGV0YURyb3Bkb3duSGVhZFxuICAgICAgICAgW2NsYXNzXT1cIidyb3cgcm93X2F1dG8gc2VsZWN0LWhlYWQgc2VsZWN0Xycrdmlld1R5cGVcIlxuICAgICAgICAgW2NsYXNzLnNlbGVjdC1oZWFkX2ludmFsaWRdPSdpbnZhbGlkJz5cbiAgICAgIDxkaXYgY2xhc3M9J3Jvd19hdXRvIGZsZXggYWxpZ24tY2VudGVyJz5cbiAgICAgICAgPHRldGEtaWNvbiAqbmdJZj0naWNvbicgW25hbWVdPSdpY29uJyBbcGFsZXR0ZV09XCIndGV4dCdcIiBjbGFzcz0nbWFyZ2luLXJpZ2h0LTEnPjwvdGV0YS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz0ncGxhY2Vob2xkZXInICpuZ0lmPScodmFsdWU9PT0gbnVsbCB8fHZhbHVlPT09IHVuZGVmaW5lZCB8fCB2YWx1ZT8ubGVuZ3RoID09PSAwKSYmIW11bHRpcGxlJz5cbiAgICAgICAgICB7e3BsYWNlaG9sZGVyIHx8IGxvYy5ub3RTZWxlY3RlZH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PSd2YWx1ZURpcmVjdGl2ZSA/IHZhbHVlRGlyZWN0aXZlLnRlbXBsYXRlIDogdmFsdWVEZWZhdWx0OyBjb250ZXh0OiB7JGltcGxpY2l0OiB2YWx1ZSwgdmFsdWU6IHZhbHVlfSc+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDx0ZXRhLWljb24gW25hbWVdPVwiJ2Fycm93RG93blNtYWxsJ1wiIFtwYWxldHRlXT1cIid0ZXh0J1wiPjwvdGV0YS1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9J29wdGlvbnM/Lmxlbmd0aCdcbiAgICAgICAgIHRldGFEcm9wZG93bkNvbnRlbnRcbiAgICAgICAgIGNsYXNzPSdzZWxlY3QtYm9keSByb3dfYXV0bydcbiAgICAgICAgIChjbGljayk9JyRldmVudC5wcmV2ZW50RGVmYXVsdCgpJz5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9J3NlYXJjaFJlZic+XG4gICAgICAgIDxkaXYgY2xhc3M9J3NlbGVjdC1zZWFyY2ggcGFkZGluZy1oLTInPlxuICAgICAgICAgIDx0ZXRhLXRleHQtZmllbGQgW25nTW9kZWxdPSdzZWFyY2hUZXh0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidzZWxlY3RfJyt2aWV3VHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9J3NlYXJjaCgkZXZlbnQpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT0nbG9jLnNlYXJjaCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsZWZ0SWNvbk5hbWVdPVwiJ3NlYXJjaCdcIj48L3RldGEtdGV4dC1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9J3Zpc2libGVPcHRpb25zPy5sZW5ndGg7ZWxzZSBub3RGb3VuZCAnPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPSchbXVsdGlwbGUgJiYgYWxsb3dOdWxsJz5cbiAgICAgICAgICA8ZGl2IFtjbGFzc109XCInbWFyZ2luLWgtMiBsaXN0LWl0ZW0gbGlzdC1pdGVtX2ludGVyYWN0aXZlIHNlbGVjdF8nK3ZpZXdUeXBlXCJcbiAgICAgICAgICAgICAgIChjbGljayk9J2NsZWFyKCknPlxuICAgICAgICAgICAge3tsb2Mubm90U2VsZWN0ZWR9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9J2xpc3QtZGl2aWRlciBtYXJnaW4tYm90dG9tLTAnPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHRldGEtc2Nyb2xsYWJsZSAqbmdJZj0ndmlydHVhbDsgZWxzZSBkZWZhdWx0JyBjbGFzcz0nY29sdW1uIGNvbHVtbl9hdXRvIHBhZGRpbmctaC0yJz5cbiAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IHRldGFTY3JvbGxhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbVNpemVdPSc0MCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkJ1ZmZlclB4PScyMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCdWZmZXJQeD0nNjAwJz5cbiAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidsaXN0LWl0ZW0gbGlzdC1pdGVtX2ludGVyYWN0aXZlIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHNlbGVjdF8nK3ZpZXdUeXBlXCJcbiAgICAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9J2xldCBvcHRpb24gb2YgdmlzaWJsZU9wdGlvbnM7IHRlbXBsYXRlQ2FjaGVTaXplOiAwOydcbiAgICAgICAgICAgICAgICAgW2NsYXNzLmxpc3QtaXRlbV9hY3RpdmVdPSdpdGVtU2VsZWN0ZWQob3B0aW9uKSdcbiAgICAgICAgICAgICAgICAgW3RldGFIaWdobGlnaHRdPSdzZWFyY2hUZXh0J1xuICAgICAgICAgICAgICAgICAoY2xpY2spPSdjbGlja09wdGlvbihvcHRpb24sICRldmVudCknPlxuICAgICAgICAgICAgICA8ZGl2IFt0ZXRhSGlnaGxpZ2h0XT0nc2VhcmNoVGV4dCc+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9J29wdGlvbkRpcmVjdGl2ZSA/IG9wdGlvbkRpcmVjdGl2ZS50ZW1wbGF0ZSA6IG9wdGlvbkRlZmF1bHQ7IGNvbnRleHQ6IHskaW1wbGljaXQ6IG9wdGlvbiwgb3B0aW9uOiBvcHRpb259Jz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDx0ZXRhLWljb24gKm5nSWY9J2l0ZW1TZWxlY3RlZChvcHRpb24pJyBbbmFtZV09XCIndGljaydcIiBbcGFsZXR0ZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSdtYXJnaW4tbGVmdC0yJz48L3RldGEtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICAgICAgICA8L3RldGEtc2Nyb2xsYWJsZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0PlxuICAgICAgICAgIDx0ZXRhLXNjcm9sbGFibGUgY2xhc3M9J2NvbHVtbiBjb2x1bW5fYXV0byBwYWRkaW5nLWgtMicgW2NvbnRlbnRDbGFzc109XCJbJ2NvbHVtbicsICdjb2x1bW5fYXV0byddXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPSdsaXN0Jz5cbiAgICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ2xpc3QtaXRlbSBsaXN0LWl0ZW1faW50ZXJhY3RpdmUganVzdGlmeS1jb250ZW50LWJldHdlZW4gIHNlbGVjdF8nK3ZpZXdUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAqbmdGb3I9J2xldCBvcHRpb24gb2YgdmlzaWJsZU9wdGlvbnMnXG4gICAgICAgICAgICAgICAgICAgW2NsYXNzLmxpc3QtaXRlbV9hY3RpdmVdPSdpdGVtU2VsZWN0ZWQob3B0aW9uKSdcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPSdjbGlja09wdGlvbihvcHRpb24sICRldmVudCknPlxuICAgICAgICAgICAgICA8c3BhbiBbdGV0YUhpZ2hsaWdodF09J3NlYXJjaFRleHQnPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PSdvcHRpb25EaXJlY3RpdmUgPyBvcHRpb25EaXJlY3RpdmUudGVtcGxhdGUgOiBvcHRpb25EZWZhdWx0OyBjb250ZXh0OiB7JGltcGxpY2l0OiBvcHRpb24sIG9wdGlvbjogb3B0aW9ufSc+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dGV0YS1pY29uICpuZ0lmPSdpdGVtU2VsZWN0ZWQob3B0aW9uKSAmJiBtdWx0aXBsZScgW25hbWVdPVwiJ3RpY2snXCIgW3BhbGV0dGVdPVwiJ3RleHQnXCI+PC90ZXRhLWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZXRhLXNjcm9sbGFibGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9J3JvdyByb3dfYXV0byBzZWxlY3QtY2hpcC1maWVsZCBmbGV4LXdyYXAnICpuZ0lmPSdtdWx0aXBsZSAmJiB2YWx1ZT8ubGVuZ3RoJz5cbiAgICAgICAgPGRpdiAqbmdGb3I9J2xldCBpdGVtIG9mIHZhbHVlJyBjbGFzcz0ndGFnJz5cbiAgICAgICAgICB7e2dldFRleHQoaXRlbSl9fVxuICAgICAgICAgIDx0ZXRhLWljb24gY2xhc3M9J2N1cnNvci1wb2ludGVyJyBbcGFsZXR0ZV09XCIndGV4dCdcIiBbbmFtZV09XCInY2xvc2VDaXJjbGUnXCJcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9J3JlbW92ZUl0ZW1DbGljayhpdGVtLCAkZXZlbnQpJz48L3RldGEtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC90ZXRhLWRyb3Bkb3duPlxuICA8bmctdGVtcGxhdGUgI25vdEZvdW5kPlxuICAgIDxwXG4gICAgICBjbGFzcz0ncGFkZGluZy1oLTMgdGV4dC1vdmVyZmxvdy1lbGxpcHNpcyBvdmVyZmxvdy1oaWRkZW4gc2VsZWN0LW5vdC1mb3VuZC1vcHRpb24nPnt7bm90Rm91bmRUZXh0IHx8IGxvYy5ub3RGb3VuZH19PC9wPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI29wdGlvbkRlZmF1bHQgbGV0LW9wdGlvbj5cbiAgICB7e2dldFRleHQob3B0aW9uKX19XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjdmFsdWVEZWZhdWx0IGxldC12YWx1ZT5cbiAgICA8ZGl2IGNsYXNzPSdyb3dfYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1vdmVyZmxvdy1lbGxpcHNpcycgKm5nSWY9J211bHRpcGxlJz5cbiAgICAgIHt7bG9jLnNlbGVjdGVkICsgJyAnICsgdmFsdWU/Lmxlbmd0aH19XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj0nIW11bHRpcGxlJz5cbiAgICAgIDxzcGFuIGNsYXNzPSdyb3cgcm93X2F1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtb3ZlcmZsb3ctZWxsaXBzaXMnPnt7Z2V0VGV4dCh2YWx1ZSl9fTwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=
|
|
@@ -1,18 +1,11 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, HostBinding,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { map, takeWhile, throttleTime } from "rxjs/operators";
|
|
6
|
-
import { tetaZoneFull } from "../../../observable/zoneObservable";
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { fromEvent, tap } from 'rxjs';
|
|
3
|
+
import { takeWhile } from 'rxjs/operators';
|
|
4
|
+
import { ScrollableDirective } from '../scrollable.directive';
|
|
7
5
|
import * as i0 from "@angular/core";
|
|
8
6
|
import * as i1 from "@angular/common";
|
|
9
|
-
import * as i2 from "../../let/let.directive";
|
|
10
|
-
import * as i3 from "rxjs";
|
|
11
7
|
export class ScrollableComponent {
|
|
12
|
-
|
|
13
|
-
_injector;
|
|
14
|
-
_ngZone;
|
|
15
|
-
_animationFrame;
|
|
8
|
+
_cdr;
|
|
16
9
|
_scrollDirective;
|
|
17
10
|
_scrollableWrapper;
|
|
18
11
|
_scrollbarVertical;
|
|
@@ -24,29 +17,25 @@ export class ScrollableComponent {
|
|
|
24
17
|
scrollSize;
|
|
25
18
|
_container;
|
|
26
19
|
_alive = true;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
this.
|
|
30
|
-
this.
|
|
31
|
-
|
|
32
|
-
|
|
20
|
+
_observer;
|
|
21
|
+
constructor(_cdr) {
|
|
22
|
+
this._cdr = _cdr;
|
|
23
|
+
this._observer = new ResizeObserver(this._observe);
|
|
24
|
+
}
|
|
25
|
+
_observe = () => {
|
|
26
|
+
this.scrollSize = {
|
|
33
27
|
scrollHeight: this._container.nativeElement.scrollHeight,
|
|
34
28
|
scrollWidth: this._container.nativeElement.scrollWidth,
|
|
35
29
|
clientHeight: this._container.nativeElement.clientHeight,
|
|
36
30
|
clientWidth: this._container.nativeElement.clientWidth,
|
|
37
|
-
}
|
|
38
|
-
|
|
31
|
+
};
|
|
32
|
+
this._cdr.detectChanges();
|
|
33
|
+
};
|
|
39
34
|
scrollVertical(event) {
|
|
40
35
|
this._container.nativeElement.scrollTop = event.target.scrollTop;
|
|
41
|
-
// event.scrollLeft = this._container.nativeElement.scrollLeft;
|
|
42
|
-
// this._elementRef.nativeElement.dispatchEvent(event);
|
|
43
|
-
// this.scroll.emit(event);
|
|
44
36
|
}
|
|
45
37
|
scrollHorizontal(event) {
|
|
46
38
|
this._container.nativeElement.scrollLeft = event.target.scrollLeft;
|
|
47
|
-
// event.scrollTop = this._container.nativeElement.scrollTop;
|
|
48
|
-
// this._elementRef.nativeElement.dispatchEvent(event);
|
|
49
|
-
// this.scroll.emit(event);
|
|
50
39
|
}
|
|
51
40
|
ngOnInit() {
|
|
52
41
|
this._container = this._scrollableWrapper;
|
|
@@ -55,44 +44,46 @@ export class ScrollableComponent {
|
|
|
55
44
|
}
|
|
56
45
|
fromEvent(this._container.nativeElement, 'scroll')
|
|
57
46
|
.pipe(takeWhile(() => this._alive), tap((event) => {
|
|
58
|
-
this._scrollbarHorizontal.nativeElement.scrollLeft =
|
|
59
|
-
|
|
60
|
-
|
|
47
|
+
this._scrollbarHorizontal.nativeElement.scrollLeft =
|
|
48
|
+
event.target.scrollLeft;
|
|
49
|
+
this._scrollbarVertical.nativeElement.scrollTop =
|
|
50
|
+
event.target.scrollTop;
|
|
61
51
|
this.scroll.emit(event);
|
|
62
|
-
}))
|
|
52
|
+
}))
|
|
53
|
+
.subscribe();
|
|
54
|
+
this._observer.observe(this._container.nativeElement);
|
|
63
55
|
}
|
|
64
56
|
ngOnDestroy() {
|
|
65
57
|
this._alive = false;
|
|
58
|
+
this._observer.unobserve(this._container.nativeElement);
|
|
59
|
+
this._observer.disconnect();
|
|
66
60
|
}
|
|
67
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: ScrollableComponent, deps: [{ token: i0.
|
|
68
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: ScrollableComponent, selector: "teta-scrollable", inputs: { direction: "direction", showScrollbars: "showScrollbars", contentClass: "contentClass" }, outputs: { scroll: "scroll" }, host: { properties: { "class.show-scrollbars": "this.showScrollbars" } }, queries: [{ propertyName: "_scrollDirective", first: true, predicate: ScrollableDirective, descendants: true, read: ElementRef, static: true }], viewQueries: [{ propertyName: "_scrollableWrapper", first: true, predicate: ["scrollableWrapper"], descendants: true, static: true }, { propertyName: "_scrollbarVertical", first: true, predicate: ["scrollbarVertical"], descendants: true, static: true }, { propertyName: "_scrollbarHorizontal", first: true, predicate: ["scrollbarHorizontal"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"scroll-controls\"
|
|
61
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: ScrollableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
62
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: ScrollableComponent, selector: "teta-scrollable", inputs: { direction: "direction", showScrollbars: "showScrollbars", contentClass: "contentClass" }, outputs: { scroll: "scroll" }, host: { properties: { "class.show-scrollbars": "this.showScrollbars" } }, queries: [{ propertyName: "_scrollDirective", first: true, predicate: ScrollableDirective, descendants: true, read: ElementRef, static: true }], viewQueries: [{ propertyName: "_scrollableWrapper", first: true, predicate: ["scrollableWrapper"], descendants: true, static: true }, { propertyName: "_scrollbarVertical", first: true, predicate: ["scrollbarVertical"], descendants: true, static: true }, { propertyName: "_scrollbarHorizontal", first: true, predicate: ["scrollbarHorizontal"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"scroll-controls\">\n <div #scrollbarVertical\n [class.display-none]=\"scrollSize?.scrollHeight <= scrollSize?.clientHeight\"\n class=\"scroll-scrollbar scroll-scrollbar-vertical\"\n (scroll)=\"scrollVertical($event)\">\n <div [style.height.px]=\"scrollSize?.scrollHeight\" style=\"width: 1px;\"></div>\n </div>\n <div #scrollbarHorizontal\n [class.display-none]=\"scrollSize?.scrollWidth <= scrollSize?.clientWidth\"\n class=\"scroll-scrollbar scroll-scrollbar-horizontal\"\n (scroll)=\"scrollHorizontal($event)\">\n <div [style.width.px]=\"scrollSize?.scrollWidth\" style=\"height: 1px;\"></div>\n </div>\n</div>\n\n\n<!--<div #scrollableWrapper class=\"scroll-content-wrapper\">-->\n<!-- <div class=\"scroll-content\"-->\n<!-- [class.column]=\"direction === 'column'\">-->\n<!-- <!– <div class=\"scroll-content\">–>-->\n<!-- <ng-content></ng-content>-->\n<!-- </div>-->\n<!--</div>-->\n<div #scrollableWrapper class=\"scroll-content-wrapper\"\n [ngClass]=\"contentClass\"\n [class.column]=\"direction === 'column'\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{overflow:hidden;position:relative;z-index:0;display:flex}:host:hover .scroll-controls{opacity:1}:host.show-scrollbars .scroll-controls{opacity:1}:host::-webkit-scrollbar{width:0;height:0}.scroll-content-wrapper{display:flex;overflow:auto;flex-grow:1}.scroll-content-wrapper::-webkit-scrollbar{width:0;height:0}.scroll-content{position:relative;z-index:0;flex:1;display:flex;height:auto;min-width:0}.scroll-controls{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .5s linear}.scroll-scrollbar{position:absolute;overflow:auto;pointer-events:auto}.scroll-scrollbar-vertical{right:0;top:0;bottom:12px;width:12px}.scroll-scrollbar-horizontal{right:12px;left:0;bottom:0;height:12px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
69
63
|
}
|
|
70
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: ScrollableComponent, decorators: [{
|
|
71
65
|
type: Component,
|
|
72
|
-
args: [{ selector: 'teta-scrollable', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"scroll-controls\"
|
|
73
|
-
}], ctorParameters: function () { return [{ type: i0.
|
|
74
|
-
type: Inject,
|
|
75
|
-
args: [ANIMATION_FRAME]
|
|
76
|
-
}] }]; }, propDecorators: { _scrollDirective: [{
|
|
66
|
+
args: [{ selector: 'teta-scrollable', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"scroll-controls\">\n <div #scrollbarVertical\n [class.display-none]=\"scrollSize?.scrollHeight <= scrollSize?.clientHeight\"\n class=\"scroll-scrollbar scroll-scrollbar-vertical\"\n (scroll)=\"scrollVertical($event)\">\n <div [style.height.px]=\"scrollSize?.scrollHeight\" style=\"width: 1px;\"></div>\n </div>\n <div #scrollbarHorizontal\n [class.display-none]=\"scrollSize?.scrollWidth <= scrollSize?.clientWidth\"\n class=\"scroll-scrollbar scroll-scrollbar-horizontal\"\n (scroll)=\"scrollHorizontal($event)\">\n <div [style.width.px]=\"scrollSize?.scrollWidth\" style=\"height: 1px;\"></div>\n </div>\n</div>\n\n\n<!--<div #scrollableWrapper class=\"scroll-content-wrapper\">-->\n<!-- <div class=\"scroll-content\"-->\n<!-- [class.column]=\"direction === 'column'\">-->\n<!-- <!– <div class=\"scroll-content\">–>-->\n<!-- <ng-content></ng-content>-->\n<!-- </div>-->\n<!--</div>-->\n<div #scrollableWrapper class=\"scroll-content-wrapper\"\n [ngClass]=\"contentClass\"\n [class.column]=\"direction === 'column'\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{overflow:hidden;position:relative;z-index:0;display:flex}:host:hover .scroll-controls{opacity:1}:host.show-scrollbars .scroll-controls{opacity:1}:host::-webkit-scrollbar{width:0;height:0}.scroll-content-wrapper{display:flex;overflow:auto;flex-grow:1}.scroll-content-wrapper::-webkit-scrollbar{width:0;height:0}.scroll-content{position:relative;z-index:0;flex:1;display:flex;height:auto;min-width:0}.scroll-controls{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .5s linear}.scroll-scrollbar{position:absolute;overflow:auto;pointer-events:auto}.scroll-scrollbar-vertical{right:0;top:0;bottom:12px;width:12px}.scroll-scrollbar-horizontal{right:12px;left:0;bottom:0;height:12px}\n"] }]
|
|
67
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { _scrollDirective: [{
|
|
77
68
|
type: ContentChild,
|
|
78
69
|
args: [ScrollableDirective, {
|
|
79
70
|
static: true,
|
|
80
|
-
read: ElementRef
|
|
71
|
+
read: ElementRef,
|
|
81
72
|
}]
|
|
82
73
|
}], _scrollableWrapper: [{
|
|
83
74
|
type: ViewChild,
|
|
84
75
|
args: ['scrollableWrapper', {
|
|
85
|
-
static: true
|
|
76
|
+
static: true,
|
|
86
77
|
}]
|
|
87
78
|
}], _scrollbarVertical: [{
|
|
88
79
|
type: ViewChild,
|
|
89
80
|
args: ['scrollbarVertical', {
|
|
90
|
-
static: true
|
|
81
|
+
static: true,
|
|
91
82
|
}]
|
|
92
83
|
}], _scrollbarHorizontal: [{
|
|
93
84
|
type: ViewChild,
|
|
94
85
|
args: ['scrollbarHorizontal', {
|
|
95
|
-
static: true
|
|
86
|
+
static: true,
|
|
96
87
|
}]
|
|
97
88
|
}], direction: [{
|
|
98
89
|
type: Input
|
|
@@ -106,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
|
|
|
106
97
|
}], scroll: [{
|
|
107
98
|
type: Output
|
|
108
99
|
}] } });
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGlyZWN0aXZlL3Njcm9sbGFibGUvc2Nyb2xsYWJsZS9zY3JvbGxhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9kaXJlY3RpdmUvc2Nyb2xsYWJsZS9zY3JvbGxhYmxlL3Njcm9sbGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQUUsWUFBWSxFQUN2QixVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQ25DLEtBQUssRUFDUCxNQUFNLEVBQUUsU0FBUyxHQUMxQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFDLFNBQVMsRUFBYyxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9DQUFvQyxDQUFDOzs7OztBQVFoRSxNQUFNLE9BQU8sbUJBQW1CO0lBcUNWO0lBQ0E7SUFDQTtJQUN5QjtJQXBDbEMsZ0JBQWdCLENBQWE7SUFJN0Isa0JBQWtCLENBQVk7SUFJOUIsa0JBQWtCLENBQVk7SUFJOUIsb0JBQW9CLENBQWE7SUFFbkMsU0FBUyxHQUFxQixLQUFLLENBQUM7SUFHN0MsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUVkLFlBQVksQ0FBb0I7SUFFL0IsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7SUFFN0MsVUFBVSxDQUtQO0lBRUssVUFBVSxDQUFhO0lBQ3ZCLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFFdEIsWUFBb0IsV0FBdUIsRUFDdkIsU0FBbUIsRUFDbkIsT0FBZSxFQUNVLGVBQW1DO1FBSDVELGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNVLG9CQUFlLEdBQWYsZUFBZSxDQUFvQjtRQUM5RSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUN6QyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ1QsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVk7WUFDeEQsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFdBQVc7WUFDdEQsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVk7WUFDeEQsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFdBQVc7U0FDdkQsQ0FBQyxDQUFDLEVBQ0gsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FDM0IsQ0FBQTtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsS0FBSztRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDakUsK0RBQStEO1FBQy9ELHVEQUF1RDtRQUN2RCwyQkFBMkI7SUFDN0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQUs7UUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ25FLDZEQUE2RDtRQUM3RCx1REFBdUQ7UUFDdkQsMkJBQTJCO0lBQzdCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDMUMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDekM7UUFFRCxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDO2FBQy9DLElBQUksQ0FDSCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUM1QixHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUM3RSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUN6RSx1REFBdUQ7WUFDdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUNqQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7dUdBdkZVLG1CQUFtQiwwRkF3Q1YsZUFBZTsyRkF4Q3hCLG1CQUFtQixrVEFDaEIsbUJBQW1CLDJCQUV6QixVQUFVLHNhQ3RCcEIsMm9DQTRCQTs7MkZEVGEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNOzswQkEwQ2xDLE1BQU07MkJBQUMsZUFBZTs0Q0FwQ3hCLGdCQUFnQjtzQkFIMUIsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRTt3QkFDakMsTUFBTSxFQUFFLElBQUk7d0JBQ1osSUFBSSxFQUFFLFVBQVU7cUJBQ2pCO2dCQUlVLGtCQUFrQjtzQkFGNUIsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRTt3QkFDOUIsTUFBTSxFQUFFLElBQUk7cUJBQ2I7Z0JBSVUsa0JBQWtCO3NCQUY1QixTQUFTO3VCQUFDLG1CQUFtQixFQUFFO3dCQUM5QixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFJVSxvQkFBb0I7c0JBRjlCLFNBQVM7dUJBQUMscUJBQXFCLEVBQUU7d0JBQ2hDLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQUVRLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR04sY0FBYztzQkFGYixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLHVCQUF1QjtnQkFHM0IsWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEluamVjdCxcbiAgSW5qZWN0b3IsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSxcbiAgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Njcm9sbGFibGVEaXJlY3RpdmV9IGZyb20gXCIuLi9zY3JvbGxhYmxlLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHtBTklNQVRJT05fRlJBTUV9IGZyb20gXCIuLi8uLi8uLi9vYnNlcnZhYmxlL2FuaW1hdGlvbi1mcmFtZVwiO1xuaW1wb3J0IHtmcm9tRXZlbnQsIE9ic2VydmFibGUsIHRhcH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7bWFwLCB0YWtlV2hpbGUsIHRocm90dGxlVGltZX0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQge3RldGFab25lRnVsbH0gZnJvbSBcIi4uLy4uLy4uL29ic2VydmFibGUvem9uZU9ic2VydmFibGVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1zY3JvbGxhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Njcm9sbGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY3JvbGxhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGQoU2Nyb2xsYWJsZURpcmVjdGl2ZSwge1xuICAgIHN0YXRpYzogdHJ1ZSxcbiAgICByZWFkOiBFbGVtZW50UmVmXG4gIH0pIHByaXZhdGUgX3Njcm9sbERpcmVjdGl2ZTogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdzY3JvbGxhYmxlV3JhcHBlcicsIHtcbiAgICBzdGF0aWM6IHRydWVcbiAgfSkgcHJpdmF0ZSBfc2Nyb2xsYWJsZVdyYXBwZXI6IEVsZW1lbnRSZWZcblxuICBAVmlld0NoaWxkKCdzY3JvbGxiYXJWZXJ0aWNhbCcsIHtcbiAgICBzdGF0aWM6IHRydWVcbiAgfSkgcHJpdmF0ZSBfc2Nyb2xsYmFyVmVydGljYWw6IEVsZW1lbnRSZWZcblxuICBAVmlld0NoaWxkKCdzY3JvbGxiYXJIb3Jpem9udGFsJywge1xuICAgIHN0YXRpYzogdHJ1ZVxuICB9KSBwcml2YXRlIF9zY3JvbGxiYXJIb3Jpem9udGFsOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIGRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJyA9ICdyb3cnO1xuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNob3ctc2Nyb2xsYmFycycpXG4gIHNob3dTY3JvbGxiYXJzID0gZmFsc2U7XG5cbiAgQElucHV0KCkgY29udGVudENsYXNzOiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICBAT3V0cHV0KCkgc2Nyb2xsID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBzY3JvbGxTaXplOiBPYnNlcnZhYmxlPHtcbiAgICBjbGllbnRIZWlnaHQ6IG51bWJlcjtcbiAgICBjbGllbnRXaWR0aDogbnVtYmVyO1xuICAgIHNjcm9sbEhlaWdodDogbnVtYmVyO1xuICAgIHNjcm9sbFdpZHRoOiBudW1iZXI7XG4gIH0+O1xuXG4gIHByaXZhdGUgX2NvbnRhaW5lcjogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBfYWxpdmUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgICAgICAgICAgIEBJbmplY3QoQU5JTUFUSU9OX0ZSQU1FKSBwcml2YXRlIF9hbmltYXRpb25GcmFtZTogT2JzZXJ2YWJsZTxudW1iZXI+KSB7XG4gICAgdGhpcy5zY3JvbGxTaXplID0gdGhpcy5fYW5pbWF0aW9uRnJhbWUucGlwZShcbiAgICAgIHRocm90dGxlVGltZSgzMDApLFxuICAgICAgbWFwKCgpID0+ICh7XG4gICAgICAgIHNjcm9sbEhlaWdodDogdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICBzY3JvbGxXaWR0aDogdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGgsXG4gICAgICAgIGNsaWVudEhlaWdodDogdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0LFxuICAgICAgICBjbGllbnRXaWR0aDogdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsXG4gICAgICB9KSksXG4gICAgICB0ZXRhWm9uZUZ1bGwodGhpcy5fbmdab25lKVxuICAgIClcbiAgfVxuXG4gIHNjcm9sbFZlcnRpY2FsKGV2ZW50KSB7XG4gICAgdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gZXZlbnQudGFyZ2V0LnNjcm9sbFRvcDtcbiAgICAvLyBldmVudC5zY3JvbGxMZWZ0ID0gdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICAvLyB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgLy8gdGhpcy5zY3JvbGwuZW1pdChldmVudCk7XG4gIH1cblxuICBzY3JvbGxIb3Jpem9udGFsKGV2ZW50KSB7XG4gICAgdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IGV2ZW50LnRhcmdldC5zY3JvbGxMZWZ0O1xuICAgIC8vIGV2ZW50LnNjcm9sbFRvcCA9IHRoaXMuX2NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcbiAgICAvLyB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgLy8gdGhpcy5zY3JvbGwuZW1pdChldmVudCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb250YWluZXIgPSB0aGlzLl9zY3JvbGxhYmxlV3JhcHBlcjtcbiAgICBpZiAodGhpcy5fc2Nyb2xsRGlyZWN0aXZlKSB7XG4gICAgICB0aGlzLl9jb250YWluZXIgPSB0aGlzLl9zY3JvbGxEaXJlY3RpdmU7XG4gICAgfVxuXG4gICAgZnJvbUV2ZW50KHRoaXMuX2NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpLFxuICAgICAgICB0YXAoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLl9zY3JvbGxiYXJIb3Jpem9udGFsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IGV2ZW50LnRhcmdldC5zY3JvbGxMZWZ0O1xuICAgICAgICAgIHRoaXMuX3Njcm9sbGJhclZlcnRpY2FsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gZXZlbnQudGFyZ2V0LnNjcm9sbFRvcDtcbiAgICAgICAgICAvLyB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgICAgdGhpcy5zY3JvbGwuZW1pdChldmVudCk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2Nyb2xsLWNvbnRyb2xzXCIgKnRldGFMZXQ9XCJzY3JvbGxTaXplIHwgYXN5bmMgYXMgc2l6ZVwiPlxuICA8ZGl2ICNzY3JvbGxiYXJWZXJ0aWNhbFxuICAgICAgIFtjbGFzcy5kaXNwbGF5LW5vbmVdPVwic2l6ZT8uc2Nyb2xsSGVpZ2h0IDw9IHNpemU/LmNsaWVudEhlaWdodFwiXG4gICAgICAgY2xhc3M9XCJzY3JvbGwtc2Nyb2xsYmFyIHNjcm9sbC1zY3JvbGxiYXItdmVydGljYWxcIlxuICAgICAgIChzY3JvbGwpPVwic2Nyb2xsVmVydGljYWwoJGV2ZW50KVwiPlxuICAgIDxkaXYgW3N0eWxlLmhlaWdodC5weF09XCJzaXplPy5zY3JvbGxIZWlnaHRcIiBzdHlsZT1cIndpZHRoOiAxcHg7XCI+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICNzY3JvbGxiYXJIb3Jpem9udGFsXG4gICAgICAgW2NsYXNzLmRpc3BsYXktbm9uZV09XCJzaXplPy5zY3JvbGxXaWR0aCA8PSBzaXplPy5jbGllbnRXaWR0aFwiXG4gICAgICAgY2xhc3M9XCJzY3JvbGwtc2Nyb2xsYmFyIHNjcm9sbC1zY3JvbGxiYXItaG9yaXpvbnRhbFwiXG4gICAgICAgKHNjcm9sbCk9XCJzY3JvbGxIb3Jpem9udGFsKCRldmVudClcIj5cbiAgICA8ZGl2IFtzdHlsZS53aWR0aC5weF09XCJzaXplPy5zY3JvbGxXaWR0aFwiIHN0eWxlPVwiaGVpZ2h0OiAxcHg7XCI+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuPCEtLTxkaXYgI3Njcm9sbGFibGVXcmFwcGVyIGNsYXNzPVwic2Nyb2xsLWNvbnRlbnQtd3JhcHBlclwiPi0tPlxuPCEtLSAgPGRpdiBjbGFzcz1cInNjcm9sbC1jb250ZW50XCItLT5cbjwhLS0gICAgICAgW2NsYXNzLmNvbHVtbl09XCJkaXJlY3Rpb24gPT09ICdjb2x1bW4nXCI+LS0+XG48IS0tICAgICZsdDshJm5kYXNoOyAgPGRpdiBjbGFzcz1cInNjcm9sbC1jb250ZW50XCI+Jm5kYXNoOyZndDstLT5cbjwhLS0gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pi0tPlxuPCEtLSAgPC9kaXY+LS0+XG48IS0tPC9kaXY+LS0+XG48ZGl2ICNzY3JvbGxhYmxlV3JhcHBlciBjbGFzcz1cInNjcm9sbC1jb250ZW50LXdyYXBwZXJcIlxuICAgICBbbmdDbGFzc109XCJjb250ZW50Q2xhc3NcIlxuICAgICBbY2xhc3MuY29sdW1uXT1cImRpcmVjdGlvbiA9PT0gJ2NvbHVtbidcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGlyZWN0aXZlL3Njcm9sbGFibGUvc2Nyb2xsYWJsZS9zY3JvbGxhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9kaXJlY3RpdmUvc2Nyb2xsYWJsZS9zY3JvbGxhYmxlL3Njcm9sbGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBUTlELE1BQU0sT0FBTyxtQkFBbUI7SUEwQ1Y7SUFyQ1osZ0JBQWdCLENBQWE7SUFLN0Isa0JBQWtCLENBQWE7SUFLL0Isa0JBQWtCLENBQWE7SUFLL0Isb0JBQW9CLENBQWE7SUFFaEMsU0FBUyxHQUFxQixLQUFLLENBQUM7SUFHN0MsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUVkLFlBQVksQ0FBb0I7SUFFL0IsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7SUFFN0MsVUFBVSxDQUtSO0lBRU0sVUFBVSxDQUFhO0lBQ3ZCLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDZCxTQUFTLENBQWlCO0lBRWxDLFlBQW9CLElBQXVCO1FBQXZCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FB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QVM7c0JBQWpCLEtBQUs7Z0JBR04sY0FBYztzQkFGYixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLHVCQUF1QjtnQkFHM0IsWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNjcm9sbGFibGVEaXJlY3RpdmUgfSBmcm9tICcuLi9zY3JvbGxhYmxlLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtc2Nyb2xsYWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY3JvbGxhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2Nyb2xsYWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQENvbnRlbnRDaGlsZChTY3JvbGxhYmxlRGlyZWN0aXZlLCB7XG4gICAgc3RhdGljOiB0cnVlLFxuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gIH0pXG4gIHByaXZhdGUgX3Njcm9sbERpcmVjdGl2ZTogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdzY3JvbGxhYmxlV3JhcHBlcicsIHtcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHByaXZhdGUgX3Njcm9sbGFibGVXcmFwcGVyOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbGJhclZlcnRpY2FsJywge1xuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBfc2Nyb2xsYmFyVmVydGljYWw6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnc2Nyb2xsYmFySG9yaXpvbnRhbCcsIHtcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHByaXZhdGUgX3Njcm9sbGJhckhvcml6b250YWw6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgZGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nID0gJ3Jvdyc7XG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2hvdy1zY3JvbGxiYXJzJylcbiAgc2hvd1Njcm9sbGJhcnMgPSBmYWxzZTtcblxuICBASW5wdXQoKSBjb250ZW50Q2xhc3M6IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIEBPdXRwdXQoKSBzY3JvbGwgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gIHNjcm9sbFNpemU6IHtcbiAgICBjbGllbnRIZWlnaHQ6IG51bWJlcjtcbiAgICBjbGllbnRXaWR0aDogbnVtYmVyO1xuICAgIHNjcm9sbEhlaWdodDogbnVtYmVyO1xuICAgIHNjcm9sbFdpZHRoOiBudW1iZXI7XG4gIH07XG5cbiAgcHJpdmF0ZSBfY29udGFpbmVyOiBFbGVtZW50UmVmO1xuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG4gIHByaXZhdGUgX29ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIodGhpcy5fb2JzZXJ2ZSk7XG4gIH1cblxuICBwcml2YXRlIF9vYnNlcnZlID0gKCkgPT4ge1xuICAgIHRoaXMuc2Nyb2xsU2l6ZSA9IHtcbiAgICAgIHNjcm9sbEhlaWdodDogdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0LFxuICAgICAgc2Nyb2xsV2lkdGg6IHRoaXMuX2NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoLFxuICAgICAgY2xpZW50SGVpZ2h0OiB0aGlzLl9jb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQsXG4gICAgICBjbGllbnRXaWR0aDogdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsXG4gICAgfTtcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9O1xuXG4gIHNjcm9sbFZlcnRpY2FsKGV2ZW50KSB7XG4gICAgdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gZXZlbnQudGFyZ2V0LnNjcm9sbFRvcDtcbiAgfVxuXG4gIHNjcm9sbEhvcml6b250YWwoZXZlbnQpIHtcbiAgICB0aGlzLl9jb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gZXZlbnQudGFyZ2V0LnNjcm9sbExlZnQ7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb250YWluZXIgPSB0aGlzLl9zY3JvbGxhYmxlV3JhcHBlcjtcbiAgICBpZiAodGhpcy5fc2Nyb2xsRGlyZWN0aXZlKSB7XG4gICAgICB0aGlzLl9jb250YWluZXIgPSB0aGlzLl9zY3JvbGxEaXJlY3RpdmU7XG4gICAgfVxuXG4gICAgZnJvbUV2ZW50KHRoaXMuX2NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpLFxuICAgICAgICB0YXAoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLl9zY3JvbGxiYXJIb3Jpem9udGFsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9XG4gICAgICAgICAgICBldmVudC50YXJnZXQuc2Nyb2xsTGVmdDtcbiAgICAgICAgICB0aGlzLl9zY3JvbGxiYXJWZXJ0aWNhbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAgICAgICBldmVudC50YXJnZXQuc2Nyb2xsVG9wO1xuICAgICAgICAgIHRoaXMuc2Nyb2xsLmVtaXQoZXZlbnQpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgICB0aGlzLl9vYnNlcnZlci51bm9ic2VydmUodGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNjcm9sbC1jb250cm9sc1wiPlxuICA8ZGl2ICNzY3JvbGxiYXJWZXJ0aWNhbFxuICAgICAgIFtjbGFzcy5kaXNwbGF5LW5vbmVdPVwic2Nyb2xsU2l6ZT8uc2Nyb2xsSGVpZ2h0IDw9IHNjcm9sbFNpemU/LmNsaWVudEhlaWdodFwiXG4gICAgICAgY2xhc3M9XCJzY3JvbGwtc2Nyb2xsYmFyIHNjcm9sbC1zY3JvbGxiYXItdmVydGljYWxcIlxuICAgICAgIChzY3JvbGwpPVwic2Nyb2xsVmVydGljYWwoJGV2ZW50KVwiPlxuICAgIDxkaXYgW3N0eWxlLmhlaWdodC5weF09XCJzY3JvbGxTaXplPy5zY3JvbGxIZWlnaHRcIiBzdHlsZT1cIndpZHRoOiAxcHg7XCI+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICNzY3JvbGxiYXJIb3Jpem9udGFsXG4gICAgICAgW2NsYXNzLmRpc3BsYXktbm9uZV09XCJzY3JvbGxTaXplPy5zY3JvbGxXaWR0aCA8PSBzY3JvbGxTaXplPy5jbGllbnRXaWR0aFwiXG4gICAgICAgY2xhc3M9XCJzY3JvbGwtc2Nyb2xsYmFyIHNjcm9sbC1zY3JvbGxiYXItaG9yaXpvbnRhbFwiXG4gICAgICAgKHNjcm9sbCk9XCJzY3JvbGxIb3Jpem9udGFsKCRldmVudClcIj5cbiAgICA8ZGl2IFtzdHlsZS53aWR0aC5weF09XCJzY3JvbGxTaXplPy5zY3JvbGxXaWR0aFwiIHN0eWxlPVwiaGVpZ2h0OiAxcHg7XCI+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuPCEtLTxkaXYgI3Njcm9sbGFibGVXcmFwcGVyIGNsYXNzPVwic2Nyb2xsLWNvbnRlbnQtd3JhcHBlclwiPi0tPlxuPCEtLSAgPGRpdiBjbGFzcz1cInNjcm9sbC1jb250ZW50XCItLT5cbjwhLS0gICAgICAgW2NsYXNzLmNvbHVtbl09XCJkaXJlY3Rpb24gPT09ICdjb2x1bW4nXCI+LS0+XG48IS0tICAgICZsdDshJm5kYXNoOyAgPGRpdiBjbGFzcz1cInNjcm9sbC1jb250ZW50XCI+Jm5kYXNoOyZndDstLT5cbjwhLS0gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pi0tPlxuPCEtLSAgPC9kaXY+LS0+XG48IS0tPC9kaXY+LS0+XG48ZGl2ICNzY3JvbGxhYmxlV3JhcHBlciBjbGFzcz1cInNjcm9sbC1jb250ZW50LXdyYXBwZXJcIlxuICAgICBbbmdDbGFzc109XCJjb250ZW50Q2xhc3NcIlxuICAgICBbY2xhc3MuY29sdW1uXT1cImRpcmVjdGlvbiA9PT0gJ2NvbHVtbidcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
|