ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
362 lines • 28.4 kB
JavaScript
/**
* @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==