ngx-dial-input 2.0.1 → 2.0.3

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.
@@ -52,7 +52,8 @@ export class PhoneInputComponent {
52
52
  }
53
53
  onSearchChange() {
54
54
  const term = this.searchTerm.toLowerCase();
55
- this.countriesList = countries.filter(c => c.name.toLowerCase().includes(term));
55
+ this.countriesList = countries.filter(c => c.name.toLowerCase().includes(term) ||
56
+ (c.native?.toLowerCase().includes(term)));
56
57
  }
57
58
  selectCountry(country) {
58
59
  this.selectedCountry = country;
@@ -65,20 +66,25 @@ export class PhoneInputComponent {
65
66
  this.emitPhoneChange();
66
67
  }
67
68
  emitPhoneChange() {
68
- const digitsOnly = this.phoneNumber.replace(/\D/g, '');
69
- const length = digitsOnly.length;
70
- const expectedLength = this.selectedCountry?.phoneLength;
71
- if (expectedLength) {
72
- this.isInvalid = length !== expectedLength;
69
+ const raw = this.phoneNumber || '';
70
+ const digitsOnly = raw.replace(/\D/g, '');
71
+ const hyphenCount = (raw.match(/-/g) || []).length;
72
+ const spaceCount = (raw.match(/ /g) || []).length;
73
+ const totalChars = this.phoneNumber.length;
74
+ const maxAllowedLength = this.selectedCountry?.phoneLength + hyphenCount + spaceCount;
75
+ if (digitsOnly.length !== this.selectedCountry?.phoneLength) {
76
+ this.isInvalid = true;
77
+ }
78
+ else if (totalChars > maxAllowedLength) {
79
+ this.isInvalid = true;
73
80
  }
74
81
  else {
75
- // fallback validation
76
- this.isInvalid = length < 7 || length > 12;
82
+ this.isInvalid = false;
77
83
  }
78
- const fullPhone = this.selectedCountry.dialCode + this.phoneNumber;
84
+ const fullPhone = this.selectedCountry.dialCode + raw;
79
85
  const structuredValue = {
80
86
  e164Number: fullPhone,
81
- nationalNumber: this.phoneNumber,
87
+ nationalNumber: raw,
82
88
  dialCode: this.selectedCountry.dialCode,
83
89
  countryCode: this.selectedCountry.iso2,
84
90
  isValid: !this.isInvalid,
@@ -108,12 +114,16 @@ export class PhoneInputComponent {
108
114
  registerOnTouched(fn) {
109
115
  this.onTouched = fn;
110
116
  }
111
- allowOnlyNumbers(event) {
117
+ allowPhoneCharacters(event) {
118
+ const allowedChars = [' ', '-'];
112
119
  const charCode = event.charCode;
113
- // Allow only digits (0–9)
114
- if (charCode < 48 || charCode > 57) {
115
- event.preventDefault();
116
- }
120
+ // Allow digits 0–9
121
+ if (charCode >= 48 && charCode <= 57)
122
+ return;
123
+ // Allow hyphen and space
124
+ if (allowedChars.includes(event.key))
125
+ return;
126
+ event.preventDefault();
117
127
  }
118
128
  }
119
129
  PhoneInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
@@ -133,14 +143,14 @@ PhoneInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
133
143
  <!-- Phone Input (80%) -->
134
144
  <input
135
145
  type="tel"
136
- pattern="[0-9]*"
146
+ pattern="[0-9\\s\\-]*"
137
147
  inputmode="numeric"
138
148
  class="phone-input"
139
149
  [placeholder]="placeholder"
140
150
  [(ngModel)]="phoneNumber"
141
151
  [ngClass]="{ 'error-border': isInvalid }"
142
152
  (input)="onPhoneInput()"
143
- (keypress)="allowOnlyNumbers($event)"
153
+ (keypress)="allowPhoneCharacters($event)"
144
154
  />
145
155
  </div>
146
156
 
@@ -229,14 +239,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
229
239
  <!-- Phone Input (80%) -->
230
240
  <input
231
241
  type="tel"
232
- pattern="[0-9]*"
242
+ pattern="[0-9\\s\\-]*"
233
243
  inputmode="numeric"
234
244
  class="phone-input"
235
245
  [placeholder]="placeholder"
236
246
  [(ngModel)]="phoneNumber"
237
247
  [ngClass]="{ 'error-border': isInvalid }"
238
248
  (input)="onPhoneInput()"
239
- (keypress)="allowOnlyNumbers($event)"
249
+ (keypress)="allowPhoneCharacters($event)"
240
250
  />
241
251
  </div>
242
252
 
@@ -289,4 +299,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
289
299
  type: HostListener,
290
300
  args: ['document:click', ['$event']]
291
301
  }] } });
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGhvbmUtaW5wdXQvc3JjL2xpYi9waG9uZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixZQUFZLEVBQ1osVUFBVSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQTZMN0IsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQWhCcEMsa0JBQWEsR0FBRyxTQUFTLENBQUM7UUFDMUIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNQLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBQzVCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLGlCQUFZLEdBQWlDLGVBQWUsQ0FBQztRQUM3RCxvQkFBZSxHQUFXLEVBQUUsQ0FBQztRQUM1QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFL0MsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDMUIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLG9CQUFlLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBSXZCLGFBQVEsR0FBUSxHQUFHLEVBQUUs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QUssQ0FBQztnQ0FDbEIsT0FBTyxFQUFFLENBQUM7Z0NBQ1YsU0FBUyxFQUFFLFdBQVc7Z0NBQ3RCLE1BQU0sRUFBRSxHQUFHO2dDQUNYLE9BQU8sRUFBRSxHQUFHOzZCQUNiLENBQUMsQ0FBQzs0QkFDSCxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQztnQ0FDcEIsT0FBTyxFQUFFLENBQUM7Z0NBQ1YsU0FBUyxFQUFFLFdBQVc7Z0NBQ3RCLE1BQU0sRUFBRSxLQUFLO2dDQUNiLE9BQU8sRUFBRSxLQUFLOzZCQUNmLENBQUMsQ0FBQzs0QkFDSCxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7Z0NBQzNCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQzs2QkFDMUIsQ0FBQzs0QkFDRixVQUFVLENBQUMsZ0JBQWdCLEVBQUU7Z0NBQzNCLE9BQU8sQ0FBQyxlQUFlLENBQUM7NkJBQ3pCLENBQUM7eUJBQ0gsQ0FBQztxQkFDSCxZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtRFQsYUF3R1UsQ0FBQzs0QkFDVixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQztpR0FLTyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFzQlAsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBmb3J3YXJkUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgY291bnRyaWVzIH0gZnJvbSAnLi4vZGF0YS9jb3VudHJpZXMnO1xyXG5pbXBvcnQge1xyXG4gIHRyaWdnZXIsXHJcbiAgc3RhdGUsXHJcbiAgc3R5bGUsXHJcbiAgdHJhbnNpdGlvbixcclxuICBhbmltYXRlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncGhvbmUtaW5wdXQnLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2Ryb3Bkb3duQW5pbWF0aW9uJywgW1xyXG4gICAgICBzdGF0ZSgnb3BlbicsIHN0eWxlKHtcclxuICAgICAgICBvcGFjaXR5OiAxLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWSgxKScsXHJcbiAgICAgICAgaGVpZ2h0OiAnKicsXHJcbiAgICAgICAgcGFkZGluZzogJyonXHJcbiAgICAgIH0pKSxcclxuICAgICAgc3RhdGUoJ2Nsb3NlZCcsIHN0eWxlKHtcclxuICAgICAgICBvcGFjaXR5OiAwLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWSgwKScsXHJcbiAgICAgICAgaGVpZ2h0OiAnMHB4JyxcclxuICAgICAgICBwYWRkaW5nOiAnMHB4J1xyXG4gICAgICB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW1xyXG4gICAgICAgIGFuaW1hdGUoJzIwMG1zIGVhc2Utb3V0JylcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ29wZW4gPT4gY2xvc2VkJywgW1xyXG4gICAgICAgIGFuaW1hdGUoJzE1MG1zIGVhc2UtaW4nKVxyXG4gICAgICBdKVxyXG4gICAgXSlcclxuICBdLFxyXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInBob25lLWlucHV0LXdyYXBwZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICA8IS0tIENvdW50cnkgU2VsZWN0b3IgKDIwJSkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY291bnRyeS1zZWxlY3RcIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiIChibHVyKT1cInRvZ2dsZURyb3Bkb3duKClcIj5cclxuICAgICAgPGltZyBbc3JjXT1cInNlbGVjdGVkQ291bnRyeS5mbGFnXCIgd2lkdGg9XCIyMFwiIC8+XHJcbiAgICAgIDxzcGFuPnt7c2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3ctZG93blwiPuKWvjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUGhvbmUgSW5wdXQgKDgwJSkgLS0+XHJcbiAgICA8aW5wdXRcclxuICAgICAgdHlwZT1cInRlbFwiXHJcbiAgICAgIHBhdHRlcm49XCJbMC05XSpcIlxyXG4gICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcclxuICAgICAgY2xhc3M9XCJwaG9uZS1pbnB1dFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwicGhvbmVOdW1iZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7ICdlcnJvci1ib3JkZXInOiBpc0ludmFsaWQgfVwiXHJcbiAgICAgIChpbnB1dCk9XCJvblBob25lSW5wdXQoKVwiXHJcbiAgICAgIChrZXlwcmVzcyk9XCJhbGxvd09ubHlOdW1iZXJzKCRldmVudClcIlxyXG4gICAgLz5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBEcm9wZG93biBDb250ZW50IChmdWxsIHdpZHRoIGJlbG93KSAtLT5cclxuICA8ZGl2XHJcbiAgY2xhc3M9XCJkcm9wZG93bi1jb250ZW50XCJcclxuICBbQGRyb3Bkb3duQW5pbWF0aW9uXT1cImRyb3Bkb3duT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCJcclxuICAqbmdJZj1cImRyb3Bkb3duT3BlbiB8fCBhbmltYXRpbmdcIlxyXG4gIChAZHJvcGRvd25BbmltYXRpb24uZG9uZSk9XCJvbkFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiID5cclxuICAgIDxpbnB1dFxyXG4gICAgICAqbmdJZj1cInNlYXJjaEVuYWJsZWRcIlxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIGNsYXNzPVwic2VhcmNoLWJveFwiXHJcbiAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIENvdW50cnlcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxyXG4gICAgICAoaW5wdXQpPVwib25TZWFyY2hDaGFuZ2UoKVwiXHJcbiAgICAvPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvdW50cnktbGlzdFwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJjb3VudHJ5LW9wdGlvblwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvdW50cnkgb2YgY291bnRyaWVzTGlzdFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdENvdW50cnkoY291bnRyeSlcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImNvdW50cnkuZmxhZ1wiIHdpZHRoPVwiMjBcIiAvPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRyeS1uYW1lXCI+e3sgY291bnRyeS5uYW1lIH19ICh7eyBjb3VudHJ5Lm5hdGl2ZSB9fSk8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkaWFsLWNvZGVcIj57eyBjb3VudHJ5LmRpYWxDb2RlIH19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICAucGhvbmUtaW5wdXQtd3JhcHBlciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjtcclxufVxyXG5cclxuLmlucHV0LWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICB3aWR0aDogMTAwJTtcclxuICBwYWRkaW5nLWJvdHRvbTogM3B4O1xyXG59XHJcblxyXG4vKiBDb3VudHJ5IFNlbGVjdCAoMjAlKSAqL1xyXG4uY291bnRyeS1zZWxlY3Qge1xyXG4gIHdpZHRoOiAyNCU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yaWdodDogbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiA0cHggMCAwIDRweDtcclxuICBwYWRkaW5nOiA4cHggOHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4O1xyXG59XHJcblxyXG4uY291bnRyeS1zZWxlY3QgaW1nIHtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuLmFycm93LWRvd24ge1xyXG4gIGZvbnQtc2l6ZTogMTNweDtcclxuICBjb2xvcjogIzY2NjtcclxufVxyXG4uYXJyb3ctZG93bjphZnRlciB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcbi8qIFBob25lIElucHV0ICg4MCUpICovXHJcbi5waG9uZS1pbnB1dCB7XHJcbiAgd2lkdGg6IDgwJTtcclxuICBwYWRkaW5nOiA4cHggMTJweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbi8qIERyb3Bkb3duIENvbnRlbnQgKi9cclxuLmRyb3Bkb3duLWNvbnRlbnQge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDEwMCU7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAgMCA0cHggNHB4O1xyXG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMSk7XHJcbiAgei1pbmRleDogMTAwMDtcclxuICBtYXJnaW4tdG9wOiAtMXB4O1xyXG59XHJcblxyXG4uc2VhcmNoLWJveCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZzogOHB4IDEycHg7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbi5jb3VudHJ5LWxpc3Qge1xyXG4gIG1heC1oZWlnaHQ6IDIwMHB4O1xyXG4gIG92ZXJmbG93LXk6IGF1dG87XHJcbn1cclxuXHJcbi5jb3VudHJ5LW9wdGlvbiB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHBhZGRpbmc6IDhweCAxMnB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmNvdW50cnktb3B0aW9uOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xyXG59XHJcblxyXG4uY291bnRyeS1vcHRpb24gaW1nIHtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuLmNvdW50cnktbmFtZSB7XHJcbiAgZmxleC1ncm93OiAxO1xyXG59XHJcblxyXG4uZGlhbC1jb2RlIHtcclxuICBjb2xvcjogIzY2NjtcclxuICBmb250LXNpemU6IDAuOWVtO1xyXG59XHJcblxyXG4vKiBFcnJvciBTdGF0ZSAqL1xyXG5pbnB1dC5lcnJvci1ib3JkZXIge1xyXG4gIGJvcmRlci1jb2xvcjogcmVkO1xyXG59XHJcblxyXG4gIGBdLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGhvbmVJbnB1dENvbXBvbmVudCksXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG4gIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQaG9uZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIGNvdW50cmllc0xpc3QgPSBjb3VudHJpZXM7XHJcbiAgc2VhcmNoVGVybSA9ICcnO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRDb3VudHJ5OiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgc2VhcmNoRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgbnVtYmVyRm9ybWF0OiAnaW50ZXJuYXRpb25hbCcgfCAnbmF0aW9uYWwnID0gJ2ludGVybmF0aW9uYWwnO1xyXG4gIEBJbnB1dCgpIHNldEZpcnN0Q291bnRyeTogc3RyaW5nID0gJyc7XHJcbiAgQE91dHB1dCgpIHBob25lQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICBwaG9uZU51bWJlcjogc3RyaW5nID0gJyc7XHJcbiAgaXNJbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYW5pbWF0aW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHNlbGVjdGVkQ291bnRyeSA9IGNvdW50cmllc1swXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmKSB7fVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcclxuICBwcml2YXRlIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XHJcblxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmRlZmF1bHRDb3VudHJ5KSB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gY291bnRyaWVzLmZpbmQoYyA9PiBjLmlzbzIgPT09IHRoaXMuZGVmYXVsdENvdW50cnkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgIGlmIChtYXRjaCkgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBtYXRjaDtcclxuICAgIH1cclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmVSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IGFueSkge1xyXG4gIGlmICghdGhpcy5kcm9wZG93bk9wZW4pIHtcclxuICAgIHRoaXMuYW5pbWF0aW5nID0gZmFsc2U7XHJcbiAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9ICF0aGlzLmRyb3Bkb3duT3BlbjtcclxuICAgIHRoaXMuYW5pbWF0aW5nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgdGhpcy5kcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgdGVybSA9IHRoaXMuc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzLmZpbHRlcihjID0+XHJcbiAgICAgIGMubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q291bnRyeShjb3VudHJ5OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gY291bnRyeTtcclxuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xyXG4gICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzO1xyXG4gICAgdGhpcy5kcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuZW1pdFBob25lQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBvblBob25lSW5wdXQoKSB7XHJcbiAgICB0aGlzLmVtaXRQaG9uZUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0UGhvbmVDaGFuZ2UoKSB7XHJcbiAgICBjb25zdCBkaWdpdHNPbmx5ID0gdGhpcy5waG9uZU51bWJlci5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG4gICAgY29uc3QgbGVuZ3RoID0gZGlnaXRzT25seS5sZW5ndGg7XHJcblxyXG4gICAgY29uc3QgZXhwZWN0ZWRMZW5ndGggPSB0aGlzLnNlbGVjdGVkQ291bnRyeT8ucGhvbmVMZW5ndGg7XHJcblxyXG4gICAgaWYgKGV4cGVjdGVkTGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gbGVuZ3RoICE9PSBleHBlY3RlZExlbmd0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGZhbGxiYWNrIHZhbGlkYXRpb25cclxuICAgICAgdGhpcy5pc0ludmFsaWQgPSBsZW5ndGggPCA3IHx8IGxlbmd0aCA+IDEyO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZ1bGxQaG9uZSA9IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlICsgdGhpcy5waG9uZU51bWJlcjtcclxuXHJcbiAgICBjb25zdCBzdHJ1Y3R1cmVkVmFsdWUgPSB7XHJcbiAgICAgIGUxNjROdW1iZXI6IGZ1bGxQaG9uZSxcclxuICAgICAgbmF0aW9uYWxOdW1iZXI6IHRoaXMucGhvbmVOdW1iZXIsXHJcbiAgICAgIGRpYWxDb2RlOiB0aGlzLnNlbGVjdGVkQ291bnRyeS5kaWFsQ29kZSxcclxuICAgICAgY291bnRyeUNvZGU6IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzIsXHJcbiAgICAgIGlzVmFsaWQ6ICF0aGlzLmlzSW52YWxpZCxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZShzdHJ1Y3R1cmVkVmFsdWUpO1xyXG4gICAgdGhpcy5waG9uZUNoYW5nZS5lbWl0KHN0cnVjdHVyZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5kaWFsQ29kZSAmJiB2YWx1ZS5jb3VudHJ5Q29kZSkge1xyXG4gICAgICBjb25zdCBtYXRjaCA9IGNvdW50cmllcy5maW5kKGMgPT5cclxuICAgICAgICBjLmRpYWxDb2RlID09PSB2YWx1ZS5kaWFsQ29kZSAmJiBjLmlzbzIgPT09IHZhbHVlLmNvdW50cnlDb2RlXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gbWF0Y2g7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBjb3VudHJpZXNbMF07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5waG9uZU51bWJlciA9IHZhbHVlLm5hdGlvbmFsTnVtYmVyIHx8ICcnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBjb3VudHJpZXNbMF07XHJcbiAgICAgIHRoaXMucGhvbmVOdW1iZXIgPSAnJztcclxuICAgIH1cclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuICBhbGxvd09ubHlOdW1iZXJzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgY29uc3QgY2hhckNvZGUgPSBldmVudC5jaGFyQ29kZTtcclxuXHJcbiAgLy8gQWxsb3cgb25seSBkaWdpdHMgKDDigJM5KVxyXG4gIGlmIChjaGFyQ29kZSA8IDQ4IHx8IGNoYXJDb2RlID4gNTcpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG59XHJcblxyXG59XHJcbiJdfQ==
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGhvbmUtaW5wdXQvc3JjL2xpYi9waG9uZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixZQUFZLEVBQ1osVUFBVSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQTZMN0IsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQWhCcEMsa0JBQWEsR0FBRyxTQUFTLENBQUM7UUFDMUIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNQLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBQzVCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLGlCQUFZLEdBQWlDLGVBQWUsQ0FBQztRQUM3RCxvQkFBZSxHQUFXLEVBQUUsQ0FBQztRQUM1QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFL0MsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDMUIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLG9CQUFlLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBSXZCLGFBQVEsR0FBUSxHQUFHLEVBQUUs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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1EVCxhQXdHVSxDQUFDOzRCQUNWLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWixDQUFDO2lHQUtPLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQXNCUCxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIGZvcndhcmRSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjb3VudHJpZXMgfSBmcm9tICcuLi9kYXRhL2NvdW50cmllcyc7XHJcbmltcG9ydCB7XHJcbiAgdHJpZ2dlcixcclxuICBzdGF0ZSxcclxuICBzdHlsZSxcclxuICB0cmFuc2l0aW9uLFxyXG4gIGFuaW1hdGVcclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwaG9uZS1pbnB1dCcsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZHJvcGRvd25BbmltYXRpb24nLCBbXHJcbiAgICAgIHN0YXRlKCdvcGVuJywgc3R5bGUoe1xyXG4gICAgICAgIG9wYWNpdHk6IDEsXHJcbiAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGVZKDEpJyxcclxuICAgICAgICBoZWlnaHQ6ICcqJyxcclxuICAgICAgICBwYWRkaW5nOiAnKidcclxuICAgICAgfSkpLFxyXG4gICAgICBzdGF0ZSgnY2xvc2VkJywgc3R5bGUoe1xyXG4gICAgICAgIG9wYWNpdHk6IDAsXHJcbiAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGVZKDApJyxcclxuICAgICAgICBoZWlnaHQ6ICcwcHgnLFxyXG4gICAgICAgIHBhZGRpbmc6ICcwcHgnXHJcbiAgICAgIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignY2xvc2VkID0+IG9wZW4nLCBbXHJcbiAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1vdXQnKVxyXG4gICAgICBdKSxcclxuICAgICAgdHJhbnNpdGlvbignb3BlbiA9PiBjbG9zZWQnLCBbXHJcbiAgICAgICAgYW5pbWF0ZSgnMTUwbXMgZWFzZS1pbicpXHJcbiAgICAgIF0pXHJcbiAgICBdKVxyXG4gIF0sXHJcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwicGhvbmUtaW5wdXQtd3JhcHBlclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgIDwhLS0gQ291bnRyeSBTZWxlY3RvciAoMjAlKSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb3VudHJ5LXNlbGVjdFwiIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigpXCIgKGJsdXIpPVwidG9nZ2xlRHJvcGRvd24oKVwiPlxyXG4gICAgICA8aW1nIFtzcmNdPVwic2VsZWN0ZWRDb3VudHJ5LmZsYWdcIiB3aWR0aD1cIjIwXCIgLz5cclxuICAgICAgPHNwYW4+e3tzZWxlY3RlZENvdW50cnkuZGlhbENvZGV9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvdy1kb3duXCI+4pa+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBQaG9uZSBJbnB1dCAoODAlKSAtLT5cclxuICAgIDxpbnB1dFxyXG4gICAgICB0eXBlPVwidGVsXCJcclxuICAgICAgcGF0dGVybj1cIlswLTlcXFxcc1xcXFwtXSpcIlxyXG4gICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcclxuICAgICAgY2xhc3M9XCJwaG9uZS1pbnB1dFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwicGhvbmVOdW1iZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7ICdlcnJvci1ib3JkZXInOiBpc0ludmFsaWQgfVwiXHJcbiAgICAgIChpbnB1dCk9XCJvblBob25lSW5wdXQoKVwiXHJcbiAgICAgIChrZXlwcmVzcyk9XCJhbGxvd1Bob25lQ2hhcmFjdGVycygkZXZlbnQpXCJcclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gRHJvcGRvd24gQ29udGVudCAoZnVsbCB3aWR0aCBiZWxvdykgLS0+XHJcbiAgPGRpdlxyXG4gIGNsYXNzPVwiZHJvcGRvd24tY29udGVudFwiXHJcbiAgW0Bkcm9wZG93bkFuaW1hdGlvbl09XCJkcm9wZG93bk9wZW4gPyAnb3BlbicgOiAnY2xvc2VkJ1wiXHJcbiAgKm5nSWY9XCJkcm9wZG93bk9wZW4gfHwgYW5pbWF0aW5nXCJcclxuICAoQGRyb3Bkb3duQW5pbWF0aW9uLmRvbmUpPVwib25BbmltYXRpb25Eb25lKCRldmVudClcIiA+XHJcbiAgICA8aW5wdXRcclxuICAgICAgKm5nSWY9XCJzZWFyY2hFbmFibGVkXCJcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBjbGFzcz1cInNlYXJjaC1ib3hcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBDb3VudHJ5XCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcclxuICAgICAgKGlucHV0KT1cIm9uU2VhcmNoQ2hhbmdlKClcIlxyXG4gICAgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJjb3VudHJ5LWxpc3RcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiY291bnRyeS1vcHRpb25cIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb3VudHJ5IG9mIGNvdW50cmllc0xpc3RcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RDb3VudHJ5KGNvdW50cnkpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJjb3VudHJ5LmZsYWdcIiB3aWR0aD1cIjIwXCIgLz5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50cnktbmFtZVwiPnt7IGNvdW50cnkubmFtZSB9fSAoe3sgY291bnRyeS5uYXRpdmUgfX0pPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGlhbC1jb2RlXCI+e3sgY291bnRyeS5kaWFsQ29kZSB9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgLnBob25lLWlucHV0LXdyYXBwZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7XHJcbn1cclxuXHJcbi5pbnB1dC1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZy1ib3R0b206IDNweDtcclxufVxyXG5cclxuLyogQ291bnRyeSBTZWxlY3QgKDIwJSkgKi9cclxuLmNvdW50cnktc2VsZWN0IHtcclxuICB3aWR0aDogMjQlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICBib3JkZXItcmlnaHQ6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4IDAgMCA0cHg7XHJcbiAgcGFkZGluZzogOHB4IDhweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjhmODtcclxufVxyXG5cclxuLmNvdW50cnktc2VsZWN0IGltZyB7XHJcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbi5hcnJvdy1kb3duIHtcclxuICBmb250LXNpemU6IDEzcHg7XHJcbiAgY29sb3I6ICM2NjY7XHJcbn1cclxuLmFycm93LWRvd246YWZ0ZXIge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG4vKiBQaG9uZSBJbnB1dCAoODAlKSAqL1xyXG4ucGhvbmUtaW5wdXQge1xyXG4gIHdpZHRoOiA4MCU7XHJcbiAgcGFkZGluZzogOHB4IDEycHg7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICBib3JkZXItcmFkaXVzOiAwIDRweCA0cHggMDtcclxuICBvdXRsaW5lOiBub25lO1xyXG59XHJcblxyXG4vKiBEcm9wZG93biBDb250ZW50ICovXHJcbi5kcm9wZG93bi1jb250ZW50IHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAxMDAlO1xyXG4gIGxlZnQ6IDA7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgYmFja2dyb3VuZDogd2hpdGU7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDtcclxuICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLDAsMCwwLjEpO1xyXG4gIHotaW5kZXg6IDEwMDA7XHJcbiAgbWFyZ2luLXRvcDogLTFweDtcclxufVxyXG5cclxuLnNlYXJjaC1ib3gge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIHBhZGRpbmc6IDhweCAxMnB4O1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG59XHJcblxyXG4uY291bnRyeS1saXN0IHtcclxuICBtYXgtaGVpZ2h0OiAyMDBweDtcclxuICBvdmVyZmxvdy15OiBhdXRvO1xyXG59XHJcblxyXG4uY291bnRyeS1vcHRpb24ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBwYWRkaW5nOiA4cHggMTJweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5jb3VudHJ5LW9wdGlvbjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcclxufVxyXG5cclxuLmNvdW50cnktb3B0aW9uIGltZyB7XHJcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbi5jb3VudHJ5LW5hbWUge1xyXG4gIGZsZXgtZ3JvdzogMTtcclxufVxyXG5cclxuLmRpYWwtY29kZSB7XHJcbiAgY29sb3I6ICM2NjY7XHJcbiAgZm9udC1zaXplOiAwLjllbTtcclxufVxyXG5cclxuLyogRXJyb3IgU3RhdGUgKi9cclxuaW5wdXQuZXJyb3ItYm9yZGVyIHtcclxuICBib3JkZXItY29sb3I6IHJlZDtcclxufVxyXG5cclxuICBgXSxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBob25lSW5wdXRDb21wb25lbnQpLFxyXG4gICAgbXVsdGk6IHRydWVcclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGhvbmVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBjb3VudHJpZXNMaXN0ID0gY291bnRyaWVzO1xyXG4gIHNlYXJjaFRlcm0gPSAnJztcclxuICBASW5wdXQoKSBkZWZhdWx0Q291bnRyeTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHNlYXJjaEVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIG51bWJlckZvcm1hdDogJ2ludGVybmF0aW9uYWwnIHwgJ25hdGlvbmFsJyA9ICdpbnRlcm5hdGlvbmFsJztcclxuICBASW5wdXQoKSBzZXRGaXJzdENvdW50cnk6IHN0cmluZyA9ICcnO1xyXG4gIEBPdXRwdXQoKSBwaG9uZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgcGhvbmVOdW1iZXI6IHN0cmluZyA9ICcnO1xyXG4gIGlzSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRyb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFuaW1hdGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzZWxlY3RlZENvdW50cnkgPSBjb3VudHJpZXNbMF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZVJlZjogRWxlbWVudFJlZikge31cclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0Q291bnRyeSkge1xyXG4gICAgICBjb25zdCBtYXRjaCA9IGNvdW50cmllcy5maW5kKGMgPT4gYy5pc28yID09PSB0aGlzLmRlZmF1bHRDb3VudHJ5LnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICBpZiAobWF0Y2gpIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gbWF0Y2g7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVDbGlja091dHNpZGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25BbmltYXRpb25Eb25lKGV2ZW50OiBhbnkpIHtcclxuICBpZiAoIXRoaXMuZHJvcGRvd25PcGVuKSB7XHJcbiAgICB0aGlzLmFuaW1hdGluZyA9IGZhbHNlO1xyXG4gIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZURyb3Bkb3duKCkge1xyXG4gICAgdGhpcy5kcm9wZG93bk9wZW4gPSAhdGhpcy5kcm9wZG93bk9wZW47XHJcbiAgICB0aGlzLmFuaW1hdGluZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmVSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuIG9uU2VhcmNoQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgdGVybSA9IHRoaXMuc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzLmZpbHRlcihjID0+XHJcbiAgICAgIGMubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pIHx8XHJcbiAgICAgIChjLm5hdGl2ZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2VsZWN0Q291bnRyeShjb3VudHJ5OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gY291bnRyeTtcclxuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xyXG4gICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzO1xyXG4gICAgdGhpcy5kcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuZW1pdFBob25lQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBvblBob25lSW5wdXQoKSB7XHJcbiAgICB0aGlzLmVtaXRQaG9uZUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0UGhvbmVDaGFuZ2UoKSB7XHJcbiAgICBjb25zdCByYXcgPSB0aGlzLnBob25lTnVtYmVyIHx8ICcnO1xyXG4gICAgY29uc3QgZGlnaXRzT25seSA9IHJhdy5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG4gICAgY29uc3QgaHlwaGVuQ291bnQgPSAocmF3Lm1hdGNoKC8tL2cpIHx8IFtdKS5sZW5ndGg7XHJcbiAgICBjb25zdCBzcGFjZUNvdW50ID0gKHJhdy5tYXRjaCgvIC9nKSB8fCBbXSkubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IHRvdGFsQ2hhcnMgPSB0aGlzLnBob25lTnVtYmVyLmxlbmd0aDtcclxuICAgIGNvbnN0IG1heEFsbG93ZWRMZW5ndGggPSB0aGlzLnNlbGVjdGVkQ291bnRyeT8ucGhvbmVMZW5ndGggKyBoeXBoZW5Db3VudCArIHNwYWNlQ291bnQ7XHJcblxyXG4gICAgaWYgKGRpZ2l0c09ubHkubGVuZ3RoICE9PSB0aGlzLnNlbGVjdGVkQ291bnRyeT8ucGhvbmVMZW5ndGgpIHtcclxuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodG90YWxDaGFycyA+IG1heEFsbG93ZWRMZW5ndGgpIHtcclxuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBmdWxsUGhvbmUgPSB0aGlzLnNlbGVjdGVkQ291bnRyeS5kaWFsQ29kZSArIHJhdztcclxuXHJcbiAgICBjb25zdCBzdHJ1Y3R1cmVkVmFsdWUgPSB7XHJcbiAgICAgIGUxNjROdW1iZXI6IGZ1bGxQaG9uZSxcclxuICAgICAgbmF0aW9uYWxOdW1iZXI6IHJhdyxcclxuICAgICAgZGlhbENvZGU6IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlLFxyXG4gICAgICBjb3VudHJ5Q29kZTogdGhpcy5zZWxlY3RlZENvdW50cnkuaXNvMixcclxuICAgICAgaXNWYWxpZDogIXRoaXMuaXNJbnZhbGlkLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLm9uQ2hhbmdlKHN0cnVjdHVyZWRWYWx1ZSk7XHJcbiAgICB0aGlzLnBob25lQ2hhbmdlLmVtaXQoc3RydWN0dXJlZFZhbHVlKTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLmRpYWxDb2RlICYmIHZhbHVlLmNvdW50cnlDb2RlKSB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gY291bnRyaWVzLmZpbmQoYyA9PlxyXG4gICAgICAgIGMuZGlhbENvZGUgPT09IHZhbHVlLmRpYWxDb2RlICYmIGMuaXNvMiA9PT0gdmFsdWUuY291bnRyeUNvZGVcclxuICAgICAgKTtcclxuICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBtYXRjaDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IGNvdW50cmllc1swXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBob25lTnVtYmVyID0gdmFsdWUubmF0aW9uYWxOdW1iZXIgfHwgJyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IGNvdW50cmllc1swXTtcclxuICAgICAgdGhpcy5waG9uZU51bWJlciA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG4gIGFsbG93UGhvbmVDaGFyYWN0ZXJzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBhbGxvd2VkQ2hhcnMgPSBbJyAnLCAnLSddO1xyXG4gICAgY29uc3QgY2hhckNvZGUgPSBldmVudC5jaGFyQ29kZTtcclxuXHJcbiAgICAvLyBBbGxvdyBkaWdpdHMgMOKAkzlcclxuICAgIGlmIChjaGFyQ29kZSA+PSA0OCAmJiBjaGFyQ29kZSA8PSA1NykgcmV0dXJuO1xyXG5cclxuICAgIC8vIEFsbG93IGh5cGhlbiBhbmQgc3BhY2VcclxuICAgIGlmIChhbGxvd2VkQ2hhcnMuaW5jbHVkZXMoZXZlbnQua2V5KSkgcmV0dXJuO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1271,7 +1271,11 @@ class PhoneInputComponent {
1271
1271
  }
1272
1272
  onSearchChange() {
1273
1273
  const term = this.searchTerm.toLowerCase();
1274
- this.countriesList = countries.filter(c => c.name.toLowerCase().includes(term));
1274
+ this.countriesList = countries.filter(c => {
1275
+ var _a;
1276
+ return c.name.toLowerCase().includes(term) ||
1277
+ ((_a = c.native) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(term));
1278
+ });
1275
1279
  }
1276
1280
  selectCountry(country) {
1277
1281
  this.selectedCountry = country;
@@ -1284,21 +1288,26 @@ class PhoneInputComponent {
1284
1288
  this.emitPhoneChange();
1285
1289
  }
1286
1290
  emitPhoneChange() {
1287
- var _a;
1288
- const digitsOnly = this.phoneNumber.replace(/\D/g, '');
1289
- const length = digitsOnly.length;
1290
- const expectedLength = (_a = this.selectedCountry) === null || _a === void 0 ? void 0 : _a.phoneLength;
1291
- if (expectedLength) {
1292
- this.isInvalid = length !== expectedLength;
1291
+ var _a, _b;
1292
+ const raw = this.phoneNumber || '';
1293
+ const digitsOnly = raw.replace(/\D/g, '');
1294
+ const hyphenCount = (raw.match(/-/g) || []).length;
1295
+ const spaceCount = (raw.match(/ /g) || []).length;
1296
+ const totalChars = this.phoneNumber.length;
1297
+ const maxAllowedLength = ((_a = this.selectedCountry) === null || _a === void 0 ? void 0 : _a.phoneLength) + hyphenCount + spaceCount;
1298
+ if (digitsOnly.length !== ((_b = this.selectedCountry) === null || _b === void 0 ? void 0 : _b.phoneLength)) {
1299
+ this.isInvalid = true;
1300
+ }
1301
+ else if (totalChars > maxAllowedLength) {
1302
+ this.isInvalid = true;
1293
1303
  }
1294
1304
  else {
1295
- // fallback validation
1296
- this.isInvalid = length < 7 || length > 12;
1305
+ this.isInvalid = false;
1297
1306
  }
1298
- const fullPhone = this.selectedCountry.dialCode + this.phoneNumber;
1307
+ const fullPhone = this.selectedCountry.dialCode + raw;
1299
1308
  const structuredValue = {
1300
1309
  e164Number: fullPhone,
1301
- nationalNumber: this.phoneNumber,
1310
+ nationalNumber: raw,
1302
1311
  dialCode: this.selectedCountry.dialCode,
1303
1312
  countryCode: this.selectedCountry.iso2,
1304
1313
  isValid: !this.isInvalid,
@@ -1328,12 +1337,16 @@ class PhoneInputComponent {
1328
1337
  registerOnTouched(fn) {
1329
1338
  this.onTouched = fn;
1330
1339
  }
1331
- allowOnlyNumbers(event) {
1340
+ allowPhoneCharacters(event) {
1341
+ const allowedChars = [' ', '-'];
1332
1342
  const charCode = event.charCode;
1333
- // Allow only digits (0–9)
1334
- if (charCode < 48 || charCode > 57) {
1335
- event.preventDefault();
1336
- }
1343
+ // Allow digits 0–9
1344
+ if (charCode >= 48 && charCode <= 57)
1345
+ return;
1346
+ // Allow hyphen and space
1347
+ if (allowedChars.includes(event.key))
1348
+ return;
1349
+ event.preventDefault();
1337
1350
  }
1338
1351
  }
1339
1352
  PhoneInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
@@ -1353,14 +1366,14 @@ PhoneInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
1353
1366
  <!-- Phone Input (80%) -->
1354
1367
  <input
1355
1368
  type="tel"
1356
- pattern="[0-9]*"
1369
+ pattern="[0-9\\s\\-]*"
1357
1370
  inputmode="numeric"
1358
1371
  class="phone-input"
1359
1372
  [placeholder]="placeholder"
1360
1373
  [(ngModel)]="phoneNumber"
1361
1374
  [ngClass]="{ 'error-border': isInvalid }"
1362
1375
  (input)="onPhoneInput()"
1363
- (keypress)="allowOnlyNumbers($event)"
1376
+ (keypress)="allowPhoneCharacters($event)"
1364
1377
  />
1365
1378
  </div>
1366
1379
 
@@ -1449,14 +1462,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1449
1462
  <!-- Phone Input (80%) -->
1450
1463
  <input
1451
1464
  type="tel"
1452
- pattern="[0-9]*"
1465
+ pattern="[0-9\\s\\-]*"
1453
1466
  inputmode="numeric"
1454
1467
  class="phone-input"
1455
1468
  [placeholder]="placeholder"
1456
1469
  [(ngModel)]="phoneNumber"
1457
1470
  [ngClass]="{ 'error-border': isInvalid }"
1458
1471
  (input)="onPhoneInput()"
1459
- (keypress)="allowOnlyNumbers($event)"
1472
+ (keypress)="allowPhoneCharacters($event)"
1460
1473
  />
1461
1474
  </div>
1462
1475