@leanix/components 0.4.108 → 0.4.109
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2022/lib/tab-ui/components/tab/tab.component.mjs +54 -10
- package/esm2022/lib/tab-ui/components/tab-group/tab-group-key-codes.enum.mjs +12 -0
- package/esm2022/lib/tab-ui/components/tab-group/tab-group.component.mjs +76 -9
- package/fesm2022/leanix-components.mjs +140 -24
- package/fesm2022/leanix-components.mjs.map +1 -1
- package/lib/tab-ui/components/tab/tab.component.d.ts +23 -6
- package/lib/tab-ui/components/tab-group/tab-group-key-codes.enum.d.ts +10 -0
- package/lib/tab-ui/components/tab-group/tab-group.component.d.ts +16 -3
- package/package.json +1 -1
@@ -1,11 +1,16 @@
|
|
1
|
+
import { __decorate } from "tslib";
|
1
2
|
import { PortalModule } from '@angular/cdk/portal';
|
2
3
|
import { NgIf, NgTemplateOutlet } from '@angular/common';
|
3
4
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
4
5
|
import { RouterLink, RouterLinkActive } from '@angular/router';
|
5
6
|
import { uniqueId } from 'lodash/fp';
|
7
|
+
import { switchMap } from 'rxjs';
|
6
8
|
import { BadgeComponent } from '../../../core-ui/components/badge/badge.component';
|
9
|
+
import { Observe } from '../../../shared/observe';
|
10
|
+
import { LxTabGroupKeyCode } from '../tab-group/tab-group-key-codes.enum';
|
7
11
|
import * as i0 from "@angular/core";
|
8
|
-
import * as i1 from "@angular/
|
12
|
+
import * as i1 from "@angular/router";
|
13
|
+
import * as i2 from "@angular/cdk/portal";
|
9
14
|
export class TabComponent {
|
10
15
|
set isActive(value) {
|
11
16
|
this._isActive = value;
|
@@ -17,8 +22,10 @@ export class TabComponent {
|
|
17
22
|
}
|
18
23
|
return this._isActive;
|
19
24
|
}
|
20
|
-
constructor(cd) {
|
25
|
+
constructor(cd, router, activatedRoute) {
|
21
26
|
this.cd = cd;
|
27
|
+
this.router = router;
|
28
|
+
this.activatedRoute = activatedRoute;
|
22
29
|
this.label = '';
|
23
30
|
this.routerLinkActiveOptions = { exact: true };
|
24
31
|
this.counterBadgeSize = 'default';
|
@@ -27,20 +34,52 @@ export class TabComponent {
|
|
27
34
|
this.background = 'white';
|
28
35
|
this.disabled = false;
|
29
36
|
this.switch = new EventEmitter();
|
37
|
+
this.keyDownAction = new EventEmitter();
|
30
38
|
this._isActive = false;
|
31
|
-
this.tabPanelId = uniqueId('panelId');
|
32
39
|
this.tabId = uniqueId('tab');
|
40
|
+
this.routerLinkActiveChange$ = this.routerLinkActive$.pipe(switchMap((routerLinkActive) => routerLinkActive.isActiveChange));
|
33
41
|
}
|
34
42
|
select() {
|
35
|
-
this.switch.emit(
|
43
|
+
this.switch.emit();
|
36
44
|
}
|
37
|
-
|
38
|
-
|
45
|
+
setFocus() {
|
46
|
+
this.tabElement?.nativeElement?.focus();
|
47
|
+
}
|
48
|
+
handleKeyDown(event) {
|
49
|
+
if (Object.values(LxTabGroupKeyCode).includes(event.code)) {
|
50
|
+
// Send this KeyDown event up to our parent to be handled there
|
51
|
+
this.keyDownAction.emit(event);
|
52
|
+
return;
|
53
|
+
}
|
54
|
+
const isKeyCodeToSelectFocusedTab = event.code === 'Enter' || event.code === 'Space';
|
55
|
+
if (!isKeyCodeToSelectFocusedTab) {
|
56
|
+
return;
|
57
|
+
}
|
58
|
+
/**
|
59
|
+
* We are preventing the default browser behavior when the `SPACE` key is pressed, in which
|
60
|
+
* case the browser would scroll down the page.
|
61
|
+
*/
|
62
|
+
event.preventDefault();
|
63
|
+
if (this.tabLink) {
|
64
|
+
const formattedTabLink = typeof this.tabLink === 'string' ? [this.tabLink] : this.tabLink;
|
65
|
+
this.router.navigate(formattedTabLink, { relativeTo: this.activatedRoute }).then(() => {
|
66
|
+
this.select();
|
67
|
+
});
|
68
|
+
}
|
69
|
+
else {
|
70
|
+
this.select();
|
71
|
+
}
|
72
|
+
}
|
73
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TabComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
74
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: TabComponent, isStandalone: true, selector: "lx-tab", inputs: { icon: "icon", label: "label", title: "title", tabLink: "tabLink", counter: "counter", routerLinkActiveOptions: "routerLinkActiveOptions", counterBadgeSize: "counterBadgeSize", noMargin: "noMargin", noLeftMarginForFirstTab: "noLeftMarginForFirstTab", background: "background", disabled: "disabled" }, outputs: { switch: "switch", keyDownAction: "keyDownAction" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["contentTemplate"], descendants: true, static: true }, { propertyName: "tabElement", first: true, predicate: ["tabElement"], descendants: true }, { propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true }], ngImport: i0, template: "<li\n #tabElement\n class=\"tab\"\n [class.active]=\"isActive\"\n [class.withIcon]=\"icon\"\n [class.noMargin]=\"noMargin\"\n [class.noLeftMarginForFirstTab]=\"noLeftMarginForFirstTab\"\n [class.backgroundGray]=\"background === 'gray'\"\n [class.disabled]=\"disabled\"\n [class.portalTab]=\"!tabLink\"\n [class.routerLinkTab]=\"tabLink\"\n [attr.title]=\"title\"\n (click)=\"select()\"\n (keydown)=\"handleKeyDown($event)\"\n role=\"tab\"\n [attr.id]=\"tabId\"\n [attr.aria-selected]=\"isActive\"\n [attr.tabindex]=\"isActive ? '0' : '-1'\"\n>\n <a\n *ngIf=\"tabLink; else portalTab\"\n tabindex=\"-1\"\n [routerLink]=\"tabLink\"\n routerLinkActive\n [routerLinkActiveOptions]=\"routerLinkActiveOptions\"\n >\n <ng-container *ngTemplateOutlet=\"portalTab\"></ng-container>\n </a>\n\n <ng-template #portalTab>\n <i *ngIf=\"icon\" class=\"icon {{ icon }}\"></i>\n <span *ngIf=\"label\" class=\"tabLabel\">{{ label }}</span>\n <lx-badge *ngIf=\"counter\" [size]=\"counterBadgeSize\" [content]=\"counter\" [color]=\"'gray'\"></lx-badge>\n </ng-template>\n\n <ng-template cdkPortal #contentTemplate=\"cdkPortal\">\n <div *ngIf=\"!tabLink\" class=\"content\" role=\"tabpanel\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</li>\n", styles: [":host{display:inline-block}.tab{position:relative;display:inline-block;margin:0 8px;text-align:center;transition:border-bottom .5s;cursor:pointer}.tab:after{position:absolute;content:\"\";left:0;right:0;bottom:-1px;height:2px;background-color:transparent}.tab:hover:after,.tab.active:after{transition:background-color .1s;background-color:#1666ee}.tab.active{cursor:default}.tab.disabled{opacity:.3;cursor:default}.tab:hover .tabLabel,.tab.active .tabLabel{color:#2a303d;transition:color .1s}.portalTab,.routerLinkTab a{display:inline-block;padding:8px 8px 12px;line-height:20px}.portalTab.withIcon,.routerLinkTab a.withIcon{padding:10px 14px;line-height:16px}.routerLinkTab a:focus{outline:0}.routerLinkTab.active a,.routerLinkTab.disabled a{cursor:default}.icon{font-size:16px;opacity:.6}.noMargin{margin:0}.noLeftMarginForFirstTab{margin-left:0}.backgroundGray{background-color:#c2c9d6}.backgroundGray:not(.active):not(.disabled){background-color:#cfd5df}.tabLabel{color:#61779d;display:inline-block;font-size:13px;text-decoration:none}.content{height:100%}lx-badge{margin-left:8px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BadgeComponent, selector: "lx-badge", inputs: ["content", "size", "color"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i2.CdkPortal, selector: "[cdkPortal]", exportAs: ["cdkPortal"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
39
75
|
}
|
76
|
+
__decorate([
|
77
|
+
Observe('routerLinkActive')
|
78
|
+
], TabComponent.prototype, "routerLinkActive$", void 0);
|
40
79
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TabComponent, decorators: [{
|
41
80
|
type: Component,
|
42
|
-
args: [{ selector: 'lx-tab', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, RouterLinkActive, RouterLink, NgTemplateOutlet, BadgeComponent, PortalModule], template: "<li\n class=\"tab\"\n [class.active]=\"isActive\"\n [class.withIcon]=\"icon\"\n [class.noMargin]=\"noMargin\"\n [class.noLeftMarginForFirstTab]=\"noLeftMarginForFirstTab\"\n [class.backgroundGray]=\"background === 'gray'\"\n [class.disabled]=\"disabled\"\n [class.portalTab]=\"!tabLink\"\n [class.routerLinkTab]=\"tabLink\"\n [attr.title]=\"title\"\n (click)=\"select()\"\n (
|
43
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { icon: [{
|
81
|
+
args: [{ selector: 'lx-tab', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, RouterLinkActive, RouterLink, NgTemplateOutlet, BadgeComponent, PortalModule], template: "<li\n #tabElement\n class=\"tab\"\n [class.active]=\"isActive\"\n [class.withIcon]=\"icon\"\n [class.noMargin]=\"noMargin\"\n [class.noLeftMarginForFirstTab]=\"noLeftMarginForFirstTab\"\n [class.backgroundGray]=\"background === 'gray'\"\n [class.disabled]=\"disabled\"\n [class.portalTab]=\"!tabLink\"\n [class.routerLinkTab]=\"tabLink\"\n [attr.title]=\"title\"\n (click)=\"select()\"\n (keydown)=\"handleKeyDown($event)\"\n role=\"tab\"\n [attr.id]=\"tabId\"\n [attr.aria-selected]=\"isActive\"\n [attr.tabindex]=\"isActive ? '0' : '-1'\"\n>\n <a\n *ngIf=\"tabLink; else portalTab\"\n tabindex=\"-1\"\n [routerLink]=\"tabLink\"\n routerLinkActive\n [routerLinkActiveOptions]=\"routerLinkActiveOptions\"\n >\n <ng-container *ngTemplateOutlet=\"portalTab\"></ng-container>\n </a>\n\n <ng-template #portalTab>\n <i *ngIf=\"icon\" class=\"icon {{ icon }}\"></i>\n <span *ngIf=\"label\" class=\"tabLabel\">{{ label }}</span>\n <lx-badge *ngIf=\"counter\" [size]=\"counterBadgeSize\" [content]=\"counter\" [color]=\"'gray'\"></lx-badge>\n </ng-template>\n\n <ng-template cdkPortal #contentTemplate=\"cdkPortal\">\n <div *ngIf=\"!tabLink\" class=\"content\" role=\"tabpanel\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</li>\n", styles: [":host{display:inline-block}.tab{position:relative;display:inline-block;margin:0 8px;text-align:center;transition:border-bottom .5s;cursor:pointer}.tab:after{position:absolute;content:\"\";left:0;right:0;bottom:-1px;height:2px;background-color:transparent}.tab:hover:after,.tab.active:after{transition:background-color .1s;background-color:#1666ee}.tab.active{cursor:default}.tab.disabled{opacity:.3;cursor:default}.tab:hover .tabLabel,.tab.active .tabLabel{color:#2a303d;transition:color .1s}.portalTab,.routerLinkTab a{display:inline-block;padding:8px 8px 12px;line-height:20px}.portalTab.withIcon,.routerLinkTab a.withIcon{padding:10px 14px;line-height:16px}.routerLinkTab a:focus{outline:0}.routerLinkTab.active a,.routerLinkTab.disabled a{cursor:default}.icon{font-size:16px;opacity:.6}.noMargin{margin:0}.noLeftMarginForFirstTab{margin-left:0}.backgroundGray{background-color:#c2c9d6}.backgroundGray:not(.active):not(.disabled){background-color:#cfd5df}.tabLabel{color:#61779d;display:inline-block;font-size:13px;text-decoration:none}.content{height:100%}lx-badge{margin-left:8px}\n"] }]
|
82
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.Router }, { type: i1.ActivatedRoute }], propDecorators: { icon: [{
|
44
83
|
type: Input
|
45
84
|
}], label: [{
|
46
85
|
type: Input
|
@@ -64,11 +103,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
|
|
64
103
|
type: Input
|
65
104
|
}], switch: [{
|
66
105
|
type: Output
|
106
|
+
}], keyDownAction: [{
|
107
|
+
type: Output
|
67
108
|
}], content: [{
|
68
109
|
type: ViewChild,
|
69
110
|
args: ['contentTemplate', { static: true }]
|
70
|
-
}],
|
111
|
+
}], tabElement: [{
|
112
|
+
type: ViewChild,
|
113
|
+
args: ['tabElement']
|
114
|
+
}], routerLinkActive$: [], routerLinkActive: [{
|
71
115
|
type: ViewChild,
|
72
116
|
args: [RouterLinkActive]
|
73
117
|
}] } });
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3RhYi11aS9jb21wb25lbnRzL3RhYi90YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdGFiLXVpL2NvbXBvbmVudHMvdGFiL3RhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFrQixNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7QUFVbkYsTUFBTSxPQUFPLFlBQVk7SUEyQnZCLElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFHRCxZQUFvQixFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQWpDaEMsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUluQiw0QkFBdUIsR0FBdUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDOUQscUJBQWdCLEdBQXdCLFNBQVMsQ0FBQztRQUNsRCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLDRCQUF1QixHQUFZLEtBQUssQ0FBQztRQUN6QyxlQUFVLEdBQXFCLE9BQU8sQ0FBQztRQUN2QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRXpCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBb0I5QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQzs4R0E5Q1UsWUFBWTtrR0FBWixZQUFZLG9qQkF5QlosZ0JBQWdCLGdEQ3hDN0IsNmpEQTZDQSxvcUNEaENZLElBQUksNkZBQUUsZ0JBQWdCLDhNQUFFLFVBQVUsNE5BQUUsZ0JBQWdCLG9KQUFFLGNBQWMsMEZBQUUsWUFBWTs7MkZBRWpGLFlBQVk7a0JBUnhCLFNBQVM7K0JBQ0UsUUFBUSxtQkFHRCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQztzRkFPcEYsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBTVAsT0FBTztzQkFETixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHakIsZ0JBQWdCO3NCQUE1QyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvcnRhbE1vZHVsZSwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHVuaXF1ZUlkIH0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS11aS9jb21wb25lbnRzL2JhZGdlL2JhZGdlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LXRhYicsXG4gIHRlbXBsYXRlVXJsOiAndGFiLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3RhYi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIFJvdXRlckxpbmtBY3RpdmUsIFJvdXRlckxpbmssIE5nVGVtcGxhdGVPdXRsZXQsIEJhZGdlQ29tcG9uZW50LCBQb3J0YWxNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFRhYkNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgaWNvbiBpbnB1dCB0YWtlcyBhIGZvbnQgYXdlc29tZSBzZWxlY3RvclxuICAgKiBXQVJOSU5HOiBDdXJyZW50bHkgdGhpcyBjb21wb25lbnQgZG9lcyBub3Qgc3VwcG9ydCB1c2luZyBhbiBpY29uIHRvZ2V0aGVyIHdpdGggYSBsYWJlbCBvciBjb3VudGVyLlxuICAgKi9cbiAgQElucHV0KCkgaWNvbj86IHN0cmluZztcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgQElucHV0KCkgdGFiTGluaz86IHN0cmluZztcbiAgQElucHV0KCkgY291bnRlcj86IG51bWJlcjtcbiAgQElucHV0KCkgcm91dGVyTGlua0FjdGl2ZU9wdGlvbnM6IHsgZXhhY3Q6IGJvb2xlYW4gfSA9IHsgZXhhY3Q6IHRydWUgfTtcbiAgQElucHV0KCkgY291bnRlckJhZGdlU2l6ZTogJ2RlZmF1bHQnIHwgJ3NtYWxsJyA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgbm9NYXJnaW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbm9MZWZ0TWFyZ2luRm9yRmlyc3RUYWI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYmFja2dyb3VuZDogJ3doaXRlJyB8ICdncmF5JyA9ICd3aGl0ZSc7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHN3aXRjaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICB0YWJQYW5lbElkOiBzdHJpbmc7XG4gIHRhYklkOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudFRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgY29udGVudD86IFRlbXBsYXRlUG9ydGFsPGFueT47XG5cbiAgQFZpZXdDaGlsZChSb3V0ZXJMaW5rQWN0aXZlKSByb3V0ZXJMaW5rQWN0aXZlPzogUm91dGVyTGlua0FjdGl2ZTtcblxuICBzZXQgaXNBY3RpdmUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc0FjdGl2ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgZ2V0IGlzQWN0aXZlKCkge1xuICAgIGlmICh0aGlzLnJvdXRlckxpbmtBY3RpdmUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlckxpbmtBY3RpdmUuaXNBY3RpdmU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9pc0FjdGl2ZTtcbiAgfVxuICBwcml2YXRlIF9pc0FjdGl2ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy50YWJQYW5lbElkID0gdW5pcXVlSWQoJ3BhbmVsSWQnKTtcbiAgICB0aGlzLnRhYklkID0gdW5pcXVlSWQoJ3RhYicpO1xuICB9XG5cbiAgc2VsZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuc3dpdGNoLmVtaXQoeyB0YWJJZDogdGhpcy50YWJJZCwgdGFiUGFuZWxJZDogdGhpcy50YWJQYW5lbElkIH0pO1xuICB9XG59XG4iLCI8bGlcbiAgY2xhc3M9XCJ0YWJcIlxuICBbY2xhc3MuYWN0aXZlXT1cImlzQWN0aXZlXCJcbiAgW2NsYXNzLndpdGhJY29uXT1cImljb25cIlxuICBbY2xhc3Mubm9NYXJnaW5dPVwibm9NYXJnaW5cIlxuICBbY2xhc3Mubm9MZWZ0TWFyZ2luRm9yRmlyc3RUYWJdPVwibm9MZWZ0TWFyZ2luRm9yRmlyc3RUYWJcIlxuICBbY2xhc3MuYmFja2dyb3VuZEdyYXldPVwiYmFja2dyb3VuZCA9PT0gJ2dyYXknXCJcbiAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2NsYXNzLnBvcnRhbFRhYl09XCIhdGFiTGlua1wiXG4gIFtjbGFzcy5yb3V0ZXJMaW5rVGFiXT1cInRhYkxpbmtcIlxuICBbYXR0ci50aXRsZV09XCJ0aXRsZVwiXG4gIChjbGljayk9XCJzZWxlY3QoKVwiXG4gIChrZXl1cC5lbnRlcik9XCJzZWxlY3QoKVwiXG4gIChrZXl1cC5zcGFjZSk9XCJzZWxlY3QoKVwiXG4gIFthdHRyLnJvbGVdPVwidGFiTGluayA/ICdwcmVzZW50YXRpb24nIDogJ3RhYidcIlxuICBbYXR0ci5pZF09XCJ0YWJMaW5rID8gbnVsbCA6IHRhYklkXCJcbiAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJ0YWJMaW5rID8gbnVsbCA6IGlzQWN0aXZlXCJcbiAgW2F0dHIuYXJpYS1jb250cm9sc109XCJ0YWJMaW5rID8gbnVsbCA6IHRhYlBhbmVsSWRcIlxuICBbYXR0ci50YWJpbmRleF09XCJ0YWJMaW5rID8gbnVsbCA6IGlzQWN0aXZlIHx8IGRpc2FibGVkIHx8IHRhYkxpbmsgPyAnLTEnIDogJzAnXCJcbj5cbiAgPGFcbiAgICAqbmdJZj1cInRhYkxpbms7IGVsc2UgcG9ydGFsVGFiXCJcbiAgICByb2xlPVwidGFiXCJcbiAgICBbYXR0ci5pZF09XCJ0YWJJZFwiXG4gICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc0FjdGl2ZVwiXG4gICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJ0YWJQYW5lbElkXCJcbiAgICBbcm91dGVyTGlua109XCJ0YWJMaW5rXCJcbiAgICByb3V0ZXJMaW5rQWN0aXZlXG4gICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInJvdXRlckxpbmtBY3RpdmVPcHRpb25zXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwb3J0YWxUYWJcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9hPlxuXG4gIDxuZy10ZW1wbGF0ZSAjcG9ydGFsVGFiPlxuICAgIDxpICpuZ0lmPVwiaWNvblwiIGNsYXNzPVwiaWNvbiB7eyBpY29uIH19XCI+PC9pPlxuICAgIDxzcGFuICpuZ0lmPVwibGFiZWxcIiBjbGFzcz1cInRhYkxhYmVsXCI+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgPGx4LWJhZGdlICpuZ0lmPVwiY291bnRlclwiIFtzaXplXT1cImNvdW50ZXJCYWRnZVNpemVcIiBbY29udGVudF09XCJjb3VudGVyXCIgW2NvbG9yXT1cIidncmF5J1wiPjwvbHgtYmFkZ2U+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbCAjY29udGVudFRlbXBsYXRlPVwiY2RrUG9ydGFsXCI+XG4gICAgPGRpdiAqbmdJZj1cIiF0YWJMaW5rXCIgY2xhc3M9XCJjb250ZW50XCIgcm9sZT1cInRhYnBhbmVsXCIgW2F0dHIuaWRdPVwidGFiUGFuZWxJZFwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9saT5cbiJdfQ==
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3RhYi11aS9jb21wb25lbnRzL3RhYi90YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdGFiLXVpL2NvbXBvbmVudHMvdGFiL3RhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFJLE9BQU8sRUFBMEIsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNuRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7QUFVMUUsTUFBTSxPQUFPLFlBQVk7SUF3Q3ZCLElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFHRCxZQUNVLEVBQXFCLEVBQ3JCLE1BQWMsRUFDZCxjQUE4QjtRQUY5QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBakQvQixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBU25CLDRCQUF1QixHQUF1QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM5RCxxQkFBZ0IsR0FBd0IsU0FBUyxDQUFDO1FBQ2xELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBQ3pDLGVBQVUsR0FBcUIsT0FBTyxDQUFDO1FBQ3ZDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFekIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQTJCcEQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQU94QixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUMvSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQW9CO1FBQ2hDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBUyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakUsK0RBQStEO1lBQy9ELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLE9BQU87U0FDUjtRQUVELE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUM7UUFDckYsSUFBSSxDQUFDLDJCQUEyQixFQUFFO1lBQ2hDLE9BQU87U0FDUjtRQUVEOzs7V0FHRztRQUNILEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUMxRixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNwRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2Y7SUFDSCxDQUFDOzhHQTlGVSxZQUFZO2tHQUFaLFlBQVksK3FCQWlDWixnQkFBZ0IsZ0RDbkQ3QixreENBeUNBLHluQ0R6QlksSUFBSSw2RkFBRSxnQkFBZ0IsOE1BQUUsVUFBVSw0TkFBRSxnQkFBZ0Isb0pBQUUsY0FBYywwRkFBRSxZQUFZOztBQWtDL0Q7SUFBNUIsT0FBTyxDQUFDLGtCQUFrQixDQUFDO3VEQUFrRDsyRkFoQ25FLFlBQVk7a0JBUnhCLFNBQVM7K0JBQ0UsUUFBUSxtQkFHRCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQzt3SUFPcEYsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFLUCxPQUFPO3NCQUROLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdyQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBRU0saUJBQWlCLE1BQ2pCLGdCQUFnQjtzQkFBNUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3J0YWxNb2R1bGUsIFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgUm91dGVyTGluaywgUm91dGVyTGlua0FjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS11aS9jb21wb25lbnRzL2JhZGdlL2JhZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYnNlcnZlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL29ic2VydmUnO1xuaW1wb3J0IHsgTHhUYWJHcm91cEtleUNvZGUgfSBmcm9tICcuLi90YWItZ3JvdXAvdGFiLWdyb3VwLWtleS1jb2Rlcy5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtdGFiJyxcbiAgdGVtcGxhdGVVcmw6ICd0YWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsndGFiLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgUm91dGVyTGlua0FjdGl2ZSwgUm91dGVyTGluaywgTmdUZW1wbGF0ZU91dGxldCwgQmFkZ2VDb21wb25lbnQsIFBvcnRhbE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgVGFiQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBpY29uIGlucHV0IHRha2VzIGEgZm9udCBhd2Vzb21lIHNlbGVjdG9yXG4gICAqIFdBUk5JTkc6IEN1cnJlbnRseSB0aGlzIGNvbXBvbmVudCBkb2VzIG5vdCBzdXBwb3J0IHVzaW5nIGFuIGljb24gdG9nZXRoZXIgd2l0aCBhIGxhYmVsIG9yIGNvdW50ZXIuXG4gICAqL1xuICBASW5wdXQoKSBpY29uPzogc3RyaW5nO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICAvKipcbiAgICogSW4gc29tZSBwYXJ0cyBvZiB0aGUgYXBwbGljYXRpb24sIHdlIGFyZSBwYXNzaW5nIGEgcGxhaW4gc3RyaW5nIHRvIHRoZSB0YWJMaW5rIGlucHV0LCB3aGVyZWFzIGluXG4gICAqIG1vc3QgcGFydHMsIHRoZSBpbnB1dCBpcyBwYXNzZWQgYXMgYW4gYXJyYXkuIFRoZSBSb3V0ZXJMaW5rIGRpcmVjdGl2ZSBhbHNvIGFjY2VwdHMgYm90aCB0eXBlcyxcbiAgICogdGhlcmVmb3JlIHdlIGFyZSB1c2luZyB0eXBlIG9mIHRoZSBpbnB1dCBhcyBzdHJpbmcgfCBhbnlbXS5cbiAgICovXG4gIEBJbnB1dCgpIHRhYkxpbms/OiBzdHJpbmcgfCBhbnlbXTtcbiAgQElucHV0KCkgY291bnRlcj86IG51bWJlcjtcbiAgQElucHV0KCkgcm91dGVyTGlua0FjdGl2ZU9wdGlvbnM6IHsgZXhhY3Q6IGJvb2xlYW4gfSA9IHsgZXhhY3Q6IHRydWUgfTtcbiAgQElucHV0KCkgY291bnRlckJhZGdlU2l6ZTogJ2RlZmF1bHQnIHwgJ3NtYWxsJyA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgbm9NYXJnaW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbm9MZWZ0TWFyZ2luRm9yRmlyc3RUYWI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYmFja2dyb3VuZDogJ3doaXRlJyB8ICdncmF5JyA9ICd3aGl0ZSc7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHN3aXRjaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGtleURvd25BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgdGFiSWQ6IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdjb250ZW50VGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBjb250ZW50PzogVGVtcGxhdGVQb3J0YWw8YW55PjtcblxuICBAVmlld0NoaWxkKCd0YWJFbGVtZW50JykgdGFiRWxlbWVudD86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBPYnNlcnZlKCdyb3V0ZXJMaW5rQWN0aXZlJykgcm91dGVyTGlua0FjdGl2ZSQhOiBPYnNlcnZhYmxlPFJvdXRlckxpbmtBY3RpdmU+O1xuICBAVmlld0NoaWxkKFJvdXRlckxpbmtBY3RpdmUpIHJvdXRlckxpbmtBY3RpdmU/OiBSb3V0ZXJMaW5rQWN0aXZlO1xuICAvKipcbiAgICogVXNlZCBieSB0aGUgbHgtdGFiLWdyb3VwIHRvIGJlIG5vdGlmaWVkIHdoZW4gYSBseC10YWIgdGhhdCBpcyBhIGxpbmtcbiAgICogaXMgc2V0IHRvIGFjdGl2ZSBieSB0aGUgQW5ndWxhciByb3V0ZXIuXG4gICAqL1xuICByb3V0ZXJMaW5rQWN0aXZlQ2hhbmdlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBzZXQgaXNBY3RpdmUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc0FjdGl2ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgZ2V0IGlzQWN0aXZlKCkge1xuICAgIGlmICh0aGlzLnJvdXRlckxpbmtBY3RpdmUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlckxpbmtBY3RpdmUuaXNBY3RpdmU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9pc0FjdGl2ZTtcbiAgfVxuICBwcml2YXRlIF9pc0FjdGl2ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7XG4gICAgdGhpcy50YWJJZCA9IHVuaXF1ZUlkKCd0YWInKTtcbiAgICB0aGlzLnJvdXRlckxpbmtBY3RpdmVDaGFuZ2UkID0gdGhpcy5yb3V0ZXJMaW5rQWN0aXZlJC5waXBlKHN3aXRjaE1hcCgocm91dGVyTGlua0FjdGl2ZSkgPT4gcm91dGVyTGlua0FjdGl2ZS5pc0FjdGl2ZUNoYW5nZSkpO1xuICB9XG5cbiAgc2VsZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuc3dpdGNoLmVtaXQoKTtcbiAgfVxuXG4gIHNldEZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMudGFiRWxlbWVudD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgfVxuXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoT2JqZWN0LnZhbHVlczxzdHJpbmc+KEx4VGFiR3JvdXBLZXlDb2RlKS5pbmNsdWRlcyhldmVudC5jb2RlKSkge1xuICAgICAgLy8gU2VuZCB0aGlzIEtleURvd24gZXZlbnQgdXAgdG8gb3VyIHBhcmVudCB0byBiZSBoYW5kbGVkIHRoZXJlXG4gICAgICB0aGlzLmtleURvd25BY3Rpb24uZW1pdChldmVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXNLZXlDb2RlVG9TZWxlY3RGb2N1c2VkVGFiID0gZXZlbnQuY29kZSA9PT0gJ0VudGVyJyB8fCBldmVudC5jb2RlID09PSAnU3BhY2UnO1xuICAgIGlmICghaXNLZXlDb2RlVG9TZWxlY3RGb2N1c2VkVGFiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2UgYXJlIHByZXZlbnRpbmcgdGhlIGRlZmF1bHQgYnJvd3NlciBiZWhhdmlvciB3aGVuIHRoZSBgU1BBQ0VgIGtleSBpcyBwcmVzc2VkLCBpbiB3aGljaFxuICAgICAqIGNhc2UgdGhlIGJyb3dzZXIgd291bGQgc2Nyb2xsIGRvd24gdGhlIHBhZ2UuXG4gICAgICovXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAodGhpcy50YWJMaW5rKSB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWRUYWJMaW5rID0gdHlwZW9mIHRoaXMudGFiTGluayA9PT0gJ3N0cmluZycgPyBbdGhpcy50YWJMaW5rXSA6IHRoaXMudGFiTGluaztcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKGZvcm1hdHRlZFRhYkxpbmssIHsgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3QoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdCgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGxpXG4gICN0YWJFbGVtZW50XG4gIGNsYXNzPVwidGFiXCJcbiAgW2NsYXNzLmFjdGl2ZV09XCJpc0FjdGl2ZVwiXG4gIFtjbGFzcy53aXRoSWNvbl09XCJpY29uXCJcbiAgW2NsYXNzLm5vTWFyZ2luXT1cIm5vTWFyZ2luXCJcbiAgW2NsYXNzLm5vTGVmdE1hcmdpbkZvckZpcnN0VGFiXT1cIm5vTGVmdE1hcmdpbkZvckZpcnN0VGFiXCJcbiAgW2NsYXNzLmJhY2tncm91bmRHcmF5XT1cImJhY2tncm91bmQgPT09ICdncmF5J1wiXG4gIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtjbGFzcy5wb3J0YWxUYWJdPVwiIXRhYkxpbmtcIlxuICBbY2xhc3Mucm91dGVyTGlua1RhYl09XCJ0YWJMaW5rXCJcbiAgW2F0dHIudGl0bGVdPVwidGl0bGVcIlxuICAoY2xpY2spPVwic2VsZWN0KClcIlxuICAoa2V5ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIlxuICByb2xlPVwidGFiXCJcbiAgW2F0dHIuaWRdPVwidGFiSWRcIlxuICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzQWN0aXZlXCJcbiAgW2F0dHIudGFiaW5kZXhdPVwiaXNBY3RpdmUgPyAnMCcgOiAnLTEnXCJcbj5cbiAgPGFcbiAgICAqbmdJZj1cInRhYkxpbms7IGVsc2UgcG9ydGFsVGFiXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBbcm91dGVyTGlua109XCJ0YWJMaW5rXCJcbiAgICByb3V0ZXJMaW5rQWN0aXZlXG4gICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInJvdXRlckxpbmtBY3RpdmVPcHRpb25zXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwb3J0YWxUYWJcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9hPlxuXG4gIDxuZy10ZW1wbGF0ZSAjcG9ydGFsVGFiPlxuICAgIDxpICpuZ0lmPVwiaWNvblwiIGNsYXNzPVwiaWNvbiB7eyBpY29uIH19XCI+PC9pPlxuICAgIDxzcGFuICpuZ0lmPVwibGFiZWxcIiBjbGFzcz1cInRhYkxhYmVsXCI+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgPGx4LWJhZGdlICpuZ0lmPVwiY291bnRlclwiIFtzaXplXT1cImNvdW50ZXJCYWRnZVNpemVcIiBbY29udGVudF09XCJjb3VudGVyXCIgW2NvbG9yXT1cIidncmF5J1wiPjwvbHgtYmFkZ2U+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbCAjY29udGVudFRlbXBsYXRlPVwiY2RrUG9ydGFsXCI+XG4gICAgPGRpdiAqbmdJZj1cIiF0YWJMaW5rXCIgY2xhc3M9XCJjb250ZW50XCIgcm9sZT1cInRhYnBhbmVsXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2xpPlxuIl19
|
@@ -0,0 +1,12 @@
|
|
1
|
+
/**
|
2
|
+
* Key codes that we listen to for
|
3
|
+
* user action on our lx-tab-group
|
4
|
+
*/
|
5
|
+
export var LxTabGroupKeyCode;
|
6
|
+
(function (LxTabGroupKeyCode) {
|
7
|
+
LxTabGroupKeyCode["ArrowRight"] = "ArrowRight";
|
8
|
+
LxTabGroupKeyCode["ArrowLeft"] = "ArrowLeft";
|
9
|
+
LxTabGroupKeyCode["Home"] = "Home";
|
10
|
+
LxTabGroupKeyCode["End"] = "End";
|
11
|
+
})(LxTabGroupKeyCode || (LxTabGroupKeyCode = {}));
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLWtleS1jb2Rlcy5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdGFiLXVpL2NvbXBvbmVudHMvdGFiLWdyb3VwL3RhYi1ncm91cC1rZXktY29kZXMuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxpQkFLWDtBQUxELFdBQVksaUJBQWlCO0lBQzNCLDhDQUF5QixDQUFBO0lBQ3pCLDRDQUF1QixDQUFBO0lBQ3ZCLGtDQUFhLENBQUE7SUFDYixnQ0FBVyxDQUFBO0FBQ2IsQ0FBQyxFQUxXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFLNUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEtleSBjb2RlcyB0aGF0IHdlIGxpc3RlbiB0byBmb3JcbiAqIHVzZXIgYWN0aW9uIG9uIG91ciBseC10YWItZ3JvdXBcbiAqL1xuZXhwb3J0IGVudW0gTHhUYWJHcm91cEtleUNvZGUge1xuICBBcnJvd1JpZ2h0ID0gJ0Fycm93UmlnaHQnLFxuICBBcnJvd0xlZnQgPSAnQXJyb3dMZWZ0JyxcbiAgSG9tZSA9ICdIb21lJyxcbiAgRW5kID0gJ0VuZCdcbn1cbiJdfQ==
|
@@ -1,11 +1,17 @@
|
|
1
|
+
import { __decorate } from "tslib";
|
1
2
|
import { PortalModule } from '@angular/cdk/portal';
|
2
|
-
import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
|
3
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
3
4
|
import { Subject, merge } from 'rxjs';
|
4
|
-
import { map, startWith, switchMap, takeUntil } from 'rxjs/operators';
|
5
|
+
import { first, map, startWith, switchMap, takeUntil } from 'rxjs/operators';
|
6
|
+
import { Observe } from '../../../shared/observe';
|
5
7
|
import { TabComponent } from '../tab/tab.component';
|
8
|
+
import { LxTabGroupKeyCode } from './tab-group-key-codes.enum';
|
6
9
|
import * as i0 from "@angular/core";
|
7
10
|
import * as i1 from "@angular/cdk/portal";
|
8
11
|
export class TabGroupComponent {
|
12
|
+
get tabIds() {
|
13
|
+
return this.tabs.map((t) => t.tabId);
|
14
|
+
}
|
9
15
|
get tabs() {
|
10
16
|
return this.tabsQueryList?.toArray() || [];
|
11
17
|
}
|
@@ -15,9 +21,20 @@ export class TabGroupComponent {
|
|
15
21
|
constructor(cd) {
|
16
22
|
this.cd = cd;
|
17
23
|
this.isCentered = false;
|
24
|
+
/**
|
25
|
+
* The tab whose content should be displayed.
|
26
|
+
*/
|
18
27
|
this.selectedIndex = 0;
|
19
28
|
this.indexChange = new EventEmitter();
|
29
|
+
/**
|
30
|
+
* The tab that is currently focused via keyboard.
|
31
|
+
*/
|
32
|
+
this.focusedIndex = 0;
|
20
33
|
this.destroyed$ = new Subject();
|
34
|
+
this.listenToFirstTabSelectByAngularRouterForTabLinks().subscribe((tab) => {
|
35
|
+
// synchonize the focusedIndex and selectedIndex state with the tab that is active through the current route.
|
36
|
+
this.switchTo(tab);
|
37
|
+
});
|
21
38
|
}
|
22
39
|
ngOnChanges(changes) {
|
23
40
|
const tab = this.tabs[this.selectedIndex];
|
@@ -30,7 +47,7 @@ export class TabGroupComponent {
|
|
30
47
|
this.tabs[0].noLeftMarginForFirstTab = true;
|
31
48
|
}
|
32
49
|
const tab = this.tabs[this.selectedIndex];
|
33
|
-
if (tab) {
|
50
|
+
if (tab && !tab.tabLink) {
|
34
51
|
this.switchTo(tab);
|
35
52
|
}
|
36
53
|
const listenToTabsSwitch = (tabs) => merge(...tabs.map((tab) => tab.switch.asObservable().pipe(map(() => tab))));
|
@@ -39,37 +56,87 @@ export class TabGroupComponent {
|
|
39
56
|
.subscribe((tab) => {
|
40
57
|
this.switchTo(tab);
|
41
58
|
});
|
59
|
+
this.tabsQueryList?.changes
|
60
|
+
.pipe(startWith(null), switchMap(() => merge(...this.tabs.map((tab) => tab.keyDownAction))), takeUntil(this.destroyed$))
|
61
|
+
.subscribe((event) => {
|
62
|
+
this.handleKeyDown(event);
|
63
|
+
});
|
42
64
|
}
|
43
65
|
ngOnDestroy() {
|
44
66
|
this.destroyed$.next();
|
45
67
|
}
|
46
|
-
|
47
|
-
|
68
|
+
onFocusOut(event) {
|
69
|
+
if (!this.tabListElement?.nativeElement?.contains(event.relatedTarget)) {
|
70
|
+
// resync focused index on selected index when leaving tabs
|
71
|
+
this.focusedIndex = this.selectedIndex;
|
72
|
+
}
|
48
73
|
}
|
49
74
|
switchTo(tab) {
|
50
75
|
this.tabsQueryList?.forEach((t, index) => {
|
51
76
|
t.isActive = t === tab;
|
52
77
|
if (t.isActive) {
|
53
78
|
this.selectedIndex = index;
|
79
|
+
this.focusedIndex = index;
|
54
80
|
this.indexChange.emit(index);
|
55
81
|
}
|
56
82
|
});
|
57
83
|
this.cd.markForCheck();
|
58
84
|
}
|
85
|
+
handleKeyDown(event) {
|
86
|
+
switch (event.code) {
|
87
|
+
case LxTabGroupKeyCode.ArrowRight:
|
88
|
+
const newTabIndex = (this.focusedIndex + 1) % this.tabs.length;
|
89
|
+
this.focusTab(newTabIndex);
|
90
|
+
break;
|
91
|
+
case LxTabGroupKeyCode.ArrowLeft:
|
92
|
+
const previousTabIndex = this.focusedIndex === 0 ? this.tabs.length - 1 : this.focusedIndex - 1;
|
93
|
+
this.focusTab(previousTabIndex);
|
94
|
+
break;
|
95
|
+
case LxTabGroupKeyCode.Home:
|
96
|
+
event.preventDefault();
|
97
|
+
this.focusTab(0);
|
98
|
+
break;
|
99
|
+
case LxTabGroupKeyCode.End:
|
100
|
+
event.preventDefault();
|
101
|
+
this.focusTab(this.tabs.length - 1);
|
102
|
+
break;
|
103
|
+
}
|
104
|
+
}
|
105
|
+
focusTab(tabIndex) {
|
106
|
+
const tab = this.tabs[tabIndex];
|
107
|
+
if (!tab) {
|
108
|
+
return;
|
109
|
+
}
|
110
|
+
tab.setFocus();
|
111
|
+
this.focusedIndex = tabIndex;
|
112
|
+
}
|
113
|
+
listenToFirstTabSelectByAngularRouterForTabLinks() {
|
114
|
+
return this.tabsQueryList$.pipe(switchMap(() => {
|
115
|
+
const tabLinks = this.tabs.filter((tab) => !!tab.tabLink);
|
116
|
+
return merge(...tabLinks.map((tab) => tab.routerLinkActiveChange$.pipe(map(() => tab))));
|
117
|
+
}), first(), takeUntil(this.destroyed$) // added in addition to first() here since for tab groups without links no single value will ever be emit.
|
118
|
+
);
|
119
|
+
}
|
59
120
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TabGroupComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
60
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: TabGroupComponent, isStandalone: true, selector: "lx-tab-group", inputs: { isCentered: "isCentered", selectedIndex: "selectedIndex" }, outputs: { indexChange: "indexChange" }, queries: [{ propertyName: "tabsQueryList", predicate: TabComponent }], usesOnChanges: true, ngImport: i0, template: "<ul
|
121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: TabGroupComponent, isStandalone: true, selector: "lx-tab-group", inputs: { isCentered: "isCentered", selectedIndex: "selectedIndex" }, outputs: { indexChange: "indexChange" }, queries: [{ propertyName: "tabsQueryList", predicate: TabComponent }], viewQueries: [{ propertyName: "tabListElement", first: true, predicate: ["tabListElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ul\n #tabListElement\n class=\"tabs\"\n role=\"tablist\"\n (focusout)=\"onFocusOut($event)\"\n [attr.aria-owns]=\"tabIds.join(' ')\"\n [class.centered]=\"isCentered\"\n>\n <ng-content></ng-content>\n</ul>\n\n<ng-template [cdkPortalOutlet]=\"activeTabPortal\"></ng-template>\n", styles: [":host{--tab-group-padding-y: 0}.tabs{display:inline-block;list-style:none;border-bottom:solid 1px #cfd5df;width:100%;margin:0;padding:0 var(--tab-group-padding-y);text-align:left}.tabs.centered{text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
61
122
|
}
|
123
|
+
__decorate([
|
124
|
+
Observe('tabsQueryList')
|
125
|
+
], TabGroupComponent.prototype, "tabsQueryList$", void 0);
|
62
126
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TabGroupComponent, decorators: [{
|
63
127
|
type: Component,
|
64
|
-
args: [{ selector: 'lx-tab-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [PortalModule], template: "<ul
|
128
|
+
args: [{ selector: 'lx-tab-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [PortalModule], template: "<ul\n #tabListElement\n class=\"tabs\"\n role=\"tablist\"\n (focusout)=\"onFocusOut($event)\"\n [attr.aria-owns]=\"tabIds.join(' ')\"\n [class.centered]=\"isCentered\"\n>\n <ng-content></ng-content>\n</ul>\n\n<ng-template [cdkPortalOutlet]=\"activeTabPortal\"></ng-template>\n", styles: [":host{--tab-group-padding-y: 0}.tabs{display:inline-block;list-style:none;border-bottom:solid 1px #cfd5df;width:100%;margin:0;padding:0 var(--tab-group-padding-y);text-align:left}.tabs.centered{text-align:center}\n"] }]
|
65
129
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { isCentered: [{
|
66
130
|
type: Input
|
67
131
|
}], selectedIndex: [{
|
68
132
|
type: Input
|
69
133
|
}], indexChange: [{
|
70
134
|
type: Output
|
71
|
-
}], tabsQueryList: [{
|
135
|
+
}], tabsQueryList$: [], tabsQueryList: [{
|
72
136
|
type: ContentChildren,
|
73
137
|
args: [TabComponent]
|
138
|
+
}], tabListElement: [{
|
139
|
+
type: ViewChild,
|
140
|
+
args: ['tabListElement']
|
74
141
|
}] } });
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3RhYi11aS9jb21wb25lbnRzL3RhYi1ncm91cC90YWItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdGFiLXVpL2NvbXBvbmVudHMvdGFiLWdyb3VwL3RhYi1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQVVwRCxNQUFNLE9BQU8saUJBQWlCO0lBTzVCLElBQVksSUFBSTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUNoRCxDQUFDO0lBSUQsWUFBb0IsRUFBcUI7UUFBckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFoQmhDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsa0JBQWEsR0FBVyxDQUFDLENBQUM7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QixhQUFhO3NCQUEzQyxlQUFlO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWJDb21wb25lbnQgfSBmcm9tICcuLi90YWIvdGFiLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LXRhYi1ncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAndGFiLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3RhYi1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1BvcnRhbE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgVGFiR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGlzQ2VudGVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2VsZWN0ZWRJbmRleDogbnVtYmVyID0gMDtcbiAgQE91dHB1dCgpIGluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUYWJDb21wb25lbnQpIHRhYnNRdWVyeUxpc3Q/OiBRdWVyeUxpc3Q8VGFiQ29tcG9uZW50PjtcblxuICBwcml2YXRlIGdldCB0YWJzKCk6IFRhYkNvbXBvbmVudFtdIHtcbiAgICByZXR1cm4gdGhpcy50YWJzUXVlcnlMaXN0Py50b0FycmF5KCkgfHwgW107XG4gIH1cblxuICBnZXQgYWN0aXZlVGFiUG9ydGFsKCkge1xuICAgIHJldHVybiB0aGlzLnRhYnNbdGhpcy5zZWxlY3RlZEluZGV4XT8uY29udGVudDtcbiAgfVxuXG4gIHJlYWRvbmx5IGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYnNbdGhpcy5zZWxlY3RlZEluZGV4XTtcbiAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWRJbmRleCddICYmICFjaGFuZ2VzWydzZWxlY3RlZEluZGV4J10uaXNGaXJzdENoYW5nZSgpICYmIHRhYikge1xuICAgICAgdGhpcy5zd2l0Y2hUbyh0YWIpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAodGhpcy50YWJzWzBdKSB7XG4gICAgICB0aGlzLnRhYnNbMF0ubm9MZWZ0TWFyZ2luRm9yRmlyc3RUYWIgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYnNbdGhpcy5zZWxlY3RlZEluZGV4XTtcbiAgICBpZiAodGFiKSB7XG4gICAgICB0aGlzLnN3aXRjaFRvKHRhYik7XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdGVuVG9UYWJzU3dpdGNoID0gKHRhYnM6IFRhYkNvbXBvbmVudFtdKSA9PiBtZXJnZSguLi50YWJzLm1hcCgodGFiKSA9PiB0YWIuc3dpdGNoLmFzT2JzZXJ2YWJsZSgpLnBpcGUobWFwKCgpID0+IHRhYikpKSk7XG5cbiAgICB0aGlzLnRhYnNRdWVyeUxpc3Q/LmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiBsaXN0ZW5Ub1RhYnNTd2l0Y2godGhpcy50YWJzKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh0YWIpID0+IHtcbiAgICAgICAgdGhpcy5zd2l0Y2hUbyh0YWIpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICB9XG5cbiAgdGFiSWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy50YWJzLm1hcCgodCkgPT4gdC50YWJJZCk7XG4gIH1cblxuICBzd2l0Y2hUbyh0YWI6IFRhYkNvbXBvbmVudCkge1xuICAgIHRoaXMudGFic1F1ZXJ5TGlzdD8uZm9yRWFjaCgodCwgaW5kZXgpID0+IHtcbiAgICAgIHQuaXNBY3RpdmUgPSB0ID09PSB0YWI7XG4gICAgICBpZiAodC5pc0FjdGl2ZSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBpbmRleDtcbiAgICAgICAgdGhpcy5pbmRleENoYW5nZS5lbWl0KGluZGV4KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8dWwgY2xhc3M9XCJ0YWJzXCIgcm9sZT1cInRhYmxpc3RcIiBbYXR0ci5hcmlhLW93bnNdPVwidGFiSWRzKCkuam9pbignICcpXCIgW2NsYXNzLmNlbnRlcmVkXT1cImlzQ2VudGVyZWRcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC91bD5cblxuPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPVwiYWN0aXZlVGFiUG9ydGFsXCI+PC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3RhYi11aS9jb21wb25lbnRzL3RhYi1ncm91cC90YWItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdGFiLXVpL2NvbXBvbmVudHMvdGFiLWdyb3VwL3RhYi1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFVL0QsTUFBTSxPQUFPLGlCQUFpQjtJQWlCNUIsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxJQUFZLElBQUk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUs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QUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0YsQ0FBQyxDQUFDLEVBQ0YsS0FBSyxFQUFFLEVBQ1AsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQywwR0FBMEc7U0FDdEksQ0FBQztJQUNKLENBQUM7OEdBM0lVLGlCQUFpQjtrR0FBakIsaUJBQWlCLHFOQVNYLFlBQVksb0tDeEMvQiw2UkFZQSwrUURpQlksWUFBWTs7QUFVSTtJQUF6QixPQUFPLENBQUMsZUFBZSxDQUFDO3lEQUFzRDsyRkFScEUsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNFLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7c0ZBR2QsVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRW1CLGNBQWMsTUFDVCxhQUFhO3NCQUEzQyxlQUFlO3VCQUFDLFlBQVk7Z0JBQ0EsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0LCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL29ic2VydmUnO1xuaW1wb3J0IHsgVGFiQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFiL3RhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTHhUYWJHcm91cEtleUNvZGUgfSBmcm9tICcuL3RhYi1ncm91cC1rZXktY29kZXMuZW51bSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LXRhYi1ncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAndGFiLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3RhYi1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1BvcnRhbE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgVGFiR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGlzQ2VudGVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIFRoZSB0YWIgd2hvc2UgY29udGVudCBzaG91bGQgYmUgZGlzcGxheWVkLlxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWRJbmRleDogbnVtYmVyID0gMDtcbiAgQE91dHB1dCgpIGluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQE9ic2VydmUoJ3RhYnNRdWVyeUxpc3QnKSB0YWJzUXVlcnlMaXN0JCE6IE9ic2VydmFibGU8UXVlcnlMaXN0PFRhYkNvbXBvbmVudD4+O1xuICBAQ29udGVudENoaWxkcmVuKFRhYkNvbXBvbmVudCkgdGFic1F1ZXJ5TGlzdD86IFF1ZXJ5TGlzdDxUYWJDb21wb25lbnQ+O1xuICBAVmlld0NoaWxkKCd0YWJMaXN0RWxlbWVudCcpIHRhYkxpc3RFbGVtZW50PzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgLyoqXG4gICAqIFRoZSB0YWIgdGhhdCBpcyBjdXJyZW50bHkgZm9jdXNlZCB2aWEga2V5Ym9hcmQuXG4gICAqL1xuICBmb2N1c2VkSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgZ2V0IHRhYklkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMudGFicy5tYXAoKHQpID0+IHQudGFiSWQpO1xuICB9XG4gIHByaXZhdGUgZ2V0IHRhYnMoKTogVGFiQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLnRhYnNRdWVyeUxpc3Q/LnRvQXJyYXkoKSB8fCBbXTtcbiAgfVxuXG4gIGdldCBhY3RpdmVUYWJQb3J0YWwoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFic1t0aGlzLnNlbGVjdGVkSW5kZXhdPy5jb250ZW50O1xuICB9XG5cbiAgcmVhZG9ubHkgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLmxpc3RlblRvRmlyc3RUYWJTZWxlY3RCeUFuZ3VsYXJSb3V0ZXJGb3JUYWJMaW5rcygpLnN1YnNjcmliZSgodGFiKSA9PiB7XG4gICAgICAvLyBzeW5jaG9uaXplIHRoZSBmb2N1c2VkSW5kZXggYW5kIHNlbGVjdGVkSW5kZXggc3RhdGUgd2l0aCB0aGUgdGFiIHRoYXQgaXMgYWN0aXZlIHRocm91Z2ggdGhlIGN1cnJlbnQgcm91dGUuXG4gICAgICB0aGlzLnN3aXRjaFRvKHRhYik7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgdGFiID0gdGhpcy50YWJzW3RoaXMuc2VsZWN0ZWRJbmRleF07XG4gICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkSW5kZXgnXSAmJiAhY2hhbmdlc1snc2VsZWN0ZWRJbmRleCddLmlzRmlyc3RDaGFuZ2UoKSAmJiB0YWIpIHtcbiAgICAgIHRoaXMuc3dpdGNoVG8odGFiKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKHRoaXMudGFic1swXSkge1xuICAgICAgdGhpcy50YWJzWzBdLm5vTGVmdE1hcmdpbkZvckZpcnN0VGFiID0gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgdGFiID0gdGhpcy50YWJzW3RoaXMuc2VsZWN0ZWRJbmRleF07XG4gICAgaWYgKHRhYiAmJiAhdGFiLnRhYkxpbmspIHtcbiAgICAgIHRoaXMuc3dpdGNoVG8odGFiKTtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ZW5Ub1RhYnNTd2l0Y2ggPSAodGFiczogVGFiQ29tcG9uZW50W10pID0+IG1lcmdlKC4uLnRhYnMubWFwKCh0YWIpID0+IHRhYi5zd2l0Y2guYXNPYnNlcnZhYmxlKCkucGlwZShtYXAoKCkgPT4gdGFiKSkpKTtcblxuICAgIHRoaXMudGFic1F1ZXJ5TGlzdD8uY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IGxpc3RlblRvVGFic1N3aXRjaCh0aGlzLnRhYnMpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHRhYikgPT4ge1xuICAgICAgICB0aGlzLnN3aXRjaFRvKHRhYik7XG4gICAgICB9KTtcblxuICAgIHRoaXMudGFic1F1ZXJ5TGlzdD8uY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IG1lcmdlKC4uLnRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLmtleURvd25BY3Rpb24pKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUtleURvd24oZXZlbnQpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICB9XG5cbiAgb25Gb2N1c091dChldmVudDogYW55KSB7XG4gICAgaWYgKCF0aGlzLnRhYkxpc3RFbGVtZW50Py5uYXRpdmVFbGVtZW50Py5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgLy8gcmVzeW5jIGZvY3VzZWQgaW5kZXggb24gc2VsZWN0ZWQgaW5kZXggd2hlbiBsZWF2aW5nIHRhYnNcbiAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gdGhpcy5zZWxlY3RlZEluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHN3aXRjaFRvKHRhYjogVGFiQ29tcG9uZW50KSB7XG4gICAgdGhpcy50YWJzUXVlcnlMaXN0Py5mb3JFYWNoKCh0LCBpbmRleCkgPT4ge1xuICAgICAgdC5pc0FjdGl2ZSA9IHQgPT09IHRhYjtcbiAgICAgIGlmICh0LmlzQWN0aXZlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGluZGV4O1xuICAgICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IGluZGV4O1xuICAgICAgICB0aGlzLmluZGV4Q2hhbmdlLmVtaXQoaW5kZXgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgc3dpdGNoIChldmVudC5jb2RlKSB7XG4gICAgICBjYXNlIEx4VGFiR3JvdXBLZXlDb2RlLkFycm93UmlnaHQ6XG4gICAgICAgIGNvbnN0IG5ld1RhYkluZGV4ID0gKHRoaXMuZm9jdXNlZEluZGV4ICsgMSkgJSB0aGlzLnRhYnMubGVuZ3RoO1xuICAgICAgICB0aGlzLmZvY3VzVGFiKG5ld1RhYkluZGV4KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEx4VGFiR3JvdXBLZXlDb2RlLkFycm93TGVmdDpcbiAgICAgICAgY29uc3QgcHJldmlvdXNUYWJJbmRleCA9IHRoaXMuZm9jdXNlZEluZGV4ID09PSAwID8gdGhpcy50YWJzLmxlbmd0aCAtIDEgOiB0aGlzLmZvY3VzZWRJbmRleCAtIDE7XG4gICAgICAgIHRoaXMuZm9jdXNUYWIocHJldmlvdXNUYWJJbmRleCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMeFRhYkdyb3VwS2V5Q29kZS5Ib21lOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmZvY3VzVGFiKDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTHhUYWJHcm91cEtleUNvZGUuRW5kOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmZvY3VzVGFiKHRoaXMudGFicy5sZW5ndGggLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c1RhYih0YWJJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgdGFiID0gdGhpcy50YWJzW3RhYkluZGV4XTtcbiAgICBpZiAoIXRhYikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRhYi5zZXRGb2N1cygpO1xuICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gdGFiSW5kZXg7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvRmlyc3RUYWJTZWxlY3RCeUFuZ3VsYXJSb3V0ZXJGb3JUYWJMaW5rcygpIHtcbiAgICByZXR1cm4gdGhpcy50YWJzUXVlcnlMaXN0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgY29uc3QgdGFiTGlua3MgPSB0aGlzLnRhYnMuZmlsdGVyKCh0YWIpID0+ICEhdGFiLnRhYkxpbmspO1xuICAgICAgICByZXR1cm4gbWVyZ2UoLi4udGFiTGlua3MubWFwKCh0YWIpID0+IHRhYi5yb3V0ZXJMaW5rQWN0aXZlQ2hhbmdlJC5waXBlKG1hcCgoKSA9PiB0YWIpKSkpO1xuICAgICAgfSksXG4gICAgICBmaXJzdCgpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkgLy8gYWRkZWQgaW4gYWRkaXRpb24gdG8gZmlyc3QoKSBoZXJlIHNpbmNlIGZvciB0YWIgZ3JvdXBzIHdpdGhvdXQgbGlua3Mgbm8gc2luZ2xlIHZhbHVlIHdpbGwgZXZlciBiZSBlbWl0LlxuICAgICk7XG4gIH1cbn1cbiIsIjx1bFxuICAjdGFiTGlzdEVsZW1lbnRcbiAgY2xhc3M9XCJ0YWJzXCJcbiAgcm9sZT1cInRhYmxpc3RcIlxuICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgkZXZlbnQpXCJcbiAgW2F0dHIuYXJpYS1vd25zXT1cInRhYklkcy5qb2luKCcgJylcIlxuICBbY2xhc3MuY2VudGVyZWRdPVwiaXNDZW50ZXJlZFwiXG4+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvdWw+XG5cbjxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cImFjdGl2ZVRhYlBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4iXX0=
|