ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
320 lines (319 loc) • 26.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,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';
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 = {};
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(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(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(function (dataItem) { return subValue.indexOf(dataItem.value) !== -1; }).map(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(function (_) {
_this.locale = _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}}\"\n [ngStyle]=\"heightStyle\"\n [direction]=\"'column'\"\n [align]=\"'stretch'\"\n>\n <Flex class=\"{{menuSelectContanerPrefixCls}}\" [align]=\"'start'\">\n <FlexItem *ngIf=\"level == 2\">\n <List role=\"tablist\">\n <ListItem 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 [subMenuPrefixCls]=\"subMenuPrefixCls\"\n [radioPrefixCls]=\"radioPrefixCls\"\n [subMenuData]=\"subMenuData\"\n [selItem]=\"subSelInitItem\"\n [showSelect]=\"showSelect\"\n [multiSelect]=\"multiSelect\"\n (onSel)=\"onClickSubMenuItem($event)\">\n </SubMenu>\n </FlexItem>\n </Flex>\n\n <div *ngIf=\"multiSelect\" class=\"{{multiSelectMenuBtnsCls}}\">\n <a Button\n [className]=\"'am-multi-select-btns-btn'\"\n [inline]=\"true\"\n (onClick)=\"onMenuCancel()\"\n >\n {{locale.cancelText}}\n </a>\n <a Button\n [className]=\"'am-multi-select-btns-btn'\"\n [inline]=\"true\" [type]=\"'primary'\"\n (onClick)=\"onMenuOk()\"\n >\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 {?} */
MenuComponent.prototype._data;
/** @type {?} */
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 {?} */
MenuComponent.prototype._localeProviderService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkLW1vYmlsZS8iLCJzb3VyY2VzIjpbIm1lbnUvbWVudS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztJQThDekMsdUJBQW9CLHNCQUE2QztRQUE3QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO3lCQXRDN0MsU0FBUztnQ0FDRixhQUFhOzhCQUNmLFVBQVU7c0NBQ0Ysc0JBQXNCOzJDQUNqQiwwQkFBMEI7c0JBTS9DLEVBQUU7cUJBRVMsRUFBRTs2QkFDUyxJQUFJLE9BQU8sRUFBUTtxQkFXMUMsQ0FBQztxQkFFRyxFQUFFO3NCQUVMLFFBQVEsQ0FBQyxlQUFlLENBQUMsWUFBWSxHQUFHLENBQUM7MkJBRW5DLEtBQUs7d0JBRUUsSUFBSSxZQUFZLEVBQU87b0JBRTNCLElBQUksWUFBWSxFQUFPO3dCQUVuQixJQUFJLFlBQVksRUFBTztLQUVnQjtJQXZCckUsc0JBQ0ksK0JBQUk7Ozs7UUFEUjtZQUVFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNuQjs7Ozs7UUFDRCxVQUFTLENBQUM7WUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNqQjs7O09BSkE7Ozs7SUFzQkQsZ0NBQVE7OztJQUFSO1FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FB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Q0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQy9COztnQkEzS0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLG9nREFBb0M7b0JBQ3BDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUN0Qzs7OztnQkFQUSxxQkFBcUI7Ozt1QkF3QjNCLEtBQUs7d0JBUUwsS0FBSzt3QkFFTCxLQUFLO3lCQUVMLEtBQUs7OEJBRUwsS0FBSzsyQkFFTCxNQUFNO3VCQUVOLE1BQU07MkJBRU4sTUFBTTs7d0JBOUNUOztTQVVhLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2NhbGVQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuLi9sb2NhbGUtcHJvdmlkZXIvbG9jYWxlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdNZW51LCBuem0tbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcmVmaXhDbHM6IHN0cmluZyA9ICdhbS1tZW51JztcbiAgc3ViTWVudVByZWZpeENsczogc3RyaW5nID0gJ2FtLXN1Yi1tZW51JztcbiAgcmFkaW9QcmVmaXhDbHM6IHN0cmluZyA9ICdhbS1yYWRpbyc7XG4gIG11bHRpU2VsZWN0TWVudUJ0bnNDbHM6IHN0cmluZyA9ICdhbS1tdWx0aS1zZWxlY3QtYnRucyc7XG4gIG1lbnVTZWxlY3RDb250YW5lclByZWZpeENsczogc3RyaW5nID0gJ2FtLW1lbnUtc2VsZWN0LWNvbnRhaW5lcic7XG4gIGZpcnN0TGV2ZWxTZWxlY3RWYWx1ZTogbnVtYmVyIHwgc3RyaW5nO1xuICBoZWlnaHRTdHlsZTogb2JqZWN0O1xuICBzdWJNZW51RGF0YTogQXJyYXk8YW55PjtcbiAgc2hvd1NlbGVjdDogYm9vbGVhbjtcbiAgc3ViU2VsSW5pdEl0ZW06IG9iamVjdDtcbiAgbG9jYWxlOiBvYmplY3QgPSB7fTtcblxuICBwcml2YXRlIF9kYXRhOiBBcnJheTxhbnk+ID0gW107XG4gIHByaXZhdGUgX3Vuc3Vic2NyaWJlJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cbiAgc2V0IGRhdGEodikge1xuICAgIHRoaXMuX2RhdGEgPSB2O1xuICAgIHRoaXMuaW5pdERhdGEoKTtcbiAgfVxuICBASW5wdXQoKVxuICBsZXZlbDogbnVtYmVyID0gMjtcbiAgQElucHV0KClcbiAgdmFsdWU6IEFycmF5PGFueT4gPSBbXTtcbiAgQElucHV0KClcbiAgaGVpZ2h0OiBudW1iZXIgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IC8gMjtcbiAgQElucHV0KClcbiAgbXVsdGlTZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpXG4gIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KClcbiAgb25PazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpXG4gIG9uQ2FuY2VsOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2xvY2FsZVByb3ZpZGVyU2VydmljZTogTG9jYWxlUHJvdmlkZXJTZXJ2aWNlKSB7fVxuXG4gIG9uTWVudU9rKCkge1xuICAgIHRoaXMub25Pay5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb25NZW51Q2FuY2VsKCkge1xuICAgIHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgZ2V0TmV3RnN2KCkge1xuICAgIGxldCBmaXJzdFZhbHVlID0gJyc7XG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgIGZpcnN0VmFsdWUgPSB0aGlzLnZhbHVlWzBdIGFzIHN0cmluZztcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2RhdGEgJiYgdGhpcy5fZGF0YS5sZW5ndGggJiYgIXRoaXMuX2RhdGFbMF0uaXNMZWFmKSB7XG4gICAgICBmaXJzdFZhbHVlID0gdGhpcy5fZGF0YVswXS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZpcnN0VmFsdWU7XG4gIH1cblxuICBvbkNsaWNrRmlyc3RMZXZlbEl0ZW0oZGF0YUl0ZW0pIHtcbiAgICB0aGlzLmZpcnN0TGV2ZWxTZWxlY3RWYWx1ZSA9IGRhdGFJdGVtLnZhbHVlO1xuICAgIGlmIChkYXRhSXRlbS5pc0xlYWYgJiYgdGhpcy5vbkNoYW5nZSkge1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KFtkYXRhSXRlbS52YWx1ZV0pO1xuICAgIH1cbiAgICB0aGlzLmluaXREYXRhKCk7XG4gIH1cblxuICBvbkNsaWNrU3ViTWVudUl0ZW0oZGF0YUl0ZW0pIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5nZXRTZWxlY3RWYWx1ZShkYXRhSXRlbSk7XG4gICAgdGhpcy5pbml0RGF0YSgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgIH0sIDMwMCk7XG4gIH1cblxuICBnZXRTZWxlY3RWYWx1ZShkYXRhSXRlbSkge1xuICAgIGlmICh0aGlzLm11bHRpU2VsZWN0KSB7XG4gICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHRoaXMubGV2ZWwgPT09IDIgJiYgdGhpcy52YWx1ZVswXSAhPT0gdGhpcy5maXJzdExldmVsU2VsZWN0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gW3RoaXMuZmlyc3RMZXZlbFNlbGVjdFZhbHVlLCBbZGF0YUl0ZW0udmFsdWVdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5sZXZlbCA9PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBjaG9zZW5WYWx1ZXMgPSBBcnJheS5mcm9tKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgZXhpc3RJbmRleCA9IGNob3NlblZhbHVlcy5pbmRleE9mKGRhdGFJdGVtLnZhbHVlKTtcbiAgICAgICAgICAgIGlmIChleGlzdEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICBjaG9zZW5WYWx1ZXMucHVzaChkYXRhSXRlbS52YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjaG9zZW5WYWx1ZXMuc3BsaWNlKGV4aXN0SW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNob3NlblZhbHVlcztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY2hvc2VuVmFsdWVzID0gQXJyYXkuZnJvbSh0aGlzLnZhbHVlWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0SW5kZXggPSBjaG9zZW5WYWx1ZXMuaW5kZXhPZihkYXRhSXRlbS52YWx1ZSk7XG4gICAgICAgICAgICBpZiAoZXhpc3RJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgY2hvc2VuVmFsdWVzLnB1c2goZGF0YUl0ZW0udmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY2hvc2VuVmFsdWVzLnNwbGljZShleGlzdEluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbdGhpcy5maXJzdExldmVsU2VsZWN0VmFsdWUsIGNob3NlblZhbHVlc107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5sZXZlbCA9PT0gMiA/IFt0aGlzLmZpcnN0TGV2ZWxTZWxlY3RWYWx1ZSwgW2RhdGFJdGVtLnZhbHVlXV0gOiBbZGF0YUl0ZW0udmFsdWVdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sZXZlbCA9PT0gMiA/IFt0aGlzLmZpcnN0TGV2ZWxTZWxlY3RWYWx1ZSwgZGF0YUl0ZW0udmFsdWVdIDogW2RhdGFJdGVtLnZhbHVlXTtcbiAgfVxuXG4gIGluaXREYXRhKCkge1xuICAgIHRoaXMuc3ViTWVudURhdGEgPSB0aGlzLl9kYXRhO1xuICAgIGlmICh0aGlzLmxldmVsID09PSAyKSB7XG4gICAgICBsZXQgcGFyZW50ID0gdGhpcy5fZGF0YTtcbiAgICAgIGlmICh0aGlzLmZpcnN0TGV2ZWxTZWxlY3RWYWx1ZSAmJiB0aGlzLmZpcnN0TGV2ZWxTZWxlY3RWYWx1ZSAhPT0gJycpIHtcbiAgICAgICAgcGFyZW50ID0gdGhpcy5fZGF0YS5maWx0ZXIoZGF0YUl0ZW0gPT4gZGF0YUl0ZW0udmFsdWUgPT09IHRoaXMuZmlyc3RMZXZlbFNlbGVjdFZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJlbnRbMF0gJiYgcGFyZW50WzBdLmNoaWxkcmVuICYmIHBhcmVudFswXS5pc0xlYWYgIT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5zdWJNZW51RGF0YSA9IHBhcmVudFswXS5jaGlsZHJlbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3ViTWVudURhdGEgPSBbXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgc3ViVmFsdWUgPSAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDAgJiYgWy4uLnRoaXMudmFsdWVdKSB8fCBbXTtcbiAgICBpZiAodGhpcy5sZXZlbCA9PT0gMiAmJiBzdWJWYWx1ZS5sZW5ndGggPiAxKSB7XG4gICAgICBzdWJWYWx1ZS5zaGlmdCgpO1xuICAgICAgaWYgKHRoaXMubXVsdGlTZWxlY3QpIHtcbiAgICAgICAgc3ViVmFsdWUgPSBzdWJWYWx1ZVswXSBhcyBzdHJpbmdbXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN1YlNlbEluaXRJdGVtID0gdGhpcy5zdWJNZW51RGF0YS5maWx0ZXIoZGF0YUl0ZW0gPT4gc3ViVmFsdWUuaW5kZXhPZihkYXRhSXRlbS52YWx1ZSkgIT09IC0xKS5tYXAoaXRlbSA9PiB7XG4gICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHBhcmVudFZhbHVlID0gdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDEgJiYgdGhpcy5sZXZlbCA9PT0gMiA/IHRoaXMudmFsdWVbMF0gOiBudWxsO1xuXG4gICAgdGhpcy5zaG93U2VsZWN0ID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5sZXZlbCA9PT0gMiAmJiBwYXJlbnRWYWx1ZSAhPT0gdGhpcy5maXJzdExldmVsU2VsZWN0VmFsdWUpIHtcbiAgICAgIHRoaXMuc2hvd1NlbGVjdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGdldENsYXNzKGRhdGFJdGVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YUl0ZW1TZWxlY3RlZChkYXRhSXRlbSkgPyB0aGlzLnByZWZpeENscyArICctc2VsZWN0ZWQnIDogJyc7XG4gIH1cblxuICBkYXRhSXRlbVNlbGVjdGVkKGRhdGFJdGVtKSB7XG4gICAgcmV0dXJuIGRhdGFJdGVtLnZhbHVlID09PSB0aGlzLmZpcnN0TGV2ZWxTZWxlY3RWYWx1ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2xvY2FsZVByb3ZpZGVyU2VydmljZS5sb2NhbGVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgdGhpcy5sb2NhbGUgPSB0aGlzLl9sb2NhbGVQcm92aWRlclNlcnZpY2UuZ2V0TG9jYWxlU3ViT2JqKCdNZW51Jyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmZpcnN0TGV2ZWxTZWxlY3RWYWx1ZSA9IHRoaXMuZ2V0TmV3RnN2KCk7XG5cbiAgICB0aGlzLmhlaWdodFN0eWxlID0ge1xuICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCArICdweCdcbiAgICB9O1xuICAgIHRoaXMuaW5pdERhdGEoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==