{"version":3,"file":"webresto-components-union-phone-code-control.mjs","sources":["../../../projects/components/union-phone-code-control/union-phone-code-control.component.ts","../../../projects/components/union-phone-code-control/union-phone-code-control.component.html","../../../projects/components/union-phone-code-control/webresto-components-union-phone-code-control.ts"],"sourcesContent":["import { NgForOf, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport {\n  ControlErrorMessagePipe,\n  TrackByPropertyDirective,\n  TranslatePipe,\n  isValue,\n} from '@axrl/common';\nimport type { ScanFormType } from '@axrl/ngx-extended-form-builder';\nimport type { Phone } from '@webresto/ng-gql';\nimport type { Country } from '@webresto/worktime';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nconst modifierToCountryCode: Record<string,string> = {\n  'Hans': 'CN', // Simplified Chinese, typically used in China\n  'Hant': 'TW', // Traditional Chinese, typically used in Taiwan\n  'Latn': 'US', // Latin script, often used in English-speaking countries\n  'Cyrl': 'RU', // Cyrillic script, often used in Russia\n  // Add more mappings as needed\n};\n\n@Component({\n  selector: 'union-phone-code-control',\n  host: {\n    class: 'union-phone-code-control',\n  },\n  standalone: true,\n  imports: [\n    NgIf,\n    NgForOf,\n    ReactiveFormsModule,\n    NgxMaskDirective,\n    ControlErrorMessagePipe,\n    TranslatePipe,\n    MatInputModule,\n    MatButtonModule,\n    MatMenuModule,\n    TrackByPropertyDirective,\n  ],\n  providers: [\n    provideNgxMask({\n      validation: false,\n    }),\n  ],\n  templateUrl: './union-phone-code-control.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class UnionPhoneCodeControlComponent {\n  @Input() form: ScanFormType<Partial<Phone>> | null | undefined;\n\n  @Input() countryList: Array<Partial<Country>> | null = [];\n  @Input() defaultCountryISO: string | null | undefined;\n\n  @Input() label: string | undefined;\n  @Input() color: 'primary' | 'accent' = 'primary';\n  @Input() readonly: boolean = false;\n  @Input() strict: boolean = false;\n\n  ngOnChanges(changes: SimpleChanges) {\n    \n    if (changes.countryList && this.countryList?.length === 1 && this.form) {\n      const country = this.countryList[0];\n      this.setCode(country);\n    \n    } else if(this.countryList !== null && this.countryList?.length > 1) {\n      const countryCode = this.getCountryFromLocale();\n      // Find the country in the list based on the country code\n      const country = countryCode ? this.countryList?.find(c => c.iso === countryCode) : undefined;\n      console.log(country, countryCode);\n      let defaultCountry: Partial<Country> | undefined;\n      if(this.defaultCountryISO) {\n        defaultCountry = this.countryList?.find(c => c.iso === this.defaultCountryISO)\n      } else {\n        defaultCountry = this.countryList[0];\n      }\n      \n      if (country) {\n          // Country is found in the list\n          this.setCode(country);\n      } else if(defaultCountry) {\n          // Country is not found in the list\n          console.warn(`Country with code ${countryCode} not found in the country list.`);\n          this.setCode(defaultCountry);\n      }\n    }\n  }\n\n  get phoneMask(): string | undefined {\n    const masks =\n      this.countryList?.find(country => country.phoneCode === this.form?.controls.code?.value)\n        ?.phoneMask ?? [];\n  \n    if (masks.length === 0) return undefined;\n    \n    // Если масок только одна, ничего не изменяем\n    if (masks.length === 1) return masks[0]?.replace(/[\\d#]/g, '0') + (!this.strict ? '*' : '');\n    \n    // Создаем копию массива и сортируем маски по длине в порядке убывания\n    const sortedMasks = [...masks].sort((a, b) => b.length - a.length);\n  \n    const longestMask = sortedMasks[0];\n    if (longestMask && /[\\d#]/.test(longestMask)) {\n      return longestMask.replace(/[\\d#]/g, '0') + (!this.strict ? '*' : '');\n    }\n  \n    return longestMask?.replace(/#/g, '0') + (!this.strict ? '*' : '');\n  }\n  \n\n  get placeholder(): string {\n    const mask = this.phoneMask\n    \n    if (mask) {\n      return mask.replace(/0/g, '_').replace(/[\\*]/g, '');\n    }\n\n    return '(___)-___-__-__';\n  }\n\n  showPhoneList(): boolean {\n    return (this.countryList?.length ?? 0) > 1;\n  }\n\n  showLabelCode(): boolean {\n    return (this.countryList?.length ?? 0) === 1;\n  }\n\n  // hidePhoneCode(): boolean {\n  //   return (this.countryList?.length ?? 0) === 0;\n  // }\n\n  constructor() {}\n\n  setCode(country: Partial<Country>): void {\n    if (isValue(this.form) && isValue(country.phoneCode)) {\n      this.form.controls.code?.setValue(country.phoneCode); // Set the country code\n      this.form.controls.number?.setValue(''); // Clear the phone number field\n    }\n  }\n\n\n\n  getCountryFromLocale(): string | null {\n    try {\n        // Check if navigator.language is supported\n        if (typeof navigator === 'undefined' || !navigator.language) {\n            throw new Error(\"Unable to retrieve locale: navigator.language is not supported.\");\n        }\n\n        const locale = navigator.language || navigator.languages[0] || null;\n\n        // Check for null or empty locale\n        if (!locale) {\n            throw new Error(\"Locale is not defined.\");\n        }\n\n        // Split the locale into components\n        const parts = locale.split('-');\n\n        // Locale might consist of multiple parts\n        if (parts.length >= 2) {\n            // Get the last part as the potential country code or modifier\n            const lastPart = parts[parts.length - 1];\n\n            // Check if the last part is a two-letter country code (ISO 3166-1 alpha-2)\n            if (lastPart.length === 2 && /^[A-Z]{2}$/i.test(lastPart)) {\n                return lastPart.toUpperCase();\n            }\n\n            // Check if the last part is a known language modifier\n            if (modifierToCountryCode[lastPart]) {\n                return modifierToCountryCode[lastPart];\n            }\n\n            // Check if the last part is a language script modifier\n            if (/^Hans|Hant|Latn|Cyrl$/i.test(lastPart)) {\n                // Try to get the country code from the second-to-last part\n                const possibleCountry = parts[parts.length - 2];\n                if (possibleCountry.length === 2 && /^[A-Z]{2}$/i.test(possibleCountry)) {\n                    return possibleCountry.toUpperCase();\n                } else {\n                    throw new Error(`Invalid country code: ${possibleCountry}`);\n                }\n            }\n\n            throw new Error(`Unrecognized locale format: ${locale}`);\n        } else {\n            throw new Error(`Locale does not contain a country code: ${locale}`);\n        }\n\n    } catch (error) {\n        console.error(\"Error determining country:\", error);\n        return null;\n    }\n  }\n}\n","@if (strict && countryList?.length === 0) {\n  <span>{{ 'Error: imposible strict' | translate }}</span>\n}\n@else {\n  <mat-form-field [color]=\"color\" class=\"is-fullwidth\" *ngIf=\"form\" [formGroup]=\"form\">\n    <mat-label *ngIf=\"label\">{{ label | translate }}</mat-label>\n  \n    <!-- Conditionally show the menu or the text based on the number of countries -->\n    <button\n      *ngIf=\"showPhoneList()\"\n      matTextPrefix\n      mat-icon-button\n      type=\"button\"\n      class=\"code-select\"\n      [matMenuTriggerFor]=\"menu\"\n      [disabled]=\"readonly\"\n    >\n      {{ form.value.code }}\n    </button>\n  \n    <span *ngIf=\"showLabelCode()\" class=\"code-label\">\n      {{ form.value.code }}\n    </span>\n  \n    <input\n      matInput\n      type=\"tel\"\n      [placeholder]=\"placeholder\"\n      [mask]=\"phoneMask\"\n      formControlName=\"number\"\n      [readonly]=\"readonly\"\n      [validation]=\"false\"\n    />\n    <mat-error> {{ form.controls.number | controlErrorMessage | translate }} </mat-error>\n  </mat-form-field>\n  \n  <!-- Conditionally render the menu if there are multiple countries -->\n  <mat-menu #menu=\"matMenu\">\n    <button\n      mat-menu-item\n      role=\"menuitemradio\"\n      *ngFor=\"let country of countryList; trackByProperty: 'name'\"\n      (click)=\"setCode(country)\"\n    >\n      {{ country.phoneCode }} - {{ country.name }}\n    </button>\n  </mat-menu>  \n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}