carbon-components-angular
Version:
Next generation components
175 lines • 15 kB
JavaScript
import { Component, ContentChildren, Input, HostBinding } from "@angular/core";
import { SideNavItem } from "./sidenav-item.component";
import { Subscription } from "rxjs";
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "./sidenav-item.component";
/**
* `SideNavMenu` provides a method to group `SideNavItem`s under a common heading.
*/
export class SideNavMenu {
constructor() {
this.navItem = true;
this.navItemIcon = true;
this.role = "listitem";
/**
* Use the routerLink attribute on <a> tag for navigation instead of using event handlers
*/
this.useRouter = false;
/**
* Controls the visibility of the child `SideNavItem`s
*/
this.expanded = false;
/**
* Controls the active status indicator on the menu if there is an active
* child sidenav item.
*/
this.hasActiveChild = false;
this.activeItemsSubscription = new Subscription();
}
get navItemActive() {
return this.hasActiveChild;
}
ngAfterContentInit() {
setTimeout(() => {
this.sidenavItems.forEach(item => {
item.isSubMenu = true;
this.findActiveChildren();
const activeItemSubscription = item.selected.subscribe(() => {
this.findActiveChildren();
});
this.activeItemsSubscription.add(activeItemSubscription);
});
this.sidenavItems.changes.subscribe(() => {
this.sidenavItems.forEach(item => {
item.isSubMenu = true;
this.findActiveChildren();
const activeItemSubscription = item.selected.subscribe(() => {
this.findActiveChildren();
});
this.activeItemsSubscription.add(activeItemSubscription);
});
});
});
}
ngOnDestroy() {
this.activeItemsSubscription.unsubscribe();
}
toggle() {
this.expanded = !this.expanded;
}
findActiveChildren() {
this.hasActiveChild = this.sidenavItems.some(item => item.active);
}
}
SideNavMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SideNavMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
SideNavMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SideNavMenu, selector: "cds-sidenav-menu, ibm-sidenav-menu", inputs: { useRouter: "useRouter", title: "title", expanded: "expanded", hasActiveChild: "hasActiveChild", menuItems: "menuItems" }, host: { properties: { "class.cds--side-nav__item": "this.navItem", "class.cds--side-nav__item--icon": "this.navItemIcon", "class.cds--side-nav__item--active": "this.navItemActive", "attr.role": "this.role" } }, queries: [{ propertyName: "sidenavItems", predicate: SideNavItem }], ngImport: i0, template: `
<button
(click)="toggle()"
class="cds--side-nav__submenu"
aria-haspopup="true"
[attr.aria-expanded]="expanded"
type="button">
<div class="cds--side-nav__icon">
<ng-content select="svg, [icon]"></ng-content>
</div>
<span class="cds--side-nav__submenu-title">{{title}}</span>
<div class="cds--side-nav__icon cds--side-nav__icon--small cds--side-nav__submenu-chevron">
<svg
focusable="false"
preserveAspectRatio="xMidYMid meet"
style="will-change: transform;"
xmlns="http://www.w3.org/2000/svg"
width="20"
height="20"
viewBox="0 0 32 32"
aria-hidden="true">
<path d="M16 22L6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path>
</svg>
</div>
</button>
<div class="cds--side-nav__menu" role="list">
<ng-content></ng-content>
<ng-container *ngFor="let menuItem of menuItems">
<cds-sidenav-item
[href]="menuItem.href"
[route]="menuItem.route"
[routeExtras]="menuItem.routeExtras"
[useRouter]="useRouter"
[isSubMenu]="true">
{{ menuItem.content }}
</cds-sidenav-item>
</ng-container>
</div>
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.SideNavItem, selector: "cds-sidenav-item, ibm-sidenav-item", inputs: ["href", "useRouter", "active", "route", "isSubMenu", "routeExtras", "title"], outputs: ["navigation", "selected"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SideNavMenu, decorators: [{
type: Component,
args: [{
selector: "cds-sidenav-menu, ibm-sidenav-menu",
template: `
<button
(click)="toggle()"
class="cds--side-nav__submenu"
aria-haspopup="true"
[attr.aria-expanded]="expanded"
type="button">
<div class="cds--side-nav__icon">
<ng-content select="svg, [icon]"></ng-content>
</div>
<span class="cds--side-nav__submenu-title">{{title}}</span>
<div class="cds--side-nav__icon cds--side-nav__icon--small cds--side-nav__submenu-chevron">
<svg
focusable="false"
preserveAspectRatio="xMidYMid meet"
style="will-change: transform;"
xmlns="http://www.w3.org/2000/svg"
width="20"
height="20"
viewBox="0 0 32 32"
aria-hidden="true">
<path d="M16 22L6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path>
</svg>
</div>
</button>
<div class="cds--side-nav__menu" role="list">
<ng-content></ng-content>
<ng-container *ngFor="let menuItem of menuItems">
<cds-sidenav-item
[href]="menuItem.href"
[route]="menuItem.route"
[routeExtras]="menuItem.routeExtras"
[useRouter]="useRouter"
[isSubMenu]="true">
{{ menuItem.content }}
</cds-sidenav-item>
</ng-container>
</div>
`
}]
}], propDecorators: { navItem: [{
type: HostBinding,
args: ["class.cds--side-nav__item"]
}], navItemIcon: [{
type: HostBinding,
args: ["class.cds--side-nav__item--icon"]
}], navItemActive: [{
type: HostBinding,
args: ["class.cds--side-nav__item--active"]
}], role: [{
type: HostBinding,
args: ["attr.role"]
}], useRouter: [{
type: Input
}], title: [{
type: Input
}], expanded: [{
type: Input
}], hasActiveChild: [{
type: Input
}], menuItems: [{
type: Input
}], sidenavItems: [{
type: ContentChildren,
args: [SideNavItem]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91aS1zaGVsbC9zaWRlbmF2L3NpZGVuYXYtbWVudS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVOLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxFQUdMLFdBQVcsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUdwQzs7R0FFRztBQTJDSCxNQUFNLE9BQU8sV0FBVztJQTFDeEI7UUEyQzJDLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDVCxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUl6QyxTQUFJLEdBQUcsVUFBVSxDQUFDO1FBRTVDOztXQUVHO1FBQ00sY0FBUyxHQUFHLEtBQUssQ0FBQztRQU0zQjs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDMUI7OztXQUdHO1FBQ00sbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFNdEIsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQXFDdkQ7SUFqRUEsSUFBc0QsYUFBYTtRQUNsRSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDNUIsQ0FBQztJQTRCRCxrQkFBa0I7UUFDakIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUMzRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDM0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDMUIsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7d0JBQzNELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUMzQixDQUFDLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7Z0JBQzFELENBQUMsQ0FBQyxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1YsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNO1FBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVTLGtCQUFrQjtRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25FLENBQUM7O3dHQW5FVyxXQUFXOzRGQUFYLFdBQVcsOGJBNkJOLFdBQVcsNkJBckVsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFzQ1Q7MkZBRVcsV0FBVztrQkExQ3ZCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLG9DQUFvQztvQkFDOUMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXNDVDtpQkFDRDs4QkFFMEMsT0FBTztzQkFBaEQsV0FBVzt1QkFBQywyQkFBMkI7Z0JBQ1EsV0FBVztzQkFBMUQsV0FBVzt1QkFBQyxpQ0FBaUM7Z0JBQ1EsYUFBYTtzQkFBbEUsV0FBVzt1QkFBQyxtQ0FBbUM7Z0JBR3RCLElBQUk7c0JBQTdCLFdBQVc7dUJBQUMsV0FBVztnQkFLZixTQUFTO3NCQUFqQixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFd0IsWUFBWTtzQkFBekMsZUFBZTt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0QWZ0ZXJDb250ZW50SW5pdCxcblx0Q29tcG9uZW50LFxuXHRDb250ZW50Q2hpbGRyZW4sXG5cdElucHV0LFxuXHRRdWVyeUxpc3QsXG5cdE9uRGVzdHJveSxcblx0SG9zdEJpbmRpbmdcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFNpZGVOYXZJdGVtIH0gZnJvbSBcIi4vc2lkZW5hdi1pdGVtLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFNpZGVOYXZJdGVtSW50ZXJmYWNlIH0gZnJvbSBcIi4vc2lkZW5hdi1pdGVtLmludGVyZmFjZVwiO1xuXG4vKipcbiAqIGBTaWRlTmF2TWVudWAgcHJvdmlkZXMgYSBtZXRob2QgdG8gZ3JvdXAgYFNpZGVOYXZJdGVtYHMgdW5kZXIgYSBjb21tb24gaGVhZGluZy5cbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImNkcy1zaWRlbmF2LW1lbnUsIGlibS1zaWRlbmF2LW1lbnVcIixcblx0dGVtcGxhdGU6IGBcblx0XHQ8YnV0dG9uXG5cdFx0XHQoY2xpY2spPVwidG9nZ2xlKClcIlxuXHRcdFx0Y2xhc3M9XCJjZHMtLXNpZGUtbmF2X19zdWJtZW51XCJcblx0XHRcdGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcblx0XHRcdFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuXHRcdFx0dHlwZT1cImJ1dHRvblwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tc2lkZS1uYXZfX2ljb25cIj5cblx0XHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwic3ZnLCBbaWNvbl1cIj48L25nLWNvbnRlbnQ+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxzcGFuIGNsYXNzPVwiY2RzLS1zaWRlLW5hdl9fc3VibWVudS10aXRsZVwiPnt7dGl0bGV9fTwvc3Bhbj5cblx0XHRcdDxkaXYgY2xhc3M9XCJjZHMtLXNpZGUtbmF2X19pY29uIGNkcy0tc2lkZS1uYXZfX2ljb24tLXNtYWxsIGNkcy0tc2lkZS1uYXZfX3N1Ym1lbnUtY2hldnJvblwiPlxuXHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0Zm9jdXNhYmxlPVwiZmFsc2VcIlxuXHRcdFx0XHRcdHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcblx0XHRcdFx0XHRzdHlsZT1cIndpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XCJcblx0XHRcdFx0XHR4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcblx0XHRcdFx0XHR3aWR0aD1cIjIwXCJcblx0XHRcdFx0XHRoZWlnaHQ9XCIyMFwiXG5cdFx0XHRcdFx0dmlld0JveD1cIjAgMCAzMiAzMlwiXG5cdFx0XHRcdFx0YXJpYS1oaWRkZW49XCJ0cnVlXCI+XG5cdFx0XHRcdFx0PHBhdGggZD1cIk0xNiAyMkw2IDEybDEuNC0xLjQgOC42IDguNiA4LjYtOC42TDI2IDEyelwiPjwvcGF0aD5cblx0XHRcdFx0PC9zdmc+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2J1dHRvbj5cblx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS1zaWRlLW5hdl9fbWVudVwiIHJvbGU9XCJsaXN0XCI+XG5cdFx0XHQ8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZW51SXRlbSBvZiBtZW51SXRlbXNcIj5cblx0XHRcdFx0PGNkcy1zaWRlbmF2LWl0ZW1cblx0XHRcdFx0XHRbaHJlZl09XCJtZW51SXRlbS5ocmVmXCJcblx0XHRcdFx0XHRbcm91dGVdPVwibWVudUl0ZW0ucm91dGVcIlxuXHRcdFx0XHRcdFtyb3V0ZUV4dHJhc109XCJtZW51SXRlbS5yb3V0ZUV4dHJhc1wiXG5cdFx0XHRcdFx0W3VzZVJvdXRlcl09XCJ1c2VSb3V0ZXJcIlxuXHRcdFx0XHRcdFtpc1N1Yk1lbnVdPVwidHJ1ZVwiPlxuXHRcdFx0XHRcdHt7IG1lbnVJdGVtLmNvbnRlbnQgfX1cblx0XHRcdFx0PC9jZHMtc2lkZW5hdi1pdGVtPlxuXHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0PC9kaXY+XG5cdGBcbn0pXG5leHBvcnQgY2xhc3MgU2lkZU5hdk1lbnUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLXNpZGUtbmF2X19pdGVtXCIpIG5hdkl0ZW0gPSB0cnVlO1xuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLXNpZGUtbmF2X19pdGVtLS1pY29uXCIpIG5hdkl0ZW1JY29uID0gdHJ1ZTtcblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1zaWRlLW5hdl9faXRlbS0tYWN0aXZlXCIpIGdldCBuYXZJdGVtQWN0aXZlKCkge1xuXHRcdHJldHVybiB0aGlzLmhhc0FjdGl2ZUNoaWxkO1xuXHR9XG5cdEBIb3N0QmluZGluZyhcImF0dHIucm9sZVwiKSByb2xlID0gXCJsaXN0aXRlbVwiO1xuXG5cdC8qKlxuXHQgKiBVc2UgdGhlIHJvdXRlckxpbmsgYXR0cmlidXRlIG9uIDxhPiB0YWcgZm9yIG5hdmlnYXRpb24gaW5zdGVhZCBvZiB1c2luZyBldmVudCBoYW5kbGVyc1xuXHQgKi9cblx0QElucHV0KCkgdXNlUm91dGVyID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEhlYWRpbmcgZm9yIHRoZSBncm91cFxuXHQgKi9cblx0QElucHV0KCkgdGl0bGU6IHN0cmluZztcblx0LyoqXG5cdCAqIENvbnRyb2xzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBjaGlsZCBgU2lkZU5hdkl0ZW1gc1xuXHQgKi9cblx0QElucHV0KCkgZXhwYW5kZWQgPSBmYWxzZTtcblx0LyoqXG5cdCAqIENvbnRyb2xzIHRoZSBhY3RpdmUgc3RhdHVzIGluZGljYXRvciBvbiB0aGUgbWVudSBpZiB0aGVyZSBpcyBhbiBhY3RpdmVcblx0ICogY2hpbGQgc2lkZW5hdiBpdGVtLlxuXHQgKi9cblx0QElucHV0KCkgaGFzQWN0aXZlQ2hpbGQgPSBmYWxzZTtcblxuXHRASW5wdXQoKSBtZW51SXRlbXM6IFNpZGVOYXZJdGVtSW50ZXJmYWNlW107XG5cblx0QENvbnRlbnRDaGlsZHJlbihTaWRlTmF2SXRlbSkgc2lkZW5hdkl0ZW1zOiBRdWVyeUxpc3Q8U2lkZU5hdkl0ZW0+O1xuXG5cdHByb3RlY3RlZCBhY3RpdmVJdGVtc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuXHRuZ0FmdGVyQ29udGVudEluaXQoKSB7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLnNpZGVuYXZJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuXHRcdFx0XHRpdGVtLmlzU3ViTWVudSA9IHRydWU7XG5cdFx0XHRcdHRoaXMuZmluZEFjdGl2ZUNoaWxkcmVuKCk7XG5cdFx0XHRcdGNvbnN0IGFjdGl2ZUl0ZW1TdWJzY3JpcHRpb24gPSBpdGVtLnNlbGVjdGVkLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5maW5kQWN0aXZlQ2hpbGRyZW4oKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHRoaXMuYWN0aXZlSXRlbXNTdWJzY3JpcHRpb24uYWRkKGFjdGl2ZUl0ZW1TdWJzY3JpcHRpb24pO1xuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMuc2lkZW5hdkl0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdFx0dGhpcy5zaWRlbmF2SXRlbXMuZm9yRWFjaChpdGVtID0+IHtcblx0XHRcdFx0XHRpdGVtLmlzU3ViTWVudSA9IHRydWU7XG5cdFx0XHRcdFx0dGhpcy5maW5kQWN0aXZlQ2hpbGRyZW4oKTtcblx0XHRcdFx0XHRjb25zdCBhY3RpdmVJdGVtU3Vic2NyaXB0aW9uID0gaXRlbS5zZWxlY3RlZC5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5maW5kQWN0aXZlQ2hpbGRyZW4oKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR0aGlzLmFjdGl2ZUl0ZW1zU3Vic2NyaXB0aW9uLmFkZChhY3RpdmVJdGVtU3Vic2NyaXB0aW9uKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuYWN0aXZlSXRlbXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0fVxuXG5cdHRvZ2dsZSgpIHtcblx0XHR0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XG5cdH1cblxuXHRwcm90ZWN0ZWQgZmluZEFjdGl2ZUNoaWxkcmVuKCkge1xuXHRcdHRoaXMuaGFzQWN0aXZlQ2hpbGQgPSB0aGlzLnNpZGVuYXZJdGVtcy5zb21lKGl0ZW0gPT4gaXRlbS5hY3RpdmUpO1xuXHR9XG59XG4iXX0=