UNPKG

ng-zorro-antd

Version:

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

335 lines 26 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, __read } 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'; var NzMenuItemDirective = /** @class */ (function () { function NzMenuItemDirective(nzMenuService, cdr, nzSubmenuService, isMenuInsideDropDown, routerLink, routerLinkWithHref, router) { var _this = this; 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 {?} */ function (e) { return e instanceof NavigationEnd; }))).subscribe((/** * @return {?} */ function () { _this.updateRouterActive(); })); } } /** clear all item selected status except this */ /** * clear all item selected status except this * @param {?} e * @return {?} */ NzMenuItemDirective.prototype.clickMenuItem = /** * clear all item selected status except this * @param {?} e * @return {?} */ function (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 {?} */ NzMenuItemDirective.prototype.setSelectedState = /** * @param {?} value * @return {?} */ function (value) { this.nzSelected = value; this.selected$.next(value); }; /** * @private * @return {?} */ NzMenuItemDirective.prototype.updateRouterActive = /** * @private * @return {?} */ function () { var _this = this; if (!this.listOfRouterLink || !this.listOfRouterLinkWithHref || !this.router || !this.router.navigated || !this.nzMatchRouter) { return; } Promise.resolve().then((/** * @return {?} */ function () { /** @type {?} */ var hasActiveLinks = _this.hasActiveLinks(); if (_this.nzSelected !== hasActiveLinks) { _this.nzSelected = hasActiveLinks; _this.setSelectedState(_this.nzSelected); _this.cdr.markForCheck(); } })); }; /** * @private * @return {?} */ NzMenuItemDirective.prototype.hasActiveLinks = /** * @private * @return {?} */ function () { /** @type {?} */ var 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 {?} */ NzMenuItemDirective.prototype.isLinkActive = /** * @private * @param {?} router * @return {?} */ function (router) { var _this = this; return (/** * @param {?} link * @return {?} */ function (link) { return router.isActive(link.urlTree, _this.nzMatchRouterExact); }); }; /** * @return {?} */ NzMenuItemDirective.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; /** store origin padding in padding */ combineLatest([this.nzMenuService.mode$, this.nzMenuService.inlineIndent$]) .pipe(takeUntil(this.destroy$)) .subscribe((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = __read(_a, 2), mode = _b[0], inlineIndent = _b[1]; _this.inlinePaddingLeft = mode === 'inline' ? _this.level * inlineIndent : null; })); }; /** * @return {?} */ NzMenuItemDirective.prototype.ngAfterContentInit = /** * @return {?} */ function () { var _this = this; this.listOfRouterLink.changes.pipe(takeUntil(this.destroy$)).subscribe((/** * @return {?} */ function () { return _this.updateRouterActive(); })); this.listOfRouterLinkWithHref.changes.pipe(takeUntil(this.destroy$)).subscribe((/** * @return {?} */ function () { return _this.updateRouterActive(); })); this.updateRouterActive(); }; /** * @param {?} changes * @return {?} */ NzMenuItemDirective.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { if (changes.nzSelected) { this.setSelectedState(this.nzSelected); } }; /** * @return {?} */ NzMenuItemDirective.prototype.ngOnDestroy = /** * @return {?} */ function () { 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 = function () { return [ { 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); return NzMenuItemDirective; }()); export { NzMenuItemDirective }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQvbWVudS8iLCJzb3VyY2VzIjpbIm1lbnUtaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUlMLFFBQVEsRUFDUixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRDtJQWtGRSw2QkFDVSxhQUEwQixFQUMxQixHQUFzQixFQUNWLGdCQUFrQyxFQUNWLG9CQUE2QixFQUNyRCxVQUF1QixFQUN2QixrQkFBdUMsRUFDdkMsTUFBZTtRQVByQyxpQkFpQkM7UUFoQlMsa0JBQWEsR0FBYixhQUFhLENBQWE7UUFDMUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDVixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ1YseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFTO1FBQ3JELGVBQVUsR0FBVixVQUFVLENBQWE7UUFDdkIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFxQjtRQUN2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LGtCQUFrQix1QkFpR3pELFFBQVE7Z0JBakdXLE1BQU0sdUJBa0d6QixRQUFROzs7Z0NBakVWLEtBQUs7NkJBQ0wsS0FBSzs2QkFDTCxLQUFLO3FDQUNMLEtBQUs7Z0NBQ0wsS0FBSzttQ0FDTCxlQUFlLFNBQUMsVUFBVSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTsyQ0FDakQsZUFBZSxTQUFDLGtCQUFrQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTs7SUFMakM7UUFBZixZQUFZLEVBQUU7OzJEQUFvQjtJQUNuQjtRQUFmLFlBQVksRUFBRTs7MkRBQW9CO0lBQ25CO1FBQWYsWUFBWSxFQUFFOzttRUFBNEI7SUFDM0I7UUFBZixZQUFZLEVBQUU7OzhEQUF1QjtJQWtHakQsMEJBQUM7Q0FBQSxBQTlIRCxJQThIQztTQWhIWSxtQkFBbUI7OztJQUM5QixpREFBa0Q7O0lBQ2xELGlEQUFrRDs7SUFDbEQseURBQTBEOztJQUMxRCxvREFBcUQ7Ozs7O0lBRXJELHVDQUFpQzs7SUFDakMsb0NBQW9FOztJQUNwRSx3Q0FBbUM7O0lBQ25DLGdEQUF3Qzs7SUFDeEMsNENBQStCOztJQUMvQix5Q0FBNEM7O0lBQzVDLHlDQUE0Qzs7SUFDNUMsaURBQW9EOztJQUNwRCw0Q0FBK0M7O0lBQy9DLCtDQUE0Rjs7SUFDNUYsdURBQW9IOzs7OztJQXFEbEgsNENBQWtDOzs7OztJQUNsQyxrQ0FBOEI7Ozs7O0lBQzlCLCtDQUFzRDs7SUFDdEQsbURBQXlFOzs7OztJQUN6RSx5Q0FBMkM7Ozs7O0lBQzNDLGlEQUEyRDs7Ozs7SUFDM0QscUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciwgUm91dGVyTGluaywgUm91dGVyTGlua1dpdGhIcmVmIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdXRpbCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgTnpJc01lbnVJbnNpZGVEcm9wRG93blRva2VuIH0gZnJvbSAnLi9tZW51LnRva2VuJztcbmltcG9ydCB7IE56U3VibWVudVNlcnZpY2UgfSBmcm9tICcuL3N1Ym1lbnUuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuei1tZW51LWl0ZW1dJyxcbiAgZXhwb3J0QXM6ICduek1lbnVJdGVtJyxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuYW50LWRyb3Bkb3duLW1lbnUtaXRlbV0nOiBgaXNNZW51SW5zaWRlRHJvcERvd25gLFxuICAgICdbY2xhc3MuYW50LWRyb3Bkb3duLW1lbnUtaXRlbS1zZWxlY3RlZF0nOiBgaXNNZW51SW5zaWRlRHJvcERvd24gJiYgbnpTZWxlY3RlZGAsXG4gICAgJ1tjbGFzcy5hbnQtZHJvcGRvd24tbWVudS1pdGVtLWRpc2FibGVkXSc6IGBpc01lbnVJbnNpZGVEcm9wRG93biAmJiBuekRpc2FibGVkYCxcbiAgICAnW2NsYXNzLmFudC1tZW51LWl0ZW1dJzogYCFpc01lbnVJbnNpZGVEcm9wRG93bmAsXG4gICAgJ1tjbGFzcy5hbnQtbWVudS1pdGVtLXNlbGVjdGVkXSc6IGAhaXNNZW51SW5zaWRlRHJvcERvd24gJiYgbnpTZWxlY3RlZGAsXG4gICAgJ1tjbGFzcy5hbnQtbWVudS1pdGVtLWRpc2FibGVkXSc6IGAhaXNNZW51SW5zaWRlRHJvcERvd24gJiYgbnpEaXNhYmxlZGAsXG4gICAgJ1tzdHlsZS5wYWRkaW5nTGVmdC5weF0nOiAnbnpQYWRkaW5nTGVmdCB8fCBpbmxpbmVQYWRkaW5nTGVmdCcsXG4gICAgJyhjbGljayknOiAnY2xpY2tNZW51SXRlbSgkZXZlbnQpJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE56TWVudUl0ZW1EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256RGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256U2VsZWN0ZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256TWF0Y2hSb3V0ZXJFeGFjdDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpNYXRjaFJvdXRlcjogQm9vbGVhbklucHV0O1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBsZXZlbCA9IHRoaXMubnpTdWJtZW51U2VydmljZSA/IHRoaXMubnpTdWJtZW51U2VydmljZS5sZXZlbCArIDEgOiAxO1xuICBzZWxlY3RlZCQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBpbmxpbmVQYWRkaW5nTGVmdDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIG56UGFkZGluZ0xlZnQ6IG51bWJlcjtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56RGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56U2VsZWN0ZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56TWF0Y2hSb3V0ZXJFeGFjdCA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpNYXRjaFJvdXRlciA9IGZhbHNlO1xuICBAQ29udGVudENoaWxkcmVuKFJvdXRlckxpbmssIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgbGlzdE9mUm91dGVyTGluazogUXVlcnlMaXN0PFJvdXRlckxpbms+O1xuICBAQ29udGVudENoaWxkcmVuKFJvdXRlckxpbmtXaXRoSHJlZiwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBsaXN0T2ZSb3V0ZXJMaW5rV2l0aEhyZWY6IFF1ZXJ5TGlzdDxSb3V0ZXJMaW5rV2l0aEhyZWY+O1xuXG4gIC8qKiBjbGVhciBhbGwgaXRlbSBzZWxlY3RlZCBzdGF0dXMgZXhjZXB0IHRoaXMgKi9cbiAgY2xpY2tNZW51SXRlbShlOiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubnpEaXNhYmxlZCkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uek1lbnVTZXJ2aWNlLm9uRGVzY2VuZGFudE1lbnVJdGVtQ2xpY2sodGhpcyk7XG4gICAgICBpZiAodGhpcy5uelN1Ym1lbnVTZXJ2aWNlKSB7XG4gICAgICAgIC8qKiBtZW51IGl0ZW0gaW5zaWRlIHRoZSBzdWJtZW51ICoqL1xuICAgICAgICB0aGlzLm56U3VibWVudVNlcnZpY2Uub25DaGlsZE1lbnVJdGVtQ2xpY2sodGhpcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiogbWVudSBpdGVtIGluc2lkZSB0aGUgcm9vdCBtZW51ICoqL1xuICAgICAgICB0aGlzLm56TWVudVNlcnZpY2Uub25DaGlsZE1lbnVJdGVtQ2xpY2sodGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0U2VsZWN0ZWRTdGF0ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMubnpTZWxlY3RlZCA9IHZhbHVlO1xuICAgIHRoaXMuc2VsZWN0ZWQkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSb3V0ZXJBY3RpdmUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmxpc3RPZlJvdXRlckxpbmsgfHwgIXRoaXMubGlzdE9mUm91dGVyTGlua1dpdGhIcmVmIHx8ICF0aGlzLnJvdXRlciB8fCAhdGhpcy5yb3V0ZXIubmF2aWdhdGVkIHx8ICF0aGlzLm56TWF0Y2hSb3V0ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBoYXNBY3RpdmVMaW5rcyA9IHRoaXMuaGFzQWN0aXZlTGlua3MoKTtcbiAgICAgIGlmICh0aGlzLm56U2VsZWN0ZWQgIT09IGhhc0FjdGl2ZUxpbmtzKSB7XG4gICAgICAgIHRoaXMubnpTZWxlY3RlZCA9IGhhc0FjdGl2ZUxpbmtzO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkU3RhdGUodGhpcy5uelNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhc0FjdGl2ZUxpbmtzKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzQWN0aXZlQ2hlY2tGbiA9IHRoaXMuaXNMaW5rQWN0aXZlKHRoaXMucm91dGVyISk7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLnJvdXRlckxpbmsgJiYgaXNBY3RpdmVDaGVja0ZuKHRoaXMucm91dGVyTGluaykpIHx8XG4gICAgICAodGhpcy5yb3V0ZXJMaW5rV2l0aEhyZWYgJiYgaXNBY3RpdmVDaGVja0ZuKHRoaXMucm91dGVyTGlua1dpdGhIcmVmKSkgfHxcbiAgICAgIHRoaXMubGlzdE9mUm91dGVyTGluay5zb21lKGlzQWN0aXZlQ2hlY2tGbikgfHxcbiAgICAgIHRoaXMubGlzdE9mUm91dGVyTGlua1dpdGhIcmVmLnNvbWUoaXNBY3RpdmVDaGVja0ZuKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzTGlua0FjdGl2ZShyb3V0ZXI6IFJvdXRlcik6IChsaW5rOiBSb3V0ZXJMaW5rIHwgUm91dGVyTGlua1dpdGhIcmVmKSA9PiBib29sZWFuIHtcbiAgICByZXR1cm4gKGxpbms6IFJvdXRlckxpbmsgfCBSb3V0ZXJMaW5rV2l0aEhyZWYpID0+IHJvdXRlci5pc0FjdGl2ZShsaW5rLnVybFRyZWUsIHRoaXMubnpNYXRjaFJvdXRlckV4YWN0KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbnpNZW51U2VydmljZTogTWVudVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbnpTdWJtZW51U2VydmljZTogTnpTdWJtZW51U2VydmljZSxcbiAgICBASW5qZWN0KE56SXNNZW51SW5zaWRlRHJvcERvd25Ub2tlbikgcHVibGljIGlzTWVudUluc2lkZURyb3BEb3duOiBib29sZWFuLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcm91dGVyTGluaz86IFJvdXRlckxpbmssXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByb3V0ZXJMaW5rV2l0aEhyZWY/OiBSb3V0ZXJMaW5rV2l0aEhyZWYsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByb3V0ZXI/OiBSb3V0ZXJcbiAgKSB7XG4gICAgaWYgKHJvdXRlcikge1xuICAgICAgdGhpcy5yb3V0ZXIhLmV2ZW50cy5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgIGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxuICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVJvdXRlckFjdGl2ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLyoqIHN0b3JlIG9yaWdpbiBwYWRkaW5nIGluIHBhZGRpbmcgKi9cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLm56TWVudVNlcnZpY2UubW9kZSQsIHRoaXMubnpNZW51U2VydmljZS5pbmxpbmVJbmRlbnQkXSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKFttb2RlLCBpbmxpbmVJbmRlbnRdKSA9PiB7XG4gICAgICAgIHRoaXMuaW5saW5lUGFkZGluZ0xlZnQgPSBtb2RlID09PSAnaW5saW5lJyA/IHRoaXMubGV2ZWwgKiBpbmxpbmVJbmRlbnQgOiBudWxsO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0T2ZSb3V0ZXJMaW5rLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVJvdXRlckFjdGl2ZSgpKTtcbiAgICB0aGlzLmxpc3RPZlJvdXRlckxpbmtXaXRoSHJlZi5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVSb3V0ZXJBY3RpdmUoKSk7XG4gICAgdGhpcy51cGRhdGVSb3V0ZXJBY3RpdmUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5uelNlbGVjdGVkKSB7XG4gICAgICB0aGlzLnNldFNlbGVjdGVkU3RhdGUodGhpcy5uelNlbGVjdGVkKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==