@leanix/components 0.4.91 → 0.4.93
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/esm2022/lib/tab-ui/components/tab/tab.component.mjs +47 -8
- package/esm2022/lib/tab-ui/components/tab-group/tab-group.component.mjs +82 -14
- package/fesm2022/leanix-components.mjs +132 -25
- package/fesm2022/leanix-components.mjs.map +1 -1
- package/lib/tab-ui/components/tab/tab.component.d.ts +18 -5
- package/lib/tab-ui/components/tab-group/tab-group.component.d.ts +14 -4
- package/package.json +1 -1
@@ -5,11 +5,12 @@ import { RouterLink, RouterLinkActive } from '@angular/router';
|
|
5
5
|
import { uniqueId } from 'lodash/fp';
|
6
6
|
import { BadgeComponent } from '../../../core-ui/components/badge/badge.component';
|
7
7
|
import * as i0 from "@angular/core";
|
8
|
-
import * as i1 from "@angular/
|
8
|
+
import * as i1 from "@angular/router";
|
9
|
+
import * as i2 from "@angular/cdk/portal";
|
9
10
|
export class TabComponent {
|
10
11
|
set isActive(value) {
|
11
12
|
this._isActive = value;
|
12
|
-
this.cd
|
13
|
+
this.cd?.markForCheck();
|
13
14
|
}
|
14
15
|
get isActive() {
|
15
16
|
if (this.routerLinkActive) {
|
@@ -17,7 +18,9 @@ export class TabComponent {
|
|
17
18
|
}
|
18
19
|
return this._isActive;
|
19
20
|
}
|
20
|
-
constructor(cd) {
|
21
|
+
constructor(router, activatedRoute, cd) {
|
22
|
+
this.router = router;
|
23
|
+
this.activatedRoute = activatedRoute;
|
21
24
|
this.cd = cd;
|
22
25
|
this.label = '';
|
23
26
|
this.routerLinkActiveOptions = { exact: true };
|
@@ -27,16 +30,47 @@ export class TabComponent {
|
|
27
30
|
this.background = 'white';
|
28
31
|
this.disabled = false;
|
29
32
|
this.switch = new EventEmitter();
|
33
|
+
this.keyDownAction = new EventEmitter();
|
30
34
|
this._isActive = false;
|
31
35
|
this.tabPanelId = uniqueId('panelId');
|
36
|
+
this.tabId = uniqueId('tab');
|
32
37
|
}
|
33
|
-
|
34
|
-
|
38
|
+
select() {
|
39
|
+
if (this.tabLink) {
|
40
|
+
const formattedTabLink = typeof this.tabLink === 'string' ? [this.tabLink] : this.tabLink;
|
41
|
+
this.router.navigate(formattedTabLink, { relativeTo: this.activatedRoute }).then(() => {
|
42
|
+
this.switch.emit({ tabId: this.tabId, tabPanelId: this.tabPanelId });
|
43
|
+
});
|
44
|
+
}
|
45
|
+
else {
|
46
|
+
this.switch.emit({ tabId: this.tabId, tabPanelId: this.tabPanelId });
|
47
|
+
}
|
48
|
+
this.isActive = true;
|
49
|
+
}
|
50
|
+
setFocus() {
|
51
|
+
this.tabElement?.nativeElement?.focus();
|
52
|
+
}
|
53
|
+
handleKeyDown(event) {
|
54
|
+
switch (event.code) {
|
55
|
+
case 'Enter':
|
56
|
+
case 'Space':
|
57
|
+
/**
|
58
|
+
* We are preventing the default browser behavior when the `SPACE` key is pressed, in which
|
59
|
+
* case the browser would scroll down the page.
|
60
|
+
*/
|
61
|
+
event.preventDefault();
|
62
|
+
this.select();
|
63
|
+
break;
|
64
|
+
}
|
65
|
+
this.keyDownAction.emit(event);
|
66
|
+
}
|
67
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TabComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
68
|
+
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: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true }, { propertyName: "tabElement", first: true, predicate: ["tabElement"], 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.aria-controls]=\"tabPanelId\"\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\" [attr.id]=\"tabPanelId\">\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.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 }); }
|
35
69
|
}
|
36
70
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TabComponent, decorators: [{
|
37
71
|
type: Component,
|
38
|
-
args: [{ selector: 'lx-tab', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, RouterLinkActive, RouterLink, NgTemplateOutlet, BadgeComponent, PortalModule], template: "<li\n
|
39
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { icon: [{
|
72
|
+
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.aria-controls]=\"tabPanelId\"\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\" [attr.id]=\"tabPanelId\">\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.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"] }]
|
73
|
+
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i0.ChangeDetectorRef }], propDecorators: { icon: [{
|
40
74
|
type: Input
|
41
75
|
}], label: [{
|
42
76
|
type: Input
|
@@ -60,11 +94,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
|
|
60
94
|
type: Input
|
61
95
|
}], switch: [{
|
62
96
|
type: Output
|
97
|
+
}], keyDownAction: [{
|
98
|
+
type: Output
|
63
99
|
}], content: [{
|
64
100
|
type: ViewChild,
|
65
101
|
args: ['contentTemplate', { static: true }]
|
66
102
|
}], routerLinkActive: [{
|
67
103
|
type: ViewChild,
|
68
104
|
args: [RouterLinkActive]
|
105
|
+
}], tabElement: [{
|
106
|
+
type: ViewChild,
|
107
|
+
args: ['tabElement']
|
69
108
|
}] } });
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3RhYi11aS9jb21wb25lbnRzL3RhYi90YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdGFiLXVpL2NvbXBvbmVudHMvdGFiL3RhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFrQixNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7QUFVbkYsTUFBTSxPQUFPLFlBQVk7SUEwQnZCLElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFHRCxZQUFvQixFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQWhDaEMsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUluQiw0QkFBdUIsR0FBdUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDOUQscUJBQWdCLEdBQXdCLFNBQVMsQ0FBQztRQUNsRCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLDRCQUF1QixHQUFZLEtBQUssQ0FBQztRQUN6QyxlQUFVLEdBQXFCLE9BQU8sQ0FBQztRQUN2QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRXpCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBbUI5QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBeENVLFlBQVk7a0dBQVosWUFBWSxvakJBd0JaLGdCQUFnQixnREN2QzdCLHV4Q0FrQ0EsbW9DRHJCWSxJQUFJLDZGQUFFLGdCQUFnQiw4TUFBRSxVQUFVLDROQUFFLGdCQUFnQixvSkFBRSxjQUFjLDBGQUFFLFlBQVk7OzJGQUVqRixZQUFZO2tCQVJ4QixTQUFTOytCQUNFLFFBQVEsbUJBR0QsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUM7c0ZBT3BGLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUtQLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR2pCLGdCQUFnQjtzQkFBNUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3J0YWxNb2R1bGUsIFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTGluaywgUm91dGVyTGlua0FjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyBCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUtdWkvY29tcG9uZW50cy9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdseC10YWInLFxuICB0ZW1wbGF0ZVVybDogJ3RhYi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyd0YWIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0lmLCBSb3V0ZXJMaW5rQWN0aXZlLCBSb3V0ZXJMaW5rLCBOZ1RlbXBsYXRlT3V0bGV0LCBCYWRnZUNvbXBvbmVudCwgUG9ydGFsTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIGljb24gaW5wdXQgdGFrZXMgYSBmb250IGF3ZXNvbWUgc2VsZWN0b3JcbiAgICogV0FSTklORzogQ3VycmVudGx5IHRoaXMgY29tcG9uZW50IGRvZXMgbm90IHN1cHBvcnQgdXNpbmcgYW4gaWNvbiB0b2dldGhlciB3aXRoIGEgbGFiZWwgb3IgY291bnRlci5cbiAgICovXG4gIEBJbnB1dCgpIGljb24/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRhYkxpbms/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvdW50ZXI/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHJvdXRlckxpbmtBY3RpdmVPcHRpb25zOiB7IGV4YWN0OiBib29sZWFuIH0gPSB7IGV4YWN0OiB0cnVlIH07XG4gIEBJbnB1dCgpIGNvdW50ZXJCYWRnZVNpemU6ICdkZWZhdWx0JyB8ICdzbWFsbCcgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIG5vTWFyZ2luOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG5vTGVmdE1hcmdpbkZvckZpcnN0VGFiOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGJhY2tncm91bmQ6ICd3aGl0ZScgfCAnZ3JheScgPSAnd2hpdGUnO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBzd2l0Y2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgdGFiUGFuZWxJZDogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnRUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGNvbnRlbnQ/OiBUZW1wbGF0ZVBvcnRhbDxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoUm91dGVyTGlua0FjdGl2ZSkgcm91dGVyTGlua0FjdGl2ZT86IFJvdXRlckxpbmtBY3RpdmU7XG5cbiAgc2V0IGlzQWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNBY3RpdmUgPSB2YWx1ZTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG4gIGdldCBpc0FjdGl2ZSgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXJMaW5rQWN0aXZlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yb3V0ZXJMaW5rQWN0aXZlLmlzQWN0aXZlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faXNBY3RpdmU7XG4gIH1cbiAgcHJpdmF0ZSBfaXNBY3RpdmUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMudGFiUGFuZWxJZCA9IHVuaXF1ZUlkKCdwYW5lbElkJyk7XG4gIH1cbn1cbiIsIjxsaVxuICBjbGFzcz1cInRhYlwiXG4gIFthdHRyLnRhYmluZGV4XT1cImlzQWN0aXZlIHx8IGRpc2FibGVkIHx8IHRhYkxpbmsgPyAnLTEnIDogJzAnXCJcbiAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc0FjdGl2ZVwiXG4gIFthdHRyLmFyaWEtY29udHJvbHNdPVwidGFiUGFuZWxJZFwiXG4gIFtjbGFzcy5hY3RpdmVdPVwiaXNBY3RpdmVcIlxuICBbY2xhc3Mud2l0aEljb25dPVwiaWNvblwiXG4gIFtjbGFzcy5ub01hcmdpbl09XCJub01hcmdpblwiXG4gIFtjbGFzcy5ub0xlZnRNYXJnaW5Gb3JGaXJzdFRhYl09XCJub0xlZnRNYXJnaW5Gb3JGaXJzdFRhYlwiXG4gIFtjbGFzcy5iYWNrZ3JvdW5kR3JheV09XCJiYWNrZ3JvdW5kID09PSAnZ3JheSdcIlxuICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbY2xhc3MucG9ydGFsVGFiXT1cIiF0YWJMaW5rXCJcbiAgW2NsYXNzLnJvdXRlckxpbmtUYWJdPVwidGFiTGlua1wiXG4gIFthdHRyLnRpdGxlXT1cInRpdGxlXCJcbiAgcm9sZT1cInRhYlwiXG4gIChrZXl1cC5lbnRlcik9XCJzd2l0Y2guZW1pdCgpXCJcbiAgKGNsaWNrKT1cInN3aXRjaC5lbWl0KClcIlxuPlxuICA8YSAqbmdJZj1cInRhYkxpbms7IGVsc2UgcG9ydGFsVGFiXCIgW3JvdXRlckxpbmtdPVwidGFiTGlua1wiIHJvdXRlckxpbmtBY3RpdmUgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInJvdXRlckxpbmtBY3RpdmVPcHRpb25zXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBvcnRhbFRhYlwiPjwvbmctY29udGFpbmVyPlxuICA8L2E+XG5cbiAgPG5nLXRlbXBsYXRlICNwb3J0YWxUYWI+XG4gICAgPGkgKm5nSWY9XCJpY29uXCIgY2xhc3M9XCJpY29uIHt7IGljb24gfX1cIj48L2k+XG4gICAgPHNwYW4gKm5nSWY9XCJsYWJlbFwiIGNsYXNzPVwidGFiTGFiZWxcIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICA8bHgtYmFkZ2UgKm5nSWY9XCJjb3VudGVyXCIgW3NpemVdPVwiY291bnRlckJhZGdlU2l6ZVwiIFtjb250ZW50XT1cImNvdW50ZXJcIiBbY29sb3JdPVwiJ2dyYXknXCI+PC9seC1iYWRnZT5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgY2RrUG9ydGFsICNjb250ZW50VGVtcGxhdGU9XCJjZGtQb3J0YWxcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXRhYkxpbmtcIiBjbGFzcz1cImNvbnRlbnRcIiByb2xlPVwidGFicGFuZWxcIiBbYXR0ci5pZF09XCJ0YWJQYW5lbElkXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2xpPlxuIl19
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3RhYi11aS9jb21wb25lbnRzL3RhYi90YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdGFiLXVpL2NvbXBvbmVudHMvdGFiL3RhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFrQixNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUEwQixVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQzs7OztBQVVuRixNQUFNLE9BQU8sWUFBWTtJQW1DdkIsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7U0FDdkM7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUdELFlBQ1UsTUFBYyxFQUNkLGNB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SztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFNUCxPQUFPO3NCQUROLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdqQixnQkFBZ0I7c0JBQTVDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUVGLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvcnRhbE1vZHVsZSwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHVuaXF1ZUlkIH0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS11aS9jb21wb25lbnRzL2JhZGdlL2JhZGdlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LXRhYicsXG4gIHRlbXBsYXRlVXJsOiAndGFiLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3RhYi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIFJvdXRlckxpbmtBY3RpdmUsIFJvdXRlckxpbmssIE5nVGVtcGxhdGVPdXRsZXQsIEJhZGdlQ29tcG9uZW50LCBQb3J0YWxNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFRhYkNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgaWNvbiBpbnB1dCB0YWtlcyBhIGZvbnQgYXdlc29tZSBzZWxlY3RvclxuICAgKiBXQVJOSU5HOiBDdXJyZW50bHkgdGhpcyBjb21wb25lbnQgZG9lcyBub3Qgc3VwcG9ydCB1c2luZyBhbiBpY29uIHRvZ2V0aGVyIHdpdGggYSBsYWJlbCBvciBjb3VudGVyLlxuICAgKi9cbiAgQElucHV0KCkgaWNvbj86IHN0cmluZztcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEluIHNvbWUgcGFydHMgb2YgdGhlIGFwcGxpY2F0aW9uLCB3ZSBhcmUgcGFzc2luZyBhIHBsYWluIHN0cmluZyB0byB0aGUgdGFiTGluayBpbnB1dCwgd2hlcmVhcyBpblxuICAgKiBtb3N0IHBhcnRzLCB0aGUgaW5wdXQgaXMgcGFzc2VkIGFzIGFuIGFycmF5LiBUaGUgUm91dGVyTGluayBkaXJlY3RpdmUgYWxzbyBhY2NlcHRzIGJvdGggdHlwZXMsXG4gICAqIHRoZXJlZm9yZSB3ZSBhcmUgdXNpbmcgdHlwZSBvZiB0aGUgaW5wdXQgYXMgc3RyaW5nIHwgYW55W10uXG4gICAqL1xuICBASW5wdXQoKSB0YWJMaW5rPzogc3RyaW5nIHwgYW55W107XG4gIEBJbnB1dCgpIGNvdW50ZXI/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHJvdXRlckxpbmtBY3RpdmVPcHRpb25zOiB7IGV4YWN0OiBib29sZWFuIH0gPSB7IGV4YWN0OiB0cnVlIH07XG4gIEBJbnB1dCgpIGNvdW50ZXJCYWRnZVNpemU6ICdkZWZhdWx0JyB8ICdzbWFsbCcgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIG5vTWFyZ2luOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG5vTGVmdE1hcmdpbkZvckZpcnN0VGFiOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGJhY2tncm91bmQ6ICd3aGl0ZScgfCAnZ3JheScgPSAnd2hpdGUnO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBzd2l0Y2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBrZXlEb3duQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PigpO1xuXG4gIHRhYlBhbmVsSWQ6IHN0cmluZztcbiAgdGFiSWQ6IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdjb250ZW50VGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBjb250ZW50PzogVGVtcGxhdGVQb3J0YWw8YW55PjtcblxuICBAVmlld0NoaWxkKFJvdXRlckxpbmtBY3RpdmUpIHJvdXRlckxpbmtBY3RpdmU/OiBSb3V0ZXJMaW5rQWN0aXZlO1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYkVsZW1lbnQnKSB0YWJFbGVtZW50PzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgc2V0IGlzQWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNBY3RpdmUgPSB2YWx1ZTtcbiAgICB0aGlzLmNkPy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuICBnZXQgaXNBY3RpdmUoKSB7XG4gICAgaWYgKHRoaXMucm91dGVyTGlua0FjdGl2ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucm91dGVyTGlua0FjdGl2ZS5pc0FjdGl2ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2lzQWN0aXZlO1xuICB9XG4gIHByaXZhdGUgX2lzQWN0aXZlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLnRhYlBhbmVsSWQgPSB1bmlxdWVJZCgncGFuZWxJZCcpO1xuICAgIHRoaXMudGFiSWQgPSB1bmlxdWVJZCgndGFiJyk7XG4gIH1cblxuICBzZWxlY3QoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGFiTGluaykge1xuICAgICAgY29uc3QgZm9ybWF0dGVkVGFiTGluayA9IHR5cGVvZiB0aGlzLnRhYkxpbmsgPT09ICdzdHJpbmcnID8gW3RoaXMudGFiTGlua10gOiB0aGlzLnRhYkxpbms7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShmb3JtYXR0ZWRUYWJMaW5rLCB7IHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUgfSkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuc3dpdGNoLmVtaXQoeyB0YWJJZDogdGhpcy50YWJJZCwgdGFiUGFuZWxJZDogdGhpcy50YWJQYW5lbElkIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3dpdGNoLmVtaXQoeyB0YWJJZDogdGhpcy50YWJJZCwgdGFiUGFuZWxJZDogdGhpcy50YWJQYW5lbElkIH0pO1xuICAgIH1cbiAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcbiAgfVxuXG4gIHNldEZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMudGFiRWxlbWVudD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgfVxuXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgIGNhc2UgJ1NwYWNlJzpcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlIGFyZSBwcmV2ZW50aW5nIHRoZSBkZWZhdWx0IGJyb3dzZXIgYmVoYXZpb3Igd2hlbiB0aGUgYFNQQUNFYCBrZXkgaXMgcHJlc3NlZCwgaW4gd2hpY2hcbiAgICAgICAgICogY2FzZSB0aGUgYnJvd3NlciB3b3VsZCBzY3JvbGwgZG93biB0aGUgcGFnZS5cbiAgICAgICAgICovXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLmtleURvd25BY3Rpb24uZW1pdChldmVudCk7XG4gIH1cbn1cbiIsIjxsaVxuICAjdGFiRWxlbWVudFxuICBjbGFzcz1cInRhYlwiXG4gIFtjbGFzcy5hY3RpdmVdPVwiaXNBY3RpdmVcIlxuICBbY2xhc3Mud2l0aEljb25dPVwiaWNvblwiXG4gIFtjbGFzcy5ub01hcmdpbl09XCJub01hcmdpblwiXG4gIFtjbGFzcy5ub0xlZnRNYXJnaW5Gb3JGaXJzdFRhYl09XCJub0xlZnRNYXJnaW5Gb3JGaXJzdFRhYlwiXG4gIFtjbGFzcy5iYWNrZ3JvdW5kR3JheV09XCJiYWNrZ3JvdW5kID09PSAnZ3JheSdcIlxuICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbY2xhc3MucG9ydGFsVGFiXT1cIiF0YWJMaW5rXCJcbiAgW2NsYXNzLnJvdXRlckxpbmtUYWJdPVwidGFiTGlua1wiXG4gIFthdHRyLnRpdGxlXT1cInRpdGxlXCJcbiAgKGNsaWNrKT1cInNlbGVjdCgpXCJcbiAgKGtleWRvd24pPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgcm9sZT1cInRhYlwiXG4gIFthdHRyLmlkXT1cInRhYklkXCJcbiAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc0FjdGl2ZVwiXG4gIFthdHRyLmFyaWEtY29udHJvbHNdPVwidGFiUGFuZWxJZFwiXG4gIFthdHRyLnRhYmluZGV4XT1cImlzQWN0aXZlID8gJzAnIDogJy0xJ1wiXG4+XG4gIDxhXG4gICAgKm5nSWY9XCJ0YWJMaW5rOyBlbHNlIHBvcnRhbFRhYlwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgW3JvdXRlckxpbmtdPVwidGFiTGlua1wiXG4gICAgcm91dGVyTGlua0FjdGl2ZVxuICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc1wiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicG9ydGFsVGFiXCI+PC9uZy1jb250YWluZXI+XG4gIDwvYT5cblxuICA8bmctdGVtcGxhdGUgI3BvcnRhbFRhYj5cbiAgICA8aSAqbmdJZj1cImljb25cIiBjbGFzcz1cImljb24ge3sgaWNvbiB9fVwiPjwvaT5cbiAgICA8c3BhbiAqbmdJZj1cImxhYmVsXCIgY2xhc3M9XCJ0YWJMYWJlbFwiPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgIDxseC1iYWRnZSAqbmdJZj1cImNvdW50ZXJcIiBbc2l6ZV09XCJjb3VudGVyQmFkZ2VTaXplXCIgW2NvbnRlbnRdPVwiY291bnRlclwiIFtjb2xvcl09XCInZ3JheSdcIj48L2x4LWJhZGdlPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSBjZGtQb3J0YWwgI2NvbnRlbnRUZW1wbGF0ZT1cImNka1BvcnRhbFwiPlxuICAgIDxkaXYgKm5nSWY9XCIhdGFiTGlua1wiIGNsYXNzPVwiY29udGVudFwiIHJvbGU9XCJ0YWJwYW5lbFwiIFthdHRyLmlkXT1cInRhYlBhbmVsSWRcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbGk+XG4iXX0=
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { PortalModule } from '@angular/cdk/portal';
|
2
|
-
import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
|
3
|
-
import {
|
2
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
3
|
+
import { Subject, merge } from 'rxjs';
|
4
4
|
import { map, startWith, switchMap, takeUntil } from 'rxjs/operators';
|
5
5
|
import { TabComponent } from '../tab/tab.component';
|
6
6
|
import * as i0 from "@angular/core";
|
@@ -12,13 +12,22 @@ export class TabGroupComponent {
|
|
12
12
|
get activeTabPortal() {
|
13
13
|
return this.tabs[this.selectedIndex]?.content;
|
14
14
|
}
|
15
|
-
|
15
|
+
get tabIds() {
|
16
|
+
return this.tabs.map((t) => t.tabId);
|
17
|
+
}
|
18
|
+
constructor(cd, ngZone) {
|
16
19
|
this.cd = cd;
|
20
|
+
this.ngZone = ngZone;
|
17
21
|
this.isCentered = false;
|
18
22
|
this.selectedIndex = 0;
|
23
|
+
this.ariaTabPattern = 'manualActivation';
|
19
24
|
this.indexChange = new EventEmitter();
|
25
|
+
this.focusedIndex = 0;
|
20
26
|
this.destroyed$ = new Subject();
|
21
27
|
}
|
28
|
+
ngOnInit() {
|
29
|
+
this.focusedIndex = this.selectedIndex;
|
30
|
+
}
|
22
31
|
ngOnChanges(changes) {
|
23
32
|
const tab = this.tabs[this.selectedIndex];
|
24
33
|
if (changes['selectedIndex'] && !changes['selectedIndex'].isFirstChange() && tab) {
|
@@ -29,44 +38,103 @@ export class TabGroupComponent {
|
|
29
38
|
if (this.tabs[0]) {
|
30
39
|
this.tabs[0].noLeftMarginForFirstTab = true;
|
31
40
|
}
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
41
|
+
this.ngZone.runOutsideAngular(() => {
|
42
|
+
// Use setTimeout to let RouterLinkActive enable isActive method (used on tabs)
|
43
|
+
setTimeout(() => {
|
44
|
+
this.navigateToInitialTab();
|
45
|
+
});
|
46
|
+
});
|
36
47
|
const listenToTabsSwitch = (tabs) => merge(...tabs.map((tab) => tab.switch.asObservable().pipe(map(() => tab))));
|
37
48
|
this.tabsQueryList?.changes
|
38
49
|
.pipe(startWith(null), switchMap(() => listenToTabsSwitch(this.tabs)), takeUntil(this.destroyed$))
|
39
50
|
.subscribe((tab) => {
|
40
51
|
this.switchTo(tab);
|
41
52
|
});
|
53
|
+
this.tabs.forEach((tab) => {
|
54
|
+
tab.keyDownAction.pipe(takeUntil(this.destroyed$)).subscribe((event) => {
|
55
|
+
this.handleKeyDown(tab, event);
|
56
|
+
});
|
57
|
+
});
|
42
58
|
}
|
43
59
|
ngOnDestroy() {
|
44
60
|
this.destroyed$.next();
|
61
|
+
this.destroyed$.complete();
|
62
|
+
}
|
63
|
+
onFocusOut(event) {
|
64
|
+
if (!this.tabListElement?.nativeElement?.contains(event.relatedTarget)) {
|
65
|
+
// resync focused index on selected index when leaving tabs
|
66
|
+
this.focusedIndex = this.selectedIndex;
|
67
|
+
}
|
45
68
|
}
|
46
69
|
switchTo(tab) {
|
47
70
|
this.tabsQueryList?.forEach((t, index) => {
|
48
|
-
t.isActive = t === tab;
|
71
|
+
t.isActive = t.tabId === tab.tabId;
|
49
72
|
if (t.isActive) {
|
50
73
|
this.selectedIndex = index;
|
74
|
+
this.focusedIndex = index;
|
51
75
|
this.indexChange.emit(index);
|
52
76
|
}
|
53
77
|
});
|
54
78
|
this.cd.markForCheck();
|
55
79
|
}
|
56
|
-
|
57
|
-
|
80
|
+
handleKeyDown(_tab, event) {
|
81
|
+
switch (event.code) {
|
82
|
+
case 'ArrowRight':
|
83
|
+
const newTabIndex = (this.focusedIndex + 1) % this.tabs.length;
|
84
|
+
this.navigateToTab(newTabIndex);
|
85
|
+
break;
|
86
|
+
case 'ArrowLeft':
|
87
|
+
const previousTabIndex = this.focusedIndex === 0 ? this.tabs.length - 1 : this.focusedIndex - 1;
|
88
|
+
this.navigateToTab(previousTabIndex);
|
89
|
+
break;
|
90
|
+
case 'Home':
|
91
|
+
event.preventDefault();
|
92
|
+
this.navigateToTab(0);
|
93
|
+
break;
|
94
|
+
case 'End':
|
95
|
+
event.preventDefault();
|
96
|
+
this.navigateToTab(this.tabs.length - 1);
|
97
|
+
break;
|
98
|
+
}
|
99
|
+
}
|
100
|
+
navigateToTab(tabIndex) {
|
101
|
+
const tab = this.tabs[tabIndex];
|
102
|
+
if (!tab) {
|
103
|
+
return;
|
104
|
+
}
|
105
|
+
tab.setFocus();
|
106
|
+
this.focusedIndex = tabIndex;
|
107
|
+
if (this.ariaTabPattern === 'automaticActivation') {
|
108
|
+
tab.select();
|
109
|
+
}
|
110
|
+
}
|
111
|
+
navigateToInitialTab() {
|
112
|
+
const alreadyActivedTabWithLink = this.tabs.find((t) => {
|
113
|
+
return t.tabLink && t.isActive;
|
114
|
+
});
|
115
|
+
// Activated tab by URL takes priority over initial `selectedIndex` input value
|
116
|
+
const initialTab = alreadyActivedTabWithLink || this.tabs[this.selectedIndex];
|
117
|
+
initialTab?.select();
|
118
|
+
}
|
119
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TabGroupComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
120
|
+
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", ariaTabPattern: "ariaTabPattern" }, outputs: { indexChange: "indexChange" }, queries: [{ propertyName: "tabsQueryList", predicate: TabComponent, descendants: true }], 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: [".tabs{display:inline-block;list-style:none;border-bottom:solid 1px #cfd5df;width:100%;margin:0;padding:0}.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 }); }
|
58
121
|
}
|
59
122
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TabGroupComponent, decorators: [{
|
60
123
|
type: Component,
|
61
|
-
args: [{ selector: 'lx-tab-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [PortalModule], template: "<ul
|
62
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { isCentered: [{
|
124
|
+
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: [".tabs{display:inline-block;list-style:none;border-bottom:solid 1px #cfd5df;width:100%;margin:0;padding:0}.tabs.centered{text-align:center}\n"] }]
|
125
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }], propDecorators: { isCentered: [{
|
63
126
|
type: Input
|
64
127
|
}], selectedIndex: [{
|
65
128
|
type: Input
|
129
|
+
}], ariaTabPattern: [{
|
130
|
+
type: Input
|
66
131
|
}], indexChange: [{
|
67
132
|
type: Output
|
68
133
|
}], tabsQueryList: [{
|
69
134
|
type: ContentChildren,
|
70
|
-
args: [TabComponent]
|
135
|
+
args: [TabComponent, { descendants: true }]
|
136
|
+
}], tabListElement: [{
|
137
|
+
type: ViewChild,
|
138
|
+
args: ['tabListElement']
|
71
139
|
}] } });
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3RhYi11aS9jb21wb25lbnRzL3RhYi1ncm91cC90YWItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdGFiLXVpL2NvbXBvbmVudHMvdGFiLWdyb3VwL3RhYi1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQVVwRCxNQUFNLE9BQU8saUJBQWlCO0lBTzVCLElBQVksSUFBSTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUNoRCxDQUFDO0lBSUQsWUFBb0IsRUFBcUI7UUFBckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFoQmhDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDekIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBWTFDLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRUUsQ0FBQztJQUU3QyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUMsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsYUFBYSxFQUFFLElBQUksR0FBRyxFQUFFO1lBQ2hGLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztTQUM3QztRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFDLElBQUksR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwQjtRQUVELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxJQUFvQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakksSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPO2FBQ3hCLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2YsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUM5QyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUMzQjthQUNBLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFpQjtRQUN4QixJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN2QyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO2dCQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2dCQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM5QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDOzhHQTdEVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixxTkFLWCxZQUFZLGtEQ2hDL0IsaUxBS0EscU1Eb0JZLFlBQVk7OzJGQUVYLGlCQUFpQjtrQkFSN0IsU0FBUzsrQkFDRSxjQUFjLG1CQUdQLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDO3NGQUdkLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUV3QixhQUFhO3NCQUEzQyxlQUFlO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1lcmdlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWJDb21wb25lbnQgfSBmcm9tICcuLi90YWIvdGFiLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LXRhYi1ncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAndGFiLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3RhYi1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1BvcnRhbE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgVGFiR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGlzQ2VudGVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2VsZWN0ZWRJbmRleDogbnVtYmVyID0gMDtcbiAgQE91dHB1dCgpIGluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUYWJDb21wb25lbnQpIHRhYnNRdWVyeUxpc3Q/OiBRdWVyeUxpc3Q8VGFiQ29tcG9uZW50PjtcblxuICBwcml2YXRlIGdldCB0YWJzKCk6IFRhYkNvbXBvbmVudFtdIHtcbiAgICByZXR1cm4gdGhpcy50YWJzUXVlcnlMaXN0Py50b0FycmF5KCkgfHwgW107XG4gIH1cblxuICBnZXQgYWN0aXZlVGFiUG9ydGFsKCkge1xuICAgIHJldHVybiB0aGlzLnRhYnNbdGhpcy5zZWxlY3RlZEluZGV4XT8uY29udGVudDtcbiAgfVxuXG4gIHJlYWRvbmx5IGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYnNbdGhpcy5zZWxlY3RlZEluZGV4XTtcbiAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWRJbmRleCddICYmICFjaGFuZ2VzWydzZWxlY3RlZEluZGV4J10uaXNGaXJzdENoYW5nZSgpICYmIHRhYikge1xuICAgICAgdGhpcy5zd2l0Y2hUbyh0YWIpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAodGhpcy50YWJzWzBdKSB7XG4gICAgICB0aGlzLnRhYnNbMF0ubm9MZWZ0TWFyZ2luRm9yRmlyc3RUYWIgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYnNbdGhpcy5zZWxlY3RlZEluZGV4XTtcbiAgICBpZiAodGFiKSB7XG4gICAgICB0aGlzLnN3aXRjaFRvKHRhYik7XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdGVuVG9UYWJzU3dpdGNoID0gKHRhYnM6IFRhYkNvbXBvbmVudFtdKSA9PiBtZXJnZSguLi50YWJzLm1hcCgodGFiKSA9PiB0YWIuc3dpdGNoLmFzT2JzZXJ2YWJsZSgpLnBpcGUobWFwKCgpID0+IHRhYikpKSk7XG5cbiAgICB0aGlzLnRhYnNRdWVyeUxpc3Q/LmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiBsaXN0ZW5Ub1RhYnNTd2l0Y2godGhpcy50YWJzKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh0YWIpID0+IHtcbiAgICAgICAgdGhpcy5zd2l0Y2hUbyh0YWIpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICB9XG5cbiAgc3dpdGNoVG8odGFiOiBUYWJDb21wb25lbnQpIHtcbiAgICB0aGlzLnRhYnNRdWVyeUxpc3Q/LmZvckVhY2goKHQsIGluZGV4KSA9PiB7XG4gICAgICB0LmlzQWN0aXZlID0gdCA9PT0gdGFiO1xuICAgICAgaWYgKHQuaXNBY3RpdmUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gaW5kZXg7XG4gICAgICAgIHRoaXMuaW5kZXhDaGFuZ2UuZW1pdChpbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPHVsIGNsYXNzPVwidGFic1wiIHJvbGU9XCJ0YWJsaXN0XCIgW2NsYXNzLmNlbnRlcmVkXT1cImlzQ2VudGVyZWRcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC91bD5cblxuPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPVwiYWN0aXZlVGFiUG9ydGFsXCI+PC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3RhYi11aS9jb21wb25lbnRzL3RhYi1ncm91cC90YWItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdGFiLXVpL2NvbXBvbmVudHMvdGFiLWdyb3VwL3RhYi1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixLQUFLLEVBS0wsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFVcEQsTUFBTSxPQUFPLGlCQUFpQjtJQVc1QixJQUFZLElBQUk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FB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QlksWUFBWTs7MkZBRVgsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNFLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7MkdBR2QsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFK0MsYUFBYTtzQkFBbEUsZUFBZTt1QkFBQyxZQUFZLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUN2QixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhYkNvbXBvbmVudCB9IGZyb20gJy4uL3RhYi90YWIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtdGFiLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICd0YWItZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsndGFiLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUG9ydGFsTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBpc0NlbnRlcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNlbGVjdGVkSW5kZXg6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGFyaWFUYWJQYXR0ZXJuOiAnbWFudWFsQWN0aXZhdGlvbicgfCAnYXV0b21hdGljQWN0aXZhdGlvbicgPSAnbWFudWFsQWN0aXZhdGlvbic7XG4gIEBPdXRwdXQoKSBpbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHRhYnNRdWVyeUxpc3Q/OiBRdWVyeUxpc3Q8VGFiQ29tcG9uZW50PjtcbiAgQFZpZXdDaGlsZCgndGFiTGlzdEVsZW1lbnQnKSB0YWJMaXN0RWxlbWVudD86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIGZvY3VzZWRJbmRleDogbnVtYmVyID0gMDtcblxuICBwcml2YXRlIGdldCB0YWJzKCk6IFRhYkNvbXBvbmVudFtdIHtcbiAgICByZXR1cm4gdGhpcy50YWJzUXVlcnlMaXN0Py50b0FycmF5KCkgfHwgW107XG4gIH1cblxuICBnZXQgYWN0aXZlVGFiUG9ydGFsKCkge1xuICAgIHJldHVybiB0aGlzLnRhYnNbdGhpcy5zZWxlY3RlZEluZGV4XT8uY29udGVudDtcbiAgfVxuXG4gIGdldCB0YWJJZHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnRhYnMubWFwKCh0KSA9PiB0LnRhYklkKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gdGhpcy5zZWxlY3RlZEluZGV4O1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnN0IHRhYiA9IHRoaXMudGFic1t0aGlzLnNlbGVjdGVkSW5kZXhdO1xuICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZEluZGV4J10gJiYgIWNoYW5nZXNbJ3NlbGVjdGVkSW5kZXgnXS5pc0ZpcnN0Q2hhbmdlKCkgJiYgdGFiKSB7XG4gICAgICB0aGlzLnN3aXRjaFRvKHRhYik7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICh0aGlzLnRhYnNbMF0pIHtcbiAgICAgIHRoaXMudGFic1swXS5ub0xlZnRNYXJnaW5Gb3JGaXJzdFRhYiA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gbGV0IFJvdXRlckxpbmtBY3RpdmUgZW5hYmxlIGlzQWN0aXZlIG1ldGhvZCAodXNlZCBvbiB0YWJzKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVUb0luaXRpYWxUYWIoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgbGlzdGVuVG9UYWJzU3dpdGNoID0gKHRhYnM6IFRhYkNvbXBvbmVudFtdKSA9PiBtZXJnZSguLi50YWJzLm1hcCgodGFiKSA9PiB0YWIuc3dpdGNoLmFzT2JzZXJ2YWJsZSgpLnBpcGUobWFwKCgpID0+IHRhYikpKSk7XG5cbiAgICB0aGlzLnRhYnNRdWVyeUxpc3Q/LmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiBsaXN0ZW5Ub1RhYnNTd2l0Y2godGhpcy50YWJzKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh0YWIpID0+IHtcbiAgICAgICAgdGhpcy5zd2l0Y2hUbyh0YWIpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnRhYnMuZm9yRWFjaCgodGFiOiBUYWJDb21wb25lbnQpID0+IHtcbiAgICAgIHRhYi5rZXlEb3duQWN0aW9uLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVLZXlEb3duKHRhYiwgZXZlbnQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgb25Gb2N1c091dChldmVudDogYW55KSB7XG4gICAgaWYgKCF0aGlzLnRhYkxpc3RFbGVtZW50Py5uYXRpdmVFbGVtZW50Py5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgLy8gcmVzeW5jIGZvY3VzZWQgaW5kZXggb24gc2VsZWN0ZWQgaW5kZXggd2hlbiBsZWF2aW5nIHRhYnNcbiAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gdGhpcy5zZWxlY3RlZEluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHN3aXRjaFRvKHRhYjogVGFiQ29tcG9uZW50KSB7XG4gICAgdGhpcy50YWJzUXVlcnlMaXN0Py5mb3JFYWNoKCh0LCBpbmRleCkgPT4ge1xuICAgICAgdC5pc0FjdGl2ZSA9IHQudGFiSWQgPT09IHRhYi50YWJJZDtcbiAgICAgIGlmICh0LmlzQWN0aXZlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGluZGV4O1xuICAgICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IGluZGV4O1xuICAgICAgICB0aGlzLmluZGV4Q2hhbmdlLmVtaXQoaW5kZXgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBoYW5kbGVLZXlEb3duKF90YWI6IFRhYkNvbXBvbmVudCwgZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICBjb25zdCBuZXdUYWJJbmRleCA9ICh0aGlzLmZvY3VzZWRJbmRleCArIDEpICUgdGhpcy50YWJzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvVGFiKG5ld1RhYkluZGV4KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBjb25zdCBwcmV2aW91c1RhYkluZGV4ID0gdGhpcy5mb2N1c2VkSW5kZXggPT09IDAgPyB0aGlzLnRhYnMubGVuZ3RoIC0gMSA6IHRoaXMuZm9jdXNlZEluZGV4IC0gMTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvVGFiKHByZXZpb3VzVGFiSW5kZXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG9UYWIoMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvVGFiKHRoaXMudGFicy5sZW5ndGggLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvVGFiKHRhYkluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYnNbdGFiSW5kZXhdO1xuICAgIGlmICghdGFiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGFiLnNldEZvY3VzKCk7XG4gICAgdGhpcy5mb2N1c2VkSW5kZXggPSB0YWJJbmRleDtcblxuICAgIGlmICh0aGlzLmFyaWFUYWJQYXR0ZXJuID09PSAnYXV0b21hdGljQWN0aXZhdGlvbicpIHtcbiAgICAgIHRhYi5zZWxlY3QoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG9Jbml0aWFsVGFiKCk6IHZvaWQge1xuICAgIGNvbnN0IGFscmVhZHlBY3RpdmVkVGFiV2l0aExpbmsgPSB0aGlzLnRhYnMuZmluZCgodCkgPT4ge1xuICAgICAgcmV0dXJuIHQudGFiTGluayAmJiB0LmlzQWN0aXZlO1xuICAgIH0pO1xuXG4gICAgLy8gQWN0aXZhdGVkIHRhYiBieSBVUkwgdGFrZXMgcHJpb3JpdHkgb3ZlciBpbml0aWFsIGBzZWxlY3RlZEluZGV4YCBpbnB1dCB2YWx1ZVxuICAgIGNvbnN0IGluaXRpYWxUYWIgPSBhbHJlYWR5QWN0aXZlZFRhYldpdGhMaW5rIHx8IHRoaXMudGFic1t0aGlzLnNlbGVjdGVkSW5kZXhdO1xuXG4gICAgaW5pdGlhbFRhYj8uc2VsZWN0KCk7XG4gIH1cbn1cbiIsIjx1bFxuICAjdGFiTGlzdEVsZW1lbnRcbiAgY2xhc3M9XCJ0YWJzXCJcbiAgcm9sZT1cInRhYmxpc3RcIlxuICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgkZXZlbnQpXCJcbiAgW2F0dHIuYXJpYS1vd25zXT1cInRhYklkcy5qb2luKCcgJylcIlxuICBbY2xhc3MuY2VudGVyZWRdPVwiaXNDZW50ZXJlZFwiXG4+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvdWw+XG5cbjxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cImFjdGl2ZVRhYlBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4iXX0=
|