{"version":3,"file":"novo-elements-elements-places.mjs","sources":["../../../projects/novo-elements/src/elements/places/places.service.ts","../../../projects/novo-elements/src/elements/places/places.component.ts","../../../projects/novo-elements/src/elements/places/places.module.ts","../../../projects/novo-elements/src/elements/places/novo-elements-elements-places.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { GlobalRef, LocalStorageService } from 'novo-elements/services';\n\n@Injectable()\nexport class GooglePlacesService {\n  constructor(\n    private _http: HttpClient,\n    @Inject(PLATFORM_ID) private platformId: Object,\n    private _global: GlobalRef,\n    private _localStorageService: LocalStorageService,\n  ) {}\n\n  getPredictions(url: string, query: string): Promise<any> {\n    return new Promise((resolve) => {\n      this._http.get(url + '?query=' + query).subscribe((data: any) => {\n        if (data) {\n          resolve(data);\n        } else {\n          resolve(false);\n        }\n      });\n    });\n  }\n\n  getLatLngDetail(url: string, lat: number, lng: number): Promise<any> {\n    return new Promise((resolve) => {\n      this._http.get(url + '?lat=' + lat + '&lng=' + lng).subscribe((data: any) => {\n        if (data) {\n          resolve(data);\n        } else {\n          resolve(false);\n        }\n      });\n    });\n  }\n\n  getPlaceDetails(url: string, placeId: string): Promise<any> {\n    return new Promise((resolve) => {\n      this._http.get(url + '?query=' + placeId).subscribe((data: any) => {\n        if (data) {\n          resolve(data);\n        } else {\n          resolve(false);\n        }\n      });\n    });\n  }\n\n  getGeoCurrentLocation(): Promise<any> {\n    return new Promise((resolve) => {\n      if (isPlatformBrowser(this.platformId)) {\n        const _window: any = this._global.nativeGlobal;\n        if (_window.navigator.geolocation) {\n          _window.navigator.geolocation.getCurrentPosition((pos) => {\n            const latlng: any = { lat: parseFloat(pos.coords.latitude + ''), lng: parseFloat(pos.coords.longitude + '') };\n            resolve(latlng);\n          });\n        } else {\n          resolve(false);\n        }\n      } else {\n        resolve(false);\n      }\n    });\n  }\n\n  getGeoLatLngDetail(latlng: any): Promise<any> {\n    return new Promise((resolve) => {\n      if (isPlatformBrowser(this.platformId)) {\n        const _window: any = this._global.nativeGlobal;\n        const geocoder: any = new _window.google.maps.Geocoder();\n        geocoder.geocode({ location: latlng }, (results, status) => {\n          if (status === 'OK') {\n            this.getGeoPlaceDetail(results[0].place_id).then((result) => {\n              if (result) {\n                resolve(result);\n              } else {\n                resolve(false);\n              }\n            });\n          } else {\n            resolve(false);\n          }\n        });\n      } else {\n        resolve(false);\n      }\n    });\n  }\n\n  getGeoPrediction(params: any): Promise<any> {\n    return new Promise((resolve) => {\n      if (isPlatformBrowser(this.platformId)) {\n        const _window: any = this._global.nativeGlobal;\n        const placesService: any = new _window.google.maps.places.AutocompleteService();\n        let queryInput: any = {};\n        const promiseArr: any = [];\n        if (params.countryRestriction.length) {\n          queryInput = {\n            input: params.query,\n            componentRestrictions: { country: params.countryRestriction },\n          };\n        } else {\n          queryInput = {\n            input: params.query,\n          };\n        }\n        if (params.geoLocation) {\n          queryInput.location = new _window.google.maps.LatLng(parseFloat(params.geoLocation[0]), parseFloat(params.geoLocation[1]));\n          queryInput.radius = params.radius;\n        }\n        if (params.geoTypes.length) {\n          for (let i: number = 0; i < params.geoTypes.length; i++) {\n            const _tempQuery: any = queryInput;\n            _tempQuery.types = new Array(params.geoTypes[i]);\n            promiseArr.push(this.geoPredictionCall(placesService, _tempQuery));\n          }\n        } else {\n          promiseArr.push(this.geoPredictionCall(placesService, queryInput));\n        }\n\n        Promise.all(promiseArr).then((values) => {\n          const val: any = values;\n          if (val.length > 1) {\n            let _tempArr: any = [];\n            for (let j: number = 0; j < val.length; j++) {\n              if (val[j] && val[j].length) {\n                _tempArr = _tempArr.concat(val[j]);\n              }\n            }\n            _tempArr = this.getUniqueResults(_tempArr);\n            resolve(_tempArr);\n          } else {\n            resolve(values[0]);\n          }\n        });\n      } else {\n        resolve(false);\n      }\n    });\n  }\n\n  async getGeoPlaceDetail(placeId: string): Promise<any> {\n    const placeDetail: any = await new Promise((resolve) => {\n      if (isPlatformBrowser(this.platformId)) {\n        const _window: any = this._global.nativeGlobal;\n        const placesService: any = new _window.google.maps.places.PlacesService(document.createElement('div'));\n        placesService.getDetails({ placeId }, (result: any) => {\n          if (result === null || result.length === 0) {\n            this.getGeoPaceDetailByReferance(result.referance).then((referanceData: any) => {\n              if (!referanceData) {\n                resolve(false);\n              } else {\n                resolve(referanceData);\n              }\n            });\n          } else {\n            resolve(result);\n          }\n        });\n      } else {\n        resolve(false);\n      }\n    });\n\n    if (placeDetail?.types?.includes('locality')) {\n      placeDetail.postal_codes = await this.getPostalCodes(placeDetail);\n    }\n\n    return placeDetail;\n  }\n\n  getGeoPaceDetailByReferance(referance: string): Promise<any> {\n    return new Promise((resolve) => {\n      if (isPlatformBrowser(this.platformId)) {\n        const _window: any = this._global.nativeGlobal;\n        const placesService: any = new _window.google.maps.places.PlacesService();\n        placesService.getDetails({ reference: referance }, (result: any, status: any) => {\n          if (status === _window.google.maps.places.PlacesServiceStatus.OK) {\n            resolve(result);\n          } else {\n            resolve(false);\n          }\n        });\n      } else {\n        resolve(false);\n      }\n    });\n  }\n\n  addRecentList(localStorageName: string, result: any, itemSavedLength: number): any {\n    this.getRecentList(localStorageName).then((data: any) => {\n      if (data) {\n        for (let i: number = 0; i < data.length; i++) {\n          if (data[i].description === result.description) {\n            data.splice(i, 1);\n            break;\n          }\n        }\n        data.unshift(result);\n        if (data.length > itemSavedLength) {\n          data.pop();\n        }\n        this._localStorageService.setItem(localStorageName, JSON.stringify(data));\n      }\n    });\n  }\n\n  getRecentList(localStorageName: string): Promise<any> {\n    return new Promise((resolve) => {\n      let value: any = this._localStorageService.getItem(localStorageName);\n      if (value) {\n        value = JSON.parse(value);\n      } else {\n        value = [];\n      }\n      resolve(value);\n    });\n  }\n\n  getPostalCodes(placeDetail: any): Promise<string> {\n    const _window: any = this._global.nativeGlobal;\n    const geocoder: any = new _window.google.maps.Geocoder();\n    return new Promise((resolve) => {\n      geocoder.geocode({ location: placeDetail.geometry.location }, (results, status) => {\n        if (status === 'OK' && results.length) {\n          resolve(\n            results.reduce(\n              (postalCodes: string[], result: any) => {\n                const postalCodeComponent = result.address_components.find(item => item.types.includes('postal_code'));\n                if (postalCodeComponent && !postalCodes.includes(postalCodeComponent.long_name)) {\n                  postalCodes.push(postalCodeComponent.long_name);\n                }\n                return postalCodes;\n              },\n              [],\n            ),\n          );\n        } else {\n          resolve(null);\n        }\n      });\n    });\n  }\n\n  private getUniqueResults(arr: any): any {\n    return Array.from(arr.reduce((m, t) => m.set(t.place_id, t), new Map()).values());\n  }\n\n  private geoPredictionCall(placesService: any, queryInput: any): Promise<any> {\n    const _window: any = this._global.nativeGlobal;\n    return new Promise((resolve) => {\n      placesService.getPlacePredictions(queryInput, (result: any, status: any) => {\n        if (status === _window.google.maps.places.PlacesServiceStatus.OK) {\n          resolve(result);\n        } else {\n          resolve(false);\n        }\n      });\n    });\n  }\n}\n","// NG2\nimport { isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Inject, Input, OnChanges, OnInit, Output, PLATFORM_ID } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BasePickerResults } from 'novo-elements/elements/picker';\nimport { GlobalRef } from 'novo-elements/services';\nimport { Key } from 'novo-elements/utils';\nimport { Observable } from 'rxjs';\nimport { GooglePlacesService } from './places.service';\n\nexport interface Settings {\n  geoPredictionServerUrl?: string;\n  geoLatLangServiceUrl?: string;\n  geoLocDetailServerUrl?: string;\n  geoCountryRestriction?: any;\n  geoTypes?: any;\n  geoLocation?: any;\n  geoRadius?: number;\n  serverResponseListHierarchy?: any;\n  serverResponseatLangHierarchy?: any;\n  serverResponseDetailHierarchy?: any;\n  resOnSearchButtonClickOnly?: boolean;\n  useGoogleGeoApi?: boolean;\n  inputPlaceholderText?: string;\n  inputString?: string;\n  showSearchButton?: boolean;\n  showRecentSearch?: boolean;\n  showCurrentLocation?: boolean;\n  recentStorageName?: string;\n  noOfRecentSearchSave?: number;\n  currentLocIconUrl?: string;\n  searchIconUrl?: string;\n  locationIconUrl?: string;\n}\n\n// Value accessor for the component (supports ngModel)\nconst PLACES_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => PlacesListComponent),\n  multi: true,\n};\n\n@Component({\n    selector: 'google-places-list',\n    providers: [PLACES_VALUE_ACCESSOR],\n    template: `\n    <novo-list direction=\"vertical\">\n      <novo-list-item *ngFor=\"let data of matches; let $index = index\" (click)=\"selectedListNode($event, $index)\" [ngClass]=\"{ active: data === activeMatch }\">\n        <item-header>\n          <item-avatar icon=\"location\"></item-avatar>\n          <item-title>{{ data.structured_formatting?.main_text ? data.structured_formatting.main_text : data.description }}</item-title>\n        </item-header>\n        <item-content>{{ data.structured_formatting?.secondary_text }}</item-content>\n      </novo-list-item>\n    </novo-list>\n  `,\n    styleUrls: ['./places.component.scss'],\n    standalone: false,\n})\nexport class PlacesListComponent extends BasePickerResults implements OnInit, OnChanges, ControlValueAccessor {\n  @Input()\n  userSettings: Settings;\n  @Output()\n  termChange: EventEmitter<any> = new EventEmitter<any>();\n  @Output()\n  select: EventEmitter<any> = new EventEmitter<any>();\n\n  public locationInput: string = '';\n  public gettingCurrentLocationFlag: boolean = false;\n  public dropdownOpen: boolean = false;\n  public recentDropdownOpen: boolean = false;\n  public isSettingsError: boolean = false;\n  public settingsErrorMsg: string = '';\n  public settings: Settings = {};\n  private moduleinit: boolean = false;\n  private selectedDataIndex: number = -1;\n  private recentSearchData: any = [];\n  private userSelectedOption: any = '';\n  private defaultSettings: Settings = {\n    geoPredictionServerUrl: '',\n    geoLatLangServiceUrl: '',\n    geoLocDetailServerUrl: '',\n    geoCountryRestriction: [],\n    geoTypes: [],\n    geoLocation: [],\n    geoRadius: 0,\n    serverResponseListHierarchy: [],\n    serverResponseatLangHierarchy: [],\n    serverResponseDetailHierarchy: [],\n    resOnSearchButtonClickOnly: false,\n    useGoogleGeoApi: true,\n    inputPlaceholderText: 'Enter Area Name',\n    inputString: '',\n    showSearchButton: true,\n    showRecentSearch: true,\n    showCurrentLocation: true,\n    recentStorageName: 'recentSearches',\n    noOfRecentSearchSave: 5,\n    currentLocIconUrl: '',\n    searchIconUrl: '',\n    locationIconUrl: '',\n  };\n\n  model: any;\n  onModelChange: Function = () => {};\n  onModelTouched: Function = () => {};\n\n  constructor(\n    @Inject(PLATFORM_ID) private platformId: Object,\n    private _elmRef: ElementRef,\n    private _global: GlobalRef,\n    private _googlePlacesService: GooglePlacesService,\n    private cdr: ChangeDetectorRef,\n  ) {\n    super(_elmRef, cdr);\n    this.config = {};\n  }\n\n  ngOnInit(): any {\n    if (!this.moduleinit) {\n      this.moduleInit();\n    }\n  }\n\n  ngOnChanges(): any {\n    this.moduleinit = true;\n    this.moduleInit();\n    this.searchinputCallback(null);\n  }\n\n  writeValue(model: any): void {\n    this.model = model;\n  }\n\n  registerOnChange(fn: Function): void {\n    this.onModelChange = fn;\n  }\n\n  registerOnTouched(fn: Function): void {\n    this.onModelTouched = fn;\n  }\n\n  // function called when click event happens in input box. (Binded with view)\n  searchinputClickCallback(event: any): any {\n    event.target.select();\n    this.searchinputCallback(event);\n  }\n\n  // function called when there is a change in input. (Binded with view)\n  searchinputCallback(event: any): any {\n    const inputVal: any = this.locationInput;\n    if (inputVal) {\n      this.getListQuery(inputVal);\n    } else {\n      this.matches = [];\n      if (this.userSelectedOption) {\n        this.userQuerySubmit('false');\n      }\n      this.userSelectedOption = '';\n      if (this.settings.showRecentSearch) {\n        this.showRecentSearch();\n      } else {\n        this.dropdownOpen = false;\n      }\n    }\n  }\n\n  // function to execute when user hover over autocomplete list. (binded with view)\n  activeListNode(index: number): any {\n    for (let i: number = 0; i < this.matches.length; i++) {\n      if (index === i) {\n        this.matches[i].active = true;\n        this.selectedDataIndex = index;\n      } else {\n        this.matches[i].active = false;\n      }\n    }\n  }\n\n  // function to execute when user selects a match from the autocomplete list. (binded with view)\n  selectedListNode(event: MouseEvent, index: number): any {\n    this.selectMatch(this.matches[index]);\n  }\n\n  // function to execute when user selects a match.\n  selectMatch(match: any): any {\n    this.dropdownOpen = false;\n    if (this.recentDropdownOpen) {\n      this.setRecentLocation(match);\n    } else {\n      this.getPlaceLocationInfo(match);\n    }\n  }\n\n  // function to close the autocomplete list when clicked outside. (binded with view)\n  closeAutocomplete(event: any): any {\n    if (!this._elmRef.nativeElement.contains(event.target)) {\n      this.selectedDataIndex = -1;\n      this.dropdownOpen = false;\n    }\n  }\n\n  // function to manually trigger the callback to parent component when clicked search button.\n  userQuerySubmit(selectedOption?: any): any {\n    const _userOption: any = selectedOption === 'false' ? '' : this.userSelectedOption;\n    if (_userOption) {\n      this.select.emit(this.userSelectedOption);\n    } else {\n      // this.select.emit(false);\n    }\n  }\n\n  // function to get user current location from the device.\n  currentLocationSelected(): any {\n    if (isPlatformBrowser(this.platformId)) {\n      this.gettingCurrentLocationFlag = true;\n      this.dropdownOpen = false;\n      this._googlePlacesService.getGeoCurrentLocation().then((result: any) => {\n        if (!result) {\n          this.gettingCurrentLocationFlag = false;\n        } else {\n          this.getCurrentLocationInfo(result);\n        }\n      });\n    }\n  }\n\n  // module initialization happens. function called by ngOninit and ngOnChange\n  private moduleInit(): any {\n    this.settings = this.setUserSettings();\n    // condition to check if Radius is set without location detail.\n    if (this.settings.geoRadius) {\n      if (this.settings.geoLocation.length !== 2) {\n        this.isSettingsError = true;\n        this.settingsErrorMsg =\n          this.settingsErrorMsg + 'Radius should be used with GeoLocation. Please use \"geoLocation\" key to set lat and lng. ';\n      }\n    }\n\n    // condition to check if lat and lng is set and radious is not set then it will set to 20,000KM by default\n    if (this.settings.geoLocation.length === 2 && !this.settings.geoRadius) {\n      this.settings.geoRadius = 20000000;\n    }\n    if (this.settings.showRecentSearch) {\n      this.getRecentLocations();\n    }\n    if (!this.settings.useGoogleGeoApi) {\n      if (!this.settings.geoPredictionServerUrl) {\n        this.isSettingsError = true;\n        this.settingsErrorMsg =\n          this.settingsErrorMsg + 'Prediction custom server url is not defined. Please use \"geoPredictionServerUrl\" key to set. ';\n      }\n      if (!this.settings.geoLatLangServiceUrl) {\n        this.isSettingsError = true;\n        this.settingsErrorMsg =\n          this.settingsErrorMsg + 'Latitude and longitude custom server url is not defined. Please use \"geoLatLangServiceUrl\" key to set. ';\n      }\n      if (!this.settings.geoLocDetailServerUrl) {\n        this.isSettingsError = true;\n        this.settingsErrorMsg =\n          this.settingsErrorMsg + 'Location detail custom server url is not defined. Please use \"geoLocDetailServerUrl\" key to set. ';\n      }\n    }\n    this.locationInput = this.term;\n  }\n\n  // function to process the search query when pressed enter.\n  private processSearchQuery(): any {\n    if (this.matches.length) {\n      if (this.selectedDataIndex > -1) {\n        this.selectedListNode(null, this.selectedDataIndex);\n      } else {\n        this.selectedListNode(null, 0);\n      }\n    }\n  }\n\n  // function to set user settings if it is available.\n  private setUserSettings(): Settings {\n    const _tempObj: any = {};\n    if (this.userSettings && typeof this.userSettings === 'object') {\n      const keys: string[] = Object.keys(this.defaultSettings);\n      for (const value of keys) {\n        _tempObj[value] = this.userSettings[value] !== undefined ? this.userSettings[value] : this.defaultSettings[value];\n      }\n      return _tempObj;\n    } else {\n      return this.defaultSettings;\n    }\n  }\n\n  // function to get the autocomplete list based on user input.\n  private getListQuery(value: string): any {\n    this.recentDropdownOpen = false;\n    if (this.settings.useGoogleGeoApi) {\n      const _tempParams: any = {\n        query: value,\n        countryRestriction: this.settings.geoCountryRestriction,\n        geoTypes: this.settings.geoTypes,\n      };\n      if (this.settings.geoLocation.length === 2) {\n        _tempParams.geoLocation = this.settings.geoLocation;\n        _tempParams.radius = this.settings.geoRadius;\n      }\n      this._googlePlacesService.getGeoPrediction(_tempParams).then((result) => {\n        this.updateListItem(result);\n      });\n    } else {\n      this._googlePlacesService.getPredictions(this.settings.geoPredictionServerUrl, value).then((result) => {\n        result = this.extractServerList(this.settings.serverResponseListHierarchy, result);\n        this.updateListItem(result);\n      });\n    }\n  }\n\n  // function to extratc custom data which is send by the server.\n  private extractServerList(arrayList: any, data: any): any {\n    if (arrayList.length) {\n      let _tempData: any = data;\n      for (const key of arrayList) {\n        _tempData = _tempData[key];\n      }\n      return _tempData;\n    } else {\n      return data;\n    }\n  }\n\n  // function to update the predicted list.\n  private updateListItem(listData: any): any {\n    this.matches = listData ? listData : [];\n    this.dropdownOpen = true;\n    this.cdr.detectChanges();\n  }\n\n  // function to show the recent search result.\n  private showRecentSearch(): any {\n    this.recentDropdownOpen = true;\n    this.dropdownOpen = true;\n    this._googlePlacesService.getRecentList(this.settings.recentStorageName).then((result: any) => {\n      if (result) {\n        this.matches = result;\n      } else {\n        this.matches = [];\n      }\n    });\n  }\n\n  // function to execute to get location detail based on latitude and longitude.\n  private getCurrentLocationInfo(latlng: any): any {\n    if (this.settings.useGoogleGeoApi) {\n      this._googlePlacesService.getGeoLatLngDetail(latlng).then((result: any) => {\n        if (result) {\n          this.setRecentLocation(result);\n        }\n        this.gettingCurrentLocationFlag = false;\n      });\n    } else {\n      this._googlePlacesService.getLatLngDetail(this.settings.geoLatLangServiceUrl, latlng.lat, latlng.lng).then((result: any) => {\n        if (result) {\n          result = this.extractServerList(this.settings.serverResponseatLangHierarchy, result);\n          this.setRecentLocation(result);\n        }\n        this.gettingCurrentLocationFlag = false;\n      });\n    }\n  }\n\n  // function to retrieve the location info based on google place id.\n  private getPlaceLocationInfo(selectedData: any): any {\n    if (this.settings.useGoogleGeoApi) {\n      this._googlePlacesService.getGeoPlaceDetail(selectedData.place_id).then((data: any) => {\n        if (data) {\n          this.setRecentLocation(data);\n        }\n      });\n    } else {\n      this._googlePlacesService.getPlaceDetails(this.settings.geoLocDetailServerUrl, selectedData.place_id).then((result: any) => {\n        if (result) {\n          result = this.extractServerList(this.settings.serverResponseDetailHierarchy, result);\n          this.setRecentLocation(result);\n        }\n      });\n    }\n  }\n\n  // function to store the selected user search in the localstorage.\n  private setRecentLocation(data: any): any {\n    data = JSON.parse(JSON.stringify(data));\n    data.description = data.description ? data.description : data.formatted_address;\n    data.active = false;\n    this.selectedDataIndex = -1;\n    this.locationInput = data.description;\n    if (this.settings.showRecentSearch) {\n      this._googlePlacesService.addRecentList(this.settings.recentStorageName, data, this.settings.noOfRecentSearchSave);\n      this.getRecentLocations();\n    }\n    this.userSelectedOption = data;\n    // below code will execute only when user press enter or select any option selection and it emit a callback to the parent component.\n    if (!this.settings.resOnSearchButtonClickOnly) {\n      this.select.emit(data);\n      this.termChange.emit(data);\n    }\n  }\n\n  // function to retrive the stored recent user search from the localstorage.\n  private getRecentLocations(): any {\n    this._googlePlacesService.getRecentList(this.settings.recentStorageName).then((data: any) => {\n      this.recentSearchData = data && data.length ? data : [];\n    });\n  }\n\n  onKeyDown(event: KeyboardEvent) {\n    if (this.dropdownOpen) {\n      if (event.key === Key.ArrowUp) {\n        this.prevActiveMatch();\n        return;\n      }\n      if (event.key === Key.ArrowDown) {\n        this.nextActiveMatch();\n        return;\n      }\n      if (event.key === Key.Enter) {\n        this.selectMatch(this.activeMatch);\n        return;\n      }\n    }\n  }\n\n  search(term, mode?): Observable<any> {\n    // Disable the base search term functionality here since it is handled by the places picker separately\n    return new Observable();\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NovoListModule } from 'novo-elements/elements/list';\nimport { PlacesListComponent } from './places.component';\nimport { GooglePlacesService } from './places.service';\n\n@NgModule({ declarations: [PlacesListComponent],\n    exports: [PlacesListComponent], imports: [CommonModule, FormsModule, NovoListModule], providers: [GooglePlacesService, provideHttpClient(withInterceptorsFromDi())] })\nexport class GooglePlacesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.GooglePlacesService"],"mappings":"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"}