{"version":3,"file":"ng-maps-google.mjs","sources":["../../../../libs/google/src/lib/google-maps-api-wrapper.ts","../../../../libs/google/src/lib/util/is-valid-marker-icon.ts","../../../../libs/google/src/lib/managers/marker.manager.ts","../../../../libs/google/src/lib/managers/circle.manager.ts","../../../../libs/google/src/lib/managers/polygon.manager.ts","../../../../libs/google/src/lib/managers/polyline.manager.ts","../../../../libs/google/src/lib/managers/rectangle.manager.ts","../../../../libs/google/src/lib/managers/info-window.manager.ts","../../../../libs/google/src/lib/google-maps-fit-bounds.service.ts","../../../../libs/google/src/lib/google.component.ts","../../../../libs/google/src/lib/options.ts","../../../../libs/google/src/lib/google-maps-script-loader.service.ts","../../../../libs/google/src/lib/google.module.ts","../../../../libs/google/src/public-api.ts","../../../../libs/google/src/ng-maps-google.ts"],"sourcesContent":["import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport {\n  BoundsLiteral,\n  CircleOptions,\n  GeoPoint,\n  MapOptions,\n  MapsAPILoader,\n  MapsApiWrapper,\n  MarkerOptions,\n  RectangleOptions,\n} from '@ng-maps/core';\n\n/**\n * Wrapper class that handles the communication with the Google Maps Javascript\n * API v3\n */\n@Injectable()\nexport class GoogleMapsAPIWrapper extends MapsApiWrapper<\n  google.maps.Map,\n  google.maps.Circle,\n  google.maps.Rectangle\n> {\n  constructor(_loader: MapsAPILoader, _zone: NgZone) {\n    super(_loader, _zone);\n  }\n\n  protected override _api?: Promise<google.maps.Map>;\n  protected override _mapResolver?: (value: google.maps.Map) => void;\n\n  public createMap(\n    el: HTMLElement,\n    center: GeoPoint,\n    options: MapOptions,\n  ): Promise<void> {\n    return this._zone.runOutsideAngular(async () => {\n      await this._loader.load();\n      if (this._mapResolver) {\n        this._mapResolver(new google.maps.Map(el, { center, ...options }));\n      }\n      return;\n    });\n  }\n\n  public async setMapOptions(options: google.maps.MapOptions) {\n    const map = await this._api;\n    map?.setOptions(options);\n  }\n\n  /**\n   * Creates a google map drawing manager with the map context\n   */\n  public async createDrawingManager(\n    options: google.maps.drawing.DrawingManagerOptions = {},\n    addToMap: boolean = true,\n  ): Promise<google.maps.drawing.DrawingManager> {\n    const map = await this._api;\n    if (addToMap) {\n      options.map = map;\n    }\n    return new google.maps.drawing.DrawingManager(options);\n  }\n\n  /**\n   * Creates a google map marker with the map context\n   */\n  public async createMarker(\n    position: GeoPoint,\n    options: MarkerOptions,\n    addToMap: boolean = true,\n  ): Promise<google.maps.Marker> {\n    const map = addToMap ? await this._api : null;\n    return new google.maps.Marker({ position, map, ...options });\n  }\n\n  public async createInfoWindow(\n    position: GeoPoint | null,\n    options?: google.maps.InfoWindowOptions,\n  ): Promise<google.maps.InfoWindow> {\n    await this._api;\n    if (position === null) {\n      return new google.maps.InfoWindow({ ...options });\n    } else {\n      return new google.maps.InfoWindow({ position: position, ...options });\n    }\n  }\n\n  /**\n   * Creates a google.map.Circle for the current map.\n   *\n   * @todo check how to improve type casting\n   */\n  public async createCircle(\n    center: GeoPoint,\n    options: CircleOptions,\n  ): Promise<google.maps.Circle> {\n    const opt: google.maps.CircleOptions = {\n      ...options,\n      center,\n      map: await this._api,\n    };\n    if (typeof opt.strokePosition === 'string') {\n      opt.strokePosition = google.maps.StrokePosition[\n        opt.strokePosition\n      ] as any as google.maps.StrokePosition;\n    }\n    return new google.maps.Circle(opt);\n  }\n\n  /**\n   * Creates a google.map.Rectangle for the current map.\n   */\n  public async createRectangle(\n    bounds: BoundsLiteral,\n    options: RectangleOptions,\n  ): Promise<google.maps.Rectangle> {\n    const map = await this._api;\n    return new google.maps.Rectangle({\n      ...options,\n      bounds,\n      map,\n    });\n  }\n\n  public async createPolyline(\n    options: google.maps.PolylineOptions,\n  ): Promise<google.maps.Polyline> {\n    return this.getNativeMap().then((map) => {\n      const line = new google.maps.Polyline(options);\n      if (map) {\n        line.setMap(map);\n      }\n      return line;\n    });\n  }\n\n  public createPolygon(\n    options: google.maps.PolygonOptions,\n  ): Promise<google.maps.Polygon> {\n    return this.getNativeMap().then((map) => {\n      const polygon = new google.maps.Polygon(options);\n      if (map) {\n        polygon.setMap(map);\n      }\n      return polygon;\n    });\n  }\n\n  /**\n   * Creates a new google.map.Data layer for the current map\n   */\n  public async createDataLayer(\n    options?: google.maps.Data.DataOptions,\n  ): Promise<google.maps.Data | undefined> {\n    return this._api?.then((m) => {\n      const data = new google.maps.Data(options);\n      data.setMap(m);\n      return data;\n    });\n  }\n\n  /**\n   * Determines if given coordinates are insite a Polygon path.\n   */\n  public containsLocation(\n    latLng: google.maps.LatLng,\n    polygon: google.maps.Polygon,\n  ): boolean {\n    return google.maps.geometry.poly.containsLocation(latLng, polygon);\n  }\n\n  /**\n   * @fixme typings\n   */\n  public subscribeToMapEvent(eventName: string): Observable<any> {\n    return new Observable((observer) => {\n      this._api?.then((m) =>\n        m.addListener(eventName, (...evArgs: Array<any>) =>\n          this._zone.run(() => observer.next(evArgs)),\n        ),\n      );\n    });\n  }\n\n  public clearInstanceListeners() {\n    this._api?.then((map: google.maps.Map) => {\n      google.maps.event.clearInstanceListeners(map);\n    });\n  }\n\n  public async setCenter(latLng: google.maps.LatLngLiteral): Promise<void> {\n    return this._api?.then((map: google.maps.Map) => map.setCenter(latLng));\n  }\n\n  public async getZoom(): Promise<number | undefined> {\n    const map = await this._api;\n    return map?.getZoom();\n  }\n\n  public async getBounds(): Promise<BoundsLiteral | undefined> {\n    const map = await this._api;\n    return map?.getBounds()?.toJSON();\n  }\n\n  public async getMapTypeId(): Promise<\n    google.maps.MapTypeId | string | undefined\n  > {\n    return this._api?.then((map) => map.getMapTypeId());\n  }\n\n  public async setZoom(zoom: number): Promise<void> {\n    this._api?.then((map) => map.setZoom(zoom));\n  }\n\n  public async getCenter(): Promise<GeoPoint | undefined> {\n    const map = await this._api;\n    return map?.getCenter()?.toJSON();\n  }\n\n  public async panTo(\n    latLng: google.maps.LatLng | google.maps.LatLngLiteral,\n  ): Promise<void> {\n    this._api?.then((map) => map.panTo(latLng));\n  }\n\n  public async panBy(x: number, y: number): Promise<void> {\n    this._api?.then((map) => map.panBy(x, y));\n  }\n\n  public async fitBounds(\n    latLng: BoundsLiteral,\n    padding?: number | google.maps.Padding,\n  ): Promise<void> {\n    const map = await this._api;\n    map?.fitBounds(latLng, padding);\n  }\n\n  public async panToBounds(\n    latLng: BoundsLiteral,\n    padding?: number | google.maps.Padding,\n  ): Promise<void> {\n    const map = await this._api;\n    return map?.panToBounds(latLng, padding);\n  }\n\n  /**\n   * Triggers the given event name on the map instance.\n   */\n  public async triggerMapEvent(eventName: string): Promise<void> {\n    const map = await this._api;\n    if (map) {\n      google.maps.event.trigger(map, eventName);\n    }\n  }\n\n  protected _isLatLngBoundsLiteral(\n    bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral,\n  ): bounds is google.maps.LatLngBoundsLiteral {\n    return bounds != null && (bounds as any).extend === undefined;\n  }\n}\n","export function isValidMarkerIcon(\n  marker: unknown,\n): marker is string | google.maps.Icon | null | google.maps.Symbol {\n  if (marker === null) {\n    return true;\n  } else if (typeof marker === 'string') {\n    return true;\n  } else if (typeof marker === 'object' && Object.hasOwn(marker, 'url')) {\n    return true;\n  } else if (typeof marker === 'object' && Object.hasOwn(marker, 'path')) {\n    return true;\n  } else {\n    return false;\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport {\n  MapsApiWrapper,\n  MarkerManager,\n  NgMapsMarkerComponent,\n} from '@ng-maps/core';\n\nimport { isValidMarkerIcon } from '../util/is-valid-marker-icon';\n\n@Injectable()\nexport class GoogleMapsMarkerManager extends MarkerManager<google.maps.Marker> {\n  protected override _markers: Map<NgMapsMarkerComponent, google.maps.Marker> =\n    new Map<NgMapsMarkerComponent, google.maps.Marker>();\n\n  constructor(_mapsWrapper: MapsApiWrapper, _zone: NgZone) {\n    super(_mapsWrapper, _zone);\n  }\n\n  public deleteMarker(marker: NgMapsMarkerComponent): void {\n    const m = this._markers.get(marker);\n    if (m == null) {\n      // marker already deleted\n      return;\n    } else {\n      return this._zone.run(() => {\n        m.setMap(null);\n        this._markers.delete(marker);\n      });\n    }\n  }\n\n  public updateMarkerPosition(marker: NgMapsMarkerComponent): void {\n    if (\n      typeof marker.latitude !== 'number' ||\n      typeof marker.longitude !== 'number'\n    ) {\n      return;\n    }\n    const m = this._markers.get(marker);\n    m?.setPosition({ lat: marker.latitude, lng: marker.longitude });\n  }\n\n  public updateTitle(marker: NgMapsMarkerComponent): void {\n    const m = this._markers.get(marker);\n    m?.setTitle(marker.title);\n  }\n\n  public updateLabel(marker: NgMapsMarkerComponent): void {\n    const m = this._markers.get(marker);\n    m?.setLabel(marker.label);\n  }\n\n  public updateDraggable(marker: NgMapsMarkerComponent): void {\n    const m = this._markers.get(marker);\n    m?.setDraggable(marker.draggable);\n  }\n\n  public updateIconLegacy(marker: NgMapsMarkerComponent): void {\n    const m = this._markers.get(marker);\n    m?.setIcon(marker.iconUrl);\n  }\n\n  public updateOpacity(marker: NgMapsMarkerComponent): void {\n    const m = this._markers.get(marker);\n    m?.setOpacity(marker.opacity);\n  }\n\n  public updateVisible(marker: NgMapsMarkerComponent): void {\n    const m = this._markers.get(marker);\n    m?.setVisible(marker.visible);\n  }\n\n  public updateZIndex(marker: NgMapsMarkerComponent): void {\n    const m = this._markers.get(marker);\n    m?.setZIndex(marker.zIndex);\n  }\n\n  public updateClickable(marker: NgMapsMarkerComponent): void {\n    const m = this._markers.get(marker);\n    m?.setClickable(marker.clickable);\n  }\n\n  public updateAnimation(marker: NgMapsMarkerComponent): void {\n    const m = this._markers.get(marker);\n    if (typeof marker.animation === 'string') {\n      m?.setAnimation(google.maps.Animation[marker.animation]);\n    } else {\n      m?.setAnimation(marker.animation);\n    }\n  }\n\n  public createEventObservable<T>(\n    eventName: string | Array<string>,\n    marker: NgMapsMarkerComponent,\n  ): Observable<T> {\n    return new Observable((observer: Observer<T>) => {\n      const m = this._markers.get(marker);\n      if (typeof eventName === 'string') {\n        eventName = [eventName];\n      }\n      eventName.forEach((event) => {\n        m?.addListener(event, (e: T) => this._zone.run(() => observer.next(e)));\n      });\n    });\n  }\n\n  public updateIcon(marker: NgMapsMarkerComponent): void {\n    const m = this._markers.get(marker);\n    if (m && isValidMarkerIcon(marker.icon)) {\n      m.setIcon(marker.icon);\n    }\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport {\n  BoundsLiteral,\n  CircleManager,\n  GeoPoint,\n  MapsApiWrapper,\n  NgMapsCircleDirective,\n} from '@ng-maps/core';\n\n@Injectable()\nexport class GoogleCircleManager extends CircleManager<google.maps.Circle> {\n  constructor(_mapsWrapper: MapsApiWrapper, _zone: NgZone) {\n    super(_mapsWrapper, _zone);\n  }\n\n  /**\n   * @fixme implement commented properties\n   */\n  public async addCircle(circle: NgMapsCircleDirective) {\n    if (!circle.latitude || !circle.longitude) {\n      return;\n    }\n    this._circles.set(\n      circle,\n      this._apiWrapper.createCircle(\n        { lat: circle.latitude, lng: circle.longitude },\n        {\n          // clickable: circle.clickable,\n          // draggable: circle.draggable,\n          // editable: circle.editable,\n          fillColor: circle.fillColor,\n          fillOpacity: circle.fillOpacity,\n          radius: circle.radius,\n          strokeColor: circle.strokeColor,\n          strokeOpacity: circle.strokeOpacity,\n          // strokePosition: circle.strokePosition,\n          strokeWeight: circle.strokeWeight,\n          visible: circle.visible,\n          zIndex: circle.zIndex,\n        },\n      ),\n    );\n  }\n\n  /**\n   * Removes the given circle from the map.\n   */\n  public async removeCircle(circle: NgMapsCircleDirective): Promise<void> {\n    const c = await this._circles.get(circle);\n    c?.setMap(null);\n    this._circles.delete(circle);\n  }\n\n  /**\n   * @todo check how to improve type casting\n   * @param circle instance of {@link NgMapsCircleDirective}\n   * @param options options for the circle\n   */\n  public async setOptions(\n    circle: NgMapsCircleDirective,\n    options: google.maps.CircleOptions,\n  ): Promise<void> {\n    const c = await this._circles.get(circle);\n\n    if (typeof options.strokePosition === 'string') {\n      options.strokePosition = google.maps.StrokePosition[\n        options.strokePosition\n      ] as any as google.maps.StrokePosition;\n    }\n    return c?.setOptions(options);\n  }\n\n  public async getBounds(\n    circle: NgMapsCircleDirective,\n  ): Promise<BoundsLiteral | null> {\n    const c = await this._circles.get(circle);\n    if (!c) {\n      return null;\n    }\n    const bounds = c.getBounds();\n    return bounds ? bounds.toJSON() : null;\n  }\n\n  public async getCenter(\n    circle: NgMapsCircleDirective,\n  ): Promise<GeoPoint | null> {\n    const c = await this._circles.get(circle);\n    const center = c?.getCenter();\n    return center ? center.toJSON() : null;\n  }\n\n  public async getRadius(\n    circle: NgMapsCircleDirective,\n  ): Promise<number | null> {\n    const c = await this._circles.get(circle);\n    return c?.getRadius() ?? null;\n  }\n\n  public async setCenter(circle: NgMapsCircleDirective): Promise<void> {\n    if (!circle.latitude || !circle.longitude) {\n      return;\n    }\n    const c = await this._circles.get(circle);\n    c?.setCenter({ lat: circle.latitude, lng: circle.longitude });\n  }\n\n  public async setEditable(circle: NgMapsCircleDirective): Promise<void> {\n    const c = await this._circles.get(circle);\n    c?.setEditable(circle.editable);\n  }\n\n  public async setDraggable(circle: NgMapsCircleDirective): Promise<void> {\n    const c = await this._circles.get(circle);\n    c?.setDraggable(circle.draggable);\n  }\n\n  public async setVisible(circle: NgMapsCircleDirective): Promise<void> {\n    const c = await this._circles.get(circle);\n    c?.setVisible(circle.visible);\n  }\n\n  public async setRadius(circle: NgMapsCircleDirective): Promise<void> {\n    const c = await this._circles.get(circle);\n    c?.setRadius(circle.radius);\n  }\n\n  public createEventObservable<T>(\n    eventName: string,\n    circle: NgMapsCircleDirective,\n  ): Observable<T> {\n    return new Observable((observer: Observer<T>) => {\n      let listener: google.maps.MapsEventListener | null = null;\n      this._circles?.get(circle)?.then((c) => {\n        listener = c.addListener(eventName, (e: T) =>\n          this._zone.run(() => observer.next(e)),\n        );\n      });\n\n      return () => {\n        if (listener !== null) {\n          listener.remove();\n        }\n      };\n    });\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport {\n  MapsApiWrapper,\n  NgMapsPolygonDirective,\n  PolygonManager,\n} from '@ng-maps/core';\n\n@Injectable()\nexport class GooglePolygonManager extends PolygonManager<google.maps.Polygon> {\n  constructor(_mapsWrapper: MapsApiWrapper, _zone: NgZone) {\n    super(_mapsWrapper, _zone);\n  }\n\n  public addPolygon(path: NgMapsPolygonDirective) {\n    const polygonPromise = this._mapsWrapper.createPolygon({\n      clickable: path.clickable,\n      draggable: path.draggable,\n      editable: path.editable,\n      fillColor: path.fillColor,\n      fillOpacity: path.fillOpacity,\n      geodesic: path.geodesic,\n      paths: path.paths,\n      strokeColor: path.strokeColor,\n      strokeOpacity: path.strokeOpacity,\n      strokeWeight: path.strokeWeight,\n      visible: path.visible,\n      zIndex: path.zIndex,\n    });\n    this._polygons.set(path, polygonPromise);\n  }\n\n  public async updatePolygon(polygon: NgMapsPolygonDirective): Promise<void> {\n    const item = await this._polygons.get(polygon);\n    if (item != null) {\n      this._zone.run(() => {\n        item.setPaths(polygon.paths);\n      });\n    }\n  }\n\n  public async setPolygonOptions(\n    path: NgMapsPolygonDirective,\n    options: { [propName: string]: any },\n  ): Promise<void> {\n    const l = await this._polygons.get(path);\n    l?.setOptions(options);\n  }\n\n  public deletePolygon(paths: NgMapsPolygonDirective): Promise<void> {\n    const m = this._polygons.get(paths);\n    if (m == null) {\n      return Promise.resolve();\n    }\n    return m.then((l: google.maps.Polygon) =>\n      this._zone.run(() => {\n        l.setMap(null);\n        this._polygons.delete(paths);\n      }),\n    );\n  }\n\n  public createEventObservable<T>(\n    eventName: string,\n    path: NgMapsPolygonDirective,\n  ): Observable<T> {\n    return new Observable((observer: Observer<T>) => {\n      this._polygons.get(path)?.then((l: google.maps.Polygon) => {\n        l.addListener(eventName, (e: T) =>\n          this._zone.run(() => observer.next(e)),\n        );\n      });\n    });\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport {\n  MapsApiWrapper,\n  NgMapsPolyline,\n  NgMapsPolylinePoint,\n  PolylineManager,\n} from '@ng-maps/core';\n\n@Injectable()\nexport class GooglePolylineManager extends PolylineManager<google.maps.Polyline> {\n  constructor(_mapsWrapper: MapsApiWrapper, _zone: NgZone) {\n    super(_mapsWrapper, _zone);\n  }\n\n  protected override _convertPoints(\n    line: NgMapsPolyline,\n  ): Array<google.maps.LatLngLiteral> {\n    return line._getPoints().map(\n      (point: NgMapsPolylinePoint) =>\n        ({\n          lat: point.latitude,\n          lng: point.longitude,\n        } as google.maps.LatLngLiteral),\n    );\n  }\n\n  public addPolyline(line: NgMapsPolyline) {\n    const path = this._convertPoints(line);\n    const polylinePromise = this._mapsWrapper.createPolyline({\n      clickable: line.clickable,\n      draggable: line.draggable,\n      editable: line.editable,\n      geodesic: line.geodesic,\n      strokeColor: line.strokeColor,\n      strokeOpacity: line.strokeOpacity,\n      strokeWeight: line.strokeWeight,\n      visible: line.visible,\n      zIndex: line.zIndex,\n      icons: line.icons,\n      path,\n    });\n    this._polylines.set(line, polylinePromise);\n  }\n\n  public updatePolylinePoints(line: NgMapsPolyline): Promise<void> {\n    const path = this._convertPoints(line);\n    const m = this._polylines.get(line);\n    if (m == null) {\n      return Promise.resolve();\n    }\n    return m.then((l: google.maps.Polyline) =>\n      this._zone.run(() => {\n        l.setPath(path);\n      }),\n    );\n  }\n\n  public async setPolylineOptions(\n    line: NgMapsPolyline,\n    options: { [propName: string]: any },\n  ): Promise<void> {\n    const l = await this._polylines.get(line);\n    l?.setOptions(options);\n  }\n\n  public deletePolyline(line: NgMapsPolyline): Promise<void> {\n    const m = this._polylines.get(line);\n    if (m == null) {\n      return Promise.resolve();\n    }\n    return m.then((l: google.maps.Polyline) =>\n      this._zone.run(() => {\n        l.setMap(null);\n        this._polylines.delete(line);\n      }),\n    );\n  }\n\n  public createEventObservable<T>(\n    eventName: string,\n    line: NgMapsPolyline,\n  ): Observable<T> {\n    return new Observable((observer: Observer<T>) => {\n      this._polylines.get(line)?.then((l: google.maps.Polyline) => {\n        l.addListener(eventName, (e: T) =>\n          this._zone.run(() => observer.next(e)),\n        );\n      });\n    });\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport {\n  BoundsLiteral,\n  MapsApiWrapper,\n  NgMapsRectangleDirective,\n  RectangleManager,\n} from '@ng-maps/core';\n\n@Injectable()\nexport class GoogleRectangleManager extends RectangleManager<google.maps.Rectangle> {\n  constructor(_mapsWrapper: MapsApiWrapper, _zone: NgZone) {\n    super(_mapsWrapper, _zone);\n  }\n\n  public addRectangle(rectangle: NgMapsRectangleDirective) {\n    if (\n      !rectangle.north ||\n      !rectangle.east ||\n      !rectangle.south ||\n      !rectangle.west\n    ) {\n      return;\n    }\n\n    this._rectangles.set(\n      rectangle,\n      this._apiWrapper.createRectangle(\n        {\n          north: rectangle.north,\n          east: rectangle.east,\n          south: rectangle.south,\n          west: rectangle.west,\n        },\n        {\n          // clickable: rectangle.clickable,\n          // draggable: rectangle.draggable,\n          // editable: rectangle.editable,\n          fillColor: rectangle.fillColor,\n          fillOpacity: rectangle.fillOpacity,\n          strokeColor: rectangle.strokeColor,\n          strokeOpacity: rectangle.strokeOpacity,\n          // strokePosition: rectangle.strokePosition,\n          strokeWeight: rectangle.strokeWeight,\n          visible: rectangle.visible,\n          zIndex: rectangle.zIndex,\n        },\n      ),\n    );\n  }\n\n  /**\n   * Removes the given rectangle from the map.\n   */\n  public async removeRectangle(\n    rectangle: NgMapsRectangleDirective,\n  ): Promise<void> {\n    return this._rectangles.get(rectangle)?.then((r) => {\n      r.setMap(null);\n      this._rectangles.delete(rectangle);\n    });\n  }\n\n  public async setOptions(\n    rectangle: NgMapsRectangleDirective,\n    options: google.maps.RectangleOptions,\n  ): Promise<void> {\n    return this._rectangles.get(rectangle)?.then((r) => r.setOptions(options));\n  }\n\n  public async getBounds(\n    rectangle: NgMapsRectangleDirective,\n  ): Promise<BoundsLiteral | null> {\n    const r = await this._rectangles.get(rectangle);\n    const bounds = r?.getBounds();\n    return bounds ? bounds.toJSON() : null;\n  }\n\n  public async setBounds(rectangle: NgMapsRectangleDirective): Promise<void> {\n    if (\n      !rectangle.north ||\n      !rectangle.east ||\n      !rectangle.south ||\n      !rectangle.west\n    ) {\n      return;\n    }\n    const r = await this._rectangles.get(rectangle);\n    r?.setBounds({\n      north: rectangle.north,\n      east: rectangle.east,\n      south: rectangle.south,\n      west: rectangle.west,\n    });\n  }\n\n  public async setEditable(rectangle: NgMapsRectangleDirective): Promise<void> {\n    return this._rectangles\n      .get(rectangle)\n      ?.then((r) => r.setEditable(rectangle.editable));\n  }\n\n  public async setDraggable(\n    rectangle: NgMapsRectangleDirective,\n  ): Promise<void> {\n    return this._rectangles\n      .get(rectangle)\n      ?.then((r) => r.setDraggable(rectangle.draggable));\n  }\n\n  public async setVisible(rectangle: NgMapsRectangleDirective): Promise<void> {\n    return this._rectangles\n      .get(rectangle)\n      ?.then((r) => r.setVisible(rectangle.visible));\n  }\n\n  public createEventObservable<T>(\n    eventName: string,\n    rectangle: NgMapsRectangleDirective,\n  ): Observable<T> {\n    return new Observable((observer: Observer<T>) => {\n      let listener: google.maps.MapsEventListener | null = null;\n      this._rectangles.get(rectangle)?.then((r) => {\n        listener = r.addListener(eventName, (e: T) =>\n          this._zone.run(() => observer.next(e)),\n        );\n      });\n\n      return () => {\n        if (listener !== null) {\n          listener.remove();\n        }\n      };\n    });\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport {\n  GeoPoint,\n  InfoWindowManager,\n  MapsApiWrapper,\n  MarkerManager,\n  NgMapsInfoWindowComponent,\n} from '@ng-maps/core';\n\n@Injectable()\nexport class GoogleInfoWindowManager extends InfoWindowManager<google.maps.InfoWindow> {\n  constructor(\n    _mapsWrapper: MapsApiWrapper,\n    _zone: NgZone,\n    _markerManager: MarkerManager,\n  ) {\n    super(_mapsWrapper, _zone, _markerManager);\n  }\n\n  public async deleteInfoWindow(\n    infoWindow: NgMapsInfoWindowComponent,\n  ): Promise<void> {\n    const iWindow = await this._infoWindows.get(infoWindow);\n    if (iWindow == null) {\n      // info window already deleted\n      return;\n    } else {\n      return this._zone.run(() => {\n        iWindow.close();\n        this._infoWindows.delete(infoWindow);\n      });\n    }\n  }\n\n  public setPosition(infoWindow: NgMapsInfoWindowComponent): void {\n    if (!infoWindow.latitude || !infoWindow.longitude) {\n      return;\n    }\n    const i = this._infoWindows.get(infoWindow);\n    i?.setPosition({\n      lat: infoWindow.latitude,\n      lng: infoWindow.longitude,\n    });\n  }\n\n  public setZIndex(infoWindow: NgMapsInfoWindowComponent): void {\n    if (!infoWindow.zIndex) {\n      return;\n    }\n    const i = this._infoWindows.get(infoWindow);\n    i?.setZIndex(infoWindow.zIndex);\n  }\n\n  public async open(infoWindow: NgMapsInfoWindowComponent): Promise<void> {\n    const w = this._infoWindows.get(infoWindow);\n    const map = await this._mapsWrapper.getNativeMap();\n    if (infoWindow.hostMarker != null) {\n      const marker = await this._markerManager.getNativeMarker(\n        infoWindow.hostMarker,\n      );\n      w?.open(map, marker);\n    } else {\n      w?.open(map);\n    }\n  }\n\n  public close(infoWindow: NgMapsInfoWindowComponent): void {\n    const w = this._infoWindows.get(infoWindow);\n    w?.close();\n  }\n\n  public setOptions(\n    infoWindow: NgMapsInfoWindowComponent,\n    options: google.maps.InfoWindowOptions,\n  ) {\n    const i = this._infoWindows.get(infoWindow);\n    i?.setOptions(options);\n  }\n\n  public async addInfoWindow(infoWindow: NgMapsInfoWindowComponent) {\n    const options: google.maps.InfoWindowOptions = {\n      content: infoWindow.content?.nativeElement,\n      maxWidth: infoWindow.maxWidth,\n      zIndex: infoWindow.zIndex,\n      disableAutoPan: infoWindow.disableAutoPan,\n    };\n    const center: GeoPoint | null =\n      typeof infoWindow.latitude === 'number' &&\n      typeof infoWindow.longitude === 'number'\n        ? {\n            lat: infoWindow.latitude,\n            lng: infoWindow.longitude,\n          }\n        : null;\n\n    const instance = await this._mapsWrapper.createInfoWindow(center, options);\n    this._infoWindows.set(infoWindow, instance);\n  }\n\n  /**\n   * Creates a Google Maps event listener for the given InfoWindow as an Observable\n   */\n  public createEventObservable<T>(\n    eventName: string,\n    infoWindow: NgMapsInfoWindowComponent,\n  ): Observable<T> {\n    const i = this._infoWindows.get(infoWindow);\n    return new Observable((observer: Observer<T>) => {\n      i?.addListener(eventName, (e: T) =>\n        this._zone.run(() => observer.next(e)),\n      );\n    });\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n  BoundsLiteral,\n  FitBoundsService,\n  GeoPoint,\n  MapsAPILoader,\n} from '@ng-maps/core';\n\n/**\n * The FitBoundsService is responsible for computing the bounds of the a single map.\n */\n@Injectable()\nexport class GoogleMapsFitBoundsService extends FitBoundsService {\n  constructor(_loader: MapsAPILoader) {\n    super(_loader);\n  }\n\n  protected generateBounds(\n    includeInBounds: Map<string, GeoPoint>,\n  ): BoundsLiteral {\n    if (includeInBounds.size === 0) {\n      return new google.maps.LatLngBounds().toJSON();\n    } else {\n      const bounds = new google.maps.LatLngBounds();\n      includeInBounds.forEach((b) => bounds.extend(b));\n      return bounds.toJSON();\n    }\n  }\n}\n","import { Component, NgZone } from '@angular/core';\n\nimport {\n  CircleManager,\n  FitBoundsService,\n  InfoWindowManager,\n  MapsApiWrapper,\n  MarkerManager,\n  NgMapsViewComponent,\n  PolygonManager,\n  PolylineManager,\n  RectangleManager,\n} from '@ng-maps/core';\n\nimport { GoogleMapsAPIWrapper } from './google-maps-api-wrapper';\nimport { GoogleMapsFitBoundsService } from './google-maps-fit-bounds.service';\nimport { GoogleCircleManager } from './managers/circle.manager';\nimport { GoogleInfoWindowManager } from './managers/info-window.manager';\nimport { GoogleMapsMarkerManager } from './managers/marker.manager';\nimport { GooglePolygonManager } from './managers/polygon.manager';\nimport { GooglePolylineManager } from './managers/polyline.manager';\nimport { GoogleRectangleManager } from './managers/rectangle.manager';\n\n@Component({\n  selector: 'map-view',\n  providers: [\n    { provide: MapsApiWrapper, useClass: GoogleMapsAPIWrapper },\n    { provide: FitBoundsService, useClass: GoogleMapsFitBoundsService },\n    { provide: MarkerManager, useClass: GoogleMapsMarkerManager },\n    { provide: CircleManager, useClass: GoogleCircleManager },\n    { provide: PolygonManager, useClass: GooglePolygonManager },\n    { provide: PolylineManager, useClass: GooglePolylineManager },\n    { provide: RectangleManager, useClass: GoogleRectangleManager },\n    { provide: InfoWindowManager, useClass: GoogleInfoWindowManager },\n  ],\n  styles: [\n    `\n      .map-container-inner {\n        width: inherit;\n        height: inherit;\n      }\n\n      .map-content {\n        display: none;\n      }\n    `,\n  ],\n  template: `\n    <div class=\"map-container-inner\" #container></div>\n    <div class=\"map-content\">\n      <ng-content></ng-content>\n    </div>\n  `,\n})\nexport class GoogleComponent extends NgMapsViewComponent<google.maps.Map> {\n  constructor(\n    _mapsWrapper: MapsApiWrapper,\n    _fitBoundsService: FitBoundsService,\n    _zone: NgZone,\n  ) {\n    super(_mapsWrapper, _fitBoundsService, _zone);\n  }\n\n  protected override async _handleMapCenterChange() {\n    const s = this._mapsWrapper\n      .subscribeToMapEvent('center_changed')\n      .subscribe(() => {\n        this._mapsWrapper.getCenter().then((center) => {\n          if (center) {\n            this.latitude = center.lat;\n            this.longitude = center.lng;\n            this.centerChange.emit({\n              lat: this.latitude,\n              lng: this.longitude,\n            } as google.maps.LatLngLiteral);\n          }\n        });\n      });\n    this.subscription.add(s);\n  }\n\n  protected override _handleBoundsChange() {\n    const s = this._mapsWrapper\n      .subscribeToMapEvent('bounds_changed')\n      .subscribe(() => {\n        this._mapsWrapper.getBounds().then((bounds) => {\n          this.boundsChange.emit(bounds);\n        });\n      });\n    this.subscription.add(s);\n  }\n\n  protected override async _handleMapTypeIdChange() {\n    const s = this._mapsWrapper\n      .subscribeToMapEvent('maptypeid_changed')\n      .subscribe(() => {\n        this._mapsWrapper.getMapTypeId().then((mapTypeId) => {\n          this.mapTypeIdChange.emit(mapTypeId);\n        });\n      });\n    this.subscription.add(s);\n  }\n\n  protected override _handleMapZoomChange() {\n    const s = this._mapsWrapper\n      .subscribeToMapEvent('zoom_changed')\n      .subscribe(() => {\n        this._mapsWrapper.getZoom().then((z) => {\n          this.zoom = z ?? 8;\n          this.zoomChange.emit(z);\n        });\n      });\n    this.subscription.add(s);\n  }\n\n  protected override _handleIdleEvent() {\n    const s = this._mapsWrapper.subscribeToMapEvent('idle').subscribe(() => {\n      this.idle.emit(void 0);\n    });\n    this.subscription.add(s);\n  }\n\n  protected override _handleTilesLoadedEvent() {\n    const s = this._mapsWrapper\n      .subscribeToMapEvent('tilesloaded')\n      .subscribe(() => this.tilesLoaded.emit(void 0));\n    this.subscription.add(s);\n  }\n\n  protected override _handleMapMouseEvents() {\n    interface Emitter {\n      emit(value: any): void;\n    }\n\n    interface Event {\n      name: string;\n      emitter: Emitter;\n    }\n\n    const events: Array<Event> = [\n      { name: 'click', emitter: this.mapClick },\n      { name: 'rightclick', emitter: this.mapRightClick },\n      { name: 'dblclick', emitter: this.mapDblClick },\n    ];\n\n    events.forEach((e: Event) => {\n      const s = (this._mapsWrapper as GoogleMapsAPIWrapper)\n        .subscribeToMapEvent(e.name)\n        .subscribe((event) => {\n          const value = {\n            coords: { lat: event[0].latLng.lat(), lng: event[0].latLng.lng() },\n          };\n          e.emitter.emit(value);\n        });\n      this.subscription.add(s);\n    });\n  }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport enum GoogleMapsScriptProtocol {\n  HTTP = 1,\n  HTTPS = 2,\n  AUTO = 3,\n}\n\n/**\n * Token for the config of google maps module\n * Please provide an object of type {@link GoogleModuleOptions}.\n */\nexport const GOOGLE_MAPS_API_CONFIG = new InjectionToken<\n  GoogleModuleOptions | Promise<GoogleModuleOptions>\n>('angular-google-maps GOOGLE_MAPS_API_CONFIG');\n\nexport interface GoogleModuleOptions {\n  /**\n   * The Google Maps API Key (see:\n   * https://developers.google.com/maps/documentation/javascript/get-api-key)\n   */\n  apiKey?: string;\n\n  /**\n   * The Google Maps client ID (for premium plans).\n   * When you have a Google Maps APIs Premium Plan license, you must authenticate\n   * your application with either an API key or a client ID.\n   * The Google Maps API will fail to load if both a client ID and an API key are included.\n   */\n  clientId?: string;\n\n  /**\n   * The Google Maps channel name (for premium plans).\n   * A channel parameter is an optional parameter that allows you to track usage under your client\n   * ID by assigning a distinct channel to each of your applications.\n   */\n  channel?: string;\n\n  /**\n   * Google Maps API version.\n   */\n  apiVersion?: string;\n\n  /**\n   * Host and Path used for the `<script>` tag.\n   */\n  hostAndPath?: string;\n\n  /**\n   * Protocol used for the `<script>` tag.\n   */\n  protocol?: GoogleMapsScriptProtocol;\n\n  /**\n   * Defines which Google Maps libraries should get loaded.\n   * For available libraries see: https://developers.google.com/maps/documentation/javascript/libraries\n   */\n  libraries?: Array<string>;\n\n  /**\n   * The default bias for the map behavior is US.\n   * If you wish to alter your application to serve different map tiles or bias the\n   * application, you can overwrite the default behavior (US) by defining a `region`.\n   * See https://developers.google.com/maps/documentation/javascript/basics#Region\n   */\n  region?: string;\n\n  /**\n   * The Google Maps API uses the browser's preferred language when displaying\n   * textual information. If you wish to overwrite this behavior and force the API\n   * to use a given language, you can use this setting.\n   * See https://developers.google.com/maps/documentation/javascript/basics#Language\n   */\n  language?: string;\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { firstValueFrom, ReplaySubject } from 'rxjs';\n\nimport { MapsAPILoader } from '@ng-maps/core';\n\nimport {\n  GoogleMapsScriptProtocol,\n  GoogleModuleOptions,\n  GOOGLE_MAPS_API_CONFIG,\n} from './options';\n\n@Injectable()\nexport class GoogleMapsScriptLoader extends MapsAPILoader {\n  protected _scriptLoadingPromise?: Promise<void>;\n  protected _config: ReplaySubject<GoogleModuleOptions> =\n    new ReplaySubject<GoogleModuleOptions>(1);\n  protected readonly _SCRIPT_ID: string = 'GoogleMapsApiScript';\n  protected readonly callbackName: string = `LazyMapsAPILoader`;\n\n  constructor(\n    @Optional()\n    @Inject(GOOGLE_MAPS_API_CONFIG)\n    config: GoogleModuleOptions,\n    @Inject(DOCUMENT) document: any,\n  ) {\n    super();\n    if (config instanceof Promise) {\n      config.then((c) => {\n        this.configure(c);\n      });\n    } else if (typeof config === 'object') {\n      this.configure(config);\n    }\n    this._document = document as Document;\n    this._window = this._document.defaultView;\n  }\n\n  /**\n   * If no configuration is provided at load time you can use this function to provide configuration at any time.\n   * Loading scripts will be postponed until a configuration is provided\n   *\n   * @param config - {@link GoogleModuleOptions} configuration needed for bootstrapping\n   */\n  public configure(config: GoogleModuleOptions) {\n    this._config.next(config);\n    this._config.complete();\n  }\n\n  public load(): Promise<void> {\n    if ((this._window as any).google && (this._window as any).google.maps) {\n      // Google maps already loaded on the page\n      return Promise.resolve();\n    } else if (this._scriptLoadingPromise) {\n      return this._scriptLoadingPromise;\n    } else {\n      this._scriptLoadingPromise = this.checkScriptElement();\n      return this._scriptLoadingPromise;\n    }\n  }\n\n  protected async checkScriptElement(): Promise<void> {\n    let scriptElement: HTMLScriptElement = this._document?.getElementById(\n      this._SCRIPT_ID,\n    ) as HTMLScriptElement;\n    if (scriptElement == null) {\n      scriptElement = await this.createScriptElement();\n    }\n    return this.assignScriptLoadingPromise(scriptElement);\n  }\n\n  protected assignScriptLoadingPromise(\n    scriptElement: HTMLScriptElement,\n  ): Promise<void> {\n    this._document?.body.appendChild(scriptElement);\n    return new Promise((resolve, reject) => {\n      // FIXME\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      this._window[this.callbackName] = () => resolve();\n\n      // FIXME\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      scriptElement.onerror = (error: Event) => reject(error);\n    });\n  }\n\n  protected async createScriptElement() {\n    if (!this._document) {\n      throw new Error('Document is not defined');\n    }\n    const script = this._document.createElement('script');\n    script.type = 'text/javascript';\n    script.async = true;\n    script.defer = true;\n    script.id = this._SCRIPT_ID;\n    script.src = await this._getScriptSrc(this.callbackName);\n    return script;\n  }\n\n  protected async _getScriptSrc(callbackName: string): Promise<string> {\n    const config = await firstValueFrom(this._config);\n    if (!config) {\n      throw new Error('No configuration provided');\n    }\n    const protocolType: GoogleMapsScriptProtocol =\n      (config && config.protocol) || GoogleMapsScriptProtocol.HTTPS;\n    let protocol: string;\n\n    switch (protocolType) {\n      case GoogleMapsScriptProtocol.AUTO:\n        protocol = '';\n        break;\n      case GoogleMapsScriptProtocol.HTTP:\n        protocol = 'http:';\n        break;\n      case GoogleMapsScriptProtocol.HTTPS:\n        protocol = 'https:';\n        break;\n    }\n\n    const hostAndPath: string =\n      config.hostAndPath || 'maps.googleapis.com/maps/api/js';\n    const queryParams: { [key: string]: string | Array<string> } = {\n      v: config.apiVersion || 'quarterly',\n      callback: callbackName,\n      key: config.apiKey!,\n      client: config.clientId!,\n      channel: config.channel!,\n      libraries: config.libraries!,\n      region: config.region!,\n      language: config.language!,\n    };\n\n    const params: string = Object.keys(queryParams)\n      .filter((k: string) => queryParams[k] != null)\n      .filter(\n        (k: string) =>\n          // remove empty arrays\n          !Array.isArray(queryParams[k]) ||\n          (Array.isArray(queryParams[k]) && queryParams[k].length > 0),\n      )\n      .map((k: string) => {\n        // join arrays as comma seperated strings\n        const i = queryParams[k];\n        if (Array.isArray(i)) {\n          return { key: k, value: i.join(',') };\n        }\n        return { key: k, value: queryParams[k] };\n      })\n      .map(\n        // FIXME\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        (entry: { key: string; value: string }) =>\n          `${entry.key}=${entry.value}`,\n      )\n      .join('&');\n    return `${protocol}//${hostAndPath}?${params}`;\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { MapsAPILoader, MAP_PROVIDER } from '@ng-maps/core';\n\nimport { GoogleMapsScriptLoader } from './google-maps-script-loader.service';\nimport { GoogleComponent } from './google.component';\nimport { GOOGLE_MAPS_API_CONFIG, GoogleModuleOptions } from './options';\n\n@NgModule({\n  declarations: [GoogleComponent],\n  exports: [GoogleComponent],\n  providers: [\n    { provide: MapsAPILoader, useClass: GoogleMapsScriptLoader },\n    {\n      provide: MAP_PROVIDER,\n      useValue: 'GoogleMaps',\n    },\n  ],\n})\nexport class NgMapsGoogleModule {\n  /**\n   * configure the NgMapsGoogleModule with a value\n   * @param config\n   */\n  public static forRoot(\n    config: GoogleModuleOptions,\n  ): ModuleWithProviders<NgMapsGoogleModule> {\n    return {\n      ngModule: NgMapsGoogleModule,\n      providers: [\n        {\n          provide: GOOGLE_MAPS_API_CONFIG,\n          useValue: config,\n        },\n      ],\n    };\n  }\n\n  /**\n   * configure the NgMapsGoogleModule with a factory\n   * @param factory\n   */\n  public static forRootFactory(\n    factory: (...args: Array<any>) => GoogleModuleOptions,\n    deps?: Array<any>,\n  ): ModuleWithProviders<NgMapsGoogleModule> {\n    return {\n      ngModule: NgMapsGoogleModule,\n      providers: [\n        {\n          provide: GOOGLE_MAPS_API_CONFIG,\n          useFactory: factory,\n          deps,\n        },\n      ],\n    };\n  }\n}\n","/*\n * Public API Surface of google\n */\n\nexport * from './lib/google-maps-api-wrapper';\nexport * from './lib/managers/marker.manager';\nexport * from './lib/managers/circle.manager';\nexport * from './lib/managers/polygon.manager';\nexport * from './lib/managers/polyline.manager';\nexport * from './lib/managers/rectangle.manager';\nexport * from './lib/managers/info-window.manager';\nexport * from './lib/google.component';\nexport * from './lib/google.module';\nexport * from './lib/options';\nexport { isValidMarkerIcon } from './lib/util/is-valid-marker-icon';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}