valtech-components 2.0.652 → 2.0.654

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.
@@ -1,7 +1,7 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { Component, inject, Input, Output, EventEmitter } from '@angular/core';
3
3
  import { ReactiveFormsModule, FormControl } from '@angular/forms';
4
- import { IonInput, IonSelect, IonSelectOption, IonNote, IonIcon, } from '@ionic/angular/standalone';
4
+ import { IonSelect, IonSelectOption, IonNote, IonIcon, } from '@ionic/angular/standalone';
5
5
  import { addIcons } from 'ionicons';
6
6
  import { callOutline, chevronDownOutline } from 'ionicons/icons';
7
7
  import { PresetService } from '../../../services/presets';
@@ -183,6 +183,20 @@ export class PhoneInputComponent {
183
183
  this.internalNumberControl.setValue(value);
184
184
  this.updateMainControl();
185
185
  }
186
+ onNumberInputNative(event) {
187
+ const input = event.target;
188
+ // Filter non-numeric characters except spaces and dashes
189
+ let value = (input.value || '').replace(/[^\d\s\-]/g, '');
190
+ // Apply max digits limit
191
+ if (this.resolvedProps.maxDigits) {
192
+ const digitsOnly = value.replace(/\D/g, '');
193
+ if (digitsOnly.length > this.resolvedProps.maxDigits) {
194
+ value = digitsOnly.substring(0, this.resolvedProps.maxDigits);
195
+ }
196
+ }
197
+ this.internalNumberControl.setValue(value);
198
+ this.updateMainControl();
199
+ }
186
200
  onBlur() {
187
201
  this.resolvedProps.control?.markAsTouched();
188
202
  }
@@ -251,19 +265,19 @@ export class PhoneInputComponent {
251
265
  }
252
266
 
253
267
  <div class="number-input">
254
- <ion-input
255
- [formControl]="internalNumberControl"
268
+ <ion-icon name="call-outline" aria-hidden="true" class="phone-icon"></ion-icon>
269
+ <input
256
270
  type="tel"
257
271
  inputmode="tel"
272
+ [formControl]="internalNumberControl"
258
273
  [placeholder]="getPlaceholder()"
259
- [disabled]="resolvedProps.state === states.DISABLED"
260
- [readonly]="resolvedProps.state === states.WORKING"
261
- [maxlength]="resolvedProps.maxDigits || 15"
262
- (ionInput)="onNumberInput($event)"
263
- (ionBlur)="onBlur()"
264
- >
265
- <ion-icon slot="start" name="call-outline" aria-hidden="true"></ion-icon>
266
- </ion-input>
274
+ [attr.disabled]="resolvedProps.state === states.DISABLED ? true : null"
275
+ [attr.readonly]="resolvedProps.state === states.WORKING ? true : null"
276
+ [maxLength]="resolvedProps.maxDigits || 15"
277
+ (input)="onNumberInputNative($event)"
278
+ (blur)="onBlur()"
279
+ class="phone-native-input"
280
+ />
267
281
  </div>
268
282
  </div>
269
283
 
@@ -277,11 +291,11 @@ export class PhoneInputComponent {
277
291
  </ion-note>
278
292
  }
279
293
  </div>
280
- `, isInline: true, styles: [":host{display:block;width:100%}.phone-input-container.has-error .phone-input-wrapper{border-color:var(--ion-color-danger)}.phone-label{display:block;font-size:14px;font-weight:500;color:var(--ion-color-dark);margin-bottom:8px}.phone-input-wrapper{display:flex;align-items:stretch;border:1px solid var(--ion-border-color, #e0e0e0);border-radius:28px;background:var(--ion-background-color, #fff);overflow:hidden;transition:border-color .2s;height:56px}.phone-input-wrapper:focus-within{border-color:var(--ion-color-primary)}.phone-input-wrapper.disabled{opacity:.5;pointer-events:none}.country-selector{flex-shrink:0;border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center;padding:0 4px 0 12px}.country-selector ion-select{--background: transparent;--border-style: none;--border-width: 0;--border-color: transparent;--border-radius: 0;--box-shadow: none;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0;--highlight-color-focused: transparent;--highlight-color-valid: transparent;--highlight-color-invalid: transparent;min-width:80px;max-width:100px}.country-selector ion-select::part(container){border:none;box-shadow:none}.country-selector ion-select::part(icon){opacity:.6}.country-selector .flag{margin-right:4px}.dial-code-display{flex-shrink:0;padding:0 12px;font-weight:500;color:var(--ion-color-medium-shade);border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center}.number-input{flex:1;display:flex;align-items:center}.number-input ion-input{--background: transparent;--border-style: none;--border-width: 0;--border-color: transparent;--border-radius: 0;--box-shadow: none;--padding-start: 12px;--padding-end: 16px;--padding-top: 0;--padding-bottom: 0;--highlight-color-focused: transparent;--highlight-color-valid: transparent;--highlight-color-invalid: transparent;--highlight-height: 0;width:100%;min-height:unset;border:none;outline:none}.number-input ion-input::part(native){border:none!important;box-shadow:none!important;background:transparent!important;border-radius:0!important;padding:0!important;outline:none!important}.number-input ion-input::part(native):focus{border:none!important;box-shadow:none!important;outline:none!important}.number-input ion-input.has-focus,.number-input ion-input.ion-focused{--border-color: transparent;--box-shadow: none;border:none;outline:none}.number-input ion-input ion-icon{color:var(--ion-color-medium);font-size:18px;margin-right:8px}.number-input input{border:none!important;outline:none!important;box-shadow:none!important;background:transparent!important}.hint{display:block;font-size:12px;color:var(--ion-color-medium);margin-top:4px;padding-left:4px}.error-message{display:block;font-size:12px;margin-top:4px;padding-left:4px}::ng-deep .country-select-popover{--width: 200px}::ng-deep .country-select-popover .flag{margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
294
+ `, isInline: true, styles: [":host{display:block;width:100%}.phone-input-container.has-error .phone-input-wrapper{border-color:var(--ion-color-danger)}.phone-label{display:block;font-size:14px;font-weight:700;color:var(--ion-color-dark);margin-bottom:8px}.phone-input-wrapper{display:flex;align-items:stretch;border:1px solid var(--ion-border-color, #e0e0e0);border-radius:28px;background:var(--ion-background-color, #fff);overflow:hidden;transition:border-color .2s;height:56px}.phone-input-wrapper:focus-within{border-color:var(--ion-color-primary)}.phone-input-wrapper.disabled{opacity:.5;pointer-events:none}.country-selector{flex-shrink:0;border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center;padding:0 4px 0 12px}.country-selector ion-select{--background: transparent;--border-style: none;--border-width: 0;--border-color: transparent;--border-radius: 0;--box-shadow: none;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0;--highlight-color-focused: transparent;--highlight-color-valid: transparent;--highlight-color-invalid: transparent;min-width:80px;max-width:100px}.country-selector ion-select::part(container){border:none;box-shadow:none}.country-selector ion-select::part(icon){opacity:.6}.country-selector .flag{margin-right:4px}.dial-code-display{flex-shrink:0;padding:0 12px;font-weight:500;color:var(--ion-color-medium-shade);border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center}.number-input{flex:1;display:flex;align-items:center;background:transparent;padding:0 16px 0 12px}.number-input .phone-icon{color:var(--ion-color-medium);font-size:18px;margin-right:10px;flex-shrink:0}.number-input .phone-native-input{flex:1;width:100%;height:100%;border:none;outline:none;background:transparent;font-size:16px;font-family:inherit;color:var(--ion-text-color, #000)}.number-input .phone-native-input::placeholder{color:var(--ion-color-medium, #92949c)}.number-input .phone-native-input:focus{outline:none;border:none}.number-input .phone-native-input:disabled{opacity:.5;cursor:not-allowed}.hint{display:block;font-size:12px;color:var(--ion-color-medium);margin-top:4px;padding-left:4px}.error-message{display:block;font-size:12px;margin-top:4px;padding-left:4px}::ng-deep .country-select-popover{--width: 200px}::ng-deep .country-select-popover .flag{margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
281
295
  }
282
296
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PhoneInputComponent, decorators: [{
283
297
  type: Component,
284
- args: [{ selector: 'val-phone-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonInput, IonSelect, IonSelectOption, IonNote, IonIcon], template: `
298
+ args: [{ selector: 'val-phone-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonSelect, IonSelectOption, IonNote, IonIcon], template: `
285
299
  <div class="phone-input-container" [class]="resolvedProps.cssClass" [class.has-error]="hasError">
286
300
  @if (resolvedProps.label) {
287
301
  <label class="phone-label">{{ getLabel() }}</label>
@@ -314,19 +328,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
314
328
  }
315
329
 
316
330
  <div class="number-input">
317
- <ion-input
318
- [formControl]="internalNumberControl"
331
+ <ion-icon name="call-outline" aria-hidden="true" class="phone-icon"></ion-icon>
332
+ <input
319
333
  type="tel"
320
334
  inputmode="tel"
335
+ [formControl]="internalNumberControl"
321
336
  [placeholder]="getPlaceholder()"
322
- [disabled]="resolvedProps.state === states.DISABLED"
323
- [readonly]="resolvedProps.state === states.WORKING"
324
- [maxlength]="resolvedProps.maxDigits || 15"
325
- (ionInput)="onNumberInput($event)"
326
- (ionBlur)="onBlur()"
327
- >
328
- <ion-icon slot="start" name="call-outline" aria-hidden="true"></ion-icon>
329
- </ion-input>
337
+ [attr.disabled]="resolvedProps.state === states.DISABLED ? true : null"
338
+ [attr.readonly]="resolvedProps.state === states.WORKING ? true : null"
339
+ [maxLength]="resolvedProps.maxDigits || 15"
340
+ (input)="onNumberInputNative($event)"
341
+ (blur)="onBlur()"
342
+ class="phone-native-input"
343
+ />
330
344
  </div>
331
345
  </div>
332
346
 
@@ -340,7 +354,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
340
354
  </ion-note>
341
355
  }
342
356
  </div>
343
- `, styles: [":host{display:block;width:100%}.phone-input-container.has-error .phone-input-wrapper{border-color:var(--ion-color-danger)}.phone-label{display:block;font-size:14px;font-weight:500;color:var(--ion-color-dark);margin-bottom:8px}.phone-input-wrapper{display:flex;align-items:stretch;border:1px solid var(--ion-border-color, #e0e0e0);border-radius:28px;background:var(--ion-background-color, #fff);overflow:hidden;transition:border-color .2s;height:56px}.phone-input-wrapper:focus-within{border-color:var(--ion-color-primary)}.phone-input-wrapper.disabled{opacity:.5;pointer-events:none}.country-selector{flex-shrink:0;border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center;padding:0 4px 0 12px}.country-selector ion-select{--background: transparent;--border-style: none;--border-width: 0;--border-color: transparent;--border-radius: 0;--box-shadow: none;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0;--highlight-color-focused: transparent;--highlight-color-valid: transparent;--highlight-color-invalid: transparent;min-width:80px;max-width:100px}.country-selector ion-select::part(container){border:none;box-shadow:none}.country-selector ion-select::part(icon){opacity:.6}.country-selector .flag{margin-right:4px}.dial-code-display{flex-shrink:0;padding:0 12px;font-weight:500;color:var(--ion-color-medium-shade);border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center}.number-input{flex:1;display:flex;align-items:center}.number-input ion-input{--background: transparent;--border-style: none;--border-width: 0;--border-color: transparent;--border-radius: 0;--box-shadow: none;--padding-start: 12px;--padding-end: 16px;--padding-top: 0;--padding-bottom: 0;--highlight-color-focused: transparent;--highlight-color-valid: transparent;--highlight-color-invalid: transparent;--highlight-height: 0;width:100%;min-height:unset;border:none;outline:none}.number-input ion-input::part(native){border:none!important;box-shadow:none!important;background:transparent!important;border-radius:0!important;padding:0!important;outline:none!important}.number-input ion-input::part(native):focus{border:none!important;box-shadow:none!important;outline:none!important}.number-input ion-input.has-focus,.number-input ion-input.ion-focused{--border-color: transparent;--box-shadow: none;border:none;outline:none}.number-input ion-input ion-icon{color:var(--ion-color-medium);font-size:18px;margin-right:8px}.number-input input{border:none!important;outline:none!important;box-shadow:none!important;background:transparent!important}.hint{display:block;font-size:12px;color:var(--ion-color-medium);margin-top:4px;padding-left:4px}.error-message{display:block;font-size:12px;margin-top:4px;padding-left:4px}::ng-deep .country-select-popover{--width: 200px}::ng-deep .country-select-popover .flag{margin-right:8px}\n"] }]
357
+ `, styles: [":host{display:block;width:100%}.phone-input-container.has-error .phone-input-wrapper{border-color:var(--ion-color-danger)}.phone-label{display:block;font-size:14px;font-weight:700;color:var(--ion-color-dark);margin-bottom:8px}.phone-input-wrapper{display:flex;align-items:stretch;border:1px solid var(--ion-border-color, #e0e0e0);border-radius:28px;background:var(--ion-background-color, #fff);overflow:hidden;transition:border-color .2s;height:56px}.phone-input-wrapper:focus-within{border-color:var(--ion-color-primary)}.phone-input-wrapper.disabled{opacity:.5;pointer-events:none}.country-selector{flex-shrink:0;border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center;padding:0 4px 0 12px}.country-selector ion-select{--background: transparent;--border-style: none;--border-width: 0;--border-color: transparent;--border-radius: 0;--box-shadow: none;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0;--highlight-color-focused: transparent;--highlight-color-valid: transparent;--highlight-color-invalid: transparent;min-width:80px;max-width:100px}.country-selector ion-select::part(container){border:none;box-shadow:none}.country-selector ion-select::part(icon){opacity:.6}.country-selector .flag{margin-right:4px}.dial-code-display{flex-shrink:0;padding:0 12px;font-weight:500;color:var(--ion-color-medium-shade);border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center}.number-input{flex:1;display:flex;align-items:center;background:transparent;padding:0 16px 0 12px}.number-input .phone-icon{color:var(--ion-color-medium);font-size:18px;margin-right:10px;flex-shrink:0}.number-input .phone-native-input{flex:1;width:100%;height:100%;border:none;outline:none;background:transparent;font-size:16px;font-family:inherit;color:var(--ion-text-color, #000)}.number-input .phone-native-input::placeholder{color:var(--ion-color-medium, #92949c)}.number-input .phone-native-input:focus{outline:none;border:none}.number-input .phone-native-input:disabled{opacity:.5;cursor:not-allowed}.hint{display:block;font-size:12px;color:var(--ion-color-medium);margin-top:4px;padding-left:4px}.error-message{display:block;font-size:12px;margin-top:4px;padding-left:4px}::ng-deep .country-select-popover{--width: 200px}::ng-deep .country-select-popover .flag{margin-right:8px}\n"] }]
344
358
  }], propDecorators: { preset: [{
345
359
  type: Input
346
360
  }], props: [{
@@ -348,4 +362,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
348
362
  }], phoneChange: [{
349
363
  type: Output
350
364
  }] } });
351
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9waG9uZS1pbnB1dC9waG9uZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUM1SCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLFFBQVEsRUFDUixTQUFTLEVBQ1QsZUFBZSxFQUNmLE9BQU8sRUFDUCxPQUFPLEdBQ1IsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQTBELG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDOzs7QUFFdkcsUUFBUSxDQUFDLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztBQW9FOUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQWhHaEM7UUFpR1UsWUFBTyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQVd4Qzs7V0FFRztRQUNNLFVBQUssR0FBZ0MsRUFBRSxDQUFDO1FBRWpEOztXQUVHO1FBQ0gsa0JBQWEs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QUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsNkJBQTZCO1FBQzdCLE9BQU8sVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQzsrR0E3TlUsbUJBQW1CO21HQUFuQixtQkFBbUIsdUxBNUZwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyRFQsNitGQTVEUyxZQUFZLDhCQUFFLG1CQUFtQiw2ZEFBRSxRQUFRLDhlQUFFLFNBQVMsa1ZBQUUsZUFBZSw2RkFBRSxPQUFPLGdGQUFFLE9BQU87OzRGQTZGeEYsbUJBQW1CO2tCQWhHL0IsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxZQUMxRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyRFQ7OEJBMkNRLE1BQU07c0JBQWQsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBT0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIElvbklucHV0LFxuICBJb25TZWxlY3QsXG4gIElvblNlbGVjdE9wdGlvbixcbiAgSW9uTm90ZSxcbiAgSW9uSWNvbixcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2FsbE91dGxpbmUsIGNoZXZyb25Eb3duT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IFByZXNldFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcmVzZXRzJztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFBob25lSW5wdXRNZXRhZGF0YSwgUGhvbmVJbnB1dENoYW5nZUV2ZW50LCBDb3VudHJ5Q29kZSwgQ09NTU9OX0NPVU5UUllfQ09ERVMgfSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyBjYWxsT3V0bGluZSwgY2hldnJvbkRvd25PdXRsaW5lIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcGhvbmUtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBJb25JbnB1dCwgSW9uU2VsZWN0LCBJb25TZWxlY3RPcHRpb24sIElvbk5vdGUsIElvbkljb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJwaG9uZS1pbnB1dC1jb250YWluZXJcIiBbY2xhc3NdPVwicmVzb2x2ZWRQcm9wcy5jc3NDbGFzc1wiIFtjbGFzcy5oYXMtZXJyb3JdPVwiaGFzRXJyb3JcIj5cbiAgICAgIEBpZiAocmVzb2x2ZWRQcm9wcy5sYWJlbCkge1xuICAgICAgICA8bGFiZWwgY2xhc3M9XCJwaG9uZS1sYWJlbFwiPnt7IGdldExhYmVsKCkgfX08L2xhYmVsPlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwicGhvbmUtaW5wdXQtd3JhcHBlclwiIFtjbGFzcy5kaXNhYmxlZF09XCJyZXNvbHZlZFByb3BzLnN0YXRlID09PSBzdGF0ZXMuRElTQUJMRURcIj5cbiAgICAgICAgQGlmIChyZXNvbHZlZFByb3BzLnNob3dDb3VudHJ5U2VsZWN0b3IgIT09IGZhbHNlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50cnktc2VsZWN0b3JcIj5cbiAgICAgICAgICAgIDxpb24tc2VsZWN0XG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpbnRlcm5hbENvdW50cnlDb250cm9sXCJcbiAgICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgICAgIFtpbnRlcmZhY2VPcHRpb25zXT1cInsgY3NzQ2xhc3M6ICdjb3VudHJ5LXNlbGVjdC1wb3BvdmVyJyB9XCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlc29sdmVkUHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwib25Db3VudHJ5Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAZm9yIChjb3VudHJ5IG9mIGdldENvdW50cnlMaXN0KCk7IHRyYWNrIGNvdW50cnkuY29kZSkge1xuICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwiY291bnRyeS5jb2RlXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKHJlc29sdmVkUHJvcHMuc2hvd0ZsYWcgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxhZ1wiPnt7IGNvdW50cnkuZmxhZyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHt7IGNvdW50cnkuZGlhbENvZGUgfX1cbiAgICAgICAgICAgICAgICA8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2lvbi1zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsLWNvZGUtZGlzcGxheVwiPlxuICAgICAgICAgICAge3sgZ2V0U2VsZWN0ZWRDb3VudHJ5KCk/LmRpYWxDb2RlIHx8ICcrMScgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJudW1iZXItaW5wdXRcIj5cbiAgICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaW50ZXJuYWxOdW1iZXJDb250cm9sXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZWxcIlxuICAgICAgICAgICAgaW5wdXRtb2RlPVwidGVsXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXNvbHZlZFByb3BzLnN0YXRlID09PSBzdGF0ZXMuRElTQUJMRURcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlc29sdmVkUHJvcHMuc3RhdGUgPT09IHN0YXRlcy5XT1JLSU5HXCJcbiAgICAgICAgICAgIFttYXhsZW5ndGhdPVwicmVzb2x2ZWRQcm9wcy5tYXhEaWdpdHMgfHwgMTVcIlxuICAgICAgICAgICAgKGlvbklucHV0KT1cIm9uTnVtYmVySW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoaW9uQmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJjYWxsLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWlucHV0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKHJlc29sdmVkUHJvcHMuaGludCAmJiAhaGFzRXJyb3IpIHtcbiAgICAgICAgPGlvbi1ub3RlIGNsYXNzPVwiaGludFwiPnt7IGdldEhpbnQoKSB9fTwvaW9uLW5vdGU+XG4gICAgICB9XG5cbiAgICAgIEBpZiAoaGFzRXJyb3IgJiYgcmVzb2x2ZWRQcm9wcy5zaG93RXJyb3JzKSB7XG4gICAgICAgIDxpb24tbm90ZSBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgIHt7IGdldEVycm9yTWVzc2FnZSgpIH19XG4gICAgICAgIDwvaW9uLW5vdGU+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3Bob25lLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtcGhvbmUtaW5wdXRcbiAqXG4gKiBBIHBob25lIG51bWJlciBpbnB1dCB3aXRoIGNvdW50cnkgY29kZSBzZWxlY3Rvci5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgaHRtbFxuICogPHZhbC1waG9uZS1pbnB1dFxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbnRyb2w6IHBob25lQ29udHJvbCxcbiAqICAgICBwbGFjZWhvbGRlcjogJ1Bob25lIG51bWJlcicsXG4gKiAgICAgZGVmYXVsdENvdW50cnk6ICdNWCdcbiAqICAgfVwiXG4gKiA+PC92YWwtcGhvbmUtaW5wdXQ+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIGN1c3RvbSBjb3VudHJpZXNcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcGhvbmUtaW5wdXRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb250cm9sOiBwaG9uZUNvbnRyb2wsXG4gKiAgICAgbGFiZWw6ICdQaG9uZScsXG4gKiAgICAgY291bnRyeUNvZGVzOiBteUNvdW50cnlDb2RlcyxcbiAqICAgICBwcmVmZXJyZWRDb3VudHJpZXM6IFsnTVgnLCAnVVMnLCAnRVMnXSxcbiAqICAgICBzaG93RXJyb3JzOiB0cnVlXG4gKiAgIH1cIlxuICogICAocGhvbmVDaGFuZ2UpPVwib25QaG9uZUNoYW5nZSgkZXZlbnQpXCJcbiAqID48L3ZhbC1waG9uZS1pbnB1dD5cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgUGhvbmVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHByZXNldHMgPSBpbmplY3QoUHJlc2V0U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFByZXNldCBuYW1lIHRvIGFwcGx5LiBQcmVzZXRzIGRlZmluZSByZXVzYWJsZSBwaG9uZSBpbnB1dCBjb25maWd1cmF0aW9uc1xuICAgKiB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGF0IGFwcCBsZXZlbCB2aWEgcHJvdmlkZVZhbHRlY2hQcmVzZXRzKCkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDx2YWwtcGhvbmUtaW5wdXQgcHJlc2V0PVwiZm9ybS1maWVsZFwiIFtwcm9wc109XCJ7IGNvbnRyb2w6IGN0cmwgfVwiPjwvdmFsLXBob25lLWlucHV0PlxuICAgKi9cbiAgQElucHV0KCkgcHJlc2V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQaG9uZSBpbnB1dCBjb25maWd1cmF0aW9uIG9iamVjdC4gVmFsdWVzIGhlcmUgb3ZlcnJpZGUgcHJlc2V0IHZhbHVlcy5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBQYXJ0aWFsPFBob25lSW5wdXRNZXRhZGF0YT4gPSB7fTtcblxuICAvKipcbiAgICogUmVzb2x2ZWQgcHJvcHMgYWZ0ZXIgbWVyZ2luZyBwcmVzZXQgKyBleHBsaWNpdCBwcm9wcy5cbiAgICovXG4gIHJlc29sdmVkUHJvcHM6IFBob25lSW5wdXRNZXRhZGF0YSA9IHt9IGFzIFBob25lSW5wdXRNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgcGhvbmVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBob25lSW5wdXRDaGFuZ2VFdmVudD4oKTtcblxuICBzdGF0ZXMgPSBDb21wb25lbnRTdGF0ZXM7XG5cbiAgaW50ZXJuYWxDb3VudHJ5Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnKTtcbiAgaW50ZXJuYWxOdW1iZXJDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpO1xuXG4gIHByaXZhdGUgdmFsdWVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGlzSW50ZXJuYWxVcGRhdGUgPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc29sdmVQcm9wcygpO1xuICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncHJlc2V0J10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIHByZXNldCBjb25maWd1cmF0aW9uIHdpdGggZXhwbGljaXQgcHJvcHMuXG4gICAqIEV4cGxpY2l0IHByb3BzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHByZXNldCB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVQcm9wcygpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVzZXRQcm9wcyA9IHRoaXMucHJlc2V0XG4gICAgICA/ICh0aGlzLnByZXNldHMuZ2V0KCdwaG9uZUlucHV0JywgdGhpcy5wcmVzZXQpIGFzIFBhcnRpYWw8UGhvbmVJbnB1dE1ldGFkYXRhPilcbiAgICAgIDoge307XG5cbiAgICB0aGlzLnJlc29sdmVkUHJvcHMgPSB7XG4gICAgICAuLi5wcmVzZXRQcm9wcyxcbiAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgfSBhcyBQaG9uZUlucHV0TWV0YWRhdGE7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCk6IHZvaWQge1xuICAgIC8vIFNldCBkZWZhdWx0IGNvdW50cnlcbiAgICBjb25zdCBkZWZhdWx0Q291bnRyeSA9IHRoaXMucmVzb2x2ZWRQcm9wcy5kZWZhdWx0Q291bnRyeSB8fCAnVVMnO1xuICAgIHRoaXMuaW50ZXJuYWxDb3VudHJ5Q29udHJvbC5zZXRWYWx1ZShkZWZhdWx0Q291bnRyeSk7XG5cbiAgICAvLyBTeW5jIHdpdGggZXh0ZXJuYWwgY29udHJvbHMgaWYgcHJvdmlkZWRcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmNvdW50cnlDb250cm9sKSB7XG4gICAgICB0aGlzLmludGVybmFsQ291bnRyeUNvbnRyb2wgPSB0aGlzLnJlc29sdmVkUHJvcHMuY291bnRyeUNvbnRyb2w7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMubnVtYmVyQ29udHJvbCkge1xuICAgICAgdGhpcy5pbnRlcm5hbE51bWJlckNvbnRyb2wgPSB0aGlzLnJlc29sdmVkUHJvcHMubnVtYmVyQ29udHJvbDtcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBpbml0aWFsIHZhbHVlIGZyb20gbWFpbiBjb250cm9sXG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sPy52YWx1ZSkge1xuICAgICAgdGhpcy5wYXJzZVBob25lTnVtYmVyKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sLnZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gbWFpbiBjb250cm9sIGNoYW5nZXNcbiAgICB0aGlzLnZhbHVlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMudmFsdWVTdWJzY3JpcHRpb24gPSB0aGlzLnJlc29sdmVkUHJvcHMuY29udHJvbD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgIXRoaXMuaXNJbnRlcm5hbFVwZGF0ZSkge1xuICAgICAgICB0aGlzLnBhcnNlUGhvbmVOdW1iZXIodmFsdWUpO1xuICAgICAgfVxuICAgIH0pIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlUGhvbmVOdW1iZXIodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdmFsdWUpIHJldHVybjtcblxuICAgIC8vIFRyeSB0byBleHRyYWN0IGNvdW50cnkgY29kZVxuICAgIGNvbnN0IGNvdW50cmllcyA9IHRoaXMuZ2V0Q291bnRyeUxpc3QoKTtcbiAgICBmb3IgKGNvbnN0IGNvdW50cnkgb2YgY291bnRyaWVzKSB7XG4gICAgICBpZiAodmFsdWUuc3RhcnRzV2l0aChjb3VudHJ5LmRpYWxDb2RlKSkge1xuICAgICAgICB0aGlzLmludGVybmFsQ291bnRyeUNvbnRyb2wuc2V0VmFsdWUoY291bnRyeS5jb2RlKTtcbiAgICAgICAgdGhpcy5pbnRlcm5hbE51bWJlckNvbnRyb2wuc2V0VmFsdWUodmFsdWUuc3Vic3RyaW5nKGNvdW50cnkuZGlhbENvZGUubGVuZ3RoKS50cmltKCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gY291bnRyeSBjb2RlIGZvdW5kLCBqdXN0IHNldCB0aGUgbnVtYmVyXG4gICAgdGhpcy5pbnRlcm5hbE51bWJlckNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgZ2V0TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzLmxhYmVsIHx8ICcnO1xuICB9XG5cbiAgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAvLyBVc2UgZm9ybWF0IGZyb20gc2VsZWN0ZWQgY291bnRyeSBpZiBhdmFpbGFibGVcbiAgICBjb25zdCBjb3VudHJ5ID0gdGhpcy5nZXRTZWxlY3RlZENvdW50cnkoKTtcbiAgICBpZiAoY291bnRyeT8uZm9ybWF0ICYmICF0aGlzLnJlc29sdmVkUHJvcHMucGxhY2Vob2xkZXIpIHtcbiAgICAgIHJldHVybiBjb3VudHJ5LmZvcm1hdDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcy5wbGFjZWhvbGRlciB8fCAnJztcbiAgfVxuXG4gIGdldEhpbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzLmhpbnQgfHwgJyc7XG4gIH1cblxuICBnZXRDb3VudHJ5TGlzdCgpOiBDb3VudHJ5Q29kZVtdIHtcbiAgICBjb25zdCBjb3VudHJpZXMgPSB0aGlzLnJlc29sdmVkUHJvcHMuY291bnRyeUNvZGVzIHx8IENPTU1PTl9DT1VOVFJZX0NPREVTO1xuXG4gICAgLy8gU29ydCBieSBwcmVmZXJyZWQgY291bnRyaWVzIGZpcnN0XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5wcmVmZXJyZWRDb3VudHJpZXM/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgcHJlZmVycmVkID0gdGhpcy5yZXNvbHZlZFByb3BzLnByZWZlcnJlZENvdW50cmllcztcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLmNvdW50cmllcy5maWx0ZXIoYyA9PiBwcmVmZXJyZWQuaW5jbHVkZXMoYy5jb2RlKSksXG4gICAgICAgIC4uLmNvdW50cmllcy5maWx0ZXIoYyA9PiAhcHJlZmVycmVkLmluY2x1ZGVzKGMuY29kZSkpLFxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnRyaWVzO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRDb3VudHJ5KCk6IENvdW50cnlDb2RlIHwgbnVsbCB7XG4gICAgY29uc3QgY29kZSA9IHRoaXMuaW50ZXJuYWxDb3VudHJ5Q29udHJvbC52YWx1ZTtcbiAgICByZXR1cm4gdGhpcy5nZXRDb3VudHJ5TGlzdCgpLmZpbmQoYyA9PiBjLmNvZGUgPT09IGNvZGUpIHx8IG51bGw7XG4gIH1cblxuICBnZXQgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sPy50b3VjaGVkICYmIHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sPy5pbnZhbGlkKTtcbiAgfVxuXG4gIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRyb2w/LmVycm9ycyB8fCAhdGhpcy5yZXNvbHZlZFByb3BzLmVycm9ycykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sLmVycm9ycyk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgZXJyb3JLZXlzKSB7XG4gICAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmVycm9yc1trZXldKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVkUHJvcHMuZXJyb3JzW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgb25Db3VudHJ5Q2hhbmdlKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlTWFpbkNvbnRyb2woKTtcbiAgfVxuXG4gIG9uTnVtYmVySW5wdXQoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgLy8gRmlsdGVyIG5vbi1udW1lcmljIGNoYXJhY3RlcnMgZXhjZXB0IHNwYWNlcyBhbmQgZGFzaGVzXG4gICAgbGV0IHZhbHVlID0gKGV2ZW50LmRldGFpbC52YWx1ZSB8fCAnJykucmVwbGFjZSgvW15cXGRcXHNcXC1dL2csICcnKTtcblxuICAgIC8vIEFwcGx5IG1heCBkaWdpdHMgbGltaXRcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLm1heERpZ2l0cykge1xuICAgICAgY29uc3QgZGlnaXRzT25seSA9IHZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG4gICAgICBpZiAoZGlnaXRzT25seS5sZW5ndGggPiB0aGlzLnJlc29sdmVkUHJvcHMubWF4RGlnaXRzKSB7XG4gICAgICAgIHZhbHVlID0gZGlnaXRzT25seS5zdWJzdHJpbmcoMCwgdGhpcy5yZXNvbHZlZFByb3BzLm1heERpZ2l0cyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5pbnRlcm5hbE51bWJlckNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgIHRoaXMudXBkYXRlTWFpbkNvbnRyb2woKTtcbiAgfVxuXG4gIG9uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLnJlc29sdmVkUHJvcHMuY29udHJvbD8ubWFya0FzVG91Y2hlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNYWluQ29udHJvbCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb3VudHJ5ID0gdGhpcy5nZXRTZWxlY3RlZENvdW50cnkoKTtcbiAgICBjb25zdCBudW1iZXIgPSB0aGlzLmludGVybmFsTnVtYmVyQ29udHJvbC52YWx1ZSB8fCAnJztcbiAgICBjb25zdCBmdWxsTnVtYmVyID0gY291bnRyeSA/IGAke2NvdW50cnkuZGlhbENvZGV9JHtudW1iZXJ9YCA6IG51bWJlcjtcblxuICAgIHRoaXMuaXNJbnRlcm5hbFVwZGF0ZSA9IHRydWU7XG4gICAgdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRyb2w/LnNldFZhbHVlKGZ1bGxOdW1iZXIpO1xuICAgIHRoaXMuaXNJbnRlcm5hbFVwZGF0ZSA9IGZhbHNlO1xuXG4gICAgLy8gRW1pdCBjaGFuZ2UgZXZlbnRcbiAgICBjb25zdCBkaWdpdHNPbmx5ID0gbnVtYmVyLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGVOdW1iZXIoZGlnaXRzT25seSk7XG5cbiAgICB0aGlzLnBob25lQ2hhbmdlLmVtaXQoe1xuICAgICAgZnVsbE51bWJlcixcbiAgICAgIG51bWJlcixcbiAgICAgIGNvdW50cnksXG4gICAgICBpc1ZhbGlkLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU51bWJlcihkaWdpdHNPbmx5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLm1pbkRpZ2l0cyAmJiBkaWdpdHNPbmx5Lmxlbmd0aCA8IHRoaXMucmVzb2x2ZWRQcm9wcy5taW5EaWdpdHMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5tYXhEaWdpdHMgJiYgZGlnaXRzT25seS5sZW5ndGggPiB0aGlzLnJlc29sdmVkUHJvcHMubWF4RGlnaXRzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMucGF0dGVybikge1xuICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHRoaXMucmVzb2x2ZWRQcm9wcy5wYXR0ZXJuKTtcbiAgICAgIHJldHVybiByZWdleC50ZXN0KGRpZ2l0c09ubHkpO1xuICAgIH1cbiAgICAvLyBEZWZhdWx0OiBhdCBsZWFzdCA3IGRpZ2l0c1xuICAgIHJldHVybiBkaWdpdHNPbmx5Lmxlbmd0aCA+PSA3O1xuICB9XG59XG4iXX0=
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9waG9uZS1pbnB1dC9waG9uZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUM1SCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsT0FBTyxFQUNQLE9BQU8sR0FDUixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBMEQsb0JBQW9CLEVBQUUsTUFBTSxTQUFTLENBQUM7OztBQUV2RyxRQUFRLENBQUMsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0FBb0U5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBaEdoQztRQWlHVSxZQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBV3hDOztXQUVHO1FBQ00sVUFBSyxHQUFnQyxFQUFFLENBQUM7UUFFakQ7O1dBRUc7UUFDSCxrQkFBYSxHQUF1QixFQUF3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bUJBQW1CLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLFlBQ2hGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJEVDs4QkEyQ1EsTUFBTTtzQkFBZCxLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFPSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgSW9uU2VsZWN0LFxuICBJb25TZWxlY3RPcHRpb24sXG4gIElvbk5vdGUsXG4gIElvbkljb24sXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGNhbGxPdXRsaW5lLCBjaGV2cm9uRG93bk91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlc2V0cyc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZXMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBQaG9uZUlucHV0TWV0YWRhdGEsIFBob25lSW5wdXRDaGFuZ2VFdmVudCwgQ291bnRyeUNvZGUsIENPTU1PTl9DT1VOVFJZX0NPREVTIH0gZnJvbSAnLi90eXBlcyc7XG5cbmFkZEljb25zKHsgY2FsbE91dGxpbmUsIGNoZXZyb25Eb3duT3V0bGluZSB9KTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXBob25lLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uU2VsZWN0LCBJb25TZWxlY3RPcHRpb24sIElvbk5vdGUsIElvbkljb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJwaG9uZS1pbnB1dC1jb250YWluZXJcIiBbY2xhc3NdPVwicmVzb2x2ZWRQcm9wcy5jc3NDbGFzc1wiIFtjbGFzcy5oYXMtZXJyb3JdPVwiaGFzRXJyb3JcIj5cbiAgICAgIEBpZiAocmVzb2x2ZWRQcm9wcy5sYWJlbCkge1xuICAgICAgICA8bGFiZWwgY2xhc3M9XCJwaG9uZS1sYWJlbFwiPnt7IGdldExhYmVsKCkgfX08L2xhYmVsPlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwicGhvbmUtaW5wdXQtd3JhcHBlclwiIFtjbGFzcy5kaXNhYmxlZF09XCJyZXNvbHZlZFByb3BzLnN0YXRlID09PSBzdGF0ZXMuRElTQUJMRURcIj5cbiAgICAgICAgQGlmIChyZXNvbHZlZFByb3BzLnNob3dDb3VudHJ5U2VsZWN0b3IgIT09IGZhbHNlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50cnktc2VsZWN0b3JcIj5cbiAgICAgICAgICAgIDxpb24tc2VsZWN0XG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpbnRlcm5hbENvdW50cnlDb250cm9sXCJcbiAgICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgICAgIFtpbnRlcmZhY2VPcHRpb25zXT1cInsgY3NzQ2xhc3M6ICdjb3VudHJ5LXNlbGVjdC1wb3BvdmVyJyB9XCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlc29sdmVkUHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwib25Db3VudHJ5Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAZm9yIChjb3VudHJ5IG9mIGdldENvdW50cnlMaXN0KCk7IHRyYWNrIGNvdW50cnkuY29kZSkge1xuICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwiY291bnRyeS5jb2RlXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKHJlc29sdmVkUHJvcHMuc2hvd0ZsYWcgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxhZ1wiPnt7IGNvdW50cnkuZmxhZyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHt7IGNvdW50cnkuZGlhbENvZGUgfX1cbiAgICAgICAgICAgICAgICA8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2lvbi1zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsLWNvZGUtZGlzcGxheVwiPlxuICAgICAgICAgICAge3sgZ2V0U2VsZWN0ZWRDb3VudHJ5KCk/LmRpYWxDb2RlIHx8ICcrMScgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJudW1iZXItaW5wdXRcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNhbGwtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwicGhvbmUtaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGVsXCJcbiAgICAgICAgICAgIGlucHV0bW9kZT1cInRlbFwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaW50ZXJuYWxOdW1iZXJDb250cm9sXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cInJlc29sdmVkUHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRCA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLnJlYWRvbmx5XT1cInJlc29sdmVkUHJvcHMuc3RhdGUgPT09IHN0YXRlcy5XT1JLSU5HID8gdHJ1ZSA6IG51bGxcIlxuICAgICAgICAgICAgW21heExlbmd0aF09XCJyZXNvbHZlZFByb3BzLm1heERpZ2l0cyB8fCAxNVwiXG4gICAgICAgICAgICAoaW5wdXQpPVwib25OdW1iZXJJbnB1dE5hdGl2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgICAgIGNsYXNzPVwicGhvbmUtbmF0aXZlLWlucHV0XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKHJlc29sdmVkUHJvcHMuaGludCAmJiAhaGFzRXJyb3IpIHtcbiAgICAgICAgPGlvbi1ub3RlIGNsYXNzPVwiaGludFwiPnt7IGdldEhpbnQoKSB9fTwvaW9uLW5vdGU+XG4gICAgICB9XG5cbiAgICAgIEBpZiAoaGFzRXJyb3IgJiYgcmVzb2x2ZWRQcm9wcy5zaG93RXJyb3JzKSB7XG4gICAgICAgIDxpb24tbm90ZSBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgIHt7IGdldEVycm9yTWVzc2FnZSgpIH19XG4gICAgICAgIDwvaW9uLW5vdGU+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3Bob25lLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtcGhvbmUtaW5wdXRcbiAqXG4gKiBBIHBob25lIG51bWJlciBpbnB1dCB3aXRoIGNvdW50cnkgY29kZSBzZWxlY3Rvci5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgaHRtbFxuICogPHZhbC1waG9uZS1pbnB1dFxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbnRyb2w6IHBob25lQ29udHJvbCxcbiAqICAgICBwbGFjZWhvbGRlcjogJ1Bob25lIG51bWJlcicsXG4gKiAgICAgZGVmYXVsdENvdW50cnk6ICdNWCdcbiAqICAgfVwiXG4gKiA+PC92YWwtcGhvbmUtaW5wdXQ+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIGN1c3RvbSBjb3VudHJpZXNcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcGhvbmUtaW5wdXRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb250cm9sOiBwaG9uZUNvbnRyb2wsXG4gKiAgICAgbGFiZWw6ICdQaG9uZScsXG4gKiAgICAgY291bnRyeUNvZGVzOiBteUNvdW50cnlDb2RlcyxcbiAqICAgICBwcmVmZXJyZWRDb3VudHJpZXM6IFsnTVgnLCAnVVMnLCAnRVMnXSxcbiAqICAgICBzaG93RXJyb3JzOiB0cnVlXG4gKiAgIH1cIlxuICogICAocGhvbmVDaGFuZ2UpPVwib25QaG9uZUNoYW5nZSgkZXZlbnQpXCJcbiAqID48L3ZhbC1waG9uZS1pbnB1dD5cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgUGhvbmVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHByZXNldHMgPSBpbmplY3QoUHJlc2V0U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFByZXNldCBuYW1lIHRvIGFwcGx5LiBQcmVzZXRzIGRlZmluZSByZXVzYWJsZSBwaG9uZSBpbnB1dCBjb25maWd1cmF0aW9uc1xuICAgKiB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGF0IGFwcCBsZXZlbCB2aWEgcHJvdmlkZVZhbHRlY2hQcmVzZXRzKCkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDx2YWwtcGhvbmUtaW5wdXQgcHJlc2V0PVwiZm9ybS1maWVsZFwiIFtwcm9wc109XCJ7IGNvbnRyb2w6IGN0cmwgfVwiPjwvdmFsLXBob25lLWlucHV0PlxuICAgKi9cbiAgQElucHV0KCkgcHJlc2V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQaG9uZSBpbnB1dCBjb25maWd1cmF0aW9uIG9iamVjdC4gVmFsdWVzIGhlcmUgb3ZlcnJpZGUgcHJlc2V0IHZhbHVlcy5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBQYXJ0aWFsPFBob25lSW5wdXRNZXRhZGF0YT4gPSB7fTtcblxuICAvKipcbiAgICogUmVzb2x2ZWQgcHJvcHMgYWZ0ZXIgbWVyZ2luZyBwcmVzZXQgKyBleHBsaWNpdCBwcm9wcy5cbiAgICovXG4gIHJlc29sdmVkUHJvcHM6IFBob25lSW5wdXRNZXRhZGF0YSA9IHt9IGFzIFBob25lSW5wdXRNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgcGhvbmVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBob25lSW5wdXRDaGFuZ2VFdmVudD4oKTtcblxuICBzdGF0ZXMgPSBDb21wb25lbnRTdGF0ZXM7XG5cbiAgaW50ZXJuYWxDb3VudHJ5Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnKTtcbiAgaW50ZXJuYWxOdW1iZXJDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpO1xuXG4gIHByaXZhdGUgdmFsdWVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGlzSW50ZXJuYWxVcGRhdGUgPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc29sdmVQcm9wcygpO1xuICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncHJlc2V0J10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIHByZXNldCBjb25maWd1cmF0aW9uIHdpdGggZXhwbGljaXQgcHJvcHMuXG4gICAqIEV4cGxpY2l0IHByb3BzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHByZXNldCB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVQcm9wcygpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVzZXRQcm9wcyA9IHRoaXMucHJlc2V0XG4gICAgICA/ICh0aGlzLnByZXNldHMuZ2V0KCdwaG9uZUlucHV0JywgdGhpcy5wcmVzZXQpIGFzIFBhcnRpYWw8UGhvbmVJbnB1dE1ldGFkYXRhPilcbiAgICAgIDoge307XG5cbiAgICB0aGlzLnJlc29sdmVkUHJvcHMgPSB7XG4gICAgICAuLi5wcmVzZXRQcm9wcyxcbiAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgfSBhcyBQaG9uZUlucHV0TWV0YWRhdGE7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCk6IHZvaWQge1xuICAgIC8vIFNldCBkZWZhdWx0IGNvdW50cnlcbiAgICBjb25zdCBkZWZhdWx0Q291bnRyeSA9IHRoaXMucmVzb2x2ZWRQcm9wcy5kZWZhdWx0Q291bnRyeSB8fCAnVVMnO1xuICAgIHRoaXMuaW50ZXJuYWxDb3VudHJ5Q29udHJvbC5zZXRWYWx1ZShkZWZhdWx0Q291bnRyeSk7XG5cbiAgICAvLyBTeW5jIHdpdGggZXh0ZXJuYWwgY29udHJvbHMgaWYgcHJvdmlkZWRcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmNvdW50cnlDb250cm9sKSB7XG4gICAgICB0aGlzLmludGVybmFsQ291bnRyeUNvbnRyb2wgPSB0aGlzLnJlc29sdmVkUHJvcHMuY291bnRyeUNvbnRyb2w7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMubnVtYmVyQ29udHJvbCkge1xuICAgICAgdGhpcy5pbnRlcm5hbE51bWJlckNvbnRyb2wgPSB0aGlzLnJlc29sdmVkUHJvcHMubnVtYmVyQ29udHJvbDtcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBpbml0aWFsIHZhbHVlIGZyb20gbWFpbiBjb250cm9sXG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sPy52YWx1ZSkge1xuICAgICAgdGhpcy5wYXJzZVBob25lTnVtYmVyKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sLnZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gbWFpbiBjb250cm9sIGNoYW5nZXNcbiAgICB0aGlzLnZhbHVlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMudmFsdWVTdWJzY3JpcHRpb24gPSB0aGlzLnJlc29sdmVkUHJvcHMuY29udHJvbD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgIXRoaXMuaXNJbnRlcm5hbFVwZGF0ZSkge1xuICAgICAgICB0aGlzLnBhcnNlUGhvbmVOdW1iZXIodmFsdWUpO1xuICAgICAgfVxuICAgIH0pIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlUGhvbmVOdW1iZXIodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdmFsdWUpIHJldHVybjtcblxuICAgIC8vIFRyeSB0byBleHRyYWN0IGNvdW50cnkgY29kZVxuICAgIGNvbnN0IGNvdW50cmllcyA9IHRoaXMuZ2V0Q291bnRyeUxpc3QoKTtcbiAgICBmb3IgKGNvbnN0IGNvdW50cnkgb2YgY291bnRyaWVzKSB7XG4gICAgICBpZiAodmFsdWUuc3RhcnRzV2l0aChjb3VudHJ5LmRpYWxDb2RlKSkge1xuICAgICAgICB0aGlzLmludGVybmFsQ291bnRyeUNvbnRyb2wuc2V0VmFsdWUoY291bnRyeS5jb2RlKTtcbiAgICAgICAgdGhpcy5pbnRlcm5hbE51bWJlckNvbnRyb2wuc2V0VmFsdWUodmFsdWUuc3Vic3RyaW5nKGNvdW50cnkuZGlhbENvZGUubGVuZ3RoKS50cmltKCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gY291bnRyeSBjb2RlIGZvdW5kLCBqdXN0IHNldCB0aGUgbnVtYmVyXG4gICAgdGhpcy5pbnRlcm5hbE51bWJlckNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgZ2V0TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzLmxhYmVsIHx8ICcnO1xuICB9XG5cbiAgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAvLyBVc2UgZm9ybWF0IGZyb20gc2VsZWN0ZWQgY291bnRyeSBpZiBhdmFpbGFibGVcbiAgICBjb25zdCBjb3VudHJ5ID0gdGhpcy5nZXRTZWxlY3RlZENvdW50cnkoKTtcbiAgICBpZiAoY291bnRyeT8uZm9ybWF0ICYmICF0aGlzLnJlc29sdmVkUHJvcHMucGxhY2Vob2xkZXIpIHtcbiAgICAgIHJldHVybiBjb3VudHJ5LmZvcm1hdDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcy5wbGFjZWhvbGRlciB8fCAnJztcbiAgfVxuXG4gIGdldEhpbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzLmhpbnQgfHwgJyc7XG4gIH1cblxuICBnZXRDb3VudHJ5TGlzdCgpOiBDb3VudHJ5Q29kZVtdIHtcbiAgICBjb25zdCBjb3VudHJpZXMgPSB0aGlzLnJlc29sdmVkUHJvcHMuY291bnRyeUNvZGVzIHx8IENPTU1PTl9DT1VOVFJZX0NPREVTO1xuXG4gICAgLy8gU29ydCBieSBwcmVmZXJyZWQgY291bnRyaWVzIGZpcnN0XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5wcmVmZXJyZWRDb3VudHJpZXM/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgcHJlZmVycmVkID0gdGhpcy5yZXNvbHZlZFByb3BzLnByZWZlcnJlZENvdW50cmllcztcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLmNvdW50cmllcy5maWx0ZXIoYyA9PiBwcmVmZXJyZWQuaW5jbHVkZXMoYy5jb2RlKSksXG4gICAgICAgIC4uLmNvdW50cmllcy5maWx0ZXIoYyA9PiAhcHJlZmVycmVkLmluY2x1ZGVzKGMuY29kZSkpLFxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnRyaWVzO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRDb3VudHJ5KCk6IENvdW50cnlDb2RlIHwgbnVsbCB7XG4gICAgY29uc3QgY29kZSA9IHRoaXMuaW50ZXJuYWxDb3VudHJ5Q29udHJvbC52YWx1ZTtcbiAgICByZXR1cm4gdGhpcy5nZXRDb3VudHJ5TGlzdCgpLmZpbmQoYyA9PiBjLmNvZGUgPT09IGNvZGUpIHx8IG51bGw7XG4gIH1cblxuICBnZXQgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sPy50b3VjaGVkICYmIHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sPy5pbnZhbGlkKTtcbiAgfVxuXG4gIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRyb2w/LmVycm9ycyB8fCAhdGhpcy5yZXNvbHZlZFByb3BzLmVycm9ycykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sLmVycm9ycyk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgZXJyb3JLZXlzKSB7XG4gICAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmVycm9yc1trZXldKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVkUHJvcHMuZXJyb3JzW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgb25Db3VudHJ5Q2hhbmdlKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlTWFpbkNvbnRyb2woKTtcbiAgfVxuXG4gIG9uTnVtYmVySW5wdXQoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgLy8gRmlsdGVyIG5vbi1udW1lcmljIGNoYXJhY3RlcnMgZXhjZXB0IHNwYWNlcyBhbmQgZGFzaGVzXG4gICAgbGV0IHZhbHVlID0gKGV2ZW50LmRldGFpbC52YWx1ZSB8fCAnJykucmVwbGFjZSgvW15cXGRcXHNcXC1dL2csICcnKTtcblxuICAgIC8vIEFwcGx5IG1heCBkaWdpdHMgbGltaXRcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLm1heERpZ2l0cykge1xuICAgICAgY29uc3QgZGlnaXRzT25seSA9IHZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG4gICAgICBpZiAoZGlnaXRzT25seS5sZW5ndGggPiB0aGlzLnJlc29sdmVkUHJvcHMubWF4RGlnaXRzKSB7XG4gICAgICAgIHZhbHVlID0gZGlnaXRzT25seS5zdWJzdHJpbmcoMCwgdGhpcy5yZXNvbHZlZFByb3BzLm1heERpZ2l0cyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5pbnRlcm5hbE51bWJlckNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgIHRoaXMudXBkYXRlTWFpbkNvbnRyb2woKTtcbiAgfVxuXG4gIG9uTnVtYmVySW5wdXROYXRpdmUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAvLyBGaWx0ZXIgbm9uLW51bWVyaWMgY2hhcmFjdGVycyBleGNlcHQgc3BhY2VzIGFuZCBkYXNoZXNcbiAgICBsZXQgdmFsdWUgPSAoaW5wdXQudmFsdWUgfHwgJycpLnJlcGxhY2UoL1teXFxkXFxzXFwtXS9nLCAnJyk7XG5cbiAgICAvLyBBcHBseSBtYXggZGlnaXRzIGxpbWl0XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5tYXhEaWdpdHMpIHtcbiAgICAgIGNvbnN0IGRpZ2l0c09ubHkgPSB2YWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgICAgaWYgKGRpZ2l0c09ubHkubGVuZ3RoID4gdGhpcy5yZXNvbHZlZFByb3BzLm1heERpZ2l0cykge1xuICAgICAgICB2YWx1ZSA9IGRpZ2l0c09ubHkuc3Vic3RyaW5nKDAsIHRoaXMucmVzb2x2ZWRQcm9wcy5tYXhEaWdpdHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaW50ZXJuYWxOdW1iZXJDb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLnVwZGF0ZU1haW5Db250cm9sKCk7XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTWFpbkNvbnRyb2woKTogdm9pZCB7XG4gICAgY29uc3QgY291bnRyeSA9IHRoaXMuZ2V0U2VsZWN0ZWRDb3VudHJ5KCk7XG4gICAgY29uc3QgbnVtYmVyID0gdGhpcy5pbnRlcm5hbE51bWJlckNvbnRyb2wudmFsdWUgfHwgJyc7XG4gICAgY29uc3QgZnVsbE51bWJlciA9IGNvdW50cnkgPyBgJHtjb3VudHJ5LmRpYWxDb2RlfSR7bnVtYmVyfWAgOiBudW1iZXI7XG5cbiAgICB0aGlzLmlzSW50ZXJuYWxVcGRhdGUgPSB0cnVlO1xuICAgIHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sPy5zZXRWYWx1ZShmdWxsTnVtYmVyKTtcbiAgICB0aGlzLmlzSW50ZXJuYWxVcGRhdGUgPSBmYWxzZTtcblxuICAgIC8vIEVtaXQgY2hhbmdlIGV2ZW50XG4gICAgY29uc3QgZGlnaXRzT25seSA9IG51bWJlci5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLnZhbGlkYXRlTnVtYmVyKGRpZ2l0c09ubHkpO1xuXG4gICAgdGhpcy5waG9uZUNoYW5nZS5lbWl0KHtcbiAgICAgIGZ1bGxOdW1iZXIsXG4gICAgICBudW1iZXIsXG4gICAgICBjb3VudHJ5LFxuICAgICAgaXNWYWxpZCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVOdW1iZXIoZGlnaXRzT25seTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5taW5EaWdpdHMgJiYgZGlnaXRzT25seS5sZW5ndGggPCB0aGlzLnJlc29sdmVkUHJvcHMubWluRGlnaXRzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMubWF4RGlnaXRzICYmIGRpZ2l0c09ubHkubGVuZ3RoID4gdGhpcy5yZXNvbHZlZFByb3BzLm1heERpZ2l0cykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLnBhdHRlcm4pIHtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCh0aGlzLnJlc29sdmVkUHJvcHMucGF0dGVybik7XG4gICAgICByZXR1cm4gcmVnZXgudGVzdChkaWdpdHNPbmx5KTtcbiAgICB9XG4gICAgLy8gRGVmYXVsdDogYXQgbGVhc3QgNyBkaWdpdHNcbiAgICByZXR1cm4gZGlnaXRzT25seS5sZW5ndGggPj0gNztcbiAgfVxufVxuIl19
@@ -12760,6 +12760,20 @@ class PhoneInputComponent {
12760
12760
  this.internalNumberControl.setValue(value);
12761
12761
  this.updateMainControl();
12762
12762
  }
12763
+ onNumberInputNative(event) {
12764
+ const input = event.target;
12765
+ // Filter non-numeric characters except spaces and dashes
12766
+ let value = (input.value || '').replace(/[^\d\s\-]/g, '');
12767
+ // Apply max digits limit
12768
+ if (this.resolvedProps.maxDigits) {
12769
+ const digitsOnly = value.replace(/\D/g, '');
12770
+ if (digitsOnly.length > this.resolvedProps.maxDigits) {
12771
+ value = digitsOnly.substring(0, this.resolvedProps.maxDigits);
12772
+ }
12773
+ }
12774
+ this.internalNumberControl.setValue(value);
12775
+ this.updateMainControl();
12776
+ }
12763
12777
  onBlur() {
12764
12778
  this.resolvedProps.control?.markAsTouched();
12765
12779
  }
@@ -12828,19 +12842,19 @@ class PhoneInputComponent {
12828
12842
  }
12829
12843
 
12830
12844
  <div class="number-input">
12831
- <ion-input
12832
- [formControl]="internalNumberControl"
12845
+ <ion-icon name="call-outline" aria-hidden="true" class="phone-icon"></ion-icon>
12846
+ <input
12833
12847
  type="tel"
12834
12848
  inputmode="tel"
12849
+ [formControl]="internalNumberControl"
12835
12850
  [placeholder]="getPlaceholder()"
12836
- [disabled]="resolvedProps.state === states.DISABLED"
12837
- [readonly]="resolvedProps.state === states.WORKING"
12838
- [maxlength]="resolvedProps.maxDigits || 15"
12839
- (ionInput)="onNumberInput($event)"
12840
- (ionBlur)="onBlur()"
12841
- >
12842
- <ion-icon slot="start" name="call-outline" aria-hidden="true"></ion-icon>
12843
- </ion-input>
12851
+ [attr.disabled]="resolvedProps.state === states.DISABLED ? true : null"
12852
+ [attr.readonly]="resolvedProps.state === states.WORKING ? true : null"
12853
+ [maxLength]="resolvedProps.maxDigits || 15"
12854
+ (input)="onNumberInputNative($event)"
12855
+ (blur)="onBlur()"
12856
+ class="phone-native-input"
12857
+ />
12844
12858
  </div>
12845
12859
  </div>
12846
12860
 
@@ -12854,11 +12868,11 @@ class PhoneInputComponent {
12854
12868
  </ion-note>
12855
12869
  }
12856
12870
  </div>
12857
- `, isInline: true, styles: [":host{display:block;width:100%}.phone-input-container.has-error .phone-input-wrapper{border-color:var(--ion-color-danger)}.phone-label{display:block;font-size:14px;font-weight:500;color:var(--ion-color-dark);margin-bottom:8px}.phone-input-wrapper{display:flex;align-items:stretch;border:1px solid var(--ion-border-color, #e0e0e0);border-radius:28px;background:var(--ion-background-color, #fff);overflow:hidden;transition:border-color .2s;height:56px}.phone-input-wrapper:focus-within{border-color:var(--ion-color-primary)}.phone-input-wrapper.disabled{opacity:.5;pointer-events:none}.country-selector{flex-shrink:0;border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center;padding:0 4px 0 12px}.country-selector ion-select{--background: transparent;--border-style: none;--border-width: 0;--border-color: transparent;--border-radius: 0;--box-shadow: none;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0;--highlight-color-focused: transparent;--highlight-color-valid: transparent;--highlight-color-invalid: transparent;min-width:80px;max-width:100px}.country-selector ion-select::part(container){border:none;box-shadow:none}.country-selector ion-select::part(icon){opacity:.6}.country-selector .flag{margin-right:4px}.dial-code-display{flex-shrink:0;padding:0 12px;font-weight:500;color:var(--ion-color-medium-shade);border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center}.number-input{flex:1;display:flex;align-items:center}.number-input ion-input{--background: transparent;--border-style: none;--border-width: 0;--border-color: transparent;--border-radius: 0;--box-shadow: none;--padding-start: 12px;--padding-end: 16px;--padding-top: 0;--padding-bottom: 0;--highlight-color-focused: transparent;--highlight-color-valid: transparent;--highlight-color-invalid: transparent;--highlight-height: 0;width:100%;min-height:unset;border:none;outline:none}.number-input ion-input::part(native){border:none!important;box-shadow:none!important;background:transparent!important;border-radius:0!important;padding:0!important;outline:none!important}.number-input ion-input::part(native):focus{border:none!important;box-shadow:none!important;outline:none!important}.number-input ion-input.has-focus,.number-input ion-input.ion-focused{--border-color: transparent;--box-shadow: none;border:none;outline:none}.number-input ion-input ion-icon{color:var(--ion-color-medium);font-size:18px;margin-right:8px}.number-input input{border:none!important;outline:none!important;box-shadow:none!important;background:transparent!important}.hint{display:block;font-size:12px;color:var(--ion-color-medium);margin-top:4px;padding-left:4px}.error-message{display:block;font-size:12px;margin-top:4px;padding-left:4px}::ng-deep .country-select-popover{--width: 200px}::ng-deep .country-select-popover .flag{margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
12871
+ `, isInline: true, styles: [":host{display:block;width:100%}.phone-input-container.has-error .phone-input-wrapper{border-color:var(--ion-color-danger)}.phone-label{display:block;font-size:14px;font-weight:700;color:var(--ion-color-dark);margin-bottom:8px}.phone-input-wrapper{display:flex;align-items:stretch;border:1px solid var(--ion-border-color, #e0e0e0);border-radius:28px;background:var(--ion-background-color, #fff);overflow:hidden;transition:border-color .2s;height:56px}.phone-input-wrapper:focus-within{border-color:var(--ion-color-primary)}.phone-input-wrapper.disabled{opacity:.5;pointer-events:none}.country-selector{flex-shrink:0;border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center;padding:0 4px 0 12px}.country-selector ion-select{--background: transparent;--border-style: none;--border-width: 0;--border-color: transparent;--border-radius: 0;--box-shadow: none;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0;--highlight-color-focused: transparent;--highlight-color-valid: transparent;--highlight-color-invalid: transparent;min-width:80px;max-width:100px}.country-selector ion-select::part(container){border:none;box-shadow:none}.country-selector ion-select::part(icon){opacity:.6}.country-selector .flag{margin-right:4px}.dial-code-display{flex-shrink:0;padding:0 12px;font-weight:500;color:var(--ion-color-medium-shade);border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center}.number-input{flex:1;display:flex;align-items:center;background:transparent;padding:0 16px 0 12px}.number-input .phone-icon{color:var(--ion-color-medium);font-size:18px;margin-right:10px;flex-shrink:0}.number-input .phone-native-input{flex:1;width:100%;height:100%;border:none;outline:none;background:transparent;font-size:16px;font-family:inherit;color:var(--ion-text-color, #000)}.number-input .phone-native-input::placeholder{color:var(--ion-color-medium, #92949c)}.number-input .phone-native-input:focus{outline:none;border:none}.number-input .phone-native-input:disabled{opacity:.5;cursor:not-allowed}.hint{display:block;font-size:12px;color:var(--ion-color-medium);margin-top:4px;padding-left:4px}.error-message{display:block;font-size:12px;margin-top:4px;padding-left:4px}::ng-deep .country-select-popover{--width: 200px}::ng-deep .country-select-popover .flag{margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.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: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
12858
12872
  }
12859
12873
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PhoneInputComponent, decorators: [{
12860
12874
  type: Component,
12861
- args: [{ selector: 'val-phone-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonInput, IonSelect, IonSelectOption, IonNote, IonIcon], template: `
12875
+ args: [{ selector: 'val-phone-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonSelect, IonSelectOption, IonNote, IonIcon], template: `
12862
12876
  <div class="phone-input-container" [class]="resolvedProps.cssClass" [class.has-error]="hasError">
12863
12877
  @if (resolvedProps.label) {
12864
12878
  <label class="phone-label">{{ getLabel() }}</label>
@@ -12891,19 +12905,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
12891
12905
  }
12892
12906
 
12893
12907
  <div class="number-input">
12894
- <ion-input
12895
- [formControl]="internalNumberControl"
12908
+ <ion-icon name="call-outline" aria-hidden="true" class="phone-icon"></ion-icon>
12909
+ <input
12896
12910
  type="tel"
12897
12911
  inputmode="tel"
12912
+ [formControl]="internalNumberControl"
12898
12913
  [placeholder]="getPlaceholder()"
12899
- [disabled]="resolvedProps.state === states.DISABLED"
12900
- [readonly]="resolvedProps.state === states.WORKING"
12901
- [maxlength]="resolvedProps.maxDigits || 15"
12902
- (ionInput)="onNumberInput($event)"
12903
- (ionBlur)="onBlur()"
12904
- >
12905
- <ion-icon slot="start" name="call-outline" aria-hidden="true"></ion-icon>
12906
- </ion-input>
12914
+ [attr.disabled]="resolvedProps.state === states.DISABLED ? true : null"
12915
+ [attr.readonly]="resolvedProps.state === states.WORKING ? true : null"
12916
+ [maxLength]="resolvedProps.maxDigits || 15"
12917
+ (input)="onNumberInputNative($event)"
12918
+ (blur)="onBlur()"
12919
+ class="phone-native-input"
12920
+ />
12907
12921
  </div>
12908
12922
  </div>
12909
12923
 
@@ -12917,7 +12931,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
12917
12931
  </ion-note>
12918
12932
  }
12919
12933
  </div>
12920
- `, styles: [":host{display:block;width:100%}.phone-input-container.has-error .phone-input-wrapper{border-color:var(--ion-color-danger)}.phone-label{display:block;font-size:14px;font-weight:500;color:var(--ion-color-dark);margin-bottom:8px}.phone-input-wrapper{display:flex;align-items:stretch;border:1px solid var(--ion-border-color, #e0e0e0);border-radius:28px;background:var(--ion-background-color, #fff);overflow:hidden;transition:border-color .2s;height:56px}.phone-input-wrapper:focus-within{border-color:var(--ion-color-primary)}.phone-input-wrapper.disabled{opacity:.5;pointer-events:none}.country-selector{flex-shrink:0;border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center;padding:0 4px 0 12px}.country-selector ion-select{--background: transparent;--border-style: none;--border-width: 0;--border-color: transparent;--border-radius: 0;--box-shadow: none;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0;--highlight-color-focused: transparent;--highlight-color-valid: transparent;--highlight-color-invalid: transparent;min-width:80px;max-width:100px}.country-selector ion-select::part(container){border:none;box-shadow:none}.country-selector ion-select::part(icon){opacity:.6}.country-selector .flag{margin-right:4px}.dial-code-display{flex-shrink:0;padding:0 12px;font-weight:500;color:var(--ion-color-medium-shade);border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center}.number-input{flex:1;display:flex;align-items:center}.number-input ion-input{--background: transparent;--border-style: none;--border-width: 0;--border-color: transparent;--border-radius: 0;--box-shadow: none;--padding-start: 12px;--padding-end: 16px;--padding-top: 0;--padding-bottom: 0;--highlight-color-focused: transparent;--highlight-color-valid: transparent;--highlight-color-invalid: transparent;--highlight-height: 0;width:100%;min-height:unset;border:none;outline:none}.number-input ion-input::part(native){border:none!important;box-shadow:none!important;background:transparent!important;border-radius:0!important;padding:0!important;outline:none!important}.number-input ion-input::part(native):focus{border:none!important;box-shadow:none!important;outline:none!important}.number-input ion-input.has-focus,.number-input ion-input.ion-focused{--border-color: transparent;--box-shadow: none;border:none;outline:none}.number-input ion-input ion-icon{color:var(--ion-color-medium);font-size:18px;margin-right:8px}.number-input input{border:none!important;outline:none!important;box-shadow:none!important;background:transparent!important}.hint{display:block;font-size:12px;color:var(--ion-color-medium);margin-top:4px;padding-left:4px}.error-message{display:block;font-size:12px;margin-top:4px;padding-left:4px}::ng-deep .country-select-popover{--width: 200px}::ng-deep .country-select-popover .flag{margin-right:8px}\n"] }]
12934
+ `, styles: [":host{display:block;width:100%}.phone-input-container.has-error .phone-input-wrapper{border-color:var(--ion-color-danger)}.phone-label{display:block;font-size:14px;font-weight:700;color:var(--ion-color-dark);margin-bottom:8px}.phone-input-wrapper{display:flex;align-items:stretch;border:1px solid var(--ion-border-color, #e0e0e0);border-radius:28px;background:var(--ion-background-color, #fff);overflow:hidden;transition:border-color .2s;height:56px}.phone-input-wrapper:focus-within{border-color:var(--ion-color-primary)}.phone-input-wrapper.disabled{opacity:.5;pointer-events:none}.country-selector{flex-shrink:0;border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center;padding:0 4px 0 12px}.country-selector ion-select{--background: transparent;--border-style: none;--border-width: 0;--border-color: transparent;--border-radius: 0;--box-shadow: none;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0;--highlight-color-focused: transparent;--highlight-color-valid: transparent;--highlight-color-invalid: transparent;min-width:80px;max-width:100px}.country-selector ion-select::part(container){border:none;box-shadow:none}.country-selector ion-select::part(icon){opacity:.6}.country-selector .flag{margin-right:4px}.dial-code-display{flex-shrink:0;padding:0 12px;font-weight:500;color:var(--ion-color-medium-shade);border-right:1px solid var(--ion-border-color, #e0e0e0);background:var(--ion-color-light-tint, #f5f5f5);display:flex;align-items:center}.number-input{flex:1;display:flex;align-items:center;background:transparent;padding:0 16px 0 12px}.number-input .phone-icon{color:var(--ion-color-medium);font-size:18px;margin-right:10px;flex-shrink:0}.number-input .phone-native-input{flex:1;width:100%;height:100%;border:none;outline:none;background:transparent;font-size:16px;font-family:inherit;color:var(--ion-text-color, #000)}.number-input .phone-native-input::placeholder{color:var(--ion-color-medium, #92949c)}.number-input .phone-native-input:focus{outline:none;border:none}.number-input .phone-native-input:disabled{opacity:.5;cursor:not-allowed}.hint{display:block;font-size:12px;color:var(--ion-color-medium);margin-top:4px;padding-left:4px}.error-message{display:block;font-size:12px;margin-top:4px;padding-left:4px}::ng-deep .country-select-popover{--width: 200px}::ng-deep .country-select-popover .flag{margin-right:8px}\n"] }]
12921
12935
  }], propDecorators: { preset: [{
12922
12936
  type: Input
12923
12937
  }], props: [{