@dereekb/dbx-form 9.24.16 → 9.24.18

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.
Files changed (39) hide show
  1. package/calendar/lib/calendar.module.d.ts +1 -1
  2. package/calendar/lib/calendar.schedule.selection.dialog.button.component.d.ts +2 -1
  3. package/calendar/lib/calendar.schedule.selection.range.component.d.ts +6 -1
  4. package/calendar/lib/field/schedule/calendar.schedule.field.component.d.ts +23 -0
  5. package/calendar/lib/field/schedule/calendar.schedule.module.d.ts +10 -9
  6. package/esm2020/calendar/lib/calendar.module.mjs +8 -2
  7. package/esm2020/calendar/lib/calendar.schedule.selection.component.mjs +24 -8
  8. package/esm2020/calendar/lib/calendar.schedule.selection.dialog.button.component.mjs +8 -6
  9. package/esm2020/calendar/lib/calendar.schedule.selection.popover.content.component.mjs +17 -12
  10. package/esm2020/calendar/lib/calendar.schedule.selection.range.component.mjs +45 -5
  11. package/esm2020/calendar/lib/field/schedule/calendar.schedule.field.component.mjs +23 -9
  12. package/esm2020/calendar/lib/field/schedule/calendar.schedule.field.mjs +5 -3
  13. package/esm2020/calendar/lib/field/schedule/calendar.schedule.module.mjs +7 -3
  14. package/esm2020/lib/formly/config/validation.mjs +3 -2
  15. package/esm2020/lib/formly/field/value/number/number.field.mjs +34 -1
  16. package/esm2020/lib/formly/field/value/number/number.field.module.mjs +5 -4
  17. package/esm2020/lib/formly/field/value/phone/phone.field.component.mjs +84 -5
  18. package/esm2020/lib/formly/field/value/phone/phone.field.mjs +9 -3
  19. package/esm2020/lib/validator/index.mjs +2 -1
  20. package/esm2020/lib/validator/phone.mjs +61 -0
  21. package/fesm2015/dereekb-dbx-form-calendar.mjs +123 -39
  22. package/fesm2015/dereekb-dbx-form-calendar.mjs.map +1 -1
  23. package/fesm2015/dereekb-dbx-form.mjs +171 -11
  24. package/fesm2015/dereekb-dbx-form.mjs.map +1 -1
  25. package/fesm2020/dereekb-dbx-form-calendar.mjs +124 -41
  26. package/fesm2020/dereekb-dbx-form-calendar.mjs.map +1 -1
  27. package/fesm2020/dereekb-dbx-form.mjs +182 -10
  28. package/fesm2020/dereekb-dbx-form.mjs.map +1 -1
  29. package/lib/extension/calendar/_calendar.scss +13 -0
  30. package/lib/formly/config/validation.d.ts +4 -0
  31. package/lib/formly/field/value/date/_date.scss +4 -0
  32. package/lib/formly/field/value/number/number.field.d.ts +27 -0
  33. package/lib/formly/field/value/number/number.field.module.d.ts +3 -2
  34. package/lib/formly/field/value/phone/_phone.scss +22 -13
  35. package/lib/formly/field/value/phone/phone.field.component.d.ts +19 -0
  36. package/lib/validator/index.d.ts +1 -0
  37. package/lib/validator/phone.d.ts +16 -0
  38. package/mapbox/package.json +4 -4
  39. package/package.json +4 -4
@@ -1,18 +1,19 @@
1
1
  import { FormlyMaterialModule } from '@ngx-formly/material';
2
+ import { FormlyMatSliderModule } from '@ngx-formly/material/slider';
2
3
  import { NgModule } from '@angular/core';
3
4
  import { DbxFormFormlyWrapperModule } from '../../wrapper/form.wrapper.module';
4
5
  import * as i0 from "@angular/core";
5
6
  export class DbxFormFormlyNumberFieldModule {
6
7
  }
7
8
  DbxFormFormlyNumberFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlyNumberFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- DbxFormFormlyNumberFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlyNumberFieldModule, imports: [FormlyMaterialModule], exports: [DbxFormFormlyWrapperModule] });
9
- DbxFormFormlyNumberFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlyNumberFieldModule, imports: [FormlyMaterialModule, DbxFormFormlyWrapperModule] });
9
+ DbxFormFormlyNumberFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlyNumberFieldModule, imports: [FormlyMaterialModule, FormlyMatSliderModule], exports: [DbxFormFormlyWrapperModule] });
10
+ DbxFormFormlyNumberFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlyNumberFieldModule, imports: [FormlyMaterialModule, FormlyMatSliderModule, DbxFormFormlyWrapperModule] });
10
11
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlyNumberFieldModule, decorators: [{
11
12
  type: NgModule,
12
13
  args: [{
13
- imports: [FormlyMaterialModule],
14
+ imports: [FormlyMaterialModule, FormlyMatSliderModule],
14
15
  declarations: [],
15
16
  exports: [DbxFormFormlyWrapperModule]
16
17
  }]
17
18
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmZpZWxkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3ZhbHVlL251bWJlci9udW1iZXIuZmllbGQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBTy9FLE1BQU0sT0FBTyw4QkFBOEI7OzRIQUE5Qiw4QkFBOEI7NkhBQTlCLDhCQUE4QixZQUovQixvQkFBb0IsYUFFcEIsMEJBQTBCOzZIQUV6Qiw4QkFBOEIsWUFKL0Isb0JBQW9CLEVBRXBCLDBCQUEwQjs0RkFFekIsOEJBQThCO2tCQUwxQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUMvQixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybWx5TWF0ZXJpYWxNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4Rm9ybUZvcm1seVdyYXBwZXJNb2R1bGUgfSBmcm9tICcuLi8uLi93cmFwcGVyL2Zvcm0ud3JhcHBlci5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbRm9ybWx5TWF0ZXJpYWxNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBleHBvcnRzOiBbRGJ4Rm9ybUZvcm1seVdyYXBwZXJNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIERieEZvcm1Gb3JtbHlOdW1iZXJGaWVsZE1vZHVsZSB7fVxuIl19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmZpZWxkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3ZhbHVlL251bWJlci9udW1iZXIuZmllbGQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBTy9FLE1BQU0sT0FBTyw4QkFBOEI7OzRIQUE5Qiw4QkFBOEI7NkhBQTlCLDhCQUE4QixZQUovQixvQkFBb0IsRUFBRSxxQkFBcUIsYUFFM0MsMEJBQTBCOzZIQUV6Qiw4QkFBOEIsWUFKL0Isb0JBQW9CLEVBQUUscUJBQXFCLEVBRTNDLDBCQUEwQjs0RkFFekIsOEJBQThCO2tCQUwxQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixFQUFFLHFCQUFxQixDQUFDO29CQUN0RCxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybWx5TWF0ZXJpYWxNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBGb3JtbHlNYXRTbGlkZXJNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbC9zbGlkZXInO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERieEZvcm1Gb3JtbHlXcmFwcGVyTW9kdWxlIH0gZnJvbSAnLi4vLi4vd3JhcHBlci9mb3JtLndyYXBwZXIubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0Zvcm1seU1hdGVyaWFsTW9kdWxlLCBGb3JtbHlNYXRTbGlkZXJNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBleHBvcnRzOiBbRGJ4Rm9ybUZvcm1seVdyYXBwZXJNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIERieEZvcm1Gb3JtbHlOdW1iZXJGaWVsZE1vZHVsZSB7fVxuIl19
@@ -1,21 +1,100 @@
1
1
  import { Component } from '@angular/core';
2
2
  import { FieldType } from '@ngx-formly/material'; // extend FieldType from Material, not core!
3
+ import { e164PhoneNumberExtensionPair, e164PhoneNumberFromE164PhoneNumberExtensionPair, objectHasNoKeys } from '@dereekb/util';
4
+ import { FormControl, FormGroup } from '@angular/forms';
5
+ import { SubscriptionObject } from '@dereekb/rxjs';
6
+ import { combineLatest, distinctUntilChanged, map, startWith } from 'rxjs';
7
+ import { isPhoneExtension } from '../../../../validator/phone';
3
8
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/forms";
5
- import * as i2 from "ngx-mat-intl-tel-input";
9
+ import * as i1 from "@angular/common";
10
+ import * as i2 from "@angular/forms";
11
+ import * as i3 from "ngx-mat-intl-tel-input";
6
12
  export const DEFAULT_PREFERRED_COUNTRIES = ['us'];
7
13
  export class DbxPhoneFieldComponent extends FieldType {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.inputSync = new SubscriptionObject();
17
+ this.outputSync = new SubscriptionObject();
18
+ this.extensionErrorSync = new SubscriptionObject();
19
+ this.phoneErrorSync = new SubscriptionObject();
20
+ this.phoneCtrl = new FormControl('');
21
+ this.extensionCtrl = new FormControl('', {
22
+ validators: [isPhoneExtension()]
23
+ });
24
+ this.inputFormGroup = new FormGroup({
25
+ phone: this.phoneCtrl,
26
+ extension: this.extensionCtrl
27
+ });
28
+ }
8
29
  get preferredCountries() {
9
30
  return this.props.preferredCountries ?? DEFAULT_PREFERRED_COUNTRIES;
10
31
  }
11
32
  get onlyCountries() {
12
33
  return this.props.onlyCountries ?? [];
13
34
  }
35
+ get allowExtension() {
36
+ return this.props.allowExtension ?? false;
37
+ }
38
+ ngOnInit() {
39
+ this.inputSync.subscription = this.formControl.valueChanges.pipe(startWith(this.formControl.value), distinctUntilChanged()).subscribe((inputValue) => {
40
+ let phone;
41
+ let extension;
42
+ if (inputValue) {
43
+ const pair = e164PhoneNumberExtensionPair(inputValue);
44
+ phone = pair.number;
45
+ extension = pair.extension;
46
+ }
47
+ // do not clear/reset if phone is undefined and the phone value is currently null
48
+ if (phone || (!phone && this.phoneCtrl.value !== null)) {
49
+ this.phoneCtrl.setValue(phone || '');
50
+ this.extensionCtrl.setValue(extension || '');
51
+ }
52
+ });
53
+ this.outputSync.subscription = combineLatest([this.phoneCtrl.valueChanges.pipe(distinctUntilChanged()), this.extensionCtrl.valueChanges.pipe(startWith(this.extensionCtrl.value), distinctUntilChanged())])
54
+ .pipe(map(([phone, extension]) => {
55
+ if (phone) {
56
+ if (this.allowExtension) {
57
+ return e164PhoneNumberFromE164PhoneNumberExtensionPair({
58
+ number: phone,
59
+ extension
60
+ });
61
+ }
62
+ else {
63
+ return phone;
64
+ }
65
+ }
66
+ else {
67
+ return undefined;
68
+ }
69
+ }), distinctUntilChanged())
70
+ .subscribe((x) => {
71
+ this.formControl.setValue(x);
72
+ });
73
+ /*
74
+ * The phoneCtrl's errors are being used to drive the error matcher for this. Sync any invalid states with errors to phoneCtrl.
75
+ * PhoneCtrl updates when the input is updated so it works.
76
+ */
77
+ this.extensionErrorSync.subscription = this.extensionCtrl.statusChanges.subscribe((x) => {
78
+ if (x === 'INVALID') {
79
+ this.phoneCtrl.setErrors(this.formControl.errors, { emitEvent: true });
80
+ }
81
+ });
82
+ // sync any phoneCtrl errors with the errors of the form control.
83
+ this.phoneErrorSync.subscription = this.inputFormGroup.statusChanges.subscribe((x) => {
84
+ const errors = { ...this.phoneCtrl.errors, ...this.extensionCtrl.errors };
85
+ this.formControl.setErrors(objectHasNoKeys(errors) ? null : errors, { emitEvent: true });
86
+ });
87
+ }
88
+ ngOnDestroy() {
89
+ super.ngOnDestroy();
90
+ this.inputSync.destroy();
91
+ this.outputSync.destroy();
92
+ }
14
93
  }
15
94
  DbxPhoneFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxPhoneFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
16
- DbxPhoneFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxPhoneFieldComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ngx-mat-intl-tel-input class=\"dbx-form-phone-field\" [required]=\"required\" [preferredCountries]=\"preferredCountries\" [enablePlaceholder]=\"false\" name=\"phone\" [formControl]=\"formControl\"></ngx-mat-intl-tel-input>\n", dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i2.NgxMatIntlTelInputComponent, selector: "ngx-mat-intl-tel-input", inputs: ["preferredCountries", "enablePlaceholder", "inputPlaceholder", "cssClass", "name", "onlyCountries", "errorStateMatcher", "enableSearch", "searchPlaceholder", "describedBy", "format", "placeholder", "required", "disabled"], outputs: ["countryChanged"] }] });
95
+ DbxPhoneFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxPhoneFieldComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-form-phone-field\" [formGroup]=\"inputFormGroup\">\n <ngx-mat-intl-tel-input class=\"dbx-form-phone-field-phone-content\" [required]=\"required\" [preferredCountries]=\"preferredCountries\" [enablePlaceholder]=\"false\" name=\"phone\" [formControl]=\"phoneCtrl\"></ngx-mat-intl-tel-input>\n <div *ngIf=\"allowExtension\" class=\"dbx-form-phone-field-extension-content\">\n <span class=\"dbx-hint dbx-button-spacer\">Ext.</span>\n <input class=\"dbx-form-phone-field-extension-input\" placeholder=\"123\" minlength=\"0\" maxlength=\"6\" #extensionInput [formControl]=\"extensionCtrl\" />\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.NgxMatIntlTelInputComponent, selector: "ngx-mat-intl-tel-input", inputs: ["preferredCountries", "enablePlaceholder", "inputPlaceholder", "cssClass", "name", "onlyCountries", "errorStateMatcher", "enableSearch", "searchPlaceholder", "describedBy", "format", "placeholder", "required", "disabled"], outputs: ["countryChanged"] }] });
17
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxPhoneFieldComponent, decorators: [{
18
97
  type: Component,
19
- args: [{ template: "<ngx-mat-intl-tel-input class=\"dbx-form-phone-field\" [required]=\"required\" [preferredCountries]=\"preferredCountries\" [enablePlaceholder]=\"false\" name=\"phone\" [formControl]=\"formControl\"></ngx-mat-intl-tel-input>\n" }]
98
+ args: [{ template: "<div class=\"dbx-form-phone-field\" [formGroup]=\"inputFormGroup\">\n <ngx-mat-intl-tel-input class=\"dbx-form-phone-field-phone-content\" [required]=\"required\" [preferredCountries]=\"preferredCountries\" [enablePlaceholder]=\"false\" name=\"phone\" [formControl]=\"phoneCtrl\"></ngx-mat-intl-tel-input>\n <div *ngIf=\"allowExtension\" class=\"dbx-form-phone-field-extension-content\">\n <span class=\"dbx-hint dbx-button-spacer\">Ext.</span>\n <input class=\"dbx-form-phone-field-extension-input\" placeholder=\"123\" minlength=\"0\" maxlength=\"6\" #extensionInput [formControl]=\"extensionCtrl\" />\n </div>\n</div>\n" }]
20
99
  }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvcGhvbmUvcGhvbmUuZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvcGhvbmUvcGhvbmUuZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUMsQ0FBQyw0Q0FBNEM7Ozs7QUFTOUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUtsRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsU0FBOEQ7SUFDeEcsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixJQUFJLDJCQUEyQixDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDOztvSEFQVSxzQkFBc0I7d0dBQXRCLHNCQUFzQiwyRUNmbkMsbU9BQ0E7NEZEY2Esc0JBQXNCO2tCQUhsQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7IC8vIGV4dGVuZCBGaWVsZFR5cGUgZnJvbSBNYXRlcmlhbCwgbm90IGNvcmUhXG5pbXBvcnQgeyBGaWVsZFR5cGVDb25maWcsIEZvcm1seUZpZWxkUHJvcHMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYXRpb25hbFBob25lRm9ybWx5RmllbGRQcm9wcyBleHRlbmRzIEZvcm1seUZpZWxkUHJvcHMge1xuICBwcmVmZXJyZWRDb3VudHJpZXM/OiBNYXliZTxzdHJpbmdbXT47XG4gIG9ubHlDb3VudHJpZXM/OiBNYXliZTxzdHJpbmdbXT47XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BSRUZFUlJFRF9DT1VOVFJJRVMgPSBbJ3VzJ107XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ3Bob25lLmZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYnhQaG9uZUZpZWxkQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxJbnRlcm5hdGlvbmFsUGhvbmVGb3JtbHlGaWVsZFByb3BzPj4ge1xuICBnZXQgcHJlZmVycmVkQ291bnRyaWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5wcmVmZXJyZWRDb3VudHJpZXMgPz8gREVGQVVMVF9QUkVGRVJSRURfQ09VTlRSSUVTO1xuICB9XG5cbiAgZ2V0IG9ubHlDb3VudHJpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLm9ubHlDb3VudHJpZXMgPz8gW107XG4gIH1cbn1cbiIsIjxuZ3gtbWF0LWludGwtdGVsLWlucHV0IGNsYXNzPVwiZGJ4LWZvcm0tcGhvbmUtZmllbGRcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIiBbcHJlZmVycmVkQ291bnRyaWVzXT1cInByZWZlcnJlZENvdW50cmllc1wiIFtlbmFibGVQbGFjZWhvbGRlcl09XCJmYWxzZVwiIG5hbWU9XCJwaG9uZVwiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiPjwvbmd4LW1hdC1pbnRsLXRlbC1pbnB1dD5cbiJdfQ==
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvcGhvbmUvcGhvbmUuZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvcGhvbmUvcGhvbmUuZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUMsQ0FBQyw0Q0FBNEM7QUFFOUYsT0FBTyxFQUF3RCw0QkFBNEIsRUFBRSwrQ0FBK0MsRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckwsT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7QUFZL0QsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUtsRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsU0FBOEQ7SUFIMUc7O1FBSVcsY0FBUyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUNyQyxlQUFVLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3RDLHVCQUFrQixHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztR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b3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJzsgLy8gZXh0ZW5kIEZpZWxkVHlwZSBmcm9tIE1hdGVyaWFsLCBub3QgY29yZSFcbmltcG9ydCB7IEZpZWxkVHlwZUNvbmZpZywgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRTE2NFBob25lTnVtYmVyLCBFMTY0UGhvbmVOdW1iZXJFeHRlbnNpb25QYWlyLCBNYXliZSwgZTE2NFBob25lTnVtYmVyRXh0ZW5zaW9uUGFpciwgZTE2NFBob25lTnVtYmVyRnJvbUUxNjRQaG9uZU51bWJlckV4dGVuc2lvblBhaXIsIG9iamVjdEhhc05vS2V5cyB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uT2JqZWN0IH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGlzUGhvbmVFeHRlbnNpb24gfSBmcm9tICcuLi8uLi8uLi8uLi92YWxpZGF0b3IvcGhvbmUnO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hdGlvbmFsUGhvbmVGb3JtbHlGaWVsZFByb3BzIGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcyB7XG4gIHByZWZlcnJlZENvdW50cmllcz86IE1heWJlPHN0cmluZ1tdPjtcbiAgb25seUNvdW50cmllcz86IE1heWJlPHN0cmluZ1tdPjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IGFkZGluZyBhbiBleHRlbnNpb24uIEZhbHNlIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBhbGxvd0V4dGVuc2lvbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BSRUZFUlJFRF9DT1VOVFJJRVMgPSBbJ3VzJ107XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ3Bob25lLmZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYnhQaG9uZUZpZWxkQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxJbnRlcm5hdGlvbmFsUGhvbmVGb3JtbHlGaWVsZFByb3BzPj4ge1xuICByZWFkb25seSBpbnB1dFN5bmMgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHJlYWRvbmx5IG91dHB1dFN5bmMgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHJlYWRvbmx5IGV4dGVuc2lvbkVycm9yU3luYyA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcmVhZG9ubHkgcGhvbmVFcnJvclN5bmMgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG5cbiAgcmVhZG9ubHkgcGhvbmVDdHJsID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpO1xuICByZWFkb25seSBleHRlbnNpb25DdHJsID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycsIHtcbiAgICB2YWxpZGF0b3JzOiBbaXNQaG9uZUV4dGVuc2lvbigpXVxuICB9KTtcblxuICByZWFkb25seSBpbnB1dEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHBob25lOiB0aGlzLnBob25lQ3RybCxcbiAgICBleHRlbnNpb246IHRoaXMuZXh0ZW5zaW9uQ3RybFxuICB9KTtcblxuICBnZXQgcHJlZmVycmVkQ291bnRyaWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5wcmVmZXJyZWRDb3VudHJpZXMgPz8gREVGQVVMVF9QUkVGRVJSRURfQ09VTlRSSUVTO1xuICB9XG5cbiAgZ2V0IG9ubHlDb3VudHJpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLm9ubHlDb3VudHJpZXMgPz8gW107XG4gIH1cblxuICBnZXQgYWxsb3dFeHRlbnNpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYWxsb3dFeHRlbnNpb24gPz8gZmFsc2U7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3luYy5zdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKChpbnB1dFZhbHVlKSA9PiB7XG4gICAgICBsZXQgcGhvbmU6IE1heWJlPHN0cmluZz47XG4gICAgICBsZXQgZXh0ZW5zaW9uOiBNYXliZTxzdHJpbmc+O1xuXG4gICAgICBpZiAoaW5wdXRWYWx1ZSkge1xuICAgICAgICBjb25zdCBwYWlyID0gZTE2NFBob25lTnVtYmVyRXh0ZW5zaW9uUGFpcihpbnB1dFZhbHVlKTtcbiAgICAgICAgcGhvbmUgPSBwYWlyLm51bWJlcjtcbiAgICAgICAgZXh0ZW5zaW9uID0gcGFpci5leHRlbnNpb247XG4gICAgICB9XG5cbiAgICAgIC8vIGRvIG5vdCBjbGVhci9yZXNldCBpZiBwaG9uZSBpcyB1bmRlZmluZWQgYW5kIHRoZSBwaG9uZSB2YWx1ZSBpcyBjdXJyZW50bHkgbnVsbFxuICAgICAgaWYgKHBob25lIHx8ICghcGhvbmUgJiYgdGhpcy5waG9uZUN0cmwudmFsdWUgIT09IG51bGwpKSB7XG4gICAgICAgIHRoaXMucGhvbmVDdHJsLnNldFZhbHVlKHBob25lIHx8ICcnKTtcbiAgICAgICAgdGhpcy5leHRlbnNpb25DdHJsLnNldFZhbHVlKGV4dGVuc2lvbiB8fCAnJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm91dHB1dFN5bmMuc3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdChbdGhpcy5waG9uZUN0cmwudmFsdWVDaGFuZ2VzLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksIHRoaXMuZXh0ZW5zaW9uQ3RybC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5leHRlbnNpb25DdHJsLnZhbHVlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSldKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoW3Bob25lLCBleHRlbnNpb25dKSA9PiB7XG4gICAgICAgICAgaWYgKHBob25lKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxvd0V4dGVuc2lvbikge1xuICAgICAgICAgICAgICByZXR1cm4gZTE2NFBob25lTnVtYmVyRnJvbUUxNjRQaG9uZU51bWJlckV4dGVuc2lvblBhaXIoe1xuICAgICAgICAgICAgICAgIG51bWJlcjogcGhvbmUgYXMgRTE2NFBob25lTnVtYmVyLFxuICAgICAgICAgICAgICAgIGV4dGVuc2lvblxuICAgICAgICAgICAgICB9IGFzIEUxNjRQaG9uZU51bWJlckV4dGVuc2lvblBhaXIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHBob25lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh4KTtcbiAgICAgIH0pO1xuXG4gICAgLypcbiAgICAgKiBUaGUgcGhvbmVDdHJsJ3MgZXJyb3JzIGFyZSBiZWluZyB1c2VkIHRvIGRyaXZlIHRoZSBlcnJvciBtYXRjaGVyIGZvciB0aGlzLiBTeW5jIGFueSBpbnZhbGlkIHN0YXRlcyB3aXRoIGVycm9ycyB0byBwaG9uZUN0cmwuXG4gICAgICogUGhvbmVDdHJsIHVwZGF0ZXMgd2hlbiB0aGUgaW5wdXQgaXMgdXBkYXRlZCBzbyBpdCB3b3Jrcy5cbiAgICAgKi9cbiAgICB0aGlzLmV4dGVuc2lvbkVycm9yU3luYy5zdWJzY3JpcHRpb24gPSB0aGlzLmV4dGVuc2lvbkN0cmwuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgIGlmICh4ID09PSAnSU5WQUxJRCcpIHtcbiAgICAgICAgdGhpcy5waG9uZUN0cmwuc2V0RXJyb3JzKHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIHN5bmMgYW55IHBob25lQ3RybCBlcnJvcnMgd2l0aCB0aGUgZXJyb3JzIG9mIHRoZSBmb3JtIGNvbnRyb2wuXG4gICAgdGhpcy5waG9uZUVycm9yU3luYy5zdWJzY3JpcHRpb24gPSB0aGlzLmlucHV0Rm9ybUdyb3VwLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICBjb25zdCBlcnJvcnMgPSB7IC4uLnRoaXMucGhvbmVDdHJsLmVycm9ycywgLi4udGhpcy5leHRlbnNpb25DdHJsLmVycm9ycyB9O1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRFcnJvcnMob2JqZWN0SGFzTm9LZXlzKGVycm9ycykgPyBudWxsIDogZXJyb3JzLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5pbnB1dFN5bmMuZGVzdHJveSgpO1xuICAgIHRoaXMub3V0cHV0U3luYy5kZXN0cm95KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYngtZm9ybS1waG9uZS1maWVsZFwiIFtmb3JtR3JvdXBdPVwiaW5wdXRGb3JtR3JvdXBcIj5cbiAgPG5neC1tYXQtaW50bC10ZWwtaW5wdXQgY2xhc3M9XCJkYngtZm9ybS1waG9uZS1maWVsZC1waG9uZS1jb250ZW50XCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW3ByZWZlcnJlZENvdW50cmllc109XCJwcmVmZXJyZWRDb3VudHJpZXNcIiBbZW5hYmxlUGxhY2Vob2xkZXJdPVwiZmFsc2VcIiBuYW1lPVwicGhvbmVcIiBbZm9ybUNvbnRyb2xdPVwicGhvbmVDdHJsXCI+PC9uZ3gtbWF0LWludGwtdGVsLWlucHV0PlxuICA8ZGl2ICpuZ0lmPVwiYWxsb3dFeHRlbnNpb25cIiBjbGFzcz1cImRieC1mb3JtLXBob25lLWZpZWxkLWV4dGVuc2lvbi1jb250ZW50XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJkYngtaGludCBkYngtYnV0dG9uLXNwYWNlclwiPkV4dC48L3NwYW4+XG4gICAgPGlucHV0IGNsYXNzPVwiZGJ4LWZvcm0tcGhvbmUtZmllbGQtZXh0ZW5zaW9uLWlucHV0XCIgcGxhY2Vob2xkZXI9XCIxMjNcIiBtaW5sZW5ndGg9XCIwXCIgbWF4bGVuZ3RoPVwiNlwiICNleHRlbnNpb25JbnB1dCBbZm9ybUNvbnRyb2xdPVwiZXh0ZW5zaW9uQ3RybFwiIC8+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,16 +1,22 @@
1
1
  import { sectionWrapper, flexLayoutWrapper } from '../../wrapper/wrapper';
2
2
  import { textField } from '../text/text.field';
3
- import { formlyField, propsAndConfigForFieldConfig } from '../../field';
3
+ import { formlyField, propsAndConfigForFieldConfig, validatorsForFieldConfig } from '../../field';
4
4
  import { repeatArrayField } from '../array/array.field';
5
+ import { isE164PhoneNumber } from '../../../../validator/phone';
5
6
  export function phoneField(config = {}) {
6
- const { key = 'phone', label = 'Phone Number', preferredCountries, onlyCountries } = config;
7
+ const { key = 'phone', label = 'Phone Number', preferredCountries, onlyCountries, allowExtension: inputAllowExtension } = config;
8
+ const allowExtension = inputAllowExtension ?? false;
7
9
  const fieldConfig = formlyField({
8
10
  key,
9
11
  type: 'intphone',
10
12
  ...propsAndConfigForFieldConfig(config, {
11
13
  label,
14
+ allowExtension,
12
15
  preferredCountries,
13
16
  onlyCountries
17
+ }),
18
+ ...validatorsForFieldConfig({
19
+ validators: [isE164PhoneNumber(allowExtension)]
14
20
  })
15
21
  });
16
22
  return fieldConfig;
@@ -57,4 +63,4 @@ export function phoneListField(repeatConfig = {}) {
57
63
  repeatFieldGroup: repeatFieldGroup ?? [wrappedPhoneAndLabelField(phoneAndLabel)]
58
64
  });
59
65
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9waG9uZS9waG9uZS5maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRSxPQUFPLEVBQXNCLFdBQVcsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1RixPQUFPLEVBQUUsZ0JBQWdCLEVBQTBCLE1BQU0sc0JBQXNCLENBQUM7QUFJaEYsTUFBTSxVQUFVLFVBQVUsQ0FBQyxTQUFpRCxFQUFFO0lBQzVFLE1BQU0sRUFBRSxHQUFHLEdBQUcsT0FBTyxFQUFFLEtBQUssR0FBRyxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTVGLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUM5QixHQUFHO1FBQ0gsSUFBSSxFQUFFLFVBQVU7UUFDaEIsR0FBRyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUU7WUFDdEMsS0FBSztZQUNMLGtCQUFrQjtZQUNsQixhQUFhO1NBQ2QsQ0FBQztLQUNILENBQUMsQ0FBQztJQUVILE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFPRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxLQUFzQyxFQUFFO0lBQ3RILE9BQU8saUJBQWlCLENBQ3RCO1FBQ0U7WUFDRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLEVBQUUsQ0FBQztTQUNSO1FBQ0Q7WUFDRSxLQUFLLEVBQUUsU0FBUyxDQUFDO2dCQUNmLEdBQUcsRUFBRSxPQUFPO2dCQUNaLEtBQUssRUFBRSxPQUFPO2dCQUNkLFlBQVksRUFBRSxhQUFhO2dCQUMzQixHQUFHLEtBQUs7YUFDVCxDQUFDO1lBQ0YsSUFBSSxFQUFFLENBQUM7U0FDUjtLQUNGLEVBQ0QsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQ25CLENBQUM7QUFDSixDQUFDO0FBTUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRyxjQUFjLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEtBQXNDLEVBQUU7SUFDNUksT0FBTyxjQUFjLENBQ25CO1FBQ0UsR0FBRztRQUNILFVBQVUsRUFBRSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7S0FDcEUsRUFDRDtRQUNFLE1BQU07UUFDTixJQUFJO0tBQ0wsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQU9ELE1BQU0sVUFBVSxjQUFjLENBQUMsZUFBOEMsRUFBRTtJQUM3RSxNQUFNLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxLQUFLLEdBQUcsZUFBZSxFQUFFLE9BQU8sR0FBRyxrQkFBa0IsRUFBRSxVQUFVLEdBQUcscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLEdBQUcsWUFBWSxDQUFDO0lBRXBLLE9BQU8sZ0JBQWdCLENBQUM7UUFDdEIsR0FBRyxZQUFZO1FBQ2YsR0FBRztRQUNILEtBQUs7UUFDTCxPQUFPO1FBQ1AsVUFBVTtRQUNWLGdCQUFnQixFQUFFLGdCQUFnQixJQUFJLENBQUMseUJBQXlCLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDakYsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERieEZvcm1TZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vd3JhcHBlci9zZWN0aW9uLndyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IHNlY3Rpb25XcmFwcGVyLCBmbGV4TGF5b3V0V3JhcHBlciB9IGZyb20gJy4uLy4uL3dyYXBwZXIvd3JhcHBlcic7XG5pbXBvcnQgeyB0ZXh0RmllbGQsIFRleHRGaWVsZENvbmZpZyB9IGZyb20gJy4uL3RleHQvdGV4dC5maWVsZCc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgTGFiZWxlZEZpZWxkQ29uZmlnLCBmb3JtbHlGaWVsZCwgcHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL2ZpZWxkJztcbmltcG9ydCB7IEludGVybmF0aW9uYWxQaG9uZUZvcm1seUZpZWxkUHJvcHMgfSBmcm9tICcuL3Bob25lLmZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyByZXBlYXRBcnJheUZpZWxkLCBSZXBlYXRBcnJheUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vYXJyYXkvYXJyYXkuZmllbGQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmF0aW9uYWxQaG9uZUZpZWxkQ29uZmlnIGV4dGVuZHMgTGFiZWxlZEZpZWxkQ29uZmlnLCBJbnRlcm5hdGlvbmFsUGhvbmVGb3JtbHlGaWVsZFByb3BzIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBwaG9uZUZpZWxkKGNvbmZpZzogUGFydGlhbDxJbnRlcm5hdGlvbmFsUGhvbmVGaWVsZENvbmZpZz4gPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnPEludGVybmF0aW9uYWxQaG9uZUZvcm1seUZpZWxkUHJvcHM+IHtcbiAgY29uc3QgeyBrZXkgPSAncGhvbmUnLCBsYWJlbCA9ICdQaG9uZSBOdW1iZXInLCBwcmVmZXJyZWRDb3VudHJpZXMsIG9ubHlDb3VudHJpZXMgfSA9IGNvbmZpZztcblxuICBjb25zdCBmaWVsZENvbmZpZyA9IGZvcm1seUZpZWxkKHtcbiAgICBrZXksXG4gICAgdHlwZTogJ2ludHBob25lJyxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgbGFiZWwsXG4gICAgICBwcmVmZXJyZWRDb3VudHJpZXMsXG4gICAgICBvbmx5Q291bnRyaWVzXG4gICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIGZpZWxkQ29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdyYXBwZWRQaG9uZUFuZExhYmVsRmllbGRDb25maWcge1xuICBwaG9uZUZpZWxkPzogUGFydGlhbDxJbnRlcm5hdGlvbmFsUGhvbmVGaWVsZENvbmZpZz47XG4gIGxhYmVsRmllbGQ/OiBUZXh0RmllbGRDb25maWc7XG59XG5cbi8qKlxuICogUHV0cyBhIHBob25lIGFuZFxuICogQHBhcmFtIHBhcmFtMFxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyYXBwZWRQaG9uZUFuZExhYmVsRmllbGQoeyBwaG9uZUZpZWxkOiBwaG9uZSwgbGFiZWxGaWVsZDogbGFiZWwgfTogV3JhcHBlZFBob25lQW5kTGFiZWxGaWVsZENvbmZpZyA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICByZXR1cm4gZmxleExheW91dFdyYXBwZXIoXG4gICAgW1xuICAgICAge1xuICAgICAgICBmaWVsZDogcGhvbmVGaWVsZChwaG9uZSksXG4gICAgICAgIHNpemU6IDJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGZpZWxkOiB0ZXh0RmllbGQoe1xuICAgICAgICAgIGtleTogJ2xhYmVsJyxcbiAgICAgICAgICBsYWJlbDogJ0xhYmVsJyxcbiAgICAgICAgICBhdXRvY29tcGxldGU6ICdwaG9uZS1sYWJlbCcsXG4gICAgICAgICAgLi4ubGFiZWxcbiAgICAgICAgfSksXG4gICAgICAgIHNpemU6IDRcbiAgICAgIH1cbiAgICBdLFxuICAgIHsgcmVsYXRpdmU6IHRydWUgfVxuICApO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBob25lQW5kTGFiZWxGaWVsZFNlY3Rpb25Db25maWcgZXh0ZW5kcyBEYnhGb3JtU2VjdGlvbkNvbmZpZywgV3JhcHBlZFBob25lQW5kTGFiZWxGaWVsZENvbmZpZyB7XG4gIGtleT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBob25lQW5kTGFiZWxTZWN0aW9uRmllbGQoeyBrZXksIGhlYWRlciA9ICdQaG9uZSBOdW1iZXInLCBoaW50LCBwaG9uZUZpZWxkLCBsYWJlbEZpZWxkIH06IFBob25lQW5kTGFiZWxGaWVsZFNlY3Rpb25Db25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgcmV0dXJuIHNlY3Rpb25XcmFwcGVyKFxuICAgIHtcbiAgICAgIGtleSxcbiAgICAgIGZpZWxkR3JvdXA6IFt3cmFwcGVkUGhvbmVBbmRMYWJlbEZpZWxkKHsgcGhvbmVGaWVsZCwgbGFiZWxGaWVsZCB9KV1cbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcixcbiAgICAgIGhpbnRcbiAgICB9XG4gICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGhvbmVMaXN0RmllbGRDb25maWcgZXh0ZW5kcyBPbWl0PFJlcGVhdEFycmF5RmllbGRDb25maWcsICdyZXBlYXRGaWVsZEdyb3VwJz4ge1xuICBwaG9uZUFuZExhYmVsPzogV3JhcHBlZFBob25lQW5kTGFiZWxGaWVsZENvbmZpZztcbiAgcmVwZWF0RmllbGRHcm91cD86IEZvcm1seUZpZWxkQ29uZmlnW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaG9uZUxpc3RGaWVsZChyZXBlYXRDb25maWc6IFBhcnRpYWw8UGhvbmVMaXN0RmllbGRDb25maWc+ID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsga2V5ID0gJ3Bob25lcycsIGxhYmVsID0gJ1Bob25lIE51bWJlcnMnLCBhZGRUZXh0ID0gJ0FkZCBQaG9uZSBOdW1iZXInLCByZW1vdmVUZXh0ID0gJ1JlbW92ZSBQaG9uZSBOdW1iZXInLCByZXBlYXRGaWVsZEdyb3VwLCBwaG9uZUFuZExhYmVsIH0gPSByZXBlYXRDb25maWc7XG5cbiAgcmV0dXJuIHJlcGVhdEFycmF5RmllbGQoe1xuICAgIC4uLnJlcGVhdENvbmZpZyxcbiAgICBrZXksXG4gICAgbGFiZWwsXG4gICAgYWRkVGV4dCxcbiAgICByZW1vdmVUZXh0LFxuICAgIHJlcGVhdEZpZWxkR3JvdXA6IHJlcGVhdEZpZWxkR3JvdXAgPz8gW3dyYXBwZWRQaG9uZUFuZExhYmVsRmllbGQocGhvbmVBbmRMYWJlbCldXG4gIH0pO1xufVxuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9waG9uZS9waG9uZS5maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRSxPQUFPLEVBQXNCLFdBQVcsRUFBRSw0QkFBNEIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQTBCLE1BQU0sc0JBQXNCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJaEUsTUFBTSxVQUFVLFVBQVUsQ0FBQyxTQUFpRCxFQUFFO0lBQzVFLE1BQU0sRUFBRSxHQUFHLEdBQUcsT0FBTyxFQUFFLEtBQUssR0FBRyxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNqSSxNQUFNLGNBQWMsR0FBRyxtQkFBbUIsSUFBSSxLQUFLLENBQUM7SUFFcEQsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzlCLEdBQUc7UUFDSCxJQUFJLEVBQUUsVUFBVTtRQUNoQixHQUFHLDRCQUE0QixDQUFDLE1BQU0sRUFBRTtZQUN0QyxLQUFLO1lBQ0wsY0FBYztZQUNkLGtCQUFrQjtZQUNsQixhQUFhO1NBQ2QsQ0FBQztRQUNGLEdBQUcsd0JBQXdCLENBQUM7WUFDMUIsVUFBVSxFQUFFLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDaEQsQ0FBQztLQUNILENBQUMsQ0FBQztJQUVILE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFPRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxLQUFzQyxFQUFFO0lBQ3RILE9BQU8saUJBQWlCLENBQ3RCO1FBQ0U7WUFDRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLEVBQUUsQ0FBQztTQUNSO1FBQ0Q7WUFDRSxLQUFLLEVBQUUsU0FBUyxDQUFDO2dCQUNmLEdBQUcsRUFBRSxPQUFPO2dCQUNaLEtBQUssRUFBRSxPQUFPO2dCQUNkLFlBQVksRUFBRSxhQUFhO2dCQUMzQixHQUFHLEtBQUs7YUFDVCxDQUFDO1lBQ0YsSUFBSSxFQUFFLENBQUM7U0FDUjtLQUNGLEVBQ0QsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQ25CLENBQUM7QUFDSixDQUFDO0FBTUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRyxjQUFjLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEtBQXNDLEVBQUU7SUFDNUksT0FBTyxjQUFjLENBQ25CO1FBQ0UsR0FBRztRQUNILFVBQVUsRUFBRSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7S0FDcEUsRUFDRDtRQUNFLE1BQU07UUFDTixJQUFJO0tBQ0wsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQU9ELE1BQU0sVUFBVSxjQUFjLENBQUMsZUFBOEMsRUFBRTtJQUM3RSxNQUFNLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxLQUFLLEdBQUcsZUFBZSxFQUFFLE9BQU8sR0FBRyxrQkFBa0IsRUFBRSxVQUFVLEdBQUcscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLEdBQUcsWUFBWSxDQUFDO0lBRXBLLE9BQU8sZ0JBQWdCLENBQUM7UUFDdEIsR0FBRyxZQUFZO1FBQ2YsR0FBRztRQUNILEtBQUs7UUFDTCxPQUFPO1FBQ1AsVUFBVTtRQUNWLGdCQUFnQixFQUFFLGdCQUFnQixJQUFJLENBQUMseUJBQXlCLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDakYsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERieEZvcm1TZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vd3JhcHBlci9zZWN0aW9uLndyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IHNlY3Rpb25XcmFwcGVyLCBmbGV4TGF5b3V0V3JhcHBlciB9IGZyb20gJy4uLy4uL3dyYXBwZXIvd3JhcHBlcic7XG5pbXBvcnQgeyB0ZXh0RmllbGQsIFRleHRGaWVsZENvbmZpZyB9IGZyb20gJy4uL3RleHQvdGV4dC5maWVsZCc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgTGFiZWxlZEZpZWxkQ29uZmlnLCBmb3JtbHlGaWVsZCwgcHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZywgdmFsaWRhdG9yc0ZvckZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmllbGQnO1xuaW1wb3J0IHsgSW50ZXJuYXRpb25hbFBob25lRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJy4vcGhvbmUuZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IHJlcGVhdEFycmF5RmllbGQsIFJlcGVhdEFycmF5RmllbGRDb25maWcgfSBmcm9tICcuLi9hcnJheS9hcnJheS5maWVsZCc7XG5pbXBvcnQgeyBpc0UxNjRQaG9uZU51bWJlciB9IGZyb20gJy4uLy4uLy4uLy4uL3ZhbGlkYXRvci9waG9uZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYXRpb25hbFBob25lRmllbGRDb25maWcgZXh0ZW5kcyBMYWJlbGVkRmllbGRDb25maWcsIEludGVybmF0aW9uYWxQaG9uZUZvcm1seUZpZWxkUHJvcHMge31cblxuZXhwb3J0IGZ1bmN0aW9uIHBob25lRmllbGQoY29uZmlnOiBQYXJ0aWFsPEludGVybmF0aW9uYWxQaG9uZUZpZWxkQ29uZmlnPiA9IHt9KTogRm9ybWx5RmllbGRDb25maWc8SW50ZXJuYXRpb25hbFBob25lRm9ybWx5RmllbGRQcm9wcz4ge1xuICBjb25zdCB7IGtleSA9ICdwaG9uZScsIGxhYmVsID0gJ1Bob25lIE51bWJlcicsIHByZWZlcnJlZENvdW50cmllcywgb25seUNvdW50cmllcywgYWxsb3dFeHRlbnNpb246IGlucHV0QWxsb3dFeHRlbnNpb24gfSA9IGNvbmZpZztcbiAgY29uc3QgYWxsb3dFeHRlbnNpb24gPSBpbnB1dEFsbG93RXh0ZW5zaW9uID8/IGZhbHNlO1xuXG4gIGNvbnN0IGZpZWxkQ29uZmlnID0gZm9ybWx5RmllbGQoe1xuICAgIGtleSxcbiAgICB0eXBlOiAnaW50cGhvbmUnLFxuICAgIC4uLnByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcoY29uZmlnLCB7XG4gICAgICBsYWJlbCxcbiAgICAgIGFsbG93RXh0ZW5zaW9uLFxuICAgICAgcHJlZmVycmVkQ291bnRyaWVzLFxuICAgICAgb25seUNvdW50cmllc1xuICAgIH0pLFxuICAgIC4uLnZhbGlkYXRvcnNGb3JGaWVsZENvbmZpZyh7XG4gICAgICB2YWxpZGF0b3JzOiBbaXNFMTY0UGhvbmVOdW1iZXIoYWxsb3dFeHRlbnNpb24pXVxuICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBmaWVsZENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXcmFwcGVkUGhvbmVBbmRMYWJlbEZpZWxkQ29uZmlnIHtcbiAgcGhvbmVGaWVsZD86IFBhcnRpYWw8SW50ZXJuYXRpb25hbFBob25lRmllbGRDb25maWc+O1xuICBsYWJlbEZpZWxkPzogVGV4dEZpZWxkQ29uZmlnO1xufVxuXG4vKipcbiAqIFB1dHMgYSBwaG9uZSBhbmRcbiAqIEBwYXJhbSBwYXJhbTBcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cmFwcGVkUGhvbmVBbmRMYWJlbEZpZWxkKHsgcGhvbmVGaWVsZDogcGhvbmUsIGxhYmVsRmllbGQ6IGxhYmVsIH06IFdyYXBwZWRQaG9uZUFuZExhYmVsRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgcmV0dXJuIGZsZXhMYXlvdXRXcmFwcGVyKFxuICAgIFtcbiAgICAgIHtcbiAgICAgICAgZmllbGQ6IHBob25lRmllbGQocGhvbmUpLFxuICAgICAgICBzaXplOiAyXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBmaWVsZDogdGV4dEZpZWxkKHtcbiAgICAgICAgICBrZXk6ICdsYWJlbCcsXG4gICAgICAgICAgbGFiZWw6ICdMYWJlbCcsXG4gICAgICAgICAgYXV0b2NvbXBsZXRlOiAncGhvbmUtbGFiZWwnLFxuICAgICAgICAgIC4uLmxhYmVsXG4gICAgICAgIH0pLFxuICAgICAgICBzaXplOiA0XG4gICAgICB9XG4gICAgXSxcbiAgICB7IHJlbGF0aXZlOiB0cnVlIH1cbiAgKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaG9uZUFuZExhYmVsRmllbGRTZWN0aW9uQ29uZmlnIGV4dGVuZHMgRGJ4Rm9ybVNlY3Rpb25Db25maWcsIFdyYXBwZWRQaG9uZUFuZExhYmVsRmllbGRDb25maWcge1xuICBrZXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaG9uZUFuZExhYmVsU2VjdGlvbkZpZWxkKHsga2V5LCBoZWFkZXIgPSAnUGhvbmUgTnVtYmVyJywgaGludCwgcGhvbmVGaWVsZCwgbGFiZWxGaWVsZCB9OiBQaG9uZUFuZExhYmVsRmllbGRTZWN0aW9uQ29uZmlnID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIHJldHVybiBzZWN0aW9uV3JhcHBlcihcbiAgICB7XG4gICAgICBrZXksXG4gICAgICBmaWVsZEdyb3VwOiBbd3JhcHBlZFBob25lQW5kTGFiZWxGaWVsZCh7IHBob25lRmllbGQsIGxhYmVsRmllbGQgfSldXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWFkZXIsXG4gICAgICBoaW50XG4gICAgfVxuICApO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBob25lTGlzdEZpZWxkQ29uZmlnIGV4dGVuZHMgT21pdDxSZXBlYXRBcnJheUZpZWxkQ29uZmlnLCAncmVwZWF0RmllbGRHcm91cCc+IHtcbiAgcGhvbmVBbmRMYWJlbD86IFdyYXBwZWRQaG9uZUFuZExhYmVsRmllbGRDb25maWc7XG4gIHJlcGVhdEZpZWxkR3JvdXA/OiBGb3JtbHlGaWVsZENvbmZpZ1tdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGhvbmVMaXN0RmllbGQocmVwZWF0Q29uZmlnOiBQYXJ0aWFsPFBob25lTGlzdEZpZWxkQ29uZmlnPiA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IGtleSA9ICdwaG9uZXMnLCBsYWJlbCA9ICdQaG9uZSBOdW1iZXJzJywgYWRkVGV4dCA9ICdBZGQgUGhvbmUgTnVtYmVyJywgcmVtb3ZlVGV4dCA9ICdSZW1vdmUgUGhvbmUgTnVtYmVyJywgcmVwZWF0RmllbGRHcm91cCwgcGhvbmVBbmRMYWJlbCB9ID0gcmVwZWF0Q29uZmlnO1xuXG4gIHJldHVybiByZXBlYXRBcnJheUZpZWxkKHtcbiAgICAuLi5yZXBlYXRDb25maWcsXG4gICAga2V5LFxuICAgIGxhYmVsLFxuICAgIGFkZFRleHQsXG4gICAgcmVtb3ZlVGV4dCxcbiAgICByZXBlYXRGaWVsZEdyb3VwOiByZXBlYXRGaWVsZEdyb3VwID8/IFt3cmFwcGVkUGhvbmVBbmRMYWJlbEZpZWxkKHBob25lQW5kTGFiZWwpXVxuICB9KTtcbn1cbiJdfQ==
@@ -3,4 +3,5 @@ export * from './email';
3
3
  export * from './field';
4
4
  export * from './number';
5
5
  export * from './available';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL3ZhbGlkYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYm9vbGVhbic7XG5leHBvcnQgKiBmcm9tICcuL2VtYWlsJztcbmV4cG9ydCAqIGZyb20gJy4vZmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9udW1iZXInO1xuZXhwb3J0ICogZnJvbSAnLi9hdmFpbGFibGUnO1xuIl19
6
+ export * from './phone';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL3ZhbGlkYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYm9vbGVhbic7XG5leHBvcnQgKiBmcm9tICcuL2VtYWlsJztcbmV4cG9ydCAqIGZyb20gJy4vZmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9udW1iZXInO1xuZXhwb3J0ICogZnJvbSAnLi9hdmFpbGFibGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waG9uZSc7XG4iXX0=
@@ -0,0 +1,61 @@
1
+ import { e164PhoneNumberExtensionPair, isE164PhoneNumber as isE164PhoneNumberFunction, isValidPhoneExtensionNumber } from '@dereekb/util';
2
+ import { INVALID_PHONE_NUMBER_EXTENSION_MESSAGE, INVALID_PHONE_NUMBER_MESSAGE } from '../formly/config/validation';
3
+ /**
4
+ * Angular Form ValidationFn for checking isE164PhoneNumber the input divisor.
5
+ *
6
+ * @param divisor
7
+ * @returns
8
+ */
9
+ export function isE164PhoneNumber(allowExtension) {
10
+ return (control) => {
11
+ const value = control.value;
12
+ if (value != null && !isE164PhoneNumberFunction(value, allowExtension)) {
13
+ return {
14
+ [INVALID_PHONE_NUMBER_MESSAGE.name]: true
15
+ };
16
+ }
17
+ return {};
18
+ };
19
+ }
20
+ /**
21
+ * Angular Form ValidationFn for checking the input is a valid phone extension. Empty values return true.
22
+ *
23
+ * @param divisor
24
+ * @returns
25
+ */
26
+ export function isPhoneExtension() {
27
+ return (control) => {
28
+ const value = control.value;
29
+ if (value != null) {
30
+ const asString = value.toString();
31
+ if (asString.length > 0 && !isValidPhoneExtensionNumber(asString)) {
32
+ return {
33
+ [INVALID_PHONE_NUMBER_EXTENSION_MESSAGE.name]: true
34
+ };
35
+ }
36
+ }
37
+ return {};
38
+ };
39
+ }
40
+ export function isE164PhoneNumberWithValidExtension() {
41
+ return (control) => {
42
+ const value = control.value;
43
+ if (value != null) {
44
+ if (isE164PhoneNumberFunction(value, true)) {
45
+ const pair = e164PhoneNumberExtensionPair(value);
46
+ if (pair.extension && !isValidPhoneExtensionNumber(pair.extension)) {
47
+ return {
48
+ [INVALID_PHONE_NUMBER_EXTENSION_MESSAGE.name]: true
49
+ };
50
+ }
51
+ }
52
+ else {
53
+ return {
54
+ [INVALID_PHONE_NUMBER_MESSAGE.name]: true
55
+ };
56
+ }
57
+ }
58
+ return {};
59
+ };
60
+ }
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL3ZhbGlkYXRvci9waG9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsaUJBQWlCLElBQUkseUJBQXlCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLHNDQUFzQyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkg7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsY0FBdUI7SUFDdkQsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7UUFDM0QsTUFBTSxLQUFLLEdBQXVCLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFaEQsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxFQUFFO1lBQ3RFLE9BQU87Z0JBQ0wsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJO2FBQzFDLENBQUM7U0FDSDtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUMzRCxNQUFNLEtBQUssR0FBZ0MsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUV6RCxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDakIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRWxDLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDakUsT0FBTztvQkFDTCxDQUFDLHNDQUFzQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUk7aUJBQ3BELENBQUM7YUFDSDtTQUNGO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLG1DQUFtQztJQUNqRCxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUMzRCxNQUFNLEtBQUssR0FBdUIsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUVoRCxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDakIsSUFBSSx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQzFDLE1BQU0sSUFBSSxHQUFHLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUVqRCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ2xFLE9BQU87d0JBQ0wsQ0FBQyxzQ0FBc0MsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJO3FCQUNwRCxDQUFDO2lCQUNIO2FBQ0Y7aUJBQU07Z0JBQ0wsT0FBTztvQkFDTCxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUk7aUJBQzFDLENBQUM7YUFDSDtTQUNGO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGUxNjRQaG9uZU51bWJlckV4dGVuc2lvblBhaXIsIGlzRTE2NFBob25lTnVtYmVyIGFzIGlzRTE2NFBob25lTnVtYmVyRnVuY3Rpb24sIGlzVmFsaWRQaG9uZUV4dGVuc2lvbk51bWJlciB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgSU5WQUxJRF9QSE9ORV9OVU1CRVJfRVhURU5TSU9OX01FU1NBR0UsIElOVkFMSURfUEhPTkVfTlVNQkVSX01FU1NBR0UgfSBmcm9tICcuLi9mb3JtbHkvY29uZmlnL3ZhbGlkYXRpb24nO1xuXG4vKipcbiAqIEFuZ3VsYXIgRm9ybSBWYWxpZGF0aW9uRm4gZm9yIGNoZWNraW5nIGlzRTE2NFBob25lTnVtYmVyIHRoZSBpbnB1dCBkaXZpc29yLlxuICpcbiAqIEBwYXJhbSBkaXZpc29yXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFMTY0UGhvbmVOdW1iZXIoYWxsb3dFeHRlbnNpb246IGJvb2xlYW4pOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgaWYgKHZhbHVlICE9IG51bGwgJiYgIWlzRTE2NFBob25lTnVtYmVyRnVuY3Rpb24odmFsdWUsIGFsbG93RXh0ZW5zaW9uKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW0lOVkFMSURfUEhPTkVfTlVNQkVSX01FU1NBR0UubmFtZV06IHRydWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHt9O1xuICB9O1xufVxuXG4vKipcbiAqIEFuZ3VsYXIgRm9ybSBWYWxpZGF0aW9uRm4gZm9yIGNoZWNraW5nIHRoZSBpbnB1dCBpcyBhIHZhbGlkIHBob25lIGV4dGVuc2lvbi4gRW1wdHkgdmFsdWVzIHJldHVybiB0cnVlLlxuICpcbiAqIEBwYXJhbSBkaXZpc29yXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQaG9uZUV4dGVuc2lvbigpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGFzU3RyaW5nID0gdmFsdWUudG9TdHJpbmcoKTtcblxuICAgICAgaWYgKGFzU3RyaW5nLmxlbmd0aCA+IDAgJiYgIWlzVmFsaWRQaG9uZUV4dGVuc2lvbk51bWJlcihhc1N0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBbSU5WQUxJRF9QSE9ORV9OVU1CRVJfRVhURU5TSU9OX01FU1NBR0UubmFtZV06IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge307XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0UxNjRQaG9uZU51bWJlcldpdGhWYWxpZEV4dGVuc2lvbigpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIGlmIChpc0UxNjRQaG9uZU51bWJlckZ1bmN0aW9uKHZhbHVlLCB0cnVlKSkge1xuICAgICAgICBjb25zdCBwYWlyID0gZTE2NFBob25lTnVtYmVyRXh0ZW5zaW9uUGFpcih2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHBhaXIuZXh0ZW5zaW9uICYmICFpc1ZhbGlkUGhvbmVFeHRlbnNpb25OdW1iZXIocGFpci5leHRlbnNpb24pKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIFtJTlZBTElEX1BIT05FX05VTUJFUl9FWFRFTlNJT05fTUVTU0FHRS5uYW1lXTogdHJ1ZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgW0lOVkFMSURfUEhPTkVfTlVNQkVSX01FU1NBR0UubmFtZV06IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge307XG4gIH07XG59XG4iXX0=