@kre-form/ant
Version:
252 lines • 19.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, } from "@angular/core";
import { FieldType } from "@kre-form/core";
var KreFormFieldSelect = /** @class */ (function (_super) {
tslib_1.__extends(KreFormFieldSelect, _super);
function KreFormFieldSelect() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this._defaultValue = "";
_this._defaultValues = [];
_this.selectType = "default";
return _this;
}
Object.defineProperty(KreFormFieldSelect.prototype, "getModelValue", {
get: /**
* @return {?}
*/
function () {
if (this.to.selectType === "multiple") {
return this.defaultValues;
}
else {
return this.defaultValue;
}
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) { },
enumerable: true,
configurable: true
});
Object.defineProperty(KreFormFieldSelect.prototype, "defaultValue", {
get: /**
* @return {?}
*/
function () {
if (this.model &&
this.model[this.key] &&
Array.isArray(this.model[this.key]) &&
this.model[this.key].length > 0) {
this._defaultValue = this.model[this.key][0].value;
}
else {
return null;
}
return this._defaultValue;
},
enumerable: true,
configurable: true
});
Object.defineProperty(KreFormFieldSelect.prototype, "defaultValues", {
get: /**
* @return {?}
*/
function () {
var _this = this;
if (this.model &&
this.model[this.key] &&
Array.isArray(this.model[this.key])) {
this._defaultValues.length = 0;
this.model[this.key].forEach((/**
* @param {?} item
* @return {?}
*/
function (item) {
_this._defaultValues.push(item.value);
}));
}
else {
return null;
}
return this._defaultValues;
},
enumerable: true,
configurable: true
});
// get defaultValues() {
// if (!this._defaultValues) {
// this._defaultValues = [];
// } else {
// this._defaultValues.length = 0;
// }
// if (
// this.model &&
// this.model[this.key] &&
// Array.isArray(this.model[this.key]) &&
// !_.isEmpty(this.model[this.key])
// ) {
// if (!!this.model[this.key]) {
// this.model[this.key].forEach((item: any) => {
// this._defaultValues.push(item.value);
// });
// }
// } else {
// this._defaultValues = null;
// }
// return this._defaultValues;
// }
// get defaultValues() {
// if (!this._defaultValues) {
// this._defaultValues = [];
// } else {
// this._defaultValues.length = 0;
// }
// if (
// this.model &&
// this.model[this.key] &&
// Array.isArray(this.model[this.key]) &&
// !_.isEmpty(this.model[this.key])
// ) {
// if (!!this.model[this.key]) {
// this.model[this.key].forEach((item: any) => {
// this._defaultValues.push(item.value);
// });
// }
// } else {
// this._defaultValues = null;
// }
// return this._defaultValues;
// }
/**
* @return {?}
*/
KreFormFieldSelect.prototype.getSelectText =
// get defaultValues() {
// if (!this._defaultValues) {
// this._defaultValues = [];
// } else {
// this._defaultValues.length = 0;
// }
// if (
// this.model &&
// this.model[this.key] &&
// Array.isArray(this.model[this.key]) &&
// !_.isEmpty(this.model[this.key])
// ) {
// if (!!this.model[this.key]) {
// this.model[this.key].forEach((item: any) => {
// this._defaultValues.push(item.value);
// });
// }
// } else {
// this._defaultValues = null;
// }
// return this._defaultValues;
// }
/**
* @return {?}
*/
function () {
/** @type {?} */
var result = "";
if (this.to && this.to.selectType) {
if (this.to.selectType === "multiple") {
result = this.textMultiple;
}
else {
result = this.textSingle;
}
}
else {
result = this.textSingle;
}
return result;
};
/**
* @param {?} e
* @return {?}
*/
KreFormFieldSelect.prototype.selectedChange = /**
* @param {?} e
* @return {?}
*/
function (e) {
var _this = this;
/** @type {?} */
var values = [];
if (this.to.selectType && this.to.selectType == "multiple") {
if (e && Array.isArray(e)) {
e.forEach((/**
* @param {?} item
* @return {?}
*/
function (item) {
if (_this.to.options && Array.isArray(_this.to.options)) {
_this.to.options.forEach((/**
* @param {?} options
* @return {?}
*/
function (options) {
if (options.value == item) {
values.push(options);
}
}));
}
}));
}
}
else {
if (this.to.options && Array.isArray(this.to.options)) {
this.to.options.forEach((/**
* @param {?} options
* @return {?}
*/
function (options) {
if (options.value == e) {
values = [options];
}
}));
}
}
this.formControl.patchValue(values);
this.formControl.markAsTouched();
};
Object.defineProperty(KreFormFieldSelect.prototype, "clear", {
get: /**
* @return {?}
*/
function () {
if (typeof this.to.clear === "undefined") {
return true;
}
return !!this.to.clear;
},
enumerable: true,
configurable: true
});
KreFormFieldSelect.decorators = [
{ type: Component, args: [{
selector: "krefield-select",
template: "\n <ng-container *ngIf=\"formStatus !== 0; else other\">\n <div class=\"control-design\">\n <input nz-input disabled />\n </div>\n </ng-container>\n\n <ng-template #other>\n <ng-container *ngIf=\"editor === true\">\n <nz-select\n [nzAllowClear]=\"!to.required && clear\"\n [nzMode]=\"to.selectType === 'multiple' ? 'multiple' : 'default'\"\n [kreFormAttributes]=\"field\"\n [class.is-invalid]=\"showError\"\n [nzPlaceHolder]=\"placeHolder\"\n [(ngModel)]=\"getModelValue\"\n nzShowSearch=\"true\"\n (ngModelChange)=\"selectedChange($event)\"\n >\n <ng-container *ngFor=\"let item of to.options\">\n <nz-option\n [nzLabel]=\"item.label\"\n [nzValue]=\"item.value\"\n ></nz-option>\n </ng-container>\n </nz-select>\n <!-- <div class=\"tips\">\n <i\n class=\"icon-bangzhu\"\n [nzTooltipTitle]=\"tips\"\n nzTooltipPlacement=\"top\"\n nz-tooltip\n *ngIf=\"tips != ''\"\n ></i>\n </div> -->\n </ng-container>\n <div class=\"fieldtext\" *ngIf=\"editor === false\">\n {{ getSelectText() }}\n </div>\n </ng-template>\n "
}] }
];
return KreFormFieldSelect;
}(FieldType));
export { KreFormFieldSelect };
if (false) {
/** @type {?} */
KreFormFieldSelect.prototype._defaultValue;
/** @type {?} */
KreFormFieldSelect.prototype._defaultValues;
/** @type {?} */
KreFormFieldSelect.prototype.selectType;
/** @type {?} */
KreFormFieldSelect.prototype.listOfSelectedValue;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGtyZS1mb3JtL2FudC8iLCJzb3VyY2VzIjpbImxpYi90eXBlcy9zZWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQztJQTZDd0MsOENBQVM7SUE3Q2pEO1FBQUEscUVBaUtDO1FBbkhDLG1CQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLG9CQUFjLEdBQWEsRUFBRSxDQUFDO1FBQzlCLGdCQUFVLEdBQUcsU0FBUyxDQUFDOztJQWlIekIsQ0FBQztJQTlHQyxzQkFBSSw2Q0FBYTs7OztRQUFqQjtZQUNFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO2dCQUNyQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7YUFDM0I7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQzFCO1FBQ0gsQ0FBQzs7Ozs7UUFFRCxVQUFrQixLQUFVLElBQUcsQ0FBQzs7O09BRi9CO0lBSUQsc0JBQUksNENBQVk7Ozs7UUFBaEI7WUFDRSxJQUNFLElBQUksQ0FBQyxLQUFLO2dCQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDcEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDL0I7Z0JBQ0EsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7YUFDcEQ7aUJBQU07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SUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDckQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTzs7OztnQkFBQyxVQUFDLE9BQVk7b0JBQ25DLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUU7d0JBQ3RCLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUNwQjtnQkFDSCxDQUFDLEVBQUMsQ0FBQzthQUNKO1NBQ0Y7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxzQkFBSSxxQ0FBSzs7OztRQUFUO1lBQ0UsSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLFdBQVcsRUFBRTtnQkFDeEMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ3pCLENBQUM7OztPQUFBOztnQkFoS0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRSxteUNBd0NUO2lCQUVGOztJQXFIRCx5QkFBQztDQUFBLEFBaktELENBNkN3QyxTQUFTLEdBb0hoRDtTQXBIWSxrQkFBa0I7OztJQUM3QiwyQ0FBMkI7O0lBQzNCLDRDQUE4Qjs7SUFDOUIsd0NBQXVCOztJQUN2QixpREFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTUFUX0hBTU1FUl9PUFRJT05TIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gXCJAa3JlLWZvcm0vY29yZVwiO1xuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwia3JlZmllbGQtc2VsZWN0XCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1TdGF0dXMgIT09IDA7IGVsc2Ugb3RoZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sLWRlc2lnblwiPlxuICAgICAgICA8aW5wdXQgbnotaW5wdXQgZGlzYWJsZWQgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNvdGhlcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0b3IgPT09IHRydWVcIj5cbiAgICAgICAgPG56LXNlbGVjdFxuICAgICAgICAgIFtuekFsbG93Q2xlYXJdPVwiIXRvLnJlcXVpcmVkICYmIGNsZWFyXCJcbiAgICAgICAgICBbbnpNb2RlXT1cInRvLnNlbGVjdFR5cGUgPT09ICdtdWx0aXBsZScgPyAnbXVsdGlwbGUnIDogJ2RlZmF1bHQnXCJcbiAgICAgICAgICBba3JlRm9ybUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cInNob3dFcnJvclwiXG4gICAgICAgICAgW256UGxhY2VIb2xkZXJdPVwicGxhY2VIb2xkZXJcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2V0TW9kZWxWYWx1ZVwiXG4gICAgICAgICAgbnpTaG93U2VhcmNoPVwidHJ1ZVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHRvLm9wdGlvbnNcIj5cbiAgICAgICAgICAgIDxuei1vcHRpb25cbiAgICAgICAgICAgICAgW256TGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgIFtuelZhbHVlXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgPjwvbnotb3B0aW9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L256LXNlbGVjdD5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidGlwc1wiPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cImljb24tYmFuZ3podVwiXG4gICAgICAgICAgICBbbnpUb29sdGlwVGl0bGVdPVwidGlwc1wiXG4gICAgICAgICAgICBuelRvb2x0aXBQbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgICAgbnotdG9vbHRpcFxuICAgICAgICAgICAgKm5nSWY9XCJ0aXBzICE9ICcnXCJcbiAgICAgICAgICA+PC9pPlxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZHRleHRcIiAqbmdJZj1cImVkaXRvciA9PT0gZmFsc2VcIj5cbiAgICAgICAge3sgZ2V0U2VsZWN0VGV4dCgpIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxuICAvL2NoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBLcmVGb3JtRmllbGRTZWxlY3QgZXh0ZW5kcyBGaWVsZFR5cGUge1xuICBfZGVmYXVsdFZhbHVlOiBzdHJpbmcgPSBcIlwiO1xuICBfZGVmYXVsdFZhbHVlczogc3RyaW5nW10gPSBbXTtcbiAgc2VsZWN0VHlwZSA9IFwiZGVmYXVsdFwiO1xuICBsaXN0T2ZTZWxlY3RlZFZhbHVlOiBhbnk7XG5cbiAgZ2V0IGdldE1vZGVsVmFsdWUoKSB7XG4gICAgaWYgKHRoaXMudG8uc2VsZWN0VHlwZSA9PT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWZhdWx0VmFsdWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWZhdWx0VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgc2V0IGdldE1vZGVsVmFsdWUodmFsdWU6IGFueSkge31cblxuICBnZXQgZGVmYXVsdFZhbHVlKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubW9kZWwgJiZcbiAgICAgIHRoaXMubW9kZWxbdGhpcy5rZXldICYmXG4gICAgICBBcnJheS5pc0FycmF5KHRoaXMubW9kZWxbdGhpcy5rZXldKSAmJlxuICAgICAgdGhpcy5tb2RlbFt0aGlzLmtleV0ubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gdGhpcy5tb2RlbFt0aGlzLmtleV1bMF0udmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFZhbHVlO1xuICB9XG4gIGdldCBkZWZhdWx0VmFsdWVzKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubW9kZWwgJiZcbiAgICAgIHRoaXMubW9kZWxbdGhpcy5rZXldICYmXG4gICAgICBBcnJheS5pc0FycmF5KHRoaXMubW9kZWxbdGhpcy5rZXldKVxuICAgICkge1xuICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlcy5sZW5ndGggPSAwO1xuICAgICAgdGhpcy5tb2RlbFt0aGlzLmtleV0uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZXMucHVzaChpdGVtLnZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWx1ZXM7XG4gIH1cblxuICAvLyBnZXQgZGVmYXVsdFZhbHVlcygpIHtcbiAgLy8gICBpZiAoIXRoaXMuX2RlZmF1bHRWYWx1ZXMpIHtcbiAgLy8gICAgIHRoaXMuX2RlZmF1bHRWYWx1ZXMgPSBbXTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgdGhpcy5fZGVmYXVsdFZhbHVlcy5sZW5ndGggPSAwO1xuICAvLyAgIH1cbiAgLy8gICBpZiAoXG4gIC8vICAgICB0aGlzLm1vZGVsICYmXG4gIC8vICAgICB0aGlzLm1vZGVsW3RoaXMua2V5XSAmJlxuICAvLyAgICAgQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsW3RoaXMua2V5XSkgJiZcbiAgLy8gICAgICFfLmlzRW1wdHkodGhpcy5tb2RlbFt0aGlzLmtleV0pXG4gIC8vICAgKSB7XG4gIC8vICAgICBpZiAoISF0aGlzLm1vZGVsW3RoaXMua2V5XSkge1xuICAvLyAgICAgICB0aGlzLm1vZGVsW3RoaXMua2V5XS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgLy8gICAgICAgICB0aGlzLl9kZWZhdWx0VmFsdWVzLnB1c2goaXRlbS52YWx1ZSk7XG4gIC8vICAgICAgIH0pO1xuICAvLyAgICAgfVxuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICB0aGlzLl9kZWZhdWx0VmFsdWVzID0gbnVsbDtcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWx1ZXM7XG4gIC8vIH1cblxuICBnZXRTZWxlY3RUZXh0KCkge1xuICAgIGxldCByZXN1bHQ6IHN0cmluZyA9IFwiXCI7XG4gICAgaWYgKHRoaXMudG8gJiYgdGhpcy50by5zZWxlY3RUeXBlKSB7XG4gICAgICBpZiAodGhpcy50by5zZWxlY3RUeXBlID09PSBcIm11bHRpcGxlXCIpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy50ZXh0TXVsdGlwbGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSB0aGlzLnRleHRTaW5nbGU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMudGV4dFNpbmdsZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNlbGVjdGVkQ2hhbmdlKGU6IGFueSkge1xuICAgIGxldCB2YWx1ZXM6IGFueVtdID0gW107XG4gICAgaWYgKHRoaXMudG8uc2VsZWN0VHlwZSAmJiB0aGlzLnRvLnNlbGVjdFR5cGUgPT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICBpZiAoZSAmJiBBcnJheS5pc0FycmF5KGUpKSB7XG4gICAgICAgIGUuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMudG8ub3B0aW9ucyAmJiBBcnJheS5pc0FycmF5KHRoaXMudG8ub3B0aW9ucykpIHtcbiAgICAgICAgICAgIHRoaXMudG8ub3B0aW9ucy5mb3JFYWNoKChvcHRpb25zOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmFsdWUgPT0gaXRlbSkge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKG9wdGlvbnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy50by5vcHRpb25zICYmIEFycmF5LmlzQXJyYXkodGhpcy50by5vcHRpb25zKSkge1xuICAgICAgICB0aGlzLnRvLm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMudmFsdWUgPT0gZSkge1xuICAgICAgICAgICAgdmFsdWVzID0gW29wdGlvbnNdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSh2YWx1ZXMpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG5cbiAgZ2V0IGNsZWFyKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdGhpcy50by5jbGVhciA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhdGhpcy50by5jbGVhcjtcbiAgfVxufVxuIl19