UNPKG

@kre-form/ant

Version:

252 lines 19.6 kB
/** * @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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGtyZS1mb3JtL2FudC8iLCJzb3VyY2VzIjpbImxpYi90eXBlcy9zZWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQztJQTZDd0MsOENBQVM7SUE3Q2pEO1FBQUEscUVBaUtDO1FBbkhDLG1CQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLG9CQUFjLEdBQWEsRUFBRSxDQUFDO1FBQzlCLGdCQUFVLEdBQUcsU0FBUyxDQUFDOztJQWlIekIsQ0FBQztJQTlHQyxzQkFBSSw2Q0FBYTs7OztRQUFqQjtZQUNFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO2dCQUNyQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7YUFDM0I7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQzFCO1FBQ0gsQ0FBQzs7Ozs7UUFFRCxVQUFrQixLQUFVLElBQUcsQ0FBQzs7O09BRi9CO0lBSUQsc0JBQUksNENBQVk7Ozs7UUFBaEI7WUFDRSxJQUNFLElBQUksQ0FBQyxLQUFLO2dCQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDcEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDL0I7Z0JBQ0EsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7YUFDcEQ7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUM1QixDQUFDOzs7T0FBQTtJQUNELHNCQUFJLDZDQUFhOzs7O1FBQWpCO1lBQUEsaUJBY0M7WUFiQyxJQUNFLElBQUksQ0FBQyxLQUFLO2dCQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDcEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNuQztnQkFDQSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU87Ozs7Z0JBQUMsVUFBQyxJQUFTO29CQUNyQyxLQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZDLENBQUMsRUFBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUM3QixDQUFDOzs7T0FBQTtJQUVELHdCQUF3QjtJQUN4QixnQ0FBZ0M7SUFDaEMsZ0NBQWdDO0lBQ2hDLGFBQWE7SUFDYixzQ0FBc0M7SUFDdEMsTUFBTTtJQUNOLFNBQVM7SUFDVCxvQkFBb0I7SUFDcEIsOEJBQThCO0lBQzlCLDZDQUE2QztJQUM3Qyx1Q0FBdUM7SUFDdkMsUUFBUTtJQUNSLG9DQUFvQztJQUNwQyxzREFBc0Q7SUFDdEQsZ0RBQWdEO0lBQ2hELFlBQVk7SUFDWixRQUFRO0lBQ1IsYUFBYTtJQUNiLGtDQUFrQztJQUNsQyxNQUFNO0lBQ04sZ0NBQWdDO0lBQ2hDLElBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRUosMENBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQWI7O1lBQ00sTUFBTSxHQUFXLEVBQUU7UUFDdkIsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO2dCQUNyQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQzthQUM1QjtpQkFBTTtnQkFDTCxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUMxQjtTQUNGO2FBQU07WUFDTCxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUMxQjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Ozs7O0lBRUQsMkNBQWM7Ozs7SUFBZCxVQUFlLENBQU07UUFBckIsaUJBeUJDOztZQXhCSyxNQUFNLEdBQVUsRUFBRTtRQUN0QixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxJQUFJLFVBQVUsRUFBRTtZQUMxRCxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN6QixDQUFDLENBQUMsT0FBTzs7OztnQkFBQyxVQUFDLElBQVM7b0JBQ2xCLElBQUksS0FBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUNyRCxLQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7O3dCQUFDLFVBQUMsT0FBWTs0QkFDbkMsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtnQ0FDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzs2QkFDdEI7d0JBQ0gsQ0FBQyxFQUFDLENBQUM7cUJBQ0o7Z0JBQ0gsQ0FBQyxFQUFDLENBQUM7YUFDSjtTQUNGO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDckQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTzs7OztnQkFBQyxVQUFDLE9BQVk7b0JBQ25DLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUU7d0JBQ3RCLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUNwQjtnQkFDSCxDQUFDLEVBQUMsQ0FBQzthQUNKO1NBQ0Y7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxzQkFBSSxxQ0FBSzs7OztRQUFUO1lBQ0UsSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLFdBQVcsRUFBRTtnQkFDeEMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ3pCLENBQUM7OztPQUFBOztnQkFoS0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRSxteUNBd0NUO2lCQUVGOztJQXFIRCx5QkFBQztDQUFBLEFBaktELENBNkN3QyxTQUFTLEdBb0hoRDtTQXBIWSxrQkFBa0I7OztJQUM3QiwyQ0FBMkI7O0lBQzNCLDRDQUE4Qjs7SUFDOUIsd0NBQXVCOztJQUN2QixpREFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTUFUX0hBTU1FUl9PUFRJT05TIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gXCJAa3JlLWZvcm0vY29yZVwiO1xuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwia3JlZmllbGQtc2VsZWN0XCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1TdGF0dXMgIT09IDA7IGVsc2Ugb3RoZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sLWRlc2lnblwiPlxuICAgICAgICA8aW5wdXQgbnotaW5wdXQgZGlzYWJsZWQgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNvdGhlcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0b3IgPT09IHRydWVcIj5cbiAgICAgICAgPG56LXNlbGVjdFxuICAgICAgICAgIFtuekFsbG93Q2xlYXJdPVwiIXRvLnJlcXVpcmVkICYmIGNsZWFyXCJcbiAgICAgICAgICBbbnpNb2RlXT1cInRvLnNlbGVjdFR5cGUgPT09ICdtdWx0aXBsZScgPyAnbXVsdGlwbGUnIDogJ2RlZmF1bHQnXCJcbiAgICAgICAgICBba3JlRm9ybUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cInNob3dFcnJvclwiXG4gICAgICAgICAgW256UGxhY2VIb2xkZXJdPVwicGxhY2VIb2xkZXJcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2V0TW9kZWxWYWx1ZVwiXG4gICAgICAgICAgbnpTaG93U2VhcmNoPVwidHJ1ZVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHRvLm9wdGlvbnNcIj5cbiAgICAgICAgICAgIDxuei1vcHRpb25cbiAgICAgICAgICAgICAgW256TGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgIFtuelZhbHVlXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgPjwvbnotb3B0aW9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L256LXNlbGVjdD5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidGlwc1wiPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cImljb24tYmFuZ3podVwiXG4gICAgICAgICAgICBbbnpUb29sdGlwVGl0bGVdPVwidGlwc1wiXG4gICAgICAgICAgICBuelRvb2x0aXBQbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgICAgbnotdG9vbHRpcFxuICAgICAgICAgICAgKm5nSWY9XCJ0aXBzICE9ICcnXCJcbiAgICAgICAgICA+PC9pPlxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZHRleHRcIiAqbmdJZj1cImVkaXRvciA9PT0gZmFsc2VcIj5cbiAgICAgICAge3sgZ2V0U2VsZWN0VGV4dCgpIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxuICAvL2NoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBLcmVGb3JtRmllbGRTZWxlY3QgZXh0ZW5kcyBGaWVsZFR5cGUge1xuICBfZGVmYXVsdFZhbHVlOiBzdHJpbmcgPSBcIlwiO1xuICBfZGVmYXVsdFZhbHVlczogc3RyaW5nW10gPSBbXTtcbiAgc2VsZWN0VHlwZSA9IFwiZGVmYXVsdFwiO1xuICBsaXN0T2ZTZWxlY3RlZFZhbHVlOiBhbnk7XG5cbiAgZ2V0IGdldE1vZGVsVmFsdWUoKSB7XG4gICAgaWYgKHRoaXMudG8uc2VsZWN0VHlwZSA9PT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWZhdWx0VmFsdWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWZhdWx0VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgc2V0IGdldE1vZGVsVmFsdWUodmFsdWU6IGFueSkge31cblxuICBnZXQgZGVmYXVsdFZhbHVlKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubW9kZWwgJiZcbiAgICAgIHRoaXMubW9kZWxbdGhpcy5rZXldICYmXG4gICAgICBBcnJheS5pc0FycmF5KHRoaXMubW9kZWxbdGhpcy5rZXldKSAmJlxuICAgICAgdGhpcy5tb2RlbFt0aGlzLmtleV0ubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gdGhpcy5tb2RlbFt0aGlzLmtleV1bMF0udmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFZhbHVlO1xuICB9XG4gIGdldCBkZWZhdWx0VmFsdWVzKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubW9kZWwgJiZcbiAgICAgIHRoaXMubW9kZWxbdGhpcy5rZXldICYmXG4gICAgICBBcnJheS5pc0FycmF5KHRoaXMubW9kZWxbdGhpcy5rZXldKVxuICAgICkge1xuICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlcy5sZW5ndGggPSAwO1xuICAgICAgdGhpcy5tb2RlbFt0aGlzLmtleV0uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZXMucHVzaChpdGVtLnZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWx1ZXM7XG4gIH1cblxuICAvLyBnZXQgZGVmYXVsdFZhbHVlcygpIHtcbiAgLy8gICBpZiAoIXRoaXMuX2RlZmF1bHRWYWx1ZXMpIHtcbiAgLy8gICAgIHRoaXMuX2RlZmF1bHRWYWx1ZXMgPSBbXTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgdGhpcy5fZGVmYXVsdFZhbHVlcy5sZW5ndGggPSAwO1xuICAvLyAgIH1cbiAgLy8gICBpZiAoXG4gIC8vICAgICB0aGlzLm1vZGVsICYmXG4gIC8vICAgICB0aGlzLm1vZGVsW3RoaXMua2V5XSAmJlxuICAvLyAgICAgQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsW3RoaXMua2V5XSkgJiZcbiAgLy8gICAgICFfLmlzRW1wdHkodGhpcy5tb2RlbFt0aGlzLmtleV0pXG4gIC8vICAgKSB7XG4gIC8vICAgICBpZiAoISF0aGlzLm1vZGVsW3RoaXMua2V5XSkge1xuICAvLyAgICAgICB0aGlzLm1vZGVsW3RoaXMua2V5XS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgLy8gICAgICAgICB0aGlzLl9kZWZhdWx0VmFsdWVzLnB1c2goaXRlbS52YWx1ZSk7XG4gIC8vICAgICAgIH0pO1xuICAvLyAgICAgfVxuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICB0aGlzLl9kZWZhdWx0VmFsdWVzID0gbnVsbDtcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWx1ZXM7XG4gIC8vIH1cblxuICBnZXRTZWxlY3RUZXh0KCkge1xuICAgIGxldCByZXN1bHQ6IHN0cmluZyA9IFwiXCI7XG4gICAgaWYgKHRoaXMudG8gJiYgdGhpcy50by5zZWxlY3RUeXBlKSB7XG4gICAgICBpZiAodGhpcy50by5zZWxlY3RUeXBlID09PSBcIm11bHRpcGxlXCIpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy50ZXh0TXVsdGlwbGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSB0aGlzLnRleHRTaW5nbGU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMudGV4dFNpbmdsZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNlbGVjdGVkQ2hhbmdlKGU6IGFueSkge1xuICAgIGxldCB2YWx1ZXM6IGFueVtdID0gW107XG4gICAgaWYgKHRoaXMudG8uc2VsZWN0VHlwZSAmJiB0aGlzLnRvLnNlbGVjdFR5cGUgPT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICBpZiAoZSAmJiBBcnJheS5pc0FycmF5KGUpKSB7XG4gICAgICAgIGUuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMudG8ub3B0aW9ucyAmJiBBcnJheS5pc0FycmF5KHRoaXMudG8ub3B0aW9ucykpIHtcbiAgICAgICAgICAgIHRoaXMudG8ub3B0aW9ucy5mb3JFYWNoKChvcHRpb25zOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmFsdWUgPT0gaXRlbSkge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKG9wdGlvbnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy50by5vcHRpb25zICYmIEFycmF5LmlzQXJyYXkodGhpcy50by5vcHRpb25zKSkge1xuICAgICAgICB0aGlzLnRvLm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMudmFsdWUgPT0gZSkge1xuICAgICAgICAgICAgdmFsdWVzID0gW29wdGlvbnNdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSh2YWx1ZXMpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG5cbiAgZ2V0IGNsZWFyKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdGhpcy50by5jbGVhciA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhdGhpcy50by5jbGVhcjtcbiAgfVxufVxuIl19