{"version":3,"file":"ngx-google-location-autocomplete.mjs","sources":["../../../src/lib/types/options.interface.ts","../../../src/lib/ngx-google-location-autocomplete.directive.ts","../../../src/public-api.ts","../../../src/ngx-google-location-autocomplete.ts"],"sourcesContent":["import { LatLng, LatLngBounds } from \"./iCore.interface\";\r\n\r\nexport class ComponentRestrictions {\r\n    public country?: string;\r\n\r\n    constructor(obj?: Partial<ComponentRestrictions>) {\r\n        if (!obj)\r\n            return;\r\n\r\n        Object.assign(this, obj);\r\n    }\r\n}\r\n\r\nexport class Options {\r\n    public bounds?: LatLngBounds;\r\n    public componentRestrictions?: ComponentRestrictions;\r\n    public types?: string[];\r\n    public fields?: string[];\r\n    public strictBounds?: boolean;\r\n    public origin?: LatLng;\r\n    public constructor(opt?: Partial<Options>) {\r\n        if (!opt)\r\n            return;\r\n\r\n        Object.assign(this, opt);\r\n    }\r\n}","import { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, input, InputSignal, model, ModelSignal, output, OutputEmitterRef } from '@angular/core';\r\nimport { Address } from './types/iCore.interface';\r\nimport { Options } from './types/options.interface';\r\n\r\ndeclare let google: any;\r\n@Directive({\r\n  selector: '[ngx-google-location-autocomplete]',\r\n  exportAs: 'ngx-location'\r\n})\r\nexport class NgxGoogleLocationAutocompleteDirective implements AfterViewInit {\r\n  // This directive can be used to apply Google Location Autocomplete functionality\r\n  // to an input element. Additional logic can be added here as needed.\r\n\r\n  public options: ModelSignal<Options | undefined> = model<Options | undefined>( undefined, {alias: 'options'});\r\n  public onAddressChange: OutputEmitterRef<Address> = output<Address>();\r\n\r\n  private autocomplete: any;\r\n  public place!: Address;\r\n\r\n  public constructor(private el: ElementRef, private cdr: ChangeDetectorRef) { }\r\n\r\n  public ngAfterViewInit(): void {\r\n    if (!this.options()) {\r\n      this.options.set(new Options());\r\n    }\r\n\r\n    this.initializeLocationAutocomplete();\r\n  }\r\n\r\n  private isGoogleLibExists(): boolean {\r\n    return !(!google || !google.maps || !google.maps.places);\r\n  }\r\n\r\n  private initializeLocationAutocomplete(): void {\r\n    if (!this.isGoogleLibExists())\r\n      throw new Error(\"Google maps library can not be found\");\r\n\r\n\r\n    this.autocomplete = new google.maps.places.Autocomplete(this.el.nativeElement, this.options);\r\n\r\n    if (!this.autocomplete)\r\n      throw new Error(\"Autocomplete is not initialized\");\r\n\r\n    if (!this.autocomplete.addListener != null) { // Check to bypass https://github.com/angular-ui/angular-google-maps/issues/270\r\n      this.autocomplete.addListener('place_changed', () => {\r\n        this.handleChangeEvent()\r\n      });\r\n    }\r\n\r\n    this.el.nativeElement.addEventListener('keydown', (event: KeyboardEvent) => {\r\n      if (!event.key) {\r\n        return;\r\n      }\r\n\r\n      let key = event.key.toLowerCase();\r\n\r\n      if (key == 'enter' && event.target === this.el.nativeElement) {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n      }\r\n    });\r\n\r\n    // according to https://gist.github.com/schoenobates/ef578a02ac8ab6726487\r\n    if (window && window.navigator && window.navigator.userAgent && navigator.userAgent.match(/(iPad|iPhone|iPod)/g)) {\r\n      setTimeout(() => {\r\n        let containers = document.getElementsByClassName('pac-container');\r\n\r\n        if (containers) {\r\n          let arr = Array.from(containers);\r\n\r\n          if (arr) {\r\n            for (let container of arr) {\r\n              if (!container)\r\n                continue;\r\n\r\n              container.addEventListener('touchend', (e) => {\r\n                e.stopImmediatePropagation();\r\n              });\r\n            }\r\n\r\n          }\r\n        }\r\n      }, 500);\r\n    }\r\n\r\n  }\r\n\r\n  public reset(): void {\r\n    this.autocomplete.setComponentRestrictions(this.options()?.componentRestrictions);\r\n    this.autocomplete.setTypes(this.options()?.types);\r\n  }\r\n\r\n  private handleChangeEvent(): void {\r\n    this.place = this.autocomplete.getPlace();\r\n\r\n    if (this.place) {\r\n        this.onAddressChange.emit(this.place);\r\n        this.cdr.detectChanges();\r\n    }\r\n}\r\n\r\n}\r\n","/*\r\n * Public API Surface of ngx-google-location-autocomplete\r\n */\r\n\r\nexport * from './lib/ngx-google-location-autocomplete.directive';\r\nexport * from './lib/types/iCore.interface';\r\nexport * from './lib/types/iCore.types';\r\nexport * from './lib/types/opening-hours.interface';\r\nexport * from './lib/types/options.interface';\r\nexport * from './lib/types/photo.interface';\r\nexport * from './lib/types/place-review.interface';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}