{"version":3,"file":"amin-karimi-agm-core.mjs","sources":["../../../packages/core/src/lib/services/maps-api-loader/maps-api-loader.ts","../../../packages/core/src/lib/services/google-maps-api-wrapper.ts","../../../packages/core/src/lib/services/managers/circle-manager.ts","../../../packages/core/src/lib/services/managers/data-layer-manager.ts","../../../packages/core/src/lib/services/fit-bounds.ts","../../../packages/core/src/lib/services/geocoder-service.ts","../../../packages/core/src/lib/utils/browser-globals.ts","../../../packages/core/src/lib/services/maps-api-loader/lazy-maps-api-loader.ts","../../../packages/core/src/lib/services/managers/marker-manager.ts","../../../packages/core/src/lib/services/managers/info-window-manager.ts","../../../packages/core/src/lib/services/managers/kml-layer-manager.ts","../../../packages/core/src/lib/services/managers/layer-manager.ts","../../../packages/core/src/lib/services/maps-api-loader/noop-maps-api-loader.ts","../../../packages/core/src/lib/utils/mvcarray-utils.ts","../../../packages/core/src/lib/services/managers/polygon-manager.ts","../../../packages/core/src/lib/services/managers/polyline-manager.ts","../../../packages/core/src/lib/services/managers/rectangle-manager.ts","../../../packages/core/src/lib/directives/bicycling-layer.ts","../../../packages/core/src/lib/directives/circle.ts","../../../packages/core/src/lib/directives/data-layer.ts","../../../packages/core/src/lib/directives/fit-bounds.ts","../../../packages/core/src/lib/directives/info-window.ts","../../../packages/core/src/lib/directives/kml-layer.ts","../../../packages/core/src/lib/directives/map.ts","../../../packages/core/src/lib/directives/marker.ts","../../../packages/core/src/lib/directives/polygon.ts","../../../packages/core/src/lib/directives/polyline-icon.ts","../../../packages/core/src/lib/directives/polyline-point.ts","../../../packages/core/src/lib/directives/polyline.ts","../../../packages/core/src/lib/directives/rectangle.ts","../../../packages/core/src/lib/directives/transit-layer.ts","../../../packages/core/src/lib/core.module.ts","../../../packages/core/src/public-api.ts","../../../packages/core/src/amin-karimi-agm-core.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport abstract class MapsAPILoader {\r\n  abstract load(): Promise<void>;\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { MapsAPILoader } from './maps-api-loader/maps-api-loader';\r\n\r\n/**\r\n * Wrapper class that handles the communication with the Google Maps Javascript\r\n * API v3\r\n */\r\n@Injectable()\r\nexport class GoogleMapsAPIWrapper {\r\n  private _map: Promise<google.maps.Map>;\r\n  private _mapResolver: (value?: google.maps.Map) => void;\r\n\r\n  constructor(private _loader: MapsAPILoader, private _zone: NgZone) {\r\n    this._map =\r\n      new Promise<google.maps.Map>((resolve) => { this._mapResolver = resolve; });\r\n  }\r\n\r\n  createMap(el: HTMLElement, mapOptions: google.maps.MapOptions): Promise<void> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._loader.load().then(() => {\r\n        const map = new google.maps.Map(el, mapOptions);\r\n        this._mapResolver(map);\r\n        return;\r\n      });\r\n    });\r\n  }\r\n\r\n  setMapOptions(options: google.maps.MapOptions) {\r\n    return this._zone.runOutsideAngular(() => {\r\n      this._map.then((m: google.maps.Map) => { m.setOptions(options); });\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Creates a google map marker with the map context\r\n   */\r\n  createMarker(options: google.maps.MarkerOptions = {}, addToMap: boolean = true):\r\n    Promise<google.maps.Marker> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then((map: google.maps.Map) => {\r\n        if (addToMap) {\r\n          options.map = map;\r\n        }\r\n        return new google.maps.Marker(options);\r\n      });\r\n    });\r\n  }\r\n\r\n  createInfoWindow(options?: google.maps.InfoWindowOptions): Promise<google.maps.InfoWindow> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then(() => new google.maps.InfoWindow(options));\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Creates a google.map.Circle for the current map.\r\n   */\r\n  createCircle(options: google.maps.CircleOptions): Promise<google.maps.Circle> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then((map: google.maps.Map) => {\r\n        options.map = map;\r\n        return new google.maps.Circle(options);\r\n      });\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Creates a google.map.Rectangle for the current map.\r\n   */\r\n  createRectangle(options: google.maps.RectangleOptions): Promise<google.maps.Rectangle> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then((map: google.maps.Map) => {\r\n        options.map = map;\r\n        return new google.maps.Rectangle(options);\r\n      });\r\n    });\r\n  }\r\n\r\n  createPolyline(options: google.maps.PolylineOptions): Promise<google.maps.Polyline> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this.getNativeMap().then((map: google.maps.Map) => {\r\n        const line = new google.maps.Polyline(options);\r\n        line.setMap(map);\r\n        return line;\r\n      });\r\n    });\r\n  }\r\n\r\n  createPolygon(options: google.maps.PolygonOptions): Promise<google.maps.Polygon> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this.getNativeMap().then((map: google.maps.Map) => {\r\n        const polygon = new google.maps.Polygon(options);\r\n        polygon.setMap(map);\r\n        return polygon;\r\n      });\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Creates a new google.map.Data layer for the current map\r\n   */\r\n  createDataLayer(options?: google.maps.Data.DataOptions): Promise<google.maps.Data> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then(m => {\r\n        const data = new google.maps.Data(options);\r\n        data.setMap(m);\r\n        return data;\r\n      });\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Creates a TransitLayer instance for a map\r\n   * @returns a new transit layer object\r\n   */\r\n  createTransitLayer(): Promise<google.maps.TransitLayer> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then((map: google.maps.Map) => {\r\n        const newLayer: google.maps.TransitLayer = new google.maps.TransitLayer();\r\n        newLayer.setMap(map);\r\n        return newLayer;\r\n      });\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Creates a BicyclingLayer instance for a map\r\n   * @returns a new bicycling layer object\r\n   */\r\n  createBicyclingLayer(): Promise<google.maps.BicyclingLayer> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then((map: google.maps.Map) => {\r\n        const newLayer: google.maps.BicyclingLayer = new google.maps.BicyclingLayer();\r\n        newLayer.setMap(map);\r\n        return newLayer;\r\n      });\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Determines if given coordinates are insite a Polygon path.\r\n   */\r\n  containsLocation(latLng: google.maps.LatLng, polygon: google.maps.Polygon): Promise<boolean> {\r\n    return this._map.then(() => google.maps.geometry.poly.containsLocation(latLng, polygon));\r\n  }\r\n\r\n  subscribeToMapEvent(eventName) {\r\n    return new Observable((observer) => {\r\n      this._map.then(m =>\r\n        m.addListener(eventName, (...evArgs) => this._zone.run(() => observer.next(evArgs)))\r\n      );\r\n    });\r\n  }\r\n\r\n  clearInstanceListeners() {\r\n    return this._zone.runOutsideAngular(() => {\r\n      this._map.then((map: google.maps.Map) => {\r\n        google.maps.event.clearInstanceListeners(map);\r\n      });\r\n    });\r\n  }\r\n\r\n  setCenter(latLng: google.maps.LatLngLiteral): Promise<void> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then((map: google.maps.Map) => map.setCenter(latLng));\r\n    });\r\n  }\r\n\r\n  getZoom(): Promise<number> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then((map: google.maps.Map) => map.getZoom());\r\n    });\r\n  }\r\n\r\n  getBounds(): Promise<google.maps.LatLngBounds> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then((map: google.maps.Map) => map.getBounds());\r\n    });\r\n  }\r\n\r\n  getMapTypeId(): Promise<google.maps.MapTypeId> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then((map: google.maps.Map) => map.getMapTypeId());\r\n    });\r\n  }\r\n\r\n  setZoom(zoom: number): Promise<void> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then((map: google.maps.Map) => map.setZoom(zoom));\r\n    });\r\n  }\r\n\r\n  getCenter(): Promise<google.maps.LatLng> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then((map: google.maps.Map) => map.getCenter());\r\n    });\r\n  }\r\n\r\n  panTo(latLng: google.maps.LatLng | google.maps.LatLngLiteral): Promise<void> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then((map) => map.panTo(latLng));\r\n    });\r\n  }\r\n\r\n  panBy(x: number, y: number): Promise<void> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then((map) => map.panBy(x, y));\r\n    });\r\n  }\r\n\r\n  fitBounds(latLng: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral, padding?: number | google.maps.Padding): Promise<void> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then((map) => map.fitBounds(latLng, padding));\r\n    });\r\n  }\r\n\r\n  panToBounds(latLng: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral, padding?: number | google.maps.Padding): Promise<void> {\r\n    return this._zone.runOutsideAngular(() => {\r\n      return this._map.then((map) => map.panToBounds(latLng, padding));\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Returns the native Google Maps Map instance. Be careful when using this instance directly.\r\n   */\r\n  getNativeMap(): Promise<google.maps.Map> { return this._map; }\r\n\r\n  /**\r\n   * Triggers the given event name on the map instance.\r\n   */\r\n  triggerMapEvent(eventName: string): Promise<void> {\r\n    return this._map.then((m) => google.maps.event.trigger(m, eventName));\r\n  }\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\n\r\nimport { Observable, Observer } from 'rxjs';\r\n\r\nimport { AgmCircle } from '../../directives/circle';\r\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\r\n\r\n@Injectable()\r\nexport class CircleManager {\r\n  private _circles: Map<AgmCircle, Promise<google.maps.Circle>> =\r\n      new Map<AgmCircle, Promise<google.maps.Circle>>();\r\n\r\n  constructor(private _apiWrapper: GoogleMapsAPIWrapper, private _zone: NgZone) {}\r\n\r\n  addCircle(circle: AgmCircle) {\r\n    this._circles.set(circle, this._apiWrapper.getNativeMap().then( () =>\r\n      this._apiWrapper.createCircle({\r\n        center: {lat: circle.latitude, lng: circle.longitude},\r\n        clickable: circle.clickable,\r\n        draggable: circle.draggable,\r\n        editable: circle.editable,\r\n        fillColor: circle.fillColor,\r\n        fillOpacity: circle.fillOpacity,\r\n        radius: circle.radius,\r\n        strokeColor: circle.strokeColor,\r\n        strokeOpacity: circle.strokeOpacity,\r\n        strokePosition: google.maps.StrokePosition[circle.strokePosition],\r\n        strokeWeight: circle.strokeWeight,\r\n        visible: circle.visible,\r\n        zIndex: circle.zIndex,\r\n      }))\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Removes the given circle from the map.\r\n   */\r\n  removeCircle(circle: AgmCircle): Promise<void> {\r\n    return this._circles.get(circle).then((c) => {\r\n      c.setMap(null);\r\n      this._circles.delete(circle);\r\n    });\r\n  }\r\n\r\n  async setOptions(circle: AgmCircle, options: google.maps.CircleOptions) {\r\n    return this._circles.get(circle).then((c) => {\r\n      const actualParam = options.strokePosition as any as keyof typeof google.maps.StrokePosition;\r\n      options.strokePosition = google.maps.StrokePosition[actualParam];\r\n      c.setOptions(options);\r\n    });\r\n  }\r\n\r\n  getBounds(circle: AgmCircle): Promise<google.maps.LatLngBounds> {\r\n    return this._circles.get(circle).then((c) => c.getBounds());\r\n  }\r\n\r\n  getCenter(circle: AgmCircle): Promise<google.maps.LatLng> {\r\n    return this._circles.get(circle).then((c) => c.getCenter());\r\n  }\r\n\r\n  getRadius(circle: AgmCircle): Promise<number> {\r\n    return this._circles.get(circle).then((c) => c.getRadius());\r\n  }\r\n\r\n  setCenter(circle: AgmCircle): Promise<void> {\r\n    return this._circles.get(circle).then(\r\n        c => c.setCenter({lat: circle.latitude, lng: circle.longitude}));\r\n  }\r\n\r\n  setEditable(circle: AgmCircle): Promise<void> {\r\n    return this._circles.get(circle).then(c => c.setEditable(circle.editable));\r\n  }\r\n\r\n  setDraggable(circle: AgmCircle): Promise<void> {\r\n    return this._circles.get(circle).then(c => c.setDraggable(circle.draggable));\r\n  }\r\n\r\n  setVisible(circle: AgmCircle): Promise<void> {\r\n    return this._circles.get(circle).then(c => c.setVisible(circle.visible));\r\n  }\r\n\r\n  setRadius(circle: AgmCircle): Promise<void> {\r\n    return this._circles.get(circle).then(c => c.setRadius(circle.radius));\r\n  }\r\n\r\n  getNativeCircle(circle: AgmCircle): Promise<google.maps.Circle> {\r\n    return this._circles.get(circle);\r\n  }\r\n\r\n  createEventObservable<T>(eventName: string, circle: AgmCircle): Observable<T> {\r\n    return new Observable((observer: Observer<T>) => {\r\n      let listener: google.maps.MapsEventListener = null;\r\n      this._circles.get(circle).then((c) => {\r\n        listener = c.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\r\n      });\r\n\r\n      return () => {\r\n        if (listener !== null) {\r\n          listener.remove();\r\n        }\r\n      };\r\n    });\r\n  }\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\nimport { Observable, Observer } from 'rxjs';\r\n\r\nimport { AgmDataLayer } from './../../directives/data-layer';\r\nimport { GoogleMapsAPIWrapper } from './../google-maps-api-wrapper';\r\n\r\n/**\r\n * Manages all Data Layers for a Google Map instance.\r\n */\r\n@Injectable()\r\nexport class DataLayerManager {\r\n  private _layers: Map<AgmDataLayer, Promise<google.maps.Data>> =\r\n  new Map<AgmDataLayer, Promise<google.maps.Data>>();\r\n\r\n  constructor(private _wrapper: GoogleMapsAPIWrapper, private _zone: NgZone) { }\r\n\r\n  /**\r\n   * Adds a new Data Layer to the map.\r\n   */\r\n  addDataLayer(layer: AgmDataLayer) {\r\n    const newLayer = this._wrapper.createDataLayer({\r\n      style: layer.style,\r\n    } as google.maps.Data.DataOptions)\r\n    .then(d => {\r\n      if (layer.geoJson) {\r\n        // NOTE: accessing \"features\" on google.maps.Data is undocumented\r\n        this.getDataFeatures(d, layer.geoJson).then(features => (d as any).features = features);\r\n      }\r\n      return d;\r\n    });\r\n    this._layers.set(layer, newLayer);\r\n  }\r\n\r\n  deleteDataLayer(layer: AgmDataLayer) {\r\n    this._layers.get(layer).then(l => {\r\n      l.setMap(null);\r\n      this._layers.delete(layer);\r\n    });\r\n  }\r\n\r\n  updateGeoJson(layer: AgmDataLayer, geoJson: object | string) {\r\n    this._layers.get(layer).then(l => {\r\n      l.forEach(feature => {\r\n        l.remove(feature);\r\n\r\n        // NOTE: accessing \"features\" on google.maps.Data is undocumented\r\n        const index = (l as any).features.indexOf(feature, 0);\r\n        if (index > -1) {\r\n          (l as any).features.splice(index, 1);\r\n        }\r\n      });\r\n      this.getDataFeatures(l, geoJson).then(features => (l as any).features = features);\r\n    });\r\n  }\r\n\r\n  setDataOptions(layer: AgmDataLayer, options: google.maps.Data.DataOptions)\r\n  {\r\n    this._layers.get(layer).then(l => {\r\n      l.setControlPosition(options.controlPosition);\r\n      l.setControls(options.controls);\r\n      l.setDrawingMode(options.drawingMode);\r\n      l.setStyle(options.style);\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Creates a Google Maps event listener for the given DataLayer as an Observable\r\n   */\r\n  createEventObservable<T>(eventName: string, layer: AgmDataLayer): Observable<T> {\r\n    return new Observable((observer: Observer<T>) => {\r\n      this._layers.get(layer).then((d: google.maps.Data) => {\r\n        d.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\r\n      });\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Extract features from a geoJson using google.maps Data Class\r\n   * @param d : google.maps.Data class instance\r\n   * @param geoJson : url or geojson object\r\n   */\r\n  getDataFeatures(d: google.maps.Data, geoJson: object | string): Promise<google.maps.Data.Feature[]> {\r\n    return new Promise<google.maps.Data.Feature[]>((resolve, reject) => {\r\n        if (typeof geoJson === 'object') {\r\n          try {\r\n            const features = d.addGeoJson(geoJson);\r\n            resolve(features);\r\n          } catch (e) {\r\n            reject(e);\r\n          }\r\n        } else if (typeof geoJson === 'string') {\r\n          d.loadGeoJson(geoJson, null, resolve);\r\n        } else {\r\n          reject(`Impossible to extract features from geoJson: wrong argument type`);\r\n        }\r\n      });\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, from, Observable, timer } from 'rxjs';\r\nimport {\r\n  flatMap,\r\n  map,\r\n  sample,\r\n  shareReplay,\r\n  switchMap,\r\n} from 'rxjs/operators';\r\nimport { MapsAPILoader } from './maps-api-loader/maps-api-loader';\r\n\r\nexport interface FitBoundsDetails {\r\n  latLng: google.maps.LatLng | google.maps.LatLngLiteral;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport type BoundsMap = Map<string, google.maps.LatLng | google.maps.LatLngLiteral>;\r\n\r\n/**\r\n * Class to implement when you what to be able to make it work with the auto fit bounds feature\r\n * of AGM.\r\n */\r\nexport abstract class FitBoundsAccessor {\r\n  abstract getFitBoundsDetails$(): Observable<FitBoundsDetails>;\r\n}\r\n\r\n/**\r\n * The FitBoundsService is responsible for computing the bounds of the a single map.\r\n */\r\n@Injectable()\r\nexport class FitBoundsService {\r\n  protected readonly bounds$: Observable<google.maps.LatLngBounds>;\r\n  protected readonly _boundsChangeSampleTime$ = new BehaviorSubject<number>(200);\r\n  protected readonly _includeInBounds$ = new BehaviorSubject<BoundsMap>(new Map<string, google.maps.LatLng | google.maps.LatLngLiteral>());\r\n\r\n  constructor(loader: MapsAPILoader) {\r\n    this.bounds$ = from(loader.load()).pipe(\r\n      flatMap(() => this._includeInBounds$),\r\n      sample(\r\n        this._boundsChangeSampleTime$.pipe(switchMap(time => timer(0, time))),\r\n      ),\r\n      map(includeInBounds => this._generateBounds(includeInBounds)),\r\n      shareReplay(1),\r\n    );\r\n  }\r\n\r\n  private _generateBounds(\r\n    includeInBounds: Map<string, google.maps.LatLng | google.maps.LatLngLiteral>\r\n  ) {\r\n    const bounds = new google.maps.LatLngBounds();\r\n    includeInBounds.forEach(b => bounds.extend(b));\r\n    return bounds;\r\n  }\r\n\r\n  addToBounds(latLng: google.maps.LatLng | google.maps.LatLngLiteral) {\r\n    const id = this._createIdentifier(latLng);\r\n    if (this._includeInBounds$.value.has(id)) {\r\n      return;\r\n    }\r\n    const boundsMap = this._includeInBounds$.value;\r\n    boundsMap.set(id, latLng);\r\n    this._includeInBounds$.next(boundsMap);\r\n  }\r\n\r\n  removeFromBounds(latLng: google.maps.LatLng | google.maps.LatLngLiteral) {\r\n    const boundsMap = this._includeInBounds$.value;\r\n    boundsMap.delete(this._createIdentifier(latLng));\r\n    this._includeInBounds$.next(boundsMap);\r\n  }\r\n\r\n  changeFitBoundsChangeSampleTime(timeMs: number) {\r\n    this._boundsChangeSampleTime$.next(timeMs);\r\n  }\r\n\r\n  getBounds$(): Observable<google.maps.LatLngBounds> {\r\n    return this.bounds$;\r\n  }\r\n\r\n  protected _createIdentifier(latLng: google.maps.LatLng | google.maps.LatLngLiteral): string {\r\n    return `${latLng.lat}+${latLng.lng}`;\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { bindCallback, ConnectableObservable, Observable, of, ReplaySubject, throwError } from 'rxjs';\r\nimport { map, multicast, switchMap } from 'rxjs/operators';\r\nimport { MapsAPILoader } from './maps-api-loader/maps-api-loader';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AgmGeocoder {\r\n  protected readonly geocoder$: Observable<google.maps.Geocoder>;\r\n\r\n  constructor(loader: MapsAPILoader) {\r\n    const connectableGeocoder$ = new Observable(subscriber => {\r\n      loader.load().then(() => subscriber.next());\r\n    })\r\n      .pipe(\r\n        map(() => this._createGeocoder()),\r\n        multicast(new ReplaySubject(1)),\r\n      ) as ConnectableObservable<google.maps.Geocoder>;\r\n\r\n    connectableGeocoder$.connect(); // ignore the subscription\r\n    // since we will remain subscribed till application exits\r\n\r\n    this.geocoder$ = connectableGeocoder$;\r\n  }\r\n\r\n  geocode(request: google.maps.GeocoderRequest): Observable<google.maps.GeocoderResult[]> {\r\n    return this.geocoder$.pipe(\r\n      switchMap((geocoder) => this._getGoogleResults(geocoder, request))\r\n    );\r\n  }\r\n\r\n  private _getGoogleResults(geocoder: google.maps.Geocoder, request: google.maps.GeocoderRequest):\r\n       Observable<google.maps.GeocoderResult[]> {\r\n    const geocodeObservable = bindCallback(geocoder.geocode);\r\n    return geocodeObservable(request).pipe(\r\n      switchMap(([results, status]) => {\r\n        if (status === google.maps.GeocoderStatus.OK) {\r\n          return of(results);\r\n        }\r\n\r\n        return throwError(status);\r\n      })\r\n    );\r\n  }\r\n\r\n  private _createGeocoder() {\r\n    return new google.maps.Geocoder();\r\n  }\r\n}\r\n","import { Provider } from '@angular/core';\r\n\r\nexport class WindowRef {\r\n  getNativeWindow(): any { return window; }\r\n}\r\n\r\nexport class DocumentRef {\r\n  getNativeDocument(): any { return document; }\r\n}\r\n\r\nexport const BROWSER_GLOBALS_PROVIDERS: Provider[] = [WindowRef, DocumentRef];\r\n","import { Inject, Injectable, InjectionToken, LOCALE_ID, Optional } from '@angular/core';\r\n\r\nimport { DocumentRef, WindowRef } from '../../utils/browser-globals';\r\n\r\nimport { MapsAPILoader } from './maps-api-loader';\r\n\r\nexport enum GoogleMapsScriptProtocol {\r\n  HTTP = 1,\r\n  HTTPS = 2,\r\n  AUTO = 3,\r\n}\r\n\r\n/**\r\n * Token for the config of the LazyMapsAPILoader. Please provide an object of type {@link\r\n * LazyMapsAPILoaderConfig}.\r\n */\r\nexport const LAZY_MAPS_API_CONFIG = new InjectionToken<LazyMapsAPILoaderConfigLiteral>('angular-google-maps LAZY_MAPS_API_CONFIG');\r\n\r\n/**\r\n * Configuration for the {@link LazyMapsAPILoader}.\r\n */\r\nexport interface LazyMapsAPILoaderConfigLiteral {\r\n  /**\r\n   * The Google Maps API Key (see:\r\n   * https://developers.google.com/maps/documentation/javascript/get-api-key)\r\n   */\r\n  apiKey?: string;\r\n\r\n  /**\r\n   * The Google Maps client ID (for premium plans).\r\n   * When you have a Google Maps APIs Premium Plan license, you must authenticate\r\n   * your application with either an API key or a client ID.\r\n   * The Google Maps API will fail to load if both a client ID and an API key are included.\r\n   */\r\n  clientId?: string;\r\n\r\n  /**\r\n   * The Google Maps channel name (for premium plans).\r\n   * A channel parameter is an optional parameter that allows you to track usage under your client\r\n   * ID by assigning a distinct channel to each of your applications.\r\n   */\r\n  channel?: string;\r\n\r\n  /**\r\n   * Google Maps API version.\r\n   */\r\n  apiVersion?: string;\r\n\r\n  /**\r\n   * Host and Path used for the `<script>` tag.\r\n   */\r\n  hostAndPath?: string;\r\n\r\n  /**\r\n   * Protocol used for the `<script>` tag.\r\n   */\r\n  protocol?: GoogleMapsScriptProtocol;\r\n\r\n  /**\r\n   * Defines which Google Maps libraries should get loaded.\r\n   */\r\n  libraries?: string[];\r\n\r\n  /**\r\n   * The default bias for the map behavior is US.\r\n   * If you wish to alter your application to serve different map tiles or bias the\r\n   * application, you can overwrite the default behavior (US) by defining a `region`.\r\n   * See https://developers.google.com/maps/documentation/javascript/basics#Region\r\n   */\r\n  region?: string;\r\n\r\n  /**\r\n   * The Google Maps API uses the browser's preferred language when displaying\r\n   * textual information. If you wish to overwrite this behavior and force the API\r\n   * to use a given language, you can use this setting.\r\n   * See https://developers.google.com/maps/documentation/javascript/basics#Language\r\n   */\r\n  language?: string;\r\n}\r\n\r\n@Injectable()\r\nexport class LazyMapsAPILoader extends MapsAPILoader {\r\n  protected _scriptLoadingPromise: Promise<void>;\r\n  protected _config: LazyMapsAPILoaderConfigLiteral;\r\n  protected _windowRef: WindowRef;\r\n  protected _documentRef: DocumentRef;\r\n  protected readonly _SCRIPT_ID: string = 'agmGoogleMapsApiScript';\r\n  protected readonly callbackName: string = `agmLazyMapsAPILoader`;\r\n\r\n  constructor(@Optional() @Inject(LAZY_MAPS_API_CONFIG) config: any = null, w: WindowRef, d: DocumentRef,\r\n              @Inject(LOCALE_ID) private localeId: string) {\r\n    super();\r\n    this._config = config || {};\r\n    this._windowRef = w;\r\n    this._documentRef = d;\r\n  }\r\n\r\n  load(): Promise<void> {\r\n    const window = this._windowRef.getNativeWindow() as any;\r\n    if (window.google && window.google.maps) {\r\n      // Google maps already loaded on the page.\r\n      return Promise.resolve();\r\n    }\r\n\r\n    if (this._scriptLoadingPromise) {\r\n      return this._scriptLoadingPromise;\r\n    }\r\n\r\n    // this can happen in HMR situations or Stackblitz.io editors.\r\n    const scriptOnPage = this._documentRef.getNativeDocument().getElementById(this._SCRIPT_ID);\r\n    if (scriptOnPage) {\r\n      this._assignScriptLoadingPromise(scriptOnPage);\r\n      return this._scriptLoadingPromise;\r\n    }\r\n\r\n    const script = this._documentRef.getNativeDocument().createElement('script');\r\n    script.type = 'text/javascript';\r\n    script.async = true;\r\n    script.defer = true;\r\n    script.id = this._SCRIPT_ID;\r\n    script.src = this._getScriptSrc(this.callbackName);\r\n    this._assignScriptLoadingPromise(script);\r\n    this._documentRef.getNativeDocument().body.appendChild(script);\r\n    return this._scriptLoadingPromise;\r\n  }\r\n\r\n  private _assignScriptLoadingPromise(scriptElem: HTMLElement) {\r\n    this._scriptLoadingPromise = new Promise((resolve, reject) => {\r\n      this._windowRef.getNativeWindow()[this.callbackName] = () => {\r\n        resolve();\r\n      };\r\n\r\n      scriptElem.onerror = (error: Event) => {\r\n        reject(error);\r\n      };\r\n    });\r\n  }\r\n\r\n  protected _getScriptSrc(callbackName: string): string {\r\n    const protocolType: GoogleMapsScriptProtocol =\r\n        (this._config && this._config.protocol) || GoogleMapsScriptProtocol.HTTPS;\r\n    let protocol: string;\r\n\r\n    switch (protocolType) {\r\n      case GoogleMapsScriptProtocol.AUTO:\r\n        protocol = '';\r\n        break;\r\n      case GoogleMapsScriptProtocol.HTTP:\r\n        protocol = 'http:';\r\n        break;\r\n      case GoogleMapsScriptProtocol.HTTPS:\r\n        protocol = 'https:';\r\n        break;\r\n    }\r\n\r\n    const hostAndPath: string = this._config.hostAndPath || 'maps.googleapis.com/maps/api/js';\r\n    const queryParams: {[key: string]: string | string[]} = {\r\n      v: this._config.apiVersion || 'quarterly',\r\n      callback: callbackName,\r\n      key: this._config.apiKey,\r\n      client: this._config.clientId,\r\n      channel: this._config.channel,\r\n      libraries: this._config.libraries,\r\n      region: this._config.region,\r\n      language: this._config.language || (this.localeId !== 'en-US' ? this.localeId : null),\r\n    };\r\n    const params: string = Object.keys(queryParams)\r\n                               .filter((k: string) => queryParams[k] != null)\r\n                               .filter((k: string) => {\r\n                                 // remove empty arrays\r\n                                 return !Array.isArray(queryParams[k]) ||\r\n                                     (Array.isArray(queryParams[k]) && queryParams[k].length > 0);\r\n                               })\r\n                               .map((k: string) => {\r\n                                 // join arrays as comma seperated strings\r\n                                 const i = queryParams[k];\r\n                                 if (Array.isArray(i)) {\r\n                                   return {key: k, value: i.join(',')};\r\n                                 }\r\n                                 return {key: k, value: queryParams[k]};\r\n                               })\r\n                               .map((entry: {key: string, value: string}) => {\r\n                                 return `${entry.key}=${entry.value}`;\r\n                               })\r\n                               .join('&');\r\n    return `${protocol}//${hostAndPath}?${params}`;\r\n  }\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { AgmMarker } from './../../directives/marker';\r\n\r\nimport { GoogleMapsAPIWrapper } from './../google-maps-api-wrapper';\r\n\r\n@Injectable()\r\nexport class MarkerManager {\r\n  protected _markers: Map<AgmMarker, Promise<google.maps.Marker>> =\r\n    new Map<AgmMarker, Promise<google.maps.Marker>>();\r\n\r\n  constructor(protected _mapsWrapper: GoogleMapsAPIWrapper, protected _zone: NgZone) { }\r\n\r\n  async convertAnimation(uiAnim: keyof typeof google.maps.Animation | null) {\r\n    if (uiAnim === null) {\r\n      return null;\r\n    } else {\r\n      return this._mapsWrapper.getNativeMap().then(() => google.maps.Animation[uiAnim]);\r\n    }\r\n  }\r\n\r\n  deleteMarker(markerDirective: AgmMarker): Promise<void> {\r\n    const markerPromise = this._markers.get(markerDirective);\r\n    if (markerPromise == null) {\r\n      // marker already deleted\r\n      return Promise.resolve();\r\n    }\r\n    return markerPromise.then((marker: google.maps.Marker) => {\r\n      return this._zone.run(() => {\r\n        marker.setMap(null);\r\n        this._markers.delete(markerDirective);\r\n      });\r\n    });\r\n  }\r\n\r\n  updateMarkerPosition(marker: AgmMarker): Promise<void> {\r\n    return this._markers.get(marker).then(\r\n      (m: google.maps.Marker) => m.setPosition({ lat: marker.latitude, lng: marker.longitude }));\r\n  }\r\n\r\n  updateTitle(marker: AgmMarker): Promise<void> {\r\n    return this._markers.get(marker).then((m: google.maps.Marker) => m.setTitle(marker.title));\r\n  }\r\n\r\n  updateLabel(marker: AgmMarker): Promise<void> {\r\n    return this._markers.get(marker).then((m: google.maps.Marker) => { m.setLabel(marker.label); });\r\n  }\r\n\r\n  updateDraggable(marker: AgmMarker): Promise<void> {\r\n    return this._markers.get(marker).then((m: google.maps.Marker) => m.setDraggable(marker.draggable));\r\n  }\r\n\r\n  updateIcon(marker: AgmMarker): Promise<void> {\r\n    return this._markers.get(marker).then((m: google.maps.Marker) => m.setIcon(marker.iconUrl));\r\n  }\r\n\r\n  updateOpacity(marker: AgmMarker): Promise<void> {\r\n    return this._markers.get(marker).then((m: google.maps.Marker) => m.setOpacity(marker.opacity));\r\n  }\r\n\r\n  updateVisible(marker: AgmMarker): Promise<void> {\r\n    return this._markers.get(marker).then((m: google.maps.Marker) => m.setVisible(marker.visible));\r\n  }\r\n\r\n  updateZIndex(marker: AgmMarker): Promise<void> {\r\n    return this._markers.get(marker).then((m: google.maps.Marker) => m.setZIndex(marker.zIndex));\r\n  }\r\n\r\n  updateClickable(marker: AgmMarker): Promise<void> {\r\n    return this._markers.get(marker).then((m: google.maps.Marker) => m.setClickable(marker.clickable));\r\n  }\r\n\r\n  async updateAnimation(marker: AgmMarker) {\r\n    const m = await this._markers.get(marker);\r\n    m.setAnimation(await this.convertAnimation(marker.animation));\r\n  }\r\n\r\n  addMarker(marker: AgmMarker) {\r\n    const markerPromise = new Promise<google.maps.Marker>(async (resolve) =>\r\n      this._mapsWrapper.createMarker({\r\n        position: { lat: marker.latitude, lng: marker.longitude },\r\n        label: marker.label,\r\n        draggable: marker.draggable,\r\n        icon: marker.iconUrl,\r\n        opacity: marker.opacity,\r\n        visible: marker.visible,\r\n        zIndex: marker.zIndex,\r\n        title: marker.title,\r\n        clickable: marker.clickable,\r\n        animation: await this.convertAnimation(marker.animation),\r\n      }).then(resolve));\r\n    this._markers.set(marker, markerPromise);\r\n  }\r\n\r\n  getNativeMarker(marker: AgmMarker): Promise<google.maps.Marker> {\r\n    return this._markers.get(marker);\r\n  }\r\n  // | google.maps.MarkerChangeOptionEventNames\r\n  createEventObservable(\r\n    eventName: string,\r\n    marker: AgmMarker): Observable<any> {\r\n    return new Observable(observer => {\r\n      this._markers.get(marker).then(m => {\r\n        // m.addListener(eventName, e => this._zone.run(() => observer.next(e)))\r\n        google.maps.event.addListener(m, eventName, e => this._zone.run(() => observer.next(e)))\r\n        // m.addListener(eventName, e => console.log('dsdsddsd', e, observer))\r\n      }\r\n      );\r\n    });\r\n  }\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\nimport { Observable, Observer } from 'rxjs';\r\n\r\nimport { AgmInfoWindow } from '../../directives/info-window';\r\n\r\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\r\nimport { MarkerManager } from './marker-manager';\r\n\r\n@Injectable()\r\nexport class InfoWindowManager {\r\n  private _infoWindows: Map<AgmInfoWindow, Promise<google.maps.InfoWindow>> =\r\n      new Map<AgmInfoWindow, Promise<google.maps.InfoWindow>>();\r\n\r\n  constructor(\r\n      private _mapsWrapper: GoogleMapsAPIWrapper, private _zone: NgZone,\r\n      private _markerManager: MarkerManager) {}\r\n\r\n  deleteInfoWindow(infoWindow: AgmInfoWindow): Promise<void> {\r\n    const iWindow = this._infoWindows.get(infoWindow);\r\n    if (iWindow == null) {\r\n      // info window already deleted\r\n      return Promise.resolve();\r\n    }\r\n    return iWindow.then((i: google.maps.InfoWindow) => {\r\n      return this._zone.run(() => {\r\n        i.close();\r\n        this._infoWindows.delete(infoWindow);\r\n      });\r\n    });\r\n  }\r\n\r\n  setPosition(infoWindow: AgmInfoWindow): Promise<void> {\r\n    return this._infoWindows.get(infoWindow).then((i: google.maps.InfoWindow) => i.setPosition({\r\n      lat: infoWindow.latitude,\r\n      lng: infoWindow.longitude,\r\n    }));\r\n  }\r\n\r\n  setZIndex(infoWindow: AgmInfoWindow): Promise<void> {\r\n    return this._infoWindows.get(infoWindow)\r\n        .then((i: google.maps.InfoWindow) => i.setZIndex(infoWindow.zIndex));\r\n  }\r\n\r\n  open(infoWindow: AgmInfoWindow): Promise<void> {\r\n    return this._infoWindows.get(infoWindow).then((w) => {\r\n      if (infoWindow.hostMarker != null) {\r\n        return this._markerManager.getNativeMarker(infoWindow.hostMarker).then((marker) => {\r\n          return this._mapsWrapper.getNativeMap().then((map) => w.open(map, marker));\r\n        });\r\n      }\r\n      return this._mapsWrapper.getNativeMap().then((map) => w.open(map));\r\n    });\r\n  }\r\n\r\n  close(infoWindow: AgmInfoWindow): Promise<void> {\r\n    return this._infoWindows.get(infoWindow).then((w) => w.close());\r\n  }\r\n\r\n  setOptions(infoWindow: AgmInfoWindow, options: google.maps.InfoWindowOptions) {\r\n    return this._infoWindows.get(infoWindow).then((i: google.maps.InfoWindow) => i.setOptions(options));\r\n  }\r\n\r\n  addInfoWindow(infoWindow: AgmInfoWindow) {\r\n    const options: google.maps.InfoWindowOptions = {\r\n      content: infoWindow.content,\r\n      maxWidth: infoWindow.maxWidth,\r\n      zIndex: infoWindow.zIndex,\r\n      disableAutoPan: infoWindow.disableAutoPan,\r\n    };\r\n    if (typeof infoWindow.latitude === 'number' && typeof infoWindow.longitude === 'number') {\r\n      options.position = {lat: infoWindow.latitude, lng: infoWindow.longitude};\r\n    }\r\n    const infoWindowPromise = this._mapsWrapper.createInfoWindow(options);\r\n    this._infoWindows.set(infoWindow, infoWindowPromise);\r\n  }\r\n\r\n   /**\r\n    * Creates a Google Maps event listener for the given InfoWindow as an Observable\r\n    */\r\n  createEventObservable<T>(eventName: string, infoWindow: AgmInfoWindow): Observable<T> {\r\n    return new Observable((observer: Observer<T>) => {\r\n      this._infoWindows.get(infoWindow).then((i: google.maps.InfoWindow) => {\r\n        i.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\r\n      });\r\n    });\r\n  }\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\nimport { Observable, Observer } from 'rxjs';\r\n\r\nimport { AgmKmlLayer } from './../../directives/kml-layer';\r\nimport { GoogleMapsAPIWrapper } from './../google-maps-api-wrapper';\r\n\r\n/**\r\n * Manages all KML Layers for a Google Map instance.\r\n */\r\n@Injectable()\r\nexport class KmlLayerManager {\r\n  private _layers: Map<AgmKmlLayer, Promise<google.maps.KmlLayer>> =\r\n      new Map<AgmKmlLayer, Promise<google.maps.KmlLayer>>();\r\n\r\n  constructor(private _wrapper: GoogleMapsAPIWrapper, private _zone: NgZone) {}\r\n\r\n  /**\r\n   * Adds a new KML Layer to the map.\r\n   */\r\n  addKmlLayer(layer: AgmKmlLayer) {\r\n    const newLayer = this._wrapper.getNativeMap().then(m => {\r\n      return new google.maps.KmlLayer({\r\n        clickable: layer.clickable,\r\n        map: m,\r\n        preserveViewport: layer.preserveViewport,\r\n        screenOverlays: layer.screenOverlays,\r\n        suppressInfoWindows: layer.suppressInfoWindows,\r\n        url: layer.url,\r\n        zIndex: layer.zIndex,\r\n      });\r\n    });\r\n    this._layers.set(layer, newLayer);\r\n  }\r\n\r\n  setOptions(layer: AgmKmlLayer, options: google.maps.KmlLayerOptions) {\r\n    this._layers.get(layer).then(l => l.setOptions(options));\r\n  }\r\n\r\n  deleteKmlLayer(layer: AgmKmlLayer) {\r\n    this._layers.get(layer).then(l => {\r\n      l.setMap(null);\r\n      this._layers.delete(layer);\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Creates a Google Maps event listener for the given KmlLayer as an Observable\r\n   */\r\n  createEventObservable<T>(eventName: string, layer: AgmKmlLayer): Observable<T> {\r\n    return new Observable((observer: Observer<T>) => {\r\n      this._layers.get(layer).then((m: google.maps.KmlLayer) => {\r\n        m.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\r\n      });\r\n    });\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AgmBicyclingLayer } from '../../directives/bicycling-layer';\r\nimport { AgmTransitLayer } from '../../directives/transit-layer';\r\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\r\n\r\n/**\r\n * This class manages Transit and Bicycling Layers for a Google Map instance.\r\n */\r\n\r\n@Injectable()\r\nexport class LayerManager {\r\n    private _layers: Map<AgmTransitLayer | AgmBicyclingLayer, Promise<google.maps.TransitLayer | google.maps.BicyclingLayer>> =\r\n        new Map<AgmTransitLayer | AgmBicyclingLayer, Promise<google.maps.TransitLayer | google.maps.BicyclingLayer>>();\r\n\r\n    constructor(private _wrapper: GoogleMapsAPIWrapper) {}\r\n\r\n    /**\r\n     * Adds a transit layer to a map instance.\r\n     * @param layer - a TransitLayer object\r\n     * @param _options - TransitLayerOptions options\r\n     * @returns void\r\n     */\r\n    addTransitLayer(layer: AgmTransitLayer): void {\r\n        const newLayer = this._wrapper.createTransitLayer();\r\n        this._layers.set(layer, newLayer);\r\n    }\r\n\r\n    /**\r\n     * Adds a bicycling layer to a map instance.\r\n     * @param layer - a bicycling layer object\r\n     * @param _options - BicyclingLayer options\r\n     * @returns void\r\n     */\r\n    addBicyclingLayer(layer: AgmBicyclingLayer): void {\r\n        const newLayer = this._wrapper.createBicyclingLayer();\r\n        this._layers.set(layer, newLayer);\r\n    }\r\n\r\n    /**\r\n     * Deletes a map layer\r\n     * @param layer - the layer to delete\r\n     */\r\n    deleteLayer(layer: AgmTransitLayer | AgmBicyclingLayer): Promise<void> {\r\n        return this._layers.get(layer).then(currentLayer => {\r\n            currentLayer.setMap(null);\r\n            this._layers.delete(layer);\r\n        });\r\n    }\r\n}\r\n","import { MapsAPILoader } from './maps-api-loader';\r\n\r\n/**\r\n * When using the NoOpMapsAPILoader, the Google Maps API must be added to the page via a `<script>`\r\n * Tag.\r\n * It's important that the Google Maps API script gets loaded first on the page.\r\n */\r\nexport class NoOpMapsAPILoader implements MapsAPILoader {\r\n  load(): Promise<void> {\r\n    if (!(window as any).google || !(window as any).google.maps) {\r\n      throw new Error(\r\n          'Google Maps API not loaded on page. Make sure window.google.maps is available!');\r\n    }\r\n    return Promise.resolve();\r\n  }\r\n}\r\n","import { fromEventPattern, Observable } from 'rxjs';\r\n\r\nexport function createMVCEventObservable<T>(array: google.maps.MVCArray<T>): Observable<MVCEvent<T>> {\r\n  const eventNames = ['insert_at', 'remove_at', 'set_at'];\r\n  return fromEventPattern(\r\n    handler => eventNames.map(eventName => array.addListener(eventName,\r\n      (index: number, previous?: T) => handler.apply(array, [{ newArr: array.getArray(), eventName, index, previous } as MVCEvent<T>]))),\r\n    (_handler, evListeners: google.maps.MapsEventListener[]) => evListeners.forEach(evListener => evListener.remove()));\r\n}\r\n\r\nexport type MvcEventType = 'insert_at' | 'remove_at' | 'set_at';\r\n\r\nexport interface MVCEvent<T> {\r\n  newArr: T[];\r\n  eventName: MvcEventType;\r\n  index: number;\r\n  previous?: T;\r\n}\r\n\r\nexport class MvcArrayMock<T> implements google.maps.MVCArray<T> {\r\n  private vals: T[] = [];\r\n  private listeners: {\r\n    'remove_at': ((i: number, r: T) => void)[];\r\n    'insert_at': ((i: number) => void)[];\r\n    'set_at': ((i: number, val: T) => void)[];\r\n  } = {\r\n      remove_at: [],\r\n      insert_at: [],\r\n      set_at: [],\r\n    };\r\n  clear(): void {\r\n    for (let i = this.vals.length - 1; i >= 0; i--) {\r\n      this.removeAt(i);\r\n    }\r\n  }\r\n  getArray(): T[] {\r\n    return [...this.vals];\r\n  }\r\n  getAt(i: number): T {\r\n    return this.vals[i];\r\n  }\r\n  getLength(): number {\r\n    return this.vals.length;\r\n  }\r\n  insertAt(i: number, elem: T): void {\r\n    this.vals.splice(i, 0, elem);\r\n    this.listeners.insert_at.forEach(listener => listener(i));\r\n  }\r\n  pop(): T {\r\n    const deleted = this.vals.pop();\r\n    this.listeners.remove_at.forEach(listener => listener(this.vals.length, deleted));\r\n    return deleted;\r\n  }\r\n  push(elem: T): number {\r\n    this.vals.push(elem);\r\n    this.listeners.insert_at.forEach(listener => listener(this.vals.length - 1));\r\n    return this.vals.length;\r\n  }\r\n  removeAt(i: number): T {\r\n    const deleted = this.vals.splice(i, 1)[0];\r\n    this.listeners.remove_at.forEach(listener => listener(i, deleted));\r\n    return deleted;\r\n  }\r\n  setAt(i: number, elem: T): void {\r\n    const deleted = this.vals[i];\r\n    this.vals[i] = elem;\r\n    this.listeners.set_at.forEach(listener => listener(i, deleted));\r\n  }\r\n  forEach(callback: (elem: T, i: number) => void): void {\r\n    this.vals.forEach(callback);\r\n  }\r\n  addListener(eventName: 'remove_at' | 'insert_at' | 'set_at', handler: (...args: any[]) => void): google.maps.MapsEventListener {\r\n    const listenerArr = this.listeners[eventName];\r\n    listenerArr.push(handler);\r\n    return {\r\n      remove: () => {\r\n        listenerArr.splice(listenerArr.indexOf(handler), 1);\r\n      },\r\n    };\r\n  }\r\n\r\n  bindTo(): never { throw new Error('Not implemented'); }\r\n  changed(): never { throw new Error('Not implemented'); }\r\n  get(): never { throw new Error('Not implemented'); }\r\n  notify(): never { throw new Error('Not implemented'); }\r\n  set(): never { throw new Error('Not implemented'); }\r\n  setValues(): never { throw new Error('Not implemented'); }\r\n  unbind(): never { throw new Error('Not implemented'); }\r\n  unbindAll(): never { throw new Error('Not implemented'); }\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\nimport { merge, Observable, Observer } from 'rxjs';\r\nimport { map, skip, startWith, switchMap } from 'rxjs/operators';\r\n\r\nimport { AgmPolygon } from '../../directives/polygon';\r\nimport { createMVCEventObservable, MVCEvent } from '../../utils/mvcarray-utils';\r\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\r\n\r\n@Injectable()\r\nexport class PolygonManager {\r\n  private _polygons: Map<AgmPolygon, Promise<google.maps.Polygon>> =\r\n    new Map<AgmPolygon, Promise<google.maps.Polygon>>();\r\n\r\n  constructor(private _mapsWrapper: GoogleMapsAPIWrapper, private _zone: NgZone) { }\r\n\r\n  addPolygon(path: AgmPolygon) {\r\n    const polygonPromise = this._mapsWrapper.createPolygon({\r\n      clickable: path.clickable,\r\n      draggable: path.draggable,\r\n      editable: path.editable,\r\n      fillColor: path.fillColor,\r\n      fillOpacity: path.fillOpacity,\r\n      geodesic: path.geodesic,\r\n      paths: path.paths,\r\n      strokeColor: path.strokeColor,\r\n      strokeOpacity: path.strokeOpacity,\r\n      strokeWeight: path.strokeWeight,\r\n      visible: path.visible,\r\n      zIndex: path.zIndex,\r\n    });\r\n    this._polygons.set(path, polygonPromise);\r\n  }\r\n\r\n  updatePolygon(polygon: AgmPolygon): Promise<void> {\r\n    const m = this._polygons.get(polygon);\r\n    if (m == null) {\r\n      return Promise.resolve();\r\n    }\r\n    return m.then((l: google.maps.Polygon) => this._zone.run(() => { l.setPaths(polygon.paths); }));\r\n  }\r\n\r\n  setPolygonOptions(path: AgmPolygon, options: { [propName: string]: any }): Promise<void> {\r\n    return this._polygons.get(path).then((l: google.maps.Polygon) => { l.setOptions(options); });\r\n  }\r\n\r\n  deletePolygon(paths: AgmPolygon): Promise<void> {\r\n    const m = this._polygons.get(paths);\r\n    if (m == null) {\r\n      return Promise.resolve();\r\n    }\r\n    return m.then((l: google.maps.Polygon) => {\r\n      return this._zone.run(() => {\r\n        l.setMap(null);\r\n        this._polygons.delete(paths);\r\n      });\r\n    });\r\n  }\r\n\r\n  getPath(polygonDirective: AgmPolygon): Promise<google.maps.LatLng[]> {\r\n    return this._polygons.get(polygonDirective)\r\n      .then((polygon) => polygon.getPath().getArray());\r\n  }\r\n\r\n  getPaths(polygonDirective: AgmPolygon): Promise<google.maps.LatLng[][]> {\r\n    return this._polygons.get(polygonDirective)\r\n      .then((polygon) => polygon.getPaths().getArray().map((p) => p.getArray()));\r\n  }\r\n\r\n  createEventObservable<T>(eventName: string, path: AgmPolygon): Observable<T> {\r\n    return new Observable((observer: Observer<T>) => {\r\n      this._polygons.get(path).then((l: google.maps.Polygon) => {\r\n        l.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\r\n      });\r\n    });\r\n  }\r\n\r\n  async createPathEventObservable(agmPolygon: AgmPolygon):\r\n        Promise<Observable<MVCEvent<google.maps.LatLng[] | google.maps.LatLngLiteral[]>>> {\r\n    const polygon = await this._polygons.get(agmPolygon);\r\n    const paths = polygon.getPaths();\r\n    const pathsChanges$ = createMVCEventObservable(paths);\r\n    return pathsChanges$.pipe(\r\n      startWith(({ newArr: paths.getArray() } as MVCEvent<google.maps.MVCArray<google.maps.LatLng>>)), // in order to subscribe to them all\r\n      switchMap(parentMVEvent => merge(...// rest parameter\r\n        parentMVEvent.newArr.map((chMVC, index) =>\r\n          createMVCEventObservable(chMVC)\r\n          .pipe(map(chMVCEvent => ({ parentMVEvent, chMVCEvent, pathIndex: index })))))\r\n        .pipe( // start the merged ob with an event signinifing change to parent\r\n          startWith({ parentMVEvent, chMVCEvent: null, pathIndex: null }))\r\n      ),\r\n      skip(1), // skip the manually added event\r\n      map(({ parentMVEvent, chMVCEvent, pathIndex }) => {\r\n        let retVal;\r\n        if (!chMVCEvent) {\r\n          retVal = {\r\n            newArr: parentMVEvent.newArr.map(subArr => subArr.getArray().map(latLng => latLng.toJSON())),\r\n            eventName: parentMVEvent.eventName,\r\n            index: parentMVEvent.index,\r\n          } as MVCEvent<google.maps.LatLng[] | google.maps.LatLngLiteral[]>;\r\n          if (parentMVEvent.previous) {\r\n            retVal.previous =  parentMVEvent.previous.getArray();\r\n          }\r\n        } else {\r\n          retVal = {\r\n            newArr: parentMVEvent.newArr.map(subArr => subArr.getArray().map(latLng => latLng.toJSON())),\r\n            pathIndex,\r\n            eventName: chMVCEvent.eventName,\r\n            index: chMVCEvent.index,\r\n          } as unknown as MVCEvent<google.maps.LatLng[] | google.maps.LatLngLiteral[]>;\r\n          if (chMVCEvent.previous) {\r\n            retVal.previous = chMVCEvent.previous;\r\n          }\r\n        }\r\n        return retVal;\r\n      }));\r\n  }\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\nimport { Observable, Observer } from 'rxjs';\r\n\r\nimport { AgmPolyline } from '../../directives/polyline';\r\nimport { AgmPolylinePoint } from '../../directives/polyline-point';\r\nimport { createMVCEventObservable, MVCEvent } from '../../utils/mvcarray-utils';\r\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\r\n\r\n@Injectable()\r\nexport class PolylineManager {\r\n  private _polylines: Map<AgmPolyline, Promise<google.maps.Polyline>> =\r\n      new Map<AgmPolyline, Promise<google.maps.Polyline>>();\r\n\r\n  constructor(private _mapsWrapper: GoogleMapsAPIWrapper, private _zone: NgZone) {}\r\n\r\n  private static _convertPoints(line: AgmPolyline): google.maps.LatLngLiteral[] {\r\n    const path = line._getPoints().map((point: AgmPolylinePoint) => {\r\n      return {lat: point.latitude, lng: point.longitude} as google.maps.LatLngLiteral;\r\n    });\r\n    return path;\r\n  }\r\n\r\n  private static _convertPath(path: keyof typeof google.maps.SymbolPath | string): google.maps.SymbolPath | string {\r\n    const symbolPath = google.maps.SymbolPath[path as keyof typeof google.maps.SymbolPath];\r\n    if (typeof symbolPath === 'number') {\r\n      return symbolPath;\r\n    } else{\r\n      return path;\r\n    }\r\n  }\r\n\r\n  private static _convertIcons(line: AgmPolyline): Array<google.maps.IconSequence> {\r\n    const icons = line._getIcons().map(agmIcon => ({\r\n      fixedRotation: agmIcon.fixedRotation,\r\n      offset: agmIcon.offset,\r\n      repeat: agmIcon.repeat,\r\n      icon: {\r\n        anchor: new google.maps.Point(agmIcon.anchorX, agmIcon.anchorY),\r\n        fillColor: agmIcon.fillColor,\r\n        fillOpacity: agmIcon.fillOpacity,\r\n        path: PolylineManager._convertPath(agmIcon.path),\r\n        rotation: agmIcon.rotation,\r\n        scale: agmIcon.scale,\r\n        strokeColor: agmIcon.strokeColor,\r\n        strokeOpacity: agmIcon.strokeOpacity,\r\n        strokeWeight: agmIcon.strokeWeight,\r\n      },\r\n    } as google.maps.IconSequence));\r\n    // prune undefineds;\r\n    icons.forEach(icon => {\r\n      Object.entries(icon).forEach(([key, val]) => {\r\n        if (typeof val === 'undefined') {\r\n          delete (icon as any)[key];\r\n        }\r\n      });\r\n      if (typeof icon.icon.anchor.x === 'undefined' ||\r\n        typeof icon.icon.anchor.y === 'undefined') {\r\n          delete icon.icon.anchor;\r\n        }\r\n    });\r\n    return icons;\r\n  }\r\n\r\n  addPolyline(line: AgmPolyline) {\r\n    const polylinePromise = this._mapsWrapper.getNativeMap()\r\n    .then(() => [ PolylineManager._convertPoints(line),\r\n                  PolylineManager._convertIcons(line)])\r\n    .then(([path, icons]: [google.maps.LatLngLiteral[], google.maps.IconSequence[]]) =>\r\n      this._mapsWrapper.createPolyline({\r\n        clickable: line.clickable,\r\n        draggable: line.draggable,\r\n        editable: line.editable,\r\n        geodesic: line.geodesic,\r\n        strokeColor: line.strokeColor,\r\n        strokeOpacity: line.strokeOpacity,\r\n        strokeWeight: line.strokeWeight,\r\n        visible: line.visible,\r\n        zIndex: line.zIndex,\r\n        path,\r\n        icons,\r\n    }));\r\n    this._polylines.set(line, polylinePromise);\r\n  }\r\n\r\n  updatePolylinePoints(line: AgmPolyline): Promise<void> {\r\n    const path = PolylineManager._convertPoints(line);\r\n    const m = this._polylines.get(line);\r\n    if (m == null) {\r\n      return Promise.resolve();\r\n    }\r\n    return m.then((l) => this._zone.run(() => l.setPath(path)));\r\n  }\r\n\r\n  async updateIconSequences(line: AgmPolyline): Promise<void> {\r\n    await this._mapsWrapper.getNativeMap();\r\n    const icons = PolylineManager._convertIcons(line);\r\n    const m = this._polylines.get(line);\r\n    if (m == null) {\r\n      return;\r\n    }\r\n    return m.then(l => this._zone.run(() => l.setOptions({icons}) ) );\r\n  }\r\n\r\n  setPolylineOptions(line: AgmPolyline, options: {[propName: string]: any}):\r\n      Promise<void> {\r\n    return this._polylines.get(line).then((l: google.maps.Polyline) => { l.setOptions(options); });\r\n  }\r\n\r\n  deletePolyline(line: AgmPolyline): Promise<void> {\r\n    const m = this._polylines.get(line);\r\n    if (m == null) {\r\n      return Promise.resolve();\r\n    }\r\n    return m.then((l: google.maps.Polyline) => {\r\n      return this._zone.run(() => {\r\n        l.setMap(null);\r\n        this._polylines.delete(line);\r\n      });\r\n    });\r\n  }\r\n\r\n  private async getMVCPath(agmPolyline: AgmPolyline): Promise<google.maps.MVCArray<google.maps.LatLng>> {\r\n    const polyline = await this._polylines.get(agmPolyline);\r\n    return polyline.getPath();\r\n  }\r\n\r\n  async getPath(agmPolyline: AgmPolyline): Promise<google.maps.LatLng[]> {\r\n    return (await this.getMVCPath(agmPolyline)).getArray();\r\n  }\r\n\r\n  createEventObservable<T>(eventName: string, line: AgmPolyline): Observable<T> {\r\n    return new Observable((observer: Observer<T>) => {\r\n      this._polylines.get(line).then((l: google.maps.Polyline) => {\r\n        l.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\r\n      });\r\n    });\r\n  }\r\n\r\n  async createPathEventObservable(line: AgmPolyline): Promise<Observable<MVCEvent<google.maps.LatLng>>> {\r\n    const mvcPath = await this.getMVCPath(line);\r\n    return createMVCEventObservable(mvcPath);\r\n  }\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\n\r\nimport { Observable, Subscriber } from 'rxjs';\r\n\r\nimport { AgmRectangle } from '../../directives/rectangle';\r\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\r\n\r\n@Injectable()\r\nexport class RectangleManager {\r\n  private _rectangles: Map<AgmRectangle, Promise<google.maps.Rectangle>> =\r\n      new Map<AgmRectangle, Promise<google.maps.Rectangle>>();\r\n\r\n  constructor(private _apiWrapper: GoogleMapsAPIWrapper, private _zone: NgZone) {}\r\n\r\n  addRectangle(rectangle: AgmRectangle) {\r\n    this._rectangles.set(rectangle, this._apiWrapper.getNativeMap().then( () =>\r\n      this._apiWrapper.createRectangle({\r\n        bounds: {\r\n          north: rectangle.north,\r\n          east: rectangle.east,\r\n          south: rectangle.south,\r\n          west: rectangle.west,\r\n        },\r\n        clickable: rectangle.clickable,\r\n        draggable: rectangle.draggable,\r\n        editable: rectangle.editable,\r\n        fillColor: rectangle.fillColor,\r\n        fillOpacity: rectangle.fillOpacity,\r\n        strokeColor: rectangle.strokeColor,\r\n        strokeOpacity: rectangle.strokeOpacity,\r\n        strokePosition: google.maps.StrokePosition[rectangle.strokePosition],\r\n        strokeWeight: rectangle.strokeWeight,\r\n        visible: rectangle.visible,\r\n        zIndex: rectangle.zIndex,\r\n      }))\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Removes the given rectangle from the map.\r\n   */\r\n  removeRectangle(rectangle: AgmRectangle): Promise<void> {\r\n    return this._rectangles.get(rectangle).then((r) => {\r\n      r.setMap(null);\r\n      this._rectangles.delete(rectangle);\r\n    });\r\n  }\r\n\r\n  setOptions(rectangle: AgmRectangle, options: google.maps.RectangleOptions): Promise<void> {\r\n    return this._rectangles.get(rectangle).then((r) => {\r\n      const actualStrokePosition = options.strokePosition as any as keyof typeof google.maps.StrokePosition;\r\n      options.strokePosition = google.maps.StrokePosition[actualStrokePosition];\r\n      r.setOptions(options);\r\n    });\r\n  }\r\n\r\n  getBounds(rectangle: AgmRectangle): Promise<google.maps.LatLngBounds> {\r\n    return this._rectangles.get(rectangle).then((r) => r.getBounds());\r\n  }\r\n\r\n  setBounds(rectangle: AgmRectangle): Promise<void> {\r\n    return this._rectangles.get(rectangle).then((r) => {\r\n      return r.setBounds({\r\n        north: rectangle.north,\r\n        east: rectangle.east,\r\n        south: rectangle.south,\r\n        west: rectangle.west,\r\n      });\r\n    });\r\n  }\r\n\r\n  setEditable(rectangle: AgmRectangle): Promise<void> {\r\n    return this._rectangles.get(rectangle).then((r) => {\r\n      return r.setEditable(rectangle.editable);\r\n    });\r\n  }\r\n\r\n  setDraggable(rectangle: AgmRectangle): Promise<void> {\r\n    return this._rectangles.get(rectangle).then((r) => {\r\n      return r.setDraggable(rectangle.draggable);\r\n    });\r\n  }\r\n\r\n  setVisible(rectangle: AgmRectangle): Promise<void> {\r\n    return this._rectangles.get(rectangle).then((r) => {\r\n      return r.setVisible(rectangle.visible);\r\n    });\r\n  }\r\n\r\n  createEventObservable<T>(eventName: string, rectangle: AgmRectangle): Observable<T> {\r\n    return new Observable((subsrciber: Subscriber<T>) => {\r\n      let listener: google.maps.MapsEventListener = null;\r\n      this._rectangles.get(rectangle).then((r) => {\r\n        listener = r.addListener(eventName, (e: T) => this._zone.run(() => subsrciber.next(e)));\r\n      });\r\n\r\n      return () => {\r\n        if (listener !== null) {\r\n          listener.remove();\r\n        }\r\n      };\r\n    });\r\n  }\r\n}\r\n","import { Directive, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { LayerManager } from '../services/managers/layer-manager';\r\n\r\nlet layerId = 0;\r\n\r\n/*\r\n * This directive adds a bicycling layer to a google map instance\r\n * <agm-bicycling-layer [visible]=\"true|false\"> <agm-bicycling-layer>\r\n * */\r\n@Directive({\r\n    selector: 'agm-bicycling-layer',\r\n})\r\nexport class AgmBicyclingLayer implements OnInit, OnDestroy{\r\n    private _addedToManager = false;\r\n    private _id: string = (layerId++).toString();\r\n\r\n    /**\r\n     * Hide/show bicycling layer\r\n     */\r\n    @Input() visible = true;\r\n\r\n    constructor( private _manager: LayerManager ) {}\r\n\r\n    ngOnInit() {\r\n        if (this._addedToManager) {\r\n            return;\r\n        }\r\n        this._manager.addBicyclingLayer(this);\r\n        this._addedToManager = true;\r\n    }\r\n\r\n    /** @internal */\r\n    id(): string { return this._id; }\r\n\r\n    /** @internal */\r\n    toString(): string { return `AgmBicyclingLayer-${this._id.toString()}`; }\r\n\r\n    /** @internal */\r\n    ngOnDestroy() {\r\n        this._manager.deleteLayer(this);\r\n    }\r\n\r\n}\r\n","import { Directive, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { CircleManager } from '../services/managers/circle-manager';\r\n\r\n@Directive({\r\n  selector: 'agm-circle',\r\n})\r\nexport class AgmCircle implements OnInit, OnChanges, OnDestroy {\r\n  /**\r\n   * The latitude position of the circle (required).\r\n   */\r\n  @Input() latitude: number;\r\n\r\n  /**\r\n   * The clickable position of the circle (required).\r\n   */\r\n  @Input() longitude: number;\r\n\r\n  /**\r\n   * Indicates whether this Circle handles mouse events. Defaults to true.\r\n   */\r\n  @Input() clickable = true;\r\n\r\n  /**\r\n   * If set to true, the user can drag this circle over the map. Defaults to false.\r\n   */\r\n  // tslint:disable-next-line:no-input-rename\r\n  @Input('circleDraggable') draggable = false;\r\n\r\n  /**\r\n   * If set to true, the user can edit this circle by dragging the control points shown at\r\n   * the center and around the circumference of the circle. Defaults to false.\r\n   */\r\n  @Input() editable = false;\r\n\r\n  /**\r\n   * The fill color. All CSS3 colors are supported except for extended named colors.\r\n   */\r\n  @Input() fillColor: string;\r\n\r\n  /**\r\n   * The fill opacity between 0.0 and 1.0.\r\n   */\r\n  @Input() fillOpacity: number;\r\n\r\n  /**\r\n   * The radius in meters on the Earth's surface.\r\n   */\r\n  @Input() radius = 0;\r\n\r\n  /**\r\n   * The stroke color. All CSS3 colors are supported except for extended named colors.\r\n   */\r\n  @Input() strokeColor: string;\r\n\r\n  /**\r\n   * The stroke opacity between 0.0 and 1.0\r\n   */\r\n  @Input() strokeOpacity: number;\r\n\r\n  /**\r\n   * The stroke position. Defaults to CENTER.\r\n   * This property is not supported on Internet Explorer 8 and earlier.\r\n   */\r\n  @Input() strokePosition: keyof typeof google.maps.StrokePosition = 'CENTER';\r\n\r\n  /**\r\n   * The stroke width in pixels.\r\n   */\r\n  @Input() strokeWeight = 0;\r\n\r\n  /**\r\n   * Whether this circle is visible on the map. Defaults to true.\r\n   */\r\n  @Input() visible = true;\r\n\r\n  /**\r\n   * The zIndex compared to other polys.\r\n   */\r\n  @Input() zIndex: number;\r\n\r\n  /**\r\n   * This event is fired when the circle's center is changed.\r\n   */\r\n  @Output() centerChange: EventEmitter<google.maps.LatLngLiteral> = new EventEmitter<google.maps.LatLngLiteral>();\r\n\r\n  /**\r\n   * This event emitter gets emitted when the user clicks on the circle.\r\n   */\r\n  @Output() circleClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event emitter gets emitted when the user clicks on the circle.\r\n   */\r\n  @Output() circleDblClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is repeatedly fired while the user drags the circle.\r\n   */\r\n  // tslint:disable-next-line: no-output-native\r\n  @Output() drag: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the user stops dragging the circle.\r\n   */\r\n  @Output() dragEnd: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the user starts dragging the circle.\r\n   */\r\n  @Output() dragStart: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the DOM mousedown event is fired on the circle.\r\n   */\r\n  @Output() mouseDown: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the DOM mousemove event is fired on the circle.\r\n   */\r\n  @Output() mouseMove: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired on circle mouseout.\r\n   */\r\n  @Output() mouseOut: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired on circle mouseover.\r\n   */\r\n  @Output() mouseOver: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the DOM mouseup event is fired on the circle.\r\n   */\r\n  @Output() mouseUp: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the circle's radius is changed.\r\n   */\r\n  @Output() radiusChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n  /**\r\n   * This event is fired when the circle is right-clicked on.\r\n   */\r\n  @Output() rightClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  private _circleAddedToManager = false;\r\n\r\n  private static _mapOptions: string[] = [\r\n    'fillColor', 'fillOpacity', 'strokeColor', 'strokeOpacity', 'strokePosition', 'strokeWeight',\r\n    'visible', 'zIndex', 'clickable',\r\n  ];\r\n\r\n  private _eventSubscriptions: Subscription[] = [];\r\n\r\n  constructor(private _manager: CircleManager) {}\r\n\r\n  /** @internal */\r\n  ngOnInit() {\r\n    this._manager.addCircle(this);\r\n    this._circleAddedToManager = true;\r\n    this._registerEventListeners();\r\n  }\r\n\r\n  /** @internal */\r\n  ngOnChanges(changes: {[key: string]: SimpleChange}) {\r\n    if (!this._circleAddedToManager) {\r\n      return;\r\n    }\r\n    // tslint:disable: no-string-literal\r\n    if (changes['latitude'] || changes['longitude']) {\r\n      this._manager.setCenter(this);\r\n    }\r\n    if (changes['editable']) {\r\n      this._manager.setEditable(this);\r\n    }\r\n    if (changes['draggable']) {\r\n      this._manager.setDraggable(this);\r\n    }\r\n    if (changes['visible']) {\r\n      this._manager.setVisible(this);\r\n    }\r\n    if (changes['radius']) {\r\n      this._manager.setRadius(this);\r\n    }\r\n    // tslint:enable: no-string-literal\r\n    this._updateCircleOptionsChanges(changes);\r\n  }\r\n\r\n  private _updateCircleOptionsChanges(changes: {[propName: string]: SimpleChange}) {\r\n    const options: {[propName: string]: any} = {};\r\n    const optionKeys =\r\n        Object.keys(changes).filter(k => AgmCircle._mapOptions.indexOf(k) !== -1);\r\n    optionKeys.forEach((k) => { options[k] = changes[k].currentValue; });\r\n\r\n    if (optionKeys.length > 0) {\r\n      this._manager.setOptions(this, options);\r\n    }\r\n  }\r\n\r\n  private _registerEventListeners() {\r\n    const events: Map<string, EventEmitter<any>> = new Map<string, EventEmitter<any>>();\r\n    events.set('center_changed', this.centerChange);\r\n    events.set('click', this.circleClick);\r\n    events.set('dblclick', this.circleDblClick);\r\n    events.set('drag', this.drag);\r\n    events.set('dragend', this.dragEnd);\r\n    events.set('dragstart', this.dragStart);\r\n    events.set('mousedown', this.mouseDown);\r\n    events.set('mousemove', this.mouseMove);\r\n    events.set('mouseout', this.mouseOut);\r\n    events.set('mouseover', this.mouseOver);\r\n    events.set('mouseup', this.mouseUp);\r\n    events.set('radius_changed', this.radiusChange);\r\n    events.set('rightclick', this.rightClick);\r\n\r\n    events.forEach((eventEmitter, eventName) => {\r\n      this._eventSubscriptions.push(\r\n          this._manager.createEventObservable<google.maps.MouseEvent>(eventName, this).subscribe((value) => {\r\n            switch (eventName) {\r\n              case 'radius_changed':\r\n                this._manager.getRadius(this).then((radius) => eventEmitter.emit(radius));\r\n                break;\r\n              case 'center_changed':\r\n                this._manager.getCenter(this).then(\r\n                    (center) =>\r\n                        eventEmitter.emit({lat: center.lat(), lng: center.lng()} as google.maps.LatLngLiteral));\r\n                break;\r\n              default:\r\n                eventEmitter.emit(value);\r\n            }\r\n          }));\r\n    });\r\n  }\r\n\r\n  /** @internal */\r\n  ngOnDestroy() {\r\n    this._eventSubscriptions.forEach(s => s.unsubscribe());\r\n    this._eventSubscriptions = null;\r\n    this._manager.removeCircle(this);\r\n  }\r\n\r\n  /**\r\n   * Gets the LatLngBounds of this Circle.\r\n   */\r\n  getBounds(): Promise<google.maps.LatLngBounds> { return this._manager.getBounds(this); }\r\n\r\n  getCenter(): Promise<google.maps.LatLng> { return this._manager.getCenter(this); }\r\n}\r\n","import { Directive, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { DataLayerManager } from './../services/managers/data-layer-manager';\r\n\r\nlet layerId = 0;\r\n\r\n/**\r\n * AgmDataLayer enables the user to add data layers to the map.\r\n *\r\n * ### Example\r\n * ```typescript\r\n * import { Component } from 'angular2/core';\r\n * import { AgmMap, AgmDataLayer } from\r\n * 'angular-google-maps/core';\r\n *\r\n * @Component({\r\n *  selector: 'my-map-cmp',\r\n *  directives: [AgmMap, AgmDataLayer],\r\n *  styles: [`\r\n *    .agm-container {\r\n *      height: 300px;\r\n *    }\r\n * `],\r\n *  template: `\r\n * <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\r\n * \t  <agm-data-layer [geoJson]=\"geoJsonObject\" (layerClick)=\"clicked($event)\" [style]=\"styleFunc\">\r\n * \t  </agm-data-layer>\r\n * </agm-map>\r\n *  `\r\n * })\r\n * export class MyMapCmp {\r\n *   lat: number = -25.274449;\r\n *   lng: number = 133.775060;\r\n *   zoom: number = 5;\r\n *\r\n * clicked(clickEvent) {\r\n *    console.log(clickEvent);\r\n *  }\r\n *\r\n *  styleFunc(feature) {\r\n *    return ({\r\n *      clickable: false,\r\n *      fillColor: feature.getProperty('color'),\r\n *      strokeWeight: 1\r\n *    });\r\n *  }\r\n *\r\n *  geoJsonObject: Object = {\r\n *    \"type\": \"FeatureCollection\",\r\n *    \"features\": [\r\n *      {\r\n *        \"type\": \"Feature\",\r\n *        \"properties\": {\r\n *          \"letter\": \"G\",\r\n *          \"color\": \"blue\",\r\n *          \"rank\": \"7\",\r\n *          \"ascii\": \"71\"\r\n *        },\r\n *        \"geometry\": {\r\n *          \"type\": \"Polygon\",\r\n *          \"coordinates\": [\r\n *            [\r\n *              [123.61, -22.14], [122.38, -21.73], [121.06, -21.69], [119.66, -22.22], [119.00, -23.40],\r\n *              [118.65, -24.76], [118.43, -26.07], [118.78, -27.56], [119.22, -28.57], [120.23, -29.49],\r\n *              [121.77, -29.87], [123.57, -29.64], [124.45, -29.03], [124.71, -27.95], [124.80, -26.70],\r\n *              [124.80, -25.60], [123.61, -25.64], [122.56, -25.64], [121.72, -25.72], [121.81, -26.62],\r\n *              [121.86, -26.98], [122.60, -26.90], [123.57, -27.05], [123.57, -27.68], [123.35, -28.18],\r\n *              [122.51, -28.38], [121.77, -28.26], [121.02, -27.91], [120.49, -27.21], [120.14, -26.50],\r\n *              [120.10, -25.64], [120.27, -24.52], [120.67, -23.68], [121.72, -23.32], [122.43, -23.48],\r\n *              [123.04, -24.04], [124.54, -24.28], [124.58, -23.20], [123.61, -22.14]\r\n *            ]\r\n *          ]\r\n *        }\r\n *      },\r\n *      {\r\n *        \"type\": \"Feature\",\r\n *        \"properties\": {\r\n *          \"letter\": \"o\",\r\n *          \"color\": \"red\",\r\n *          \"rank\": \"15\",\r\n *          \"ascii\": \"111\"\r\n *        },\r\n *        \"geometry\": {\r\n *          \"type\": \"Polygon\",\r\n *          \"coordinates\": [\r\n *            [\r\n *              [128.84, -25.76], [128.18, -25.60], [127.96, -25.52], [127.88, -25.52], [127.70, -25.60],\r\n *              [127.26, -25.79], [126.60, -26.11], [126.16, -26.78], [126.12, -27.68], [126.21, -28.42],\r\n *              [126.69, -29.49], [127.74, -29.80], [128.80, -29.72], [129.41, -29.03], [129.72, -27.95],\r\n *              [129.68, -27.21], [129.33, -26.23], [128.84, -25.76]\r\n *            ],\r\n *            [\r\n *              [128.45, -27.44], [128.32, -26.94], [127.70, -26.82], [127.35, -27.05], [127.17, -27.80],\r\n *              [127.57, -28.22], [128.10, -28.42], [128.49, -27.80], [128.45, -27.44]\r\n *            ]\r\n *          ]\r\n *        }\r\n *      },\r\n *      {\r\n *        \"type\": \"Feature\",\r\n *        \"properties\": {\r\n *          \"letter\": \"o\",\r\n *          \"color\": \"yellow\",\r\n *          \"rank\": \"15\",\r\n *          \"ascii\": \"111\"\r\n *        },\r\n *        \"geometry\": {\r\n *          \"type\": \"Polygon\",\r\n *          \"coordinates\": [\r\n *            [\r\n *              [131.87, -25.76], [131.35, -26.07], [130.95, -26.78], [130.82, -27.64], [130.86, -28.53],\r\n *              [131.26, -29.22], [131.92, -29.76], [132.45, -29.87], [133.06, -29.76], [133.72, -29.34],\r\n *              [134.07, -28.80], [134.20, -27.91], [134.07, -27.21], [133.81, -26.31], [133.37, -25.83],\r\n *              [132.71, -25.64], [131.87, -25.76]\r\n *            ],\r\n *            [\r\n *              [133.15, -27.17], [132.71, -26.86], [132.09, -26.90], [131.74, -27.56], [131.79, -28.26],\r\n *              [132.36, -28.45], [132.93, -28.34], [133.15, -27.76], [133.15, -27.17]\r\n *            ]\r\n *          ]\r\n *        }\r\n *      },\r\n *      {\r\n *        \"type\": \"Feature\",\r\n *        \"properties\": {\r\n *          \"letter\": \"g\",\r\n *          \"color\": \"blue\",\r\n *          \"rank\": \"7\",\r\n *          \"ascii\": \"103\"\r\n *        },\r\n *        \"geometry\": {\r\n *          \"type\": \"Polygon\",\r\n *          \"coordinates\": [\r\n *            [\r\n *              [138.12, -25.04], [136.84, -25.16], [135.96, -25.36], [135.26, -25.99], [135, -26.90],\r\n *              [135.04, -27.91], [135.26, -28.88], [136.05, -29.45], [137.02, -29.49], [137.81, -29.49],\r\n *              [137.94, -29.99], [137.90, -31.20], [137.85, -32.24], [136.88, -32.69], [136.45, -32.36],\r\n *              [136.27, -31.80], [134.95, -31.84], [135.17, -32.99], [135.52, -33.43], [136.14, -33.76],\r\n *              [137.06, -33.83], [138.12, -33.65], [138.86, -33.21], [139.30, -32.28], [139.30, -31.24],\r\n *              [139.30, -30.14], [139.21, -28.96], [139.17, -28.22], [139.08, -27.41], [139.08, -26.47],\r\n *              [138.99, -25.40], [138.73, -25.00], [138.12, -25.04]\r\n *            ],\r\n *            [\r\n *              [137.50, -26.54], [136.97, -26.47], [136.49, -26.58], [136.31, -27.13], [136.31, -27.72],\r\n *              [136.58, -27.99], [137.50, -28.03], [137.68, -27.68], [137.59, -26.78], [137.50, -26.54]\r\n *            ]\r\n *          ]\r\n *        }\r\n *      },\r\n *      {\r\n *        \"type\": \"Feature\",\r\n *        \"properties\": {\r\n *          \"letter\": \"l\",\r\n *          \"color\": \"green\",\r\n *          \"rank\": \"12\",\r\n *          \"ascii\": \"108\"\r\n *        },\r\n *        \"geometry\": {\r\n *          \"type\": \"Polygon\",\r\n *          \"coordinates\": [\r\n *            [\r\n *              [140.14, -21.04], [140.31, -29.42], [141.67, -29.49], [141.59, -20.92], [140.14, -21.04]\r\n *            ]\r\n *          ]\r\n *        }\r\n *      },\r\n *      {\r\n *        \"type\": \"Feature\",\r\n *        \"properties\": {\r\n *          \"letter\": \"e\",\r\n *          \"color\": \"red\",\r\n *          \"rank\": \"5\",\r\n *          \"ascii\": \"101\"\r\n *        },\r\n *        \"geometry\": {\r\n *          \"type\": \"Polygon\",\r\n *          \"coordinates\": [\r\n *            [\r\n *              [144.14, -27.41], [145.67, -27.52], [146.86, -27.09], [146.82, -25.64], [146.25, -25.04],\r\n *              [145.45, -24.68], [144.66, -24.60], [144.09, -24.76], [143.43, -25.08], [142.99, -25.40],\r\n *              [142.64, -26.03], [142.64, -27.05], [142.64, -28.26], [143.30, -29.11], [144.18, -29.57],\r\n *              [145.41, -29.64], [146.46, -29.19], [146.64, -28.72], [146.82, -28.14], [144.84, -28.42],\r\n *              [144.31, -28.26], [144.14, -27.41]\r\n *            ],\r\n *            [\r\n *              [144.18, -26.39], [144.53, -26.58], [145.19, -26.62], [145.72, -26.35], [145.81, -25.91],\r\n *              [145.41, -25.68], [144.97, -25.68], [144.49, -25.64], [144, -25.99], [144.18, -26.39]\r\n *            ]\r\n *          ]\r\n *        }\r\n *      }\r\n *    ]\r\n *  };\r\n * }\r\n * ```\r\n */\r\n@Directive({\r\n  selector: 'agm-data-layer',\r\n})\r\nexport class AgmDataLayer implements OnInit, OnDestroy, OnChanges {\r\n  private static _dataOptionsAttributes = ['style'];\r\n\r\n  private _addedToManager = false;\r\n  private _id: string = (layerId++).toString();\r\n  private _subscriptions: Subscription[] = [];\r\n\r\n  /**\r\n   * This event is fired when a feature in the layer is clicked.\r\n   */\r\n  @Output() layerClick: EventEmitter<google.maps.Data.MouseEvent> = new EventEmitter<google.maps.Data.MouseEvent>();\r\n\r\n  /**\r\n   * The geoJson to be displayed\r\n   */\r\n  @Input() geoJson: object | string | null = null;\r\n\r\n  /**\r\n   * The layer's style function.\r\n   */\r\n  @Input() style: (param: google.maps.Data.Feature) => google.maps.Data.StyleOptions;\r\n\r\n  constructor(private _manager: DataLayerManager) { }\r\n\r\n  ngOnInit() {\r\n    if (this._addedToManager) {\r\n      return;\r\n    }\r\n    this._manager.addDataLayer(this);\r\n    this._addedToManager = true;\r\n    this._addEventListeners();\r\n  }\r\n\r\n  private _addEventListeners() {\r\n    const listeners = [\r\n      { name: 'click', handler: (ev: google.maps.Data.MouseEvent) => this.layerClick.emit(ev) },\r\n    ];\r\n    listeners.forEach((obj) => {\r\n      const os = this._manager.createEventObservable(obj.name, this).subscribe(obj.handler);\r\n      this._subscriptions.push(os);\r\n    });\r\n  }\r\n\r\n  /** @internal */\r\n  id(): string { return this._id; }\r\n\r\n  /** @internal */\r\n  toString(): string { return `AgmDataLayer-${this._id.toString()}`; }\r\n\r\n  /** @internal */\r\n  ngOnDestroy() {\r\n    this._manager.deleteDataLayer(this);\r\n    // unsubscribe all registered observable subscriptions\r\n    this._subscriptions.forEach(s => s.unsubscribe());\r\n  }\r\n\r\n  /** @internal */\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (!this._addedToManager) {\r\n      return;\r\n    }\r\n\r\n    // tslint:disable-next-line: no-string-literal\r\n    const geoJsonChange = changes['geoJson'];\r\n    if (geoJsonChange) {\r\n      this._manager.updateGeoJson(this, geoJsonChange.currentValue);\r\n    }\r\n\r\n    const dataOptions = AgmDataLayer._dataOptionsAttributes.reduce<google.maps.Data.DataOptions>((options, k) =>\r\n      options[k] = changes.hasOwnProperty(k) ? changes[k].currentValue : (this as any)[k], {});\r\n\r\n    this._manager.setDataOptions(this, dataOptions);\r\n  }\r\n}\r\n","import { Directive, Input, OnChanges, OnDestroy, OnInit, Self } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\r\n\r\nimport { FitBoundsAccessor, FitBoundsDetails, FitBoundsService } from '../services/fit-bounds';\r\n\r\n/**\r\n * Adds the given directive to the auto fit bounds feature when the value is true.\r\n * To make it work with you custom AGM component, you also have to implement the {@link FitBoundsAccessor} abstract class.\r\n * @example\r\n * <agm-marker [agmFitBounds]=\"true\"></agm-marker>\r\n */\r\n@Directive({\r\n  selector: '[agmFitBounds]',\r\n})\r\nexport class AgmFitBounds implements OnInit, OnDestroy, OnChanges {\r\n  /**\r\n   * If the value is true, the element gets added to the bounds of the map.\r\n   * Default: true.\r\n   */\r\n  @Input() agmFitBounds = true;\r\n\r\n  private _destroyed$: Subject<void> = new Subject<void>();\r\n  private _latestFitBoundsDetails: FitBoundsDetails | null = null;\r\n\r\n  constructor(\r\n    @Self() private readonly _fitBoundsAccessor: FitBoundsAccessor,\r\n    private readonly _fitBoundsService: FitBoundsService,\r\n  ) {}\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  ngOnChanges() {\r\n    this._updateBounds();\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  ngOnInit() {\r\n    this._fitBoundsAccessor\r\n      .getFitBoundsDetails$()\r\n      .pipe(\r\n        distinctUntilChanged(\r\n          (x: FitBoundsDetails, y: FitBoundsDetails) =>\r\n            x.latLng.lat === y.latLng.lat && x.latLng.lng === y.latLng.lng,\r\n        ),\r\n        takeUntil(this._destroyed$),\r\n      )\r\n      .subscribe(details => this._updateBounds(details));\r\n  }\r\n\r\n  /*\r\n   Either the location changed, or visible status changed.\r\n   Possible state changes are\r\n   invisible -> visible\r\n   visible -> invisible\r\n   visible -> visible (new location)\r\n  */\r\n  private _updateBounds(newFitBoundsDetails?: FitBoundsDetails) {\r\n    // either visibility will change, or location, so remove the old one anyway\r\n    if (this._latestFitBoundsDetails) {\r\n      this._fitBoundsService.removeFromBounds(this._latestFitBoundsDetails.latLng);\r\n      // don't set latestFitBoundsDetails to null, because we can toggle visibility from\r\n      // true -> false -> true, in which case we still need old value cached here\r\n    }\r\n\r\n    if (newFitBoundsDetails) {\r\n      this._latestFitBoundsDetails = newFitBoundsDetails;\r\n    }\r\n    if (!this._latestFitBoundsDetails) {\r\n      return;\r\n    }\r\n    if (this.agmFitBounds === true) {\r\n      this._fitBoundsService.addToBounds(this._latestFitBoundsDetails.latLng);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  ngOnDestroy() {\r\n    this._destroyed$.next();\r\n    this._destroyed$.complete();\r\n    if (this._latestFitBoundsDetails !== null) {\r\n      this._fitBoundsService.removeFromBounds(this._latestFitBoundsDetails.latLng);\r\n    }\r\n  }\r\n}\r\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange } from '@angular/core';\r\n\r\nimport { InfoWindowManager } from '../services/managers/info-window-manager';\r\n\r\nimport { AgmMarker } from './marker';\r\n\r\nlet infoWindowId = 0;\r\n\r\n/**\r\n * AgmInfoWindow renders a info window inside a {@link AgmMarker} or standalone.\r\n *\r\n * ### Example\r\n * ```typescript\r\n * import { Component } from '@angular/core';\r\n *\r\n * @Component({\r\n *  selector: 'my-map-cmp',\r\n *  styles: [`\r\n *    .agm-map-container {\r\n *      height: 300px;\r\n *    }\r\n * `],\r\n *  template: `\r\n *    <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\r\n *      <agm-marker [latitude]=\"lat\" [longitude]=\"lng\" [label]=\"'M'\">\r\n *        <agm-info-window [disableAutoPan]=\"true\">\r\n *          Hi, this is the content of the <strong>info window</strong>\r\n *        </agm-info-window>\r\n *      </agm-marker>\r\n *    </agm-map>\r\n *  `\r\n * })\r\n * ```\r\n */\r\n@Component({\r\n  selector: 'agm-info-window',\r\n  template: `<div class='agm-info-window-content'>\r\n      <ng-content></ng-content>\r\n    </div>\r\n  `,\r\n})\r\nexport class AgmInfoWindow implements OnDestroy, OnChanges, OnInit {\r\n  /**\r\n   * The latitude position of the info window (only usefull if you use it ouside of a {@link\r\n   * AgmMarker}).\r\n   */\r\n  @Input() latitude: number;\r\n\r\n  /**\r\n   * The longitude position of the info window (only usefull if you use it ouside of a {@link\r\n   * AgmMarker}).\r\n   */\r\n  @Input() longitude: number;\r\n\r\n  /**\r\n   * Disable auto-pan on open. By default, the info window will pan the map so that it is fully\r\n   * visible when it opens.\r\n   */\r\n  @Input() disableAutoPan: boolean;\r\n\r\n  /**\r\n   * All InfoWindows are displayed on the map in order of their zIndex, with higher values\r\n   * displaying in front of InfoWindows with lower values. By default, InfoWindows are displayed\r\n   * according to their latitude, with InfoWindows of lower latitudes appearing in front of\r\n   * InfoWindows at higher latitudes. InfoWindows are always displayed in front of markers.\r\n   */\r\n  @Input() zIndex: number;\r\n\r\n  /**\r\n   * Maximum width of the infowindow, regardless of content's width. This value is only considered\r\n   * if it is set before a call to open. To change the maximum width when changing content, call\r\n   * close, update maxWidth, and then open.\r\n   */\r\n  @Input() maxWidth: number;\r\n\r\n  /**\r\n   * Holds the marker that is the host of the info window (if available)\r\n   */\r\n  hostMarker: AgmMarker;\r\n\r\n  /**\r\n   * Holds the native element that is used for the info window content.\r\n   */\r\n  content: Node;\r\n\r\n  /**\r\n   * Sets the open state for the InfoWindow. You can also call the open() and close() methods.\r\n   */\r\n  @Input() isOpen = false;\r\n\r\n  /**\r\n   * Emits an event when the info window is closed.\r\n   */\r\n  @Output() infoWindowClose: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  private static _infoWindowOptionsInputs: string[] = ['disableAutoPan', 'maxWidth'];\r\n  private _infoWindowAddedToManager = false;\r\n  private _id: string = (infoWindowId++).toString();\r\n\r\n  constructor(private _infoWindowManager: InfoWindowManager, private _el: ElementRef) {}\r\n\r\n  ngOnInit() {\r\n    this.content = this._el.nativeElement.querySelector('.agm-info-window-content');\r\n    this._infoWindowManager.addInfoWindow(this);\r\n    this._infoWindowAddedToManager = true;\r\n    this._updateOpenState();\r\n    this._registerEventListeners();\r\n  }\r\n\r\n  /** @internal */\r\n  ngOnChanges(changes: {[key: string]: SimpleChange}) {\r\n    if (!this._infoWindowAddedToManager) {\r\n      return;\r\n    }\r\n    // tslint:disable: no-string-literal\r\n    if ((changes['latitude'] || changes['longitude']) && typeof this.latitude === 'number' &&\r\n        typeof this.longitude === 'number') {\r\n      this._infoWindowManager.setPosition(this);\r\n    }\r\n    if (changes['zIndex']) {\r\n      this._infoWindowManager.setZIndex(this);\r\n    }\r\n    if (changes['isOpen']) {\r\n      this._updateOpenState();\r\n    }\r\n    this._setInfoWindowOptions(changes);\r\n  }\r\n  // tslint:enable: no-string-literal\r\n\r\n  private _registerEventListeners() {\r\n    this._infoWindowManager.createEventObservable('closeclick', this).subscribe(() => {\r\n      this.isOpen = false;\r\n      this.infoWindowClose.emit();\r\n    });\r\n  }\r\n\r\n  private _updateOpenState() {\r\n    this.isOpen ? this.open() : this.close();\r\n  }\r\n\r\n  private _setInfoWindowOptions(changes: {[key: string]: SimpleChange}) {\r\n    const options: {[propName: string]: any} = {};\r\n    const optionKeys = Object.keys(changes).filter(\r\n        k => AgmInfoWindow._infoWindowOptionsInputs.indexOf(k) !== -1);\r\n    optionKeys.forEach((k) => { options[k] = changes[k].currentValue; });\r\n    this._infoWindowManager.setOptions(this, options);\r\n  }\r\n\r\n  /**\r\n   * Opens the info window.\r\n   */\r\n  open(): Promise<void> { return this._infoWindowManager.open(this); }\r\n\r\n  /**\r\n   * Closes the info window.\r\n   */\r\n  close(): Promise<void> {\r\n    return this._infoWindowManager.close(this).then(() => { this.infoWindowClose.emit(); });\r\n  }\r\n\r\n  /** @internal */\r\n  id(): string { return this._id; }\r\n\r\n  /** @internal */\r\n  toString(): string { return 'AgmInfoWindow-' + this._id.toString(); }\r\n\r\n  /** @internal */\r\n  ngOnDestroy() { this._infoWindowManager.deleteInfoWindow(this); }\r\n}\r\n","import { Directive, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { KmlLayerManager } from './../services/managers/kml-layer-manager';\r\n\r\nlet layerId = 0;\r\n\r\n@Directive({\r\n  selector: 'agm-kml-layer',\r\n})\r\nexport class AgmKmlLayer implements OnInit, OnDestroy, OnChanges {\r\n  private _addedToManager = false;\r\n  private _id: string = (layerId++).toString();\r\n  private _subscriptions: Subscription[] = [];\r\n  private static _kmlLayerOptions: string[] =\r\n      ['clickable', 'preserveViewport', 'screenOverlays', 'suppressInfoWindows', 'url', 'zIndex'];\r\n\r\n  /**\r\n   * If true, the layer receives mouse events. Default value is true.\r\n   */\r\n  @Input() clickable = true;\r\n\r\n  /**\r\n   * By default, the input map is centered and zoomed to the bounding box of the contents of the\r\n   * layer.\r\n   * If this option is set to true, the viewport is left unchanged, unless the map's center and zoom\r\n   * were never set.\r\n   */\r\n  @Input() preserveViewport = false;\r\n\r\n  /**\r\n   * Whether to render the screen overlays. Default true.\r\n   */\r\n  @Input() screenOverlays = true;\r\n\r\n  /**\r\n   * Suppress the rendering of info windows when layer features are clicked.\r\n   */\r\n  @Input() suppressInfoWindows = false;\r\n\r\n  /**\r\n   * The URL of the KML document to display.\r\n   */\r\n  @Input() url: string = null;\r\n\r\n  /**\r\n   * The z-index of the layer.\r\n   */\r\n  @Input() zIndex: number | null = null;\r\n\r\n  /**\r\n   * This event is fired when a feature in the layer is clicked.\r\n   */\r\n  @Output() layerClick: EventEmitter<google.maps.KmlMouseEvent> = new EventEmitter<google.maps.KmlMouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the KML layers default viewport has changed.\r\n   */\r\n  @Output() defaultViewportChange: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  /**\r\n   * This event is fired when the KML layer has finished loading.\r\n   * At this point it is safe to read the status property to determine if the layer loaded\r\n   * successfully.\r\n   */\r\n  @Output() statusChange: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  constructor(private _manager: KmlLayerManager) {}\r\n\r\n  ngOnInit() {\r\n    if (this._addedToManager) {\r\n      return;\r\n    }\r\n    this._manager.addKmlLayer(this);\r\n    this._addedToManager = true;\r\n    this._addEventListeners();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (!this._addedToManager) {\r\n      return;\r\n    }\r\n    this._updatePolygonOptions(changes);\r\n  }\r\n\r\n  private _updatePolygonOptions(changes: SimpleChanges) {\r\n    const options = Object.keys(changes)\r\n                        .filter(k => AgmKmlLayer._kmlLayerOptions.indexOf(k) !== -1)\r\n                        .reduce((obj: any, k: string) => {\r\n                          obj[k] = changes[k].currentValue;\r\n                          return obj;\r\n                        }, {});\r\n    if (Object.keys(options).length > 0) {\r\n      this._manager.setOptions(this, options);\r\n    }\r\n  }\r\n\r\n  private _addEventListeners() {\r\n    const listeners = [\r\n      {name: 'click', handler: (ev: google.maps.KmlMouseEvent) => this.layerClick.emit(ev)},\r\n      {name: 'defaultviewport_changed', handler: () => this.defaultViewportChange.emit()},\r\n      {name: 'status_changed', handler: () => this.statusChange.emit()},\r\n    ];\r\n    listeners.forEach((obj) => {\r\n      const os = this._manager.createEventObservable(obj.name, this).subscribe(obj.handler);\r\n      this._subscriptions.push(os);\r\n    });\r\n  }\r\n\r\n  /** @internal */\r\n  id(): string { return this._id; }\r\n\r\n  /** @internal */\r\n  toString(): string { return `AgmKmlLayer-${this._id.toString()}`; }\r\n\r\n  /** @internal */\r\n  ngOnDestroy() {\r\n    this._manager.deleteKmlLayer(this);\r\n    // unsubscribe all registered observable subscriptions\r\n    this._subscriptions.forEach(s => s.unsubscribe());\r\n  }\r\n}\r\n","import { isPlatformServer } from '@angular/common';\r\nimport { AfterContentInit, Component, ContentChildren, Directive, ElementRef, EventEmitter, Inject, Input, NgZone, OnChanges, OnDestroy, Output, PLATFORM_ID, QueryList, SimpleChanges } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { FitBoundsService } from '../services/fit-bounds';\r\nimport { GoogleMapsAPIWrapper } from '../services/google-maps-api-wrapper';\r\nimport { CircleManager } from '../services/managers/circle-manager';\r\nimport { InfoWindowManager } from '../services/managers/info-window-manager';\r\nimport { LayerManager } from '../services/managers/layer-manager';\r\nimport { MarkerManager } from '../services/managers/marker-manager';\r\nimport { PolygonManager } from '../services/managers/polygon-manager';\r\nimport { PolylineManager } from '../services/managers/polyline-manager';\r\nimport { RectangleManager } from '../services/managers/rectangle-manager';\r\nimport { DataLayerManager } from './../services/managers/data-layer-manager';\r\nimport { KmlLayerManager } from './../services/managers/kml-layer-manager';\r\n\r\nexport type ControlPosition = keyof typeof google.maps.ControlPosition;\r\n\r\n@Directive()\r\nexport abstract class AgmMapControl {\r\n  @Input() position: ControlPosition;\r\n  abstract getOptions(): Partial<google.maps.MapOptions>;\r\n}\r\n\r\n@Directive({\r\n  selector: 'agm-map agm-fullscreen-control',\r\n  providers: [{ provide: AgmMapControl, useExisting: AgmFullscreenControl }],\r\n})\r\nexport class AgmFullscreenControl extends AgmMapControl {\r\n  getOptions(): Partial<google.maps.MapOptions> {\r\n    return {\r\n      fullscreenControl: true,\r\n      fullscreenControlOptions: {\r\n        position: this.position && google.maps.ControlPosition[this.position],\r\n      },\r\n    };\r\n  }\r\n}\r\n@Directive({\r\n  selector: 'agm-map agm-map-type-control',\r\n  providers: [{ provide: AgmMapControl, useExisting: AgmMapTypeControl }],\r\n})\r\nexport class AgmMapTypeControl extends AgmMapControl {\r\n  @Input() mapTypeIds: (keyof typeof google.maps.MapTypeId)[];\r\n  @Input() style: keyof typeof google.maps.MapTypeControlStyle;\r\n\r\n  getOptions(): Partial<google.maps.MapOptions> {\r\n    return {\r\n      mapTypeControl: true,\r\n      mapTypeControlOptions: {\r\n        position: this.position && google.maps.ControlPosition[this.position],\r\n        style: this.style && google.maps.MapTypeControlStyle[this.style],\r\n        mapTypeIds: this.mapTypeIds && this.mapTypeIds.map(mapTypeId => google.maps.MapTypeId[mapTypeId]),\r\n      },\r\n    };\r\n  }\r\n}\r\n\r\n@Directive({\r\n  selector: 'agm-map agm-pan-control',\r\n  providers: [{ provide: AgmMapControl, useExisting: AgmPanControl }],\r\n})\r\nexport class AgmPanControl extends AgmMapControl {\r\n  getOptions(): Partial<google.maps.MapOptions> {\r\n    return {\r\n      panControl: true,\r\n      panControlOptions: {\r\n        position: this.position && google.maps.ControlPosition[this.position],\r\n      },\r\n    };\r\n  }\r\n}\r\n\r\n@Directive({\r\n  selector: 'agm-map agm-rotate-control',\r\n  providers: [{ provide: AgmMapControl, useExisting: AgmRotateControl }],\r\n})\r\nexport class AgmRotateControl extends AgmMapControl {\r\n  getOptions(): Partial<google.maps.MapOptions> {\r\n    return {\r\n      rotateControl: true,\r\n      rotateControlOptions: {\r\n        position: this.position && google.maps.ControlPosition[this.position],\r\n      },\r\n    };\r\n  }\r\n}\r\n\r\n@Directive({\r\n  selector: 'agm-map agm-scale-control',\r\n  providers: [{ provide: AgmMapControl, useExisting: AgmScaleControl }],\r\n})\r\nexport class AgmScaleControl extends AgmMapControl {\r\n  getOptions(): Partial<google.maps.MapOptions> {\r\n    return {\r\n      scaleControl: true,\r\n    };\r\n  }\r\n}\r\n\r\n@Directive({\r\n  selector: 'agm-map agm-street-view-control',\r\n  providers: [{ provide: AgmMapControl, useExisting: AgmStreetViewControl }],\r\n})\r\nexport class AgmStreetViewControl extends AgmMapControl {\r\n  getOptions(): Partial<google.maps.MapOptions> {\r\n    return {\r\n      streetViewControl: true,\r\n      streetViewControlOptions: {\r\n        position: this.position && google.maps.ControlPosition[this.position],\r\n      },\r\n    };\r\n  }\r\n}\r\n\r\n@Directive({\r\n  selector: 'agm-map agm-zoom-control',\r\n  providers: [{ provide: AgmMapControl, useExisting: AgmZoomControl }],\r\n})\r\nexport class AgmZoomControl extends AgmMapControl {\r\n  @Input() style: keyof typeof google.maps.ZoomControlStyle;\r\n  getOptions(): Partial<google.maps.MapOptions> {\r\n    return {\r\n      zoomControl: true,\r\n      zoomControlOptions: {\r\n        position: this.position && google.maps.ControlPosition[this.position],\r\n        style: this.style && google.maps.ZoomControlStyle[this.style],\r\n      },\r\n    };\r\n  }\r\n}\r\n\r\n/**\r\n * AgmMap renders a Google Map.\r\n * **Important note**: To be able see a map in the browser, you have to define a height for the\r\n * element `agm-map`.\r\n *\r\n * ### Example\r\n * ```typescript\r\n * import { Component } from '@angular/core';\r\n *\r\n * @Component({\r\n *  selector: 'my-map-cmp',\r\n *  styles: [`\r\n *    agm-map {\r\n *      height: 300px;\r\n *    }\r\n * `],\r\n *  template: `\r\n *    <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\r\n *    </agm-map>\r\n *  `\r\n * })\r\n * ```\r\n */\r\n@Component({\r\n  selector: 'agm-map',\r\n  providers: [\r\n    CircleManager,\r\n    DataLayerManager,\r\n    DataLayerManager,\r\n    FitBoundsService,\r\n    GoogleMapsAPIWrapper,\r\n    InfoWindowManager,\r\n    KmlLayerManager,\r\n    LayerManager,\r\n    MarkerManager,\r\n    PolygonManager,\r\n    PolylineManager,\r\n    RectangleManager,\r\n  ],\r\n  styles: [`\r\n    .agm-map-container-inner {\r\n      width: inherit;\r\n      height: inherit;\r\n    }\r\n    .agm-map-content {\r\n      display:none;\r\n    }\r\n  `],\r\n  template: `\r\n              <div class='agm-map-container-inner sebm-google-map-container-inner'></div>\r\n              <div class='agm-map-content'>\r\n                <ng-content></ng-content>\r\n              </div>\r\n  `,\r\n})\r\nexport class AgmMap implements OnChanges, AfterContentInit, OnDestroy {\r\n  /**\r\n   * The longitude that defines the center of the map.\r\n   */\r\n  @Input() longitude = 0;\r\n\r\n  /**\r\n   * The latitude that defines the center of the map.\r\n   */\r\n  @Input() latitude = 0;\r\n\r\n  /**\r\n   * The zoom level of the map. The default zoom level is 8.\r\n   */\r\n  @Input() zoom = 8;\r\n\r\n  /**\r\n   * The minimal zoom level of the map allowed. When not provided, no restrictions to the zoom level\r\n   * are enforced.\r\n   */\r\n  @Input() minZoom: number;\r\n\r\n  /**\r\n   * The maximal zoom level of the map allowed. When not provided, no restrictions to the zoom level\r\n   * are enforced.\r\n   */\r\n  @Input() maxZoom: number;\r\n\r\n  /**\r\n   * The control size for the default map controls. Only governs the controls made by the Maps API itself\r\n   */\r\n  @Input() controlSize: number;\r\n\r\n  /**\r\n   * Enables/disables if map is draggable.\r\n   */\r\n  // tslint:disable-next-line:no-input-rename\r\n  @Input('mapDraggable') draggable = true;\r\n\r\n  /**\r\n   * Enables/disables zoom and center on double click. Enabled by default.\r\n   */\r\n  @Input() disableDoubleClickZoom = false;\r\n\r\n  /**\r\n   * Enables/disables all default UI of the Google map. Please note: When the map is created, this\r\n   * value cannot get updated.\r\n   */\r\n  @Input() disableDefaultUI = false;\r\n\r\n  /**\r\n   * If false, disables scrollwheel zooming on the map. The scrollwheel is enabled by default.\r\n   */\r\n  @Input() scrollwheel = true;\r\n\r\n  /**\r\n   * Color used for the background of the Map div. This color will be visible when tiles have not\r\n   * yet loaded as the user pans. This option can only be set when the map is initialized.\r\n   */\r\n  @Input() backgroundColor: string;\r\n\r\n  /**\r\n   * The name or url of the cursor to display when mousing over a draggable map. This property uses\r\n   * the css  * cursor attribute to change the icon. As with the css property, you must specify at\r\n   * least one fallback cursor that is not a URL. For example:\r\n   * [draggableCursor]=\"'url(http://www.example.com/icon.png), auto;'\"\r\n   */\r\n  @Input() draggableCursor: string;\r\n\r\n  /**\r\n   * The name or url of the cursor to display when the map is being dragged. This property uses the\r\n   * css cursor attribute to change the icon. As with the css property, you must specify at least\r\n   * one fallback cursor that is not a URL. For example:\r\n   * [draggingCursor]=\"'url(http://www.example.com/icon.png), auto;'\"\r\n   */\r\n  @Input() draggingCursor: string;\r\n\r\n  /**\r\n   * If false, prevents the map from being controlled by the keyboard. Keyboard shortcuts are\r\n   * enabled by default.\r\n   */\r\n  @Input() keyboardShortcuts = true;\r\n\r\n  /**\r\n   * Styles to apply to each of the default map types. Note that for Satellite/Hybrid and Terrain\r\n   * modes, these styles will only apply to labels and geometry.\r\n   */\r\n  @Input() styles: google.maps.MapTypeStyle[] = [];\r\n\r\n  /**\r\n   * When true and the latitude and/or longitude values changes, the Google Maps panTo method is\r\n   * used to\r\n   * center the map. See: https://developers.google.com/maps/documentation/javascript/reference#Map\r\n   */\r\n  @Input() usePanning = false;\r\n\r\n  /**\r\n   * Sets the viewport to contain the given bounds.\r\n   * If this option to `true`, the bounds get automatically computed from all elements that use the {@link AgmFitBounds} directive.\r\n   */\r\n  @Input() fitBounds: google.maps.LatLngBoundsLiteral | google.maps.LatLngBounds | boolean = false;\r\n\r\n  /**\r\n   * Padding amount for the bounds.\r\n   */\r\n  @Input() fitBoundsPadding: number | google.maps.Padding;\r\n\r\n  /**\r\n   * The map mapTypeId. Defaults to 'roadmap'.\r\n   */\r\n  @Input() mapTypeId: keyof typeof google.maps.MapTypeId = 'ROADMAP';\r\n\r\n  /**\r\n   * When false, map icons are not clickable. A map icon represents a point of interest,\r\n   * also known as a POI. By default map icons are clickable.\r\n   */\r\n  @Input() clickableIcons = true;\r\n\r\n  /**\r\n   * A map icon represents a point of interest, also known as a POI.\r\n   * When map icons are clickable by default, an info window is displayed.\r\n   * When this property is set to false, the info window will not be shown but the click event\r\n   * will still fire\r\n   */\r\n  @Input() showDefaultInfoWindow = true;\r\n\r\n  /**\r\n   * This setting controls how gestures on the map are handled.\r\n   * Allowed values:\r\n   * - 'cooperative' (Two-finger touch gestures pan and zoom the map. One-finger touch gestures are not handled by the map.)\r\n   * - 'greedy'      (All touch gestures pan or zoom the map.)\r\n   * - 'none'        (The map cannot be panned or zoomed by user gestures.)\r\n   * - 'auto'        [default] (Gesture handling is either cooperative or greedy, depending on whether the page is scrollable or not.\r\n   */\r\n  @Input() gestureHandling: google.maps.GestureHandlingOptions = 'auto';\r\n\r\n  /**\r\n   * Controls the automatic switching behavior for the angle of incidence of\r\n   * the map. The only allowed values are 0 and 45. The value 0 causes the map\r\n   * to always use a 0° overhead view regardless of the zoom level and\r\n   * viewport. The value 45 causes the tilt angle to automatically switch to\r\n   * 45 whenever 45° imagery is available for the current zoom level and\r\n   * viewport, and switch back to 0 whenever 45° imagery is not available\r\n   * (this is the default behavior). 45° imagery is only available for\r\n   * satellite and hybrid map types, within some locations, and at some zoom\r\n   * levels. Note: getTilt returns the current tilt angle, not the value\r\n   * specified by this option. Because getTilt and this option refer to\r\n   * different things, do not bind() the tilt property; doing so may yield\r\n   * unpredictable effects. (Default of AGM is 0 (disabled). Enable it with value 45.)\r\n   */\r\n  @Input() tilt = 0;\r\n\r\n  /**\r\n   * Options for restricting the bounds of the map.\r\n   * User cannot pan or zoom away from restricted area.\r\n   */\r\n  @Input() restriction: google.maps.MapRestriction;\r\n\r\n  /**\r\n   * Map option attributes that can change over time\r\n   */\r\n  private static _mapOptionsAttributes: string[] = [\r\n    'disableDoubleClickZoom', 'scrollwheel', 'draggable', 'draggableCursor', 'draggingCursor',\r\n    'keyboardShortcuts', 'styles', 'zoom', 'minZoom', 'maxZoom', 'mapTypeId', 'clickableIcons',\r\n    'gestureHandling', 'tilt', 'restriction',\r\n  ];\r\n\r\n  private _observableSubscriptions: Subscription[] = [];\r\n  private _fitBoundsSubscription: Subscription;\r\n\r\n  /**\r\n   * This event emitter gets emitted when the user clicks on the map (but not when they click on a\r\n   * marker or infoWindow).\r\n   */\r\n  // tslint:disable-next-line: max-line-length\r\n  @Output() mapClick: EventEmitter<google.maps.MouseEvent | google.maps.IconMouseEvent> = new EventEmitter<google.maps.MouseEvent | google.maps.IconMouseEvent>();\r\n\r\n  /**\r\n   * This event emitter gets emitted when the user right-clicks on the map (but not when they click\r\n   * on a marker or infoWindow).\r\n   */\r\n  @Output() mapRightClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event emitter gets emitted when the user double-clicks on the map (but not when they click\r\n   * on a marker or infoWindow).\r\n   */\r\n  @Output() mapDblClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event emitter is fired when the map center changes.\r\n   */\r\n  @Output() centerChange: EventEmitter<google.maps.LatLngLiteral> = new EventEmitter<google.maps.LatLngLiteral>();\r\n\r\n  /**\r\n   * This event is fired when the viewport bounds have changed.\r\n   */\r\n  @Output() boundsChange: EventEmitter<google.maps.LatLngBounds> = new EventEmitter<google.maps.LatLngBounds>();\r\n\r\n  /**\r\n   * This event is fired when the mapTypeId property changes.\r\n   */\r\n  @Output() mapTypeIdChange: EventEmitter<google.maps.MapTypeId> = new EventEmitter<google.maps.MapTypeId>();\r\n\r\n  /**\r\n   * This event is fired when the map becomes idle after panning or zooming.\r\n   */\r\n  @Output() idle: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  /**\r\n   * This event is fired when the zoom level has changed.\r\n   */\r\n  @Output() zoomChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n  /**\r\n   * This event is fired when the google map is fully initialized.\r\n   * You get the google.maps.Map instance as a result of this EventEmitter.\r\n   */\r\n  @Output() mapReady: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  /**\r\n   * This event is fired when the visible tiles have finished loading.\r\n   */\r\n  @Output() tilesLoaded: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  @ContentChildren(AgmMapControl) mapControls: QueryList<AgmMapControl>;\r\n\r\n  constructor(\r\n    private _elem: ElementRef,\r\n    private _mapsWrapper: GoogleMapsAPIWrapper,\r\n    // tslint:disable-next-line: ban-types\r\n    @Inject(PLATFORM_ID) private _platformId: Object,\r\n    protected _fitBoundsService: FitBoundsService,\r\n    private _zone: NgZone\r\n  ) { }\r\n\r\n  /** @internal */\r\n  ngAfterContentInit() {\r\n    if (isPlatformServer(this._platformId)) {\r\n      // The code is running on the server, do nothing\r\n      return;\r\n    }\r\n    // todo: this should be solved with a new component and a viewChild decorator\r\n    const container = this._elem.nativeElement.querySelector('.agm-map-container-inner');\r\n    this._initMapInstance(container);\r\n  }\r\n\r\n  private _initMapInstance(el: HTMLElement) {\r\n    this._mapsWrapper.createMap(el, {\r\n      center: { lat: this.latitude || 0, lng: this.longitude || 0 },\r\n      zoom: this.zoom,\r\n      minZoom: this.minZoom,\r\n      maxZoom: this.maxZoom,\r\n      controlSize: this.controlSize,\r\n      disableDefaultUI: this.disableDefaultUI,\r\n      disableDoubleClickZoom: this.disableDoubleClickZoom,\r\n      scrollwheel: this.scrollwheel,\r\n      backgroundColor: this.backgroundColor,\r\n      draggable: this.draggable,\r\n      draggableCursor: this.draggableCursor,\r\n      draggingCursor: this.draggingCursor,\r\n      keyboardShortcuts: this.keyboardShortcuts,\r\n      styles: this.styles,\r\n      mapTypeId: this.mapTypeId.toLocaleLowerCase(),\r\n      clickableIcons: this.clickableIcons,\r\n      gestureHandling: this.gestureHandling,\r\n      tilt: this.tilt,\r\n      restriction: this.restriction,\r\n    })\r\n      .then(() => this._mapsWrapper.getNativeMap())\r\n      .then(map => this.mapReady.emit(map));\r\n\r\n    // register event listeners\r\n    this._handleMapCenterChange();\r\n    this._handleMapZoomChange();\r\n    this._handleMapMouseEvents();\r\n    this._handleBoundsChange();\r\n    this._handleMapTypeIdChange();\r\n    this._handleTilesLoadedEvent();\r\n    this._handleIdleEvent();\r\n    this._handleControlChange();\r\n  }\r\n\r\n  /** @internal */\r\n  ngOnDestroy() {\r\n    // unsubscribe all registered observable subscriptions\r\n    this._observableSubscriptions.forEach((s) => s.unsubscribe());\r\n\r\n    // remove all listeners from the map instance\r\n    this._mapsWrapper.clearInstanceListeners();\r\n    if (this._fitBoundsSubscription) {\r\n      this._fitBoundsSubscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  /* @internal */\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    this._updateMapOptionsChanges(changes);\r\n    this._updatePosition(changes);\r\n  }\r\n\r\n  private _updateMapOptionsChanges(changes: SimpleChanges) {\r\n    const options: { [propName: string]: any } = {};\r\n    const optionKeys =\r\n      Object.keys(changes).filter(k => AgmMap._mapOptionsAttributes.indexOf(k) !== -1);\r\n    optionKeys.forEach((k) => { options[k] = changes[k].currentValue; });\r\n    this._mapsWrapper.setMapOptions(options);\r\n  }\r\n\r\n  /**\r\n   * Triggers a resize event on the google map instance.\r\n   * When recenter is true, the of the google map gets called with the current lat/lng values or fitBounds value to recenter the map.\r\n   * Returns a promise that gets resolved after the event was triggered.\r\n   */\r\n  triggerResize(recenter: boolean = true): Promise<void> {\r\n    // Note: When we would trigger the resize event and show the map in the same turn (which is a\r\n    // common case for triggering a resize event), then the resize event would not\r\n    // work (to show the map), so we trigger the event in a timeout.\r\n    return new Promise<void>((resolve) => {\r\n      setTimeout(() => {\r\n        return this._mapsWrapper.triggerMapEvent('resize').then(() => {\r\n          if (recenter) {\r\n            this.fitBounds != null ? this._fitBounds() : this._setCenter();\r\n          }\r\n          resolve();\r\n        });\r\n      });\r\n    });\r\n  }\r\n\r\n  private _updatePosition(changes: SimpleChanges) {\r\n    // tslint:disable: no-string-literal\r\n    if (changes['latitude'] == null && changes['longitude'] == null &&\r\n      !changes['fitBounds']) {\r\n      // no position update needed\r\n      return;\r\n    }\r\n    // tslint:enable: no-string-literal\r\n\r\n    // we prefer fitBounds in changes\r\n    if ('fitBounds' in changes) {\r\n      this._fitBounds();\r\n      return;\r\n    }\r\n\r\n    if (typeof this.latitude !== 'number' || typeof this.longitude !== 'number') {\r\n      return;\r\n    }\r\n    this._setCenter();\r\n  }\r\n\r\n  private _setCenter() {\r\n    const newCenter = {\r\n      lat: this.latitude,\r\n      lng: this.longitude,\r\n    };\r\n    if (this.usePanning) {\r\n      this._mapsWrapper.panTo(newCenter);\r\n    } else {\r\n      this._mapsWrapper.setCenter(newCenter);\r\n    }\r\n  }\r\n\r\n  private _fitBounds() {\r\n    switch (this.fitBounds) {\r\n      case true:\r\n        this._subscribeToFitBoundsUpdates();\r\n        break;\r\n      case false:\r\n        if (this._fitBoundsSubscription) {\r\n          this._fitBoundsSubscription.unsubscribe();\r\n        }\r\n        break;\r\n      default:\r\n        if (this._fitBoundsSubscription) {\r\n          this._fitBoundsSubscription.unsubscribe();\r\n        }\r\n        this._updateBounds(this.fitBounds, this.fitBoundsPadding);\r\n    }\r\n  }\r\n\r\n  private _subscribeToFitBoundsUpdates() {\r\n    this._zone.runOutsideAngular(() => {\r\n      this._fitBoundsSubscription = this._fitBoundsService.getBounds$().subscribe(b => {\r\n        this._zone.run(() => this._updateBounds(b, this.fitBoundsPadding));\r\n      });\r\n    });\r\n  }\r\n\r\n  protected _updateBounds(bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral, padding?: number | google.maps.Padding) {\r\n    if (!bounds) {\r\n      return;\r\n    }\r\n    if (this._isLatLngBoundsLiteral(bounds) && typeof google !== 'undefined' && google && google.maps && google.maps.LatLngBounds) {\r\n      const newBounds = new google.maps.LatLngBounds();\r\n      newBounds.union(bounds);\r\n      bounds = newBounds;\r\n    }\r\n    if (this.usePanning) {\r\n      this._mapsWrapper.panToBounds(bounds, padding);\r\n      return;\r\n    }\r\n    this._mapsWrapper.fitBounds(bounds, padding);\r\n  }\r\n\r\n  private _isLatLngBoundsLiteral(bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral): boolean {\r\n    return bounds != null && (bounds as any).extend === undefined;\r\n  }\r\n\r\n  private _handleMapCenterChange() {\r\n    const s = this._mapsWrapper.subscribeToMapEvent('center_changed').subscribe(() => {\r\n      this._mapsWrapper.getCenter().then((center: google.maps.LatLng) => {\r\n        this.latitude = center.lat();\r\n        this.longitude = center.lng();\r\n        this.centerChange.emit({ lat: this.latitude, lng: this.longitude } as google.maps.LatLngLiteral);\r\n      });\r\n    });\r\n    this._observableSubscriptions.push(s);\r\n  }\r\n\r\n  private _handleBoundsChange() {\r\n    const s = this._mapsWrapper.subscribeToMapEvent('bounds_changed').subscribe(() => {\r\n      this._mapsWrapper.getBounds().then(\r\n        (bounds: google.maps.LatLngBounds) => { this.boundsChange.emit(bounds); });\r\n    });\r\n    this._observableSubscriptions.push(s);\r\n  }\r\n\r\n  private _handleMapTypeIdChange() {\r\n    const s = this._mapsWrapper.subscribeToMapEvent('maptypeid_changed').subscribe(() => {\r\n      this._mapsWrapper.getMapTypeId().then(\r\n        (mapTypeId: google.maps.MapTypeId) => { this.mapTypeIdChange.emit(mapTypeId); });\r\n    });\r\n    this._observableSubscriptions.push(s);\r\n  }\r\n\r\n  private _handleMapZoomChange() {\r\n    const s = this._mapsWrapper.subscribeToMapEvent('zoom_changed').subscribe(() => {\r\n      this._mapsWrapper.getZoom().then((z: number) => {\r\n        this.zoom = z;\r\n        this.zoomChange.emit(z);\r\n      });\r\n    });\r\n    this._observableSubscriptions.push(s);\r\n  }\r\n\r\n  private _handleIdleEvent() {\r\n    const s = this._mapsWrapper.subscribeToMapEvent('idle').subscribe(\r\n      () => { this.idle.emit(void 0); });\r\n    this._observableSubscriptions.push(s);\r\n  }\r\n\r\n  private _handleTilesLoadedEvent() {\r\n    const s = this._mapsWrapper.subscribeToMapEvent('tilesloaded').subscribe(\r\n      () => this.tilesLoaded.emit(void 0),\r\n    );\r\n    this._observableSubscriptions.push(s);\r\n  }\r\n\r\n  private _handleMapMouseEvents() {\r\n    type Event = { name: 'rightclick' | 'click' | 'dblclick', emitter: EventEmitter<google.maps.MouseEvent> };\r\n\r\n    const events: Event[] = [\r\n      { name: 'click', emitter: this.mapClick },\r\n      { name: 'rightclick', emitter: this.mapRightClick },\r\n      { name: 'dblclick', emitter: this.mapDblClick },\r\n    ];\r\n\r\n    events.forEach(e => {\r\n      const s = this._mapsWrapper.subscribeToMapEvent(e.name).subscribe(\r\n        ([event]) => {\r\n          // the placeId will be undefined in case the event was not an IconMouseEvent (google types)\r\n          if ((event as google.maps.IconMouseEvent).placeId && !this.showDefaultInfoWindow) {\r\n            event.stop();\r\n          }\r\n          event.coords = event.latLng.toJSON()\r\n          e.emitter.emit(event);\r\n        });\r\n      this._observableSubscriptions.push(s);\r\n    });\r\n  }\r\n\r\n  _handleControlChange() {\r\n    this._setControls();\r\n    this.mapControls.changes.subscribe(() => this._setControls());\r\n  }\r\n\r\n  _setControls() {\r\n    const controlOptions: Partial<google.maps.MapOptions> = {\r\n      fullscreenControl: !this.disableDefaultUI,\r\n      mapTypeControl: false,\r\n      panControl: false,\r\n      rotateControl: false,\r\n      scaleControl: false,\r\n      streetViewControl: !this.disableDefaultUI,\r\n      zoomControl: !this.disableDefaultUI,\r\n    };\r\n    this.mapControls.forEach(control => Object.assign(controlOptions, control.getOptions()));\r\n    this._mapsWrapper.setMapOptions(controlOptions);\r\n  }\r\n}\r\n","import { AfterContentInit, ContentChildren, Directive, EventEmitter, forwardRef, Input, OnChanges, OnDestroy, Output, QueryList, SimpleChange } from '@angular/core';\r\nimport { Observable, ReplaySubject, Subscription } from 'rxjs';\r\nimport { FitBoundsAccessor, FitBoundsDetails } from '../services/fit-bounds';\r\nimport { MarkerManager } from '../services/managers/marker-manager';\r\nimport { AgmInfoWindow } from './info-window';\r\n\r\nlet markerId = 0;\r\n\r\n/**\r\n * AgmMarker renders a map marker inside a {@link AgmMap}.\r\n *\r\n * ### Example\r\n * ```typescript\r\n * import { Component } from '@angular/core';\r\n *\r\n * @Component({\r\n *  selector: 'my-map-cmp',\r\n *  styles: [`\r\n *    .agm-map-container {\r\n *      height: 300px;\r\n *    }\r\n * `],\r\n *  template: `\r\n *    <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\r\n *      <agm-marker [latitude]=\"lat\" [longitude]=\"lng\" [label]=\"'M'\">\r\n *      </agm-marker>\r\n *    </agm-map>\r\n *  `\r\n * })\r\n * ```\r\n */\r\n@Directive({\r\n  selector: 'agm-marker',\r\n  providers: [\r\n    { provide: FitBoundsAccessor, useExisting: forwardRef(() => AgmMarker) },\r\n  ],\r\n})\r\nexport class AgmMarker implements OnDestroy, OnChanges, AfterContentInit, FitBoundsAccessor {\r\n  /**\r\n   * The latitude position of the marker.\r\n   */\r\n  @Input() latitude: number;\r\n\r\n  /**\r\n   * The longitude position of the marker.\r\n   */\r\n  @Input() longitude: number;\r\n\r\n  /**\r\n   * The title of the marker.\r\n   */\r\n  @Input() title: string;\r\n\r\n  /**\r\n   * The label (a single uppercase character) for the marker.\r\n   */\r\n  @Input() label: string | google.maps.MarkerLabel;\r\n\r\n  /**\r\n   * If true, the marker can be dragged. Default value is false.\r\n   */\r\n  // tslint:disable-next-line:no-input-rename\r\n  @Input('markerDraggable') draggable = false;\r\n\r\n  /**\r\n   * Icon (the URL of the image) for the foreground.\r\n   */\r\n  @Input() iconUrl: string | google.maps.Icon | google.maps.Symbol;\r\n\r\n  /**\r\n   * If true, the marker is visible\r\n   */\r\n  @Input() visible = true;\r\n\r\n  /**\r\n   * Whether to automatically open the child info window when the marker is clicked.\r\n   */\r\n  @Input() openInfoWindow = true;\r\n\r\n  /**\r\n   * The marker's opacity between 0.0 and 1.0.\r\n   */\r\n  @Input() opacity = 1;\r\n\r\n  /**\r\n   * All markers are displayed on the map in order of their zIndex, with higher values displaying in\r\n   * front of markers with lower values. By default, markers are displayed according to their\r\n   * vertical position on screen, with lower markers appearing in front of markers further up the\r\n   * screen.\r\n   */\r\n  @Input() zIndex = 1;\r\n\r\n  /**\r\n   * If true, the marker can be clicked. Default value is true.\r\n   */\r\n  // tslint:disable-next-line:no-input-rename\r\n  @Input('markerClickable') clickable = true;\r\n\r\n  /**\r\n   * Which animation to play when marker is added to a map.\r\n   * This can be 'BOUNCE' or 'DROP'\r\n   */\r\n  @Input() animation: keyof typeof google.maps.Animation;\r\n\r\n  /**\r\n   * This event is fired when the marker's animation property changes.\r\n   */\r\n  @Output() animationChange = new EventEmitter<keyof typeof google.maps.Animation>();\r\n\r\n  /**\r\n   * This event emitter gets emitted when the user clicks on the marker.\r\n   */\r\n  @Output() markerClick: EventEmitter<AgmMarker> = new EventEmitter<AgmMarker>();\r\n\r\n  /**\r\n   * This event emitter gets emitted when the user clicks twice on the marker.\r\n   */\r\n  @Output() markerDblClick: EventEmitter<AgmMarker> = new EventEmitter<AgmMarker>();\r\n\r\n  /**\r\n   * This event is fired when the user rightclicks on the marker.\r\n   */\r\n  @Output() markerRightClick: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  /**\r\n   * This event is fired when the user starts dragging the marker.\r\n   */\r\n  @Output() dragStart: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is repeatedly fired while the user drags the marker.\r\n   */\r\n  // tslint:disable-next-line: no-output-native\r\n  @Output() drag: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the user stops dragging the marker.\r\n   */\r\n  @Output() dragEnd: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the user mouses over the marker.\r\n   */\r\n  @Output() mouseOver: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the user mouses outside the marker.\r\n   */\r\n  @Output() mouseOut: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /** @internal */\r\n  @ContentChildren(AgmInfoWindow) infoWindow: QueryList<AgmInfoWindow> = new QueryList<AgmInfoWindow>();\r\n\r\n  private _markerAddedToManger = false;\r\n  private _id: string;\r\n  private _observableSubscriptions: Subscription[] = [];\r\n\r\n  protected readonly _fitBoundsDetails$: ReplaySubject<FitBoundsDetails> = new ReplaySubject<FitBoundsDetails>(1);\r\n\r\n  constructor(private _markerManager: MarkerManager) { this._id = (markerId++).toString(); }\r\n\r\n  /* @internal */\r\n  ngAfterContentInit() {\r\n    this.handleInfoWindowUpdate();\r\n    this.infoWindow.changes.subscribe(() => this.handleInfoWindowUpdate());\r\n  }\r\n\r\n  private handleInfoWindowUpdate() {\r\n    if (this.infoWindow.length > 1) {\r\n      throw new Error('Expected no more than one info window.');\r\n    }\r\n    this.infoWindow.forEach(marker => {\r\n      marker.hostMarker = this;\r\n    });\r\n  }\r\n\r\n  /** @internal */\r\n  ngOnChanges(changes: { [key: string]: SimpleChange }) {\r\n    if (typeof this.latitude === 'string') {\r\n      this.latitude = Number(this.latitude);\r\n    }\r\n    if (typeof this.longitude === 'string') {\r\n      this.longitude = Number(this.longitude);\r\n    }\r\n    if (typeof this.latitude !== 'number' || typeof this.longitude !== 'number') {\r\n      return;\r\n    }\r\n    if (!this._markerAddedToManger) {\r\n      this._markerManager.addMarker(this);\r\n      this._updateFitBoundsDetails();\r\n      this._markerAddedToManger = true;\r\n      this._addEventListeners();\r\n      return;\r\n    }\r\n    // tslint:disable: no-string-literal\r\n    if (changes['latitude'] || changes['longitude']) {\r\n      this._markerManager.updateMarkerPosition(this);\r\n      this._updateFitBoundsDetails();\r\n    }\r\n    if (changes['title']) {\r\n      this._markerManager.updateTitle(this);\r\n    }\r\n    if (changes['label']) {\r\n      this._markerManager.updateLabel(this);\r\n    }\r\n    if (changes['draggable']) {\r\n      this._markerManager.updateDraggable(this);\r\n    }\r\n    if (changes['iconUrl']) {\r\n      this._markerManager.updateIcon(this);\r\n    }\r\n    if (changes['opacity']) {\r\n      this._markerManager.updateOpacity(this);\r\n    }\r\n    if (changes['visible']) {\r\n      this._markerManager.updateVisible(this);\r\n    }\r\n    if (changes['zIndex']) {\r\n      this._markerManager.updateZIndex(this);\r\n    }\r\n    if (changes['clickable']) {\r\n      this._markerManager.updateClickable(this);\r\n    }\r\n    if (changes['animation']) {\r\n      this._markerManager.updateAnimation(this);\r\n    }\r\n    // tslint:enable: no-string-literal\r\n\r\n  }\r\n\r\n  /** @internal */\r\n  getFitBoundsDetails$(): Observable<FitBoundsDetails> {\r\n    return this._fitBoundsDetails$.asObservable();\r\n  }\r\n\r\n  protected _updateFitBoundsDetails() {\r\n    this._fitBoundsDetails$.next({ latLng: { lat: this.latitude, lng: this.longitude } });\r\n  }\r\n\r\n  private _addEventListeners() {\r\n    const cs = this._markerManager.createEventObservable('click', this).subscribe(() => {\r\n      if (this.openInfoWindow) {\r\n        this.infoWindow.forEach(infoWindow => infoWindow.open());\r\n      }\r\n      this.markerClick.emit(this);\r\n    });\r\n    this._observableSubscriptions.push(cs);\r\n\r\n    const dcs = this._markerManager.createEventObservable('dblclick', this).subscribe(() => {\r\n      this.markerDblClick.emit(null);\r\n    });\r\n    this._observableSubscriptions.push(dcs);\r\n\r\n    const rc = this._markerManager.createEventObservable('rightclick', this).subscribe(() => {\r\n      this.markerRightClick.emit(null);\r\n    });\r\n    this._observableSubscriptions.push(rc);\r\n\r\n    const ds =\r\n      this._markerManager.createEventObservable('dragstart', this)\r\n        .subscribe(e => this.dragStart.emit(e));\r\n    this._observableSubscriptions.push(ds);\r\n\r\n    const d =\r\n      this._markerManager.createEventObservable('drag', this)\r\n        .subscribe(e => this.drag.emit(e));\r\n    this._observableSubscriptions.push(d);\r\n\r\n    const de =\r\n      this._markerManager.createEventObservable('dragend', this)\r\n        .subscribe(e => this.dragEnd.emit(e));\r\n    this._observableSubscriptions.push(de);\r\n\r\n    const mover =\r\n      this._markerManager.createEventObservable('mouseover', this)\r\n        .subscribe(e => this.mouseOver.emit(e));\r\n    this._observableSubscriptions.push(mover);\r\n\r\n    const mout =\r\n      this._markerManager.createEventObservable('mouseout', this)\r\n        .subscribe(e => this.mouseOut.emit(e));\r\n    this._observableSubscriptions.push(mout);\r\n\r\n    const anChng =\r\n      this._markerManager.createEventObservable('animation_changed', this)\r\n        .subscribe(() => {\r\n          this.animationChange.emit(this.animation);\r\n        });\r\n    this._observableSubscriptions.push(anChng);\r\n  }\r\n\r\n  /** @internal */\r\n  id(): string { return this._id; }\r\n\r\n  /** @internal */\r\n  toString(): string { return 'AgmMarker-' + this._id.toString(); }\r\n\r\n  /** @internal */\r\n  ngOnDestroy() {\r\n    this._markerManager.deleteMarker(this);\r\n    // unsubscribe all registered observable subscriptions\r\n    this._observableSubscriptions.forEach((s) => s.unsubscribe());\r\n  }\r\n}\r\n","import { AfterContentInit, Directive, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { PolygonManager } from '../services/managers/polygon-manager';\r\nimport { MVCEvent } from '../utils/mvcarray-utils';\r\n\r\n/**\r\n * AgmPolygon renders a polygon on a {@link AgmMap}\r\n *\r\n * ### Example\r\n * ```typescript\r\n * import { Component } from '@angular/core';\r\n *\r\n * @Component({\r\n *  selector: 'my-map-cmp',\r\n *  styles: [`\r\n *    agm-map {\r\n *      height: 300px;\r\n *    }\r\n * `],\r\n *  template: `\r\n *    <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\r\n *      <agm-polygon [paths]=\"paths\">\r\n *      </agm-polygon>\r\n *    </agm-map>\r\n *  `\r\n * })\r\n * export class MyMapCmp {\r\n *   lat: number = 0;\r\n *   lng: number = 0;\r\n *   zoom: number = 10;\r\n *   paths: LatLngLiteral[] = [\r\n *     { lat: 0,  lng: 10 },\r\n *     { lat: 0,  lng: 20 },\r\n *     { lat: 10, lng: 20 },\r\n *     { lat: 10, lng: 10 },\r\n *     { lat: 0,  lng: 10 }\r\n *   ]\r\n *   // Nesting paths will create a hole where they overlap;\r\n *   nestedPaths: LatLngLiteral[][] = [[\r\n *     { lat: 0,  lng: 10 },\r\n *     { lat: 0,  lng: 20 },\r\n *     { lat: 10, lng: 20 },\r\n *     { lat: 10, lng: 10 },\r\n *     { lat: 0,  lng: 10 }\r\n *   ], [\r\n *     { lat: 0, lng: 15 },\r\n *     { lat: 0, lng: 20 },\r\n *     { lat: 5, lng: 20 },\r\n *     { lat: 5, lng: 15 },\r\n *     { lat: 0, lng: 15 }\r\n *   ]]\r\n * }\r\n * ```\r\n */\r\n@Directive({\r\n  selector: 'agm-polygon',\r\n})\r\nexport class AgmPolygon implements OnDestroy, OnChanges, AfterContentInit {\r\n  /**\r\n   * Indicates whether this Polygon handles mouse events. Defaults to true.\r\n   */\r\n  @Input() clickable = true;\r\n\r\n  /**\r\n   * If set to true, the user can drag this shape over the map. The geodesic\r\n   * property defines the mode of dragging. Defaults to false.\r\n   */\r\n  // tslint:disable-next-line:no-input-rename\r\n  @Input('polyDraggable') draggable = false;\r\n\r\n  /**\r\n   * If set to true, the user can edit this shape by dragging the control\r\n   * points shown at the vertices and on each segment. Defaults to false.\r\n   */\r\n  @Input() editable = false;\r\n\r\n  /**\r\n   * The fill color. All CSS3 colors are supported except for extended\r\n   * named colors.\r\n   */\r\n  @Input() fillColor: string;\r\n\r\n  /**\r\n   * The fill opacity between 0.0 and 1.0\r\n   */\r\n  @Input() fillOpacity: number;\r\n\r\n  /**\r\n   * When true, edges of the polygon are interpreted as geodesic and will\r\n   * follow the curvature of the Earth. When false, edges of the polygon are\r\n   * rendered as straight lines in screen space. Note that the shape of a\r\n   * geodesic polygon may appear to change when dragged, as the dimensions\r\n   * are maintained relative to the surface of the earth. Defaults to false.\r\n   */\r\n  @Input() geodesic = false;\r\n\r\n  /**\r\n   * The ordered sequence of coordinates that designates a closed loop.\r\n   * Unlike polylines, a polygon may consist of one or more paths.\r\n   *  As a result, the paths property may specify one or more arrays of\r\n   * LatLng coordinates. Paths are closed automatically; do not repeat the\r\n   * first vertex of the path as the last vertex. Simple polygons may be\r\n   * defined using a single array of LatLngs. More complex polygons may\r\n   * specify an array of arrays. Any simple arrays are converted into Arrays.\r\n   * Inserting or removing LatLngs from the Array will automatically update\r\n   * the polygon on the map.\r\n   */\r\n  @Input() paths: google.maps.LatLng[] | google.maps.LatLng[][] |\r\n      google.maps.MVCArray<google.maps.LatLng> | google.maps.MVCArray<google.maps.MVCArray<google.maps.LatLng>> |\r\n      google.maps.LatLngLiteral[] | google.maps.LatLngLiteral[][] = [];\r\n\r\n  /**\r\n   * The stroke color. All CSS3 colors are supported except for extended\r\n   * named colors.\r\n   */\r\n  @Input() strokeColor: string;\r\n\r\n  /**\r\n   * The stroke opacity between 0.0 and 1.0\r\n   */\r\n  @Input() strokeOpacity: number;\r\n\r\n  /**\r\n   * The stroke width in pixels.\r\n   */\r\n  @Input() strokeWeight: number;\r\n\r\n  /**\r\n   * Whether this polygon is visible on the map. Defaults to true.\r\n   */\r\n  @Input() visible: boolean;\r\n\r\n  /**\r\n   * The zIndex compared to other polys.\r\n   */\r\n  @Input() zIndex: number;\r\n\r\n  /**\r\n   * This event is fired when the DOM click event is fired on the Polygon.\r\n   */\r\n  @Output() polyClick: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the DOM dblclick event is fired on the Polygon.\r\n   */\r\n  @Output() polyDblClick: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is repeatedly fired while the user drags the polygon.\r\n   */\r\n  @Output() polyDrag: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the user stops dragging the polygon.\r\n   */\r\n  @Output() polyDragEnd: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the user starts dragging the polygon.\r\n   */\r\n  @Output() polyDragStart: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the DOM mousedown event is fired on the Polygon.\r\n   */\r\n  @Output() polyMouseDown: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the DOM mousemove event is fired on the Polygon.\r\n   */\r\n  @Output() polyMouseMove: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is fired on Polygon mouseout.\r\n   */\r\n  @Output() polyMouseOut: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is fired on Polygon mouseover.\r\n   */\r\n  @Output() polyMouseOver: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is fired whe the DOM mouseup event is fired on the Polygon\r\n   */\r\n  @Output() polyMouseUp: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the Polygon is right-clicked on.\r\n   */\r\n  @Output() polyRightClick: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is fired after Polygon first path changes.\r\n   */\r\n  @Output() polyPathsChange = new EventEmitter<MVCEvent<google.maps.LatLng[] | google.maps.LatLngLiteral[]>>();\r\n\r\n  private static _polygonOptionsAttributes: string[] = [\r\n    'clickable', 'draggable', 'editable', 'fillColor', 'fillOpacity', 'geodesic', 'icon', 'map',\r\n    'paths', 'strokeColor', 'strokeOpacity', 'strokeWeight', 'visible', 'zIndex', 'draggable',\r\n    'editable', 'visible',\r\n  ];\r\n\r\n  private _id: string;\r\n  private _polygonAddedToManager = false;\r\n  private _subscriptions: Subscription[] = [];\r\n\r\n  constructor(private _polygonManager: PolygonManager) { }\r\n\r\n  /** @internal */\r\n  ngAfterContentInit() {\r\n    if (!this._polygonAddedToManager) {\r\n      this._init();\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): any {\r\n    if (!this._polygonAddedToManager) {\r\n      this._init();\r\n      return;\r\n    }\r\n\r\n    this._polygonManager.setPolygonOptions(this, this._updatePolygonOptions(changes));\r\n  }\r\n\r\n  private _init() {\r\n    this._polygonManager.addPolygon(this);\r\n    this._polygonAddedToManager = true;\r\n    this._addEventListeners();\r\n  }\r\n\r\n  private _addEventListeners() {\r\n    const handlers = [\r\n      { name: 'click', handler: (ev: google.maps.PolyMouseEvent) => this.polyClick.emit(ev) },\r\n      { name: 'dblclick', handler: (ev: google.maps.PolyMouseEvent) => this.polyDblClick.emit(ev) },\r\n      { name: 'drag', handler: (ev: google.maps.MouseEvent) => this.polyDrag.emit(ev) },\r\n      { name: 'dragend', handler: (ev: google.maps.MouseEvent) => this.polyDragEnd.emit(ev) },\r\n      { name: 'dragstart', handler: (ev: google.maps.MouseEvent) => this.polyDragStart.emit(ev) },\r\n      { name: 'mousedown', handler: (ev: google.maps.PolyMouseEvent) => this.polyMouseDown.emit(ev) },\r\n      { name: 'mousemove', handler: (ev: google.maps.PolyMouseEvent) => this.polyMouseMove.emit(ev) },\r\n      { name: 'mouseout', handler: (ev: google.maps.PolyMouseEvent) => this.polyMouseOut.emit(ev) },\r\n      { name: 'mouseover', handler: (ev: google.maps.PolyMouseEvent) => this.polyMouseOver.emit(ev) },\r\n      { name: 'mouseup', handler: (ev: google.maps.PolyMouseEvent) => this.polyMouseUp.emit(ev) },\r\n      { name: 'rightclick', handler: (ev: google.maps.PolyMouseEvent) => this.polyRightClick.emit(ev) },\r\n    ];\r\n    handlers.forEach((obj) => {\r\n      const os = this._polygonManager.createEventObservable(obj.name, this).subscribe(obj.handler);\r\n      this._subscriptions.push(os);\r\n    });\r\n\r\n    this._polygonManager.createPathEventObservable(this)\r\n    .then(paths$ => {\r\n      const os = paths$.subscribe(pathEvent => this.polyPathsChange.emit(pathEvent));\r\n      this._subscriptions.push(os);\r\n    });\r\n  }\r\n\r\n  private _updatePolygonOptions(changes: SimpleChanges): google.maps.PolygonOptions {\r\n    return Object.keys(changes)\r\n      .filter(k => AgmPolygon._polygonOptionsAttributes.indexOf(k) !== -1)\r\n      .reduce((obj: any, k: string) => {\r\n        obj[k] = changes[k].currentValue;\r\n        return obj;\r\n      }, {});\r\n  }\r\n\r\n  /** @internal */\r\n  id(): string { return this._id; }\r\n\r\n  /** @internal */\r\n  ngOnDestroy() {\r\n    this._polygonManager.deletePolygon(this);\r\n    // unsubscribe all registered observable subscriptions\r\n    this._subscriptions.forEach((s) => s.unsubscribe());\r\n  }\r\n\r\n  getPath(): Promise<google.maps.LatLng[]> {\r\n    return this._polygonManager.getPath(this);\r\n  }\r\n\r\n  getPaths(): Promise<google.maps.LatLng[][]> {\r\n    return this._polygonManager.getPaths(this);\r\n  }\r\n}\r\n","import { Directive, Input, OnInit } from '@angular/core';\r\n\r\n/**\r\n * AgmPolylineIcon enables to add polyline sequences to add arrows, circle,\r\n * or custom icons either along the entire line, or in a specific part of it.\r\n * See https://developers.google.com/maps/documentation/javascript/shapes#polyline_customize\r\n *\r\n * ### Example\r\n * ```html\r\n *    <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\r\n *      <agm-polyline>\r\n *          <agm-icon-sequence [fixedRotation]=\"true\" [path]=\"'FORWARD_OPEN_ARROW'\">\r\n *          </agm-icon-sequence>\r\n *      </agm-polyline>\r\n *    </agm-map>\r\n * ```\r\n */\r\n@Directive({selector: 'agm-polyline agm-icon-sequence'})\r\nexport class AgmPolylineIcon implements OnInit{\r\n\r\n  /**\r\n   * If `true`, each icon in the sequence has the same fixed rotation regardless of the\r\n   * angle of the edge on which it lies. Defaults to `false`, in which case each icon\r\n   * in the sequence is rotated to align with its edge.\r\n   */\r\n  @Input() fixedRotation: boolean;\r\n\r\n  /**\r\n   * The distance from the start of the line at which an icon is to be rendered. This\r\n   * distance may be expressed as a percentage of line's length (e.g. '50%') or in pixels\r\n   * (e.g. '50px'). Defaults to '100%'.\r\n   */\r\n  @Input() offset: string;\r\n\r\n  /**\r\n   * The distance between consecutive icons on the line. This distance may be expressed as\r\n   * a percentage of the line's length (e.g. '50%') or in pixels (e.g. '50px'). To disable\r\n   * repeating of the icon, specify '0'. Defaults to '0'.\r\n   */\r\n  @Input() repeat: string;\r\n\r\n  /**\r\n   * The x coordinate of the position of the symbol relative to the polyline. The coordinate\r\n   * of the symbol's path is translated _left_ by the anchor's x coordinate. By default, a\r\n   * symbol is anchored at (0, 0). The position is expressed in the same coordinate system as the\r\n   * symbol's path.\r\n   */\r\n  @Input() anchorX: number;\r\n\r\n  /**\r\n   * The y coordinate of the position of the symbol relative to the polyline. The coordinate\r\n   * of the symbol's path is translated _up_ by the anchor's y coordinate. By default, a\r\n   * symbol is anchored at (0, 0). The position is expressed in the same coordinate system as the\r\n   * symbol's path.\r\n   */\r\n  @Input() anchorY: number;\r\n\r\n  /**\r\n   * The symbol's fill color. All CSS3 colors are supported except for extended named\r\n   * colors. Defaults to the stroke color of the corresponding polyline.\r\n   */\r\n  @Input() fillColor: string;\r\n\r\n  /**\r\n   * The symbol's fill opacity. Defaults to 0.\r\n   */\r\n  @Input() fillOpacity: number;\r\n\r\n  /**\r\n   * The symbol's path, which is a built-in symbol path, or a custom path expressed using\r\n   * SVG path notation. Required.\r\n   */\r\n  @Input() path: keyof typeof google.maps.SymbolPath | string;\r\n\r\n  /**\r\n   * The angle by which to rotate the symbol, expressed clockwise in degrees.\r\n   * Defaults to 0. A symbol where `fixedRotation` is `false` is rotated relative to\r\n   * the angle of the edge on which it lies.\r\n   */\r\n  @Input() rotation: number;\r\n\r\n  /**\r\n   * The amount by which the symbol is scaled in size. Defaults to the stroke weight\r\n   * of the polyline; after scaling, the symbol must lie inside a square 22 pixels in\r\n   * size centered at the symbol's anchor.\r\n   */\r\n  @Input() scale: number;\r\n\r\n  /**\r\n   * The symbol's stroke color. All CSS3 colors are supported except for extended named\r\n   * colors. Defaults to the stroke color of the polyline.\r\n   */\r\n  @Input() strokeColor: string;\r\n\r\n  /**\r\n   * The symbol's stroke opacity. Defaults to the stroke opacity of the polyline.\r\n   */\r\n  @Input() strokeOpacity: number;\r\n\r\n  /**\r\n   * The symbol's stroke weight. Defaults to the scale of the symbol.\r\n   */\r\n  @Input() strokeWeight: number;\r\n\r\n  ngOnInit(): void {\r\n    if (this.path == null) {\r\n      throw new Error('Icon Sequence path is required');\r\n    }\r\n  }\r\n}\r\n","import { Directive, EventEmitter, forwardRef, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map, startWith } from 'rxjs/operators';\r\nimport { FitBoundsAccessor, FitBoundsDetails } from '../services/fit-bounds';\r\n\r\n/**\r\n * AgmPolylinePoint represents one element of a polyline within a  {@link\r\n * AgmPolyline}\r\n */\r\n@Directive({\r\n  selector: 'agm-polyline-point',\r\n  providers: [\r\n    {provide: FitBoundsAccessor, useExisting: forwardRef(() => AgmPolylinePoint)},\r\n  ],\r\n})\r\nexport class AgmPolylinePoint implements OnChanges, FitBoundsAccessor {\r\n  /**\r\n   * The latitude position of the point.\r\n   */\r\n  @Input() public latitude: number;\r\n\r\n  /**\r\n   * The longitude position of the point;\r\n   */\r\n  @Input() public longitude: number;\r\n\r\n  /**\r\n   * This event emitter gets emitted when the position of the point changed.\r\n   */\r\n  @Output() positionChanged: EventEmitter<google.maps.LatLngLiteral> = new EventEmitter<google.maps.LatLngLiteral>();\r\n\r\n  constructor() {}\r\n\r\n  ngOnChanges(changes: SimpleChanges): any {\r\n    // tslint:disable: no-string-literal\r\n    if (changes['latitude'] || changes['longitude']) {\r\n      this.positionChanged.emit({\r\n        lat: changes['latitude'] ? changes['latitude'].currentValue : this.latitude,\r\n        lng: changes['longitude'] ? changes['longitude'].currentValue : this.longitude,\r\n      });\r\n    }\r\n    // tslint:enable: no-string-literal\r\n  }\r\n\r\n  /** @internal */\r\n  getFitBoundsDetails$(): Observable<FitBoundsDetails> {\r\n    return this.positionChanged.pipe(\r\n      startWith({lat: this.latitude, lng: this.longitude}),\r\n      map(position => ({latLng: position}))\r\n    );\r\n  }\r\n}\r\n","import { AfterContentInit, ContentChildren, Directive, EventEmitter, Input, OnChanges, OnDestroy, Output, QueryList, SimpleChanges } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { PolylineManager } from '../services/managers/polyline-manager';\r\nimport { MVCEvent } from '../utils/mvcarray-utils';\r\nimport { AgmPolylineIcon } from './polyline-icon';\r\nimport { AgmPolylinePoint } from './polyline-point';\r\n\r\nlet polylineId = 0;\r\n/**\r\n * AgmPolyline renders a polyline on a {@link AgmMap}\r\n *\r\n * ### Example\r\n * ```typescript\r\n * import { Component } from '@angular/core';\r\n *\r\n * @Component({\r\n *  selector: 'my-map-cmp',\r\n *  styles: [`\r\n *    .agm-map-container {\r\n *      height: 300px;\r\n *    }\r\n * `],\r\n *  template: `\r\n *    <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\r\n *      <agm-polyline>\r\n *          <agm-polyline-point [latitude]=\"latA\" [longitude]=\"lngA\">\r\n *          </agm-polyline-point>\r\n *          <agm-polyline-point [latitude]=\"latB\" [longitude]=\"lngB\">\r\n *          </agm-polyline-point>\r\n *      </agm-polyline>\r\n *    </agm-map>\r\n *  `\r\n * })\r\n * ```\r\n */\r\n@Directive({\r\n  selector: 'agm-polyline',\r\n})\r\nexport class AgmPolyline implements OnDestroy, OnChanges, AfterContentInit {\r\n  /**\r\n   * Indicates whether this Polyline handles mouse events. Defaults to true.\r\n   */\r\n  @Input() clickable = true;\r\n\r\n  /**\r\n   * If set to true, the user can drag this shape over the map. The geodesic property defines the\r\n   * mode of dragging. Defaults to false.\r\n   */\r\n  // tslint:disable-next-line:no-input-rename\r\n  @Input('polylineDraggable') draggable = false;\r\n\r\n  /**\r\n   * If set to true, the user can edit this shape by dragging the control points shown at the\r\n   * vertices and on each segment. Defaults to false.\r\n   */\r\n  @Input() editable = false;\r\n\r\n  /**\r\n   * When true, edges of the polygon are interpreted as geodesic and will follow the curvature of\r\n   * the Earth. When false, edges of the polygon are rendered as straight lines in screen space.\r\n   * Note that the shape of a geodesic polygon may appear to change when dragged, as the dimensions\r\n   * are maintained relative to the surface of the earth. Defaults to false.\r\n   */\r\n  @Input() geodesic = false;\r\n\r\n  /**\r\n   * The stroke color. All CSS3 colors are supported except for extended named colors.\r\n   */\r\n  @Input() strokeColor: string;\r\n\r\n  /**\r\n   * The stroke opacity between 0.0 and 1.0.\r\n   */\r\n  @Input() strokeOpacity: number;\r\n\r\n  /**\r\n   * The stroke width in pixels.\r\n   */\r\n  @Input() strokeWeight: number;\r\n\r\n  /**\r\n   * Whether this polyline is visible on the map. Defaults to true.\r\n   */\r\n  @Input() visible = true;\r\n\r\n  /**\r\n   * The zIndex compared to other polys.\r\n   */\r\n  @Input() zIndex: number;\r\n\r\n  /**\r\n   * This event is fired when the DOM click event is fired on the Polyline.\r\n   */\r\n  @Output() lineClick: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the DOM dblclick event is fired on the Polyline.\r\n   */\r\n  @Output() lineDblClick: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is repeatedly fired while the user drags the polyline.\r\n   */\r\n  @Output() lineDrag: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the user stops dragging the polyline.\r\n   */\r\n  @Output() lineDragEnd: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the user starts dragging the polyline.\r\n   */\r\n  @Output() lineDragStart: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the DOM mousedown event is fired on the Polyline.\r\n   */\r\n  @Output() lineMouseDown: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the DOM mousemove event is fired on the Polyline.\r\n   */\r\n  @Output() lineMouseMove: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is fired on Polyline mouseout.\r\n   */\r\n  @Output() lineMouseOut: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is fired on Polyline mouseover.\r\n   */\r\n  @Output() lineMouseOver: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is fired whe the DOM mouseup event is fired on the Polyline\r\n   */\r\n  @Output() lineMouseUp: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the Polyline is right-clicked on.\r\n   */\r\n  @Output() lineRightClick: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\r\n\r\n  /**\r\n   * This event is fired after Polyline's path changes.\r\n   */\r\n  @Output() polyPathChange = new EventEmitter<MVCEvent<google.maps.LatLng>>();\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  @ContentChildren(AgmPolylinePoint) points: QueryList<AgmPolylinePoint>;\r\n\r\n  @ContentChildren(AgmPolylineIcon) iconSequences: QueryList<AgmPolylineIcon>;\r\n\r\n  private static _polylineOptionsAttributes: string[] = [\r\n    'draggable', 'editable', 'visible', 'geodesic', 'strokeColor', 'strokeOpacity', 'strokeWeight',\r\n    'zIndex',\r\n  ];\r\n\r\n  private _id: string;\r\n  private _polylineAddedToManager = false;\r\n  private _subscriptions: Subscription[] = [];\r\n\r\n  constructor(private _polylineManager: PolylineManager) { this._id = (polylineId++).toString(); }\r\n\r\n  /** @internal */\r\n  ngAfterContentInit() {\r\n    if (this.points.length) {\r\n      this.points.forEach((point: AgmPolylinePoint) => {\r\n        const s = point.positionChanged.subscribe(\r\n            () => { this._polylineManager.updatePolylinePoints(this); });\r\n        this._subscriptions.push(s);\r\n      });\r\n    }\r\n    if (!this._polylineAddedToManager) {\r\n      this._init();\r\n    }\r\n    const pointSub = this.points.changes.subscribe(() => this._polylineManager.updatePolylinePoints(this));\r\n    this._subscriptions.push(pointSub);\r\n    this._polylineManager.updatePolylinePoints(this);\r\n\r\n    const iconSub = this.iconSequences.changes.subscribe(() => this._polylineManager.updateIconSequences(this));\r\n    this._subscriptions.push(iconSub);\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): any {\r\n    if (!this._polylineAddedToManager) {\r\n      this._init();\r\n      return;\r\n    }\r\n\r\n    const options: {[propName: string]: any} = {};\r\n    const optionKeys = Object.keys(changes).filter(\r\n        k => AgmPolyline._polylineOptionsAttributes.indexOf(k) !== -1);\r\n    optionKeys.forEach(k => options[k] = changes[k].currentValue);\r\n    this._polylineManager.setPolylineOptions(this, options);\r\n  }\r\n\r\n  getPath(): Promise<google.maps.LatLng[]> {\r\n    return this._polylineManager.getPath(this);\r\n  }\r\n\r\n  private _init() {\r\n    this._polylineManager.addPolyline(this);\r\n    this._polylineAddedToManager = true;\r\n    this._addEventListeners();\r\n  }\r\n\r\n  private _addEventListeners() {\r\n    const handlers = [\r\n      {name: 'click', handler: (ev: google.maps.PolyMouseEvent) => this.lineClick.emit(ev)},\r\n      {name: 'dblclick', handler: (ev: google.maps.PolyMouseEvent) => this.lineDblClick.emit(ev)},\r\n      {name: 'drag', handler: (ev: google.maps.MouseEvent) => this.lineDrag.emit(ev)},\r\n      {name: 'dragend', handler: (ev: google.maps.MouseEvent) => this.lineDragEnd.emit(ev)},\r\n      {name: 'dragstart', handler: (ev: google.maps.MouseEvent) => this.lineDragStart.emit(ev)},\r\n      {name: 'mousedown', handler: (ev: google.maps.PolyMouseEvent) => this.lineMouseDown.emit(ev)},\r\n      {name: 'mousemove', handler: (ev: google.maps.PolyMouseEvent) => this.lineMouseMove.emit(ev)},\r\n      {name: 'mouseout', handler: (ev: google.maps.PolyMouseEvent) => this.lineMouseOut.emit(ev)},\r\n      {name: 'mouseover', handler: (ev: google.maps.PolyMouseEvent) => this.lineMouseOver.emit(ev)},\r\n      {name: 'mouseup', handler: (ev: google.maps.PolyMouseEvent) => this.lineMouseUp.emit(ev)},\r\n      {name: 'rightclick', handler: (ev: google.maps.PolyMouseEvent) => this.lineRightClick.emit(ev)},\r\n    ];\r\n    handlers.forEach((obj) => {\r\n      const os = this._polylineManager.createEventObservable(obj.name, this).subscribe(obj.handler);\r\n      this._subscriptions.push(os);\r\n    });\r\n\r\n    this._polylineManager.createPathEventObservable(this).then((ob$) => {\r\n      const os = ob$.subscribe(pathEvent => this.polyPathChange.emit(pathEvent));\r\n      this._subscriptions.push(os);\r\n    });\r\n  }\r\n\r\n  /** @internal */\r\n  _getPoints(): AgmPolylinePoint[] {\r\n    if (this.points) {\r\n      return this.points.toArray();\r\n    }\r\n    return [];\r\n  }\r\n\r\n  _getIcons(): Array<AgmPolylineIcon> {\r\n    if (this.iconSequences) {\r\n      return this.iconSequences.toArray();\r\n    }\r\n    return [];\r\n  }\r\n\r\n  /** @internal */\r\n  id(): string { return this._id; }\r\n\r\n  /** @internal */\r\n  ngOnDestroy() {\r\n    this._polylineManager.deletePolyline(this);\r\n    // unsubscribe all registered observable subscriptions\r\n    this._subscriptions.forEach((s) => s.unsubscribe());\r\n  }\r\n}\r\n","import {\r\n  Directive,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  SimpleChange,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { RectangleManager } from '../services/managers/rectangle-manager';\r\n\r\n@Directive({\r\n  selector: 'agm-rectangle',\r\n})\r\nexport class AgmRectangle implements OnInit, OnChanges, OnDestroy {\r\n  /**\r\n   * The north position of the rectangle (required).\r\n   */\r\n  @Input() north: number;\r\n\r\n  /**\r\n   * The east position of the rectangle (required).\r\n   */\r\n  @Input() east: number;\r\n\r\n  /**\r\n   * The south position of the rectangle (required).\r\n   */\r\n  @Input() south: number;\r\n\r\n  /**\r\n   * The west position of the rectangle (required).\r\n   */\r\n  @Input() west: number;\r\n\r\n  /**\r\n   * Indicates whether this Rectangle handles mouse events. Defaults to true.\r\n   */\r\n  @Input() clickable = true;\r\n\r\n  /**\r\n   * If set to true, the user can drag this rectangle over the map. Defaults to false.\r\n   */\r\n  // tslint:disable-next-line:no-input-rename\r\n  @Input('rectangleDraggable') draggable = false;\r\n\r\n  /**\r\n   * If set to true, the user can edit this rectangle by dragging the control points shown at\r\n   * the center and around the circumference of the rectangle. Defaults to false.\r\n   */\r\n  @Input() editable = false;\r\n\r\n  /**\r\n   * The fill color. All CSS3 colors are supported except for extended named colors.\r\n   */\r\n  @Input() fillColor: string;\r\n\r\n  /**\r\n   * The fill opacity between 0.0 and 1.0.\r\n   */\r\n  @Input() fillOpacity: number;\r\n\r\n  /**\r\n   * The stroke color. All CSS3 colors are supported except for extended named colors.\r\n   */\r\n  @Input() strokeColor: string;\r\n\r\n  /**\r\n   * The stroke opacity between 0.0 and 1.0\r\n   */\r\n  @Input() strokeOpacity: number;\r\n\r\n  /**\r\n   * The stroke position. Defaults to CENTER.\r\n   * This property is not supported on Internet Explorer 8 and earlier.\r\n   */\r\n  @Input() strokePosition: keyof typeof google.maps.StrokePosition = 'CENTER';\r\n\r\n  /**\r\n   * The stroke width in pixels.\r\n   */\r\n  @Input() strokeWeight = 0;\r\n\r\n  /**\r\n   * Whether this rectangle is visible on the map. Defaults to true.\r\n   */\r\n  @Input() visible = true;\r\n\r\n  /**\r\n   * The zIndex compared to other polys.\r\n   */\r\n  @Input() zIndex: number;\r\n\r\n  /**\r\n   * This event is fired when the rectangle's is changed.\r\n   */\r\n  @Output()\r\n  boundsChange: EventEmitter<google.maps.LatLngBoundsLiteral> = new EventEmitter<\r\n    google.maps.LatLngBoundsLiteral\r\n  >();\r\n\r\n  /**\r\n   * This event emitter gets emitted when the user clicks on the rectangle.\r\n   */\r\n  @Output()\r\n  rectangleClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event emitter gets emitted when the user clicks on the rectangle.\r\n   */\r\n  @Output()\r\n  rectangleDblClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is repeatedly fired while the user drags the rectangle.\r\n   */\r\n  // tslint:disable-next-line: no-output-native\r\n  @Output() drag: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the user stops dragging the rectangle.\r\n   */\r\n  @Output() dragEnd: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the user starts dragging the rectangle.\r\n   */\r\n  @Output()\r\n  dragStart: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the DOM mousedown event is fired on the rectangle.\r\n   */\r\n  @Output()\r\n  mouseDown: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the DOM mousemove event is fired on the rectangle.\r\n   */\r\n  @Output()\r\n  mouseMove: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired on rectangle mouseout.\r\n   */\r\n  @Output() mouseOut: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired on rectangle mouseover.\r\n   */\r\n  @Output()\r\n  mouseOver: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the DOM mouseup event is fired on the rectangle.\r\n   */\r\n  @Output() mouseUp: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  /**\r\n   * This event is fired when the rectangle is right-clicked on.\r\n   */\r\n  @Output()\r\n  rightClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\r\n\r\n  private _rectangleAddedToManager = false;\r\n\r\n  private static _mapOptions: string[] = [\r\n    'fillColor',\r\n    'fillOpacity',\r\n    'strokeColor',\r\n    'strokeOpacity',\r\n    'strokePosition',\r\n    'strokeWeight',\r\n    'visible',\r\n    'zIndex',\r\n    'clickable',\r\n  ];\r\n\r\n  private _eventSubscriptions: Subscription[] = [];\r\n\r\n  constructor(private _manager: RectangleManager) {}\r\n\r\n  /** @internal */\r\n  ngOnInit() {\r\n    this._manager.addRectangle(this);\r\n    this._rectangleAddedToManager = true;\r\n    this._registerEventListeners();\r\n  }\r\n\r\n  /** @internal */\r\n  ngOnChanges(changes: { [key: string]: SimpleChange }) {\r\n    if (!this._rectangleAddedToManager) {\r\n      return;\r\n    }\r\n    // tslint:disable: no-string-literal\r\n    if (\r\n      changes['north'] ||\r\n      changes['east'] ||\r\n      changes['south'] ||\r\n      changes['west']\r\n    ) {\r\n      this._manager.setBounds(this);\r\n    }\r\n    if (changes['editable']) {\r\n      this._manager.setEditable(this);\r\n    }\r\n    if (changes['draggable']) {\r\n      this._manager.setDraggable(this);\r\n    }\r\n    if (changes['visible']) {\r\n      this._manager.setVisible(this);\r\n    }\r\n    // tslint:enable: no-string-literal\r\n    this._updateRectangleOptionsChanges(changes);\r\n  }\r\n\r\n  private _updateRectangleOptionsChanges(changes: {\r\n    [propName: string]: SimpleChange;\r\n  }) {\r\n    const options: google.maps.RectangleOptions = {};\r\n    const optionKeys = Object.keys(changes).filter(\r\n      k => AgmRectangle._mapOptions.indexOf(k) !== -1,\r\n    );\r\n    optionKeys.forEach(k => {\r\n      options[k] = changes[k].currentValue;\r\n    });\r\n\r\n    if (optionKeys.length > 0) {\r\n      this._manager.setOptions(this, options);\r\n    }\r\n  }\r\n\r\n  private _registerEventListeners() {\r\n    const events: Map<string, EventEmitter<any>> = new Map<\r\n      string,\r\n      EventEmitter<any>\r\n    >();\r\n    events.set('bounds_changed', this.boundsChange);\r\n    events.set('click', this.rectangleClick);\r\n    events.set('dblclick', this.rectangleDblClick);\r\n    events.set('drag', this.drag);\r\n    events.set('dragend', this.dragEnd);\r\n    events.set('dragStart', this.dragStart);\r\n    events.set('mousedown', this.mouseDown);\r\n    events.set('mousemove', this.mouseMove);\r\n    events.set('mouseout', this.mouseOut);\r\n    events.set('mouseover', this.mouseOver);\r\n    events.set('mouseup', this.mouseUp);\r\n    events.set('rightclick', this.rightClick);\r\n\r\n    events.forEach((eventEmitter, eventName) => {\r\n      this._eventSubscriptions.push(\r\n        this._manager\r\n          .createEventObservable<google.maps.MouseEvent>(eventName, this)\r\n          .subscribe(value => {\r\n            switch (eventName) {\r\n              case 'bounds_changed':\r\n                this._manager.getBounds(this).then(bounds =>\r\n                  eventEmitter.emit({\r\n                    north: bounds.getNorthEast().lat(),\r\n                    east: bounds.getNorthEast().lng(),\r\n                    south: bounds.getSouthWest().lat(),\r\n                    west: bounds.getSouthWest().lng(),\r\n                  } as google.maps.LatLngBoundsLiteral),\r\n                );\r\n                break;\r\n              default:\r\n                eventEmitter.emit(value);\r\n            }\r\n          }),\r\n      );\r\n    });\r\n  }\r\n\r\n  /** @internal */\r\n  ngOnDestroy() {\r\n    this._eventSubscriptions.forEach(s => s.unsubscribe());\r\n    this._eventSubscriptions = null;\r\n    this._manager.removeRectangle(this);\r\n  }\r\n\r\n  /**\r\n   * Gets the LatLngBounds of this Rectangle.\r\n   */\r\n  getBounds(): Promise<google.maps.LatLngBounds> {\r\n    return this._manager.getBounds(this);\r\n  }\r\n}\r\n","import { Directive, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { LayerManager } from '../services/managers/layer-manager';\r\n\r\nlet layerId = 0;\r\n\r\n/*\r\n * This directive adds a transit layer to a google map instance\r\n * <agm-transit-layer [visible]=\"true|false\"> <agm-transit-layer>\r\n * */\r\n@Directive({\r\n    selector: 'agm-transit-layer',\r\n})\r\nexport class AgmTransitLayer implements OnInit, OnDestroy{\r\n    private _addedToManager = false;\r\n    private _id: string = (layerId++).toString();\r\n\r\n    /**\r\n     * Hide/show transit layer\r\n     */\r\n    @Input() visible = true;\r\n\r\n    constructor( private _manager: LayerManager ) {}\r\n\r\n    ngOnInit() {\r\n        if (this._addedToManager) {\r\n            return;\r\n        }\r\n        this._manager.addTransitLayer(this);\r\n        this._addedToManager = true;\r\n    }\r\n\r\n    /** @internal */\r\n    id(): string { return this._id; }\r\n\r\n    /** @internal */\r\n    toString(): string { return `AgmTransitLayer-${this._id.toString()}`; }\r\n\r\n    /** @internal */\r\n    ngOnDestroy() {\r\n        this._manager.deleteLayer(this);\r\n    }\r\n\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { AgmBicyclingLayer } from './directives/bicycling-layer';\r\nimport { AgmCircle } from './directives/circle';\r\nimport { AgmDataLayer } from './directives/data-layer';\r\nimport { AgmFitBounds } from './directives/fit-bounds';\r\nimport { AgmInfoWindow } from './directives/info-window';\r\nimport { AgmKmlLayer } from './directives/kml-layer';\r\nimport { AgmFullscreenControl, AgmMap, AgmMapTypeControl, AgmPanControl, AgmRotateControl, AgmScaleControl, AgmStreetViewControl, AgmZoomControl } from './directives/map';\r\nimport { AgmMarker } from './directives/marker';\r\nimport { AgmPolygon } from './directives/polygon';\r\nimport { AgmPolyline } from './directives/polyline';\r\nimport { AgmPolylineIcon } from './directives/polyline-icon';\r\nimport { AgmPolylinePoint } from './directives/polyline-point';\r\nimport { AgmRectangle } from './directives/rectangle';\r\nimport { AgmTransitLayer } from './directives/transit-layer';\r\n\r\nimport { LazyMapsAPILoader, LazyMapsAPILoaderConfigLiteral, LAZY_MAPS_API_CONFIG } from './services/maps-api-loader/lazy-maps-api-loader';\r\nimport { MapsAPILoader } from './services/maps-api-loader/maps-api-loader';\r\n\r\nimport { BROWSER_GLOBALS_PROVIDERS } from './utils/browser-globals';\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function coreDirectives() {\r\n  return [\r\n    AgmBicyclingLayer,\r\n    AgmCircle,\r\n    AgmDataLayer,\r\n    AgmFitBounds,\r\n    AgmFullscreenControl,\r\n    AgmInfoWindow,\r\n    AgmKmlLayer,\r\n    AgmMap,\r\n    AgmMapTypeControl,\r\n    AgmMarker,\r\n    AgmPanControl,\r\n    AgmPolygon,\r\n    AgmPolyline,\r\n    AgmPolylineIcon,\r\n    AgmPolylinePoint,\r\n    AgmRectangle,\r\n    AgmRotateControl,\r\n    AgmScaleControl,\r\n    AgmStreetViewControl,\r\n    AgmTransitLayer,\r\n    AgmZoomControl,\r\n  ];\r\n}\r\n\r\n/**\r\n * The angular-google-maps core module. Contains all Directives/Services/Pipes\r\n * of the core module. Please use `AgmCoreModule.forRoot()` in your app module.\r\n */\r\n@NgModule({declarations: coreDirectives(), exports: coreDirectives()})\r\nexport class AgmCoreModule {\r\n  /**\r\n   * Please use this method when you register the module at the root level.\r\n   */\r\n  static forRoot(lazyMapsAPILoaderConfig?: LazyMapsAPILoaderConfigLiteral): ModuleWithProviders<AgmCoreModule> {\r\n    return {\r\n      ngModule: AgmCoreModule,\r\n      providers: [\r\n        ...BROWSER_GLOBALS_PROVIDERS, {provide: MapsAPILoader, useClass: LazyMapsAPILoader},\r\n        {provide: LAZY_MAPS_API_CONFIG, useValue: lazyMapsAPILoaderConfig},\r\n      ],\r\n    };\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of core\r\n */\r\n\r\nexport * from './lib/services';\r\nexport * from './lib/directives';\r\nexport * from './lib/core.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MapsAPILoader","i1.GoogleMapsAPIWrapper","i1.WindowRef","i1.DocumentRef","i2.MarkerManager","layerId","i1.LayerManager","i1.CircleManager","i1.DataLayerManager","i1.FitBoundsAccessor","i1.FitBoundsService","i1.InfoWindowManager","i1.KmlLayerManager","i2.FitBoundsService","i1.MarkerManager","i1.PolygonManager","i1.PolylineManager","i1.RectangleManager"],"mappings":"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"}