UNPKG

ng-zorro-antd-mobile

Version:

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

362 lines 28.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ViewEncapsulation, Input, Output, EventEmitter } from '@angular/core'; import { Subject } from 'rxjs'; import { LocaleProviderService } from '../locale-provider/locale-provider.service'; import { takeUntil } from 'rxjs/operators'; /** * @record */ function LocaleValue() { } if (false) { /** @type {?} */ LocaleValue.prototype.okText; /** @type {?} */ LocaleValue.prototype.cancelText; } var MenuComponent = /** @class */ (function () { function MenuComponent(_localeProviderService) { this._localeProviderService = _localeProviderService; this.prefixCls = 'am-menu'; this.subMenuPrefixCls = 'am-sub-menu'; this.radioPrefixCls = 'am-radio'; this.multiSelectMenuBtnsCls = 'am-multi-select-btns'; this.menuSelectContanerPrefixCls = 'am-menu-select-container'; this.locale = { okText: '', cancelText: '' }; this._data = []; this._unsubscribe$ = new Subject(); this.level = 2; this.value = []; this.height = document.documentElement.clientHeight / 2; this.multiSelect = false; this.onChange = new EventEmitter(); this.onOk = new EventEmitter(); this.onCancel = new EventEmitter(); } Object.defineProperty(MenuComponent.prototype, "data", { get: /** * @return {?} */ function () { return this._data; }, set: /** * @param {?} v * @return {?} */ function (v) { this._data = v; this.initData(); }, enumerable: true, configurable: true }); /** * @return {?} */ MenuComponent.prototype.onMenuOk = /** * @return {?} */ function () { this.onOk.emit(this.value); }; /** * @return {?} */ MenuComponent.prototype.onMenuCancel = /** * @return {?} */ function () { this.onCancel.emit(); }; /** * @return {?} */ MenuComponent.prototype.getNewFsv = /** * @return {?} */ function () { /** @type {?} */ var firstValue = ''; if (this.value && this.value.length) { firstValue = (/** @type {?} */ (this.value[0])); } else if (this._data && this._data.length && !this._data[0].isLeaf) { firstValue = this._data[0].value; } return firstValue; }; /** * @param {?} dataItem * @return {?} */ MenuComponent.prototype.onClickFirstLevelItem = /** * @param {?} dataItem * @return {?} */ function (dataItem) { this.firstLevelSelectValue = dataItem.value; if (dataItem.isLeaf && this.onChange) { this.onChange.emit([dataItem.value]); } this.initData(); }; /** * @param {?} dataItem * @return {?} */ MenuComponent.prototype.onClickSubMenuItem = /** * @param {?} dataItem * @return {?} */ function (dataItem) { var _this = this; this.value = this.getSelectValue(dataItem); this.initData(); setTimeout((/** * @return {?} */ function () { _this.onChange.emit(_this.value); }), 300); }; /** * @param {?} dataItem * @return {?} */ MenuComponent.prototype.getSelectValue = /** * @param {?} dataItem * @return {?} */ function (dataItem) { if (this.multiSelect) { if (this.value && this.value.length > 0) { if (this.level === 2 && this.value[0] !== this.firstLevelSelectValue) { return [this.firstLevelSelectValue, [dataItem.value]]; } else { if (this.level == 1) { /** @type {?} */ var chosenValues = Array.from(this.value); /** @type {?} */ var existIndex = chosenValues.indexOf(dataItem.value); if (existIndex === -1) { chosenValues.push(dataItem.value); } else { chosenValues.splice(existIndex, 1); } return chosenValues; } else { /** @type {?} */ var chosenValues = Array.from(this.value[1]); /** @type {?} */ var existIndex = chosenValues.indexOf(dataItem.value); if (existIndex === -1) { chosenValues.push(dataItem.value); } else { chosenValues.splice(existIndex, 1); } return [this.firstLevelSelectValue, chosenValues]; } } } else { return this.level === 2 ? [this.firstLevelSelectValue, [dataItem.value]] : [dataItem.value]; } } return this.level === 2 ? [this.firstLevelSelectValue, dataItem.value] : [dataItem.value]; }; /** * @return {?} */ MenuComponent.prototype.initData = /** * @return {?} */ function () { var _this = this; this.subMenuData = this._data; if (this.level === 2) { /** @type {?} */ var parent_1 = this._data; if (this.firstLevelSelectValue && this.firstLevelSelectValue !== '') { parent_1 = this._data.filter((/** * @param {?} dataItem * @return {?} */ function (dataItem) { return dataItem.value === _this.firstLevelSelectValue; })); } if (parent_1[0] && parent_1[0].children && parent_1[0].isLeaf !== true) { this.subMenuData = parent_1[0].children; } else { this.subMenuData = []; } } /** @type {?} */ var subValue = (this.value && this.value.length > 0 && tslib_1.__spread(this.value)) || []; if (this.level === 2 && subValue.length > 1) { subValue.shift(); if (this.multiSelect) { subValue = (/** @type {?} */ (subValue[0])); } } this.subSelInitItem = this.subMenuData .filter((/** * @param {?} dataItem * @return {?} */ function (dataItem) { return subValue.indexOf(dataItem.value) !== -1; })) .map((/** * @param {?} item * @return {?} */ function (item) { return item.value; })); /** @type {?} */ var parentValue = this.value && this.value.length > 1 && this.level === 2 ? this.value[0] : null; this.showSelect = true; if (this.level === 2 && parentValue !== this.firstLevelSelectValue) { this.showSelect = false; } }; /** * @param {?} dataItem * @return {?} */ MenuComponent.prototype.getClass = /** * @param {?} dataItem * @return {?} */ function (dataItem) { return this.dataItemSelected(dataItem) ? this.prefixCls + '-selected' : ''; }; /** * @param {?} dataItem * @return {?} */ MenuComponent.prototype.dataItemSelected = /** * @param {?} dataItem * @return {?} */ function (dataItem) { return dataItem.value === this.firstLevelSelectValue; }; /** * @return {?} */ MenuComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; this._localeProviderService.localeChange.pipe(takeUntil(this._unsubscribe$)).subscribe((/** * @param {?} _ * @return {?} */ function (_) { _this.locale = (/** @type {?} */ (_this._localeProviderService.getLocaleSubObj('Menu'))); })); this.firstLevelSelectValue = this.getNewFsv(); this.heightStyle = { height: this.height + 'px' }; this.initData(); }; /** * @return {?} */ MenuComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { this._unsubscribe$.next(); this._unsubscribe$.complete(); }; MenuComponent.decorators = [ { type: Component, args: [{ selector: 'Menu, nzm-menu', template: "<Flex class=\"{{ prefixCls }}\" [ngStyle]=\"heightStyle\" [direction]=\"'column'\" [align]=\"'stretch'\">\n <Flex class=\"{{ menuSelectContanerPrefixCls }}\" [align]=\"'start'\">\n <FlexItem *ngIf=\"level == 2\">\n <List role=\"tablist\">\n <ListItem\n role=\"tab\"\n *ngFor=\"let dataItem of data; let i = index\"\n [className]=\"getClass(dataItem)\"\n (click)=\"onClickFirstLevelItem(dataItem)\"\n >\n {{ dataItem.label }}\n </ListItem>\n </List>\n </FlexItem>\n\n <FlexItem role=\"tabpanel\" aria-hidden=\"false\" class=\"{{ menuSelectContanerPrefixCls }}-submenu\">\n <SubMenu\n [subMenuPrefixCls]=\"subMenuPrefixCls\"\n [radioPrefixCls]=\"radioPrefixCls\"\n [subMenuData]=\"subMenuData\"\n [selItem]=\"subSelInitItem\"\n [showSelect]=\"showSelect\"\n [multiSelect]=\"multiSelect\"\n (onSel)=\"onClickSubMenuItem($event)\"\n >\n </SubMenu>\n </FlexItem>\n </Flex>\n\n <div *ngIf=\"multiSelect\" class=\"{{ multiSelectMenuBtnsCls }}\">\n <a Button [className]=\"'am-multi-select-btns-btn'\" [inline]=\"true\" (onClick)=\"onMenuCancel()\">\n {{ locale.cancelText }}\n </a>\n <a Button [className]=\"'am-multi-select-btns-btn'\" [inline]=\"true\" [type]=\"'primary'\" (onClick)=\"onMenuOk()\">\n {{ locale.okText }}\n </a>\n </div>\n</Flex>\n", encapsulation: ViewEncapsulation.None }] } ]; /** @nocollapse */ MenuComponent.ctorParameters = function () { return [ { type: LocaleProviderService } ]; }; MenuComponent.propDecorators = { data: [{ type: Input }], level: [{ type: Input }], value: [{ type: Input }], height: [{ type: Input }], multiSelect: [{ type: Input }], onChange: [{ type: Output }], onOk: [{ type: Output }], onCancel: [{ type: Output }] }; return MenuComponent; }()); export { MenuComponent }; if (false) { /** @type {?} */ MenuComponent.prototype.prefixCls; /** @type {?} */ MenuComponent.prototype.subMenuPrefixCls; /** @type {?} */ MenuComponent.prototype.radioPrefixCls; /** @type {?} */ MenuComponent.prototype.multiSelectMenuBtnsCls; /** @type {?} */ MenuComponent.prototype.menuSelectContanerPrefixCls; /** @type {?} */ MenuComponent.prototype.firstLevelSelectValue; /** @type {?} */ MenuComponent.prototype.heightStyle; /** @type {?} */ MenuComponent.prototype.subMenuData; /** @type {?} */ MenuComponent.prototype.showSelect; /** @type {?} */ MenuComponent.prototype.subSelInitItem; /** @type {?} */ MenuComponent.prototype.locale; /** * @type {?} * @private */ MenuComponent.prototype._data; /** * @type {?} * @private */ MenuComponent.prototype._unsubscribe$; /** @type {?} */ MenuComponent.prototype.level; /** @type {?} */ MenuComponent.prototype.value; /** @type {?} */ MenuComponent.prototype.height; /** @type {?} */ MenuComponent.prototype.multiSelect; /** @type {?} */ MenuComponent.prototype.onChange; /** @type {?} */ MenuComponent.prototype.onOk; /** @type {?} */ MenuComponent.prototype.onCancel; /** * @type {?} * @private */ MenuComponent.prototype._localeProviderService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkLW1vYmlsZS8iLCJzb3VyY2VzIjpbIm1lbnUvbWVudS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRTNDLDBCQUdDOzs7SUFGQyw2QkFBZTs7SUFDZixpQ0FBbUI7O0FBR3JCO0lBK0NFLHVCQUFvQixzQkFBNkM7UUFBN0MsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF1QjtRQXpDakUsY0FBUyxHQUFXLFNBQVMsQ0FBQztRQUM5QixxQkFBZ0IsR0FBVyxhQUFhLENBQUM7UUFDekMsbUJBQWMsR0FBVyxVQUFVLENBQUM7UUFDcEMsMkJBQXNCLEdBQVcsc0JBQXNCLENBQUM7UUFDeEQsZ0NBQTJCLEdBQVcsMEJBQTBCLENBQUM7UUFNakUsV0FBTSxHQUFnQjtZQUNwQixNQUFNLEVBQUUsRUFBRTtZQUNWLFVBQVUsRUFBRSxFQUFFO1NBQ2YsQ0FBQztRQUVNLFVBQUssR0FBZSxFQUFFLENBQUM7UUFDdkIsa0JBQWEsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVczRCxVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBRWxCLFVBQUssR0FBZSxFQUFFLENBQUM7UUFFdkIsV0FBTSxHQUFXLFFBQVEsQ0FBQyxlQUFlLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUUzRCxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUU3QixhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENB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O0lBQzdCLGlDQUNzRDs7SUFDdEQsNkJBQ2tEOztJQUNsRCxpQ0FDc0Q7Ozs7O0lBRTFDLCtDQUFxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvY2FsZVByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4uL2xvY2FsZS1wcm92aWRlci9sb2NhbGUtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmludGVyZmFjZSBMb2NhbGVWYWx1ZSB7XG4gIG9rVGV4dDogc3RyaW5nO1xuICBjYW5jZWxUZXh0OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ01lbnUsIG56bS1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByZWZpeENsczogc3RyaW5nID0gJ2FtLW1lbnUnO1xuICBzdWJNZW51UHJlZml4Q2xzOiBzdHJpbmcgPSAnYW0tc3ViLW1lbnUnO1xuICByYWRpb1ByZWZpeENsczogc3RyaW5nID0gJ2FtLXJhZGlvJztcbiAgbXVsdGlTZWxlY3RNZW51QnRuc0Nsczogc3RyaW5nID0gJ2FtLW11bHRpLXNlbGVjdC1idG5zJztcbiAgbWVudVNlbGVjdENvbnRhbmVyUHJlZml4Q2xzOiBzdHJpbmcgPSAnYW0tbWVudS1zZWxlY3QtY29udGFpbmVyJztcbiAgZmlyc3RMZXZlbFNlbGVjdFZhbHVlOiBudW1iZXIgfCBzdHJpbmc7XG4gIGhlaWdodFN0eWxlOiBvYmplY3Q7XG4gIHN1Yk1lbnVEYXRhOiBBcnJheTxhbnk+O1xuICBzaG93U2VsZWN0OiBib29sZWFuO1xuICBzdWJTZWxJbml0SXRlbTogb2JqZWN0O1xuICBsb2NhbGU6IExvY2FsZVZhbHVlID0ge1xuICAgIG9rVGV4dDogJycsXG4gICAgY2FuY2VsVGV4dDogJydcbiAgfTtcblxuICBwcml2YXRlIF9kYXRhOiBBcnJheTxhbnk+ID0gW107XG4gIHByaXZhdGUgX3Vuc3Vic2NyaWJlJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cbiAgc2V0IGRhdGEodikge1xuICAgIHRoaXMuX2RhdGEgPSB2O1xuICAgIHRoaXMuaW5pdERhdGEoKTtcbiAgfVxuICBASW5wdXQoKVxuICBsZXZlbDogbnVtYmVyID0gMjtcbiAgQElucHV0KClcbiAgdmFsdWU6IEFycmF5PGFueT4gPSBbXTtcbiAgQElucHV0KClcbiAgaGVpZ2h0OiBudW1iZXIgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IC8gMjtcbiAgQElucHV0KClcbiAgbXVsdGlTZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpXG4gIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KClcbiAgb25PazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpXG4gIG9uQ2FuY2VsOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2xvY2FsZVByb3ZpZGVyU2VydmljZTogTG9jYWxlUHJvdmlkZXJTZXJ2aWNlKSB7fVxuXG4gIG9uTWVudU9rKCkge1xuICAgIHRoaXMub25Pay5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb25NZW51Q2FuY2VsKCkge1xuICAgIHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgZ2V0TmV3RnN2KCkge1xuICAgIGxldCBmaXJzdFZhbHVlID0gJyc7XG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgIGZpcnN0VmFsdWUgPSB0aGlzLnZhbHVlWzBdIGFzIHN0cmluZztcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2RhdGEgJiYgdGhpcy5fZGF0YS5sZW5ndGggJiYgIXRoaXMuX2RhdGFbMF0uaXNMZWFmKSB7XG4gICAgICBmaXJzdFZhbHVlID0gdGhpcy5fZGF0YVswXS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZpcnN0VmFsdWU7XG4gIH1cblxuICBvbkNsaWNrRmlyc3RMZXZlbEl0ZW0oZGF0YUl0ZW0pIHtcbiAgICB0aGlzLmZpcnN0TGV2ZWxTZWxlY3RWYWx1ZSA9IGRhdGFJdGVtLnZhbHVlO1xuICAgIGlmIChkYXRhSXRlbS5pc0xlYWYgJiYgdGhpcy5vbkNoYW5nZSkge1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KFtkYXRhSXRlbS52YWx1ZV0pO1xuICAgIH1cbiAgICB0aGlzLmluaXREYXRhKCk7XG4gIH1cblxuICBvbkNsaWNrU3ViTWVudUl0ZW0oZGF0YUl0ZW0pIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5nZXRTZWxlY3RWYWx1ZShkYXRhSXRlbSk7XG4gICAgdGhpcy5pbml0RGF0YSgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgIH0sIDMwMCk7XG4gIH1cblxuICBnZXRTZWxlY3RWYWx1ZShkYXRhSXRlbSkge1xuICAgIGlmICh0aGlzLm11bHRpU2VsZWN0KSB7XG4gICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHRoaXMubGV2ZWwgPT09IDIgJiYgdGhpcy52YWx1ZVswXSAhPT0gdGhpcy5maXJzdExldmVsU2VsZWN0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gW3RoaXMuZmlyc3RMZXZlbFNlbGVjdFZhbHVlLCBbZGF0YUl0ZW0udmFsdWVdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5sZXZlbCA9PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBjaG9zZW5WYWx1ZXMgPSBBcnJheS5mcm9tKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgZXhpc3RJbmRleCA9IGNob3NlblZhbHVlcy5pbmRleE9mKGRhdGFJdGVtLnZhbHVlKTtcbiAgICAgICAgICAgIGlmIChleGlzdEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICBjaG9zZW5WYWx1ZXMucHVzaChkYXRhSXRlbS52YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjaG9zZW5WYWx1ZXMuc3BsaWNlKGV4aXN0SW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNob3NlblZhbHVlcztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY2hvc2VuVmFsdWVzID0gQXJyYXkuZnJvbSh0aGlzLnZhbHVlWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0SW5kZXggPSBjaG9zZW5WYWx1ZXMuaW5kZXhPZihkYXRhSXRlbS52YWx1ZSk7XG4gICAgICAgICAgICBpZiAoZXhpc3RJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgY2hvc2VuVmFsdWVzLnB1c2goZGF0YUl0ZW0udmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY2hvc2VuVmFsdWVzLnNwbGljZShleGlzdEluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbdGhpcy5maXJzdExldmVsU2VsZWN0VmFsdWUsIGNob3NlblZhbHVlc107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5sZXZlbCA9PT0gMiA/IFt0aGlzLmZpcnN0TGV2ZWxTZWxlY3RWYWx1ZSwgW2RhdGFJdGVtLnZhbHVlXV0gOiBbZGF0YUl0ZW0udmFsdWVdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sZXZlbCA9PT0gMiA/IFt0aGlzLmZpcnN0TGV2ZWxTZWxlY3RWYWx1ZSwgZGF0YUl0ZW0udmFsdWVdIDogW2RhdGFJdGVtLnZhbHVlXTtcbiAgfVxuXG4gIGluaXREYXRhKCkge1xuICAgIHRoaXMuc3ViTWVudURhdGEgPSB0aGlzLl9kYXRhO1xuICAgIGlmICh0aGlzLmxldmVsID09PSAyKSB7XG4gICAgICBsZXQgcGFyZW50ID0gdGhpcy5fZGF0YTtcbiAgICAgIGlmICh0aGlzLmZpcnN0TGV2ZWxTZWxlY3RWYWx1ZSAmJiB0aGlzLmZpcnN0TGV2ZWxTZWxlY3RWYWx1ZSAhPT0gJycpIHtcbiAgICAgICAgcGFyZW50ID0gdGhpcy5fZGF0YS5maWx0ZXIoZGF0YUl0ZW0gPT4gZGF0YUl0ZW0udmFsdWUgPT09IHRoaXMuZmlyc3RMZXZlbFNlbGVjdFZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJlbnRbMF0gJiYgcGFyZW50WzBdLmNoaWxkcmVuICYmIHBhcmVudFswXS5pc0xlYWYgIT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5zdWJNZW51RGF0YSA9IHBhcmVudFswXS5jaGlsZHJlbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3ViTWVudURhdGEgPSBbXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgc3ViVmFsdWUgPSAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDAgJiYgWy4uLnRoaXMudmFsdWVdKSB8fCBbXTtcbiAgICBpZiAodGhpcy5sZXZlbCA9PT0gMiAmJiBzdWJWYWx1ZS5sZW5ndGggPiAxKSB7XG4gICAgICBzdWJWYWx1ZS5zaGlmdCgpO1xuICAgICAgaWYgKHRoaXMubXVsdGlTZWxlY3QpIHtcbiAgICAgICAgc3ViVmFsdWUgPSBzdWJWYWx1ZVswXSBhcyBzdHJpbmdbXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN1YlNlbEluaXRJdGVtID0gdGhpcy5zdWJNZW51RGF0YVxuICAgICAgLmZpbHRlcihkYXRhSXRlbSA9PiBzdWJWYWx1ZS5pbmRleE9mKGRhdGFJdGVtLnZhbHVlKSAhPT0gLTEpXG4gICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgcGFyZW50VmFsdWUgPSB0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMSAmJiB0aGlzLmxldmVsID09PSAyID8gdGhpcy52YWx1ZVswXSA6IG51bGw7XG5cbiAgICB0aGlzLnNob3dTZWxlY3QgPSB0cnVlO1xuICAgIGlmICh0aGlzLmxldmVsID09PSAyICYmIHBhcmVudFZhbHVlICE9PSB0aGlzLmZpcnN0TGV2ZWxTZWxlY3RWYWx1ZSkge1xuICAgICAgdGhpcy5zaG93U2VsZWN0ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xhc3MoZGF0YUl0ZW0pIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhSXRlbVNlbGVjdGVkKGRhdGFJdGVtKSA/IHRoaXMucHJlZml4Q2xzICsgJy1zZWxlY3RlZCcgOiAnJztcbiAgfVxuXG4gIGRhdGFJdGVtU2VsZWN0ZWQoZGF0YUl0ZW0pIHtcbiAgICByZXR1cm4gZGF0YUl0ZW0udmFsdWUgPT09IHRoaXMuZmlyc3RMZXZlbFNlbGVjdFZhbHVlO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fbG9jYWxlUHJvdmlkZXJTZXJ2aWNlLmxvY2FsZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICB0aGlzLmxvY2FsZSA9IDxMb2NhbGVWYWx1ZT50aGlzLl9sb2NhbGVQcm92aWRlclNlcnZpY2UuZ2V0TG9jYWxlU3ViT2JqKCdNZW51Jyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmZpcnN0TGV2ZWxTZWxlY3RWYWx1ZSA9IHRoaXMuZ2V0TmV3RnN2KCk7XG5cbiAgICB0aGlzLmhlaWdodFN0eWxlID0ge1xuICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCArICdweCdcbiAgICB9O1xuICAgIHRoaXMuaW5pdERhdGEoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==