@ng-dynamic-forms/core
Version:
A rapid form development library for Angular
100 lines • 13.9 kB
JavaScript
import { __decorate } from "tslib";
import { DynamicInputControlModel } from "../dynamic-input-control.model";
import { serializable } from "../../decorator/serializable.decorator";
import { isBoolean, isNumber } from "../../utils/core.utils";
import { isObservable, of } from "rxjs";
import { tap } from "rxjs/operators";
import { initialConfig } from "ngx-mask";
export const DYNAMIC_FORM_CONTROL_TYPE_INPUT = "INPUT";
export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_COLOR = "color";
export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_DATE = "date";
// export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_DATETIME = "datetime";
export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_DATETIME_LOCAL = "datetime-local";
export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_EMAIL = "email";
export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_FILE = "file";
export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_MONTH = "month";
export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_NUMBER = "number";
export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_PASSWORD = "password";
export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_RANGE = "range";
export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_SEARCH = "search";
export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_TEL = "tel";
export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_TEXT = "text";
export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_TIME = "time";
export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_URL = "url";
export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_WEEK = "week";
export class DynamicInputModel extends DynamicInputControlModel {
constructor(config, layout) {
super(config, layout);
this.files = null;
this.list$ = null;
this._list = null;
this._listId = null;
this.type = DYNAMIC_FORM_CONTROL_TYPE_INPUT;
this.accept = config.accept ?? null;
this.inputType = config.inputType ?? DYNAMIC_FORM_CONTROL_INPUT_TYPE_TEXT;
this.mask = config.mask ?? "";
this.maskConfig = config.maskConfig ? { ...initialConfig, ...config.maskConfig } : initialConfig;
this.max = config.max !== undefined ? config.max : null;
this.min = config.min !== undefined ? config.min : null;
this.multiple = isBoolean(config.multiple) ? config.multiple : null;
this.pattern = config.pattern ?? null;
this.step = isNumber(config.step) ? config.step : null;
if (config.list !== undefined) {
this.list = config.list;
this._listId = `${this.id}List`;
}
}
get listId() {
return this._listId;
}
get hasList() {
return isObservable(this.list$);
}
set list(list) {
if (Array.isArray(list)) {
this._list = list;
this.list$ = of(this._list);
}
else if (isObservable(list)) {
this.list$ = list.pipe(tap(_list => this._list = _list));
}
else {
this._list = null;
this.list$ = null;
}
}
}
__decorate([
serializable()
], DynamicInputModel.prototype, "accept", void 0);
__decorate([
serializable()
], DynamicInputModel.prototype, "inputType", void 0);
__decorate([
serializable()
], DynamicInputModel.prototype, "mask", void 0);
__decorate([
serializable()
], DynamicInputModel.prototype, "maskConfig", void 0);
__decorate([
serializable()
], DynamicInputModel.prototype, "max", void 0);
__decorate([
serializable()
], DynamicInputModel.prototype, "min", void 0);
__decorate([
serializable()
], DynamicInputModel.prototype, "multiple", void 0);
__decorate([
serializable()
], DynamicInputModel.prototype, "pattern", void 0);
__decorate([
serializable()
], DynamicInputModel.prototype, "step", void 0);
__decorate([
serializable("list")
], DynamicInputModel.prototype, "_list", void 0);
__decorate([
serializable()
], DynamicInputModel.prototype, "type", void 0);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1pbnB1dC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWR5bmFtaWMtZm9ybXMvY29yZS9zcmMvbGliL21vZGVsL2lucHV0L2R5bmFtaWMtaW5wdXQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBa0MsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUxRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQWMsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFXLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsRCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxPQUFPLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsT0FBTyxDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLE1BQU0sQ0FBQztBQUMzRCxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLE1BQU0sOENBQThDLEdBQUcsZ0JBQWdCLENBQUM7QUFDL0UsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsT0FBTyxDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLE1BQU0sQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxPQUFPLENBQUM7QUFDN0QsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsUUFBUSxDQUFDO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLFVBQVUsQ0FBQztBQUNuRSxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxPQUFPLENBQUM7QUFDN0QsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsUUFBUSxDQUFDO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFHLEtBQUssQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxNQUFNLENBQUM7QUFDM0QsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsTUFBTSxDQUFDO0FBQzNELE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFHLEtBQUssQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxNQUFNLENBQUM7QUFlM0QsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHdCQUEyRDtJQWtCOUYsWUFBWSxNQUErQixFQUFFLE1BQWlDO1FBQzFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFoQjFCLFVBQUssR0FBb0IsSUFBSSxDQUFDO1FBQzlCLFVBQUssR0FBNkIsSUFBSSxDQUFDO1FBU1QsVUFBSyxHQUFpQixJQUFJLENBQUM7UUFDeEMsWUFBTyxHQUFrQixJQUFJLENBQUM7UUFFdEIsU0FBSSxHQUFXLCtCQUErQixDQUFDO1FBS3BFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxJQUFJLG9DQUFvQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsYUFBYSxFQUFFLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDL0YsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3hELElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN4RCxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNwRSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXZELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQXNDO1FBQzNDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FFL0I7YUFBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQ2xCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQ25DLENBQUM7U0FFTDthQUFNO1lBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDckI7SUFDTCxDQUFDO0NBQ0o7QUEzRG1CO0lBQWYsWUFBWSxFQUFFO2lEQUF1QjtBQUN0QjtJQUFmLFlBQVksRUFBRTtvREFBbUI7QUFHbEI7SUFBZixZQUFZLEVBQUU7K0NBQWM7QUFDYjtJQUFmLFlBQVksRUFBRTtxREFBcUI7QUFDcEI7SUFBZixZQUFZLEVBQUU7OENBQW9DO0FBQ25DO0lBQWYsWUFBWSxFQUFFOzhDQUFvQztBQUNuQztJQUFmLFlBQVksRUFBRTttREFBMEI7QUFDekI7SUFBZixZQUFZLEVBQUU7a0RBQXdCO0FBQ3ZCO0lBQWYsWUFBWSxFQUFFOytDQUFxQjtBQUVOO0lBQTdCLFlBQVksQ0FBQyxNQUFNLENBQUM7Z0RBQW9DO0FBR2hDO0lBQXhCLFlBQVksRUFBRTsrQ0FBeUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEeW5hbWljSW5wdXRDb250cm9sTW9kZWwsIER5bmFtaWNJbnB1dENvbnRyb2xNb2RlbENvbmZpZyB9IGZyb20gXCIuLi9keW5hbWljLWlucHV0LWNvbnRyb2wubW9kZWxcIjtcbmltcG9ydCB7IER5bmFtaWNGb3JtQ29udHJvbExheW91dCB9IGZyb20gXCIuLi9taXNjL2R5bmFtaWMtZm9ybS1jb250cm9sLWxheW91dC5tb2RlbFwiO1xuaW1wb3J0IHsgc2VyaWFsaXphYmxlIH0gZnJvbSBcIi4uLy4uL2RlY29yYXRvci9zZXJpYWxpemFibGUuZGVjb3JhdG9yXCI7XG5pbXBvcnQgeyBpc0Jvb2xlYW4sIGlzTnVtYmVyIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvcmUudXRpbHNcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIGlzT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBJQ29uZmlnLCBpbml0aWFsQ29uZmlnIH0gZnJvbSBcIm5neC1tYXNrXCI7XG5cbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9UWVBFX0lOUFVUID0gXCJJTlBVVFwiO1xuXG5leHBvcnQgY29uc3QgRFlOQU1JQ19GT1JNX0NPTlRST0xfSU5QVVRfVFlQRV9DT0xPUiA9IFwiY29sb3JcIjtcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX0RBVEUgPSBcImRhdGVcIjtcbi8vIGV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX0RBVEVUSU1FID0gXCJkYXRldGltZVwiO1xuZXhwb3J0IGNvbnN0IERZTkFNSUNfRk9STV9DT05UUk9MX0lOUFVUX1RZUEVfREFURVRJTUVfTE9DQUwgPSBcImRhdGV0aW1lLWxvY2FsXCI7XG5leHBvcnQgY29uc3QgRFlOQU1JQ19GT1JNX0NPTlRST0xfSU5QVVRfVFlQRV9FTUFJTCA9IFwiZW1haWxcIjtcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX0ZJTEUgPSBcImZpbGVcIjtcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX01PTlRIID0gXCJtb250aFwiO1xuZXhwb3J0IGNvbnN0IERZTkFNSUNfRk9STV9DT05UUk9MX0lOUFVUX1RZUEVfTlVNQkVSID0gXCJudW1iZXJcIjtcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX1BBU1NXT1JEID0gXCJwYXNzd29yZFwiO1xuZXhwb3J0IGNvbnN0IERZTkFNSUNfRk9STV9DT05UUk9MX0lOUFVUX1RZUEVfUkFOR0UgPSBcInJhbmdlXCI7XG5leHBvcnQgY29uc3QgRFlOQU1JQ19GT1JNX0NPTlRST0xfSU5QVVRfVFlQRV9TRUFSQ0ggPSBcInNlYXJjaFwiO1xuZXhwb3J0IGNvbnN0IERZTkFNSUNfRk9STV9DT05UUk9MX0lOUFVUX1RZUEVfVEVMID0gXCJ0ZWxcIjtcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX1RFWFQgPSBcInRleHRcIjtcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX1RJTUUgPSBcInRpbWVcIjtcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX1VSTCA9IFwidXJsXCI7XG5leHBvcnQgY29uc3QgRFlOQU1JQ19GT1JNX0NPTlRST0xfSU5QVVRfVFlQRV9XRUVLID0gXCJ3ZWVrXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0lucHV0TW9kZWxDb25maWcgZXh0ZW5kcyBEeW5hbWljSW5wdXRDb250cm9sTW9kZWxDb25maWc8c3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IHN0cmluZ1tdPiB7XG4gICAgYWNjZXB0Pzogc3RyaW5nO1xuICAgIGlucHV0VHlwZT86IHN0cmluZztcbiAgICBsaXN0PzogYW55W10gfCBPYnNlcnZhYmxlPGFueVtdPjtcbiAgICBtYXNrPzogc3RyaW5nO1xuICAgIG1hc2tDb25maWc/OiBQYXJ0aWFsPElDb25maWc+O1xuICAgIG1heD86IG51bWJlciB8IHN0cmluZyB8IERhdGU7XG4gICAgbWluPzogbnVtYmVyIHwgc3RyaW5nIHwgRGF0ZTtcbiAgICBtdWx0aXBsZT86IGJvb2xlYW47XG4gICAgcGF0dGVybj86IHN0cmluZztcbiAgICBzdGVwPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgRHluYW1pY0lucHV0TW9kZWwgZXh0ZW5kcyBEeW5hbWljSW5wdXRDb250cm9sTW9kZWw8c3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IHN0cmluZ1tdPiB7XG4gICAgQHNlcmlhbGl6YWJsZSgpIGFjY2VwdDogc3RyaW5nIHwgbnVsbDtcbiAgICBAc2VyaWFsaXphYmxlKCkgaW5wdXRUeXBlOiBzdHJpbmc7XG4gICAgZmlsZXM6IEZpbGVMaXN0IHwgbnVsbCA9IG51bGw7XG4gICAgbGlzdCQ6IE9ic2VydmFibGU8YW55W10+IHwgbnVsbCA9IG51bGw7XG4gICAgQHNlcmlhbGl6YWJsZSgpIG1hc2s6IHN0cmluZztcbiAgICBAc2VyaWFsaXphYmxlKCkgbWFza0NvbmZpZzogSUNvbmZpZztcbiAgICBAc2VyaWFsaXphYmxlKCkgbWF4OiBudW1iZXIgfCBzdHJpbmcgfCBEYXRlIHwgbnVsbDtcbiAgICBAc2VyaWFsaXphYmxlKCkgbWluOiBudW1iZXIgfCBzdHJpbmcgfCBEYXRlIHwgbnVsbDtcbiAgICBAc2VyaWFsaXphYmxlKCkgbXVsdGlwbGU6IGJvb2xlYW4gfCBudWxsO1xuICAgIEBzZXJpYWxpemFibGUoKSBwYXR0ZXJuOiBzdHJpbmcgfCBudWxsO1xuICAgIEBzZXJpYWxpemFibGUoKSBzdGVwOiBudW1iZXIgfCBudWxsO1xuXG4gICAgQHNlcmlhbGl6YWJsZShcImxpc3RcIikgcHJpdmF0ZSBfbGlzdDogYW55W10gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9saXN0SWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgQHNlcmlhbGl6YWJsZSgpIHJlYWRvbmx5IHR5cGU6IHN0cmluZyA9IERZTkFNSUNfRk9STV9DT05UUk9MX1RZUEVfSU5QVVQ7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb25maWc6IER5bmFtaWNJbnB1dE1vZGVsQ29uZmlnLCBsYXlvdXQ/OiBEeW5hbWljRm9ybUNvbnRyb2xMYXlvdXQpIHtcbiAgICAgICAgc3VwZXIoY29uZmlnLCBsYXlvdXQpO1xuXG4gICAgICAgIHRoaXMuYWNjZXB0ID0gY29uZmlnLmFjY2VwdCA/PyBudWxsO1xuICAgICAgICB0aGlzLmlucHV0VHlwZSA9IGNvbmZpZy5pbnB1dFR5cGUgPz8gRFlOQU1JQ19GT1JNX0NPTlRST0xfSU5QVVRfVFlQRV9URVhUO1xuICAgICAgICB0aGlzLm1hc2sgPSBjb25maWcubWFzayA/PyBcIlwiO1xuICAgICAgICB0aGlzLm1hc2tDb25maWcgPSBjb25maWcubWFza0NvbmZpZyA/IHsuLi5pbml0aWFsQ29uZmlnLCAuLi5jb25maWcubWFza0NvbmZpZ30gOiBpbml0aWFsQ29uZmlnO1xuICAgICAgICB0aGlzLm1heCA9IGNvbmZpZy5tYXggIT09IHVuZGVmaW5lZCA/IGNvbmZpZy5tYXggOiBudWxsO1xuICAgICAgICB0aGlzLm1pbiA9IGNvbmZpZy5taW4gIT09IHVuZGVmaW5lZCA/IGNvbmZpZy5taW4gOiBudWxsO1xuICAgICAgICB0aGlzLm11bHRpcGxlID0gaXNCb29sZWFuKGNvbmZpZy5tdWx0aXBsZSkgPyBjb25maWcubXVsdGlwbGUgOiBudWxsO1xuICAgICAgICB0aGlzLnBhdHRlcm4gPSBjb25maWcucGF0dGVybiA/PyBudWxsO1xuICAgICAgICB0aGlzLnN0ZXAgPSBpc051bWJlcihjb25maWcuc3RlcCkgPyBjb25maWcuc3RlcCA6IG51bGw7XG5cbiAgICAgICAgaWYgKGNvbmZpZy5saXN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdCA9IGNvbmZpZy5saXN0O1xuICAgICAgICAgICAgdGhpcy5fbGlzdElkID0gYCR7dGhpcy5pZH1MaXN0YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBsaXN0SWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9saXN0SWQ7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0xpc3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc09ic2VydmFibGUodGhpcy5saXN0JCk7XG4gICAgfVxuXG4gICAgc2V0IGxpc3QobGlzdDogYW55W10gfCBPYnNlcnZhYmxlPGFueVtdPiB8IG51bGwpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobGlzdCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3QgPSBsaXN0O1xuICAgICAgICAgICAgdGhpcy5saXN0JCA9IG9mKHRoaXMuX2xpc3QpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYnNlcnZhYmxlKGxpc3QpKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3QkID0gbGlzdC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcChfbGlzdCA9PiB0aGlzLl9saXN0ID0gX2xpc3QpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9saXN0ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMubGlzdCQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19