UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

300 lines 24.4 kB
/** * @fileoverview added by tsickle * Generated from: menu-item.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { __decorate, __metadata } from "tslib"; /** * @license * Copyright Alibaba.com All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ import { ChangeDetectorRef, ContentChildren, Directive, Inject, Input, Optional, QueryList } from '@angular/core'; import { NavigationEnd, Router, RouterLink, RouterLinkWithHref } from '@angular/router'; import { InputBoolean } from 'ng-zorro-antd/core/util'; import { combineLatest, Subject } from 'rxjs'; import { filter, takeUntil } from 'rxjs/operators'; import { MenuService } from './menu.service'; import { NzIsMenuInsideDropDownToken } from './menu.token'; import { NzSubmenuService } from './submenu.service'; export class NzMenuItemDirective { /** * @param {?} nzMenuService * @param {?} cdr * @param {?} nzSubmenuService * @param {?} isMenuInsideDropDown * @param {?=} routerLink * @param {?=} routerLinkWithHref * @param {?=} router */ constructor(nzMenuService, cdr, nzSubmenuService, isMenuInsideDropDown, routerLink, routerLinkWithHref, router) { this.nzMenuService = nzMenuService; this.cdr = cdr; this.nzSubmenuService = nzSubmenuService; this.isMenuInsideDropDown = isMenuInsideDropDown; this.routerLink = routerLink; this.routerLinkWithHref = routerLinkWithHref; this.router = router; this.destroy$ = new Subject(); this.level = this.nzSubmenuService ? this.nzSubmenuService.level + 1 : 1; this.selected$ = new Subject(); this.inlinePaddingLeft = null; this.nzDisabled = false; this.nzSelected = false; this.nzMatchRouterExact = false; this.nzMatchRouter = false; if (router) { (/** @type {?} */ (this.router)).events.pipe(takeUntil(this.destroy$), filter((/** * @param {?} e * @return {?} */ e => e instanceof NavigationEnd))).subscribe((/** * @return {?} */ () => { this.updateRouterActive(); })); } } /** * clear all item selected status except this * @param {?} e * @return {?} */ clickMenuItem(e) { if (this.nzDisabled) { e.preventDefault(); e.stopPropagation(); } else { this.nzMenuService.onDescendantMenuItemClick(this); if (this.nzSubmenuService) { /** menu item inside the submenu **/ this.nzSubmenuService.onChildMenuItemClick(this); } else { /** menu item inside the root menu **/ this.nzMenuService.onChildMenuItemClick(this); } } } /** * @param {?} value * @return {?} */ setSelectedState(value) { this.nzSelected = value; this.selected$.next(value); } /** * @private * @return {?} */ updateRouterActive() { if (!this.listOfRouterLink || !this.listOfRouterLinkWithHref || !this.router || !this.router.navigated || !this.nzMatchRouter) { return; } Promise.resolve().then((/** * @return {?} */ () => { /** @type {?} */ const hasActiveLinks = this.hasActiveLinks(); if (this.nzSelected !== hasActiveLinks) { this.nzSelected = hasActiveLinks; this.setSelectedState(this.nzSelected); this.cdr.markForCheck(); } })); } /** * @private * @return {?} */ hasActiveLinks() { /** @type {?} */ const isActiveCheckFn = this.isLinkActive((/** @type {?} */ (this.router))); return ((this.routerLink && isActiveCheckFn(this.routerLink)) || (this.routerLinkWithHref && isActiveCheckFn(this.routerLinkWithHref)) || this.listOfRouterLink.some(isActiveCheckFn) || this.listOfRouterLinkWithHref.some(isActiveCheckFn)); } /** * @private * @param {?} router * @return {?} */ isLinkActive(router) { return (/** * @param {?} link * @return {?} */ (link) => router.isActive(link.urlTree, this.nzMatchRouterExact)); } /** * @return {?} */ ngOnInit() { /** store origin padding in padding */ combineLatest([this.nzMenuService.mode$, this.nzMenuService.inlineIndent$]) .pipe(takeUntil(this.destroy$)) .subscribe((/** * @param {?} __0 * @return {?} */ ([mode, inlineIndent]) => { this.inlinePaddingLeft = mode === 'inline' ? this.level * inlineIndent : null; })); } /** * @return {?} */ ngAfterContentInit() { this.listOfRouterLink.changes.pipe(takeUntil(this.destroy$)).subscribe((/** * @return {?} */ () => this.updateRouterActive())); this.listOfRouterLinkWithHref.changes.pipe(takeUntil(this.destroy$)).subscribe((/** * @return {?} */ () => this.updateRouterActive())); this.updateRouterActive(); } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { if (changes.nzSelected) { this.setSelectedState(this.nzSelected); } } /** * @return {?} */ ngOnDestroy() { this.destroy$.next(); this.destroy$.complete(); } } NzMenuItemDirective.decorators = [ { type: Directive, args: [{ selector: '[nz-menu-item]', exportAs: 'nzMenuItem', host: { '[class.ant-dropdown-menu-item]': `isMenuInsideDropDown`, '[class.ant-dropdown-menu-item-selected]': `isMenuInsideDropDown && nzSelected`, '[class.ant-dropdown-menu-item-disabled]': `isMenuInsideDropDown && nzDisabled`, '[class.ant-menu-item]': `!isMenuInsideDropDown`, '[class.ant-menu-item-selected]': `!isMenuInsideDropDown && nzSelected`, '[class.ant-menu-item-disabled]': `!isMenuInsideDropDown && nzDisabled`, '[style.paddingLeft.px]': 'nzPaddingLeft || inlinePaddingLeft', '(click)': 'clickMenuItem($event)' } },] } ]; /** @nocollapse */ NzMenuItemDirective.ctorParameters = () => [ { type: MenuService }, { type: ChangeDetectorRef }, { type: NzSubmenuService, decorators: [{ type: Optional }] }, { type: Boolean, decorators: [{ type: Inject, args: [NzIsMenuInsideDropDownToken,] }] }, { type: RouterLink, decorators: [{ type: Optional }] }, { type: RouterLinkWithHref, decorators: [{ type: Optional }] }, { type: Router, decorators: [{ type: Optional }] } ]; NzMenuItemDirective.propDecorators = { nzPaddingLeft: [{ type: Input }], nzDisabled: [{ type: Input }], nzSelected: [{ type: Input }], nzMatchRouterExact: [{ type: Input }], nzMatchRouter: [{ type: Input }], listOfRouterLink: [{ type: ContentChildren, args: [RouterLink, { descendants: true },] }], listOfRouterLinkWithHref: [{ type: ContentChildren, args: [RouterLinkWithHref, { descendants: true },] }] }; __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzMenuItemDirective.prototype, "nzDisabled", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzMenuItemDirective.prototype, "nzSelected", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzMenuItemDirective.prototype, "nzMatchRouterExact", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzMenuItemDirective.prototype, "nzMatchRouter", void 0); if (false) { /** @type {?} */ NzMenuItemDirective.ngAcceptInputType_nzDisabled; /** @type {?} */ NzMenuItemDirective.ngAcceptInputType_nzSelected; /** @type {?} */ NzMenuItemDirective.ngAcceptInputType_nzMatchRouterExact; /** @type {?} */ NzMenuItemDirective.ngAcceptInputType_nzMatchRouter; /** * @type {?} * @private */ NzMenuItemDirective.prototype.destroy$; /** @type {?} */ NzMenuItemDirective.prototype.level; /** @type {?} */ NzMenuItemDirective.prototype.selected$; /** @type {?} */ NzMenuItemDirective.prototype.inlinePaddingLeft; /** @type {?} */ NzMenuItemDirective.prototype.nzPaddingLeft; /** @type {?} */ NzMenuItemDirective.prototype.nzDisabled; /** @type {?} */ NzMenuItemDirective.prototype.nzSelected; /** @type {?} */ NzMenuItemDirective.prototype.nzMatchRouterExact; /** @type {?} */ NzMenuItemDirective.prototype.nzMatchRouter; /** @type {?} */ NzMenuItemDirective.prototype.listOfRouterLink; /** @type {?} */ NzMenuItemDirective.prototype.listOfRouterLinkWithHref; /** * @type {?} * @private */ NzMenuItemDirective.prototype.nzMenuService; /** * @type {?} * @private */ NzMenuItemDirective.prototype.cdr; /** * @type {?} * @private */ NzMenuItemDirective.prototype.nzSubmenuService; /** @type {?} */ NzMenuItemDirective.prototype.isMenuInsideDropDown; /** * @type {?} * @private */ NzMenuItemDirective.prototype.routerLink; /** * @type {?} * @private */ NzMenuItemDirective.prototype.routerLinkWithHref; /** * @type {?} * @private */ NzMenuItemDirective.prototype.router; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQvbWVudS8iLCJzb3VyY2VzIjpbIm1lbnUtaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUlMLFFBQVEsRUFDUixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWdCckQsTUFBTSxPQUFPLG1CQUFtQjs7Ozs7Ozs7OztJQW9FOUIsWUFDVSxhQUEwQixFQUMxQixHQUFzQixFQUNWLGdCQUFrQyxFQUNWLG9CQUE2QixFQUNyRCxVQUF1QixFQUN2QixrQkFBdUMsRUFDdkMsTUFBZTtRQU4zQixrQkFBYSxHQUFiLGFBQWEsQ0FBYTtRQUMxQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUNWLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDVix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQVM7UUFDckQsZUFBVSxHQUFWLFVBQVUsQ0FBYTtRQUN2Qix1QkFBa0IsR0FBbEIsa0JB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QUFFO3VDQUNqRCxlQUFlLFNBQUMsa0JBQWtCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFOztBQUxqQztJQUFmLFlBQVksRUFBRTs7dURBQW9CO0FBQ25CO0lBQWYsWUFBWSxFQUFFOzt1REFBb0I7QUFDbkI7SUFBZixZQUFZLEVBQUU7OytEQUE0QjtBQUMzQjtJQUFmLFlBQVksRUFBRTs7MERBQXVCOzs7SUFiL0MsaURBQWtEOztJQUNsRCxpREFBa0Q7O0lBQ2xELHlEQUEwRDs7SUFDMUQsb0RBQXFEOzs7OztJQUVyRCx1Q0FBaUM7O0lBQ2pDLG9DQUFvRTs7SUFDcEUsd0NBQW1DOztJQUNuQyxnREFBd0M7O0lBQ3hDLDRDQUFnQzs7SUFDaEMseUNBQTRDOztJQUM1Qyx5Q0FBNEM7O0lBQzVDLGlEQUFvRDs7SUFDcEQsNENBQStDOztJQUMvQywrQ0FBNkY7O0lBQzdGLHVEQUFxSDs7Ozs7SUFxRG5ILDRDQUFrQzs7Ozs7SUFDbEMsa0NBQThCOzs7OztJQUM5QiwrQ0FBc0Q7O0lBQ3RELG1EQUF5RTs7Ozs7SUFDekUseUNBQTJDOzs7OztJQUMzQyxpREFBMkQ7Ozs7O0lBQzNELHFDQUFtQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlckxpbmssIFJvdXRlckxpbmtXaXRoSHJlZiB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3V0aWwnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4vbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IE56SXNNZW51SW5zaWRlRHJvcERvd25Ub2tlbiB9IGZyb20gJy4vbWVudS50b2tlbic7XG5pbXBvcnQgeyBOelN1Ym1lbnVTZXJ2aWNlIH0gZnJvbSAnLi9zdWJtZW51LnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbnotbWVudS1pdGVtXScsXG4gIGV4cG9ydEFzOiAnbnpNZW51SXRlbScsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmFudC1kcm9wZG93bi1tZW51LWl0ZW1dJzogYGlzTWVudUluc2lkZURyb3BEb3duYCxcbiAgICAnW2NsYXNzLmFudC1kcm9wZG93bi1tZW51LWl0ZW0tc2VsZWN0ZWRdJzogYGlzTWVudUluc2lkZURyb3BEb3duICYmIG56U2VsZWN0ZWRgLFxuICAgICdbY2xhc3MuYW50LWRyb3Bkb3duLW1lbnUtaXRlbS1kaXNhYmxlZF0nOiBgaXNNZW51SW5zaWRlRHJvcERvd24gJiYgbnpEaXNhYmxlZGAsXG4gICAgJ1tjbGFzcy5hbnQtbWVudS1pdGVtXSc6IGAhaXNNZW51SW5zaWRlRHJvcERvd25gLFxuICAgICdbY2xhc3MuYW50LW1lbnUtaXRlbS1zZWxlY3RlZF0nOiBgIWlzTWVudUluc2lkZURyb3BEb3duICYmIG56U2VsZWN0ZWRgLFxuICAgICdbY2xhc3MuYW50LW1lbnUtaXRlbS1kaXNhYmxlZF0nOiBgIWlzTWVudUluc2lkZURyb3BEb3duICYmIG56RGlzYWJsZWRgLFxuICAgICdbc3R5bGUucGFkZGluZ0xlZnQucHhdJzogJ256UGFkZGluZ0xlZnQgfHwgaW5saW5lUGFkZGluZ0xlZnQnLFxuICAgICcoY2xpY2spJzogJ2NsaWNrTWVudUl0ZW0oJGV2ZW50KSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBOek1lbnVJdGVtRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uekRpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelNlbGVjdGVkOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uek1hdGNoUm91dGVyRXhhY3Q6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256TWF0Y2hSb3V0ZXI6IEJvb2xlYW5JbnB1dDtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgbGV2ZWwgPSB0aGlzLm56U3VibWVudVNlcnZpY2UgPyB0aGlzLm56U3VibWVudVNlcnZpY2UubGV2ZWwgKyAxIDogMTtcbiAgc2VsZWN0ZWQkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgaW5saW5lUGFkZGluZ0xlZnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBuelBhZGRpbmdMZWZ0PzogbnVtYmVyO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpEaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpTZWxlY3RlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpNYXRjaFJvdXRlckV4YWN0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuek1hdGNoUm91dGVyID0gZmFsc2U7XG4gIEBDb250ZW50Q2hpbGRyZW4oUm91dGVyTGluaywgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBsaXN0T2ZSb3V0ZXJMaW5rITogUXVlcnlMaXN0PFJvdXRlckxpbms+O1xuICBAQ29udGVudENoaWxkcmVuKFJvdXRlckxpbmtXaXRoSHJlZiwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBsaXN0T2ZSb3V0ZXJMaW5rV2l0aEhyZWYhOiBRdWVyeUxpc3Q8Um91dGVyTGlua1dpdGhIcmVmPjtcblxuICAvKiogY2xlYXIgYWxsIGl0ZW0gc2VsZWN0ZWQgc3RhdHVzIGV4Y2VwdCB0aGlzICovXG4gIGNsaWNrTWVudUl0ZW0oZTogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm56RGlzYWJsZWQpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubnpNZW51U2VydmljZS5vbkRlc2NlbmRhbnRNZW51SXRlbUNsaWNrKHRoaXMpO1xuICAgICAgaWYgKHRoaXMubnpTdWJtZW51U2VydmljZSkge1xuICAgICAgICAvKiogbWVudSBpdGVtIGluc2lkZSB0aGUgc3VibWVudSAqKi9cbiAgICAgICAgdGhpcy5uelN1Ym1lbnVTZXJ2aWNlLm9uQ2hpbGRNZW51SXRlbUNsaWNrKHRoaXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyoqIG1lbnUgaXRlbSBpbnNpZGUgdGhlIHJvb3QgbWVudSAqKi9cbiAgICAgICAgdGhpcy5uek1lbnVTZXJ2aWNlLm9uQ2hpbGRNZW51SXRlbUNsaWNrKHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFNlbGVjdGVkU3RhdGUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLm56U2VsZWN0ZWQgPSB2YWx1ZTtcbiAgICB0aGlzLnNlbGVjdGVkJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUm91dGVyQWN0aXZlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5saXN0T2ZSb3V0ZXJMaW5rIHx8ICF0aGlzLmxpc3RPZlJvdXRlckxpbmtXaXRoSHJlZiB8fCAhdGhpcy5yb3V0ZXIgfHwgIXRoaXMucm91dGVyLm5hdmlnYXRlZCB8fCAhdGhpcy5uek1hdGNoUm91dGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgY29uc3QgaGFzQWN0aXZlTGlua3MgPSB0aGlzLmhhc0FjdGl2ZUxpbmtzKCk7XG4gICAgICBpZiAodGhpcy5uelNlbGVjdGVkICE9PSBoYXNBY3RpdmVMaW5rcykge1xuICAgICAgICB0aGlzLm56U2VsZWN0ZWQgPSBoYXNBY3RpdmVMaW5rcztcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFN0YXRlKHRoaXMubnpTZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNBY3RpdmVMaW5rcygpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc0FjdGl2ZUNoZWNrRm4gPSB0aGlzLmlzTGlua0FjdGl2ZSh0aGlzLnJvdXRlciEpO1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5yb3V0ZXJMaW5rICYmIGlzQWN0aXZlQ2hlY2tGbih0aGlzLnJvdXRlckxpbmspKSB8fFxuICAgICAgKHRoaXMucm91dGVyTGlua1dpdGhIcmVmICYmIGlzQWN0aXZlQ2hlY2tGbih0aGlzLnJvdXRlckxpbmtXaXRoSHJlZikpIHx8XG4gICAgICB0aGlzLmxpc3RPZlJvdXRlckxpbmsuc29tZShpc0FjdGl2ZUNoZWNrRm4pIHx8XG4gICAgICB0aGlzLmxpc3RPZlJvdXRlckxpbmtXaXRoSHJlZi5zb21lKGlzQWN0aXZlQ2hlY2tGbilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xpbmtBY3RpdmUocm91dGVyOiBSb3V0ZXIpOiAobGluazogUm91dGVyTGluayB8IFJvdXRlckxpbmtXaXRoSHJlZikgPT4gYm9vbGVhbiB7XG4gICAgcmV0dXJuIChsaW5rOiBSb3V0ZXJMaW5rIHwgUm91dGVyTGlua1dpdGhIcmVmKSA9PiByb3V0ZXIuaXNBY3RpdmUobGluay51cmxUcmVlLCB0aGlzLm56TWF0Y2hSb3V0ZXJFeGFjdCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG56TWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIG56U3VibWVudVNlcnZpY2U6IE56U3VibWVudVNlcnZpY2UsXG4gICAgQEluamVjdChOeklzTWVudUluc2lkZURyb3BEb3duVG9rZW4pIHB1YmxpYyBpc01lbnVJbnNpZGVEcm9wRG93bjogYm9vbGVhbixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJvdXRlckxpbms/OiBSb3V0ZXJMaW5rLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcm91dGVyTGlua1dpdGhIcmVmPzogUm91dGVyTGlua1dpdGhIcmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcm91dGVyPzogUm91dGVyXG4gICkge1xuICAgIGlmIChyb3V0ZXIpIHtcbiAgICAgIHRoaXMucm91dGVyIS5ldmVudHMucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcbiAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVSb3V0ZXJBY3RpdmUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8qKiBzdG9yZSBvcmlnaW4gcGFkZGluZyBpbiBwYWRkaW5nICovXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5uek1lbnVTZXJ2aWNlLm1vZGUkLCB0aGlzLm56TWVudVNlcnZpY2UuaW5saW5lSW5kZW50JF0pXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChbbW9kZSwgaW5saW5lSW5kZW50XSkgPT4ge1xuICAgICAgICB0aGlzLmlubGluZVBhZGRpbmdMZWZ0ID0gbW9kZSA9PT0gJ2lubGluZScgPyB0aGlzLmxldmVsICogaW5saW5lSW5kZW50IDogbnVsbDtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMubGlzdE9mUm91dGVyTGluay5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVSb3V0ZXJBY3RpdmUoKSk7XG4gICAgdGhpcy5saXN0T2ZSb3V0ZXJMaW5rV2l0aEhyZWYuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlUm91dGVyQWN0aXZlKCkpO1xuICAgIHRoaXMudXBkYXRlUm91dGVyQWN0aXZlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMubnpTZWxlY3RlZCkge1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZFN0YXRlKHRoaXMubnpTZWxlY3RlZCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=