{"version":3,"file":"acpaas-ui-widgets-ngx-location-picker.mjs","sources":["../../../projects/ngx-location-picker/src/lib/services/ngx-location-picker.helper.ts","../../../projects/ngx-location-picker/src/lib/services/ngx-location-picker.service.ts","../../../projects/ngx-location-picker/src/lib/directives/highlight-search.directive.ts","../../../projects/ngx-location-picker/src/lib/components/ngx-location-picker.component.ts","../../../projects/ngx-location-picker/src/lib/components/ngx-location-picker.component.html","../../../projects/ngx-location-picker/src/lib/types/address.model.ts","../../../projects/ngx-location-picker/src/lib/types/cascading-rules.model.ts","../../../projects/ngx-location-picker/src/lib/types/leaflet-tile-layer.model.ts","../../../projects/ngx-location-picker/src/lib/map.provider.ts","../../../projects/ngx-location-picker/src/lib/ngx-location-picker.module.ts","../../../projects/ngx-location-picker/src/public-api.ts","../../../projects/ngx-location-picker/src/acpaas-ui-widgets-ngx-location-picker.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\nimport { HttpParams } from \"@angular/common/http\";\nimport { LambertModel, LocationModel } from \"../types/location.model\";\nimport { AddressQueryModel } from \"../types/address-query.model\";\nimport proj4 from \"proj4\";\nimport {AddressModel, LatLngModel} from \"../types/address.model\";\nimport { CoordinateModel } from \"../types/coordinate.model\";\n\n@Injectable({\n  providedIn: \"root\",\n})\n\n/**\n * NgxLocationPickerHelper\n * Provide helper functions\n */\nexport class NgxLocationPickerHelper {\n  /**\n   * NgxLocationPickerHelper constructor\n   */\n  constructor() {}\n\n  // These coordinates respresents border of Belgium\n  minX = 49.4;\n  maxX = 51.6;\n  minY = 2.3;\n  maxY = 6.45;\n\n  /**\n   * Converts a query object to HttpParams.\n   *\n   * @param query (the object containing a set of parameters)\n   *\n   * @return HttpParams\n   */\n  toHttpParams(query: any): HttpParams {\n    const strQuery = this.queryObjectToStringObject(query);\n    let params = new HttpParams();\n    Object.keys(strQuery).forEach((key) => {\n      if (strQuery[key]) {\n        params = params.set(key, strQuery[key]);\n      }\n    });\n    return params;\n  }\n\n  /**\n   * Converts a query object to a query string\n   *\n   * @param obj (the object containing a set of parameters)\n   *\n   * @return any\n   */\n  private queryObjectToStringObject(obj: any): any {\n    const retObj = {};\n    Object.keys(obj).forEach((key) => {\n      const queryValue = obj[key];\n      if (typeof queryValue === \"string\") {\n        retObj[key] = queryValue;\n      } else if (Array.isArray(queryValue) && queryValue.length > 0) {\n        const strArr: string[] = [];\n        for (const [index, value] of queryValue.entries()) {\n          strArr.push(queryValue[index].toString());\n        }\n        retObj[key] = strArr;\n      } else {\n        retObj[key] =\n          queryValue !== null && queryValue !== undefined\n            ? queryValue.toString()\n            : \"\";\n      }\n    });\n    return retObj;\n  }\n\n  /**\n   * Normalize search value\n   *\n   * @return string\n   */\n  normalizeSearchValue(value: string) {\n    if (!this.isCoordinate(value)) {\n      // Remove malicious characters\n      const maliciousCharacters = /[\\*\\%\\;\\|\\<\\>\\{\\}\\[\\]\\/\\\\\\n\\r\\?\\.]/g;\n      value = value.replace(maliciousCharacters, \"\");\n\n      const hasBrackets = value.match(/\\(.*?\\)/);\n      if (hasBrackets && hasBrackets.length) return value.replace(` ${hasBrackets}`, \"\");\n    }\n    return value;\n  }\n\n  /**\n   * Determines if the given query input resembles an address or not.\n   *\n   * @return boolean\n   */\n  isAddress(query: string, locationKeywords: string[]): boolean {\n    if (!query || query.trim().length === 0) return false;\n\n    const lowerQuery = query.toLowerCase();\n\n    // Check if it contains a known location keyword explicitly (exclude such cases)\n    const lowerLocationKeywords = locationKeywords.map(k => k.toLowerCase());\n    if (lowerLocationKeywords.some(keyword => lowerQuery.includes(keyword))) {\n      return false;\n    }\n\n    // Ensure the query matches: Street name (1 or more words) + house number\n    const addressPattern = /^\\b([\\p{L}'\\-]{2,}(?:\\s+[\\p{L}'\\-]{2,})*)\\s+(\\d+[a-zA-Z]{0,5})(?:,\\s*(\\d{1,4}|\\d{4,5}(?:\\s+[\\p{L}\\s]+)?|[\\p{L}\\s]+)?)?\\s*,?\\s*$/iu;\n\n    // Match only if there is at least one street name and a house number\n    return addressPattern.test(query);\n  }\n\n  /**\n   * Determines if the given query input resembles coordinate pairs\n   *\n   * @return boolean\n   */\n  isCoordinate(query: string): boolean {\n    const coordinateParts: Array<string> | null =\n      query && query.trim().length > 0 ? query.split(\",\") : null;\n\n    if (coordinateParts.length === 2) {\n      if (\n        !isNaN(Number(coordinateParts[0])) &&\n        !isNaN(Number(coordinateParts[1]))\n      ) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Determines if the given object matches LocationModel interface\n   *\n   *\n   */\n  isLocationModel(object: any): object is LocationModel {\n    return \"streetName\" in object;\n  }\n\n  /**\n   * Determines if the given query input resembles alternative coordinate pairs ex: 51,205729 4,388629\n   *\n   * @return boolean\n   */\n  isAlternativeCoordinateNotation(query: string): boolean {\n    const coordinateParts: Array<string> | null =\n      query && query.trim().length > 0 ? query.split(\" \") : null;\n\n    if (coordinateParts.length === 2) {\n      if (\n        !isNaN(Number(coordinateParts[0].replace(\",\", \".\"))) &&\n        !isNaN(Number(coordinateParts[1].replace(\",\", \".\")))\n      ) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  convertAlternativeCoordinateToNormalNotation(query: string): string {\n    const commaChar = /\\,/gi;\n    const spaceChar = / /gi;\n\n    return query.replace(commaChar, \".\").replace(spaceChar, \",\");\n  }\n\n  /**\n   * Splits the location query in street name and house number and checks for streetnameid.\n   *\n   * @return streetAndNumber\n   */\n  buildAddressQuery(\n    query: string,\n    selectedLocation: LocationModel | AddressModel | CoordinateModel,\n    onlyAntwerp: boolean,\n    countryCodes: string[],\n    buffer?: number,\n    coordinateSearch?: LatLngModel,\n    streetIds?: number[],\n  ): AddressQueryModel {\n    const streetAndNumber: AddressQueryModel = {\n      streetname: \"\",\n      streetids: streetIds ?? [],\n      housenumber: \"\",\n      postcode: \"\",\n      place: \"\",\n      onlyAntwerp: onlyAntwerp,\n      countries: countryCodes,\n      buffer: buffer,\n      xcoord: coordinateSearch?.lat,\n      ycoord: coordinateSearch?.lng\n    };\n\n    const allParts: Array<string> = query && query.trim().length > 0 ? query.split(\",\") : null;\n\n    let postcodeAndMunicipalityParts: Array<string> = null;\n    let addressParts: Array<string> = null;\n\n    if (allParts){\n      addressParts = allParts[0].split(\" \");\n      if (allParts.length == 2){\n        postcodeAndMunicipalityParts = allParts[1].split(\" \");\n      }\n    }\n\n    if (addressParts) {\n      let foundHouseNumber = false;\n\n      addressParts.map((part: string, index: number): void => {\n        const isNumber = /^[0-9]/.test(part);\n        const isHouseNumberPart = /[0-9]\\w?$/.test(part);\n\n        // Check if we found the house number\n        if (isNumber && !foundHouseNumber) {\n          streetAndNumber.housenumber = part;\n          foundHouseNumber = true;\n        } else if (foundHouseNumber) {\n          // Continue building the house number if still adding\n          streetAndNumber.housenumber += part;\n        } else {\n          // Otherwise, treat it as part of the street name\n          if (streetAndNumber.streetname) {\n            streetAndNumber.streetname += \" \";\n          }\n          streetAndNumber.streetname += part;\n        }\n      });\n\n      streetAndNumber.streetname = streetAndNumber.streetname\n        .trim()\n        .replace(/\\s+\\([a-z\\s\\,]+\\)$/gi, \"\");\n\n      if (/[a-z]\\d*$/.test(streetAndNumber.streetname)) {\n        streetAndNumber.streetname = streetAndNumber.streetname.replace(\n          /[0-9]*$/g,\n          \"\"\n        );\n      }\n\n      // Clean up street name\n      streetAndNumber.streetname = streetAndNumber.streetname\n        .trim()\n        .replace(/\\s+\\([a-z\\s\\,]+\\)$/gi, \"\");\n\n      // Edge case: Remove numbers mistakenly left in street name\n      if (/[a-z]\\d*$/.test(streetAndNumber.streetname)) {\n        streetAndNumber.streetname = streetAndNumber.streetname.replace(/[0-9]*$/g, \"\");\n      }\n\n      streetAndNumber.housenumber = streetAndNumber.housenumber.trim();\n\n      // The user first chooses a street and can then add a house number. The address is looked up based on the streetnameid and house number.\n      // The combination of a street name id and a house number are unique to Antwerp.\n      // Including a street name has no added value if the housenumer and streetnameid are known\n      if(streetAndNumber.onlyAntwerp && streetAndNumber.streetids.length !== 0 && streetAndNumber.housenumber) streetAndNumber.streetname = null;\n    }\n\n    if (postcodeAndMunicipalityParts){\n      postcodeAndMunicipalityParts = postcodeAndMunicipalityParts.filter(p => p && p.trim().length > 0);\n\n      postcodeAndMunicipalityParts.forEach((part: string): void => {\n        const trimmedPart:string = part.trim();\n\n        if (/^\\d{1,4}$/.test(trimmedPart)) {\n          streetAndNumber.postcode = trimmedPart;\n        }\n        else {\n          // Assume it's part of the municipality/place name\n          if (streetAndNumber.place) {\n            streetAndNumber.place += \" \";\n          }\n          streetAndNumber.place += trimmedPart;\n        }\n      });\n\n      streetAndNumber.place = streetAndNumber.place?.trim();\n    }\n\n    // if previous selected location is of type LocationModel and location has streetid\n    //  ==> check if name corresponds with the streetname to use the streetnameid\n    if (\n      selectedLocation &&\n      this.isLocationModel(selectedLocation) &&\n      selectedLocation.streetNameId\n    ) {\n      if (\n        selectedLocation.streetName.toUpperCase() ===\n        streetAndNumber.streetname.toUpperCase()\n      ) {\n        streetAndNumber.streetname = null;\n        streetAndNumber.streetids.push(selectedLocation.streetNameId);\n      }\n    }\n\n    return streetAndNumber;\n  }\n\n  /**\n   * Splits the location query in X/Y coordinate.\n   *\n   * @return coordinate\n   */\n  extractXYCoord(query: string): LambertModel {\n    const coordinateParts: Array<string> | null =\n      query && query.trim().length > 0 ? query.split(\",\") : null;\n    const coordinate: LambertModel = {\n      x: Number(coordinateParts[0]),\n      y: Number(coordinateParts[1]),\n    };\n\n    return coordinate;\n  }\n\n  /**\n   * Checks wether given coordinates are WGS84 (response true) or Lambert (response false)\n   *\n   * @param x given x coordinate\n   * @param y given y coordinate\n   *\n   * @return isWgs84\n   */\n  isWgs84Coordinates(x?: number, y?: number): boolean {\n    if (x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY) {\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Converts lambertcoordinates to wgs84 coordinate\n   *\n   * @param lambertCoordinate lambertmodel coordinates\n   *\n   * @return wgs84coordinates\n   */\n  convertLambertToWgs84Coordinates(\n    lambertCoordinate: LambertModel\n  ): LambertModel {\n    // eslint-disable-next-line max-len\n    const lambertProj =\n      \"+proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=-106.869,52.2978,-103.724,0.3366,-0.457,1.8422,-1.2747 +units=m +no_defs\";\n    const result = proj4(lambertProj, \"WGS84\", [\n      lambertCoordinate.x,\n      lambertCoordinate.y,\n    ]);\n    const coordinates: LambertModel = {\n      x:\n        result[0] >= this.minX && result[0] <= this.maxX\n          ? result[0]\n          : result[1] >= this.minX && result[1] <= this.maxX\n          ? result[1]\n          : 0,\n      y:\n        result[0] >= this.minY && result[0] <= this.maxY\n          ? result[0]\n          : result[1] >= this.minY && result[1] <= this.maxY\n          ? result[1]\n          : 0,\n    };\n    return coordinates;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { NgxLocationPickerHelper } from './ngx-location-picker.helper';\nimport { LambertModel, LocationModel } from '../types/location.model';\nimport { AddressQueryModel } from '../types/address-query.model';\nimport { LocationQueryModel } from '../types/location-query.model';\nimport { AddressIdQueryModel } from '../types/address-id-query.model';\nimport { CoordinateQueryModel } from '../types/coordinate-query.model';\nimport { AddressModel } from '../types/address.model';\nimport { CoordinateModel, CoordinateSearchResponse } from '../types/coordinate.model';\nimport { DelegateSearchModel } from '../types/delegate-search.model';\nimport { PagedResult } from '../types/pagedresult.model'\n\n@Injectable({\n  providedIn: 'root'\n})\n\n/**\n * NgxLocationPickerService\n * Provide functions for handling location or address searches\n */\nexport class NgxLocationPickerService {\n\n  private locationPickerApi = '';\n\n  /**\n   * NgxLocationPickerService constructor\n   *\n   * @param httpClient (httpClient used for making requests to the api)\n   * @param locationPickerHelper (Helper functions class)\n   */\n  constructor(\n    private httpClient: HttpClient,\n    private locationPickerHelper: NgxLocationPickerHelper\n  ) {\n  }\n\n  /**\n   * Main search function. Determines which action to undertake based on the provided search string.\n   *\n   * @param delegateSearch (the delegateSearch model)\n   *\n   * @return Observable<LocationModel[] | AddressModel[] | CoordinateModel[]>\n   */\n  delegateSearch(delegateSearch: DelegateSearchModel): Observable<LocationModel[] | AddressModel[] | CoordinateModel[]> {\n    delegateSearch.prioritizelayer = delegateSearch.prioritizelayer ? delegateSearch.prioritizelayer : ['straatnaam'];\n    this.locationPickerApi = delegateSearch.baseUrl;\n\n    if (this.locationPickerHelper.isCoordinate(delegateSearch.search)) {\n      const coordinate: LambertModel = this.locationPickerHelper.extractXYCoord(delegateSearch.search);\n      const requestQuery: CoordinateQueryModel = {\n        xcoord: coordinate.x,\n        ycoord: coordinate.y,\n        returnsingle: delegateSearch.cascadingCoordinateReturnSingle,\n        totalresults: delegateSearch.cascadingCoordinateLimit,\n        cascadingRules: delegateSearch.cascadingCoordinateRules,\n        cascadingGuid: delegateSearch.cascadingCoordinateGuid,\n        buffer: delegateSearch.bufferSearch,\n      };\n\n      return this.searchLocationsByCoordinates(requestQuery);\n    } else if (this.locationPickerHelper.isAddress(delegateSearch.search, delegateSearch.locationKeywords)) {\n      const addressQuery: AddressQueryModel = this.locationPickerHelper.buildAddressQuery(\n        delegateSearch.search,\n        delegateSearch.selectedLocation,\n        delegateSearch.onlyAntwerp,\n        delegateSearch.countryCodes,\n        delegateSearch.bufferSearch,\n        delegateSearch.coordinateSearch,\n        delegateSearch?.selectedLocation && (delegateSearch?.selectedLocation as LocationModel)?.streetNameId ? [(delegateSearch?.selectedLocation as LocationModel)?.streetNameId] : delegateSearch.selectedLocation && (delegateSearch?.selectedLocation as AddressModel)?.street?.streetNameId ? [(delegateSearch?.selectedLocation as AddressModel)?.street?.streetNameId] : []\n      );\n      if (delegateSearch.searchStreetNameForAddress) {\n        const locationQuery: LocationQueryModel = {\n          layers: ['straatnaam'],\n          pagesize: delegateSearch.limit,\n          search: addressQuery.streetname,\n          prioritizelayer: delegateSearch.prioritizelayer,\n          sort: delegateSearch.sort,\n          onlyAntwerp: delegateSearch.onlyAntwerp,\n          countries: delegateSearch.countryCodes,\n          buffer: delegateSearch.bufferSearch,\n          xcoord: delegateSearch.coordinateSearch?.lat,\n          ycoord: delegateSearch.coordinateSearch?.lng,\n        };\n        return this.searchLocations(locationQuery);\n      } else {\n        return this.searchAddresses(addressQuery);\n      }\n    } else {\n      const locationQuery: LocationQueryModel = {\n        layers: delegateSearch.layers,\n        pagesize: delegateSearch.limit,\n        search: delegateSearch.search,\n        prioritizelayer: delegateSearch.prioritizelayer,\n        sort: delegateSearch.sort,\n        onlyAntwerp: delegateSearch.onlyAntwerp,\n        countries: delegateSearch.countryCodes,\n        buffer: delegateSearch.bufferSearch,\n        xcoord: delegateSearch.coordinateSearch?.lat,\n        ycoord: delegateSearch.coordinateSearch?.lng,\n      };\n\n      return this.searchLocations(locationQuery);\n    }\n  }\n\n  /**\n   * Returns a list of layers present in elastic.\n   *\n   * @return Observable<LayerModel[]>\n   */\n  getLayers(): Observable<string[]> {\n    return this.httpClient\n      .get<PagedResult<'layers', string>>(`${this.locationPickerApi}/layers`)\n      .pipe(map((pagedResult: PagedResult<'layers', string>) => pagedResult._embedded.layers));\n  }\n\n  /**\n   * Search locations by user input\n   *\n   * @param query (the location to look for)\n   *\n   * @return Observable<LocationModel[]>\n   */\n  private searchLocations(query: LocationQueryModel): Observable<LocationModel[]> {\n    const parameters = this.locationPickerHelper.toHttpParams(query);\n\n    return this.httpClient\n      .get<PagedResult<'locations', LocationModel>>(`${this.locationPickerApi}/locations`, { params: parameters })\n      .pipe(map((pagedResult: PagedResult<'locations', LocationModel>) => pagedResult._embedded.locations));\n  }\n\n  /**\n   * Search addresses based on street name and house number\n   *\n   * @param query (the address to look for, consists of a street name and house number)\n   *\n   * @return Observable<AddressModel[]>\n   */\n  private searchAddresses(query: AddressQueryModel): Observable<AddressModel[]> {\n    const parameters = this.locationPickerHelper.toHttpParams(query);\n\n    return this.httpClient\n      .get<PagedResult<'addresses', AddressModel>>(`${this.locationPickerApi}/addresses`, { params: parameters })\n      .pipe(map((pagedResult: PagedResult<'addresses', AddressModel>) => pagedResult._embedded.addresses));\n  }\n\n  /**\n   * Get an address by id\n   *\n   * @param query (the address id to get)\n   *\n   * @return Observable<AddressModel[]>\n   */\n  private searchAddressById(query: AddressIdQueryModel): Observable<AddressModel[]> {\n    const parameters = this.locationPickerHelper.toHttpParams(query);\n\n    return this.httpClient.get<AddressModel[]>(`${this.locationPickerApi}/addresses/${query.id}`, { params: parameters });\n  }\n\n  /**\n   * Search locations based on a set of coordinates\n   *\n   * @param query (search query containing coordinates and other parameters)\n   *\n   * @return Observable<CoordinateModel[]>\n   */\n  private searchLocationsByCoordinates(\n    query: CoordinateQueryModel\n  ): Observable<CoordinateModel[]> {\n    return this.httpClient\n    .post<CoordinateSearchResponse>(`${this.locationPickerApi}/coordinates/search`,\n      query)\n      .pipe(map((result: CoordinateSearchResponse) => result.results));\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'highlight'\n})\n\nexport class HighlightSearchDirective implements PipeTransform {\n\n  transform(value: any, args: any): any {\n    if (!args) {\n      return value;\n    }\n\n    try {\n      const regEx = new RegExp(args, 'ig');\n      return value.replace(regEx, (match) => `<strong>${match}</strong>`);\n    } catch (e) {\n      // We do nothing.\n    }\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n  ViewChild,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport {\n  LocationViewerMapService,\n  LocationViewerMap,\n  SupportingLayerOptions,\n  OperationalLayerOptions,\n  FilterLayerOptions,\n  GeofeatureDetail,\n  OperationalMarker,\n  NgxLocationViewerComponent,\n} from \"@acpaas-ui-widgets/ngx-location-viewer\";\nimport { debounceTime, distinctUntilChanged } from \"rxjs/operators\";\nimport { Subject } from \"rxjs\";\n\nimport { NgxLocationPickerService } from \"../services/ngx-location-picker.service\";\nimport { FeatureLayerModel } from \"../types/feature-layer.model\";\nimport { LambertModel, LocationModel } from \"../types/location.model\";\nimport { AddressModel, LatLngModel } from \"../types/address.model\";\nimport { CoordinateModel } from \"../types/coordinate.model\";\nimport { NotificationModel } from \"../types/notification.model\";\nimport { NgxLocationPickerHelper } from \"../services/ngx-location-picker.helper\";\nimport { LeafletTileLayerModel } from \"../types/leaflet-tile-layer.model\";\nimport { CascadingCoordinateRulesModel } from \"../types/cascading-rules.model\";\nimport { InitialLocationModel } from \"../types/initial-location.model\";\nimport { DelegateSearchModel } from \"../types/delegate-search.model\";\nimport { TrackingOptions } from \"../types/tracking-options.model\";\nimport { LatLngExpression } from \"leaflet\";\n\n@Component({\n  selector: \"aui-location-picker\",\n  templateUrl: \"./ngx-location-picker.component.html\",\n  styleUrls: [\"./ngx-location-picker.component.scss\"],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NgxLocationPickerComponent),\n      multi: true,\n    },\n  ],\n})\nexport class NgxLocationPickerComponent\n  implements OnInit, OnDestroy, ControlValueAccessor {\n  /* Url to the backend-for-frontend (bff) Should function as pass through to the Location Picker API. */\n  @Input() baseUrl;\n  /* The default zoom level on map load. */\n  @Input() defaultZoom = 14;\n  /**\n   *  The zoom level when a location is selected.\n   *  If null the zoomlevel won't change after location selection.\n   */\n  @Input() onSelectZoom? = 16;\n  /* The zoom level will change after location selected (to fit selected geometry). */\n  @Input() changeZoomLevelOnLocationSelect = false;\n  /* The initial map center on load. */\n  @Input() mapCenter: LatLngExpression = [51.215, 4.425];\n  /* Show a sidebar next to the map leaflet. A sidebar can contain any additional info you like. */\n  @Input() hasSidebar = false;\n  /* Show or hide the map. */\n  @Input() showMap = true;\n  /* Toggle the clear button */\n  @Input() showClearInputButton = true;\n  /**\n   * Add layers to show on the map. eg: A-card terminals, Velo stations, ...\n   * A single featureLayer consists of:\n   *\n   * url: the url to the mapServer containing the features to be shown on the map.\n   * icon: the marker to use to show featureLayer locations.\n   *\n   * An icon should include: Streamline icon class, the icon color (default: #0064B) and the icon size (default: 40px)\n   * see: FeatureLayerIconModel\n   */\n  @Input() featureLayers: FeatureLayerModel[] = [];\n  /* The input field placeholder text. */\n  @Input() placeholder = \"Zoek een locatie…\";\n  /* Label to use when no results were found. */\n  @Input() noResultsLabel = \"Er werd geen gekende locatie gevonden.\";\n  /* Label to use for \"use selected coordinates option\" */\n  @Input() defaultOptionLabel = \"Gebruik gekozen coördinaat\";\n  /* Aria label for clear input button. */\n  @Input() clearInputAriaLabel = \"Tekstveld leegmaken\";\n  /* Aria label for picking a location on the map */\n  @Input() locationPickAriaLabel = \"Kies een locatie op de map\";\n  /* Aria label for zooming in */\n  @Input() zoomInAriaLabel = \"Zoom in\";\n  /* Aria label for zooming out  */\n  @Input() zoomOutAriaLabel = \"Zoom out\";\n  /* Aria label for text input */\n  @Input() textInputAriaLabel = \"Locaties zoeken op basis van zoekterm\";\n  /* Aria label for locate me button */\n  @Input() locateMeAriaLabel = \"Gebruik mijn locatie\";\n  /* Aria label for locate me button when fetching */\n  @Input() locatingAriaLabel = \"Locatie bepalen\";\n  /* Locate me error notification texts */\n  @Input() locateMeNotSupportedNotification =\n    \"Locatiebepaling wordt niet ondersteund op dit toestel.\";\n  @Input() locateMeNotAllowedNotification =\n    \"Gelieve toegang tot je locatie toe te staan.\";\n  @Input() locateMeUnavailableNotification =\n    \"Je locatie kon niet worden bepaald.\";\n  @Input() locateMeTimeoutNotification =\n    \"Het duurde te lang om je locatie te bepalen.\";\n  @Input() locateMeUnknownNotification =\n    \"Er trad een onbekende fout op bij het bepalen van je locatie.\";\n  /* No/invalid coordinate error notification text */\n  @Input() coordinateErrorNotification =\n    \"Locatie kan niet op de map getoond worden.\";\n  /* Zoom info notification text */\n  @Input() zoomInfoNotification =\n    \"Gebruik de Shift toets om te zoomen door te scrollen.\";\n  /* Default tile layer button label */\n  @Input() defaultTileLayerLabel = \"Kaart\";\n  /* Custom leaflet tile layer, if provided, shows actions on the leaflet to toggle between default and custom tile layer. */\n  @Input() tileLayer: LeafletTileLayerModel;\n  /* Sets the LocationPicker up to accept Vector based layer, instead of Raster based (default Raster based). */\n  @Input() tileLayerIsVectorBased: boolean = false;\n  /* Search input length requirement before triggering a search. */\n  @Input() minInputLength = 2;\n  /* The amount of results to return */\n  @Input() locationsLimit = 5;\n  /* The layers to search locations for, 'all' to search in all the layers, 'none' to disable location search */\n  @Input() locationLayers = [\"straatnaam\"];\n  /**\n   * Prioritize specific layers, boosts results from given layers to the top of the found locations.\n   * The order of the values in the array determines the priority. Overrides sortBy.\n   */\n  @Input() prioritizeLayers = [\"straatnaam\"];\n  /* Sort locations by certain key. */\n  @Input() sortBy = \"\";\n  /* Search locations and addresses inside Antwerp otherwise will search in provided countries ==> countryCodes */\n  @Input() onlyAntwerp = true;\n  /* Search locations and addresses in provided country codes if 'onlyAntwerp' is false */\n  @Input() countryCodes = [\"be\", \"nl\", \"lu\"];\n  /* The buffer that will be used when searching for locations and addresses in km. (by default no buffer is used)*/\n  @Input() bufferSearch?: number;\n  /* This coordinate will be used as the center point of the buffer search area for locations and addresses. (by default no coordinateSearch is used)*/\n  @Input() coordinateSearch?: LatLngModel;\n  /* Use geolocation when the component finished loading */\n  @Input() locateUserOnInit = false;\n  /* Set time to wait after user stops typing before triggering a search */\n  @Input() debounceTime = 400;\n  /* whether or not to return a single cascading result */\n  @Input() cascadingCoordinateReturnSingle = true;\n  /* Limit total cascading result, useful when returnSingle is false */\n  @Input() cascadingCoordinateLimit = 10;\n  /* Cascading configuration for doing reverse lookups by coordinates\n  Will NOT be used if a valid and matching cascadingCoordinateGuid is given */\n  @Input() cascadingCoordinateRules: CascadingCoordinateRulesModel[] = [];\n  /* Cascading configuration for doing reverse lookups by coordinates\n  Retrieves the most up to date cascading rules by GUID, it overwrites the cascadingCoordinateRules input */\n  @Input() cascadingCoordinateGuid: string;\n  /* Input params to pass through to location viewer */\n  /* Geo API */\n  @Input() geoApiBaseUrl: string;\n  /* Shows layermangement inside the sidebar. Layermanagement is used to add or remove featurelayers. */\n  @Input() showLayerManagement = false;\n  /* Show selection tools */\n  @Input() showSelectionTools = false;\n  /* Show measure tools */\n  @Input() showMeasureTools = false;\n  /* show whatishere button */\n  @Input() showWhatIsHereButton = false;\n  /* Add supporting layers. If provided will be added as DynamicMapLayer to leaflet */\n  @Input() supportingLayerOptions: SupportingLayerOptions;\n  /* Add operationalLayer. If provided will be added as FeaturLayer(clustered) to leaflet */\n  @Input() operationalLayerOptions: OperationalLayerOptions;\n  /* Adds filter layer. If provided will be added as FeatureLayer to leaflet. Is used to filter operationallayer by geometry */\n  @Input() filterLayers: FilterLayerOptions[];\n  /* If provided, adds coordinate to resultList at index */\n  @Input() addCoordinateToResultsAt?: number = null;\n  /* If search string contains one of these words, search for locations instead of address */\n  @Input() locationKeywords: string[] = [\"kaainummer\"];\n  /* When entering address search for streetname instead, will search for locations with provided streetname */\n  @Input() searchStreetNameForAddress: boolean = false;\n  /* If provided, When searching for current position*/\n  @Input() positionOptions: TrackingOptions = {\n    enableHighAccuracy: false,\n    timeout: Infinity,\n    maximumAge: 0,\n    preferredAccuracy: 25,\n    trackingTimeout: 2000,\n  };\n  /* If true, will use watchposition to track current position */\n  @Input() trackPosition: boolean = false;\n  /* AddPolygon event */\n  @Output() addPolygon = new EventEmitter<any>();\n  /* AddLine event */\n  @Output() addLine = new EventEmitter<any>();\n  /* EditFeature event */\n  @Output() editFeature = new EventEmitter<any>();\n  /* LocationSelect event: fired when selecting a location. */\n  @Output() locationSelect = new EventEmitter<\n    LocationModel | AddressModel | CoordinateModel\n  >();\n  /* Operational layer filtered: fired when using selection tools rectangle/polygon, using filter layer or clicking on marker of operational layer*/\n  @Output() filteredResult = new EventEmitter<\n    GeofeatureDetail[] | OperationalMarker[] | any\n  >();\n\n  @ViewChild(NgxLocationViewerComponent, { static: false })\n  locationViewer: NgxLocationViewerComponent;\n  @ViewChild(\"leafletSearch\", { static: false }) leafletSearchField: ElementRef;\n\n  /* Leaflet instance */\n  leafletMap: LocationViewerMap;\n  /* Whether a search request is running or not. */\n  searching = false;\n  /* Whether a search was initiated or not. */\n  didSearch = false;\n  /* Whether the user clicked the pick location from map button or not. */\n  pickLocationActive = false;\n  /* Keeps track whether the search was triggered by picking a location on the map */\n  pickedLocation = false;\n  /* Whether we're locating a user or not */\n  isLocating = false;\n  /* The locations returned from the server. */\n  foundLocations: LocationModel[] | AddressModel[] | CoordinateModel[] = [];\n  /* Leaflet notification message */\n  leafletNotification: NotificationModel;\n  /* The current highlighted index in the location results array */\n  highlightedLocationResult = 0;\n\n  /* Input change subject */\n  private searchQueryChanged: Subject<string> = new Subject<string>();\n  /* Current leaflet state */\n  private mapLoaded = false;\n  /* Keep a reference to our geolocation object */\n  private geoLocate: Geolocation;\n  /* Keep a reference of our geolocation watch id */\n  private geoLocateId?: number;\n  /* Latest cachedPosition */\n  private cachedPosition;\n  /* Current active location marker on the map */\n  private selectedLocationMarker;\n  /* Active marker for calculated location */\n  private calculatedLocationMarker;\n  /* Current active geometry on the map */\n  private selectedLocationGeometry;\n  /* Observable subscription for the input event */\n  private inputChangeSubscription;\n  /* Observable subscription for fetching locations */\n  private locationServiceSubscription;\n  /* Currently selected location */\n  private _selectedLocation: any = {};\n  /* Previous selected location */\n  private previousLocation: LocationModel | AddressModel | CoordinateModel;\n  /* Cursor state if hovering over leaflet or not */\n  private cursorOnLeaflet = false;\n  /* Circle drawn when trackingposition to show accuracy of coordinate */\n  private proximityCircle;\n  /* Circle drawn when trackingposition to show coordinate */\n  private proximityCenter;\n  /* Timeout to reset clearwatch*/\n  private clearWatchTimeoutId;\n\n  /* Used for ControlValueAccessor */\n  propagateChange = (_: any) => { };\n\n  get selectedLocation() {\n    return this._selectedLocation;\n  }\n\n  set selectedLocation(location) {\n    if (\n      this.mapLoaded &&\n      location &&\n      location.position &&\n      location.position.lat &&\n      location.position.lng\n    ) {\n      this.resetLocationSearchFields();\n      this.setInitialLocation(location);\n\n      delete location.options;\n\n      location = {\n        ...location,\n        actualLocation: location.position,\n      };\n    }\n\n    this._selectedLocation = location;\n    this.propagateChange(this._selectedLocation);\n  }\n\n  get selectedLocationLabel(): string {\n    return this._selectedLocation?.label || '';\n  }\n\n  set selectedLocationLabel(value: string) {\n    if (this._selectedLocation) {\n      this._selectedLocation.label = value;\n    }\n  }\n\n  /**\n   * Checks if input field has a value\n   */\n  get inputHasValue(): boolean {\n    return this.selectedLocation && !this.selectedLocation.label;\n  }\n\n  /**\n   * Checks if foundLocations array has items.\n   */\n  get hasResults(): boolean {\n    return this.foundLocations && this.foundLocations.length > 0;\n  }\n\n  /**\n   * NgxLocationPickerComponent constructor, injects required dependencies\n   */\n  constructor(\n    private locationPickerService: NgxLocationPickerService,\n    private locationPickerHelper: NgxLocationPickerHelper,\n    private locationViewerService: LocationViewerMapService,\n    private renderer: Renderer2\n  ) {\n    this.inputChangeSubscription = this.searchQueryChanged\n      .pipe(debounceTime(this.debounceTime), distinctUntilChanged())\n      .subscribe((query) => {\n        this.onSearch(query);\n      });\n  }\n\n  /**\n   * On component init\n   */\n  ngOnInit() {\n    /* if baseUrl is not set, throw an error. */\n    if (!this.baseUrl) {\n      throw new Error(\n        \"baseUrl parameter is missing. Please pass in your BFF url.\"\n      );\n    }\n\n    /* Only initialise leaflet map when it's required. */\n    if (this.showMap) {\n      this.initLocationPicker();\n    }\n  }\n\n  /**\n   * On component destroy\n   */\n  ngOnDestroy() {\n    /* Unsubscribe input change subscription on component destroy */\n    if (this.inputChangeSubscription) {\n      this.inputChangeSubscription.unsubscribe();\n    }\n    /* Unsubscribe locationService subscription on component destroy */\n    if (this.locationServiceSubscription) {\n      this.locationServiceSubscription.unsubscribe();\n    }\n\n    this.clearWatch();\n  }\n\n  /**\n   * Writes a new value to the element.\n   */\n  writeValue(location: any, reset: boolean = false): void {\n    if (reset) {\n      this.resetLocationSearchFields();\n      this.selectedLocation = {};\n      this.locationSelect.emit(location);\n    }\n\n    if (\n      (location && location.label) ||\n      (location && location.position && location.position.wgs84)\n    ) {\n      // adds space to label if layer is streetname so user can search for address just by adding housenumber\n      if (location && location.layer && location.layer === \"straatnaam\") {\n        location.label = `${location.label} `;\n        this.leafletSearchField.nativeElement.focus();\n      }\n\n      this.selectedLocation = location;\n      // update previousLocation on new search selectedLocation changes to search query and needs to know previous result for address search\n      this.previousLocation = location;\n      this.locationSelect.emit(location);\n    }\n  }\n\n  /**\n   * Registers a callback function that is called when the control's value changes in the UI.\n   */\n  registerOnChange(fn) {\n    this.propagateChange = fn;\n  }\n\n  /**\n   * Registers a callback function is called by the forms API on initialization to update the form model on blur.\n   */\n  registerOnTouched() { }\n\n  /**\n   * Zooms the map in\n   */\n  zoomIn() {\n    this.leafletMap.zoomIn();\n  }\n\n  /**\n   * Zooms the map out\n   */\n  zoomOut() {\n    this.leafletMap.zoomOut();\n  }\n\n  /**\n   * On input change event\n   */\n  onInputChange(query: string) {\n    this.searchQueryChanged.next(query);\n  }\n\n  /**\n   * Clear search field value, If map is visible, resets to it's original position.\n   */\n  emptyField() {\n    this.writeValue({}, true);\n\n    if (this.showMap) {\n      this.removeGeometry();\n      this.removeMarker();\n    }\n  }\n\n  /**\n   * Allows location search by clicking somewhere on the map.\n   */\n  pickLocationOnMap() {\n    if (this.pickLocationActive) {\n      this.cancelPickingEvents();\n    } else {\n      this.leafletMap.map.addEventListener(\"click\", (event) =>\n        this.registerMapClick(event)\n      );\n      if (this.leafletMap.operationalLayer) {\n        this.leafletMap.operationalLayer.removeEventListener(\"click\");\n      }\n    }\n\n    this.pickLocationActive = !this.pickLocationActive;\n  }\n\n  /**\n   * Tries to determine the current users position\n   */\n  getDeviceLocation() {\n    this.isLocating = true;\n\n    // if we use trackposition we will search until we have an accurate coordinate\n    if (navigator && navigator.geolocation) {\n      // start watching position for high accuracy\n      this.geoLocateId = navigator.geolocation.watchPosition(\n        (position) => {\n          this.cachedPosition = position;\n          // depending on conditions we check if need to keep searching\n          const keepSearching =\n            this.cachedPosition.coords.accuracy >\n            this.positionOptions.preferredAccuracy;\n          if (this.trackPosition && keepSearching) {\n            if (this.clearWatchTimeoutId == null) {\n              this.clearWatchTimeoutId = setTimeout(() => {\n                this.searchWithCachedPosition();\n                this.clearWatch();\n              }, this.positionOptions.trackingTimeout);\n            }\n            this.showProximityCircle(\n              [position.coords.latitude, position.coords.longitude],\n              position.coords.accuracy\n            );\n          } else {\n            this.searchWithCachedPosition();\n            this.clearWatch();\n          }\n        },\n        (error) => {\n          this.isLocating = false;\n          let message = \"\";\n          switch (error.code) {\n            case 1:\n              message = this.locateMeNotAllowedNotification;\n              break;\n            case 2:\n              message = this.locateMeUnavailableNotification;\n              break;\n            case 3:\n              message = this.locateMeTimeoutNotification;\n              break;\n            default:\n              message = this.locateMeUnknownNotification;\n              break;\n          }\n\n          this.setNotification({\n            status: \"danger\",\n            text: message,\n            icon: \"ai-alert-triangle\",\n          });\n        },\n        this.positionOptions\n      );\n    } else {\n      this.setNotification({\n        status: \"danger\",\n        text: this.locateMeNotSupportedNotification,\n        icon: \"ai-alert-triangle\",\n      });\n    }\n  }\n\n  /**\n   * Trigger search when input string is longer than 2 characters\n   */\n  onSearch(searchValue, forcedCoordinateSearch: boolean = false) {\n    this.leafletNotification = null;\n    this.highlightedLocationResult = 0;\n\n    this.cancelGeolocation();\n\n    if (searchValue && this.locationPickerHelper.isAlternativeCoordinateNotation(searchValue))\n      searchValue = this.locationPickerHelper.convertAlternativeCoordinateToNormalNotation(searchValue);\n\n    if (searchValue && !this.locationPickerHelper.isCoordinate(searchValue))\n      this.pickedLocation = false;\n\n    if (forcedCoordinateSearch)\n      this.pickedLocation = true;\n\n    if (!searchValue.trim())\n      this.emptyField();\n\n    if (searchValue.length >= this.minInputLength && (this.locationPickerHelper.isAddress(searchValue, this.locationKeywords)\n      || this.locationPickerHelper.isCoordinate(searchValue) || !this.locationLayers.includes(\"none\"))) {\n      this.searching = true;\n      this.didSearch = true;\n\n      if (this.locationPickerHelper.isCoordinate(searchValue) && !this.pickLocationActive) {\n        let coords: LambertModel = this.locationPickerHelper.extractXYCoord(searchValue);\n\n        const tempLocation = {\n          position: { wgs84: { lat: coords.x, lng: coords.y } },\n          label: `${coords.x},${coords.y}`,\n          actualLocation: { lat: coords.x, lng: coords.y },\n        };\n        if (!this.locationPickerHelper.isWgs84Coordinates(coords.x, coords.y)) {\n          coords = this.locationPickerHelper.convertLambertToWgs84Coordinates(coords);\n          searchValue = `${coords.x}, ${coords.y}`;\n        }\n\n        this.addMapMarker([coords.x, coords.y], null, false, false,  this.createPinMarker());\n\n        this.writeValue(tempLocation);\n      }\n\n      searchValue = this.locationPickerHelper.normalizeSearchValue(searchValue);\n\n      // Reset the previous location if the current search value does not equal the previous one, only applicable to addresses and locations.\n      if(((this.previousLocation && 'formattedAddress' in this.previousLocation && !this.inputStringEqualsSelectedStreetName(searchValue as string, this.previousLocation?.street?.streetName))\n        || (this.previousLocation && 'position' in this.previousLocation && !this.inputStringEqualsSelectedStreetName(searchValue as string, this.previousLocation?.name))) &&  !this.locationPickerHelper.isCoordinate(searchValue))\n          this.previousLocation = null;\n\n      const delegateSearch: DelegateSearchModel = {\n        search: searchValue,\n        baseUrl: this.baseUrl,\n        limit: this.locationsLimit,\n        layers: this.locationLayers,\n        prioritizelayer: this.prioritizeLayers,\n        sort: this.sortBy,\n        cascadingCoordinateReturnSingle: this.cascadingCoordinateReturnSingle,\n        cascadingCoordinateLimit: this.cascadingCoordinateLimit,\n        cascadingCoordinateRules: this.cascadingCoordinateRules,\n        cascadingCoordinateGuid: this.cascadingCoordinateGuid,\n        selectedLocation: this.previousLocation,\n        locationKeywords: this.locationKeywords,\n        searchStreetNameForAddress: this.searchStreetNameForAddress,\n        onlyAntwerp: this.onlyAntwerp,\n        countryCodes: this.countryCodes,\n        bufferSearch: this.bufferSearch,\n        coordinateSearch: this.coordinateSearch,\n      };\n\n      this.locationServiceSubscription = this.locationPickerService\n        .delegateSearch(delegateSearch)\n        .subscribe(\n          (response: LocationModel[] | AddressModel[] | CoordinateModel[]) => {\n            this.foundLocations = response;\n\n            //adds used coordinate to result list\n            if (this.addCoordinateToResultsAt && this.pickedLocation) {\n              this.foundLocations.splice(\n                this.addCoordinateToResultsAt,\n                0,\n                this.previousLocation\n              );\n            }\n\n            if (this.foundLocations.length && this.pickedLocation) {\n              this.onLocationSelect(null, this.foundLocations[0], true);\n            }\n          },\n          (error) => {\n            console.log(error);\n          },\n          () => {\n            this.searching = false;\n          }\n        );\n    }\n  }\n\n  protected setDidSearch(): void {\n    setTimeout(() => this.didSearch = false, 200);\n  }\n\n  /**\n   * When a location is selected from the list.\n   */\n  protected onLocationSelect($event: Event, selectedLocation: any, didSearch: boolean = false): void {\n    if ($event) $event.preventDefault();\n\n    this.didSearch = didSearch;\n    this.removeMarker(true);\n\n    this.writeValue(selectedLocation);\n\n    if (this.showMap) {\n      if (\n        selectedLocation.address &&\n        selectedLocation.address.addressPosition &&\n        selectedLocation.address.addressPosition.wgs84\n      ) {\n        const coords: Array<number> = [\n          selectedLocation.address.addressPosition.wgs84.lat,\n          selectedLocation.address.addressPosition.wgs84.lng,\n        ];\n        this.addResultMarker(coords, { color: \"var(--THEME1-600)\", opacity: \"40\", strokeColor: \"var(--THEME1-600)\", strokeWidth: \"2px\"});\n      } else if (selectedLocation.addressPosition && selectedLocation.addressPosition.wgs84) {\n        const coords: Array<number> = [\n          selectedLocation.addressPosition.wgs84.lat,\n          selectedLocation.addressPosition.wgs84.lng,\n        ];\n        this.addResultMarker(coords, { color: \"var(--THEME1-600)\", opacity: \"40\", strokeColor: \"var(--THEME1-600)\", strokeWidth: \"2px\"});\n      } else if (selectedLocation.position) {\n        if (selectedLocation.label && selectedLocation.position.geometry && selectedLocation.position.geometryShape) {\n          this.addMapGeoJson(\n            selectedLocation.label,\n            selectedLocation.position.geometryShape,\n            selectedLocation.position.geometry\n          );\n        } else if (selectedLocation.position.wgs84) {\n          const coords: Array<number> = [\n            selectedLocation.position.wgs84.lat,\n            selectedLocation.position.wgs84.lng,\n          ];\n          this.addResultMarker(coords, { color: \"var(--THEME1-600)\", opacity: \"40\", strokeColor: \"var(--THEME1-600)\", strokeWidth: \"2px\"});\n        }\n      } else if (\n        selectedLocation.location &&\n        selectedLocation.location.position &&\n        (selectedLocation.location.position.geometry || selectedLocation.location.position.wgs84)\n      ) {\n        if (selectedLocation.label && selectedLocation.location.position.geometry && selectedLocation.location.position.geometryShape && selectedLocation.location.position.geometryShape !== \"Point\") {\n          this.addMapGeoJson(\n            selectedLocation.label,\n            selectedLocation.location.position.geometryShape,\n            selectedLocation.location.position.geometry\n          );\n        } else {\n          let coords: Array<number>;\n          if (selectedLocation.layerAttributes?.Position_wgs84_lat !== undefined &&\n            selectedLocation.layerAttributes?.Position_wgs84_lon !== undefined) {\n            coords = [\n              selectedLocation.layerAttributes.Position_wgs84_lat,\n              selectedLocation.layerAttributes.Position_wgs84_lon,\n            ];\n          } else {\n            coords = [\n              selectedLocation.location.position.wgs84.lat,\n              selectedLocation.location.position.wgs84.lng,\n            ];\n          }\n          this.addResultMarker(coords, { color: \"var(--THEME1-600)\", opacity: \"40\", strokeColor: \"var(--THEME1-600)\", strokeWidth: \"2px\"});\n        }\n      } else {\n        this.removeGeometry();\n        this.removeMarker();\n        this.setNotification({\n          status: \"danger\",\n          text: this.coordinateErrorNotification,\n          icon: \"ai-alert-triangle\",\n        });\n      }\n\n      this.pickedLocation = didSearch;\n    }\n  }\n\n  /**\n   * When a result is filtered in location-viewer.\n   */\n  onResultFiltered($event: any) {\n    this.filteredResult.emit($event);\n  }\n\n  /**\n   * Implements keyboard and mouse commands\n   */\n  @HostListener(\"window:wheel\", [\"$event\"])\n  @HostListener(\"window:keydown\", [\"$event\"])\n  onKeyCommand(event) {\n    /* Disable accidental submit when enter key is pressed */\n    if (event.key === \"Enter\") {\n      event.preventDefault();\n    }\n\n    /* zoom in/out using ctrl + scroll to zoom in or out. Show notification if only scroll is used. */\n    if (event.type === \"wheel\" && this.cursorOnLeaflet) {\n      if (event.shiftKey) {\n        const direction = event.deltaY > 0 ? \"out\" : \"in\";\n        this.renderer.addClass(document.body, \"is-map-interaction\");\n\n        if (direction === \"out\") {\n          this.zoomOut();\n        } else {\n          this.zoomIn();\n        }\n      } else {\n        this.renderer.removeClass(document.body, \"is-map-interaction\");\n\n        this.setNotification({\n          status: \"default\",\n          text: this.zoomInfoNotification,\n          icon: \"ai-alert-circle\",\n        });\n      }\n    } else {\n      this.renderer.removeClass(document.body, \"is-map-interaction\");\n    }\n\n    /* Close flyout when escape key is pressed */\n    if (event.key === \"Escape\" && this.didSearch) {\n      this.didSearch = false;\n    }\n\n    /* Cancel location search by click when escape key is pressed. */\n    if (event.key === \"Escape\") {\n      this.cancelPickingEvents();\n      this.pickLocationActive = false;\n      this.pickedLocation = false;\n    }\n\n    /* When pressing enter, select first value in found locations list. */\n    if (event.key === \"Enter\" && this.didSearch) {\n      if (this.hasResults) {\n        this.onLocationSelect(\n          null,\n          this.foundLocations[this.highlightedLocationResult]\n        );\n      } else {\n        this.onLocationSelect(null, this.selectedLocation);\n      }\n\n      this.pickedLocation = false;\n    }\n\n    if (this.hasResults && this.didSearch) {\n      /* When using arrow keys, select next/previous result in found locations list. */\n      if (event.key === \"ArrowUp\") {\n        if (this.highlightedLocationResult > 0) {\n          this.highlightedLocationResult--;\n        }\n      }\n\n      if (event.key === \"ArrowDown\") {\n        if (this.highlightedLocationResult < this.foundLocations.length - 1) {\n          this.highlightedLocationResult++;\n        }\n      }\n    }\n  }\n\n  /**\n   * Determines whether the cursor is hovering over the leaflet instance or not.\n   */\n  isCursorOnLeaflet(cursorOnLeaflet: boolean) {\n    this.cursorOnLeaflet = cursorOnLeaflet;\n  }\n\n  /**\n   * Close the notification manually\n   */\n  closeNotification() {\n    this.leafletNotification = null;\n  }\n\n  /**\n   * Clear watch user position\n   */\n  private clearWatch(): void {\n    if (this.geoLocateId && navigator && navigator.geolocation) {\n      navigator.geolocation.clearWatch(this.geoLocateId);\n      this.geoLocateId = null;\n    }\n    this.removeProximityCircle();\n\n    if (this.clearWatchTimeoutId != null) {\n      clearTimeout(this.clearWatchTimeoutId);\n      this.clearWatchTimeoutId = null;\n    }\n  }\n\n  /**\n   * Init leaflet map with default values and register feature layers if provided.\n   */\n  private initLocationPicker() {\n    this.leafletMap = new LocationViewerMap(\n      {\n        zoom: this.defaultZoom,\n        center: this.mapCenter,\n        onAddPolygon: (layer) => {\n          this.addPolygon.emit(layer);\n        },\n        onAddLine: (layer) => {\n          this.addLine.emit(layer);\n        },\n        onEditFeature: (feature) => {\n          this.editFeature.emit(feature);\n        },\n      },\n      this.locationViewerService\n    );\n\n    this.leafletMap.onInit.subscribe(() => {\n      this.mapLoaded = true;\n\n      if (this.selectedLocation && this.selectedLocation.position) {\n        this.selectedLocation = this.selectedLocation;\n      } else if (this.locateUserOnInit) {\n        /* Get users location on load only when no selectedLocation was set. */\n        this.getDeviceLocation();\n      }\n\n      this.registerFeatureLayers();\n    });\n  }\n\n  /**\n   * Triggers a search with latest position of device\n   */\n  private searchWithCachedPosition() {\n    if (this.cachedPosition && this.cachedPosition.coords) {\n      this.setLocationDynamically(\n        this.cachedPosition.coords.latitude,\n        this.cachedPosition.coords.longitude,\n        true\n      );\n      this.isLocating = false;\n    }\n  }\n\n  /**\n   * Triggers a search when selectedLocation was updated from outside our component.\n   */\n  private setInitialLocation(initialLocation: InitialLocationModel) {\n    this.cancelGeolocation();\n    if (\n      !(\"options\" in initialLocation) ||\n      !(\"triggerSearch\" in initialLocation.options) ||\n      initialLocation.options.triggerSearch\n    ) {\n      this.onSearch(\n        `${initialLocation.position.lat},${initialLocation.position.lng}`,\n        initialLocation.label &&\n        this.locationPickerHelper.isCoordinate(initialLocation.label)\n      );\n    } else {\n      this.addMapMarker([\n        initialLocation.position.lat,\n        initialLocation.position.lng,\n      ]);\n      this.setView([\n        initialLocation.position.lat,\n        initialLocation.position.lng,\n      ]);\n    }\n  }\n\n  /**\n   * Capture coordinates from clicking the map and run a search.\n   */\n  private registerMapClick($event) {\n    this.removeGeometry();\n    this.cancelPickingEvents();\n    this.pickLocationActive = false;\n    this.pickedLocation = true;\n\n    if ($event.latlng) {\n      this.setLocationDynamically($event.latlng.lat, $event.latlng.lng);\n    }\n  }\n\n  /**\n   * Sets a dynamically fetched location when using locate-me or pick location on map\n   */\n  private setLocationDynamically(lat, lng, setView = false) {\n    this.resetFoundLocations();\n    this.onSearch(`${lat.toFixed(6)},${lng.toFixed(6)}`);\n    if (setView) {\n      this.setView([lat.toFixed(6), lng.toFixed(6)]);\n    }\n  }\n\n  /**\n   * Sets leaflet map view to selected coords. With preferred zoomlevel.\n   */\n  private setView(coords: number[]) {\n    if (this.onSelectZoom) {\n      this.leafletMap.setView(coords, this.onSelectZoom);\n    } else {\n      this.leafletMap.setView(coords, this.leafletMap.map.getZoom());\n    }\n  }\n\n  /**\n   * Registers optional feature layers and adds markers to the leaflet instance.\n   */\n  private registerFeatureLayers() {\n    if (this.featureLayers.length > 0) {\n      this.featureLayers.map((featureLayer: FeatureLayerModel) => {\n        this.leafletMap.addFeatureLayer({\n          url: featureLayer.url,\n          pointToLayer: (geojson, latlng) => {\n            return this.leafletMap.addHtmlMarker(\n              latlng,\n              this.createMarker(\n                featureLayer.icon && featureLayer.icon.color\n                  ? featureLayer.icon.color\n                  : undefined,\n                featureLayer.icon && featureLayer.icon.iconClass\n                  ? featureLayer.icon.iconClass\n                  : undefined,\n                featureLayer.icon && featureLayer.icon.size\n                  ? featureLayer.icon.size\n                  : undefined\n              )\n            );\n          },\n        });\n      });\n    }\n  }\n\n  /**\n   * Adds a marker on a given coordinate and zooms in on this location.\n   *\n   * @param coords array containing lat & lng\n   * @param location the selected location\n   * @param keepGeometry whether or not to remove existing geometry\n   * @param keepMarker whether or not to remove existing marker\n   * @param marker the marker styling itself\n   */\n  private addMapMarker(\n    coords,\n    location = null,\n    keepGeometry: boolean = false,\n    keepMarker: boolean = false,\n    marker: string = null\n  ) {\n    if (!keepMarker) {\n      this.removeMarker();\n    }\n\n    if (!keepGeometry) {\n      this.removeGeometry();\n    }\n\n    if (marker === null) {\n      marker = this.createMarker();\n    }\n\n    this.selectedLocationMarker = this.leafletMap.addHtmlMarker(coords, marker);\n\n    this.selectedLocationMarker.dragging.enable();\n\n    this.selectedLocationMarker.on(\"dragend\", (_) => {\n      const newCoords = this.selectedLocationMarker.getLatLng();\n      const searchValue = newCoords\n        ? `${newCoords.lat.toFixed(6)},${newCoords.lng.toFixed(6)}`\n        : \"\";\n\n      this.pickedLocation = true;\n      this.resetFoundLocations();\n      this.onSearch(searchValue);\n    });\n\n    if (location) {\n      this.writeValue(location);\n    }\n  }\n\n  /* Adds a marker on a given coordinate and zooms in on this location. */\n  private addResultMarker(coords: number[], pointDetails?: {color: string, opacity: string, strokeColor: string, strokeWidth: string}): void {\n    this.removeGeometry();\n    this.calculatedLocationMarker = this.leafletMap.addHtmlMarker(\n      coords,\n      this.createMarker(\"var(--THEME1-600)\", \"ai-controls-record\", \"var(--SPACER)\", {\n        top: \"-0.4rem\",\n        left: \"-0.4rem\",\n      }, pointDetails),\n    );\n    this.setView(coords);\n  }\n\n  /**\n   * Adds proximity circle to show the accuracy of received coordinates\n   */\n  private showProximityCircle(coords: number[], accuracy: number): void {\n    let zoomLevel = 15;\n    this.removeProximityCircle();\n    this.proximityCircle = this.locationViewerService.L.circle(\n      coords,\n      accuracy,\n      {\n        opacity: 1,\n        color: \"#FFFFFF\",\n        fillColor: \"#3388ff\",\n        className: \"proximity\",\n      }\n    );\n    this.proximityCenter = this.locationViewerService.L.circle(coords, 15, {\n      fillOpacity: 1,\n      color: \"#FFFFFF\",\n      fillColor: \"#000000\",\n      className: \"proximity-center\",\n    });\n    this.proximityCircle.addTo(this.leafletMap.map);\n    this.proximityCenter.addTo(this.leafletMap.map);\n\n    const boundZoom = this.leafletMap.map.getBoundsZoom(\n      this.proximityCircle.getBounds()\n    );\n    if (boundZoom < zoomLevel) {\n      zoomLevel = boundZoom;\n    }\n\n    this.leafletMap.setView(coords, zoomLevel);\n  }\n\n  /**\n   * Removes the proximity circle from the map\n   */\n  private removeProximityCircle(): void {\n    if (this.proximityCircle) {\n      this.proximityCircle.remove();\n      this.proximityCircle = null;\n    }\n\n    if (this.proximityCenter) {\n      this.proximityCenter.remove();\n      this.proximityCenter = null;\n    }\n  }\n\n  /**\n   * Defines the custom marker markup.\n   */\n  private createMarker(\n    color: string = \"var(--THEME1-600)\",\n    icon: string = \"ai-pin\",\n    size: string = \"var(--SPACER)\",\n    position: { top: string; left: string } = {\n      top: \"-0.75rem\",\n      left: \"-0.6rem\",\n    },\n    pointDetails?: {color: string; opacity: string, strokeColor: string, strokeWidth: string}\n  ) {\n    const markerStyle = `color: ${color}; font-size: ${size}; top: ${position.top}; left: ${position.left}`;\n    const markerIcon = `<svg aria-hidden=\"true\"><use href=\"#${icon}\" style=\"fill: ${pointDetails?.color}; fill-opacity: ${pointDetails?.opacity}%; stroke: ${pointDetails?.strokeColor}; stroke-width: ${pointDetails?.strokeWidth}; stroke-opacity: 1;\" /></svg>`;\n\n    return `<span style=\"${markerStyle}\" class=\"ai ngx-location-picker-marker\">${markerIcon}</span>`;\n  }\n\n  private createPinMarker(): string {\n    return this.createMarker(\"var(--THEME1-600)\", \"ai-pin\", \"2.5rem\", {\n      top: \"-1.75rem\",\n      left: \"-0.75rem\",\n    });\n  }\n\n  /**\n   * Removes specific marker from leaflet instance.\n   */\n  private removeMarker(calculatedOnly: boolean = false) {\n    if (this.selectedLocationMarker && !calculatedOnly) {\n      this.leafletMap.removeLayer(this.selectedLocationMarker);\n    }\n\n    if (this.calculatedLocationMarker) {\n      this.leafletMap.removeLayer(this.calculatedLocationMarker);\n    }\n  }\n\n  /**\n   * Add found geo shape to leaflet and determine center coordinates\n   */\n  private addMapGeoJson(label: string, geometryShape: string, geometry: any) {\n    this.removeGeometry();\n\n    const geoJson = {\n      type: \"Feature\",\n      properties: {\n        name: label,\n      },\n      geometry: {\n        type: geometryShape,\n        coordinates: geometryShape === \"MultiPolygon\" ? [geometry] : geometry,\n      },\n    };\n\n    try {\n      this.selectedLocationGeometry = this.leafletMap.addGeoJSON(geoJson, {});\n    } catch (error) {\n      console.log(error);\n      // when addGeoJson throw an error ==> remove loading icon\n      this.searching = false;\n    }\n\n    const bounds = this.selectedLocationGeometry.getBounds();\n    const shapeCenter = this.selectedLocationGeometry.getBounds().getCenter();\n\n    if (this.selectedLocation && shapeCenter) {\n      if (!this.pickedLocation) {\n        this.setView(shapeCenter);\n        if (this.changeZoomLevelOnLocationSelect) {\n          this.leafletMap.map.fitBounds(bounds);\n        }\n      } else {\n        // only change map zoomlevel if the selection is not the default selection after location was picked\n        if (this.changeZoomLevelOnLocationSelect && !this.didSearch) {\n          this.leafletMap.map.fitBounds(bounds);\n        }\n      }\n    }\n  }\n\n  /**\n   * Resets found locations to empty array\n   */\n  private resetFoundLocations() {\n    this.foundLocations = [];\n  }\n\n  /**\n   * Resets properties related to location search\n   */\n  private resetLocationSearchFields() {\n    this.didSearch = false;\n    this.searching = false;\n    this.pickedLocation = false;\n    this.previousLocation = null;\n    this.resetFoundLocations();\n  }\n\n  /**\n   * Removes added geometry area from leaflet instance.\n   */\n  private removeGeometry() {\n    if (this.selectedLocationGeometry) {\n      this.leafletMap.removeLayer(this.selectedLocationGeometry);\n    }\n  }\n\n  /**\n   * Cancels geolocation if currently running\n   */\n  private cancelGeolocation() {\n    this.isLocating = false;\n\n    if (this.geoLocate && this.geoLocateId) {\n      this.geoLocate.clearWatch(this.geoLocateId);\n    }\n  }\n\n  /**\n   * Removes and adds the expected events after cancelling picking\n   */\n  private cancelPickingEvents() {\n    this.leafletMap.map.removeEventListener(\"click\");\n    this.locationViewer.registerOperationalLayerClickEvent();\n  }\n\n  /**\n   * Show a notification on the leaflet map.\n   */\n  private setNotification(notification: NotificationModel) {\n    this.leafletNotification = notification;\n  }\n\n  /**\n   * Does the input check on to see if given input equals to the current selected street name\n   */\n  private inputStringEqualsSelectedStreetName(input: string, expectedStreetName: string): boolean {\n    return input?.trim()?.toLocaleLowerCase().startsWith(expectedStreetName?.trim()?.toLocaleLowerCase());\n  }\n}\n","<div class=\"a-input\" [class.has-map]=\"showMap\">\n  <div class=\"a-input__search\" [class.has-sidebar]=\"hasSidebar\">\n    <div class=\"a-input__wrapper has-inline-addon\">\n      <input #leafletSearch id=\"leaflet-search\" type=\"text\" name=\"leaflet-search\" [placeholder]=\"placeholder\"\n        [attr.aria-label]=\"textInputAriaLabel\" [(ngModel)]=\"selectedLocationLabel\"\n        (ngModelChange)=\"onInputChange($event)\" autocomplete=\"off\" (blur)=\"setDidSearch()\" />\n      <div class=\"inline-addon\" *ngIf=\"showClearInputButton\">\n        <div *ngIf=\"searching\" class=\"a-spinner\" role=\"alert\">\n          <span class=\"a-spinner__circle\">\n            <span class=\"u-screen-reader-only\">...</span>\n          </span>\n        </div>\n        <button *ngIf=\"!inputHasValue && !searching\" class=\"a-button a-button--s a-button--text has-icon\" type=\"button\"\n          (click)=\"emptyField()\" [attr.aria-label]=\"clearInputAriaLabel\">\n          <aui-icon name=\"ai-close\"></aui-icon>\n        </button>\n      </div>\n    </div>\n\n    <div class=\"m-flyout m-flyout--full\" [class.is-open]=\"didSearch && !searching\">\n      <div class=\"m-flyout__content\">\n        <p *ngIf=\"!hasResults && !searching; else results\" class=\"u-margin-s\">{{ noResultsLabel }}</p>\n        <ng-template #results>\n          <ul class=\"a-list a-list--lined a-list--flushed a-list__results\">\n            <li *ngFor=\"let location of foundLocations; let ii = index\" class=\"a-list__item\">\n              <a href=\"#\" [class]=\"{\n                'a-list__content': true,\n                'is-active': ii === highlightedLocationResult,\n              }\" (click)=\"onLocationSelect($event, location)\">\n                <p [innerHTML]=\"location.label | highlight: selectedLocation?.label\"></p>\n                <small>{{ location.layer }}</small>\n              </a>\n            </li>\n          </ul>\n        </ng-template>\n        <div *ngIf=\"!hasResults && pickedLocation && !searching\" (click)=\"onLocationSelect($event, selectedLocation)\"\n          class=\"use-coordinate\" [class.is-highlighted]=\"!hasResults && pickedLocation\">\n          <p>{{ defaultOptionLabel }}</p>\n          <small>{{ selectedLocation.label }}</small>\n        </div>\n      </div>\n    </div>\n    <div *ngIf=\"leafletNotification?.text\">\n      <div role=\"alertdialog\" aria-live=\"assertive\"\n        class=\"m-location-picker__notification-panel u-bg-white m-alert m-alert--inline m-alert--{{ leafletNotification.status }}\">\n        <p><aui-icon [name]=\"leafletNotification.icon\" class=\"u-margin-right-xxs\"></aui-icon> {{\n          leafletNotification.text }}</p>\n        <button class=\"a-button a-button--text a-button--{{ leafletNotification.status }} has-icon m-alert__close\"\n          aria-label=\"Close\" (click)=\"closeNotification()\">\n          <aui-icon name=\"ai-close\"></aui-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n<aui-location-viewer *ngIf=\"showMap\"\n  [leafletMap]=\"leafletMap\"\n  [(hasSidebar)]=\"hasSidebar\"\n  [geoApiBaseUrl]=\"geoApiBaseUrl\"\n  [showLayerManagement]=\"showLayerManagement\"\n  [showSelectionTools]=\"showSelectionTools\"\n  [showMeasureTools]=\"showMeasureTools\"\n  [showWhatIsHereButton]=\"showWhatIsHereButton\"\n  [supportingLayerOptions]=\"supportingLayerOptions\"\n  [operationalLayerOptions]=\"operationalLayerOptions\"\n  [filterLayers]=\"filterLayers\" [tileLayer]=\"tileLayer\"\n  [tileLayerIsVectorBased]=\"tileLayerIsVectorBased\"\n  [defaultTileLayerLabel]=\"defaultTileLayerLabel\"\n  [class.is-picking]=\"pickLocationActive\"\n  (mouseover)=\"isCursorOnLeaflet(true)\"\n  (mouseout)=\"isCursorOnLeaflet(false)\"\n  (filteredResult)=\"onResultFiltered($event)\">\n    <div controls bottom left>\n      <button type=\"button\" class=\"a-button has-icon u-margin-bottom-xs button-location-picking\"\n        (click)=\"pickLocationOnMap()\" [class.a-button--outlined]=\"pickLocationActive\"\n        [attr.aria-label]=\"locationPickAriaLabel\">\n        <aui-icon name=\"ai-pin\"></aui-icon>\n      </button>\n    </div>\n    <div controls bottom right>\n        <button\n          type=\"button\"\n          class=\"a-button has-icon\"\n          [attr.aria-label]=\"isLocating ? locatingAriaLabel : locateMeAriaLabel\"\n          [class.a-button--outlined]=\"isLocating\"\n          [disabled]=\"isLocating\"\n          (click)=\"getDeviceLocation()\"\n        >\n          <aui-icon *ngIf=\"!isLocating\" name=\"ai-compass-arrow\"></aui-icon>\n          <div *ngIf=\"isLocating\" class=\"a-spinner\" role=\"alert\">\n            <span class=\"a-spinner__circle\">\n              <span class=\"u-screen-reader-only\">{{ locatingAriaLabel }}</span>\n            </span>\n          </div>\n        </button>\n    </div>\n    <div *ngIf=\"hasSidebar\">\n      <ng-content></ng-content>\n    </div>\n  </aui-location-viewer>\n</div>\n","import { LambertModel } from './location.model';\n\nexport interface AddressModel {\n  id?: number;\n  addressRegId?: number;\n  crabAddressId?: number;\n  crabAddressType?: CrabAddressType;\n  formattedAddress?: string;\n  label?: string;\n  municipalityPost?: {\n    nisCode?: string;\n    municipality?: string;\n    antwerpDistrict?: string;\n    antwerpDistrictCode?: string;\n    postCode?: number;\n  };\n  street?: {\n    streetNameId?: number;\n    streetName?: string;\n    homonymAddition?: string;\n  };\n  houseNumber?: {\n    houseNumber?: string;\n    busNumber?: string;\n  };\n  addressPosition?: {\n    lambert72?: LambertModel;\n    wgs84?: LatLngModel;\n    geometryMethod?: string;\n  };\n  distance?: number;\n}\n\nenum CrabAddressType {\n  SUB = 'subadres',\n  MAIN = 'hoofdadres'\n}\n\nexport interface LatLngModel {\n  lat?: number;\n  lng?: number;\n}\n","export interface CascadingCoordinateRulesModel {\n  type?: CascadingCoordinateRulesType;\n  addressOptions?: ReverseGeocodeOptionsModel;\n  locationOptions?: GeoFeaturesOptionsModel;\n}\n\nexport enum CascadingCoordinateRulesType {\n  LOCATION = 'location',\n  ADDRESS = 'address'\n}\n\nexport interface ReverseGeocodeOptionsModel {\n  buffer?: number;\n  count?: number;\n  relevance?: boolean;\n}\n\nexport interface GeoFeaturesOptionsModel {\n  mapService?: string;\n  layerIds?: string;\n  returnGeometry?: boolean;\n  tolerance?: number;\n  buffer?: number;\n  count?: number;\n}\n","export interface LeafletTileLayerModel {\n  layer: LeafletLayer;\n  buttonLabel: string;\n}\n\ninterface LeafletLayer {\n  name: string;\n  url: string;\n  options?: any;\n}\n\nexport enum LeafletTileLayerType {\n  DEFAULT = 'default',\n  CUSTOM = 'custom'\n}\n","import { MapService } from '@acpaas-ui/ngx-leaflet';\nimport { Provider } from '@angular/core';\n\nexport function mapServiceFactory() {\n  return new MapService('browser');\n}\n\nexport const MAP_SERVICE_PROVIDER: Provider = {\n  provide: MapService,\n  useFactory: mapServiceFactory\n};\n","import { NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { LeafletModule } from '@acpaas-ui/ngx-leaflet';\nimport { IconModule } from '@acpaas-ui/ngx-icon';\nimport { NgxLocationPickerComponent } from './components/ngx-location-picker.component';\nimport { HighlightSearchDirective } from './directives/highlight-search.directive';\nimport { MAP_SERVICE_PROVIDER } from './map.provider';\n\nimport { LocationViewerModule } from '@acpaas-ui-widgets/ngx-location-viewer';\n\n@NgModule({\n  declarations: [\n    NgxLocationPickerComponent,\n    HighlightSearchDirective\n  ],\n  imports: [\n    HttpClientModule,\n    FormsModule,\n    CommonModule,\n    ReactiveFormsModule,\n    IconModule,\n    LeafletModule,\n    LocationViewerModule\n  ],\n  exports: [\n    NgxLocationPickerComponent,\n  ],\n  providers: [\n    MAP_SERVICE_PROVIDER\n  ]\n})\nexport class LocationPickerModule {\n}\n","/*\n * Public API Surface of ngx-location-picker\n */\n\nexport * from './lib/services/ngx-location-picker.service';\nexport * from './lib/services/ngx-location-picker.helper';\nexport * from './lib/components/ngx-location-picker.component';\nexport * from './lib/types/feature-layer.model';\nexport * from './lib/types/location.model';\nexport * from './lib/types/address.model';\nexport * from './lib/types/coordinate.model';\nexport * from './lib/types/cascading-rules.model';\nexport * from './lib/types/leaflet-tile-layer.model';\nexport * from './lib/types/tracking-options.model';\nexport * from './lib/ngx-location-picker.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.NgxLocationPickerHelper","i1.NgxLocationPickerService","i7.HighlightSearchDirective"],"mappings":"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"}