@bi8/am-dyn-form
Version:
ng update @angular/cli yarn add @angular/cli
142 lines • 18.6 kB
JavaScript
import * as tslib_1 from "tslib";
import { FormControl, Validators } from "@angular/forms";
var DynFormControl = /** @class */ (function (_super) {
tslib_1.__extends(DynFormControl, _super);
function DynFormControl(options, validator, asyncValidator) {
var e_1, _a;
if (options === void 0) { options = {}; }
var _this = _super.call(this, options.defaultValue != undefined ? options.defaultValue : null, validator, asyncValidator) || this;
_this.config = {};
_this.key = options.key || '';
if (options) {
_this.config.required = options.required != undefined ? options.required : false;
_this.config.hint = options.hint;
_this.config.placeholder = options.placeholder;
_this.config.dir = options.dir || 'ltr';
_this.config.messages = options.messages || [];
_this.config.useDefaultErrorMessages = options.useDefaultErrorMessages || false;
_this.config.loadFn = options.loadFn || null;
_this.config.disable = options.disable || false;
_this.config.appearance = options.appearance || 'standard';
_this.config.compact = options.compact === undefined ? true : options.compact;
if (_this.config.loadFn) {
_this.loadValue(options.defaultValue, _this.config.loadFn, { onlySelf: true });
}
if (_this.config.disable) {
_this.disable({ onlySelf: true });
}
if (validator) {
if (validator instanceof Array) {
try {
for (var validator_1 = tslib_1.__values(validator), validator_1_1 = validator_1.next(); !validator_1_1.done; validator_1_1 = validator_1.next()) {
var v = validator_1_1.value;
if (v == Validators.required) {
_this.config.required = true;
break;
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (validator_1_1 && !validator_1_1.done && (_a = validator_1.return)) _a.call(validator_1);
}
finally { if (e_1) throw e_1.error; }
}
}
else if (validator == Validators.required) {
_this.config.required = true;
}
}
}
return _this;
}
DynFormControl.prototype.removeRequired = function () {
this.config.required = false;
this.removeValidator(Validators.required);
this.updateValueAndValidity();
};
DynFormControl.prototype.addRequired = function () {
this.config.required = true;
this.setValidator(Validators.required);
this.updateValueAndValidity();
};
DynFormControl.prototype.isRequired = function () {
return this.isValidator(Validators.required);
};
DynFormControl.prototype.isValidator = function (validator) {
if (!this.validator) {
return false;
}
if (this.validator instanceof Array) {
return this.validator.find(function (v) { return v == validator; }) != undefined;
}
else {
return this.validator = validator;
}
};
DynFormControl.prototype.setValidator = function (validator) {
if (!this.isValidator(validator)) {
if (this.validator instanceof Array) {
return this.validator.push(validator);
}
else {
return this.validator = validator;
}
}
};
DynFormControl.prototype.removeValidator = function (validator) {
if (this.isValidator(validator)) {
if (this.validator instanceof Array) {
this.setValidators(this.validator.filter(function (v) { return v != validator; }));
}
else {
this.setValidators([]);
}
}
};
DynFormControl.prototype.setLogicalError = function (message) {
this.logicalErrorMessage = message;
this.markAsTouched();
var errors = this.errors;
if (!errors) {
errors = {};
}
errors.logical = true;
this.setErrors(errors);
};
DynFormControl.prototype.clearLogicalError = function () {
this.logicalErrorMessage = null;
if (this.errors) {
this.errors.logical = false;
this.setErrors(this.errors);
}
};
DynFormControl.prototype.activateValidators = function () {
};
DynFormControl.prototype.setValue = function (value, options) {
var _this = this;
if (options && options.loadFn) {
options.loadFn(value).subscribe(function (result) {
_super.prototype.setValue.call(_this, result, options);
});
}
else {
if (value == null) {
_super.prototype.setValue.call(this, '', options);
}
else {
_super.prototype.setValue.call(this, value, options);
}
}
};
DynFormControl.prototype.loadValue = function (param, loadFn, options) {
var _this = this;
loadFn(param).subscribe(function (result) {
_super.prototype.setValue.call(_this, result, options);
});
};
return DynFormControl;
}(FormControl));
export { DynFormControl };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluLWZvcm0tY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BiaTgvYW0tZHluLWZvcm0vIiwic291cmNlcyI6WyJhcHAvbW9kdWxlcy9hbS1keW4tZm9ybS9keW4tZm9ybS1jb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFpQyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQVN0RjtJQUE2QywwQ0FBVztJQVV0RCx3QkFBWSxPQWNOLEVBQUUsU0FBOEMsRUFBRSxjQUE2RDs7UUFkekcsd0JBQUEsRUFBQSxZQWNOO1FBZE4sWUFlRSxrQkFBTSxPQUFPLENBQUMsWUFBWSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxjQUFjLENBQUMsU0FtQ2xHO1FBeERELFlBQU0sR0FBUSxFQUFFLENBQUM7UUFzQmYsS0FBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLE9BQU8sRUFBQztZQUNWLEtBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDaEYsS0FBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQyxLQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO1lBQzlDLEtBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDO1lBQ3ZDLEtBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1lBQzlDLEtBQUksQ0FBQyxNQUFN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TSxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsMkNBQWtCLEdBQWxCO0lBQ0EsQ0FBQztJQUVELGlDQUFRLEdBQVIsVUFBUyxLQUFVLEVBQUUsT0FNcEI7UUFORCxpQkFtQkM7UUFYQyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFDO1lBQzVCLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQUMsTUFBTTtnQkFDckMsaUJBQU0sUUFBUSxhQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7Z0JBQ2pCLGlCQUFNLFFBQVEsWUFBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0wsaUJBQU0sUUFBUSxZQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQzthQUNoQztTQUNGO0lBQ0gsQ0FBQztJQUVELGtDQUFTLEdBQVQsVUFBVSxLQUFVLEVBQUUsTUFBMEIsRUFBRSxPQUtqRDtRQUxELGlCQVNDO1FBSEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFDLE1BQU07WUFDN0IsaUJBQU0sUUFBUSxhQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDSCxxQkFBQztBQUFELENBQUMsQUFwS0QsQ0FBNkMsV0FBVyxHQW9LdkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Zvcm1Db250cm9sLCBWYWxpZGF0b3JGbiwgQXN5bmNWYWxpZGF0b3JGbiwgVmFsaWRhdG9yc30gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGVyRm48QSwgVD4ge1xyXG4gICh2YWx1ZTogQSkgOiBPYnNlcnZhYmxlPFQ+XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERZTl9GSUVMRF9BUFBFQVJBTkNFID0gJ2xlZ2FjeScgfCAnc3RhbmRhcmQnIHwgJ2ZpbGwnIHwgJ291dGxpbmUnXHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRHluRm9ybUNvbnRyb2wgZXh0ZW5kcyBGb3JtQ29udHJvbCB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIHBhdGg6IHN0cmluZztcclxuICBjb25maWc6IGFueSA9IHt9O1xyXG5cclxuICBsb2dpY2FsRXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcblxyXG4gIHZDYWNoZTogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiB7XHJcbiAgICBkZWZhdWx0VmFsdWU/OiBhbnksXHJcbiAgICBrZXk/OiBzdHJpbmcsICAgICAgICAgICAvLyB0aGUga2V5IG9mIHRoaXMgZmllbGQgKHVzZWQgYXMgcmVmZXJlbmNlIGFuZCB0byBsb29rdXAgbGFuZ3VhZ2UgbGFiZWxzLCBldGMpXHJcbiAgICByZXF1aXJlZD86IGJvb2xlYW4sICAgICAvLyBpZiB0aGlzIGZpZWxkIGlzIHJlcXVpcmVkIG9yIG5vdFxyXG4gICAgZGlyPyA6IHN0cmluZywgICAgICAgICAgLy8gdGhlIGZpZWxkIGRpcmVjdGlvbiAocnRsLCBsdHIpXHJcbiAgICBoaW50PyA6IHN0cmluZyxcclxuICAgIHBsYWNlaG9sZGVyPyA6IHN0cmluZyxcclxuICAgIG1lc3NhZ2VzPyA6IGFueVtdLFxyXG4gICAgdXNlRGVmYXVsdEVycm9yTWVzc2FnZXM/OiBib29sZWFuLFxyXG4gICAgbG9hZEZuPzogTG9hZGVyRm48YW55LCBhbnk+LFxyXG4gICAgZGlzYWJsZT86IGJvb2xlYW4sXHJcbiAgICBhcHBlYXJhbmNlPzogRFlOX0ZJRUxEX0FQUEVBUkFOQ0VcclxuICAgIGNvbXBhY3Q/OiBib29sZWFuXHJcblxyXG4gIH0gPSB7fSwgdmFsaWRhdG9yPzogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdIHwgbnVsbCwgYXN5bmNWYWxpZGF0b3I/OiBBc3luY1ZhbGlkYXRvckZuIHwgQXN5bmNWYWxpZGF0b3JGbltdIHwgbnVsbCkge1xyXG4gICAgc3VwZXIob3B0aW9ucy5kZWZhdWx0VmFsdWUgIT0gdW5kZWZpbmVkID8gb3B0aW9ucy5kZWZhdWx0VmFsdWUgOiBudWxsLCB2YWxpZGF0b3IsIGFzeW5jVmFsaWRhdG9yKTtcclxuICAgIHRoaXMua2V5ID0gb3B0aW9ucy5rZXkgfHwgJyc7XHJcbiAgICBpZiAob3B0aW9ucyl7XHJcbiAgICAgIHRoaXMuY29uZmlnLnJlcXVpcmVkID0gb3B0aW9ucy5yZXF1aXJlZCAhPSB1bmRlZmluZWQgPyBvcHRpb25zLnJlcXVpcmVkIDogZmFsc2U7XHJcbiAgICAgIHRoaXMuY29uZmlnLmhpbnQgPSBvcHRpb25zLmhpbnQ7XHJcbiAgICAgIHRoaXMuY29uZmlnLnBsYWNlaG9sZGVyID0gb3B0aW9ucy5wbGFjZWhvbGRlcjtcclxuICAgICAgdGhpcy5jb25maWcuZGlyID0gb3B0aW9ucy5kaXIgfHwgJ2x0cic7XHJcbiAgICAgIHRoaXMuY29uZmlnLm1lc3NhZ2VzID0gb3B0aW9ucy5tZXNzYWdlcyB8fCBbXTtcclxuICAgICAgdGhpcy5jb25maWcudXNlRGVmYXVsdEVycm9yTWVzc2FnZXMgPSBvcHRpb25zLnVzZURlZmF1bHRFcnJvck1lc3NhZ2VzIHx8IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbmZpZy5sb2FkRm4gPSBvcHRpb25zLmxvYWRGbiB8fCBudWxsO1xyXG4gICAgICB0aGlzLmNvbmZpZy5kaXNhYmxlID0gb3B0aW9ucy5kaXNhYmxlIHx8IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbmZpZy5hcHBlYXJhbmNlID0gb3B0aW9ucy5hcHBlYXJhbmNlIHx8ICdzdGFuZGFyZCc7XHJcbiAgICAgIHRoaXMuY29uZmlnLmNvbXBhY3QgPSBvcHRpb25zLmNvbXBhY3QgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBvcHRpb25zLmNvbXBhY3Q7XHJcblxyXG4gICAgICBpZiAodGhpcy5jb25maWcubG9hZEZuKXtcclxuICAgICAgICB0aGlzLmxvYWRWYWx1ZShvcHRpb25zLmRlZmF1bHRWYWx1ZSwgdGhpcy5jb25maWcubG9hZEZuLCB7b25seVNlbGY6IHRydWV9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuY29uZmlnLmRpc2FibGUpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZSh7b25seVNlbGY6IHRydWV9KVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodmFsaWRhdG9yKXtcclxuICAgICAgICBpZiAodmFsaWRhdG9yIGluc3RhbmNlb2YgQXJyYXkpe1xyXG4gICAgICAgICAgZm9yIChsZXQgdiBvZiB2YWxpZGF0b3Ipe1xyXG4gICAgICAgICAgICBpZiAodiA9PSBWYWxpZGF0b3JzLnJlcXVpcmVkKXtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5yZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHZhbGlkYXRvciA9PSBWYWxpZGF0b3JzLnJlcXVpcmVkKXtcclxuICAgICAgICAgIHRoaXMuY29uZmlnLnJlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZVJlcXVpcmVkKCl7XHJcbiAgICB0aGlzLmNvbmZpZy5yZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZW1vdmVWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIGFkZFJlcXVpcmVkKCl7XHJcbiAgICB0aGlzLmNvbmZpZy5yZXF1aXJlZCA9IHRydWU7XHJcbiAgICB0aGlzLnNldFZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgaXNSZXF1aXJlZCgpe1xyXG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgfVxyXG5cclxuICBpc1ZhbGlkYXRvcih2YWxpZGF0b3I6IFZhbGlkYXRvckZuKXtcclxuICAgIGlmICghdGhpcy52YWxpZGF0b3Ipe1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudmFsaWRhdG9yIGluc3RhbmNlb2YgQXJyYXkpe1xyXG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0b3IuZmluZCh2ID0+IHYgPT0gdmFsaWRhdG9yKSAhPSB1bmRlZmluZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0b3IgPSB2YWxpZGF0b3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRWYWxpZGF0b3IodmFsaWRhdG9yOiBWYWxpZGF0b3JGbil7XHJcbiAgICBpZiAoIXRoaXMuaXNWYWxpZGF0b3IodmFsaWRhdG9yKSl7XHJcbiAgICAgIGlmICh0aGlzLnZhbGlkYXRvciBpbnN0YW5jZW9mIEFycmF5KXtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0b3IucHVzaCh2YWxpZGF0b3IpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRvciA9IHZhbGlkYXRvcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlVmFsaWRhdG9yKHZhbGlkYXRvcjogVmFsaWRhdG9yRm4pe1xyXG4gICAgaWYgKHRoaXMuaXNWYWxpZGF0b3IodmFsaWRhdG9yKSl7XHJcbiAgICAgIGlmICh0aGlzLnZhbGlkYXRvciBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdG9yLmZpbHRlcih2ID0+IHYgIT0gdmFsaWRhdG9yKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKFtdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TG9naWNhbEVycm9yKG1lc3NhZ2U6IHN0cmluZyl7XHJcbiAgICB0aGlzLmxvZ2ljYWxFcnJvck1lc3NhZ2UgPSBtZXNzYWdlO1xyXG4gICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcblxyXG4gICAgbGV0IGVycm9ycyA9IHRoaXMuZXJyb3JzO1xyXG4gICAgaWYgKCFlcnJvcnMpe1xyXG4gICAgICBlcnJvcnMgPSB7fVxyXG4gICAgfVxyXG4gICAgZXJyb3JzLmxvZ2ljYWwgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXRFcnJvcnMoZXJyb3JzKTtcclxuICB9XHJcblxyXG4gIGNsZWFyTG9naWNhbEVycm9yKCl7XHJcbiAgICB0aGlzLmxvZ2ljYWxFcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuZXJyb3JzKXtcclxuICAgICAgdGhpcy5lcnJvcnMubG9naWNhbCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNldEVycm9ycyh0aGlzLmVycm9ycyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZVZhbGlkYXRvcnMoKXtcclxuICB9XHJcblxyXG4gIHNldFZhbHVlKHZhbHVlOiBhbnksIG9wdGlvbnM/OiB7XHJcbiAgICBvbmx5U2VsZj86IGJvb2xlYW47XHJcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xyXG4gICAgZW1pdE1vZGVsVG9WaWV3Q2hhbmdlPzogYm9vbGVhbjtcclxuICAgIGVtaXRWaWV3VG9Nb2RlbENoYW5nZT86IGJvb2xlYW47XHJcbiAgICBsb2FkRm4/OiBMb2FkZXJGbjxhbnksIGFueT47XHJcbiAgfSkgOiB2b2lkIHtcclxuXHJcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmxvYWRGbil7XHJcbiAgICAgIG9wdGlvbnMubG9hZEZuKHZhbHVlKS5zdWJzY3JpYmUoKHJlc3VsdCk9PntcclxuICAgICAgICBzdXBlci5zZXRWYWx1ZShyZXN1bHQsIG9wdGlvbnMpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgc3VwZXIuc2V0VmFsdWUoJycsIG9wdGlvbnMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN1cGVyLnNldFZhbHVlKHZhbHVlLCBvcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZFZhbHVlKHBhcmFtOiBhbnksIGxvYWRGbjogTG9hZGVyRm48YW55LCBhbnk+LCBvcHRpb25zPzoge1xyXG4gICAgb25seVNlbGY/OiBib29sZWFuO1xyXG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcclxuICAgIGVtaXRNb2RlbFRvVmlld0NoYW5nZT86IGJvb2xlYW47XHJcbiAgICBlbWl0Vmlld1RvTW9kZWxDaGFuZ2U/OiBib29sZWFuO1xyXG4gIH0pe1xyXG4gICAgbG9hZEZuKHBhcmFtKS5zdWJzY3JpYmUoKHJlc3VsdCk9PntcclxuICAgICAgc3VwZXIuc2V0VmFsdWUocmVzdWx0LCBvcHRpb25zKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=