@dereekb/dbx-form 9.15.1 → 9.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/formly/field/value/date/datetime.field.component.mjs +54 -4
- package/esm2020/lib/formly/field/value/date/datetime.field.mjs +3 -2
- package/esm2020/lib/formly/field/value/text/text.additional.field.mjs +6 -9
- package/esm2020/lib/formly/field/value/text/text.address.field.mjs +10 -10
- package/fesm2015/dereekb-dbx-form.mjs +69 -21
- package/fesm2015/dereekb-dbx-form.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-form.mjs +68 -21
- package/fesm2020/dereekb-dbx-form.mjs.map +1 -1
- package/lib/formly/field/value/date/datetime.field.component.d.ts +25 -2
- package/lib/formly/field/value/text/text.additional.field.d.ts +0 -5
- package/lib/formly/field/value/text/text.address.field.d.ts +6 -1
- package/mapbox/package.json +4 -4
- package/package.json +5 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { dateFromLogicalDate } from '@dereekb/util';
|
|
2
|
-
import { DateTimeMinuteInstance, guessCurrentTimezone, readableTimeStringToDate, toLocalReadableTimeString, toReadableTimeString, utcDayForDate } from '@dereekb/date';
|
|
2
|
+
import { DateTimeMinuteInstance, formatToISO8601DayString, guessCurrentTimezone, readableTimeStringToDate, toLocalReadableTimeString, toReadableTimeString, utcDayForDate, formatToISO8601DateString, toJsDate, parseISO8601DayStringToDate } from '@dereekb/date';
|
|
3
3
|
import { switchMap, shareReplay, map, startWith, tap, first, distinctUntilChanged, debounceTime, throttleTime, BehaviorSubject, combineLatest, Subject, merge, interval } from 'rxjs';
|
|
4
4
|
import { ChangeDetectorRef, Component } from '@angular/core';
|
|
5
5
|
import { FormControl, Validators } from '@angular/forms';
|
|
@@ -34,6 +34,51 @@ export var DbxDateTimeFieldTimeMode;
|
|
|
34
34
|
*/
|
|
35
35
|
DbxDateTimeFieldTimeMode["NONE"] = "none";
|
|
36
36
|
})(DbxDateTimeFieldTimeMode || (DbxDateTimeFieldTimeMode = {}));
|
|
37
|
+
export var DbxDateTimeValueMode;
|
|
38
|
+
(function (DbxDateTimeValueMode) {
|
|
39
|
+
/**
|
|
40
|
+
* Value is returned/parsed as a Date.
|
|
41
|
+
*/
|
|
42
|
+
DbxDateTimeValueMode[DbxDateTimeValueMode["DATE"] = 0] = "DATE";
|
|
43
|
+
/**
|
|
44
|
+
* Value is returned/parsed as an ISO8601DateString
|
|
45
|
+
*/
|
|
46
|
+
DbxDateTimeValueMode[DbxDateTimeValueMode["DATE_STRING"] = 1] = "DATE_STRING";
|
|
47
|
+
/**
|
|
48
|
+
* Value is returned/parsed as an ISO8601DayString, relative to the current timezone.
|
|
49
|
+
*/
|
|
50
|
+
DbxDateTimeValueMode[DbxDateTimeValueMode["DAY_STRING"] = 2] = "DAY_STRING";
|
|
51
|
+
})(DbxDateTimeValueMode || (DbxDateTimeValueMode = {}));
|
|
52
|
+
export function dbxDateTimeInputValueParseFactory(mode) {
|
|
53
|
+
let factory;
|
|
54
|
+
switch (mode) {
|
|
55
|
+
case DbxDateTimeValueMode.DAY_STRING:
|
|
56
|
+
factory = (x) => (typeof x === 'string' ? parseISO8601DayStringToDate(x) : x);
|
|
57
|
+
break;
|
|
58
|
+
case DbxDateTimeValueMode.DATE_STRING:
|
|
59
|
+
case DbxDateTimeValueMode.DATE:
|
|
60
|
+
default:
|
|
61
|
+
factory = (x) => (x != null ? toJsDate(x) : x);
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
return factory;
|
|
65
|
+
}
|
|
66
|
+
export function dbxDateTimeOutputValueFactory(mode) {
|
|
67
|
+
let factory;
|
|
68
|
+
switch (mode) {
|
|
69
|
+
case DbxDateTimeValueMode.DATE_STRING:
|
|
70
|
+
factory = (x) => (x != null ? formatToISO8601DateString(x) : x);
|
|
71
|
+
break;
|
|
72
|
+
case DbxDateTimeValueMode.DAY_STRING:
|
|
73
|
+
factory = (x) => (x != null ? formatToISO8601DayString(x) : x);
|
|
74
|
+
break;
|
|
75
|
+
case DbxDateTimeValueMode.DATE:
|
|
76
|
+
default:
|
|
77
|
+
factory = (x) => x;
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
return factory;
|
|
81
|
+
}
|
|
37
82
|
export class DbxDateTimeFieldComponent extends FieldType {
|
|
38
83
|
constructor(cdRef) {
|
|
39
84
|
super();
|
|
@@ -46,7 +91,7 @@ export class DbxDateTimeFieldComponent extends FieldType {
|
|
|
46
91
|
this._formControlObs = new BehaviorSubject(undefined);
|
|
47
92
|
this.formControl$ = this._formControlObs.pipe(filterMaybe());
|
|
48
93
|
this._updateTime = new Subject();
|
|
49
|
-
this.value$ = this.formControl$.pipe(switchMap((control) => control.valueChanges.pipe(startWith(control.value))), distinctUntilChanged((a, b) => isSameMinute(a, b)), shareReplay(1));
|
|
94
|
+
this.value$ = this.formControl$.pipe(switchMap((control) => control.valueChanges.pipe(startWith(control.value), map(dbxDateTimeInputValueParseFactory(this.valueMode)))), distinctUntilChanged((a, b) => (a != null && b != null ? isSameMinute(a, b) : a === b)), shareReplay(1));
|
|
50
95
|
/**
|
|
51
96
|
* Used to trigger/display visual updates (specifically on timeDistance, etc.).
|
|
52
97
|
*/
|
|
@@ -123,13 +168,18 @@ export class DbxDateTimeFieldComponent extends FieldType {
|
|
|
123
168
|
get timeMode() {
|
|
124
169
|
return this.timeOnly ? DbxDateTimeFieldTimeMode.REQUIRED : this.dateTimeField.timeMode ?? DbxDateTimeFieldTimeMode.REQUIRED;
|
|
125
170
|
}
|
|
171
|
+
get valueMode() {
|
|
172
|
+
return this.field.props.valueMode ?? DbxDateTimeValueMode.DATE;
|
|
173
|
+
}
|
|
126
174
|
get description() {
|
|
127
175
|
return this.field.props.description;
|
|
128
176
|
}
|
|
129
177
|
ngOnInit() {
|
|
130
178
|
this._formControlObs.next(this.formControl);
|
|
131
179
|
this._config.next(this.dateTimeField.getConfigObs?.());
|
|
132
|
-
|
|
180
|
+
const valueFactory = dbxDateTimeOutputValueFactory(this.valueMode);
|
|
181
|
+
this._sub.subscription = this.timeOutput$.pipe(skipFirstMaybe()).subscribe((dateValue) => {
|
|
182
|
+
const value = valueFactory(dateValue);
|
|
133
183
|
this.formControl.setValue(value);
|
|
134
184
|
this.formControl.markAsDirty();
|
|
135
185
|
this.formControl.markAsTouched();
|
|
@@ -255,4 +305,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImpor
|
|
|
255
305
|
type: Component,
|
|
256
306
|
args: [{ template: "<div class=\"dbx-datetime-field\" fxLayout=\"row wrap\" fxLayout.xs=\"column wrap\" fxLayoutAlign=\"space-evenly stretch\">\n <!-- Date -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"dateOnly ? '100' : '50'\" *ngIf=\"showDateInput\">\n <ng-container *ngTemplateOutlet=\"dateInputTemplate\"></ng-container>\n </div>\n <!-- Time -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"showDateInput ? '50' : '100'\">\n <ng-container *ngIf=\"showTimeInput$ | async\">\n <ng-container *ngTemplateOutlet=\"timeMenuAndInputTemplate\"></ng-container>\n </ng-container>\n <div class=\"add-time-button-wrapper\" *ngIf=\"showAddTime$ | async\">\n <button mat-button class=\"add-time-button\" ngClass.lt-sm=\"add-time-button-full\" (click)=\"addTime()\">\n <mat-icon>timer</mat-icon>\n Add Time\n </button>\n </div>\n </div>\n <div class=\"dbx-datetime-row dbx-datetime-hint-row\" fxFlex=\"100\">\n <div class=\"dbx-hint\" [ngSwitch]=\"fullDay$ | async\">\n <small *ngSwitchCase=\"true\">\n <b class=\"dbx-ok\">All Day</b>\n {{ dateValue$ | async | date: 'fullDate' }} ({{ dateValue$ | async | dateDistance }})\n </small>\n <small *ngSwitchCase=\"false\">\n <ng-container *ngIf=\"value$ | async\">\n <b class=\"dbx-ok\">At</b>\n {{ displayValue$ | async | date: 'medium' }} ({{ displayValue$ | async | timeDistance }})\n </ng-container>\n </small>\n </div>\n </div>\n</div>\n\n<!-- Date Input Template -->\n<ng-template #dateInputTemplate>\n <button mat-icon-button (click)=\"picker.open()\" [disabled]=\"disabled\">\n <mat-icon>calendar_today</mat-icon>\n </button>\n <mat-form-field class=\"dbx-datetime-row-field\">\n <mat-label>Date</mat-label>\n <input #dateInput matInput [formControl]=\"dateInputCtrl\" [matDatepicker]=\"picker\" (dateChange)=\"datePicked($event)\" [value]=\"dateValue$ | async\" />\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n</ng-template>\n\n<!-- Time Menu/Input Template -->\n<ng-template #timeMenuAndInputTemplate>\n <button mat-icon-button [matMenuTriggerFor]=\"timemenu\" aria-label=\"opens the time menu\" [disabled]=\"disabled\">\n <mat-icon>timer</mat-icon>\n </button>\n <mat-menu #timemenu=\"matMenu\">\n <ng-container *ngIf=\"timeMode === 'optional'\">\n <button mat-menu-item (click)=\"removeTime()\">\n <span>Remove Time</span>\n </button>\n <mat-divider></mat-divider>\n </ng-container>\n <button mat-menu-item (click)=\"setLogicalTime('now')\">\n <span>Now</span>\n </button>\n <button mat-menu-item (click)=\"setTime('12:00AM')\">\n <span>Midnight</span>\n </button>\n <button mat-menu-item (click)=\"setTime('6:00AM')\">\n <span>6:00AM</span>\n </button>\n <button mat-menu-item (click)=\"setTime('8:00AM')\">\n <span>8:00AM</span>\n </button>\n <button mat-menu-item (click)=\"setTime('10:00AM')\">\n <span>10:00AM</span>\n </button>\n <button mat-menu-item (click)=\"setTime('12:00PM')\">\n <span>Noon</span>\n </button>\n <button mat-menu-item (click)=\"setTime('2:00PM')\">\n <span>2:00PM</span>\n </button>\n <button mat-menu-item (click)=\"setTime('5:00PM')\">\n <span>5:00PM</span>\n </button>\n </mat-menu>\n <mat-form-field class=\"dbx-datetime-row-field\">\n <mat-label>Time</mat-label>\n <input #timeInput matInput [formControl]=\"timeInputCtrl\" (focus)=\"focusTime()\" (focusout)=\"focusOutTime()\" (keydown)=\"keydownOnInput($event)\" />\n </mat-form-field>\n</ng-template>\n" }]
|
|
257
307
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });
|
|
258
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvZGF0ZS9kYXRldGltZS5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUIsbUJBQW1CLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBd0Isc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdMLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbE0sT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFtQixXQUFXLEVBQUUsVUFBVSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDckYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsa0JBQWtC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Q0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDakQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3NIQTdTVSx5QkFBeUI7MEdBQXpCLHlCQUF5QiwyRUNoRXRDLG9rSEF1RkE7MkZEdkJhLHlCQUF5QjtrQkFIckMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2ljYWxEYXRlU3RyaW5nQ29kZSwgZGF0ZUZyb21Mb2dpY2FsRGF0ZSwgTWF5YmUsIFJlYWRhYmxlVGltZVN0cmluZyB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGF0ZVRpbWVNaW51dGVDb25maWcsIERhdGVUaW1lTWludXRlSW5zdGFuY2UsIGd1ZXNzQ3VycmVudFRpbWV6b25lLCByZWFkYWJsZVRpbWVTdHJpbmdUb0RhdGUsIHRvTG9jYWxSZWFkYWJsZVRpbWVTdHJpbmcsIHRvUmVhZGFibGVUaW1lU3RyaW5nLCB1dGNEYXlGb3JEYXRlIH0gZnJvbSAnQGRlcmVla2IvZGF0ZSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHNoYXJlUmVwbGF5LCBtYXAsIHN0YXJ0V2l0aCwgdGFwLCBmaXJzdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGRlYm91bmNlVGltZSwgdGhyb3R0bGVUaW1lLCBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIFN1YmplY3QsIG1lcmdlLCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJztcbmltcG9ydCB7IEZpZWxkVHlwZUNvbmZpZywgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IGFkZE1pbnV0ZXMsIGlzU2FtZURheSwgaXNTYW1lTWludXRlLCBzdGFydE9mRGF5IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgZmlsdGVyTWF5YmUsIHNraXBGaXJzdE1heWJlLCBTdWJzY3JpcHRpb25PYmplY3QsIHN3aXRjaE1hcE1heWJlRGVmYXVsdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuXG5leHBvcnQgZW51bSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUge1xuICAvKipcbiAgICogVGltZSBpcyByZXF1aXJlZC5cbiAgICovXG4gIFJFUVVJUkVEID0gJ3JlcXVpcmVkJyxcbiAgLyoqXG4gICAqIFRpbWUgaXMgb3B0aW9uYWwuXG4gICAqL1xuICBPUFRJT05BTCA9ICdvcHRpb25hbCcsXG4gIC8qKlxuICAgKiBUaW1lIGlzIHBlcm1lbmFudGx5IG9mZi5cbiAgICovXG4gIE5PTkUgPSAnbm9uZSdcbn1cblxuZXhwb3J0IHR5cGUgRGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uID0gT21pdDxEYXRlVGltZU1pbnV0ZUNvbmZpZywgJ2RhdGUnPjtcblxuZXhwb3J0IGludGVyZmFjZSBEYnhEYXRlVGltZUZpZWxkUHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBkYXRlIGlzIGhpZGRlbiwgYW5kIGF1dG9tYXRpY2FsbHkgdXNlcyB0b2RheS9pbnB1dCBkYXRlLlxuICAgKi9cbiAgdGltZU9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdGltZSBjYW4gYmUgYWRkZWQvcmVtb3ZlZCBvcHRpb25hbGx5LlxuICAgKlxuICAgKiBUaGlzIGlzIGlnbm9yZWQgaWYgdGltZU9ubHkgaXMgc3BlY2lmaWVkLlxuICAgKi9cbiAgdGltZU1vZGU/OiBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGU7XG5cbiAgLyoqXG4gICAqIE90aGVyIGZvcm0gY29udHJvbCBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHdoZXRoZXIgb3Igbm90IGl0IGlzIGEgZnVsbCBkYXkuXG4gICAqXG4gICAqIFRoaXMgZmllbGQgaXMgb25seSB1c2VkIGlmIHRpbWUgaXMgb3B0aW9uYWwuXG4gICAqXG4gICAqIFdoZW4gdGltZSBpcyBvZmYsIHRoZSBmaWVsZCBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIGZ1bGxEYXlGaWVsZE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHBhc3MgdGhlIGRhdGUgdmFsdWUgYXMgYSBVVEMgZGF0ZSwgb3IgYSBkYXRlIGluIHRoZSBjdXJyZW50IHRpbWV6b25lLlxuICAgKi9cbiAgZnVsbERheUluVVRDPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNlZCBmb3IgcmV0dXJuaW5nIHRoZSBjb25maWd1cmF0aW9uIG9ic2VydmFibGUuXG4gICAqL1xuICBnZXRDb25maWdPYnM/OiAoKSA9PiBPYnNlcnZhYmxlPERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbj47XG59XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ2RhdGV0aW1lLmZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYnhEYXRlVGltZUZpZWxkQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxEYnhEYXRlVGltZUZpZWxkUHJvcHM+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfc3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF92YWx1ZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBwcml2YXRlIF9mdWxsRGF5SW5wdXRDdHJsPzogRm9ybUNvbnRyb2w7XG4gIHByaXZhdGUgX2Z1bGxEYXlDb250cm9sT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBYnN0cmFjdENvbnRyb2w+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmdWxsRGF5Q29udHJvbCQgPSB0aGlzLl9mdWxsRGF5Q29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHByaXZhdGUgX29mZnNldCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVGltZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgdmFsdWUkID0gdGhpcy5mb3JtQ29udHJvbCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGNvbnRyb2wpID0+IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKGNvbnRyb2wudmFsdWUpKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGlzU2FtZU1pbnV0ZShhLCBiKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvKipcbiAgICogVXNlZCB0byB0cmlnZ2VyL2Rpc3BsYXkgdmlzdWFsIHVwZGF0ZXMgKHNwZWNpZmljYWxseSBvbiB0aW1lRGlzdGFuY2UsIGV0Yy4pLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheVZhbHVlJCA9IGludGVydmFsKDEwICogMTAwMCkucGlwZShcbiAgICBzdGFydFdpdGgoMCksXG4gICAgbWFwKCgpID0+IG5ldyBEYXRlKCkuZ2V0TWludXRlcygpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHRhcCgoKSA9PiB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy52YWx1ZSQpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdGltZVN0cmluZyQ6IE9ic2VydmFibGU8UmVhZGFibGVUaW1lU3RyaW5nPiA9IHRoaXMudmFsdWUkLnBpcGUoXG4gICAgZmlsdGVyTWF5YmUoKSxcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWV6b25lID0gZ3Vlc3NDdXJyZW50VGltZXpvbmUoKTtcbiAgICAgIGNvbnN0IHRpbWVTdHJpbmcgPSB0b1JlYWRhYmxlVGltZVN0cmluZyh4LCB0aW1lem9uZSk7XG4gICAgICByZXR1cm4gdGltZVN0cmluZztcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGVJbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2wobmV3IERhdGUoKSwge1xuICAgIHZhbGlkYXRvcnM6IFtdXG4gIH0pO1xuXG4gIHJlYWRvbmx5IHRpbWVJbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2woJycsIHtcbiAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5wYXR0ZXJuKC9eKG5vdykkfF4oWzAtOV18KDBbMC05XSl8KDFbMC05XSl8KDJbMC0zXSkpKDopPyhbMC01XVswLTldKT8oXFxzKT8oW2FwQVBdW01tXSk/KFxcXFxzKSokLyldXG4gIH0pO1xuXG4gIHByaXZhdGUgX2NvbmZpZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8T2JzZXJ2YWJsZTxEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24+Pj4odW5kZWZpbmVkKTtcblxuICBnZXQgZGF0ZU9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGltZU1vZGUgPT09IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FO1xuICB9XG5cbiAgZ2V0IGRhdGVUaW1lRmllbGQoKTogRGJ4RGF0ZVRpbWVGaWVsZFByb3BzIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcztcbiAgfVxuXG4gIGdldCB0aW1lT25seSgpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVRpbWVGaWVsZC50aW1lT25seTtcbiAgfVxuXG4gIGdldCBzaG93RGF0ZUlucHV0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy50aW1lT25seTtcbiAgfVxuXG4gIGdldCB0aW1lTW9kZSgpOiBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUge1xuICAgIHJldHVybiB0aGlzLnRpbWVPbmx5ID8gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVEIDogdGhpcy5kYXRlVGltZUZpZWxkLnRpbWVNb2RlID8/IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRDtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHJlYWRvbmx5IGZ1bGxEYXkkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5mdWxsRGF5Q29udHJvbCQucGlwZShzd2l0Y2hNYXAoKGNvbnRyb2wpID0+IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKGNvbnRyb2wudmFsdWUpKSkpO1xuXG4gIHJlYWRvbmx5IHNob3dUaW1lSW5wdXQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5mdWxsRGF5JC5waXBlKG1hcCgoeCkgPT4gIXggJiYgdGhpcy50aW1lTW9kZSAhPT0gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkUpKTtcblxuICByZWFkb25seSBzaG93QWRkVGltZSQgPSB0aGlzLnNob3dUaW1lSW5wdXQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiAheCAmJiB0aGlzLnRpbWVNb2RlID09PSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuT1BUSU9OQUwpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGF0ZSQgPSB0aGlzLmRhdGVJbnB1dEN0cmwudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZGF0ZUlucHV0Q3RybC52YWx1ZSksIGZpbHRlck1heWJlKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBkYXRlVmFsdWUkID0gbWVyZ2UodGhpcy5kYXRlJCwgdGhpcy52YWx1ZSQucGlwZShza2lwRmlyc3RNYXliZSgpKSkucGlwZShcbiAgICBtYXAoKHg6IE1heWJlPERhdGU+KSA9PiAoeCA/IHN0YXJ0T2ZEYXkoeCkgOiB4KSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGEgIT0gbnVsbCAmJiBiICE9IG51bGwgJiYgaXNTYW1lRGF5KGEsIGIpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHRpbWVJbnB1dCQ6IE9ic2VydmFibGU8UmVhZGFibGVUaW1lU3RyaW5nPiA9IHRoaXMuX3VwZGF0ZVRpbWUucGlwZShcbiAgICBkZWJvdW5jZVRpbWUoNSksXG4gICAgbWFwKCgpID0+IHRoaXMudGltZUlucHV0Q3RybC52YWx1ZSB8fCAnJyksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICApO1xuXG4gIHJlYWRvbmx5IGNvbmZpZyQgPSB0aGlzLl9jb25maWcucGlwZShzd2l0Y2hNYXBNYXliZURlZmF1bHQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHJhd0RhdGVUaW1lJDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlPj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRhdGVWYWx1ZSQsIHRoaXMudGltZUlucHV0JC5waXBlKHN0YXJ0V2l0aChudWxsKSksIHRoaXMuZnVsbERheSRdKS5waXBlKFxuICAgIG1hcCgoW2RhdGUsIHRpbWVTdHJpbmcsIGZ1bGxEYXldKSA9PiB7XG4gICAgICBsZXQgcmVzdWx0OiBNYXliZTxEYXRlPjtcblxuICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgaWYgKGZ1bGxEYXkpIHtcbiAgICAgICAgICBpZiAodGhpcy5kYXRlVGltZUZpZWxkLmZ1bGxEYXlJblVUQykge1xuICAgICAgICAgICAgcmVzdWx0ID0gdXRjRGF5Rm9yRGF0ZShkYXRlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gc3RhcnRPZkRheShkYXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGltZVN0cmluZykge1xuICAgICAgICAgIHJlc3VsdCA9XG4gICAgICAgICAgICByZWFkYWJsZVRpbWVTdHJpbmdUb0RhdGUodGltZVN0cmluZywge1xuICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICB1c2VTeXN0ZW1UaW1lem9uZTogdHJ1ZVxuICAgICAgICAgICAgfSkgPz8gZGF0ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSBkYXRlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQ8TWF5YmU8RGF0ZT4+KChhLCBiKSA9PiBhICE9IG51bGwgJiYgYiAhPSBudWxsICYmIGlzU2FtZU1pbnV0ZShhLCBiKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSB0aW1lT3V0cHV0JDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlPj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnJhd0RhdGVUaW1lJCwgdGhpcy5fb2Zmc2V0LCB0aGlzLmNvbmZpZyQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKV0pLnBpcGUoXG4gICAgdGhyb3R0bGVUaW1lKDQwLCB1bmRlZmluZWQsIHsgbGVhZGluZzogZmFsc2UsIHRyYWlsaW5nOiB0cnVlIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChjdXJyZW50LCBuZXh0KSA9PiBjdXJyZW50WzBdID09PSBuZXh0WzBdICYmIG5leHRbMV0gPT09IDApLFxuICAgIHRhcCgoWywgc3RlcHNPZmZzZXRdKSA9PiAoc3RlcHNPZmZzZXQgPyB0aGlzLl9vZmZzZXQubmV4dCgwKSA6IDApKSxcbiAgICBtYXAoKFtkYXRlLCBzdGVwc09mZnNldCwgY29uZmlnXSkgPT4ge1xuICAgICAgaWYgKGRhdGUgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBEYXRlVGltZU1pbnV0ZUluc3RhbmNlKHtcbiAgICAgICAgICBkYXRlLFxuICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICByb3VuZERvd25Ub01pbnV0ZTogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgICAgICBkYXRlID0gaW5zdGFuY2UubGltaXQoZGF0ZSk7XG5cbiAgICAgICAgY29uc3QgbWludXRlcyA9IHN0ZXBzT2Zmc2V0ICogNTtcbiAgICAgICAgZGF0ZSA9IGFkZE1pbnV0ZXMoZGF0ZSwgbWludXRlcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBhICE9IG51bGwgJiYgYiAhPSBudWxsICYmIGlzU2FtZU1pbnV0ZShhLCBiKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuICAgIHRoaXMuX2NvbmZpZy5uZXh0KHRoaXMuZGF0ZVRpbWVGaWVsZC5nZXRDb25maWdPYnM/LigpKTtcblxuICAgIHRoaXMuX3N1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnRpbWVPdXRwdXQkLnBpcGUoc2tpcEZpcnN0TWF5YmUoKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZhbHVlU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMudGltZVN0cmluZyQuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAvLyBTa2lwIGV2ZW50cyB3aGVyZSB0aGUgdGltZUlucHV0IHZhbHVlIGlzIGNsZWFyZWQuXG4gICAgICBpZiAoIXRoaXMudGltZUlucHV0Q3RybC52YWx1ZSAmJiB4ID09PSAnMTI6MDBBTScpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldFRpbWUoeCk7XG4gICAgfSk7XG5cbiAgICAvLyBXYXRjaCBmb3IgZGlzYWJsZWQgY2hhbmdlcyBzbyB3ZSBjYW4gcHJvcG9nYXRlIHRoZW0gcHJvcGVybHkuXG4gICAgdGhpcy5mb3JtQ29udHJvbC5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UoKGRpc2FibGVkKSA9PiB7XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5kYXRlSW5wdXRDdHJsLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLnRpbWVJbnB1dEN0cmwuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGVJbnB1dEN0cmwuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy50aW1lSW5wdXRDdHJsLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBpc0Z1bGxEYXlGaWVsZCA9IHRoaXMuZGF0ZVRpbWVGaWVsZC5mdWxsRGF5RmllbGROYW1lO1xuICAgIGxldCBmdWxsRGF5RmllbGRDdHJsOiBNYXliZTxBYnN0cmFjdENvbnRyb2w+O1xuXG4gICAgaWYgKGlzRnVsbERheUZpZWxkKSB7XG4gICAgICBmdWxsRGF5RmllbGRDdHJsID0gdGhpcy5mb3JtLmdldChpc0Z1bGxEYXlGaWVsZCk7XG4gICAgfVxuXG4gICAgaWYgKCFmdWxsRGF5RmllbGRDdHJsKSB7XG4gICAgICB0aGlzLl9mdWxsRGF5SW5wdXRDdHJsID0gbmV3IEZvcm1Db250cm9sKHRydWUpO1xuXG4gICAgICAvLyBTZXQgdGhlIGNvbnRyb2wgaW4gdGhlIGZvcm0gdG9vIGlmIHRoZSBuYW1lIGlzIGRlZmluZWQuXG4gICAgICBpZiAoaXNGdWxsRGF5RmllbGQpIHtcbiAgICAgICAgKHRoaXMuZm9ybSBhcyBGb3JtR3JvdXApLmFkZENvbnRyb2woaXNGdWxsRGF5RmllbGQsIHRoaXMuX2Z1bGxEYXlJbnB1dEN0cmwpO1xuICAgICAgfVxuXG4gICAgICBmdWxsRGF5RmllbGRDdHJsID0gdGhpcy5fZnVsbERheUlucHV0Q3RybDtcbiAgICB9XG5cbiAgICB0aGlzLl9mdWxsRGF5Q29udHJvbE9icy5uZXh0KGZ1bGxEYXlGaWVsZEN0cmwpO1xuXG4gICAgc3dpdGNoICh0aGlzLmRhdGVUaW1lRmllbGQudGltZU1vZGUpIHtcbiAgICAgIGNhc2UgRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk9QVElPTkFMOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkU6XG4gICAgICAgIHRoaXMucmVtb3ZlVGltZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVEOlxuICAgICAgICB0aGlzLmFkZFRpbWUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9mdWxsRGF5Q29udHJvbE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX29mZnNldC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY29uZmlnLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fdXBkYXRlVGltZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fdmFsdWVTdWIuZGVzdHJveSgpO1xuICB9XG5cbiAgZGF0ZVBpY2tlZChldmVudDogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8RGF0ZT4pOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gZXZlbnQudmFsdWU7XG5cbiAgICBpZiAoZGF0ZSkge1xuICAgICAgdGhpcy5kYXRlSW5wdXRDdHJsLnNldFZhbHVlKGRhdGUpO1xuICAgICAgdGhpcy5fdXBkYXRlVGltZS5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgc2V0TG9naWNhbFRpbWUodGltZTogTG9naWNhbERhdGVTdHJpbmdDb2RlKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IGRhdGVGcm9tTG9naWNhbERhdGUodGltZSk7XG5cbiAgICBpZiAoZGF0ZSkge1xuICAgICAgY29uc3QgdGltZVN0cmluZyA9IHRvTG9jYWxSZWFkYWJsZVRpbWVTdHJpbmcoZGF0ZSk7XG4gICAgICB0aGlzLnNldFRpbWUodGltZVN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgc2V0VGltZSh0aW1lOiBSZWFkYWJsZVRpbWVTdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVJbnB1dEN0cmwuc2V0VmFsdWUodGltZSk7XG4gICAgdGhpcy5fb2Zmc2V0Lm5leHQoMCk7XG4gICAgdGhpcy5fdXBkYXRlVGltZS5uZXh0KCk7XG4gIH1cblxuICBrZXlkb3duT25JbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGxldCBkaXJlY3Rpb24gPSAwO1xuXG4gICAgc3dpdGNoIChldmVudC5rZXk/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ2Fycm93dXAnOlxuICAgICAgICBkaXJlY3Rpb24gPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fycm93ZG93bic6XG4gICAgICAgIGRpcmVjdGlvbiA9IC0xO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBsZXQgb2Zmc2V0ID0gMTtcblxuICAgIGlmIChldmVudC5hbHRLZXkgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIG9mZnNldCA9IDMwMDtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFsdEtleSkge1xuICAgICAgb2Zmc2V0ID0gNjA7XG4gICAgfSBlbHNlIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgb2Zmc2V0ID0gNTtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0aW9uICE9PSAwKSB7XG4gICAgICB0aGlzLl9vZmZzZXQubmV4dCh0aGlzLl9vZmZzZXQudmFsdWUgKyBvZmZzZXQgKiBkaXJlY3Rpb24pO1xuICAgICAgdGhpcy5fdXBkYXRlVGltZS5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXNUaW1lKCk6IHZvaWQge1xuICAgIC8vIGRvIG5vdGhpbmdcbiAgfVxuXG4gIGZvY3VzT3V0VGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVUaW1lLm5leHQoKTtcbiAgfVxuXG4gIGFkZFRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRGdWxsRGF5KGZhbHNlKTtcbiAgfVxuXG4gIHJlbW92ZVRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRGdWxsRGF5KHRydWUpO1xuICB9XG5cbiAgc2V0RnVsbERheShmdWxsRGF5OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5mdWxsRGF5Q29udHJvbCQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgIHguc2V0VmFsdWUoZnVsbERheSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYngtZGF0ZXRpbWUtZmllbGRcIiBmeExheW91dD1cInJvdyB3cmFwXCIgZnhMYXlvdXQueHM9XCJjb2x1bW4gd3JhcFwiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1ldmVubHkgc3RyZXRjaFwiPlxuICA8IS0tIERhdGUgLS0+XG4gIDxkaXYgY2xhc3M9XCJkYngtZGF0ZXRpbWUtcm93XCIgZnhGbGV4Lmx0LXNtPVwiMTAwXCIgW2Z4RmxleF09XCJkYXRlT25seSA/ICcxMDAnIDogJzUwJ1wiICpuZ0lmPVwic2hvd0RhdGVJbnB1dFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlSW5wdXRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPCEtLSBUaW1lIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvd1wiIGZ4RmxleC5sdC1zbT1cIjEwMFwiIFtmeEZsZXhdPVwic2hvd0RhdGVJbnB1dCA/ICc1MCcgOiAnMTAwJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VGltZUlucHV0JCB8IGFzeW5jXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGltZU1lbnVBbmRJbnB1dFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImFkZC10aW1lLWJ1dHRvbi13cmFwcGVyXCIgKm5nSWY9XCJzaG93QWRkVGltZSQgfCBhc3luY1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwiYWRkLXRpbWUtYnV0dG9uXCIgbmdDbGFzcy5sdC1zbT1cImFkZC10aW1lLWJ1dHRvbi1mdWxsXCIgKGNsaWNrKT1cImFkZFRpbWUoKVwiPlxuICAgICAgICA8bWF0LWljb24+dGltZXI8L21hdC1pY29uPlxuICAgICAgICBBZGQgVGltZVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvdyBkYngtZGF0ZXRpbWUtaGludC1yb3dcIiBmeEZsZXg9XCIxMDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LWhpbnRcIiBbbmdTd2l0Y2hdPVwiZnVsbERheSQgfCBhc3luY1wiPlxuICAgICAgPHNtYWxsICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XG4gICAgICAgIDxiIGNsYXNzPVwiZGJ4LW9rXCI+QWxsIERheTwvYj5cbiAgICAgICAge3sgZGF0ZVZhbHVlJCB8IGFzeW5jIHwgZGF0ZTogJ2Z1bGxEYXRlJyB9fSAoe3sgZGF0ZVZhbHVlJCB8IGFzeW5jIHwgZGF0ZURpc3RhbmNlIH19KVxuICAgICAgPC9zbWFsbD5cbiAgICAgIDxzbWFsbCAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZhbHVlJCB8IGFzeW5jXCI+XG4gICAgICAgICAgPGIgY2xhc3M9XCJkYngtb2tcIj5BdDwvYj5cbiAgICAgICAgICB7eyBkaXNwbGF5VmFsdWUkIHwgYXN5bmMgfCBkYXRlOiAnbWVkaXVtJyB9fSAoe3sgZGlzcGxheVZhbHVlJCB8IGFzeW5jIHwgdGltZURpc3RhbmNlIH19KVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gRGF0ZSBJbnB1dCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjZGF0ZUlucHV0VGVtcGxhdGU+XG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJwaWNrZXIub3BlbigpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPG1hdC1pY29uPmNhbGVuZGFyX3RvZGF5PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRieC1kYXRldGltZS1yb3ctZmllbGRcIj5cbiAgICA8bWF0LWxhYmVsPkRhdGU8L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgI2RhdGVJbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiZGF0ZUlucHV0Q3RybFwiIFttYXREYXRlcGlja2VyXT1cInBpY2tlclwiIChkYXRlQ2hhbmdlKT1cImRhdGVQaWNrZWQoJGV2ZW50KVwiIFt2YWx1ZV09XCJkYXRlVmFsdWUkIHwgYXN5bmNcIiAvPlxuICAgIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFRpbWUgTWVudS9JbnB1dCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjdGltZU1lbnVBbmRJbnB1dFRlbXBsYXRlPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwidGltZW1lbnVcIiBhcmlhLWxhYmVsPVwib3BlbnMgdGhlIHRpbWUgbWVudVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxtYXQtaWNvbj50aW1lcjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8bWF0LW1lbnUgI3RpbWVtZW51PVwibWF0TWVudVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aW1lTW9kZSA9PT0gJ29wdGlvbmFsJ1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJyZW1vdmVUaW1lKClcIj5cbiAgICAgICAgPHNwYW4+UmVtb3ZlIFRpbWU8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0TG9naWNhbFRpbWUoJ25vdycpXCI+XG4gICAgICA8c3Bhbj5Ob3c8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRUaW1lKCcxMjowMEFNJylcIj5cbiAgICAgIDxzcGFuPk1pZG5pZ2h0PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0VGltZSgnNjowMEFNJylcIj5cbiAgICAgIDxzcGFuPjY6MDBBTTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldFRpbWUoJzg6MDBBTScpXCI+XG4gICAgICA8c3Bhbj44OjAwQU08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRUaW1lKCcxMDowMEFNJylcIj5cbiAgICAgIDxzcGFuPjEwOjAwQU08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRUaW1lKCcxMjowMFBNJylcIj5cbiAgICAgIDxzcGFuPk5vb248L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRUaW1lKCcyOjAwUE0nKVwiPlxuICAgICAgPHNwYW4+MjowMFBNPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0VGltZSgnNTowMFBNJylcIj5cbiAgICAgIDxzcGFuPjU6MDBQTTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9tYXQtbWVudT5cbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvdy1maWVsZFwiPlxuICAgIDxtYXQtbGFiZWw+VGltZTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCAjdGltZUlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJ0aW1lSW5wdXRDdHJsXCIgKGZvY3VzKT1cImZvY3VzVGltZSgpXCIgKGZvY3Vzb3V0KT1cImZvY3VzT3V0VGltZSgpXCIgKGtleWRvd24pPVwia2V5ZG93bk9uSW5wdXQoJGV2ZW50KVwiIC8+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
308
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvZGF0ZS9kYXRldGltZS5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEQsbUJBQW1CLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQzNJLE9BQU8sRUFBd0Isc0JBQXNCLEVBQXNCLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSxRQUFRLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN1MsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsTSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQW1CLFdBQVcsRUFBRSxVQUFVLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUs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SHJDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJU084NjAxRGF0ZVN0cmluZywgSVNPODYwMURheVN0cmluZywgTG9naWNhbERhdGVTdHJpbmdDb2RlLCBkYXRlRnJvbUxvZ2ljYWxEYXRlLCBNYXliZSwgUmVhZGFibGVUaW1lU3RyaW5nIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBEYXRlVGltZU1pbnV0ZUNvbmZpZywgRGF0ZVRpbWVNaW51dGVJbnN0YW5jZSwgZm9ybWF0VG9EYXRlU3RyaW5nLCBmb3JtYXRUb0lTTzg2MDFEYXlTdHJpbmcsIGd1ZXNzQ3VycmVudFRpbWV6b25lLCByZWFkYWJsZVRpbWVTdHJpbmdUb0RhdGUsIHRvTG9jYWxSZWFkYWJsZVRpbWVTdHJpbmcsIHRvUmVhZGFibGVUaW1lU3RyaW5nLCB1dGNEYXlGb3JEYXRlLCBmb3JtYXRUb0lTTzg2MDFEYXRlU3RyaW5nLCB0b0pzRGF0ZSwgcGFyc2VJU084NjAxRGF5U3RyaW5nVG9EYXRlIH0gZnJvbSAnQGRlcmVla2IvZGF0ZSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHNoYXJlUmVwbGF5LCBtYXAsIHN0YXJ0V2l0aCwgdGFwLCBmaXJzdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGRlYm91bmNlVGltZSwgdGhyb3R0bGVUaW1lLCBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIFN1YmplY3QsIG1lcmdlLCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJztcbmltcG9ydCB7IEZpZWxkVHlwZUNvbmZpZywgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IGFkZE1pbnV0ZXMsIGlzU2FtZURheSwgaXNTYW1lTWludXRlLCBzdGFydE9mRGF5IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgZmlsdGVyTWF5YmUsIHNraXBGaXJzdE1heWJlLCBTdWJzY3JpcHRpb25PYmplY3QsIHN3aXRjaE1hcE1heWJlRGVmYXVsdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuXG5leHBvcnQgZW51bSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUge1xuICAvKipcbiAgICogVGltZSBpcyByZXF1aXJlZC5cbiAgICovXG4gIFJFUVVJUkVEID0gJ3JlcXVpcmVkJyxcbiAgLyoqXG4gICAqIFRpbWUgaXMgb3B0aW9uYWwuXG4gICAqL1xuICBPUFRJT05BTCA9ICdvcHRpb25hbCcsXG4gIC8qKlxuICAgKiBUaW1lIGlzIHBlcm1lbmFudGx5IG9mZi5cbiAgICovXG4gIE5PTkUgPSAnbm9uZSdcbn1cblxuZXhwb3J0IGVudW0gRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUge1xuICAvKipcbiAgICogVmFsdWUgaXMgcmV0dXJuZWQvcGFyc2VkIGFzIGEgRGF0ZS5cbiAgICovXG4gIERBVEUgPSAwLFxuICAvKipcbiAgICogVmFsdWUgaXMgcmV0dXJuZWQvcGFyc2VkIGFzIGFuIElTTzg2MDFEYXRlU3RyaW5nXG4gICAqL1xuICBEQVRFX1NUUklORyA9IDEsXG4gIC8qKlxuICAgKiBWYWx1ZSBpcyByZXR1cm5lZC9wYXJzZWQgYXMgYW4gSVNPODYwMURheVN0cmluZywgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgdGltZXpvbmUuXG4gICAqL1xuICBEQVlfU1RSSU5HID0gMlxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGJ4RGF0ZVRpbWVJbnB1dFZhbHVlUGFyc2VGYWN0b3J5KG1vZGU6IERieERhdGVUaW1lVmFsdWVNb2RlKTogKGRhdGU6IE1heWJlPERhdGUgfCBzdHJpbmc+KSA9PiBNYXliZTxEYXRlPiB7XG4gIGxldCBmYWN0b3J5OiAoZGF0ZTogTWF5YmU8RGF0ZSB8IHN0cmluZz4pID0+IE1heWJlPERhdGU+O1xuXG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUuREFZX1NUUklORzpcbiAgICAgIGZhY3RvcnkgPSAoeCkgPT4gKHR5cGVvZiB4ID09PSAnc3RyaW5nJyA/IHBhcnNlSVNPODYwMURheVN0cmluZ1RvRGF0ZSh4KSA6IHgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVRFX1NUUklORzpcbiAgICBjYXNlIERieERhdGVUaW1lVmFsdWVNb2RlLkRBVEU6XG4gICAgZGVmYXVsdDpcbiAgICAgIGZhY3RvcnkgPSAoeCkgPT4gKHggIT0gbnVsbCA/IHRvSnNEYXRlKHgpIDogeCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBmYWN0b3J5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGJ4RGF0ZVRpbWVPdXRwdXRWYWx1ZUZhY3RvcnkobW9kZTogRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUpOiAoZGF0ZTogTWF5YmU8RGF0ZT4pID0+IE1heWJlPERhdGUgfCBzdHJpbmc+IHtcbiAgbGV0IGZhY3Rvcnk6IChkYXRlOiBNYXliZTxEYXRlPikgPT4gTWF5YmU8RGF0ZSB8IHN0cmluZz47XG5cbiAgc3dpdGNoIChtb2RlKSB7XG4gICAgY2FzZSBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVRFX1NUUklORzpcbiAgICAgIGZhY3RvcnkgPSAoeCkgPT4gKHggIT0gbnVsbCA/IGZvcm1hdFRvSVNPODYwMURhdGVTdHJpbmcoeCkgOiB4KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUuREFZX1NUUklORzpcbiAgICAgIGZhY3RvcnkgPSAoeCkgPT4gKHggIT0gbnVsbCA/IGZvcm1hdFRvSVNPODYwMURheVN0cmluZyh4KSA6IHgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVRFOlxuICAgIGRlZmF1bHQ6XG4gICAgICBmYWN0b3J5ID0gKHgpID0+IHg7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBmYWN0b3J5O1xufVxuXG5leHBvcnQgdHlwZSBEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24gPSBPbWl0PERhdGVUaW1lTWludXRlQ29uZmlnLCAnZGF0ZSc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERieERhdGVUaW1lRmllbGRQcm9wcyBleHRlbmRzIEZvcm1seUZpZWxkUHJvcHMge1xuICAvKipcbiAgICogVmFsdWUgbW9kZS5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gREFURVxuICAgKi9cbiAgdmFsdWVNb2RlPzogRGJ4RGF0ZVRpbWVWYWx1ZU1vZGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBkYXRlIGlzIGhpZGRlbiwgYW5kIGF1dG9tYXRpY2FsbHkgdXNlcyB0b2RheS9pbnB1dCBkYXRlLlxuICAgKi9cbiAgdGltZU9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdGltZSBjYW4gYmUgYWRkZWQvcmVtb3ZlZCBvcHRpb25hbGx5LlxuICAgKlxuICAgKiBUaGlzIGlzIGlnbm9yZWQgaWYgdGltZU9ubHkgaXMgc3BlY2lmaWVkLlxuICAgKi9cbiAgdGltZU1vZGU/OiBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGU7XG5cbiAgLyoqXG4gICAqIE90aGVyIGZvcm0gY29udHJvbCBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHdoZXRoZXIgb3Igbm90IGl0IGlzIGEgZnVsbCBkYXkuXG4gICAqXG4gICAqIFRoaXMgZmllbGQgaXMgb25seSB1c2VkIGlmIHRpbWUgaXMgb3B0aW9uYWwuXG4gICAqXG4gICAqIFdoZW4gdGltZSBpcyBvZmYsIHRoZSBmaWVsZCBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIGZ1bGxEYXlGaWVsZE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHBhc3MgdGhlIGRhdGUgdmFsdWUgYXMgYSBVVEMgZGF0ZSwgb3IgYSBkYXRlIGluIHRoZSBjdXJyZW50IHRpbWV6b25lLlxuICAgKi9cbiAgZnVsbERheUluVVRDPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNlZCBmb3IgcmV0dXJuaW5nIHRoZSBjb25maWd1cmF0aW9uIG9ic2VydmFibGUuXG4gICAqL1xuICBnZXRDb25maWdPYnM/OiAoKSA9PiBPYnNlcnZhYmxlPERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbj47XG59XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ2RhdGV0aW1lLmZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYnhEYXRlVGltZUZpZWxkQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxEYnhEYXRlVGltZUZpZWxkUHJvcHM+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfc3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF92YWx1ZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBwcml2YXRlIF9mdWxsRGF5SW5wdXRDdHJsPzogRm9ybUNvbnRyb2w7XG4gIHByaXZhdGUgX2Z1bGxEYXlDb250cm9sT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBYnN0cmFjdENvbnRyb2w+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmdWxsRGF5Q29udHJvbCQgPSB0aGlzLl9mdWxsRGF5Q29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHByaXZhdGUgX29mZnNldCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVGltZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgdmFsdWUkID0gdGhpcy5mb3JtQ29udHJvbCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGNvbnRyb2wpID0+IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKGNvbnRyb2wudmFsdWUpLCBtYXAoZGJ4RGF0ZVRpbWVJbnB1dFZhbHVlUGFyc2VGYWN0b3J5KHRoaXMudmFsdWVNb2RlKSkpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gKGEgIT0gbnVsbCAmJiBiICE9IG51bGwgPyBpc1NhbWVNaW51dGUoYSwgYikgOiBhID09PSBiKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvKipcbiAgICogVXNlZCB0byB0cmlnZ2VyL2Rpc3BsYXkgdmlzdWFsIHVwZGF0ZXMgKHNwZWNpZmljYWxseSBvbiB0aW1lRGlzdGFuY2UsIGV0Yy4pLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheVZhbHVlJCA9IGludGVydmFsKDEwICogMTAwMCkucGlwZShcbiAgICBzdGFydFdpdGgoMCksXG4gICAgbWFwKCgpID0+IG5ldyBEYXRlKCkuZ2V0TWludXRlcygpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHRhcCgoKSA9PiB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy52YWx1ZSQpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdGltZVN0cmluZyQ6IE9ic2VydmFibGU8UmVhZGFibGVUaW1lU3RyaW5nPiA9IHRoaXMudmFsdWUkLnBpcGUoXG4gICAgZmlsdGVyTWF5YmUoKSxcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWV6b25lID0gZ3Vlc3NDdXJyZW50VGltZXpvbmUoKTtcbiAgICAgIGNvbnN0IHRpbWVTdHJpbmcgPSB0b1JlYWRhYmxlVGltZVN0cmluZyh4LCB0aW1lem9uZSk7XG4gICAgICByZXR1cm4gdGltZVN0cmluZztcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGVJbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2wobmV3IERhdGUoKSwge1xuICAgIHZhbGlkYXRvcnM6IFtdXG4gIH0pO1xuXG4gIHJlYWRvbmx5IHRpbWVJbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2woJycsIHtcbiAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5wYXR0ZXJuKC9eKG5vdykkfF4oWzAtOV18KDBbMC05XSl8KDFbMC05XSl8KDJbMC0zXSkpKDopPyhbMC01XVswLTldKT8oXFxzKT8oW2FwQVBdW01tXSk/KFxcXFxzKSokLyldXG4gIH0pO1xuXG4gIHByaXZhdGUgX2NvbmZpZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8T2JzZXJ2YWJsZTxEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24+Pj4odW5kZWZpbmVkKTtcblxuICBnZXQgZGF0ZU9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGltZU1vZGUgPT09IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FO1xuICB9XG5cbiAgZ2V0IGRhdGVUaW1lRmllbGQoKTogRGJ4RGF0ZVRpbWVGaWVsZFByb3BzIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcztcbiAgfVxuXG4gIGdldCB0aW1lT25seSgpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVRpbWVGaWVsZC50aW1lT25seTtcbiAgfVxuXG4gIGdldCBzaG93RGF0ZUlucHV0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy50aW1lT25seTtcbiAgfVxuXG4gIGdldCB0aW1lTW9kZSgpOiBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUge1xuICAgIHJldHVybiB0aGlzLnRpbWVPbmx5ID8gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVEIDogdGhpcy5kYXRlVGltZUZpZWxkLnRpbWVNb2RlID8/IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRDtcbiAgfVxuXG4gIGdldCB2YWx1ZU1vZGUoKTogRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnZhbHVlTW9kZSA/PyBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVRFO1xuICB9XG5cbiAgZ2V0IGRlc2NyaXB0aW9uKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgcmVhZG9ubHkgZnVsbERheSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmZ1bGxEYXlDb250cm9sJC5waXBlKHN3aXRjaE1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSkpKSk7XG5cbiAgcmVhZG9ubHkgc2hvd1RpbWVJbnB1dCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmZ1bGxEYXkkLnBpcGUobWFwKCh4KSA9PiAheCAmJiB0aGlzLnRpbWVNb2RlICE9PSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuTk9ORSkpO1xuXG4gIHJlYWRvbmx5IHNob3dBZGRUaW1lJCA9IHRoaXMuc2hvd1RpbWVJbnB1dCQucGlwZShcbiAgICBtYXAoKHgpID0+ICF4ICYmIHRoaXMudGltZU1vZGUgPT09IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5PUFRJT05BTCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRlJCA9IHRoaXMuZGF0ZUlucHV0Q3RybC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5kYXRlSW5wdXRDdHJsLnZhbHVlKSwgZmlsdGVyTWF5YmUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGRhdGVWYWx1ZSQgPSBtZXJnZSh0aGlzLmRhdGUkLCB0aGlzLnZhbHVlJC5waXBlKHNraXBGaXJzdE1heWJlKCkpKS5waXBlKFxuICAgIG1hcCgoeDogTWF5YmU8RGF0ZT4pID0+ICh4ID8gc3RhcnRPZkRheSh4KSA6IHgpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYSAhPSBudWxsICYmIGIgIT0gbnVsbCAmJiBpc1NhbWVEYXkoYSwgYikpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdGltZUlucHV0JDogT2JzZXJ2YWJsZTxSZWFkYWJsZVRpbWVTdHJpbmc+ID0gdGhpcy5fdXBkYXRlVGltZS5waXBlKFxuICAgIGRlYm91bmNlVGltZSg1KSxcbiAgICBtYXAoKCkgPT4gdGhpcy50aW1lSW5wdXRDdHJsLnZhbHVlIHx8ICcnKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICk7XG5cbiAgcmVhZG9ubHkgY29uZmlnJCA9IHRoaXMuX2NvbmZpZy5waXBlKHN3aXRjaE1hcE1heWJlRGVmYXVsdCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgcmF3RGF0ZVRpbWUkOiBPYnNlcnZhYmxlPE1heWJlPERhdGU+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZGF0ZVZhbHVlJCwgdGhpcy50aW1lSW5wdXQkLnBpcGUoc3RhcnRXaXRoKG51bGwpKSwgdGhpcy5mdWxsRGF5JF0pLnBpcGUoXG4gICAgbWFwKChbZGF0ZSwgdGltZVN0cmluZywgZnVsbERheV0pID0+IHtcbiAgICAgIGxldCByZXN1bHQ6IE1heWJlPERhdGU+O1xuXG4gICAgICBpZiAoZGF0ZSkge1xuICAgICAgICBpZiAoZnVsbERheSkge1xuICAgICAgICAgIGlmICh0aGlzLmRhdGVUaW1lRmllbGQuZnVsbERheUluVVRDKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB1dGNEYXlGb3JEYXRlKGRhdGUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBzdGFydE9mRGF5KGRhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aW1lU3RyaW5nKSB7XG4gICAgICAgICAgcmVzdWx0ID1cbiAgICAgICAgICAgIHJlYWRhYmxlVGltZVN0cmluZ1RvRGF0ZSh0aW1lU3RyaW5nLCB7XG4gICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgIHVzZVN5c3RlbVRpbWV6b25lOiB0cnVlXG4gICAgICAgICAgICB9KSA/PyBkYXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGRhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZDxNYXliZTxEYXRlPj4oKGEsIGIpID0+IGEgIT0gbnVsbCAmJiBiICE9IG51bGwgJiYgaXNTYW1lTWludXRlKGEsIGIpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHRpbWVPdXRwdXQkOiBPYnNlcnZhYmxlPE1heWJlPERhdGU+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMucmF3RGF0ZVRpbWUkLCB0aGlzLl9vZmZzZXQsIHRoaXMuY29uZmlnJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXSkucGlwZShcbiAgICB0aHJvdHRsZVRpbWUoNDAsIHVuZGVmaW5lZCwgeyBsZWFkaW5nOiBmYWxzZSwgdHJhaWxpbmc6IHRydWUgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGN1cnJlbnQsIG5leHQpID0+IGN1cnJlbnRbMF0gPT09IG5leHRbMF0gJiYgbmV4dFsxXSA9PT0gMCksXG4gICAgdGFwKChbLCBzdGVwc09mZnNldF0pID0+IChzdGVwc09mZnNldCA/IHRoaXMuX29mZnNldC5uZXh0KDApIDogMCkpLFxuICAgIG1hcCgoW2RhdGUsIHN0ZXBzT2Zmc2V0LCBjb25maWddKSA9PiB7XG4gICAgICBpZiAoZGF0ZSAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IERhdGVUaW1lTWludXRlSW5zdGFuY2Uoe1xuICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgIHJvdW5kRG93blRvTWludXRlOiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRhdGUgPSBpbnN0YW5jZS5saW1pdChkYXRlKTtcblxuICAgICAgICBjb25zdCBtaW51dGVzID0gc3RlcHNPZmZzZXQgKiA1O1xuICAgICAgICBkYXRlID0gYWRkTWludXRlcyhkYXRlLCBtaW51dGVzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGEgIT0gbnVsbCAmJiBiICE9IG51bGwgJiYgaXNTYW1lTWludXRlKGEsIGIpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLm5leHQodGhpcy5mb3JtQ29udHJvbCk7XG4gICAgdGhpcy5fY29uZmlnLm5leHQodGhpcy5kYXRlVGltZUZpZWxkLmdldENvbmZpZ09icz8uKCkpO1xuXG4gICAgY29uc3QgdmFsdWVGYWN0b3J5ID0gZGJ4RGF0ZVRpbWVPdXRwdXRWYWx1ZUZhY3RvcnkodGhpcy52YWx1ZU1vZGUpO1xuXG4gICAgdGhpcy5fc3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMudGltZU91dHB1dCQucGlwZShza2lwRmlyc3RNYXliZSgpKS5zdWJzY3JpYmUoKGRhdGVWYWx1ZSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZUZhY3RvcnkoZGF0ZVZhbHVlKTtcblxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZhbHVlU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMudGltZVN0cmluZyQuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAvLyBTa2lwIGV2ZW50cyB3aGVyZSB0aGUgdGltZUlucHV0IHZhbHVlIGlzIGNsZWFyZWQuXG4gICAgICBpZiAoIXRoaXMudGltZUlucHV0Q3RybC52YWx1ZSAmJiB4ID09PSAnMTI6MDBBTScpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldFRpbWUoeCk7XG4gICAgfSk7XG5cbiAgICAvLyBXYXRjaCBmb3IgZGlzYWJsZWQgY2hhbmdlcyBzbyB3ZSBjYW4gcHJvcG9nYXRlIHRoZW0gcHJvcGVybHkuXG4gICAgdGhpcy5mb3JtQ29udHJvbC5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UoKGRpc2FibGVkKSA9PiB7XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5kYXRlSW5wdXRDdHJsLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLnRpbWVJbnB1dEN0cmwuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGVJbnB1dEN0cmwuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy50aW1lSW5wdXRDdHJsLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBpc0Z1bGxEYXlGaWVsZCA9IHRoaXMuZGF0ZVRpbWVGaWVsZC5mdWxsRGF5RmllbGROYW1lO1xuICAgIGxldCBmdWxsRGF5RmllbGRDdHJsOiBNYXliZTxBYnN0cmFjdENvbnRyb2w+O1xuXG4gICAgaWYgKGlzRnVsbERheUZpZWxkKSB7XG4gICAgICBmdWxsRGF5RmllbGRDdHJsID0gdGhpcy5mb3JtLmdldChpc0Z1bGxEYXlGaWVsZCk7XG4gICAgfVxuXG4gICAgaWYgKCFmdWxsRGF5RmllbGRDdHJsKSB7XG4gICAgICB0aGlzLl9mdWxsRGF5SW5wdXRDdHJsID0gbmV3IEZvcm1Db250cm9sKHRydWUpO1xuXG4gICAgICAvLyBTZXQgdGhlIGNvbnRyb2wgaW4gdGhlIGZvcm0gdG9vIGlmIHRoZSBuYW1lIGlzIGRlZmluZWQuXG4gICAgICBpZiAoaXNGdWxsRGF5RmllbGQpIHtcbiAgICAgICAgKHRoaXMuZm9ybSBhcyBGb3JtR3JvdXApLmFkZENvbnRyb2woaXNGdWxsRGF5RmllbGQsIHRoaXMuX2Z1bGxEYXlJbnB1dEN0cmwpO1xuICAgICAgfVxuXG4gICAgICBmdWxsRGF5RmllbGRDdHJsID0gdGhpcy5fZnVsbERheUlucHV0Q3RybDtcbiAgICB9XG5cbiAgICB0aGlzLl9mdWxsRGF5Q29udHJvbE9icy5uZXh0KGZ1bGxEYXlGaWVsZEN0cmwpO1xuXG4gICAgc3dpdGNoICh0aGlzLmRhdGVUaW1lRmllbGQudGltZU1vZGUpIHtcbiAgICAgIGNhc2UgRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk9QVElPTkFMOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkU6XG4gICAgICAgIHRoaXMucmVtb3ZlVGltZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVEOlxuICAgICAgICB0aGlzLmFkZFRpbWUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9mdWxsRGF5Q29udHJvbE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX29mZnNldC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY29uZmlnLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fdXBkYXRlVGltZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fdmFsdWVTdWIuZGVzdHJveSgpO1xuICB9XG5cbiAgZGF0ZVBpY2tlZChldmVudDogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8RGF0ZT4pOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gZXZlbnQudmFsdWU7XG5cbiAgICBpZiAoZGF0ZSkge1xuICAgICAgdGhpcy5kYXRlSW5wdXRDdHJsLnNldFZhbHVlKGRhdGUpO1xuICAgICAgdGhpcy5fdXBkYXRlVGltZS5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgc2V0TG9naWNhbFRpbWUodGltZTogTG9naWNhbERhdGVTdHJpbmdDb2RlKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IGRhdGVGcm9tTG9naWNhbERhdGUodGltZSk7XG5cbiAgICBpZiAoZGF0ZSkge1xuICAgICAgY29uc3QgdGltZVN0cmluZyA9IHRvTG9jYWxSZWFkYWJsZVRpbWVTdHJpbmcoZGF0ZSk7XG4gICAgICB0aGlzLnNldFRpbWUodGltZVN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgc2V0VGltZSh0aW1lOiBSZWFkYWJsZVRpbWVTdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVJbnB1dEN0cmwuc2V0VmFsdWUodGltZSk7XG4gICAgdGhpcy5fb2Zmc2V0Lm5leHQoMCk7XG4gICAgdGhpcy5fdXBkYXRlVGltZS5uZXh0KCk7XG4gIH1cblxuICBrZXlkb3duT25JbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGxldCBkaXJlY3Rpb24gPSAwO1xuXG4gICAgc3dpdGNoIChldmVudC5rZXk/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ2Fycm93dXAnOlxuICAgICAgICBkaXJlY3Rpb24gPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fycm93ZG93bic6XG4gICAgICAgIGRpcmVjdGlvbiA9IC0xO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBsZXQgb2Zmc2V0ID0gMTtcblxuICAgIGlmIChldmVudC5hbHRLZXkgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIG9mZnNldCA9IDMwMDtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFsdEtleSkge1xuICAgICAgb2Zmc2V0ID0gNjA7XG4gICAgfSBlbHNlIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgb2Zmc2V0ID0gNTtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0aW9uICE9PSAwKSB7XG4gICAgICB0aGlzLl9vZmZzZXQubmV4dCh0aGlzLl9vZmZzZXQudmFsdWUgKyBvZmZzZXQgKiBkaXJlY3Rpb24pO1xuICAgICAgdGhpcy5fdXBkYXRlVGltZS5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXNUaW1lKCk6IHZvaWQge1xuICAgIC8vIGRvIG5vdGhpbmdcbiAgfVxuXG4gIGZvY3VzT3V0VGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVUaW1lLm5leHQoKTtcbiAgfVxuXG4gIGFkZFRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRGdWxsRGF5KGZhbHNlKTtcbiAgfVxuXG4gIHJlbW92ZVRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRGdWxsRGF5KHRydWUpO1xuICB9XG5cbiAgc2V0RnVsbERheShmdWxsRGF5OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5mdWxsRGF5Q29udHJvbCQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgIHguc2V0VmFsdWUoZnVsbERheSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYngtZGF0ZXRpbWUtZmllbGRcIiBmeExheW91dD1cInJvdyB3cmFwXCIgZnhMYXlvdXQueHM9XCJjb2x1bW4gd3JhcFwiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1ldmVubHkgc3RyZXRjaFwiPlxuICA8IS0tIERhdGUgLS0+XG4gIDxkaXYgY2xhc3M9XCJkYngtZGF0ZXRpbWUtcm93XCIgZnhGbGV4Lmx0LXNtPVwiMTAwXCIgW2Z4RmxleF09XCJkYXRlT25seSA/ICcxMDAnIDogJzUwJ1wiICpuZ0lmPVwic2hvd0RhdGVJbnB1dFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlSW5wdXRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPCEtLSBUaW1lIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvd1wiIGZ4RmxleC5sdC1zbT1cIjEwMFwiIFtmeEZsZXhdPVwic2hvd0RhdGVJbnB1dCA/ICc1MCcgOiAnMTAwJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VGltZUlucHV0JCB8IGFzeW5jXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGltZU1lbnVBbmRJbnB1dFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImFkZC10aW1lLWJ1dHRvbi13cmFwcGVyXCIgKm5nSWY9XCJzaG93QWRkVGltZSQgfCBhc3luY1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwiYWRkLXRpbWUtYnV0dG9uXCIgbmdDbGFzcy5sdC1zbT1cImFkZC10aW1lLWJ1dHRvbi1mdWxsXCIgKGNsaWNrKT1cImFkZFRpbWUoKVwiPlxuICAgICAgICA8bWF0LWljb24+dGltZXI8L21hdC1pY29uPlxuICAgICAgICBBZGQgVGltZVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvdyBkYngtZGF0ZXRpbWUtaGludC1yb3dcIiBmeEZsZXg9XCIxMDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LWhpbnRcIiBbbmdTd2l0Y2hdPVwiZnVsbERheSQgfCBhc3luY1wiPlxuICAgICAgPHNtYWxsICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XG4gICAgICAgIDxiIGNsYXNzPVwiZGJ4LW9rXCI+QWxsIERheTwvYj5cbiAgICAgICAge3sgZGF0ZVZhbHVlJCB8IGFzeW5jIHwgZGF0ZTogJ2Z1bGxEYXRlJyB9fSAoe3sgZGF0ZVZhbHVlJCB8IGFzeW5jIHwgZGF0ZURpc3RhbmNlIH19KVxuICAgICAgPC9zbWFsbD5cbiAgICAgIDxzbWFsbCAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZhbHVlJCB8IGFzeW5jXCI+XG4gICAgICAgICAgPGIgY2xhc3M9XCJkYngtb2tcIj5BdDwvYj5cbiAgICAgICAgICB7eyBkaXNwbGF5VmFsdWUkIHwgYXN5bmMgfCBkYXRlOiAnbWVkaXVtJyB9fSAoe3sgZGlzcGxheVZhbHVlJCB8IGFzeW5jIHwgdGltZURpc3RhbmNlIH19KVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gRGF0ZSBJbnB1dCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjZGF0ZUlucHV0VGVtcGxhdGU+XG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJwaWNrZXIub3BlbigpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPG1hdC1pY29uPmNhbGVuZGFyX3RvZGF5PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRieC1kYXRldGltZS1yb3ctZmllbGRcIj5cbiAgICA8bWF0LWxhYmVsPkRhdGU8L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgI2RhdGVJbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiZGF0ZUlucHV0Q3RybFwiIFttYXREYXRlcGlja2VyXT1cInBpY2tlclwiIChkYXRlQ2hhbmdlKT1cImRhdGVQaWNrZWQoJGV2ZW50KVwiIFt2YWx1ZV09XCJkYXRlVmFsdWUkIHwgYXN5bmNcIiAvPlxuICAgIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFRpbWUgTWVudS9JbnB1dCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjdGltZU1lbnVBbmRJbnB1dFRlbXBsYXRlPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwidGltZW1lbnVcIiBhcmlhLWxhYmVsPVwib3BlbnMgdGhlIHRpbWUgbWVudVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxtYXQtaWNvbj50aW1lcjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8bWF0LW1lbnUgI3RpbWVtZW51PVwibWF0TWVudVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aW1lTW9kZSA9PT0gJ29wdGlvbmFsJ1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJyZW1vdmVUaW1lKClcIj5cbiAgICAgICAgPHNwYW4+UmVtb3ZlIFRpbWU8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0TG9naWNhbFRpbWUoJ25vdycpXCI+XG4gICAgICA8c3Bhbj5Ob3c8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRUaW1lKCcxMjowMEFNJylcIj5cbiAgICAgIDxzcGFuPk1pZG5pZ2h0PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0VGltZSgnNjowMEFNJylcIj5cbiAgICAgIDxzcGFuPjY6MDBBTTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldFRpbWUoJzg6MDBBTScpXCI+XG4gICAgICA8c3Bhbj44OjAwQU08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRUaW1lKCcxMDowMEFNJylcIj5cbiAgICAgIDxzcGFuPjEwOjAwQU08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRUaW1lKCcxMjowMFBNJylcIj5cbiAgICAgIDxzcGFuPk5vb248L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRUaW1lKCcyOjAwUE0nKVwiPlxuICAgICAgPHNwYW4+MjowMFBNPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0VGltZSgnNTowMFBNJylcIj5cbiAgICAgIDxzcGFuPjU6MDBQTTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9tYXQtbWVudT5cbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvdy1maWVsZFwiPlxuICAgIDxtYXQtbGFiZWw+VGltZTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCAjdGltZUlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJ0aW1lSW5wdXRDdHJsXCIgKGZvY3VzKT1cImZvY3VzVGltZSgpXCIgKGZvY3Vzb3V0KT1cImZvY3VzT3V0VGltZSgpXCIgKGtleWRvd24pPVwia2V5ZG93bk9uSW5wdXQoJGV2ZW50KVwiIC8+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -17,7 +17,7 @@ export function timeOnlyField(config = {}) {
|
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
export function dateTimeField(config = {}) {
|
|
20
|
-
const { key = 'date', timeMode = DbxDateTimeFieldTimeMode.REQUIRED, fullDayFieldName, getConfigObs, timeOnly = false } = config;
|
|
20
|
+
const { key = 'date', timeMode = DbxDateTimeFieldTimeMode.REQUIRED, valueMode, fullDayFieldName, getConfigObs, timeOnly = false } = config;
|
|
21
21
|
const fieldConfig = formlyField({
|
|
22
22
|
key,
|
|
23
23
|
type: 'datetime',
|
|
@@ -25,6 +25,7 @@ export function dateTimeField(config = {}) {
|
|
|
25
25
|
timeMode: timeOnly ? DbxDateTimeFieldTimeMode.REQUIRED : timeMode,
|
|
26
26
|
fullDayFieldName,
|
|
27
27
|
getConfigObs,
|
|
28
|
+
valueMode,
|
|
28
29
|
timeOnly
|
|
29
30
|
})
|
|
30
31
|
});
|
|
@@ -32,4 +33,4 @@ export function dateTimeField(config = {}) {
|
|
|
32
33
|
classGetter: 'dbx-mat-form-field-disable-underline'
|
|
33
34
|
});
|
|
34
35
|
}
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFzQixXQUFXLEVBQUUsbUJBQW1CLEVBQTBCLE1BQU0sYUFBYSxDQUFDO0FBQzNHLE9BQU8sRUFBeUIsd0JBQXdCLEVBQStCLE1BQU0sNEJBQTRCLENBQUM7QUFDMUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBS3JELE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFrRCxHQUFHLEVBQUUsQ0FDcEcsRUFBRSxDQUFDO0lBQ0Qsb0JBQW9CLEVBQUUsSUFBSTtJQUMxQixpQkFBaUIsRUFBRSxJQUFJO0NBQ3hCLENBQUMsQ0FBQztBQUVMOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxTQUFtQyxFQUFFO0lBQ2pFLE9BQU8sYUFBYSxDQUFDO1FBQ25CLEdBQUcsTUFBTTtRQUNULFFBQVEsRUFBRSx3QkFBd0IsQ0FBQyxRQUFRO1FBQzNDLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsU0FBdUMsRUFBRTtJQUNyRSxNQUFNLEVBQUUsR0FBRyxHQUFHLE1BQU0sRUFBRSxRQUFRLEdBQUcsd0JBQXdCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsUUFBUSxHQUFHLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUUzSSxNQUFNLFdBQVcsR0FBNkMsV0FBVyxDQUFDO1FBQ3hFLEdBQUc7UUFDSCxJQUFJLEVBQUUsVUFBVTtRQUNoQixHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtZQUM3QixRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVE7WUFDakUsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixTQUFTO1lBQ1QsUUFBUTtTQUNULENBQUM7S0FDSCxDQUFDLENBQUM7SUFFSCxPQUFPLFlBQVksQ0FBQyxXQUFXLEVBQUU7UUFDL0IsV0FBVyxFQUFFLHNDQUFzQztLQUNwRCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBMYWJlbGVkRmllbGRDb25maWcsIGZvcm1seUZpZWxkLCBwcm9wc0ZvckZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmllbGQnO1xuaW1wb3J0IHsgRGJ4RGF0ZVRpbWVGaWVsZFByb3BzLCBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUsIERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZGF0ZXRpbWUuZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IHN0eWxlV3JhcHBlciB9IGZyb20gJy4uLy4uL3dyYXBwZXIvd3JhcHBlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVRpbWVGaWVsZENvbmZpZyBleHRlbmRzIExhYmVsZWRGaWVsZENvbmZpZywgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgRGJ4RGF0ZVRpbWVGaWVsZFByb3BzIHt9XG5leHBvcnQgdHlwZSBUaW1lRmllbGRDb25maWcgPSBPbWl0PERhdGVUaW1lRmllbGRDb25maWcsICdzaG93RGF0ZSc+O1xuXG5leHBvcnQgY29uc3QgVEFLRV9ORVhUX1VQQ09NSU5HX1RJTUVfQ09ORklHX09CUzogKCkgPT4gT2JzZXJ2YWJsZTxEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24+ID0gKCkgPT5cbiAgb2Yoe1xuICAgIHRha2VOZXh0VXBjb21pbmdUaW1lOiB0cnVlLFxuICAgIHJvdW5kRG93blRvTWludXRlOiB0cnVlXG4gIH0pO1xuXG4vKipcbiAqIFNhbWUgYXMgRGF0ZVRpbWUgZmllbGQgYnV0IHdpdGggdGhlIERhdGUgaW5wdXQgaGlkZGVuIGJ5IGRlZmF1bHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aW1lT25seUZpZWxkKGNvbmZpZzogUGFydGlhbDxUaW1lRmllbGRDb25maWc+ID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIHJldHVybiBkYXRlVGltZUZpZWxkKHtcbiAgICAuLi5jb25maWcsXG4gICAgdGltZU1vZGU6IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRCxcbiAgICB0aW1lT25seTogdHJ1ZVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVUaW1lRmllbGQoY29uZmlnOiBQYXJ0aWFsPERhdGVUaW1lRmllbGRDb25maWc+ID0ge30pIHtcbiAgY29uc3QgeyBrZXkgPSAnZGF0ZScsIHRpbWVNb2RlID0gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVELCB2YWx1ZU1vZGUsIGZ1bGxEYXlGaWVsZE5hbWUsIGdldENvbmZpZ09icywgdGltZU9ubHkgPSBmYWxzZSB9ID0gY29uZmlnO1xuXG4gIGNvbnN0IGZpZWxkQ29uZmlnOiBGb3JtbHlGaWVsZENvbmZpZzxEYnhEYXRlVGltZUZpZWxkUHJvcHM+ID0gZm9ybWx5RmllbGQoe1xuICAgIGtleSxcbiAgICB0eXBlOiAnZGF0ZXRpbWUnLFxuICAgIC4uLnByb3BzRm9yRmllbGRDb25maWcoY29uZmlnLCB7XG4gICAgICB0aW1lTW9kZTogdGltZU9ubHkgPyBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuUkVRVUlSRUQgOiB0aW1lTW9kZSxcbiAgICAgIGZ1bGxEYXlGaWVsZE5hbWUsXG4gICAgICBnZXRDb25maWdPYnMsXG4gICAgICB2YWx1ZU1vZGUsXG4gICAgICB0aW1lT25seVxuICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBzdHlsZVdyYXBwZXIoZmllbGRDb25maWcsIHtcbiAgICBjbGFzc0dldHRlcjogJ2RieC1tYXQtZm9ybS1maWVsZC1kaXNhYmxlLXVuZGVybGluZSdcbiAgfSk7XG59XG4iXX0=
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import { Validators } from '@angular/forms';
|
|
2
2
|
import { textField } from './text.field';
|
|
3
3
|
import { validatorsForFieldConfig } from '../../field';
|
|
4
|
-
import { LAT_LNG_PATTERN, US_STATE_CODE_STRING_REGEX
|
|
4
|
+
import { LAT_LNG_PATTERN, US_STATE_CODE_STRING_REGEX, ZIP_CODE_STRING_REGEX } from '@dereekb/util';
|
|
5
|
+
import { ADDRESS_CITY_MAX_LENGTH, ADDRESS_STATE_CODE_MAX_LENGTH, ADDRESS_STATE_MAX_LENGTH, ADDRESS_COUNTRY_MAX_LENGTH, ADDRESS_ZIP_MAX_LENGTH } from '@dereekb/model';
|
|
5
6
|
export const PHONE_LABEL_MAX_LENGTH = 100;
|
|
6
|
-
export const ADDRESS_COUNTRY_MAX_LENGTH = 80;
|
|
7
|
-
export const ADDRESS_CITY_MAX_LENGTH = 80;
|
|
8
|
-
export const ADDRESS_STATE_MAX_LENGTH = 30;
|
|
9
|
-
export const ADDRESS_STATE_CODE_MAX_LENGTH = 2;
|
|
10
|
-
export const ADDRESS_ZIP_MAX_LENGTH = 11;
|
|
11
7
|
export const LABEL_STRING_MAX_LENGTH = 100;
|
|
12
8
|
export const SEARCH_STRING_MAX_LENGTH = 100;
|
|
13
9
|
export function nameField({ key = 'name', label = 'Name', placeholder = 'John Doe', required = false, minLength, maxLength, attributes } = {}) {
|
|
@@ -51,7 +47,7 @@ export function cityField(config = {}) {
|
|
|
51
47
|
});
|
|
52
48
|
}
|
|
53
49
|
export function stateField(config = {}) {
|
|
54
|
-
const { asCode = false, pattern = asCode ?
|
|
50
|
+
const { asCode = false, pattern = asCode ? US_STATE_CODE_STRING_REGEX : undefined, key = 'state', placeholder = '', label = 'State', autocomplete = 'state', maxLength = asCode ? ADDRESS_STATE_CODE_MAX_LENGTH : ADDRESS_STATE_MAX_LENGTH, required = false } = config;
|
|
55
51
|
return textField({
|
|
56
52
|
...config,
|
|
57
53
|
key,
|
|
@@ -76,12 +72,13 @@ export function countryField(config = {}) {
|
|
|
76
72
|
});
|
|
77
73
|
}
|
|
78
74
|
export function zipCodeField(config = {}) {
|
|
79
|
-
const { key = 'zip', placeholder = '', label = 'Zip Code', autocomplete = 'postal-code', maxLength = ADDRESS_ZIP_MAX_LENGTH, required = false } = config;
|
|
75
|
+
const { key = 'zip', placeholder = '', label = 'Zip Code', autocomplete = 'postal-code', pattern = ZIP_CODE_STRING_REGEX, maxLength = ADDRESS_ZIP_MAX_LENGTH, required = false } = config;
|
|
80
76
|
return textField({
|
|
81
77
|
...config,
|
|
82
78
|
key,
|
|
83
79
|
placeholder,
|
|
84
80
|
label,
|
|
81
|
+
pattern,
|
|
85
82
|
autocomplete,
|
|
86
83
|
required,
|
|
87
84
|
maxLength
|
|
@@ -106,4 +103,4 @@ export function latLngTextField({ key = 'latLng' } = {}) {
|
|
|
106
103
|
};
|
|
107
104
|
return field;
|
|
108
105
|
}
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5hZGRpdGlvbmFsLmZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvdGV4dC90ZXh0LmFkZGl0aW9uYWwuZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQW1CLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxRCxPQUFPLEVBQThDLHdCQUF3QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxlQUFlLEVBQUUsMEJBQTBCLElBQUksbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkcsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztBQUM3QyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLENBQUMsQ0FBQztBQUMvQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEdBQUcsQ0FBQztBQUU1QyxNQUFNLFVBQVUsU0FBUyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFLFdBQVcsR0FBRyxVQUFVLEVBQUUsUUFBUSxHQUFHLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsS0FBK0IsRUFBRTtJQUNySyxPQUFPLFNBQVMsQ0FBQztRQUNmLEdBQUc7UUFDSCxLQUFLO1FBQ0wsV0FBVztRQUNYLFFBQVE7UUFDUixTQUFTO1FBQ1QsU0FBUztRQUNULFVBQVU7S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBTUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxTQUEyQixFQUFFO0lBQ3RELE1BQU0sRUFBRSxHQUFHLEdBQUcsT0FBTyxFQUFFLEtBQUssR0FBRyxlQUFlLEVBQUUsV0FBVyxHQUFHLGlCQUFpQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQzNGLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1FBQ2pDLEdBQUcsTUFBTTtRQUNULEdBQUc7UUFDSCxLQUFLO1FBQ0wsV0FBVztRQUNYLFNBQVMsRUFBRSxPQUFPO0tBQ25CLENBQUMsQ0FBQztJQUVILGdCQUFnQixDQUFDLFVBQVUsR0FBRztRQUM1QixLQUFLLEVBQUU7WUFDTCxVQUFVLEVBQUUsQ0FBQyxDQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyw0QkFBNEI7U0FDNUM7S0FDRixDQUFDO0lBRUYsT0FBTyxnQkFBZ0IsQ0FBQztBQUMxQixDQUFDO0FBSUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxTQUEwQixFQUFFO0lBQ3BELE1BQU0sRUFBRSxHQUFHLEdBQUcsTUFBTSxFQUFFLFdBQVcsR0FBRyxFQUFFLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRSxZQUFZLEdBQUcsTUFBTSxFQUFFLFNBQVMsR0FBRyx1QkFBdUIsRUFBRSxRQUFRLEdBQUcsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ2hKLE9BQU8sU0FBUyxDQUFDO1FBQ2YsR0FBRyxNQUFNO1FBQ1QsR0FBRztRQUNILFdBQVc7UUFDWCxLQUFLO1FBQ0wsWUFBWTtRQUNaLFFBQVE7UUFDUixTQUFTO0tBQ1YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQU1ELE1BQU0sVUFBVSxVQUFVLENBQUMsU0FBMkIsRUFBRTtJQUN0RCxNQUFNLEVBQUUsTUFBTSxHQUFHLEtBQUssRUFBRSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEdBQUcsR0FBRyxPQUFPLEVBQUUsV0FBVyxHQUFHLEVBQUUsRUFBRSxLQUFLLEdBQUcsT0FBTyxFQUFFLFlBQVksR0FBRyxPQUFPLEVBQUUsU0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLFFBQVEsR0FBRyxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDalEsT0FBTyxTQUFTLENBQUM7UUFDZixHQUFHLE1BQU07UUFDVCxHQUFHO1FBQ0gsV0FBVztRQUNYLEtBQUs7UUFDTCxPQUFPO1FBQ1AsWUFBWTtRQUNaLFFBQVE7UUFDUixTQUFTO0tBQ1YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUlELE1BQU0sVUFBVSxZQUFZLENBQUMsU0FBNkIsRUFBRTtJQUMxRCxNQUFNLEVBQUUsR0FBRyxHQUFHLFNBQVMsRUFBRSxXQUFXLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxTQUFTLEVBQUUsWUFBWSxHQUFHLFNBQVMsRUFBRSxTQUFTLEdBQUcsMEJBQTBCLEVBQUUsUUFBUSxHQUFHLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUM1SixPQUFPLFNBQVMsQ0FBQztRQUNmLEdBQUcsTUFBTTtRQUNULEdBQUc7UUFDSCxXQUFXO1FBQ1gsS0FBSztRQUNMLFlBQVk7UUFDWixRQUFRO1FBQ1IsU0FBUztLQUNWLENBQUMsQ0FBQztBQUNMLENBQUM7QUFJRCxNQUFNLFVBQVUsWUFBWSxDQUFDLFNBQTZCLEVBQUU7SUFDMUQsTUFBTSxFQUFFLEdBQUcsR0FBRyxLQUFLLEVBQUUsV0FBVyxHQUFHLEVBQUUsRUFBRSxLQUFLLEdBQUcsVUFBVSxFQUFFLFlBQVksR0FBRyxhQUFhLEVBQUUsU0FBUyxHQUFHLHNCQUFzQixFQUFFLFFBQVEsR0FBRyxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDekosT0FBTyxTQUFTLENBQUM7UUFDZixHQUFHLE1BQU07UUFDVCxHQUFHO1FBQ0gsV0FBVztRQUNYLEtBQUs7UUFDTCxZQUFZO1FBQ1osUUFBUTtRQUNSLFNBQVM7S0FDVixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsaUJBQWlCLENBQUM7QUFDeEUsTUFBTSxDQUFDLE1BQU0sMENBQTBDLEdBQUcsNkJBQTZCLENBQUM7QUFFeEYsTUFBTSxVQUFVLGVBQWUsQ0FBQyxFQUFFLEdBQUcsR0FBRyxRQUFRLEtBQStCLEVBQUU7SUFDL0UsTUFBTSxLQUFLLEdBQUc7UUFDWixHQUFHLFNBQVMsQ0FBQztZQUNYLEdBQUc7WUFDSCxLQUFLLEVBQUUsYUFBYTtZQUNwQixXQUFXLEVBQUUsc0NBQXNDO1lBQ25ELE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUM7UUFDRixHQUFHLHdCQUF3QixDQUFDO1lBQzFCLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsMENBQTBDO2FBQ3BEO1NBQ0YsQ0FBQztLQUNILENBQUM7SUFFRixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycywgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGV4dEZpZWxkQ29uZmlnLCB0ZXh0RmllbGQgfSBmcm9tICcuL3RleHQuZmllbGQnO1xuaW1wb3J0IHsgTGFiZWxlZEZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCB2YWxpZGF0b3JzRm9yRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9maWVsZCc7XG5pbXBvcnQgeyBMQVRfTE5HX1BBVFRFUk4sIFVTX1NUQVRFX0NPREVfU1RSSU5HX1JFR0VYIGFzIFVTX1NUQVRFX0NPREVfUkVHRVggfSBmcm9tICdAZGVyZWVrYi91dGlsJztcblxuZXhwb3J0IGNvbnN0IFBIT05FX0xBQkVMX01BWF9MRU5HVEggPSAxMDA7XG5cbmV4cG9ydCBjb25zdCBBRERSRVNTX0NPVU5UUllfTUFYX0xFTkdUSCA9IDgwO1xuZXhwb3J0IGNvbnN0IEFERFJFU1NfQ0lUWV9NQVhfTEVOR1RIID0gODA7XG5leHBvcnQgY29uc3QgQUREUkVTU19TVEFURV9NQVhfTEVOR1RIID0gMzA7XG5leHBvcnQgY29uc3QgQUREUkVTU19TVEFURV9DT0RFX01BWF9MRU5HVEggPSAyO1xuZXhwb3J0IGNvbnN0IEFERFJFU1NfWklQX01BWF9MRU5HVEggPSAxMTtcblxuZXhwb3J0IGNvbnN0IExBQkVMX1NUUklOR19NQVhfTEVOR1RIID0gMTAwO1xuZXhwb3J0IGNvbnN0IFNFQVJDSF9TVFJJTkdfTUFYX0xFTkdUSCA9IDEwMDtcblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGaWVsZCh7IGtleSA9ICduYW1lJywgbGFiZWwgPSAnTmFtZScsIHBsYWNlaG9sZGVyID0gJ0pvaG4gRG9lJywgcmVxdWlyZWQgPSBmYWxzZSwgbWluTGVuZ3RoLCBtYXhMZW5ndGgsIGF0dHJpYnV0ZXMgfTogUGFydGlhbDxUZXh0RmllbGRDb25maWc+ID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIHJldHVybiB0ZXh0RmllbGQoe1xuICAgIGtleSxcbiAgICBsYWJlbCxcbiAgICBwbGFjZWhvbGRlcixcbiAgICByZXF1aXJlZCxcbiAgICBtaW5MZW5ndGgsXG4gICAgbWF4TGVuZ3RoLFxuICAgIGF0dHJpYnV0ZXNcbiAgfSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1haWxGaWVsZENvbmZpZyBleHRlbmRzIFBhcnRpYWw8TGFiZWxlZEZpZWxkQ29uZmlnPiwgRGVzY3JpcHRpb25GaWVsZENvbmZpZyB7XG4gIHJvd3M/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbWFpbEZpZWxkKGNvbmZpZzogRW1haWxGaWVsZENvbmZpZyA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IGtleSA9ICdlbWFpbCcsIGxhYmVsID0gJ0VtYWlsIEFkZHJlc3MnLCBwbGFjZWhvbGRlciA9ICd5b3VAZXhhbXBsZS5jb20nIH0gPSBjb25maWc7XG4gIGNvbnN0IGVtYWlsRmllbGRDb25maWcgPSB0ZXh0RmllbGQoe1xuICAgIC4uLmNvbmZpZyxcbiAgICBrZXksXG4gICAgbGFiZWwsXG4gICAgcGxhY2Vob2xkZXIsXG4gICAgaW5wdXRUeXBlOiAnZW1haWwnXG4gIH0pO1xuXG4gIGVtYWlsRmllbGRDb25maWcudmFsaWRhdG9ycyA9IHtcbiAgICBlbWFpbDoge1xuICAgICAgZXhwcmVzc2lvbjogKGM6IEFic3RyYWN0Q29udHJvbCkgPT4gIVZhbGlkYXRvcnMuZW1haWwoYyksXG4gICAgICBtZXNzYWdlOiAoKSA9PiBgTm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcy5gXG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBlbWFpbEZpZWxkQ29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENpdHlGaWVsZENvbmZpZyBleHRlbmRzIFBhcnRpYWw8VGV4dEZpZWxkQ29uZmlnPiB7fVxuXG5leHBvcnQgZnVuY3Rpb24gY2l0eUZpZWxkKGNvbmZpZzogQ2l0eUZpZWxkQ29uZmlnID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsga2V5ID0gJ2NpdHknLCBwbGFjZWhvbGRlciA9ICcnLCBsYWJlbCA9ICdDaXR5JywgYXV0b2NvbXBsZXRlID0gJ2NpdHknLCBtYXhMZW5ndGggPSBBRERSRVNTX0NJVFlfTUFYX0xFTkdUSCwgcmVxdWlyZWQgPSBmYWxzZSB9ID0gY29uZmlnO1xuICByZXR1cm4gdGV4dEZpZWxkKHtcbiAgICAuLi5jb25maWcsXG4gICAga2V5LFxuICAgIHBsYWNlaG9sZGVyLFxuICAgIGxhYmVsLFxuICAgIGF1dG9jb21wbGV0ZSxcbiAgICByZXF1aXJlZCxcbiAgICBtYXhMZW5ndGhcbiAgfSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGVGaWVsZENvbmZpZyBleHRlbmRzIFBhcnRpYWw8VGV4dEZpZWxkQ29uZmlnPiB7XG4gIGFzQ29kZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZUZpZWxkKGNvbmZpZzogU3RhdGVGaWVsZENvbmZpZyA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IGFzQ29kZSA9IGZhbHNlLCBwYXR0ZXJuID0gYXNDb2RlID8gVVNfU1RBVEVfQ09ERV9SRUdFWCA6IHVuZGVmaW5lZCwga2V5ID0gJ3N0YXRlJywgcGxhY2Vob2xkZXIgPSAnJywgbGFiZWwgPSAnU3RhdGUnLCBhdXRvY29tcGxldGUgPSAnc3RhdGUnLCBtYXhMZW5ndGggPSBhc0NvZGUgPyBBRERSRVNTX1NUQVRFX0NPREVfTUFYX0xFTkdUSCA6IEFERFJFU1NfU1RBVEVfTUFYX0xFTkdUSCwgcmVxdWlyZWQgPSBmYWxzZSB9ID0gY29uZmlnO1xuICByZXR1cm4gdGV4dEZpZWxkKHtcbiAgICAuLi5jb25maWcsXG4gICAga2V5LFxuICAgIHBsYWNlaG9sZGVyLFxuICAgIGxhYmVsLFxuICAgIHBhdHRlcm4sXG4gICAgYXV0b2NvbXBsZXRlLFxuICAgIHJlcXVpcmVkLFxuICAgIG1heExlbmd0aFxuICB9KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb3VudHJ5RmllbGRDb25maWcgZXh0ZW5kcyBQYXJ0aWFsPFRleHRGaWVsZENvbmZpZz4ge31cblxuZXhwb3J0IGZ1bmN0aW9uIGNvdW50cnlGaWVsZChjb25maWc6IENvdW50cnlGaWVsZENvbmZpZyA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IGtleSA9ICdjb3VudHJ5JywgcGxhY2Vob2xkZXIgPSAnJywgbGFiZWwgPSAnQ291bnRyeScsIGF1dG9jb21wbGV0ZSA9ICdjb3VudHJ5JywgbWF4TGVuZ3RoID0gQUREUkVTU19DT1VOVFJZX01BWF9MRU5HVEgsIHJlcXVpcmVkID0gZmFsc2UgfSA9IGNvbmZpZztcbiAgcmV0dXJuIHRleHRGaWVsZCh7XG4gICAgLi4uY29uZmlnLFxuICAgIGtleSxcbiAgICBwbGFjZWhvbGRlcixcbiAgICBsYWJlbCxcbiAgICBhdXRvY29tcGxldGUsXG4gICAgcmVxdWlyZWQsXG4gICAgbWF4TGVuZ3RoXG4gIH0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFppcENvZGVGaWVsZENvbmZpZyBleHRlbmRzIFBhcnRpYWw8VGV4dEZpZWxkQ29uZmlnPiB7fVxuXG5leHBvcnQgZnVuY3Rpb24gemlwQ29kZUZpZWxkKGNvbmZpZzogWmlwQ29kZUZpZWxkQ29uZmlnID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsga2V5ID0gJ3ppcCcsIHBsYWNlaG9sZGVyID0gJycsIGxhYmVsID0gJ1ppcCBDb2RlJywgYXV0b2NvbXBsZXRlID0gJ3Bvc3RhbC1jb2RlJywgbWF4TGVuZ3RoID0gQUREUkVTU19aSVBfTUFYX0xFTkdUSCwgcmVxdWlyZWQgPSBmYWxzZSB9ID0gY29uZmlnO1xuICByZXR1cm4gdGV4dEZpZWxkKHtcbiAgICAuLi5jb25maWcsXG4gICAga2V5LFxuICAgIHBsYWNlaG9sZGVyLFxuICAgIGxhYmVsLFxuICAgIGF1dG9jb21wbGV0ZSxcbiAgICByZXF1aXJlZCxcbiAgICBtYXhMZW5ndGhcbiAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xBVF9MTkdfVEVYVF9GSUVMRF9QTEFDRUhPTERFUiA9ICcxMi4zNDUsLTY3Ljg5MTAnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTEFUX0xOR19URVhUX0ZJRUxEX1BBVFRFUk5fTUVTU0FHRSA9IGBJbnZhbGlkL3Vua25vd24gY29vcmRpbmF0ZXNgO1xuXG5leHBvcnQgZnVuY3Rpb24gbGF0TG5nVGV4dEZpZWxkKHsga2V5ID0gJ2xhdExuZycgfTogUGFydGlhbDxUZXh0RmllbGRDb25maWc+ID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IGZpZWxkID0ge1xuICAgIC4uLnRleHRGaWVsZCh7XG4gICAgICBrZXksXG4gICAgICBsYWJlbDogJ0Nvb3JkaW5hdGVzJyxcbiAgICAgIHBsYWNlaG9sZGVyOiBERUZBVUxUX0xBVF9MTkdfVEVYVF9GSUVMRF9QTEFDRUhPTERFUixcbiAgICAgIHBhdHRlcm46IExBVF9MTkdfUEFUVEVSTixcbiAgICAgIGF1dG9jb21wbGV0ZTogZmFsc2VcbiAgICB9KSxcbiAgICAuLi52YWxpZGF0b3JzRm9yRmllbGRDb25maWcoe1xuICAgICAgbWVzc2FnZXM6IHtcbiAgICAgICAgcGF0dGVybjogREVGQVVMVF9MQVRfTE5HX1RFWFRfRklFTERfUEFUVEVSTl9NRVNTQUdFXG4gICAgICB9XG4gICAgfSlcbiAgfTtcblxuICByZXR1cm4gZmllbGQ7XG59XG4iXX0=
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5hZGRpdGlvbmFsLmZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvdGV4dC90ZXh0LmFkZGl0aW9uYWwuZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQW1CLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxRCxPQUFPLEVBQThDLHdCQUF3QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxlQUFlLEVBQUUsMEJBQTBCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLDZCQUE2QixFQUFFLHdCQUF3QixFQUFFLDBCQUEwQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEssTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztBQUMzQyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLENBQUM7QUFFNUMsTUFBTSxVQUFVLFNBQVMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxNQUFNLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRSxXQUFXLEdBQUcsVUFBVSxFQUFFLFFBQVEsR0FBRyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEtBQStCLEVBQUU7SUFDckssT0FBTyxTQUFTLENBQUM7UUFDZixHQUFHO1FBQ0gsS0FBSztRQUNMLFdBQVc7UUFDWCxRQUFRO1FBQ1IsU0FBUztRQUNULFNBQVM7UUFDVCxVQUFVO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQU1ELE1BQU0sVUFBVSxVQUFV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UTtRQUNSLFNBQVM7S0FDVixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsaUJBQWlCLENBQUM7QUFDeEUsTUFBTSxDQUFDLE1BQU0sMENBQTBDLEdBQUcsNkJBQTZCLENBQUM7QUFFeEYsTUFBTSxVQUFVLGVBQWUsQ0FBQyxFQUFFLEdBQUcsR0FBRyxRQUFRLEtBQStCLEVBQUU7SUFDL0UsTUFBTSxLQUFLLEdBQUc7UUFDWixHQUFHLFNBQVMsQ0FBQztZQUNYLEdBQUc7WUFDSCxLQUFLLEVBQUUsYUFBYTtZQUNwQixXQUFXLEVBQUUsc0NBQXNDO1lBQ25ELE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUM7UUFDRixHQUFHLHdCQUF3QixDQUFDO1lBQzFCLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsMENBQTBDO2FBQ3BEO1NBQ0YsQ0FBQztLQUNILENBQUM7SUFFRixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycywgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGV4dEZpZWxkQ29uZmlnLCB0ZXh0RmllbGQgfSBmcm9tICcuL3RleHQuZmllbGQnO1xuaW1wb3J0IHsgTGFiZWxlZEZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCB2YWxpZGF0b3JzRm9yRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9maWVsZCc7XG5pbXBvcnQgeyBMQVRfTE5HX1BBVFRFUk4sIFVTX1NUQVRFX0NPREVfU1RSSU5HX1JFR0VYLCBaSVBfQ09ERV9TVFJJTkdfUkVHRVggfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IEFERFJFU1NfQ0lUWV9NQVhfTEVOR1RILCBBRERSRVNTX1NUQVRFX0NPREVfTUFYX0xFTkdUSCwgQUREUkVTU19TVEFURV9NQVhfTEVOR1RILCBBRERSRVNTX0NPVU5UUllfTUFYX0xFTkdUSCwgQUREUkVTU19aSVBfTUFYX0xFTkdUSCB9IGZyb20gJ0BkZXJlZWtiL21vZGVsJztcblxuZXhwb3J0IGNvbnN0IFBIT05FX0xBQkVMX01BWF9MRU5HVEggPSAxMDA7XG5cbmV4cG9ydCBjb25zdCBMQUJFTF9TVFJJTkdfTUFYX0xFTkdUSCA9IDEwMDtcbmV4cG9ydCBjb25zdCBTRUFSQ0hfU1RSSU5HX01BWF9MRU5HVEggPSAxMDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lRmllbGQoeyBrZXkgPSAnbmFtZScsIGxhYmVsID0gJ05hbWUnLCBwbGFjZWhvbGRlciA9ICdKb2huIERvZScsIHJlcXVpcmVkID0gZmFsc2UsIG1pbkxlbmd0aCwgbWF4TGVuZ3RoLCBhdHRyaWJ1dGVzIH06IFBhcnRpYWw8VGV4dEZpZWxkQ29uZmlnPiA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICByZXR1cm4gdGV4dEZpZWxkKHtcbiAgICBrZXksXG4gICAgbGFiZWwsXG4gICAgcGxhY2Vob2xkZXIsXG4gICAgcmVxdWlyZWQsXG4gICAgbWluTGVuZ3RoLFxuICAgIG1heExlbmd0aCxcbiAgICBhdHRyaWJ1dGVzXG4gIH0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsRmllbGRDb25maWcgZXh0ZW5kcyBQYXJ0aWFsPExhYmVsZWRGaWVsZENvbmZpZz4sIERlc2NyaXB0aW9uRmllbGRDb25maWcge1xuICByb3dzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW1haWxGaWVsZChjb25maWc6IEVtYWlsRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyBrZXkgPSAnZW1haWwnLCBsYWJlbCA9ICdFbWFpbCBBZGRyZXNzJywgcGxhY2Vob2xkZXIgPSAneW91QGV4YW1wbGUuY29tJyB9ID0gY29uZmlnO1xuICBjb25zdCBlbWFpbEZpZWxkQ29uZmlnID0gdGV4dEZpZWxkKHtcbiAgICAuLi5jb25maWcsXG4gICAga2V5LFxuICAgIGxhYmVsLFxuICAgIHBsYWNlaG9sZGVyLFxuICAgIGlucHV0VHlwZTogJ2VtYWlsJ1xuICB9KTtcblxuICBlbWFpbEZpZWxkQ29uZmlnLnZhbGlkYXRvcnMgPSB7XG4gICAgZW1haWw6IHtcbiAgICAgIGV4cHJlc3Npb246IChjOiBBYnN0cmFjdENvbnRyb2wpID0+ICFWYWxpZGF0b3JzLmVtYWlsKGMpLFxuICAgICAgbWVzc2FnZTogKCkgPT4gYE5vdCBhIHZhbGlkIGVtYWlsIGFkZHJlc3MuYFxuICAgIH1cbiAgfTtcblxuICByZXR1cm4gZW1haWxGaWVsZENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaXR5RmllbGRDb25maWcgZXh0ZW5kcyBQYXJ0aWFsPFRleHRGaWVsZENvbmZpZz4ge31cblxuZXhwb3J0IGZ1bmN0aW9uIGNpdHlGaWVsZChjb25maWc6IENpdHlGaWVsZENvbmZpZyA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IGtleSA9ICdjaXR5JywgcGxhY2Vob2xkZXIgPSAnJywgbGFiZWwgPSAnQ2l0eScsIGF1dG9jb21wbGV0ZSA9ICdjaXR5JywgbWF4TGVuZ3RoID0gQUREUkVTU19DSVRZX01BWF9MRU5HVEgsIHJlcXVpcmVkID0gZmFsc2UgfSA9IGNvbmZpZztcbiAgcmV0dXJuIHRleHRGaWVsZCh7XG4gICAgLi4uY29uZmlnLFxuICAgIGtleSxcbiAgICBwbGFjZWhvbGRlcixcbiAgICBsYWJlbCxcbiAgICBhdXRvY29tcGxldGUsXG4gICAgcmVxdWlyZWQsXG4gICAgbWF4TGVuZ3RoXG4gIH0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRlRmllbGRDb25maWcgZXh0ZW5kcyBQYXJ0aWFsPFRleHRGaWVsZENvbmZpZz4ge1xuICBhc0NvZGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVGaWVsZChjb25maWc6IFN0YXRlRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyBhc0NvZGUgPSBmYWxzZSwgcGF0dGVybiA9IGFzQ29kZSA/IFVTX1NUQVRFX0NPREVfU1RSSU5HX1JFR0VYIDogdW5kZWZpbmVkLCBrZXkgPSAnc3RhdGUnLCBwbGFjZWhvbGRlciA9ICcnLCBsYWJlbCA9ICdTdGF0ZScsIGF1dG9jb21wbGV0ZSA9ICdzdGF0ZScsIG1heExlbmd0aCA9IGFzQ29kZSA/IEFERFJFU1NfU1RBVEVfQ09ERV9NQVhfTEVOR1RIIDogQUREUkVTU19TVEFURV9NQVhfTEVOR1RILCByZXF1aXJlZCA9IGZhbHNlIH0gPSBjb25maWc7XG4gIHJldHVybiB0ZXh0RmllbGQoe1xuICAgIC4uLmNvbmZpZyxcbiAgICBrZXksXG4gICAgcGxhY2Vob2xkZXIsXG4gICAgbGFiZWwsXG4gICAgcGF0dGVybixcbiAgICBhdXRvY29tcGxldGUsXG4gICAgcmVxdWlyZWQsXG4gICAgbWF4TGVuZ3RoXG4gIH0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvdW50cnlGaWVsZENvbmZpZyBleHRlbmRzIFBhcnRpYWw8VGV4dEZpZWxkQ29uZmlnPiB7fVxuXG5leHBvcnQgZnVuY3Rpb24gY291bnRyeUZpZWxkKGNvbmZpZzogQ291bnRyeUZpZWxkQ29uZmlnID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsga2V5ID0gJ2NvdW50cnknLCBwbGFjZWhvbGRlciA9ICcnLCBsYWJlbCA9ICdDb3VudHJ5JywgYXV0b2NvbXBsZXRlID0gJ2NvdW50cnknLCBtYXhMZW5ndGggPSBBRERSRVNTX0NPVU5UUllfTUFYX0xFTkdUSCwgcmVxdWlyZWQgPSBmYWxzZSB9ID0gY29uZmlnO1xuICByZXR1cm4gdGV4dEZpZWxkKHtcbiAgICAuLi5jb25maWcsXG4gICAga2V5LFxuICAgIHBsYWNlaG9sZGVyLFxuICAgIGxhYmVsLFxuICAgIGF1dG9jb21wbGV0ZSxcbiAgICByZXF1aXJlZCxcbiAgICBtYXhMZW5ndGhcbiAgfSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgWmlwQ29kZUZpZWxkQ29uZmlnIGV4dGVuZHMgUGFydGlhbDxUZXh0RmllbGRDb25maWc+IHt9XG5cbmV4cG9ydCBmdW5jdGlvbiB6aXBDb2RlRmllbGQoY29uZmlnOiBaaXBDb2RlRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyBrZXkgPSAnemlwJywgcGxhY2Vob2xkZXIgPSAnJywgbGFiZWwgPSAnWmlwIENvZGUnLCBhdXRvY29tcGxldGUgPSAncG9zdGFsLWNvZGUnLCBwYXR0ZXJuID0gWklQX0NPREVfU1RSSU5HX1JFR0VYLCBtYXhMZW5ndGggPSBBRERSRVNTX1pJUF9NQVhfTEVOR1RILCByZXF1aXJlZCA9IGZhbHNlIH0gPSBjb25maWc7XG4gIHJldHVybiB0ZXh0RmllbGQoe1xuICAgIC4uLmNvbmZpZyxcbiAgICBrZXksXG4gICAgcGxhY2Vob2xkZXIsXG4gICAgbGFiZWwsXG4gICAgcGF0dGVybixcbiAgICBhdXRvY29tcGxldGUsXG4gICAgcmVxdWlyZWQsXG4gICAgbWF4TGVuZ3RoXG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVRfTE5HX1RFWFRfRklFTERfUExBQ0VIT0xERVIgPSAnMTIuMzQ1LC02Ny44OTEwJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0xBVF9MTkdfVEVYVF9GSUVMRF9QQVRURVJOX01FU1NBR0UgPSBgSW52YWxpZC91bmtub3duIGNvb3JkaW5hdGVzYDtcblxuZXhwb3J0IGZ1bmN0aW9uIGxhdExuZ1RleHRGaWVsZCh7IGtleSA9ICdsYXRMbmcnIH06IFBhcnRpYWw8VGV4dEZpZWxkQ29uZmlnPiA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCBmaWVsZCA9IHtcbiAgICAuLi50ZXh0RmllbGQoe1xuICAgICAga2V5LFxuICAgICAgbGFiZWw6ICdDb29yZGluYXRlcycsXG4gICAgICBwbGFjZWhvbGRlcjogREVGQVVMVF9MQVRfTE5HX1RFWFRfRklFTERfUExBQ0VIT0xERVIsXG4gICAgICBwYXR0ZXJuOiBMQVRfTE5HX1BBVFRFUk4sXG4gICAgICBhdXRvY29tcGxldGU6IGZhbHNlXG4gICAgfSksXG4gICAgLi4udmFsaWRhdG9yc0ZvckZpZWxkQ29uZmlnKHtcbiAgICAgIG1lc3NhZ2VzOiB7XG4gICAgICAgIHBhdHRlcm46IERFRkFVTFRfTEFUX0xOR19URVhUX0ZJRUxEX1BBVFRFUk5fTUVTU0FHRVxuICAgICAgfVxuICAgIH0pXG4gIH07XG5cbiAgcmV0dXJuIGZpZWxkO1xufVxuIl19
|
|
@@ -2,10 +2,10 @@ import { textField } from './text.field';
|
|
|
2
2
|
import { cityField, countryField, stateField, zipCodeField } from './text.additional.field';
|
|
3
3
|
import { flexLayoutWrapper, sectionWrapper } from '../../wrapper/wrapper';
|
|
4
4
|
import { repeatArrayField } from '../array/array.field';
|
|
5
|
-
|
|
5
|
+
import { ADDRESS_LINE_MAX_LENGTH } from '@dereekb/model';
|
|
6
6
|
export function addressLineField(config = {}) {
|
|
7
7
|
const { line = 1 } = config;
|
|
8
|
-
const lineCode = Math.
|
|
8
|
+
const lineCode = Math.max(1, line); // minimum of line 1
|
|
9
9
|
const { key = `line${lineCode}`, placeholder = '', label = line ? `Line ${line}` : 'Street', autocomplete = `address-line${lineCode}`, maxLength = ADDRESS_LINE_MAX_LENGTH, required = false } = config;
|
|
10
10
|
return textField({
|
|
11
11
|
...config,
|
|
@@ -18,29 +18,29 @@ export function addressLineField(config = {}) {
|
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
export function addressFormlyFields(config = {}) {
|
|
21
|
-
const { includeLine2 = true, includeCountry = true } = config;
|
|
21
|
+
const { requiredFields = true, includeLine2 = true, includeCountry = true } = config;
|
|
22
22
|
const singleLineFields = [
|
|
23
23
|
{
|
|
24
|
-
field: cityField(config.cityField)
|
|
24
|
+
field: cityField({ required: requiredFields, ...config.cityField })
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
|
-
field: stateField(config.stateField)
|
|
27
|
+
field: stateField({ required: requiredFields, ...config.stateField })
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
field: zipCodeField(config.zipCodeField)
|
|
30
|
+
field: zipCodeField({ required: requiredFields, ...config.zipCodeField })
|
|
31
31
|
}
|
|
32
32
|
];
|
|
33
33
|
if (includeCountry) {
|
|
34
34
|
singleLineFields.push({
|
|
35
|
-
field: countryField(config.countryField)
|
|
35
|
+
field: countryField({ required: requiredFields, ...config.countryField })
|
|
36
36
|
});
|
|
37
37
|
}
|
|
38
38
|
let lines;
|
|
39
39
|
if (includeLine2) {
|
|
40
|
-
lines = [addressLineField({ ...config.line1Field, line: 1 }), addressLineField({ ...config.line2Field, line: 2 })];
|
|
40
|
+
lines = [addressLineField({ required: requiredFields, ...config.line1Field, line: 1 }), addressLineField({ ...config.line2Field, line: 2 })];
|
|
41
41
|
}
|
|
42
42
|
else {
|
|
43
|
-
lines = [addressLineField({ ...config.line1Field, line: 0 })];
|
|
43
|
+
lines = [addressLineField({ required: requiredFields, ...config.line1Field, line: 0 })];
|
|
44
44
|
}
|
|
45
45
|
return [...lines, flexLayoutWrapper(singleLineFields, { size: 1, relative: true })];
|
|
46
46
|
}
|
|
@@ -70,4 +70,4 @@ export function addressListField(config = {}) {
|
|
|
70
70
|
repeatFieldGroup: addressFormlyFields(config)
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5hZGRyZXNzLmZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvdGV4dC90ZXh0LmFkZHJlc3MuZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxjQUFjLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBbUIsWUFBWSxFQUFzQixVQUFVLEVBQW9CLFlBQVksRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUN2SyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFpQ3pELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxTQUFpQyxFQUFFO0lBQ2xFLE1BQU0sRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQzVCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsb0JBQW9CO0lBRXhELE1BQU0sRUFBRSxHQUFHLEdBQUcsT0FBTyxRQUFRLEVBQUUsRUFBRSxXQUFXLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxZQUFZLEdBQUcsZUFBZSxRQUFRLEVBQUUsRUFBRSxTQUFTLEdBQUcsdUJBQXVCLEVBQUUsUUFBUSxHQUFHLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUN4TSxPQUFPLFNBQVMsQ0FBQztRQUNmLEdBQUcsTUFBTTtRQUNULEdBQUc7UUFD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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyB0ZXh0RmllbGQsIFRleHRGaWVsZENvbmZpZyB9IGZyb20gJy4vdGV4dC5maWVsZCc7XG5pbXBvcnQgeyBjaXR5RmllbGQsIENpdHlGaWVsZENvbmZpZywgY291bnRyeUZpZWxkLCBDb3VudHJ5RmllbGRDb25maWcsIHN0YXRlRmllbGQsIFN0YXRlRmllbGRDb25maWcsIHppcENvZGVGaWVsZCwgWmlwQ29kZUZpZWxkQ29uZmlnIH0gZnJvbSAnLi90ZXh0LmFkZGl0aW9uYWwuZmllbGQnO1xuaW1wb3J0IHsgZmxleExheW91dFdyYXBwZXIsIHNlY3Rpb25XcmFwcGVyIH0gZnJvbSAnLi4vLi4vd3JhcHBlci93cmFwcGVyJztcbmltcG9ydCB7IEZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmllbGQnO1xuaW1wb3J0IHsgcmVwZWF0QXJyYXlGaWVsZCB9IGZyb20gJy4uL2FycmF5L2FycmF5LmZpZWxkJztcbmltcG9ydCB7IERieEZvcm1TZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vd3JhcHBlci9zZWN0aW9uLndyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFERFJFU1NfTElORV9NQVhfTEVOR1RIIH0gZnJvbSAnQGRlcmVla2IvbW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZHJlc3NGb3JtbHlGaWVsZHNDb25maWcge1xuICBsaW5lMUZpZWxkPzogQ2l0eUZpZWxkQ29uZmlnO1xuICBsaW5lMkZpZWxkPzogQ2l0eUZpZWxkQ29uZmlnO1xuICBjaXR5RmllbGQ/OiBDaXR5RmllbGRDb25maWc7XG4gIHN0YXRlRmllbGQ/OiBTdGF0ZUZpZWxkQ29uZmlnO1xuICB6aXBDb2RlRmllbGQ/OiBaaXBDb2RlRmllbGRDb25maWc7XG4gIGNvdW50cnlGaWVsZD86IENvdW50cnlGaWVsZENvbmZpZztcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIG1ha2UgcmVxdWlyZWQgZmllbGRzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBUcnVlIGJ5IGRlZmF1bHQuXG4gICAqL1xuICByZXF1aXJlZEZpZWxkcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBpbmNsdWRlIHRoZSBzZWNvbmQgYWRkcmVzcyBsaW5lLlxuICAgKlxuICAgKiBUcnVlIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBpbmNsdWRlTGluZTI/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gaW5jbHVkZSB0aGUgY291bnRyeS5cbiAgICpcbiAgICogVHJ1ZSBieSBkZWZhdWx0LlxuICAgKi9cbiAgaW5jbHVkZUNvdW50cnk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZHJlc3NMaW5lRmllbGRDb25maWcgZXh0ZW5kcyBQYXJ0aWFsPFRleHRGaWVsZENvbmZpZz4ge1xuICBsaW5lPzogMCB8IDEgfCAyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkcmVzc0xpbmVGaWVsZChjb25maWc6IEFkZHJlc3NMaW5lRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyBsaW5lID0gMSB9ID0gY29uZmlnO1xuICBjb25zdCBsaW5lQ29kZSA9IE1hdGgubWF4KDEsIGxpbmUpOyAvLyBtaW5pbXVtIG9mIGxpbmUgMVxuXG4gIGNvbnN0IHsga2V5ID0gYGxpbmUke2xpbmVDb2RlfWAsIHBsYWNlaG9sZGVyID0gJycsIGxhYmVsID0gbGluZSA/IGBMaW5lICR7bGluZX1gIDogJ1N0cmVldCcsIGF1dG9jb21wbGV0ZSA9IGBhZGRyZXNzLWxpbmUke2xpbmVDb2RlfWAsIG1heExlbmd0aCA9IEFERFJFU1NfTElORV9NQVhfTEVOR1RILCByZXF1aXJlZCA9IGZhbHNlIH0gPSBjb25maWc7XG4gIHJldHVybiB0ZXh0RmllbGQoe1xuICAgIC4uLmNvbmZpZyxcbiAgICBrZXksXG4gICAgcGxhY2Vob2xkZXIsXG4gICAgbGFiZWwsXG4gICAgYXV0b2NvbXBsZXRlLFxuICAgIHJlcXVpcmVkLFxuICAgIG1heExlbmd0aFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZHJlc3NGb3JtbHlGaWVsZHMoY29uZmlnOiBBZGRyZXNzRm9ybWx5RmllbGRzQ29uZmlnID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcbiAgY29uc3QgeyByZXF1aXJlZEZpZWxkcyA9IHRydWUsIGluY2x1ZGVMaW5lMiA9IHRydWUsIGluY2x1ZGVDb3VudHJ5ID0gdHJ1ZSB9ID0gY29uZmlnO1xuXG4gIGNvbnN0IHNpbmdsZUxpbmVGaWVsZHMgPSBbXG4gICAge1xuICAgICAgZmllbGQ6IGNpdHlGaWVsZCh7IHJlcXVpcmVkOiByZXF1aXJlZEZpZWxkcywgLi4uY29uZmlnLmNpdHlGaWVsZCB9KVxuICAgIH0sXG4gICAge1xuICAgICAgZmllbGQ6IHN0YXRlRmllbGQoeyByZXF1aXJlZDogcmVxdWlyZWRGaWVsZHMsIC4uLmNvbmZpZy5zdGF0ZUZpZWxkIH0pXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWVsZDogemlwQ29kZUZpZWxkKHsgcmVxdWlyZWQ6IHJlcXVpcmVkRmllbGRzLCAuLi5jb25maWcuemlwQ29kZUZpZWxkIH0pXG4gICAgfVxuICBdO1xuXG4gIGlmIChpbmNsdWRlQ291bnRyeSkge1xuICAgIHNpbmdsZUxpbmVGaWVsZHMucHVzaCh7XG4gICAgICBmaWVsZDogY291bnRyeUZpZWxkKHsgcmVxdWlyZWQ6IHJlcXVpcmVkRmllbGRzLCAuLi5jb25maWcuY291bnRyeUZpZWxkIH0pXG4gICAgfSk7XG4gIH1cblxuICBsZXQgbGluZXM6IEZvcm1seUZpZWxkQ29uZmlnW107XG5cbiAgaWYgKGluY2x1ZGVMaW5lMikge1xuICAgIGxpbmVzID0gW2FkZHJlc3NMaW5lRmllbGQoeyByZXF1aXJlZDogcmVxdWlyZWRGaWVsZHMsIC4uLmNvbmZpZy5saW5lMUZpZWxkLCBsaW5lOiAxIH0pLCBhZGRyZXNzTGluZUZpZWxkKHsgLi4uY29uZmlnLmxpbmUyRmllbGQsIGxpbmU6IDIgfSldO1xuICB9IGVsc2Uge1xuICAgIGxpbmVzID0gW2FkZHJlc3NMaW5lRmllbGQoeyByZXF1aXJlZDogcmVxdWlyZWRGaWVsZHMsIC4uLmNvbmZpZy5saW5lMUZpZWxkLCBsaW5lOiAwIH0pXTtcbiAgfVxuXG4gIHJldHVybiBbLi4ubGluZXMsIGZsZXhMYXlvdXRXcmFwcGVyKHNpbmdsZUxpbmVGaWVsZHMsIHsgc2l6ZTogMSwgcmVsYXRpdmU6IHRydWUgfSldO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZHJlc3NGaWVsZENvbmZpZyBleHRlbmRzIEZpZWxkQ29uZmlnLCBEYnhGb3JtU2VjdGlvbkNvbmZpZywgQWRkcmVzc0Zvcm1seUZpZWxkc0NvbmZpZyB7fVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkcmVzc0ZpZWxkKGNvbmZpZzogUGFydGlhbDxBZGRyZXNzRmllbGRDb25maWc+ID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsga2V5ID0gJ2FkZHJlc3MnLCBoZWFkZXIgPSAnQWRkcmVzcycsIGhpbnQsIHJlcXVpcmVkID0gZmFsc2UgfSA9IGNvbmZpZztcblxuICByZXR1cm4gc2VjdGlvbldyYXBwZXIoXG4gICAge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAga2V5LFxuICAgICAgZmllbGRHcm91cDogYWRkcmVzc0Zvcm1seUZpZWxkcyhjb25maWcpLFxuICAgICAgcmVxdWlyZWRcbiAgICB9LFxuICAgIHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGhlYWRlcixcbiAgICAgIGhpbnRcbiAgICB9XG4gICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkcmVzc0xpc3RGaWVsZENvbmZpZyBleHRlbmRzIEZpZWxkQ29uZmlnLCBBZGRyZXNzRm9ybWx5RmllbGRzQ29uZmlnIHtcbiAgbWF4QWRkcmVzc2VzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkcmVzc0xpc3RGaWVsZChjb25maWc6IFBhcnRpYWw8QWRkcmVzc0xpc3RGaWVsZENvbmZpZz4gPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyBrZXkgPSAnYWRkcmVzc2VzJywgcmVxdWlyZWQgPSBmYWxzZSwgbWF4QWRkcmVzc2VzID0gNiB9ID0gY29uZmlnO1xuICByZXR1cm4gcmVwZWF0QXJyYXlGaWVsZCh7XG4gICAga2V5LFxuICAgIHJlcXVpcmVkLFxuICAgIGxhYmVsOiAnQWRkcmVzc2VzJyxcbiAgICBsYWJlbEZvckZpZWxkOiAnQWRkcmVzcycsXG4gICAgYWRkVGV4dDogJ0FkZCBBZGRyZXNzJyxcbiAgICByZW1vdmVUZXh0OiAnUmVtb3ZlIEFkZHJlc3MnLFxuICAgIG1heExlbmd0aDogbWF4QWRkcmVzc2VzLFxuICAgIHJlcGVhdEZpZWxkR3JvdXA6IGFkZHJlc3NGb3JtbHlGaWVsZHMoY29uZmlnKVxuICB9KTtcbn1cbiJdfQ==
|