{"version":3,"file":"firestitch-address.mjs","sources":["../../src/app/enums/address-format.enum.ts","../../src/app/helpers/address-is-empty.ts","../../src/app/helpers/create-empty-address.ts","../../src/app/helpers/extract-unit.ts","../../src/app/helpers/google-place-to-address.ts","../../src/app/components/address-autocomplete/address-autocomplete.component.ts","../../src/app/components/address-autocomplete/address-autocomplete.component.html","../../src/app/consts/countries.const.ts","../../src/app/enums/country.enum.ts","../../src/app/components/address-region/address-region.component.ts","../../src/app/components/address-region/address-region.component.html","../../src/app/helpers/address-format.ts","../../src/app/helpers/address-one-line-format.ts","../../src/app/helpers/address-two-line-format.ts","../../src/app/helpers/address-summary-format.ts","../../src/app/helpers/search-country-regions.ts","../../src/app/components/address-country/address-country.component.ts","../../src/app/components/address-country/address-country.component.html","../../src/app/components/address/address.component.ts","../../src/app/components/address/address.component.html","../../src/app/components/address-dialog/address-dialog.component.ts","../../src/app/components/address-dialog/address-dialog.component.html","../../src/app/components/address-format/address-format.component.ts","../../src/app/components/address-format/address-format.component.html","../../src/app/components/address-search/address-search.component.ts","../../src/app/components/address-search/address-search.component.html","../../src/app/components/address-picker/address-picker.component.ts","../../src/app/components/address-picker/address-picker.component.html","../../src/app/consts/inject-token-countries.ts","../../src/app/fs-address-countries.module.ts","../../src/app/fs-address-country.module.ts","../../src/app/fs-address-region.module.ts","../../src/app/fs-address.module.ts","../../src/app/components/address-region-country/address-region-country.component.ts","../../src/app/components/address-region-country/address-region-country.component.html","../../src/app/fs-address-region-country.module.ts","../../src/app/consts/inject-token-google-map-key.ts","../../src/app/services/address-geocoder.ts","../../src/public_api.ts","../../src/firestitch-address.ts"],"sourcesContent":["export enum AddressFormat {\n  OneLine = 'oneline',\n  TwoLine = 'twoline',\n  Summary = 'summary',\n}","import { FsAddress } from '../interfaces/address.interface';\n\nexport function addressIsEmpty(value: FsAddress): boolean {\n  return !value\n    || (!value.name\n      && !value.street\n      && !value.city\n      && !value.region\n      && !value.zip\n      && !value.country\n      && !value.address2\n      && !value.address3\n    );\n}\n","import { FsAddress } from '../interfaces/address.interface';\n\n\nexport function createEmptyAddress(): FsAddress {\n  return {\n    name: '',\n    description: '',\n    country: '',\n    region: '',\n    city: '',\n    street: '',\n    address2: '',\n    address3: '',\n    zip: '',\n    lat: null,\n    lng: null,\n  };\n}\n","export function extractUnit(text: string) {\n  const primaryUnitRegex = /((unit|apt|#|apartment|building|floor|suite|room|department|po\\s*box)\\s?#?\\d+([,.])?(\\w)?([,.])?)/gi;\n  const secondaryUnitRegex = /-\\s?\\d+/gi;\n  const nonWordOrDigitChar = /^[^a-z\\d]*|[^a-z\\d]*$/gi;\n\n  let unit = [\n    ...(text.match(primaryUnitRegex) || []),\n    ...(text.match(secondaryUnitRegex) || []),\n  ][0];\n\n  if (unit) {\n    text = text\n      .replace(unit, '')\n      .trim();\n\n    unit = unit\n      .replace(nonWordOrDigitChar, '')\n      .replace('unit', 'Unit')\n      .trim();\n  }\n\n  text = text.replace(nonWordOrDigitChar, '').trim();\n\n  return {\n    text,\n    unit,\n  };\n}\n","import { createEmptyAddress } from './create-empty-address';\nimport { FsAddressConfig } from '../interfaces/address-config.interface';\nimport { FsAddress } from '../interfaces/address.interface';\n\n\nexport function googlePlaceToFsAddress(\n  result: google.maps.places.Place,\n  config: FsAddressConfig,\n): FsAddress {\n  const address = createEmptyAddress();\n\n  let countryLongName: string, regionLongName: string, streetShortName: string;\n\n  address.lat = result.location.lat();\n  address.lng = result.location.lng();\n  address.description = result.formattedAddress;\n\n  // Finding different parts of address\n  result.addressComponents.forEach((item) => {\n    if (item.types.some(type => type === 'country')) {\n      address.country = item.shortText;\n      countryLongName = item.longText;\n    }\n\n    if (item.types.some(type => type === 'administrative_area_level_1')) {\n      address.region = item.shortText;\n      regionLongName = item.longText;\n    }\n\n    if (item.types.some(type => type === 'locality' || type === 'political')) {\n      address.city = item.longText;\n    }\n\n    if (item.types.some(type => type === 'postal_code')) {\n      address.zip = item.longText;\n    }\n  });\n\n  // Address.Street consists from number and street\n  const streetNumber = result.addressComponents\n    .find(el => el.types.some(type => type === 'street_number'));\n\n  if (streetNumber) {\n    address.street = streetNumber.longText + ' ';\n    streetShortName = streetNumber.longText + ' ';\n  } else {\n    const match = address.description.match(/^[\\d-]+/);\n    if (match) {\n      address.street = match[0] + ' ';\n      streetShortName = match[0] + ' ';\n    }\n  }\n\n  const streetAddress = result.addressComponents\n    .find(el => el.types.some(type => type === 'route'));\n\n  if (streetAddress) {\n    if (!address.street) {\n      address.street = streetAddress.longText;\n      streetShortName = streetAddress.shortText;\n    } else {\n      address.street += streetAddress.longText;\n      streetShortName += streetAddress.shortText;\n    }\n  }\n\n  // Checking correct place NAME\n  if (\n    address.country !== result.displayName\n    && countryLongName !== result.displayName\n    && address.region !== result.displayName\n    && regionLongName !== result.displayName\n    && address.city !== result.displayName\n    && streetShortName !== result.displayName\n    && address.zip !== result.displayName\n    && address.street !== result.displayName\n  ) {\n    if (config.name && config.name.visible !== false) {\n      address.name = result.displayName;\n    }\n\n  } else {\n    address.name = '';\n  }\n\n  return address;\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DestroyRef,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  inject,\n  Input,\n  NgZone,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator, FormsModule } from '@angular/forms';\n\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  MatAutocomplete,\n  MatAutocompleteSelectedEvent,\n  MatAutocompleteTrigger,\n  MatOption,\n} from '@angular/material/autocomplete';\n\nimport { guid } from '@firestitch/common';\nimport { FsMap } from '@firestitch/map';\n\nimport { from, fromEvent, Observable, of } from 'rxjs';\nimport {\n  debounceTime,\n  distinctUntilChanged,\n  filter,\n  map,\n  switchMap,\n  tap,\n} from 'rxjs/operators';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { AddressFormat } from '../../enums/address-format.enum';\nimport { addressIsEmpty } from '../../helpers/address-is-empty';\nimport { createEmptyAddress } from '../../helpers/create-empty-address';\nimport { extractUnit } from '../../helpers/extract-unit';\nimport { googlePlaceToFsAddress } from '../../helpers/google-place-to-address';\nimport { FsAddressConfig } from '../../interfaces/address-config.interface';\nimport { FsAddress } from '../../interfaces/address.interface';\nimport { MatFormField, MatLabel, MatHint } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsClearModule } from '@firestitch/clear';\nimport { MatOption as MatOption_1 } from '@angular/material/core';\n\n\n@Component({\n    selector: 'fs-address-autocomplete',\n    templateUrl: './address-autocomplete.component.html',\n    styleUrls: ['./address-autocomplete.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => FsAddressAutocompleteComponent),\n            multi: true,\n        },\n        {\n            provide: NG_VALIDATORS,\n            useExisting: forwardRef(() => FsAddressAutocompleteComponent),\n            multi: true,\n        },\n    ],\n    standalone: true,\n    imports: [\n        MatFormField,\n        MatLabel,\n        MatInput,\n        FormsModule,\n        MatAutocompleteTrigger,\n        FsFormModule,\n        FsClearModule,\n        MatAutocomplete,\n        MatOption_1,\n        MatHint,\n    ],\n})\nexport class FsAddressAutocompleteComponent implements OnInit, ControlValueAccessor, Validator {\n  private _map = inject(FsMap);\n  private _ngZone = inject(NgZone);\n  private _fm = inject(FocusMonitor);\n  private _elementRef = inject(ElementRef);\n  private _cdRef = inject(ChangeDetectorRef);\n\n\n  public static nextId = 0;\n\n  @Input()\n  public format = AddressFormat.TwoLine;\n\n  @Input()\n  public readonly = false;\n\n  @Input()\n  public showClear = true;\n\n  @Input()\n  public suggestions = false;\n\n  @Input()\n  public set config(value: FsAddressConfig) {\n    this._config = value;\n    if (this._config) {\n      this.required =\n        ((this.config.name && this.config.name.required) ||\n          (this.config.country && this.config.country.required) ||\n          (this.config.region && this.config.region.required) ||\n          (this.config.city && this.config.city.required) ||\n          (this.config.street && this.config.street.required) ||\n          (this.config.address2 && this.config.address2.required) ||\n          (this.config.address3 && this.config.address3.required) ||\n          (this.config.zip && this.config.zip.required));\n    }\n  }\n\n  public get config(): FsAddressConfig {\n    return this._config;\n  }\n\n  @Output()\n  public readonly addressChange = new EventEmitter();\n\n  @Output()\n  public readonly addressManual = new EventEmitter<string>();\n\n  @ViewChild('searchInput', { static: true, read: ElementRef })\n  public readonly searchElement: ElementRef;\n\n  @ViewChild(MatAutocomplete, { static: true })\n  public readonly autoCompleteRef: MatAutocomplete;\n\n  @ViewChild(MatAutocompleteTrigger, { static: true })\n  public readonly autocompleteTrigger: MatAutocompleteTrigger;\n\n  @HostBinding()\n  public id = `fs-address-autocomplete-${FsAddressAutocompleteComponent.nextId++}`;\n\n  public inputAddress: FsAddress = this._defaultInputAddress();\n  public googleSuggestions: google.maps.places.AutocompleteSuggestion[] = [];\n  public googlePlace: google.maps.places.Place = null;\n  public onChange: (data: any) => void;\n  public onTouched: () => void;\n  public focused = false;\n  public readonly autocompleteName = `search-${guid('xxxxxxxx')}`;\n\n  private _config: FsAddressConfig = {};\n  private _address: FsAddress = {};\n  private _searchText = '';\n  private _disabled = false;\n  private _required = false;\n  private _placeholder: string;\n\n  private _destroyRef = inject(DestroyRef);\n\n  public set value(value: FsAddress) {\n    this._address = value;\n    this.onChange(this._address);\n  }\n\n  public get value(): FsAddress {\n    return this._address;\n  }\n\n  @Input()\n  public get disabled(): boolean {\n    return this._disabled;\n  }\n\n  public set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n\n  @Input()\n  public get required() {\n    return this._required;\n  }\n\n  public set required(req) {\n    this._required = coerceBooleanProperty(req);\n  }\n\n  @Input()\n  public get placeholder() {\n    return this._placeholder;\n  }\n  public set placeholder(plh) {\n    this._placeholder = plh;\n  }\n\n  @HostBinding('class.floating')\n  public get shouldLabelFloat() {\n    return this.focused;\n  }\n\n  public get empty(): boolean {\n    return addressIsEmpty(this.value);\n  }\n\n  public ngOnInit() {\n    this._initGoogleMap();\n    this._listenUserTyping();\n    this._listenAutocompleteSelection();\n    this._registerFocusMonitor();\n  }\n\n  public writeValue(value: FsAddress | null) {\n    this._address = value;\n    this.inputAddress = value;\n    this._cdRef.markForCheck();\n  }\n\n  public onContainerClick(event: MouseEvent) {\n    if ((event.target as Element).tagName.toLowerCase() !== 'input') {\n      this.searchElement.nativeElement.focus();\n      this._elementRef.nativeElement.querySelector('input').focus();\n    }\n  }\n\n  public registerOnChange(fn: (data: any) => void): void {\n    this.onChange = fn;\n  }\n\n  public registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  public displayWith = (value: FsAddress) => {\n    if (value && typeof value === 'object') {\n      return this.value?.street;\n    } else if (!this.empty) {\n      return '';\n    }\n  };\n\n  public validate(control: AbstractControl): ValidationErrors | null {\n    const validationErrors: ValidationErrors = {};\n    const requiredField = [];\n    const parts = ['name', 'street', 'city', 'region', 'zip', 'country', 'lat', 'lng'];\n\n    if (this.required && this.empty) {\n      validationErrors.required = true;\n    }\n\n    if (!this.empty) {\n      parts.forEach((part) => {\n        if (this.config[part] && this.config[part].required && !this.value[part]) {\n          requiredField.push([part]);\n        }\n      });\n\n      if (((this.config.lat && this.config.lat.required) ||\n        (this.config.lng && this.config.lng.required)) &&\n        (!this.value.lat || !this.value.lat)) {\n        validationErrors.invalid = 'position on map';\n      }\n\n      if (requiredField.length) {\n        if (requiredField.length === 1) {\n          validationErrors.invalid = `The ${requiredField[0]} is required`;\n        } else {\n          const last = requiredField.pop();\n          validationErrors.invalid = `The ${requiredField.join(', ')} and ${last} are required`;\n        }\n      }\n    }\n\n    return validationErrors;\n  }\n\n  public clear(): void {\n    this.inputAddress = this._defaultInputAddress();\n    this.value = createEmptyAddress();\n    this.addressChange.emit(null);\n    this._clearPredictions();\n    setTimeout(() => {\n      this.autocompleteTrigger.openPanel();\n    });\n  }\n\n  public manual(value: string): void {\n    this.addressManual.emit(value);\n  }\n\n  // Search input can't be null. We implemented required validation to show asterisk if needed\n  // But general validation placed in another level and not depends of this input\n  // This hack allow us to show asterisk but disable extra validation\n  private _defaultInputAddress() {\n    return null;\n  }\n\n  private _listenUserTyping(): void {\n    this._ngZone.runOutsideAngular(() => {\n\n      fromEvent(this.searchElement.nativeElement, 'keydown')\n        .pipe(\n          filter((event: KeyboardEvent) => event.code === 'Tab'),\n          map(() => this.autocompleteTrigger.activeOption?.value),\n          filter((place) => !!place && this.googleSuggestions.length !== 0),\n          switchMap((place) => this._placeToAddress(place)),\n          takeUntilDestroyed(this._destroyRef),\n        )\n        .subscribe((address: FsAddress) => {\n          this._selectAddress(address);\n          this._clearPredictions();\n        });\n\n      fromEvent(this.searchElement.nativeElement, 'keyup')\n        .pipe(\n          debounceTime(200),\n          filter((event: KeyboardEvent) => {\n            return event.code !== 'Enter' && event.code !== 'Tab';\n          }),\n          map((event: KeyboardEvent) => {\n            return (event.target as HTMLInputElement).value;\n          }),\n          tap((text) => {\n            if (!text) {\n              this._clearPredictions();\n            }\n          }),\n          filter((value) => !!value),\n          tap((value) => {\n            this._searchText = value;\n            if (!value) {\n              this._address = {\n                ...this._address,\n                street: value,\n              };\n\n              this._selectAddress(this._address);\n            }\n          }),\n          distinctUntilChanged(),\n          switchMap((text: string) => {\n            return this._getPlaceSuggestions(text);\n          }),\n          takeUntilDestroyed(this._destroyRef),\n        )\n        .subscribe((suggestions: google.maps.places.AutocompleteSuggestion[]) => {\n          this._ngZone.run(() => {\n            this.googleSuggestions = [\n              ...suggestions,\n            ];\n\n            this._cdRef.markForCheck();\n          });\n        });\n    });\n  }\n\n  private _clearPredictions() {\n    this.googleSuggestions = [];\n    this._cdRef.markForCheck();\n  }\n\n  private _selectAddress(address) {\n    this.value = address;\n    this.addressChange.emit(address);\n  }\n\n  private _placeToAddress(suggestion: google.maps.places.AutocompleteSuggestion): Observable<FsAddress> {\n    if (!suggestion || !this.googlePlace) {\n      return of(null);\n    }\n\n    const place = suggestion.placePrediction.toPlace();\n    const fetchFieldsRequestOptions: google.maps.places.FetchFieldsRequest = {\n      fields: [\n        'displayName',\n        'location',\n        'addressComponents',\n        'formattedAddress',\n      ],\n    };\n\n    return from(place.fetchFields(fetchFieldsRequestOptions))\n      .pipe(\n        map(({ place }: {place: google.maps.places.Place}): FsAddress => {\n          if (!place) {\n            return {};\n          }\n\n          return googlePlaceToFsAddress(place, this.config);\n        }),\n      );\n  }\n\n  private _listenAutocompleteSelection(): void {\n    this.autoCompleteRef.optionSelected\n      .pipe(\n        map((event: MatAutocompleteSelectedEvent) => event.option),\n        // used to get the value from input when \"manual\" option selected\n        filter((option: MatOption<{ manual: boolean, value: string} | google.maps.places.AutocompleteSuggestion>) => {\n          if (option.value instanceof google.maps.places.AutocompleteSuggestion) {\n            return true;\n          }\n\n          this.manual(option.value.value);\n\n          return false;\n        }),\n        map((option) => {\n          return option.value;\n        }),\n        switchMap((value: google.maps.places.AutocompleteSuggestion) => this._placeToAddress(value)),\n        takeUntilDestroyed(this._destroyRef),\n      )\n      .subscribe((address: FsAddress) => {\n        this._ngZone.run(() => {\n          this.searchElement.nativeElement.blur();\n          this.value = address;\n\n          const { unit } = extractUnit(this._searchText);\n          if (unit) {\n            address.address2 = unit;\n          }\n\n          this.addressChange.emit(address);\n          this.inputAddress = address;\n\n          this._cdRef.markForCheck();\n        });\n      });\n  }\n\n  private _initGoogleMap() {\n    this._ngZone.runOutsideAngular(() => {\n      this._map.loaded$\n        .pipe(\n          takeUntilDestroyed(this._destroyRef),\n        )\n        .subscribe(() => {\n          this.googlePlace = new google.maps.places.Place({ id: this.id });\n        });\n    });\n  }\n\n  private _getPlaceSuggestions(address: string): Promise<google.maps.places.AutocompleteSuggestion[]> {\n    const { text } = extractUnit(address);\n    const placesRequest = google.maps.places.AutocompleteSuggestion.fetchAutocompleteSuggestions(\n      { input: text },\n    );\n\n    return placesRequest\n      .then((result) => {\n        return result.suggestions;\n      })\n      .catch(() => {\n        return [];\n      });\n  }\n\n  private _registerFocusMonitor(): void {\n    this._fm.monitor(this._elementRef, true)\n      .pipe(\n        filter(() => !this.disabled),\n        takeUntilDestroyed(this._destroyRef),\n      )\n      .subscribe((origin) => {\n        this.focused = !!origin;\n      });\n  }\n}\n","<mat-form-field [floatLabel]=\"empty ? 'auto' : 'always'\">\n  <mat-label>\n    {{ placeholder }}\n  </mat-label>\n  <ng-content></ng-content>\n  <input\n    matInput\n    type=\"text\"\n    autocomplete=\"off\"\n    [(ngModel)]=\"inputAddress\"\n    [matAutocomplete]=\"autocomplete\"\n    [name]=\"autocompleteName\"\n    [disabled]=\"disabled\"\n    [fsClear]=\"showClear && !empty && !disabled && !readonly\"\n    (cleared)=\"clear()\"\n    #searchInput=\"ngModel\">\n  <mat-autocomplete\n      [displayWith]=\"displayWith\"\n      autoActiveFirstOption\n      [class]=\"'fs-autocomplete-pane'\"\n      #autocomplete=\"matAutocomplete\">\n    @for (option of googleSuggestions; track option) {\n      <mat-option [value]=\"option\">\n        {{ option.placePrediction.text.text }}\n      </mat-option>\n    }\n    @if (!config.hideEnterManually) {\n      <div class=\"static-options\">\n        <mat-option [value]=\"{ manual: true, value: searchInput.value }\">\n          Enter address manually\n        </mat-option>\n      </div>\n    }\n  </mat-autocomplete>\n  @if (config.hint) {\n    <mat-hint>\n      {{ config.hint }}\n    </mat-hint>\n  }\n</mat-form-field>","import { IAddressCountry } from '../interfaces';\n\nexport const Countries: IAddressCountry[] = [\n  { code: 'AF', name: 'Afghanistan' },\n  { code: 'AL', name: 'Albania' },\n  { code: 'DZ', name: 'Algeria' },\n  { code: 'AS', name: 'American Samoa' },\n  { code: 'AD', name: 'Andorra' },\n  { code: 'AO', name: 'Angola' },\n  { code: 'AI', name: 'Anguilla' },\n  { code: 'AQ', name: 'Antarctica' },\n  { code: 'AG', name: 'Antigua and Barbuda' },\n  { code: 'AR', name: 'Argentina' },\n  { code: 'AM', name: 'Armenia' },\n  { code: 'AW', name: 'Aruba' },\n  { code: 'AU', name: 'Australia' },\n  { code: 'AT', name: 'Austria' },\n  { code: 'AZ', name: 'Azerbaijan' },\n  { code: 'BS', name: 'Bahamas' },\n  { code: 'BH', name: 'Bahrain' },\n  { code: 'BD', name: 'Bangladesh' },\n  { code: 'BB', name: 'Barbados' },\n  { code: 'BY', name: 'Belarus' },\n  { code: 'BE', name: 'Belgium' },\n  { code: 'BZ', name: 'Belize' },\n  { code: 'BJ', name: 'Benin' },\n  { code: 'BM', name: 'Bermuda' },\n  { code: 'BT', name: 'Bhutan' },\n  { code: 'BO', name: 'Bolivia' },\n  { code: 'BA', name: 'Bosnia and Herzegovina' },\n  { code: 'BW', name: 'Botswana' },\n  { code: 'BV', name: 'Bouvet Island' },\n  { code: 'BR', name: 'Brazil' },\n  { code: 'IO', name: 'British Indian Ocean Territory' },\n  { code: 'BN', name: 'Brunei Darussalam' },\n  { code: 'BG', name: 'Bulgaria' },\n  { code: 'BF', name: 'Burkina Faso' },\n  { code: 'BI', name: 'Burundi' },\n  { code: 'KH', name: 'Cambodia' },\n  { code: 'CM', name: 'Cameroon' },\n  {\n    code: 'CA', name: 'Canada',\n    regionLabel: 'Province',\n    regions: [\n      { code: 'AB', name: 'Alberta' },\n      { code: 'BC', name: 'British Columbia' },\n      { code: 'MB', name: 'Manitoba' },\n      { code: 'NB', name: 'New Brunswick' },\n      { code: 'NL', name: 'Newfoundland and Labrador' },\n      { code: 'NT', name: 'Northwest Territories' },\n      { code: 'NS', name: 'Nova Scotia' },\n      { code: 'NU', name: 'Nunavut' },\n      { code: 'ON', name: 'Ontario' },\n      { code: 'PE', name: 'Prince Edward Island' },\n      { code: 'QC', name: 'Quebec' },\n      { code: 'SK', name: 'Saskatchewan' },\n      { code: 'YT', name: 'Yukon Territory' },\n    ],\n  },\n  { code: 'CV', name: 'Cape Verde' },\n  { code: 'KY', name: 'Cayman Islands' },\n  { code: 'CF', name: 'Central African Republic' },\n  { code: 'TD', name: 'Chad' },\n  { code: 'CL', name: 'Chile' },\n  { code: 'CN', name: 'China' },\n  { code: 'CX', name: 'Christmas Island' },\n  { code: 'CC', name: 'Cocos (Keeling) Islands' },\n  { code: 'CO', name: 'Colombia' },\n  { code: 'KM', name: 'Comoros' },\n  { code: 'CG', name: 'Congo' },\n  { code: 'CD', name: 'Congo, the Democratic Republic of the' },\n  { code: 'CK', name: 'Cook Islands' },\n  { code: 'CR', name: 'Costa Rica' },\n  { code: 'CI', name: 'Cote D\\'Ivoire' },\n  { code: 'HR', name: 'Croatia' },\n  { code: 'CU', name: 'Cuba' },\n  { code: 'CY', name: 'Cyprus' },\n  { code: 'CZ', name: 'Czech Republic' },\n  { code: 'DK', name: 'Denmark' },\n  { code: 'DJ', name: 'Djibouti' },\n  { code: 'DM', name: 'Dominica' },\n  { code: 'DO', name: 'Dominican Republic' },\n  { code: 'EC', name: 'Ecuador' },\n  { code: 'EG', name: 'Egypt' },\n  { code: 'SV', name: 'El Salvador' },\n  { code: 'GQ', name: 'Equatorial Guinea' },\n  { code: 'ER', name: 'Eritrea' },\n  { code: 'EE', name: 'Estonia' },\n  { code: 'ET', name: 'Ethiopia' },\n  { code: 'FK', name: 'Falkland Islands (Malvinas)' },\n  { code: 'FO', name: 'Faroe Islands' },\n  { code: 'FJ', name: 'Fiji' },\n  { code: 'FI', name: 'Finland' },\n  { code: 'FR', name: 'France' },\n  { code: 'GF', name: 'French Guiana' },\n  { code: 'PF', name: 'French Polynesia' },\n  { code: 'TF', name: 'French Southern Territories' },\n  { code: 'GA', name: 'Gabon' },\n  { code: 'GM', name: 'Gambia' },\n  { code: 'GE', name: 'Georgia' },\n  { code: 'DE', name: 'Germany' },\n  { code: 'GH', name: 'Ghana' },\n  { code: 'GI', name: 'Gibraltar' },\n  { code: 'GR', name: 'Greece' },\n  { code: 'GL', name: 'Greenland' },\n  { code: 'GD', name: 'Grenada' },\n  { code: 'GP', name: 'Guadeloupe' },\n  { code: 'GU', name: 'Guam' },\n  { code: 'GT', name: 'Guatemala' },\n  { code: 'GN', name: 'Guinea' },\n  { code: 'GW', name: 'Guinea-Bissau' },\n  { code: 'GY', name: 'Guyana' },\n  { code: 'HT', name: 'Haiti' },\n  { code: 'HM', name: 'Heard Island and Mcdonald Islands' },\n  { code: 'VA', name: 'Holy See (Vatican City State)' },\n  { code: 'HN', name: 'Honduras' },\n  { code: 'HK', name: 'Hong Kong' },\n  { code: 'HU', name: 'Hungary' },\n  { code: 'IS', name: 'Iceland' },\n  { code: 'IN', name: 'India' },\n  { code: 'ID', name: 'Indonesia' },\n  { code: 'IR', name: 'Iran, Islamic Republic of' },\n  { code: 'IQ', name: 'Iraq' },\n  { code: 'IE', name: 'Ireland' },\n  { code: 'IL', name: 'Israel' },\n  { code: 'IT', name: 'Italy' },\n  { code: 'JM', name: 'Jamaica' },\n  { code: 'JP', name: 'Japan' },\n  { code: 'JO', name: 'Jordan' },\n  { code: 'KZ', name: 'Kazakhstan' },\n  { code: 'KE', name: 'Kenya' },\n  { code: 'KI', name: 'Kiribati' },\n  { code: 'KP', name: 'Korea, Democratic People\\'s Republic of' },\n  { code: 'KR', name: 'Korea, Republic of' },\n  { code: 'KW', name: 'Kuwait' },\n  { code: 'KG', name: 'Kyrgyzstan' },\n  { code: 'LA', name: 'Lao People\\'s Democratic Republic' },\n  { code: 'LV', name: 'Latvia' },\n  { code: 'LB', name: 'Lebanon' },\n  { code: 'LS', name: 'Lesotho' },\n  { code: 'LR', name: 'Liberia' },\n  { code: 'LY', name: 'Libyan Arab Jamahiriya' },\n  { code: 'LI', name: 'Liechtenstein' },\n  { code: 'LT', name: 'Lithuania' },\n  { code: 'LU', name: 'Luxembourg' },\n  { code: 'MO', name: 'Macao' },\n  { code: 'MK', name: 'Macedonia' },\n  { code: 'MG', name: 'Madagascar' },\n  { code: 'MW', name: 'Malawi' },\n  { code: 'MY', name: 'Malaysia' },\n  { code: 'MV', name: 'Maldives' },\n  { code: 'ML', name: 'Mali' },\n  { code: 'MT', name: 'Malta' },\n  { code: 'MH', name: 'Marshall Islands' },\n  { code: 'MQ', name: 'Martinique' },\n  { code: 'MR', name: 'Mauritania' },\n  { code: 'MU', name: 'Mauritius' },\n  { code: 'YT', name: 'Mayotte' },\n  { code: 'MX', name: 'Mexico' },\n  { code: 'FM', name: 'Micronesia, Federated States of' },\n  { code: 'MD', name: 'Moldova, Republic of' },\n  { code: 'MC', name: 'Monaco' },\n  { code: 'MN', name: 'Mongolia' },\n  { code: 'MS', name: 'Montserrat' },\n  { code: 'MA', name: 'Morocco' },\n  { code: 'MZ', name: 'Mozambique' },\n  { code: 'MM', name: 'Myanmar' },\n  { code: 'NA', name: 'Namibia' },\n  { code: 'NR', name: 'Nauru' },\n  { code: 'NP', name: 'Nepal' },\n  { code: 'NL', name: 'Netherlands' },\n  { code: 'AN', name: 'Netherlands Antilles' },\n  { code: 'NC', name: 'New Caledonia' },\n  { code: 'NZ', name: 'New Zealand' },\n  { code: 'NI', name: 'Nicaragua' },\n  { code: 'NE', name: 'Niger' },\n  { code: 'NG', name: 'Nigeria' },\n  { code: 'NU', name: 'Niue' },\n  { code: 'NF', name: 'Norfolk Island' },\n  { code: 'MP', name: 'Northern Mariana Islands' },\n  { code: 'NO', name: 'Norway' },\n  { code: 'OM', name: 'Oman' },\n  { code: 'PK', name: 'Pakistan' },\n  { code: 'PW', name: 'Palau' },\n  { code: 'PS', name: 'Palestinian Territory, Occupied' },\n  { code: 'PA', name: 'Panama' },\n  { code: 'PG', name: 'Papua New Guinea' },\n  { code: 'PY', name: 'Paraguay' },\n  { code: 'PE', name: 'Peru' },\n  { code: 'PH', name: 'Philippines' },\n  { code: 'PN', name: 'Pitcairn' },\n  { code: 'PL', name: 'Poland' },\n  { code: 'PT', name: 'Portugal' },\n  { code: 'PR', name: 'Puerto Rico' },\n  { code: 'QA', name: 'Qatar' },\n  { code: 'RE', name: 'Reunion' },\n  { code: 'RO', name: 'Romania' },\n  { code: 'RU', name: 'Russian Federation' },\n  { code: 'RW', name: 'Rwanda' },\n  { code: 'SH', name: 'Saint Helena' },\n  { code: 'KN', name: 'Saint Kitts and Nevis' },\n  { code: 'LC', name: 'Saint Lucia' },\n  { code: 'PM', name: 'Saint Pierre and Miquelon' },\n  { code: 'VC', name: 'Saint Vincent and the Grenadines' },\n  { code: 'WS', name: 'Samoa' },\n  { code: 'SM', name: 'San Marino' },\n  { code: 'ST', name: 'Sao Tome and Principe' },\n  { code: 'SA', name: 'Saudi Arabia' },\n  { code: 'SN', name: 'Senegal' },\n  { code: 'ME', name: 'Montenegro' },\n  { code: 'RS', name: 'Serbia' },\n  { code: 'SC', name: 'Seychelles' },\n  { code: 'SL', name: 'Sierra Leone' },\n  { code: 'SG', name: 'Singapore' },\n  { code: 'SK', name: 'Slovakia' },\n  { code: 'SI', name: 'Slovenia' },\n  { code: 'SB', name: 'Solomon Islands' },\n  { code: 'SO', name: 'Somalia' },\n  { code: 'ZA', name: 'South Africa' },\n  { code: 'GS', name: 'South Georgia and Sandwich Isles' },\n  { code: 'ES', name: 'Spain' },\n  { code: 'LK', name: 'Sri Lanka' },\n  { code: 'SD', name: 'Sudan' },\n  { code: 'SR', name: 'Suriname' },\n  { code: 'SJ', name: 'Svalbard and Jan Mayen' },\n  { code: 'SZ', name: 'Swaziland' },\n  { code: 'SE', name: 'Sweden' },\n  { code: 'CH', name: 'Switzerland' },\n  { code: 'SY', name: 'Syrian Arab Republic' },\n  { code: 'TW', name: 'Taiwan (ROC)' },\n  { code: 'TJ', name: 'Tajikistan' },\n  { code: 'TZ', name: 'Tanzania, United Republic of' },\n  { code: 'TH', name: 'Thailand' },\n  { code: 'TL', name: 'Timor-Leste' },\n  { code: 'TG', name: 'Togo' },\n  { code: 'TK', name: 'Tokelau' },\n  { code: 'TO', name: 'Tonga' },\n  { code: 'TT', name: 'Trinidad and Tobago' },\n  { code: 'TN', name: 'Tunisia' },\n  { code: 'TR', name: 'Turkey' },\n  { code: 'TM', name: 'Turkmenistan' },\n  { code: 'TC', name: 'Turks and Caicos Islands' },\n  { code: 'TV', name: 'Tuvalu' },\n  { code: 'UG', name: 'Uganda' },\n  { code: 'UA', name: 'Ukraine' },\n  { code: 'AE', name: 'United Arab Emirates' },\n  { code: 'GB', name: 'United Kingdom' },\n  {\n    code: 'US',\n    name: 'United States',\n    regionLabel: 'State',\n    regions: [\n      { code: 'AK', name: 'Alaska' },\n      { code: 'AL', name: 'Alabama' },\n      { code: 'AR', name: 'Arkansas' },\n      { code: 'AS', name: 'American Samoa' },\n      { code: 'AZ', name: 'Arizona' },\n      { code: 'CA', name: 'California' },\n      { code: 'CO', name: 'Colorado' },\n      { code: 'CT', name: 'Connecticut' },\n      { code: 'DE', name: 'Delaware' },\n      { code: 'FL', name: 'Florida' },\n      { code: 'GA', name: 'Georgia' },\n      { code: 'HI', name: 'Hawaii' },\n      { code: 'IA', name: 'Iowa' },\n      { code: 'ID', name: 'Idaho' },\n      { code: 'IL', name: 'Illinois' },\n      { code: 'IN', name: 'Indiana' },\n      { code: 'KS', name: 'Kansas' },\n      { code: 'KY', name: 'Kentucky' },\n      { code: 'LA', name: 'Louisiana' },\n      { code: 'MA', name: 'Massachusetts' },\n      { code: 'MD', name: 'Maryland' },\n      { code: 'ME', name: 'Maine' },\n      { code: 'MI', name: 'Michigan' },\n      { code: 'MN', name: 'Minnesota' },\n      { code: 'MO', name: 'Missouri' },\n      { code: 'MP', name: 'Northern Mariana Islands' },\n      { code: 'MS', name: 'Mississippi' },\n      { code: 'MT', name: 'Montana' },\n      { code: 'NC', name: 'North Carolina' },\n      { code: 'ND', name: 'North Dakota' },\n      { code: 'NE', name: 'Nebraska' },\n      { code: 'NH', name: 'New Hampshire' },\n      { code: 'NJ', name: 'New Jersey' },\n      { code: 'NM', name: 'New Mexico' },\n      { code: 'NV', name: 'Nevada' },\n      { code: 'NY', name: 'New York' },\n      { code: 'OH', name: 'Ohio' },\n      { code: 'OK', name: 'Oklahoma' },\n      { code: 'OR', name: 'Oregon' },\n      { code: 'PA', name: 'Pennsylvania' },\n      { code: 'PR', name: 'Puerto Rico' },\n      { code: 'RI', name: 'Rhode Island' },\n      { code: 'SC', name: 'South Carolina' },\n      { code: 'SD', name: 'South Dakota' },\n      { code: 'TN', name: 'Tennessee' },\n      { code: 'TX', name: 'Texas' },\n      { code: 'UT', name: 'Utah' },\n      { code: 'VA', name: 'Virginia' },\n      { code: 'VI', name: 'Virgin Islands' },\n      { code: 'VT', name: 'Vermont' },\n      { code: 'WA', name: 'Washington' },\n      { code: 'DC', name: 'Washington (District of Columbia)' },\n      { code: 'WI', name: 'Wisconsin' },\n      { code: 'WV', name: 'West Virginia' },\n      { code: 'WY', name: 'Wyoming' },\n    ],\n  },\n  { code: 'UM', name: 'United States Minor Outlying Islands' },\n  { code: 'UY', name: 'Uruguay' },\n  { code: 'UZ', name: 'Uzbekistan' },\n  { code: 'VU', name: 'Vanuatu' },\n  { code: 'VE', name: 'Venezuela' },\n  { code: 'VN', name: 'Viet Nam' },\n  { code: 'VG', name: 'Virgin Islands, British' },\n  { code: 'VI', name: 'Virgin Islands, U.s.' },\n  { code: 'WF', name: 'Wallis and Futuna' },\n  { code: 'EH', name: 'Western Sahara' },\n  { code: 'YE', name: 'Yemen' },\n  { code: 'ZM', name: 'Zambia' },\n  { code: 'ZW', name: 'Zimbabwe' },\n];\n","export enum Country {\n  Canada = 'CA',\n  UnitedStates = 'US',\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Optional, Output, ViewChild, inject } from '@angular/core';\nimport { ControlContainer, NgForm, NgModel, FormsModule } from '@angular/forms';\n\n\nimport { FsAutocompleteComponent, FsAutocompleteModule } from '@firestitch/autocomplete';\nimport { guid } from '@firestitch/common';\nimport { controlContainerFactory } from '@firestitch/core';\n\nimport { Subject, of } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\nimport { Countries } from '../../consts';\nimport { Country } from '../../enums/country.enum';\nimport { IAddressCountry } from '../../interfaces/address-country.interface';\nimport { IAddressRegion } from '../../interfaces/address-region.interface';\nimport { FsFormModule } from '@firestitch/form';\n\n\n@Component({\n    selector: 'fs-address-region',\n    templateUrl: './address-region.component.html',\n    styleUrls: ['./address-region.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    viewProviders: [\n        {\n            provide: ControlContainer,\n            useFactory: controlContainerFactory,\n            deps: [[new Optional(), NgForm]],\n        },\n    ],\n    standalone: true,\n    imports: [\n        FsAutocompleteModule,\n        FormsModule,\n        FsFormModule,\n    ],\n})\nexport class FsAddressRegionComponent implements OnInit, OnDestroy {\n  private _cdRef = inject(ChangeDetectorRef);\n\n\n  @ViewChild(FsAutocompleteComponent, { read: NgModel, static: true })\n  public autocompleteModel: NgModel;\n\n  @Input() public set region(regionCode: string) {\n    const region = this.addressCountries\n      .reduce((accum, addressCountry) => {\n        return [\n          ...accum,\n          ...(addressCountry.regions || [])\n            .filter((addressRegion) => (\n              addressRegion.code === regionCode &&\n              (!this.country || this.country === addressCountry.code)),\n            ),\n        ];\n      }, [])[0];\n\n    this.regionModel = (region ? region : (regionCode ? { name: regionCode } : null));\n  }\n\n  public get region() {\n    return this.regionModel?.code;\n  }\n\n  @Input() public disabled = false;\n  @Input() public country: Country | string;\n  @Input() public label;\n  @Input() public required = false;\n  @Input() public regionCountryOrder = [Country.Canada, Country.UnitedStates];\n  @Input() public set countries(countryCodes: (string | Country)[]) {\n    countryCodes = countryCodes || [Country.Canada, Country.UnitedStates];\n    this._countries = countryCodes\n      .map((countryCode: string) => {\n        return Countries.find((country) => country.code === countryCode);\n      });\n\n    this.updateCountryRegionLabels();\n  }\n\n  public get addressCountries() {\n    return this._countries;\n  }\n\n  @Output() public regionChange = new EventEmitter<string>();\n\n  public regionModel: IAddressRegion;\n  public controlName = `region${guid('xxxxxx')}`;\n  public regionLabel: string;\n  public countryEnum = Country;\n\n  private _countries: IAddressCountry[] = [];\n  private _destroy$ = new Subject<void>();\n\n  constructor() {\n    this.countries = [Country.Canada, Country.UnitedStates];\n  }\n\n  public ngOnInit() {\n    this.updateCountryRegionLabels();\n    this._listenControlStateChanges();\n  }\n\n  public clear() {\n    this.regionModel = null;\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next(null);\n    this._destroy$.complete();\n  }\n\n  public fetch = (keyword: string) => {\n    keyword = keyword.toLowerCase();\n\n    return of(null)\n      .pipe(\n        map(() => {\n          const regions: IAddressRegion[] = this._countries\n            .reduce((accum, country) => {\n              const countryRegions = (country.regions || [])\n                .filter((region) => {\n                  const regionName = region.name.toLowerCase().trim();\n\n                  return regionName.indexOf(keyword) !== -1;\n                });\n\n              if (countryRegions.length ) {\n                console.log(country, keyword, countryRegions);\n              }\n\n              return [\n                ...accum,\n                ...countryRegions\n                  .map((countryRegion) => {\n                    return {\n                      ...countryRegion,\n                      country: country.name,\n                    };\n                  }),\n              ];\n            }, []);\n          console.log(regions, keyword);\n\n          return regions;\n        }),\n      );\n  };\n\n  public displayWith = (data) => {\n    return data?.name;\n  };\n\n  public selectUserOption(keyword) {\n    this.regionModel = {\n      code: keyword,\n      name: keyword,\n    };\n\n    this.autocompleteModel.control.markAsDirty();\n\n    this.regionChange.emit(keyword);\n  }\n\n  public regionChanged() {\n    this.regionChange.emit(this.regionModel?.code);\n  }\n\n  public justUseShow = (keyword) => {\n    return !!keyword;\n  };\n\n  public updateCountryRegionLabels() {\n    this.regionLabel = this.label ? this.label : Object.keys(\n      this._countries\n        .reduce((accum, country) => {\n          return {\n            ...accum,\n            [country.regionLabel || 'Province']: true,\n          };\n        }, {}),\n    )\n      .join('/');\n  }\n\n  // we need this to get updated ng-(invalid/dirty) classes\n  private _listenControlStateChanges(): void {\n    this.autocompleteModel\n      .control\n      .statusChanges\n      .pipe(\n        takeUntil(this._destroy$),\n      )\n      .subscribe(() => {\n        this._cdRef.markForCheck();\n      });\n  }\n\n}\n","<fs-autocomplete\n  [fetch]=\"fetch\"\n  [displayWith]=\"displayWith\"\n  [fetchOnFocus]=\"true\"\n  [(ngModel)]=\"regionModel\"\n  (ngModelChange)=\"regionChanged()\"\n  [placeholder]=\"regionLabel\"\n  [disabled]=\"disabled\"\n  [fsFormRequired]=\"required\"\n  [name]=\"controlName\">\n  <ng-template\n    fsAutocompleteTemplate\n    let-data=\"data\">\n    <span class=\"country-region\">\n      <span>\n        {{ data.name }}\n      </span>\n      @if (!regionModel && addressCountries.length > 1) {\n        <span>\n          {{ data.country }}\n        </span>\n      }\n    </span>\n  </ng-template>\n  <ng-template\n    fsAutocompleteStatic\n    let-keyword\n    (selected)=\"selectUserOption($event)\"\n    [show]=\"justUseShow\">\n    Just Use \"{{ keyword }}\"\n  </ng-template>\n  <ng-template fsAutocompleteNoResults></ng-template>\n</fs-autocomplete>","import { AddressFormat } from './../enums/address-format.enum';\n\n\nexport function addressFormat(\n  address,\n  options: {\n    format?: AddressFormat;\n    includeFirst?: number;\n  } = {}): string {\n\n  options = {\n    format: AddressFormat.OneLine,\n    ...options,\n  };\n\n  const parts = ['name', 'street', 'address2', 'address3', 'city', 'region', 'zip', 'country'];\n  let addressParts = [];\n  let lines = [];\n\n  if (address) {\n    parts.forEach((part) => {\n      if (address[part]) {\n        addressParts.push(address[part]);\n      }\n    });\n  }\n\n  if (options.includeFirst) {\n    addressParts = addressParts.slice(0, options.includeFirst);\n  }\n\n  if (addressParts.length) {\n    if (options.format === AddressFormat.TwoLine) {\n      lines = [[addressParts.shift()]];\n    }\n\n    lines.push(addressParts);\n  }\n\n  return lines\n    .map((line) => {\n      return line.join(', ');\n    })\n    .join('\\n');\n}\n","import { AddressFormat } from '../enums/address-format.enum';\n\nimport { addressFormat } from './address-format';\n\n\nexport function addressOneLineFormat(address, options: { includeFirst?: number } = {}) {\n\n  const addressOptions: any = {\n    format: AddressFormat.OneLine,\n    ...options,\n  };\n\n  return addressFormat(address, addressOptions);\n}\n","import { AddressFormat } from '../enums/address-format.enum';\n\nimport { addressFormat } from './address-format';\n\n\nexport function addressTwoLineFormat(address, options: { includeFirst?: number } = {}) {\n\n  const addressOptions: any = {\n    format: AddressFormat.TwoLine,\n    ...options,\n  };\n\n  return addressFormat(address, addressOptions);\n}\n","\nexport function addressSummaryFormat(address) {\n\n  const parts = ['name', 'street', 'address2', 'address3', 'city', 'region', 'country'];\n  const addressParts = [];\n\n  if (address) {\n    for ( let i = 0; i < parts.length; i++) {\n      const field = parts[i];\n      const part = address[field];\n\n      if (field === 'name' && part) {\n        addressParts.push(part);\n\n      } else if (part && field !== 'name') {\n        addressParts.push(part);\n\n        const nextPart = address[parts[i + 1]];\n        if (nextPart) {\n          addressParts.push(nextPart);\n        }\n      }\n    }\n  }\n\n  return addressParts.join(', ');\n}\n","import { IAddressCountry } from '../interfaces/address-country.interface';\nimport { IAddressRegion } from '../interfaces/address-region.interface';\n\n\nexport function searchCountryRegions(\n  text: string,\n  regions: IAddressRegion[] | IAddressCountry[],\n  limit?: number,\n): IAddressRegion[] {\n  let matches = [];\n\n  text = text.toLowerCase().trim();\n  regions.forEach((region) => {\n    const regionName = region.name.toLowerCase().trim();\n    const index = regionName.indexOf(text);\n\n    if (index > -1) {\n      matches.push({\n        index,\n        region,\n      });\n    }\n  });\n\n  matches.sort((a, b) => {\n    if (a.index < b.index) {\n      return -1;\n    } else if (a.index > b.index) {\n      return 1;\n    }\n\n    return 0;\n\n  });\n\n  if (limit) {\n    matches = matches.slice(0, limit);\n  }\n\n  return matches.map((match) => match.region);\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, Optional, Output, SimpleChanges, forwardRef, inject } from '@angular/core';\nimport { ControlContainer, ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, NgForm } from '@angular/forms';\n\nimport { FsAutocompleteChipsModule } from '@firestitch/autocomplete-chips';\nimport { guid } from '@firestitch/common';\nimport { controlContainerFactory } from '@firestitch/core';\nimport { FsFormModule } from '@firestitch/form';\n\nimport { of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { Countries } from '../../consts/countries.const';\nimport { searchCountryRegions } from '../../helpers';\n\n\n@Component({\n  selector: 'fs-address-country',\n  templateUrl: './address-country.component.html',\n  styleUrls: ['./address-country.component.scss'],\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    multi: true,\n    useExisting: forwardRef(() => FsAddressCountryComponent),\n  }],\n  viewProviders: [\n    {\n      provide: ControlContainer,\n      useFactory: controlContainerFactory,\n      deps: [[new Optional(), NgForm]],\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    FsAutocompleteChipsModule,\n    FormsModule,\n    FsFormModule,\n  ],\n})\nexport class FsAddressCountryComponent implements OnChanges, ControlValueAccessor {\n\n  @Input() public disabled = false;\n  @Input() public required = false;\n  @Input() public excludeCountries: string[];\n  @Input() public countries = Countries;\n  @Input() public label = 'Country';\n  \n\n  @Output() public selectionChange = new EventEmitter<any>();\n\n  public country;\n  public name = `addressCountry${guid()}`;\n  public onChange: (data: any) => void;\n  public onTouched: () => void;\n\n  private _cdRef = inject(ChangeDetectorRef);\n\n  public fetch = (keyword: string) => {\n    return of(keyword)\n      .pipe(\n        map((kw) => {\n          return searchCountryRegions(kw, this.countries, 10);\n        }),\n      );\n  };\n\n  public writeValue(data: any): void {\n    this.country = this.countries\n      .find((country) => country.code === data);\n    this._cdRef.markForCheck();\n  }\n\n  public changed(value) {\n    const code = value?.code || null;\n    this.onChange(code);\n    this.selectionChange.emit(code);\n  }\n\n  public registerOnChange(fn: (data: any) => void): void {\n    this.onChange = fn;\n  }\n\n  public registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.excludeCountries && changes.excludeCountries.currentValue) {\n      this.countries = this.countries.filter((country) => {\n        return this.excludeCountries.indexOf(country.code) === -1;\n      });\n    }\n  }\n}\n","<fs-autocomplete-chips\n    [fetch]=\"fetch\"\n    [fetchOnFocus]=\"true\"\n    [(ngModel)]=\"country\"\n    [size]=\"'small'\"\n    (ngModelChange)=\"changed($event)\"\n    [label]=\"label\"\n    [multiple]=\"false\"\n    [disabled]=\"disabled\"\n    [fsFormRequired]=\"required\"\n    [name]=\"name\">\n  <ng-template\n      fsAutocompleteChipsTemplate\n      let-object=\"object\">\n    {{ object.name }}\n  </ng-template>\n</fs-autocomplete-chips>","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { ControlContainer, NgForm, FormsModule } from '@angular/forms';\n\nimport { guid } from '@firestitch/common';\nimport { controlContainerFactory } from '@firestitch/core';\nimport { FsMapComponent, FsMapModule } from '@firestitch/map';\n\nimport { Subject } from 'rxjs';\n\nimport { isObject } from 'lodash-es';\n\nimport { Countries } from '../../consts/countries.const';\nimport { Country } from '../../enums/country.enum';\nimport { FsAddressConfig } from '../../interfaces/address-config.interface';\nimport { FsAddressMapConfig } from '../../interfaces/address-map-config.interface';\nimport { FsAddress } from '../../interfaces/address.interface';\nimport { FsAddressRegionComponent } from '../address-region/address-region.component';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsAddressCountryComponent } from '../address-country/address-country.component';\n\n\n@Component({\n    selector: 'fs-address',\n    templateUrl: './address.component.html',\n    styleUrls: ['./address.component.scss'],\n    viewProviders: [\n        {\n            provide: ControlContainer,\n            useFactory: controlContainerFactory,\n            deps: [[new Optional(), NgForm]],\n        },\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        MatFormField,\n        MatLabel,\n        MatInput,\n        FormsModule,\n        FsFormModule,\n        FsAddressRegionComponent,\n        FsAddressCountryComponent,\n        FsMapModule,\n    ],\n})\nexport class FsAddressComponent implements OnInit, OnChanges, OnDestroy {\n\n  @ViewChild(FsAddressRegionComponent)\n  public fsAddressRegionComponent: FsAddressRegionComponent;\n\n  @ViewChild(FsMapComponent)\n  public map: FsMapComponent;\n\n  @Input() public address: FsAddress;\n  @Input() public excludeCountries: string[];\n  @Input() public regionCountryOrder = [Country.Canada, Country.UnitedStates];\n\n  @Input('config') public set setConfig(config: FsAddressConfig) {\n    config.search = config.search === undefined ? false : config.search;\n\n    if (!isObject(config.map)) {\n      config.map = { showMap: false };\n    }\n\n    this.config = config;\n  }\n\n  @Output() public addressChange = new EventEmitter();\n  @Output() public collapseChange = new EventEmitter();\n\n  public controlNames = {\n    street: `street_${guid('xxxxxxxx')}`,\n    locationName: `location_name_${guid('xxxxxxxx')}`,\n    address2: `address2_${guid('xxxxxxxx')}`,\n    address3: `address3_${guid('xxxxxxxx')}`,\n    city: `city_${guid('xxxxxxxx')}`,\n    addressCountry: `address_country_${guid('xxxxxxxx')}`,\n    zip: `zip_${guid('xxxxxxxx')}`,\n    lat: `lat_${guid('xxxxxxxx')}`,\n    lng: `lng_${guid('xxxxxxxx')}`,\n  };\n\n  public config: FsAddressConfig = {};\n  public countries = Countries;\n  public zipLabel: string;\n  public searchedAddress: string;\n  public isSearched = false;\n  public mapConfig: FsAddressMapConfig;\n\n  private _destory$ = new Subject();\n\n  public ngOnInit() {\n    this._initAddress();\n    this._initConfig();\n    this._initMap();\n\n    this._initCountries();\n    this._initZipAndStateLabels();\n    this._initCollapseBtn();\n  }\n\n  public get regionCountries() {\n    return this.countries.map((country) => country.code);\n  }\n\n  public ngOnChanges(change) {\n    if (change.address) {\n      if (!change.address.currentValue) {\n        this.address = {};\n      }\n\n      if (!change.address.firstChange) {\n        const currentCountry = change.address.currentValue ? change.address.currentValue.country : null;\n        const previousCountry = change.address.previousValue ? change.address.previousValue.country : null;\n        if (currentCountry !== previousCountry) {\n          this._initZipAndStateLabels();\n        }\n      }\n    }\n  }\n\n  public ngOnDestroy() {\n    this._destory$.next(null);\n    this._destory$.complete();\n  }\n\n  public recenter() {\n    this.mapConfig.center = { latitude: this.address.lat, longitude: this.address.lng };\n    this.mapConfig.marker.coords.latitude = this.address.lat;\n    this.mapConfig.marker.coords.longitude = this.address.lng;\n    this.map.setCenter(this.address.lat, this.address.lng);\n  }\n\n  public dragEnded(event): void {\n    this.mapConfig.marker.events.dragend(event);\n  }\n\n  public changeCountry() {\n\n    const country = this.countries.find((item) => item.code === this.address.country);\n\n    if (country && country.regions) {\n\n      const region = country.regions.some((item) => item.code === this.address.region);\n\n      if (!region) {\n        this.address.region = null;\n      }\n\n    } else {\n      this.address.region = null;\n    }\n\n    this.fsAddressRegionComponent.region = this.address.region;\n    this._initZipAndStateLabels();\n    this.change();\n  }\n\n  public changeRegion() {\n    if (this.address.region) {\n      const regionCountry = this.countries.find((country) => {\n        return country.regions\n          && country.regions.find((region) => this.address.region === region.code);\n      });\n\n      if (regionCountry) {\n        this.address.country = regionCountry.code;\n      }\n    }\n\n    this.change();\n  }\n\n  public change(event?) {\n    if (event) {\n      event.stopPropagation();\n    }\n\n    if (!this.config.search) {\n      return this.addressChange.emit(this.address);\n    }\n\n    const geocoder = new google.maps.Geocoder();\n    const parts = [\n      this.address.country,\n      this.address.region,\n      this.address.city,\n      this.address.zip,\n      this.address.street,\n      this.address.name,\n    ];\n\n    this.searchedAddress = parts.filter((part) => part).join(', ');\n\n    this.addressChange.emit(this.address);\n\n    geocoder.geocode({ address: this.searchedAddress }, (results, status) => {\n      this.isSearched = true;\n      const newAddress = { ...this.address };\n\n      if (status === google.maps.GeocoderStatus.OK && results.length > 0) {\n        const location = results[0].geometry.location;\n\n        newAddress.description = results[0].formatted_address;\n        newAddress.lat = location.lat();\n        newAddress.lng = location.lng();\n\n        this.mapConfig.center = { latitude: location.lat(), longitude: location.lng() };\n\n        this.mapConfig.marker.coords.latitude = location.lat();\n        this.mapConfig.marker.coords.longitude = location.lng();\n      } else {\n        newAddress.lat = null;\n        newAddress.lng = null;\n      }\n\n      this.addressChange.emit(newAddress);\n    });\n  }\n\n  private _initAddress() {\n    this.address = {\n      name: null,\n      country: null,\n      region: null,\n      address2: null,\n      address3: null,\n      street: null,\n      city: null,\n      zip: null,\n      lat: null,\n      lng: null, ...this.address,\n    };\n  }\n\n  private _initConfig() {\n    this.config = {\n      name: { required: false, visible: true },\n      country: { required: false, visible: true },\n      region: { required: false, visible: true },\n      address2: { required: false, visible: false },\n      address3: { required: false, visible: false },\n      city: { required: false, visible: true },\n      street: { required: false, visible: true },\n      zip: { required: false, visible: true }, \n      lat: { required: false, visible: false },\n      lng: { required: false, visible: false },\n      ...this.config,\n    };\n  }\n\n  private _initMap() {\n    this.mapConfig = {\n      center: {\n        latitude: this.address.lat || 9999,\n        longitude: this.address.lng || 9999,\n      },\n      zoom: 13,\n      scrollwheel: false,\n      streetViewControl: false,\n      zoomControl: true,\n      mapTypeControlOptions: { mapTypeIds: [] },\n      marker: {\n        id: 0,\n        coords: { latitude: this.address.lat, longitude: this.address.lng },\n        options: { draggable: true },\n        events: {\n          dragend: (marker) => {\n            this.address.lat = marker.coords.lat;\n            this.address.lng = marker.coords.lng;\n            this.addressChange.emit(this.address);\n          },\n        },\n      }, ...this.config.map,\n    };\n  }\n\n  private _initCountries() {\n    if (this.config.country && this.config.country.list && this.config.country.list.length) {\n      this.countries.length = 0;\n      this.config.country.list.forEach((el) => {\n        const country = this.countries.find((countryEl) => countryEl.code === el);\n        if (country) {\n          this.countries.push(country);\n        }\n      });\n    }\n  }\n\n  private _initZipAndStateLabels() {\n    this._updateCountryRegionLabels();\n  }\n\n  private _updateCountryRegionLabels() {\n    if (this.address.country) {\n      this.zipLabel = this.address.country === String(Country.UnitedStates)\n        ? 'ZIP Code'\n        : 'Postal Code';\n    } else {\n      this.zipLabel = 'ZIP/Postal Code';\n    }\n\n    this.zipLabel = this.config.zip.placeholder\n      ? this.config.zip.placeholder\n      : this.zipLabel;\n  }\n\n  private _initCollapseBtn() {\n    this.config.collapseButton = {\n      show: true,\n      title: 'Collapse Address Editor',\n      color: 'primary',\n      theme: 'mat-flat-button', ...this.config.collapseButton,\n    };\n  }\n}\n","@if (config.name.visible!==false) {\n  <mat-form-field\n    class=\"name\">\n    <mat-label>\n      Location name\n    </mat-label>\n    <input\n      matInput\n      autocomplete=\"nope\"\n      [(ngModel)]=\"address.name\"\n      [disabled]=\"config.name.disabled\"\n      [fsFormRequired]=\"config.name.required\"\n      [name]=\"controlNames.locationName\"\n      (change)=\"change($event)\"\n      autocomplete=\"off\">\n  </mat-form-field>\n}\n@if (config.street.visible!==false) {\n  <mat-form-field class=\"street\">\n    <mat-label>\n      {{ config.street.placeholder || 'Street' }}\n    </mat-label>\n    <input\n      matInput\n      type=\"text\"\n      autocomplete=\"nope\"\n      [(ngModel)]=\"address.street\"\n      [disabled]=\"config.street.disabled\"\n      [fsFormRequired]=\"config.street.required\"\n      [name]=\"controlNames.street\"\n      (change)=\"change()\"\n      autocomplete=\"off\">\n  </mat-form-field>\n}\n@if (config.address2.visible) {\n  <mat-form-field\n    class=\"address2\">\n    <mat-label>\n      {{ config.address2.placeholder || 'Address 2' }}\n    </mat-label>\n    <input\n      matInput\n      type=\"text\"\n      autocomplete=\"nope\"\n      [(ngModel)]=\"address.address2\"\n      [disabled]=\"config.address2.disabled\"\n      [fsFormRequired]=\"config.address2.required\"\n      [name]=\"controlNames.address2\"\n      (change)=\"change($event)\"\n      autocomplete=\"off\">\n  </mat-form-field>\n}\n@if (config.address3.visible) {\n  <mat-form-field\n    class=\"address3\">\n    <mat-label>\n      {{ config.address3.placeholder || 'Address 3' }}\n    </mat-label>\n    <input\n      matInput\n      type=\"text\"\n      autocomplete=\"nope\"\n      [(ngModel)]=\"address.address3\"\n      [disabled]=\"config.address3.disabled\"\n      [fsFormRequired]=\"config.address3.required\"\n      [name]=\"controlNames.address3\"\n      (change)=\"change($event)\"\n      autocomplete=\"off\">\n  </mat-form-field>\n}\n<div class=\"city-region-zip-country\">\n  <div class=\"city\">\n    @if (config.city.visible!==false) {\n      <mat-form-field>\n        <mat-label>\n          {{ config.city.placeholder || 'City' }}\n        </mat-label>\n        <input\n          matInput\n          type=\"text\"\n          autocomplete=\"nope\"\n          [(ngModel)]=\"address.city\"\n          [disabled]=\"config.city.disabled\"\n          [fsFormRequired]=\"config.city.required\"\n          [name]=\"controlNames.city\"\n          (change)=\"change($event)\"\n          autocomplete=\"off\">\n      </mat-form-field>\n    }\n  </div>\n  <div class=\"region\">\n    @if (config.region.visible!==false) {\n      <fs-address-region\n        [(region)]=\"address.region\"\n        (regionChange)=\"changeRegion()\"\n        [country]=\"address.country\"\n        [countries]=\"regionCountries\"\n        [label]=\"config.region.placeholder\"\n        [disabled]=\"config.region.disabled\"\n        [required]=\"config.region.required\"\n        [regionCountryOrder]=\"regionCountryOrder\">\n      </fs-address-region>\n    }\n  </div>\n  <div class=\"zip\">\n    @if (config.zip.visible!==false) {\n      <mat-form-field>\n        <mat-label>\n          {{ zipLabel }}\n        </mat-label>\n        <input\n          matInput\n          type=\"text\"\n          autocomplete=\"nope\"\n          [(ngModel)]=\"address.zip\"\n          [disabled]=\"config.zip.disabled\"\n          [fsFormRequired]=\"config.zip.required\"\n          [name]=\"controlNames.zip\"\n          (change)=\"change($event)\"\n          autocomplete=\"off\">\n      </mat-form-field>\n    }\n  </div>\n  <div class=\"country\">\n    @if (config.country.visible!==false) {\n      <fs-address-country\n        [disabled]=\"config.country.disabled\"\n        [required]=\"config.country.required\"\n        [label]=\"config.country.placeholder || 'Country'\"\n        [excludeCountries]=\"excludeCountries\"\n        [(ngModel)]=\"address.country\"\n        (selectionChange)=\"changeCountry()\"\n        [name]=\"controlNames.addressCountry\">\n      </fs-address-country>\n    }\n  </div>\n</div>\n@if (config.lat.visible === true && config.lng.visible === true) {\n  <div class=\"lat-lng\">\n    <mat-form-field>\n      <mat-label>\n        Latitude\n      </mat-label>\n      <input\n        matInput\n        type=\"text\"\n        [(ngModel)]=\"address.lat\"\n        [disabled]=\"config.lat.disabled\"\n        [fsFormRequired]=\"config.lat.required\"\n        [name]=\"controlNames.lat\"\n        (change)=\"change($event)\">\n    </mat-form-field>\n    <mat-form-field>\n      <mat-label>\n        Longitude\n      </mat-label>\n      <input\n        matInput\n        type=\"text\"\n        [(ngModel)]=\"address.lng\"\n        [disabled]=\"config.lng.disabled\"\n        [fsFormRequired]=\"config.lng.required\"\n        [name]=\"controlNames.lng\"\n        (change)=\"change($event)\">\n    </mat-form-field>\n  </div>\n}\n@if (mapConfig.showMap) {\n  <div\n    class=\"map-container\"\n    >\n    <fs-map\n      [height]=\"'300px'\"\n      [width]=\"'100%'\"\n      [lat]=\"mapConfig.center.latitude\"\n      [lng]=\"mapConfig.center.longitude\"\n      [zoom]=\"mapConfig.zoom\"\n      [scrollwheel]=\"mapConfig.scrollwheel\"\n      [streetViewControl]=\"mapConfig.streetViewControl\"\n      [zoomControl]=\"mapConfig.zoomControl\"\n      [mapTypeControlOptions]=\"mapConfig.mapTypeControlOptions\">\n      <fs-map-marker\n        [lat]=\"mapConfig.marker.coords.latitude\"\n        [lng]=\"mapConfig.marker.coords.longitude\">\n      </fs-map-marker>\n    </fs-map>\n    @if (!address.lat && !address.lng) {\n      <div\n        class=\"address-incomplete\"\n        >\n        @if (!isSearched) {\n          <div>\n            Please populate the address above to locate it on the map\n          </div>\n        }\n        @if (isSearched) {\n          <div>\n            Could not find address \"{{ searchedAddress }}\"\n          </div>\n        }\n      </div>\n    }\n  </div>\n}","import { Component, ChangeDetectionStrategy, ViewChild, inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\n\nimport { FsAddress } from '../../interfaces/address.interface';\nimport { FsAddressComponent } from '../../components/address/address.component';\nimport { of } from 'rxjs';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { FsAddressComponent as FsAddressComponent_1 } from '../address/address.component';\nimport { MatButton } from '@angular/material/button';\n\n\n@Component({\n    templateUrl: './address-dialog.component.html',\n    styleUrls: ['./address-dialog.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        FormsModule,\n        FsFormModule,\n        FsDialogModule,\n        CdkScrollable,\n        MatDialogContent,\n        FsAddressComponent_1,\n        MatDialogActions,\n        MatButton,\n        MatDialogClose,\n    ],\n})\nexport class FsAddressDialogComponent {\n  private _dialogRef = inject<MatDialogRef<FsAddressDialogComponent>>(MatDialogRef);\n  private _data = inject(MAT_DIALOG_DATA);\n\n\n  @ViewChild(FsAddressComponent)\n  public addressComponent: FsAddressComponent;\n\n  public address: FsAddress;\n  public config;\n\n  constructor() {\n      const _data = this._data;\n\n      this.address = _data.address;\n      this.config = _data.config;\n  }\n\n  public get initialEditDialog(): boolean {\n    return this._data.initial;\n  }\n\n  public submit = () => {\n    this._dialogRef.close(this.address);\n\n    return of(true);\n  }\n\n  public addressChange(address) {\n    this.address = address;\n  }\n\n  public recenter() {\n    this.addressComponent.recenter();\n  }\n}\n","<form fsForm [submit]=\"submit\" [dirtySubmitButton]=\"!initialEditDialog\">\n  <fs-dialog>\n    <div mat-dialog-content>\n      <fs-address\n        [(address)]=\"address\"\n        [config]=\"config\"\n        (addressChange)=\"addressChange($event)\">\n      </fs-address>\n    </div>\n    <div mat-dialog-actions>\n      <button\n        mat-button\n        type=\"submit\"\n        color=\"primary\"\n        data-cy=\"dialog-apply\">\n        Apply\n      </button>\n      @if (config.map.showMap && address?.lat && address?.lng) {\n        <button\n          mat-button\n          type=\"button\"\n          data-cy=\"center-address\"\n          (click)=\"recenter()\">\n          Center Address\n        </button>\n      }\n      <button\n        mat-button\n        type=\"button\"\n        [mat-dialog-close]=\"null\"\n        data-cy=\"dialog-cancel\">\n        Cancel\n      </button>\n    </div>\n  </fs-dialog>\n</form>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnInit,\n} from '@angular/core';\n\nimport { AddressFormat } from '../../enums/address-format.enum';\nimport { addressOneLineFormat, addressSummaryFormat, addressTwoLineFormat } from '../../helpers';\nimport { FsAddress } from '../../interfaces/address.interface';\nimport { NgClass } from '@angular/common';\n\n\n@Component({\n    selector: 'fs-address-format',\n    templateUrl: './address-format.component.html',\n    styleUrls: ['./address-format.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [NgClass],\n})\nexport class FsAddressFormatComponent implements OnInit {\n\n  @Input()\n  public set address(address) {\n    this._address = address;\n    this._updateView();\n  }\n\n  public get address() {\n    return this._address;\n  }\n\n  @Input() public format: AddressFormat = AddressFormat.OneLine;\n  @Input() public includeFirst: 0;\n  @Input() public disabled = false;\n  @Input() public showName = true;\n\n  public lines: string[];\n\n  private _address: FsAddress = {};\n\n  public ngOnInit() {\n    this._updateView();\n  }\n\n  public get empty() {\n    return !!this.lines?.length;\n  }\n\n  private _updateView() {\n    const address = {\n      ...this.address,\n      name: this.showName ? this.address?.name : null,\n    };\n\n    switch (this.format) {\n      case AddressFormat.Summary: {\n        this.lines = addressSummaryFormat(address).split('\\n');\n        break;\n      }\n      case AddressFormat.OneLine: {\n        this.lines = addressOneLineFormat(address, { includeFirst: this.includeFirst }).split('\\n');\n        break;\n      }\n      case AddressFormat.TwoLine: {\n        this.lines = addressTwoLineFormat(address, { includeFirst: this.includeFirst }).split('\\n');\n        break;\n      }\n    }\n\n  }\n\n}\n","@if (lines.length) {\n  <span [ngClass]=\"format\" [class.disabled]=\"disabled\">\n    @for (line of lines; track line; let index = $index) {\n      <span class=\"line-{{index + 1}}\">\n        {{line}}\n      </span>\n    }\n  </span>\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { ControlContainer, NgForm, FormsModule } from '@angular/forms';\n\n\nimport { guid } from '@firestitch/common';\nimport { controlContainerFactory } from '@firestitch/core';\n\nimport { Subject } from 'rxjs';\n\nimport { AddressFormat } from '../../enums/address-format.enum';\nimport { createEmptyAddress } from '../../helpers/create-empty-address';\nimport { FsAddressPickerConfig } from '../../interfaces/address-config.interface';\nimport { FsAddress } from '../../interfaces/address.interface';\nimport { FsAddressAutocompleteComponent } from '../address-autocomplete/address-autocomplete.component';\nimport { FsFormModule } from '@firestitch/form';\nimport { NgClass } from '@angular/common';\nimport { FsAddressFormatComponent } from '../address-format/address-format.component';\n\n\n@Component({\n    selector: 'fs-address-search',\n    templateUrl: './address-search.component.html',\n    styleUrls: ['./address-search.component.scss'],\n    viewProviders: [\n        {\n            provide: ControlContainer,\n            useFactory: controlContainerFactory,\n            deps: [[new Optional(), NgForm]],\n        },\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        FsAddressAutocompleteComponent,\n        FormsModule,\n        FsFormModule,\n        NgClass,\n        FsAddressFormatComponent,\n    ],\n})\nexport class FsAddressSearchComponent implements OnDestroy {\n\n  @Input()\n  public set config(value: FsAddressPickerConfig) {\n    this._config = value;\n    if (this._config) {\n      this.required =\n        ((this.config.name && this.config.name.required) ||\n          (this.config.country && this.config.country.required) ||\n          (this.config.region && this.config.region.required) ||\n          (this.config.city && this.config.city.required) ||\n          (this.config.street && this.config.street.required) ||\n          (this.config.address2 && this.config.address2.required) ||\n          (this.config.address3 && this.config.address3.required) ||\n          (this.config.zip && this.config.zip.required));\n    }\n  }\n\n  public get config(): FsAddressPickerConfig {\n    return this._config;\n  }\n\n  @Input() public showName = true;\n  @Input() public address: FsAddress = {};\n  @Input() public format = AddressFormat.TwoLine;\n  @Input() public disabled = false;\n  @Input() public readonly = false;\n  @Input() public required = false;\n\n  @Output() public cleared: EventEmitter<any> = new EventEmitter<any>();\n  @Output() public addressChange = new EventEmitter();\n  @Output() public edit = new EventEmitter();\n  @Output() public selected = new EventEmitter();\n  @Output() public readonly addressManual = new EventEmitter<string>();\n\n  @ViewChild(FsAddressAutocompleteComponent)\n  public autocomplete: FsAddressAutocompleteComponent;\n\n  public autocompleteName = `search-${guid('xxxxxxxx')}`;\n\n  private _destroy$ = new Subject<void>();\n  private _config: FsAddressPickerConfig = {};\n\n  public get editable(): boolean {\n    return !this.disabled && !this.readonly;\n  }\n\n  public ngOnDestroy() {\n    this._destroy$.next(null);\n    this._destroy$.complete();\n  }\n\n  public clear() {\n    this.address = createEmptyAddress();\n    this.cleared.emit(createEmptyAddress());\n    this.addressChange.emit(createEmptyAddress());\n    this.autocomplete.clear();\n  }\n\n  public editClick(): void {\n    if (this.editable) {\n      this.edit.emit();\n    }\n  }\n\n  public addressSelected(): void {\n    this.selected.emit(this.address);\n    this.addressChange.emit(this.address);\n  }\n\n}\n","<fs-address-autocomplete\n    [config]=\"config\"\n    [(ngModel)]=\"address\"\n    [disabled]=\"disabled\"\n    (addressChange)=\"addressSelected()\"\n    (addressManual)=\"addressManual.emit($event)\"\n    [ngClass]=\"{ hide: !addressControl.empty }\"\n    [placeholder]=\"config.label\"\n    [name]=\"autocompleteName\"\n    [required]=\"required\"\n    #addressControl>\n  <fs-address-format\n    [address]=\"address\"\n    [format]=\"format\"\n    [showName]=\"showName\"\n    (click)=\"editClick()\"\n    [ngClass]=\"{ editable: editable }\"\n    [disabled]=\"disabled\">\n  </fs-address-format>\n</fs-address-autocomplete>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, Optional, Output, SimpleChanges, ViewChild, inject } from '@angular/core';\nimport { ControlContainer, ControlValueAccessor, NG_VALUE_ACCESSOR, NgForm } from '@angular/forms';\n\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { controlContainerFactory } from '@firestitch/core';\n\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { cloneDeep, isObject } from 'lodash-es';\n\nimport { AddressFormat } from '../../enums/address-format.enum';\nimport { createEmptyAddress } from '../../helpers/create-empty-address';\nimport { FsAddressPickerConfig } from '../../interfaces/address-config.interface';\nimport { FsAddress } from '../../interfaces/address.interface';\nimport { FsAddressDialogComponent } from '../address-dialog/address-dialog.component';\nimport { FsAddressSearchComponent } from '../address-search/address-search.component';\nimport { AddressSearchEditEvent } from '../address-search/address-search.interface';\n\n\n@Component({\n    selector: 'fs-address-picker',\n    templateUrl: './address-picker.component.html',\n    styleUrls: ['./address-picker.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [{\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: FsAddressPickerComponent,\n            multi: true,\n        }],\n    viewProviders: [\n        {\n            provide: ControlContainer,\n            useFactory: controlContainerFactory,\n            deps: [[new Optional(), NgForm]],\n        },\n    ],\n    standalone: true,\n    imports: [FsAddressSearchComponent],\n})\nexport class FsAddressPickerComponent implements OnChanges, OnDestroy, ControlValueAccessor {\n  private _dialog = inject(MatDialog);\n  private _cdRef = inject(ChangeDetectorRef);\n\n\n  @ViewChild(FsAddressSearchComponent, { static: true })\n  public addressSearch: FsAddressSearchComponent;\n\n  @Input('config') public set setConfig(config: FsAddressPickerConfig) {\n    config = cloneDeep(config);\n\n    if (!config.format) {\n      config.format = AddressFormat.TwoLine;\n    }\n\n    if (!isObject(config.map)) {\n      config.map = { showMap: false };\n    }\n\n    config.disabled = this.config.disabled;\n    config.readonly = this.config.readonly;\n\n    this.config = config;\n  }\n\n  @Input('format') public set setFormat(value) {\n    this.config.format = value;\n  }\n\n  @Input('disabled') public set setDisabled(value) {\n    this.config.disabled = value;\n  }\n\n  @Input('readonly') public set setReadonly(value) {\n    this.config.readonly = value;\n  }\n\n  @Input() public address: FsAddress;\n\n  @Output() public addressChange = new EventEmitter();\n\n  @Input() public showName: boolean = true;\n\n  @ViewChild(FsAddressSearchComponent)\n  public search: FsAddressSearchComponent;\n\n  public view = 'search';\n  public config: FsAddressPickerConfig = {};\n  public onChange: (value) => void;\n\n  private _destroy$ = new Subject();\n\n  public writeValue(obj: any): void {\n    this.address = obj;\n  }\n\n  public registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  public registerOnTouched(): void {\n    //\n  }\n\n  public setDisabledState?(disabled: boolean): void {\n    this.config.disabled = disabled;\n    this._cdRef.markForCheck();\n  }\n\n  public ngOnChanges(changes: SimpleChanges) {\n    if (\n      changes.address &&\n      changes.address.currentValue !== changes.address.previousValue\n    ) {\n      if (!this.address) {\n        this.address = createEmptyAddress();\n      }\n    }\n  }\n\n  public addressManual() {\n    this.open({\n      initialChange: false,\n      value: {},\n    });\n  }\n\n  public addressChanged(address) {\n    this.address = address;\n    this.addressChange.emit(address);\n    if(this.onChange) {\n      this.onChange(address);\n    }\n  }\n\n  public addressEdit() {\n    this.open({ value: this.address, initialChange: false });\n  }\n\n  public addressSelected(address) {\n    if (this.config.confirmation || address.manual) {\n      this.open({ value: address, initialChange: true })\n        .afterClosed()\n        .pipe(\n          takeUntil(this._destroy$),\n        )\n        .subscribe((result) => {\n          if (!result) {\n            this.addressSearch.clear();\n          }\n        });\n    } else {\n      this.addressChanged(address);\n    }\n  }\n\n  public open(event: AddressSearchEditEvent): MatDialogRef<FsAddressDialogComponent> {\n    const dialogRef = this._dialog\n      .open(FsAddressDialogComponent, {\n        width: '700px',\n        data: {\n          address: event.value || this.address,\n          config: this.config,\n          initial: event.initialChange,\n        },\n      });\n\n    dialogRef.afterClosed()\n      .pipe(\n        filter((result) => !!result),\n        takeUntil(this._destroy$),\n      )\n      .subscribe((result) => {\n        this.address = result;\n\n        // hard dirty fix for DT-T867.\n        // In future it must be ControlValue Accessor...\n        if (result) {\n          this.search.autocomplete.value = this.address;\n        }\n\n        this.addressChanged(this.address);\n        this._cdRef.markForCheck();\n      });\n\n    return dialogRef;\n  }\n\n  public searchEdited(event: AddressSearchEditEvent) {\n    this.open(event);\n  }\n\n  public clear() {\n    this.address = {};\n    this.addressSearch.clear();\n  }\n\n  public ngOnDestroy() {\n    this._destroy$.next(null);\n    this._destroy$.complete();\n  }\n}\n","<div class=\"address-picker-container\">\n  <div class=\"search\">\n    <fs-address-search\n      [address]=\"address\"\n      [config]=\"config\"\n      [format]=\"config.format\"\n      [disabled]=\"config.disabled\"\n      [readonly]=\"config.readonly\"\n      [showName]=\"showName\"\n      (edit)=\"addressEdit()\"\n      (cleared)=\"addressChanged(null)\"\n      (addressChange)=\"addressChanged($event)\"\n      (addressManual)=\"addressManual()\"\n      (selected)=\"addressSelected($event)\">\n    </fs-address-search>\n  </div>\n</div>","import { InjectionToken } from '@angular/core';\n\nexport const COUNTRIES = new InjectionToken<any>('fs-address-country.countries');","import { Countries } from './consts/countries.const';\nimport { NgModule } from '@angular/core';\n\nimport { COUNTRIES } from './consts/inject-token-countries';\n\n@NgModule({\n  providers: [\n    { provide: COUNTRIES, useValue: Countries }\n  ]\n})\nexport class FsAddressCountriesModule {}\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n\nimport { FsAutocompleteChipsModule } from '@firestitch/autocomplete-chips';\nimport { FsFormModule } from '@firestitch/form';\n\nimport { FsAddressCountryComponent } from './components/address-country/address-country.component';\nimport { FsAddressCountriesModule } from './fs-address-countries.module';\n\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        FsFormModule,\n        FsAddressCountriesModule,\n        FsAutocompleteChipsModule,\n        FsAddressCountryComponent,\n    ],\n    exports: [\n        FsAddressCountryComponent,\n    ],\n})\nexport class FsAddressCountryModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatInputModule } from '@angular/material/input';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsAutocompleteModule } from '@firestitch/autocomplete';\n\nimport { FsAddressRegionComponent } from './components/address-region/address-region.component';\nimport { FsAddressCountriesModule } from './fs-address-countries.module';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        FsFormModule,\n        MatInputModule,\n        FsAddressCountriesModule,\n        FsAutocompleteModule,\n        FsAddressRegionComponent,\n    ],\n    exports: [\n        FsAddressRegionComponent\n    ]\n})\nexport class FsAddressRegionModule {}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { FsClearModule } from '@firestitch/clear';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsMapModule } from '@firestitch/map';\n\nimport { FsAddressAutocompleteComponent } from './components/address-autocomplete/address-autocomplete.component';\nimport { FsAddressDialogComponent } from './components/address-dialog/address-dialog.component';\nimport { FsAddressFormatComponent } from './components/address-format/address-format.component';\nimport { FsAddressPickerComponent } from './components/address-picker/address-picker.component';\nimport { FsAddressSearchComponent } from './components/address-search/address-search.component';\nimport { FsAddressComponent } from './components/address/address.component';\nimport { FsAddressCountriesModule } from './fs-address-countries.module';\nimport { FsAddressCountryModule } from './fs-address-country.module';\nimport { FsAddressRegionModule } from './fs-address-region.module';\n\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        MatAutocompleteModule,\n        MatButtonModule,\n        MatIconModule,\n        MatInputModule,\n        MatSelectModule,\n        MatDialogModule,\n        FsFormModule,\n        FsAddressCountriesModule,\n        FsDialogModule,\n        FsAddressRegionModule,\n        FsAddressCountryModule,\n        FsMapModule,\n        FsClearModule,\n        FsAddressComponent,\n        FsAddressFormatComponent,\n        FsAddressPickerComponent,\n        FsAddressSearchComponent,\n        FsAddressDialogComponent,\n        FsAddressAutocompleteComponent,\n    ],\n    exports: [\n        FsAddressComponent,\n        FsAddressFormatComponent,\n        FsAddressPickerComponent,\n        FsAddressSearchComponent,\n        FsAddressAutocompleteComponent,\n    ],\n})\nexport class FsAddressModule {\n  public static forRoot(): ModuleWithProviders<FsAddressModule> {\n    return {\n      ngModule: FsAddressModule,\n    };\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnInit,\n  Output,\n} from '@angular/core';\n\nimport { Countries } from '../../consts';\nimport { IAddressCountry } from '../../interfaces';\nimport { FsAddressRegionConfig } from '../../interfaces/address-region-config.interface';\nimport { IAddressRegion } from '../../interfaces/address-region.interface';\nimport { FsAddressCountryComponent } from '../address-country/address-country.component';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsAddressRegionComponent } from '../address-region/address-region.component';\n\n\n@Component({\n    selector: 'fs-address-region-country',\n    templateUrl: './address-region-country.component.html',\n    styleUrls: ['./address-region-country.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        FsAddressCountryComponent,\n        FormsModule,\n        FsFormModule,\n        FsAddressRegionComponent,\n    ],\n})\nexport class FsAddressRegionCountryComponent implements OnInit {\n\n  @HostBinding('class.vertical') public orientationVertical = true;\n  @HostBinding('class.horizontal') public orientationHorizontal = false;\n  @HostBinding('class.horizontal-stretch') public orientationHorizontalStretch = false;\n\n  @Input() public config: FsAddressRegionConfig = {};\n  @Input() public country: string;\n  @Input() public region: string;\n  @Input('orientation') public set setOrientation(value) {\n    this.orientationVertical = value === 'vertical';\n    this.orientationHorizontal = value === 'horizontal';\n    this.orientationHorizontalStretch = value === 'horizontal-stretch';\n  }\n\n  @Output() public countryChange = new EventEmitter<any>();\n  @Output() public regionChange = new EventEmitter<any>();\n\n  public countries = Countries;\n  public regionCountries;\n\n  public ngOnInit() {\n    this._initConfig();\n  }\n\n  public changeCountry() {\n    this.regionCountries = this.country ? [this.country] : null;\n    if (!this.country) {\n      this.region = null;\n    }\n\n    //if region is not in the list of regions for the country, set region to null\n    if (this.country && this.region) {\n      const selectedCountry = this.countries.find(\n        (country: IAddressCountry) => country.code === this.country,\n      );\n      if (!selectedCountry?.regions.some((region: IAddressRegion) => region.code === this.region)){\n        this.region = null;\n      }\n    }\n\n    this.regionChange.emit(this.region);\n    this.countryChange.emit(this.country);\n  }\n\n  public changeRegion() {\n    if (this.region) {\n      const regionCountry = this.countries.find((country) => {\n        return country.regions\n          && country.regions.find((region) => this.region === region.code);\n      });\n\n      if (regionCountry) {\n        this.country = regionCountry.code;\n        this.changeCountry();\n      }\n    }\n\n    this.regionChange.emit(this.region);\n  }\n\n  private _initConfig() {\n    this.config = {\n      country: { required: false },\n      region: { required: false }, ...this.config,\n    };\n\n    if (this.config.country.list) {\n      this.countries = Countries.filter((country) => {\n        return this.config.country.list.indexOf(country.code) >= 0;\n      });\n    }\n  }\n\n\n}\n","<div class=\"region-country\">\n  <div class=\"country\">\n    @if (config.country.visible!==false) {\n      <fs-address-country\n        [disabled]=\"config.country.disabled\"\n        [required]=\"config.country.required\"\n        [label]=\"config.country.placeholder\"\n        [countries]=\"countries\"\n        [(ngModel)]=\"country\"\n        (selectionChange)=\"changeCountry()\"\n        name=\"country\">\n      </fs-address-country>\n    }\n  </div>\n  <div class=\"region\">\n    <fs-address-region\n      [(region)]=\"region\"\n      [country]=\"country\"\n      (regionChange)=\"changeRegion()\"\n      [countries]=\"regionCountries\"\n      [disabled]=\"config.region.disabled\"\n      [required]=\"config.region.required\"\n      name=\"region\">\n    </fs-address-region>\n  </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FsAddressCountriesModule } from './fs-address-countries.module';\n\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsAddressRegionCountryComponent } from './components/address-region-country/address-region-country.component';\nimport { FsAddressRegionModule } from './fs-address-region.module';\nimport { FsAddressCountryModule } from './fs-address-country.module';\n\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        FsFormModule,\n        MatInputModule,\n        MatSelectModule,\n        FsAddressCountriesModule,\n        FsAddressRegionModule,\n        FsAddressCountryModule,\n        FsAddressRegionCountryComponent\n    ],\n    exports: [\n        FsAddressRegionCountryComponent\n    ]\n})\nexport class FsAddressRegionCountryModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const GOOGLE_MAP_KEY = new InjectionToken<any>('fs-address-country.google-map-key');","import { Injectable, inject } from '@angular/core';\n\nimport { FsMap } from '@firestitch/map';\n\nimport { Observable } from 'rxjs';\nimport { delay } from 'rxjs/operators';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FsAddressGeocoder {\n  private _map = inject(FsMap);\n\n\n  public lookup(address: string): Observable<google.maps.GeocoderResult[]> {\n    return new Observable((observer) => {\n      this._map.loaded$\n        .pipe(\n          delay(1010),\n        )\n        .subscribe(() => {\n          const geocoder = new google.maps.Geocoder();\n          const request: google.maps.GeocoderRequest = {\n            address,\n          };\n      \n          geocoder.geocode(request, (results, status) => {\n            if (status === google.maps.GeocoderStatus.OK) {\n              observer.next(results);\n              observer.complete();\n            } else if (status === google.maps.GeocoderStatus.ZERO_RESULTS) {\n              observer.error('Bad destination address.');\n            } else {\n              observer.error('Error calling Google Geocode API.');\n            }\n          });\n        });\n    });\n  }\n\n}\n","// Modules\nexport { FsAddressModule } from './app/fs-address.module';\nexport { FsAddressCountriesModule } from './app/fs-address-countries.module';\nexport { FsAddressRegionModule } from './app/fs-address-region.module';\nexport { FsAddressRegionCountryModule } from './app/fs-address-region-country.module';\nexport { FsAddressCountryModule } from './app/fs-address-country.module';\n\nexport { Countries } from './app/consts/countries.const';\nexport { Country } from './app/enums/country.enum';\n\n// Inject Tokens\nexport { COUNTRIES } from './app/consts/inject-token-countries';\nexport { GOOGLE_MAP_KEY } from './app/consts/inject-token-google-map-key';\n\n// Components\nexport { FsAddressComponent } from './app/components/address/address.component';\nexport { FsAddressFormatComponent } from './app/components/address-format/address-format.component';\nexport { FsAddressPickerComponent } from './app/components/address-picker/address-picker.component';\nexport { FsAddressSearchComponent } from './app/components/address-search/address-search.component';\nexport { FsAddressAutocompleteComponent } from './app/components/address-autocomplete/address-autocomplete.component';\nexport { FsAddressCountryComponent } from './app/components/address-country/address-country.component';\nexport { FsAddressRegionComponent } from './app/components/address-region/address-region.component';\nexport {\n  FsAddressRegionCountryComponent\n} from './app/components/address-region-country/address-region-country.component';\n\n// Interfaces\nexport { FsAddress } from './app/interfaces/address.interface';\nexport {\n  FsAddressCollapseButtonConfig,\n  IFsAddressCollapseButtonConfig,\n} from './app/interfaces/address-collapse-button-config.interface';\nexport {\n  FsAddressConfig,\n  FsAddressPickerConfig,\n  FsAddressFieldSetting,\n  IFsAddressConfig,\n  IFsAddressFieldSetting,\n  AddressPickerConfig,\n} from './app/interfaces/address-config.interface';\nexport {\n  FsAddressFormatConfig,\n  IFsAddressFormatConfig,\n} from './app/interfaces/address-format-config.interface';\nexport {\n  FsAddressMapConfig,\n  IFsAddressMapConfig,\n} from './app/interfaces/address-map-config.interface';\nexport {\n  IFsAddressRegionConfig,\n  FsAddressRegionConfig,\n} from './app/interfaces/address-region-config.interface';\nexport { AddressFormat } from './app/enums/address-format.enum';\n\nexport {\n  addressFormat,\n  addressTwoLineFormat,\n  addressOneLineFormat,\n  addressSummaryFormat,\n} from './app/helpers';\n\nexport { addressIsEmpty } from './app/helpers/address-is-empty';\n\n\nexport { FsAddressGeocoder } from './app/services/address-geocoder';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["MatOption_1","i1","i2","i3","FsAddressComponent_1"],"mappings":"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"}