ngx-form-control
Version:
Form controls for angular 6
177 lines (176 loc) • 15.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, ViewChild } from '@angular/core';
import { NG_VALIDATORS, NG_VALUE_ACCESSOR, NgModel } from '@angular/forms';
import { BaseListControlComponent } from '../../utils/base-list-control.component';
var FormSelectComponent = /** @class */ (function (_super) {
tslib_1.__extends(FormSelectComponent, _super);
function FormSelectComponent() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(FormSelectComponent.prototype, "multiple", {
get: /**
* @return {?}
*/
function () {
return this._multiple;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._multiple = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FormSelectComponent.prototype, "isEmpty", {
get: /**
* @return {?}
*/
function () {
return !this._selectedIndexes ||
!this._selectedIndexes.length ||
(1 === this._selectedIndexes.length && -1 === this._selectedIndexes[0]);
},
enumerable: true,
configurable: true
});
Object.defineProperty(FormSelectComponent.prototype, "value", {
get: /**
* @return {?}
*/
function () {
var _this = this;
if (this.isEmpty) {
return null;
}
if (this._multiple) {
return this._selectedIndexes.map(function (index) { return _this._selectOptions[index].value; });
}
else {
/** @type {?} */
var index = this._selectedIndexes[0];
return this.selectOptions[index].value;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(FormSelectComponent.prototype, "invalid", {
get: /**
* @return {?}
*/
function () {
if (this.hasCustomError) {
return true;
}
if (!this.customSelect.touched) {
return false;
}
return this.customSelect.invalid || this.hasRequiredError;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FormSelectComponent.prototype, "valid", {
get: /**
* @return {?}
*/
function () {
if (this.hasCustomError) {
return false;
}
if (!this.customSelect.touched) {
return false;
}
return !this.customSelect.invalid && !this.hasRequiredError;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FormSelectComponent.prototype, "errorMessages", {
get: /**
* @return {?}
*/
function () {
if (this.hasRequiredError) {
return [this.requiredErrorMessage];
}
if (this.hasCustomError) {
return this.innerCustomErrorMessages;
}
},
enumerable: true,
configurable: true
});
/**
* @param {?} value
* @return {?}
*/
FormSelectComponent.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
if (!this.multiple) {
value = [value];
}
this._selectedIndexes = this.findIndexes(value);
};
/**
* @return {?}
*/
FormSelectComponent.prototype.validate = /**
* @return {?}
*/
function () {
/** @type {?} */
var result = this.customSelect.errors || {};
if (this.hasRequiredError) {
result['required'] = true;
}
else {
delete result['required'];
}
return result;
};
/**
* @return {?}
*/
FormSelectComponent.prototype.reset = /**
* @return {?}
*/
function () {
this.customSelect.reset();
};
FormSelectComponent.decorators = [
{ type: Component, args: [{
selector: 'ngx-form-select',
template: "<label *ngIf=\"label\" [for]=\"id\">{{label}}</label>\n\n<!--suppress HtmlFormInputWithoutLabel -->\n<select class=\"form-control\"\n [ngClass]=\"{'is-invalid': invalid, 'is-valid': valid}\"\n [id]=\"id\"\n [title]=\"title\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [(ngModel)]=\"selectedIndexes\"\n #customSelect=\"ngModel\"\n #customSelectElement>\n <option value=\"-1\" *ngIf=\"placeholder\">{{placeholder}}</option>\n <option *ngFor=\"let option of selectOptions; let index = index;\" [value]=\"index\">{{option.text}}</option>\n</select>\n\n<div class=\"valid-feedback\" *ngIf=\"valid && validMessage\">{{validMessage}}</div>\n\n<div class=\"invalid-feedback\" *ngIf=\"invalid\">\n <span *ngFor=\"let message of errorMessages; let last = last;\">\n {{message}}<br *ngIf=\"!last\">\n </span>\n</div>\n",
styles: [""],
providers: [
{ provide: NG_VALUE_ACCESSOR, useExisting: FormSelectComponent, multi: true },
{ provide: NG_VALIDATORS, useExisting: FormSelectComponent, multi: true }
]
},] },
];
FormSelectComponent.propDecorators = {
customSelect: [{ type: ViewChild, args: ['customSelect',] }],
customSelectElement: [{ type: ViewChild, args: ['customSelectElement',] }],
multiple: [{ type: Input }]
};
return FormSelectComponent;
}(BaseListControlComponent));
export { FormSelectComponent };
if (false) {
/** @type {?} */
FormSelectComponent.prototype.customSelect;
/** @type {?} */
FormSelectComponent.prototype.customSelectElement;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWZvcm0tY29udHJvbC8iLCJzb3VyY2VzIjpbImxpYi9mb3JtLXNlbGVjdC9mb3JtLXNlbGVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQzNGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDOztJQW1DeEMsK0NBQXdCOzs7O0lBSy9ELHNCQUFJLHlDQUFROzs7O1FBQVo7WUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN2Qjs7Ozs7UUFFRCxVQUFzQixLQUFjO1lBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ3hCOzs7T0FKQTtJQU1ELHNCQUFJLHdDQUFPOzs7O1FBQVg7WUFDRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO2dCQUMzQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNO2dCQUM3QixDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNFOzs7T0FBQTtJQUVELHNCQUFJLHNDQUFLOzs7O1FBQVQ7WUFBQSxpQkFXQztZQVZDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ2I7WUFFRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBaEMsQ0FBZ0MsQ0FBQyxDQUFDO2FBQzdFO1lBQUMsSUFBSSxDQUFDLENBQUM7O2dCQUNOLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDO2FBQ3hDO1NBQ0Y7OztPQUFBO0lBRUQsc0JBQUksd0NBQU87Ozs7UUFBWDtZQUNFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ2I7WUFFRCxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDL0IsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUNkO1lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUMzRDs7O09BQUE7SUFFRCxzQkFBSSxzQ0FBSzs7OztRQUFUO1lBQ0UsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDZDtZQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ2Q7WUFFRCxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUM3RDs7O09BQUE7SUFFRCxzQkFBSSw4Q0FBYTs7OztRQUFqQjtZQUNFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2FBQ3BDO1lBRUQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUM7YUFDdEM7U0FDRjs7O09BQUE7Ozs7O0lBRUQsd0NBQVU7Ozs7SUFBVixVQUFXLEtBQXVCO1FBQ2hDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDbkIsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakI7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNqRDs7OztJQUVELHNDQUFROzs7SUFBUjs7UUFDRSxJQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFFOUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUMxQixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQzNCO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMzQjtRQUVELE1BQU0sQ0FBQyxNQUFNLENBQUM7S0FDZjs7OztJQUVELG1DQUFLOzs7SUFBTDtRQUNFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7S0FDM0I7O2dCQXpIRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFLG81QkF3Qlg7b0JBQ0MsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUNaLFNBQVMsRUFBRTt3QkFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQzt3QkFDM0UsRUFBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO3FCQUN4RTtpQkFDRjs7OytCQUdFLFNBQVMsU0FBQyxjQUFjO3NDQUN4QixTQUFTLFNBQUMscUJBQXFCOzJCQU0vQixLQUFLOzs4QkE5Q1I7RUFxQ3lDLHdCQUF3QjtTQUFwRCxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIE5nTW9kZWwsIFZhbGlkYXRpb25FcnJvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtCYXNlTGlzdENvbnRyb2xDb21wb25lbnR9IGZyb20gJy4uLy4uL3V0aWxzL2Jhc2UtbGlzdC1jb250cm9sLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC1mb3JtLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGU6IGA8bGFiZWwgKm5nSWY9XCJsYWJlbFwiIFtmb3JdPVwiaWRcIj57e2xhYmVsfX08L2xhYmVsPlxyXG5cclxuPCEtLXN1cHByZXNzIEh0bWxGb3JtSW5wdXRXaXRob3V0TGFiZWwgLS0+XHJcbjxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6IGludmFsaWQsICdpcy12YWxpZCc6IHZhbGlkfVwiXHJcbiAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICBbdGl0bGVdPVwidGl0bGVcIlxyXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRJbmRleGVzXCJcclxuICAgICAgICAjY3VzdG9tU2VsZWN0PVwibmdNb2RlbFwiXHJcbiAgICAgICAgI2N1c3RvbVNlbGVjdEVsZW1lbnQ+XHJcbiAgPG9wdGlvbiB2YWx1ZT1cIi0xXCIgKm5nSWY9XCJwbGFjZWhvbGRlclwiPnt7cGxhY2Vob2xkZXJ9fTwvb3B0aW9uPlxyXG4gIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzZWxlY3RPcHRpb25zOyBsZXQgaW5kZXggPSBpbmRleDtcIiBbdmFsdWVdPVwiaW5kZXhcIj57e29wdGlvbi50ZXh0fX08L29wdGlvbj5cclxuPC9zZWxlY3Q+XHJcblxyXG48ZGl2IGNsYXNzPVwidmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInZhbGlkICYmIHZhbGlkTWVzc2FnZVwiPnt7dmFsaWRNZXNzYWdlfX08L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJpbnZhbGlkXCI+XHJcbiAgPHNwYW4gKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgZXJyb3JNZXNzYWdlczsgbGV0IGxhc3QgPSBsYXN0O1wiPlxyXG4gICAge3ttZXNzYWdlfX08YnIgKm5nSWY9XCIhbGFzdFwiPlxyXG4gIDwvc3Bhbj5cclxuPC9kaXY+XHJcbmAsXHJcbiAgc3R5bGVzOiBbYGBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRm9ybVNlbGVjdENvbXBvbmVudCwgbXVsdGk6IHRydWV9LFxyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBGb3JtU2VsZWN0Q29tcG9uZW50LCBtdWx0aTogdHJ1ZX1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUxpc3RDb250cm9sQ29tcG9uZW50IHtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY3VzdG9tU2VsZWN0JykgY3VzdG9tU2VsZWN0OiBOZ01vZGVsO1xyXG4gIEBWaWV3Q2hpbGQoJ2N1c3RvbVNlbGVjdEVsZW1lbnQnKSBjdXN0b21TZWxlY3RFbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICBnZXQgbXVsdGlwbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgbXVsdGlwbGUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX211bHRpcGxlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNFbXB0eSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5fc2VsZWN0ZWRJbmRleGVzIHx8XHJcbiAgICAgICF0aGlzLl9zZWxlY3RlZEluZGV4ZXMubGVuZ3RoIHx8XHJcbiAgICAgICgxID09PSB0aGlzLl9zZWxlY3RlZEluZGV4ZXMubGVuZ3RoICYmIC0xID09PSB0aGlzLl9zZWxlY3RlZEluZGV4ZXNbMF0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pc0VtcHR5KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9tdWx0aXBsZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleGVzLm1hcChpbmRleCA9PiB0aGlzLl9zZWxlY3RPcHRpb25zW2luZGV4XS52YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuX3NlbGVjdGVkSW5kZXhlc1swXTtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0T3B0aW9uc1tpbmRleF0udmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmhhc0N1c3RvbUVycm9yKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5jdXN0b21TZWxlY3QudG91Y2hlZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tU2VsZWN0LmludmFsaWQgfHwgdGhpcy5oYXNSZXF1aXJlZEVycm9yO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuaGFzQ3VzdG9tRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5jdXN0b21TZWxlY3QudG91Y2hlZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICF0aGlzLmN1c3RvbVNlbGVjdC5pbnZhbGlkICYmICF0aGlzLmhhc1JlcXVpcmVkRXJyb3I7XHJcbiAgfVxyXG5cclxuICBnZXQgZXJyb3JNZXNzYWdlcygpOiBBcnJheTxzdHJpbmc+IHtcclxuICAgIGlmICh0aGlzLmhhc1JlcXVpcmVkRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIFt0aGlzLnJlcXVpcmVkRXJyb3JNZXNzYWdlXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5oYXNDdXN0b21FcnJvcikge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbm5lckN1c3RvbUVycm9yTWVzc2FnZXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkgfCBBcnJheTxhbnk+KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdmFsdWUgPSBbdmFsdWVdO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3NlbGVjdGVkSW5kZXhlcyA9IHRoaXMuZmluZEluZGV4ZXModmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB7XHJcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmN1c3RvbVNlbGVjdC5lcnJvcnMgfHwge307XHJcblxyXG4gICAgaWYgKHRoaXMuaGFzUmVxdWlyZWRFcnJvcikge1xyXG4gICAgICByZXN1bHRbJ3JlcXVpcmVkJ10gPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVsZXRlIHJlc3VsdFsncmVxdWlyZWQnXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLmN1c3RvbVNlbGVjdC5yZXNldCgpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19