{"version":3,"file":"ngx-mapbox-gl.mjs","sources":["../../../projects/ngx-mapbox-gl/src/lib/map/map.service.ts","../../../projects/ngx-mapbox-gl/src/lib/control/control.component.ts","../../../projects/ngx-mapbox-gl/src/lib/control/attribution-control.directive.ts","../../../projects/ngx-mapbox-gl/src/lib/control/fullscreen-control.directive.ts","../../../projects/ngx-mapbox-gl/src/lib/control/geolocate-control.directive.ts","../../../projects/ngx-mapbox-gl/src/lib/control/navigation-control.directive.ts","../../../projects/ngx-mapbox-gl/src/lib/control/scale-control.directive.ts","../../../projects/ngx-mapbox-gl/src/lib/utils.ts","../../../projects/ngx-mapbox-gl/src/lib/source/geojson/geojson-source.component.ts","../../../projects/ngx-mapbox-gl/src/lib/source/geojson/feature.component.ts","../../../projects/ngx-mapbox-gl/src/lib/draggable/draggable.directive.ts","../../../projects/ngx-mapbox-gl/src/lib/image/image.component.ts","../../../projects/ngx-mapbox-gl/src/lib/layer/layer.component.ts","../../../projects/ngx-mapbox-gl/src/lib/map/map.component.ts","../../../projects/ngx-mapbox-gl/src/lib/marker/marker.component.ts","../../../projects/ngx-mapbox-gl/src/lib/markers-for-clusters/markers-for-clusters.component.ts","../../../projects/ngx-mapbox-gl/src/lib/popup/popup.component.ts","../../../projects/ngx-mapbox-gl/src/lib/source/canvas-source.component.ts","../../../projects/ngx-mapbox-gl/src/lib/source/image-source.component.ts","../../../projects/ngx-mapbox-gl/src/lib/source/raster-dem-source.component.ts","../../../projects/ngx-mapbox-gl/src/lib/source/raster-source.component.ts","../../../projects/ngx-mapbox-gl/src/lib/source/vector-source.component.ts","../../../projects/ngx-mapbox-gl/src/lib/source/video-source.component.ts","../../../projects/ngx-mapbox-gl/src/lib/ngx-mapbox-gl.module.ts","../../../projects/ngx-mapbox-gl/src/public_api.ts","../../../projects/ngx-mapbox-gl/src/ngx-mapbox-gl.ts"],"sourcesContent":["import {\n  EventEmitter,\n  Inject,\n  Injectable,\n  InjectionToken,\n  NgZone,\n  Optional,\n} from '@angular/core';\nimport * as MapboxGl from 'mapbox-gl';\nimport { AsyncSubject, Observable, Subscription } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport {\n  LayerEvents,\n  MapEvent,\n  MapImageData,\n  MapImageOptions,\n} from './map.types';\n\nexport const MAPBOX_API_KEY = new InjectionToken('MapboxApiKey');\n\nexport interface SetupMap {\n  accessToken?: string;\n  customMapboxApiUrl?: string;\n  mapOptions: Omit<MapboxGl.MapboxOptions, 'bearing' | 'pitch' | 'zoom'> & {\n    bearing?: [number];\n    pitch?: [number];\n    zoom?: [number];\n  };\n  mapEvents: MapEvent;\n}\n\nexport interface SetupLayer {\n  layerOptions: MapboxGl.Layer;\n  layerEvents: LayerEvents;\n}\n\nexport interface SetupPopup {\n  popupOptions: MapboxGl.PopupOptions;\n  popupEvents: {\n    open: EventEmitter<void>;\n    close: EventEmitter<void>;\n    popupOpen: EventEmitter<void>;\n    popupClose: EventEmitter<void>;\n  };\n}\n\nexport interface SetupMarker {\n  markersOptions: {\n    pitchAlignment?: MapboxGl.MarkerOptions['pitchAlignment'];\n    rotationAlignment?: MapboxGl.MarkerOptions['rotationAlignment'];\n    offset?: MapboxGl.MarkerOptions['offset'];\n    anchor?: MapboxGl.MarkerOptions['anchor'];\n    draggable?: MapboxGl.MarkerOptions['draggable'];\n    element: HTMLElement;\n    feature?: GeoJSON.Feature<GeoJSON.Point>;\n    lngLat?: MapboxGl.LngLatLike;\n    clickTolerance?: MapboxGl.MarkerOptions['clickTolerance'];\n  };\n  markersEvents: {\n    markerDragStart: EventEmitter<MapboxGl.Marker>;\n    markerDrag: EventEmitter<MapboxGl.Marker>;\n    markerDragEnd: EventEmitter<MapboxGl.Marker>;\n    dragStart: EventEmitter<MapboxGl.Marker>;\n    drag: EventEmitter<MapboxGl.Marker>;\n    dragEnd: EventEmitter<MapboxGl.Marker>;\n  };\n}\n\ninterface MapboxOptionsWithAccessToken extends MapboxGl.MapboxOptions {\n  accessToken: typeof MapboxGl.accessToken;\n}\n\nexport type MovingOptions =\n  | MapboxGl.FlyToOptions\n  | (MapboxGl.AnimationOptions & MapboxGl.CameraOptions)\n  | MapboxGl.CameraOptions;\n\n@Injectable()\nexport class MapService {\n  mapInstance: MapboxGl.Map;\n  mapCreated$: Observable<void>;\n  mapLoaded$: Observable<void>;\n  mapEvents: MapEvent;\n\n  private mapCreated = new AsyncSubject<void>();\n  private mapLoaded = new AsyncSubject<void>();\n  private markersToRemove: MapboxGl.Marker[] = [];\n  private popupsToRemove: MapboxGl.Popup[] = [];\n  private imageIdsToRemove: string[] = [];\n  private subscription = new Subscription();\n\n  constructor(\n    private zone: NgZone,\n    @Optional() @Inject(MAPBOX_API_KEY) private readonly MAPBOX_API_KEY: string\n  ) {\n    this.mapCreated$ = this.mapCreated.asObservable();\n    this.mapLoaded$ = this.mapLoaded.asObservable();\n  }\n\n  setup(options: SetupMap) {\n    // Need onStable to wait for a potential @angular/route transition to end\n    this.zone.onStable.pipe(first()).subscribe(() => {\n      // Workaround rollup issue\n      // this.assign(\n      //   MapboxGl,\n      //   'accessToken',\n      //   options.accessToken || this.MAPBOX_API_KEY\n      // );\n      if (options.customMapboxApiUrl) {\n        this.assign(MapboxGl, 'config.API_URL', options.customMapboxApiUrl);\n      }\n      this.createMap({\n        ...options.mapOptions as MapboxGl.MapboxOptions,\n        accessToken: options.accessToken || this.MAPBOX_API_KEY\n      });\n      this.hookEvents(options.mapEvents);\n      this.mapEvents = options.mapEvents;\n      this.mapCreated.next(undefined);\n      this.mapCreated.complete();\n    });\n  }\n\n  destroyMap() {\n    if (this.mapInstance) {\n      this.subscription.unsubscribe();\n      this.mapInstance.remove();\n    }\n  }\n\n  updateMinZoom(minZoom: number) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.setMinZoom(minZoom);\n    });\n  }\n\n  updateMaxZoom(maxZoom: number) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.setMaxZoom(maxZoom);\n    });\n  }\n\n  updateMinPitch(minPitch: number) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.setMinPitch(minPitch);\n    });\n  }\n\n  updateMaxPitch(maxPitch: number) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.setMaxPitch(maxPitch);\n    });\n  }\n\n  updateRenderWorldCopies(status: boolean) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.setRenderWorldCopies(status);\n    });\n  }\n\n  updateScrollZoom(status: boolean) {\n    return this.zone.runOutsideAngular(() => {\n      status\n        ? this.mapInstance.scrollZoom.enable()\n        : this.mapInstance.scrollZoom.disable();\n    });\n  }\n\n  updateDragRotate(status: boolean) {\n    return this.zone.runOutsideAngular(() => {\n      status\n        ? this.mapInstance.dragRotate.enable()\n        : this.mapInstance.dragRotate.disable();\n    });\n  }\n\n  updateTouchPitch(status: boolean) {\n    return this.zone.runOutsideAngular(() => {\n      status\n        ? this.mapInstance.touchPitch.enable()\n        : this.mapInstance.touchPitch.disable();\n    });\n  }\n\n  updateTouchZoomRotate(status: boolean) {\n    return this.zone.runOutsideAngular(() => {\n      status\n        ? this.mapInstance.touchZoomRotate.enable()\n        : this.mapInstance.touchZoomRotate.disable();\n    });\n  }\n\n  updateDoubleClickZoom(status: boolean) {\n    return this.zone.runOutsideAngular(() => {\n      status\n        ? this.mapInstance.doubleClickZoom.enable()\n        : this.mapInstance.doubleClickZoom.disable();\n    });\n  }\n\n  updateKeyboard(status: boolean) {\n    return this.zone.runOutsideAngular(() => {\n      status\n        ? this.mapInstance.keyboard.enable()\n        : this.mapInstance.keyboard.disable();\n    });\n  }\n\n  updateDragPan(status: boolean) {\n    return this.zone.runOutsideAngular(() => {\n      status\n        ? this.mapInstance.dragPan.enable()\n        : this.mapInstance.dragPan.disable();\n    });\n  }\n\n  updateBoxZoom(status: boolean) {\n    return this.zone.runOutsideAngular(() => {\n      status\n        ? this.mapInstance.boxZoom.enable()\n        : this.mapInstance.boxZoom.disable();\n    });\n  }\n\n  updateStyle(style: MapboxGl.Style) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.setStyle(style);\n    });\n  }\n\n  updateMaxBounds(maxBounds: MapboxGl.LngLatBoundsLike) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.setMaxBounds(maxBounds);\n    });\n  }\n\n  changeCanvasCursor(cursor: string) {\n    const canvas = this.mapInstance.getCanvasContainer();\n    canvas.style.cursor = cursor;\n  }\n\n  queryRenderedFeatures(\n    pointOrBox?: MapboxGl.PointLike | [MapboxGl.PointLike, MapboxGl.PointLike],\n    parameters?: { layers?: string[]; filter?: any[] }\n  ): GeoJSON.Feature<GeoJSON.GeometryObject>[] {\n    return this.mapInstance.queryRenderedFeatures(pointOrBox, parameters);\n  }\n\n  panTo(center: MapboxGl.LngLatLike, options?: MapboxGl.AnimationOptions) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.panTo(center, options);\n    });\n  }\n\n  move(\n    movingMethod: 'jumpTo' | 'easeTo' | 'flyTo',\n    movingOptions?: MovingOptions,\n    zoom?: number,\n    center?: MapboxGl.LngLatLike,\n    bearing?: number,\n    pitch?: number\n  ) {\n    return this.zone.runOutsideAngular(() => {\n      (this.mapInstance[movingMethod] as any)({\n        ...movingOptions,\n        zoom: zoom != null ? zoom : this.mapInstance.getZoom(),\n        center: center != null ? center : this.mapInstance.getCenter(),\n        bearing: bearing != null ? bearing : this.mapInstance.getBearing(),\n        pitch: pitch != null ? pitch : this.mapInstance.getPitch(),\n      });\n    });\n  }\n\n  addLayer(layer: SetupLayer, bindEvents: boolean, before?: string) {\n    this.zone.runOutsideAngular(() => {\n      Object.keys(layer.layerOptions).forEach((key: string) => {\n        const tkey = key as keyof MapboxGl.AnyLayer;\n        if (layer.layerOptions[tkey] === undefined) {\n          delete layer.layerOptions[tkey];\n        }\n      });\n      this.mapInstance.addLayer(\n        layer.layerOptions as MapboxGl.AnyLayer,\n        before\n      );\n      if (bindEvents) {\n        if (\n          layer.layerEvents.layerClick.observers.length ||\n          layer.layerEvents.click.observers.length\n        ) {\n          this.mapInstance.on('click', layer.layerOptions.id, (evt) => {\n            this.zone.run(() => {\n              layer.layerEvents.layerClick.emit(evt);\n              layer.layerEvents.click.emit(evt);\n            });\n          });\n        }\n        if (\n          layer.layerEvents.layerDblClick.observers.length ||\n          layer.layerEvents.dblClick.observers.length\n        ) {\n          this.mapInstance.on('dblclick', layer.layerOptions.id, (evt) => {\n            this.zone.run(() => {\n              layer.layerEvents.layerDblClick.emit(evt);\n              layer.layerEvents.dblClick.emit(evt);\n            });\n          });\n        }\n        if (\n          layer.layerEvents.layerMouseDown.observers.length ||\n          layer.layerEvents.mouseDown.observers.length\n        ) {\n          this.mapInstance.on('mousedown', layer.layerOptions.id, (evt) => {\n            this.zone.run(() => {\n              layer.layerEvents.layerMouseDown.emit(evt);\n              layer.layerEvents.mouseDown.emit(evt);\n            });\n          });\n        }\n        if (\n          layer.layerEvents.layerMouseUp.observers.length ||\n          layer.layerEvents.mouseUp.observers.length\n        ) {\n          this.mapInstance.on('mouseup', layer.layerOptions.id, (evt) => {\n            this.zone.run(() => {\n              layer.layerEvents.layerMouseUp.emit(evt);\n              layer.layerEvents.mouseUp.emit(evt);\n            });\n          });\n        }\n        if (\n          layer.layerEvents.layerMouseEnter.observers.length ||\n          layer.layerEvents.mouseEnter.observers.length\n        ) {\n          this.mapInstance.on('mouseenter', layer.layerOptions.id, (evt) => {\n            this.zone.run(() => {\n              layer.layerEvents.layerMouseEnter.emit(evt);\n              layer.layerEvents.mouseEnter.emit(evt);\n            });\n          });\n        }\n        if (\n          layer.layerEvents.layerMouseLeave.observers.length ||\n          layer.layerEvents.mouseLeave.observers.length\n        ) {\n          this.mapInstance.on('mouseleave', layer.layerOptions.id, (evt) => {\n            this.zone.run(() => {\n              layer.layerEvents.layerMouseLeave.emit(evt);\n              layer.layerEvents.mouseLeave.emit(evt);\n            });\n          });\n        }\n        if (\n          layer.layerEvents.layerMouseMove.observers.length ||\n          layer.layerEvents.mouseMove.observers.length\n        ) {\n          this.mapInstance.on('mousemove', layer.layerOptions.id, (evt) => {\n            this.zone.run(() => {\n              layer.layerEvents.layerMouseMove.emit(evt);\n              layer.layerEvents.mouseMove.emit(evt);\n            });\n          });\n        }\n        if (\n          layer.layerEvents.layerMouseOver.observers.length ||\n          layer.layerEvents.mouseOver.observers.length\n        ) {\n          this.mapInstance.on('mouseover', layer.layerOptions.id, (evt) => {\n            this.zone.run(() => {\n              layer.layerEvents.layerMouseOver.emit(evt);\n              layer.layerEvents.mouseOver.emit(evt);\n            });\n          });\n        }\n        if (\n          layer.layerEvents.layerMouseOut.observers.length ||\n          layer.layerEvents.mouseOut.observers.length\n        ) {\n          this.mapInstance.on('mouseout', layer.layerOptions.id, (evt) => {\n            this.zone.run(() => {\n              layer.layerEvents.layerMouseOut.emit(evt);\n              layer.layerEvents.mouseOut.emit(evt);\n            });\n          });\n        }\n        if (\n          layer.layerEvents.layerContextMenu.observers.length ||\n          layer.layerEvents.contextMenu.observers.length\n        ) {\n          this.mapInstance.on('contextmenu', layer.layerOptions.id, (evt) => {\n            this.zone.run(() => {\n              layer.layerEvents.layerContextMenu.emit(evt);\n              layer.layerEvents.contextMenu.emit(evt);\n            });\n          });\n        }\n        if (\n          layer.layerEvents.layerTouchStart.observers.length ||\n          layer.layerEvents.touchStart.observers.length\n        ) {\n          this.mapInstance.on('touchstart', layer.layerOptions.id, (evt) => {\n            this.zone.run(() => {\n              layer.layerEvents.layerTouchStart.emit(evt);\n              layer.layerEvents.touchStart.emit(evt);\n            });\n          });\n        }\n        if (\n          layer.layerEvents.layerTouchEnd.observers.length ||\n          layer.layerEvents.touchEnd.observers.length\n        ) {\n          this.mapInstance.on('touchend', layer.layerOptions.id, (evt) => {\n            this.zone.run(() => {\n              layer.layerEvents.layerTouchEnd.emit(evt);\n              layer.layerEvents.touchEnd.emit(evt);\n            });\n          });\n        }\n        if (\n          layer.layerEvents.layerTouchCancel.observers.length ||\n          layer.layerEvents.touchCancel.observers.length\n        ) {\n          this.mapInstance.on('touchcancel', layer.layerOptions.id, (evt) => {\n            this.zone.run(() => {\n              layer.layerEvents.layerTouchCancel.emit(evt);\n              layer.layerEvents.touchCancel.emit(evt);\n            });\n          });\n        }\n      }\n    });\n  }\n\n  removeLayer(layerId: string) {\n    this.zone.runOutsideAngular(() => {\n      if (this.mapInstance.getLayer(layerId) != null) {\n        this.mapInstance.removeLayer(layerId);\n      }\n    });\n  }\n\n  addMarker(marker: SetupMarker) {\n    const options: MapboxGl.MarkerOptions = {\n      offset: marker.markersOptions.offset,\n      anchor: marker.markersOptions.anchor,\n      draggable: !!marker.markersOptions.draggable,\n      rotationAlignment: marker.markersOptions.rotationAlignment,\n      pitchAlignment: marker.markersOptions.pitchAlignment,\n      clickTolerance: marker.markersOptions.clickTolerance,\n    };\n    if (marker.markersOptions.element.childNodes.length > 0) {\n      options.element = marker.markersOptions.element;\n    }\n    const markerInstance = new MapboxGl.Marker(options);\n    if (\n      marker.markersEvents.markerDragStart.observers.length ||\n      marker.markersEvents.dragStart.observers.length\n    ) {\n      markerInstance.on('dragstart', (event) => {\n        if (event) {\n          const { target } = event as { target: MapboxGl.Marker };\n          this.zone.run(() => {\n            marker.markersEvents.markerDragStart.emit(target);\n            marker.markersEvents.dragStart.emit(target);\n          });\n        }\n      });\n    }\n    /*\n\n     */\n    if (\n      marker.markersEvents.markerDrag.observers.length ||\n      marker.markersEvents.drag.observers.length\n    ) {\n      markerInstance.on('drag', (event) => {\n        if (event) {\n          const { target } = event as { target: MapboxGl.Marker };\n          this.zone.run(() => {\n            marker.markersEvents.markerDrag.emit(target);\n            marker.markersEvents.drag.emit(target);\n          });\n        }\n      });\n    }\n    if (\n      marker.markersEvents.markerDragEnd.observers.length ||\n      marker.markersEvents.dragEnd.observers.length\n    ) {\n      markerInstance.on('dragend', (event) => {\n        if (event) {\n          const { target } = event as { target: MapboxGl.Marker };\n          this.zone.run(() => {\n            marker.markersEvents.markerDragEnd.emit(target);\n            marker.markersEvents.dragEnd.emit(target);\n          });\n        }\n      });\n    }\n    const lngLat: MapboxGl.LngLatLike = marker.markersOptions.feature\n      ? marker.markersOptions.feature.geometry!.coordinates as [number, number]\n      : marker.markersOptions.lngLat!;\n    markerInstance.setLngLat(lngLat);\n    return this.zone.runOutsideAngular(() => {\n      markerInstance.addTo(this.mapInstance);\n      return markerInstance;\n    });\n  }\n\n  removeMarker(marker: MapboxGl.Marker) {\n    this.markersToRemove.push(marker);\n  }\n\n  createPopup(popup: SetupPopup, element: Node) {\n    return this.zone.runOutsideAngular(() => {\n      Object.keys(popup.popupOptions).forEach(\n        (key) =>\n          (popup.popupOptions as any)[key] === undefined &&\n          delete (popup.popupOptions as any)[key]\n      );\n      const popupInstance = new MapboxGl.Popup(popup.popupOptions);\n      popupInstance.setDOMContent(element);\n      if (\n        popup.popupEvents.popupClose.observers.length ||\n        popup.popupEvents.close.observers.length\n      ) {\n        popupInstance.on('close', () => {\n          this.zone.run(() => {\n            popup.popupEvents.popupClose.emit();\n            popup.popupEvents.close.emit();\n          });\n        });\n      }\n      if (\n        popup.popupEvents.popupOpen.observers.length ||\n        popup.popupEvents.open.observers.length\n      ) {\n        popupInstance.on('open', () => {\n          this.zone.run(() => {\n            popup.popupEvents.popupOpen.emit();\n            popup.popupEvents.open.emit();\n          });\n        });\n      }\n      return popupInstance;\n    });\n  }\n\n  addPopupToMap(\n    popup: MapboxGl.Popup,\n    lngLat: MapboxGl.LngLatLike,\n    skipOpenEvent = false\n  ) {\n    return this.zone.runOutsideAngular(() => {\n      if (skipOpenEvent && (popup as any)._listeners) {\n        delete (popup as any)._listeners['open'];\n      }\n      popup.setLngLat(lngLat);\n      popup.addTo(this.mapInstance);\n    });\n  }\n\n  addPopupToMarker(marker: MapboxGl.Marker, popup: MapboxGl.Popup) {\n    return this.zone.runOutsideAngular(() => {\n      marker.setPopup(popup);\n    });\n  }\n\n  removePopupFromMap(popup: MapboxGl.Popup, skipCloseEvent = false) {\n    if (skipCloseEvent && (popup as any)._listeners) {\n      delete (popup as any)._listeners['close'];\n    }\n    this.popupsToRemove.push(popup);\n  }\n\n  removePopupFromMarker(marker: MapboxGl.Marker) {\n    return this.zone.runOutsideAngular(() => {\n      marker.setPopup(undefined);\n    });\n  }\n\n  addControl(\n    control: MapboxGl.Control | MapboxGl.IControl,\n    position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n  ) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.addControl(control as any, position);\n    });\n  }\n\n  removeControl(control: MapboxGl.Control | MapboxGl.IControl) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.removeControl(control as any);\n    });\n  }\n\n  async loadAndAddImage(\n    imageId: string,\n    url: string,\n    options?: MapImageOptions\n  ) {\n    return this.zone.runOutsideAngular(() =>\n      new Promise<void>((resolve, reject) => {\n        this.mapInstance.loadImage(url, (error, image) => {\n          if (error) {\n            reject(error);\n            return;\n          }\n          this.addImage(imageId, image as ImageBitmap, options);\n          resolve();\n        });\n      })\n    );\n  }\n\n  addImage(imageId: string, data: MapImageData, options?: MapImageOptions) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.addImage(imageId, data as any, options);\n    });\n  }\n\n  removeImage(imageId: string) {\n    this.imageIdsToRemove.push(imageId);\n  }\n\n  addSource(sourceId: string, source: MapboxGl.AnySourceData) {\n    return this.zone.runOutsideAngular(() => {\n      Object.keys(source).forEach(\n        (key) => (source as any)[key] === undefined && delete (source as any)[key]\n      );\n      this.mapInstance.addSource(sourceId, source);\n    });\n  }\n\n  getSource<T extends MapboxGl.AnySourceImpl>(sourceId: string) {\n    return this.mapInstance.getSource(sourceId) as T;\n  }\n\n  removeSource(sourceId: string) {\n    this.zone.runOutsideAngular(() => {\n      this.findLayersBySourceId(sourceId).forEach((layer) =>\n        this.mapInstance.removeLayer(layer.id)\n      );\n      this.mapInstance.removeSource(sourceId);\n    });\n  }\n\n  setAllLayerPaintProperty(\n    layerId: string,\n    paint:\n      | MapboxGl.BackgroundPaint\n      | MapboxGl.FillPaint\n      | MapboxGl.FillExtrusionPaint\n      | MapboxGl.LinePaint\n      | MapboxGl.SymbolPaint\n      | MapboxGl.RasterPaint\n      | MapboxGl.CirclePaint\n  ) {\n    return this.zone.runOutsideAngular(() => {\n      Object.keys(paint).forEach((key) => {\n        // TODO Check for perf, setPaintProperty only on changed paint props maybe\n        this.mapInstance.setPaintProperty(layerId, key, (paint as any)[key]);\n      });\n    });\n  }\n\n  setAllLayerLayoutProperty(\n    layerId: string,\n    layout:\n      | MapboxGl.BackgroundLayout\n      | MapboxGl.FillLayout\n      | MapboxGl.FillExtrusionLayout\n      | MapboxGl.LineLayout\n      | MapboxGl.SymbolLayout\n      | MapboxGl.RasterLayout\n      | MapboxGl.CircleLayout\n  ) {\n    return this.zone.runOutsideAngular(() => {\n      Object.keys(layout).forEach((key) => {\n        // TODO Check for perf, setPaintProperty only on changed paint props maybe\n        this.mapInstance.setLayoutProperty(layerId, key, (layout as any)[key]);\n      });\n    });\n  }\n\n  setLayerFilter(layerId: string, filter: any[]) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.setFilter(layerId, filter);\n    });\n  }\n\n  setLayerBefore(layerId: string, beforeId: string) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.moveLayer(layerId, beforeId);\n    });\n  }\n\n  setLayerZoomRange(layerId: string, minZoom?: number, maxZoom?: number) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.setLayerZoomRange(\n        layerId,\n        minZoom ? minZoom : 0,\n        maxZoom ? maxZoom : 20\n      );\n    });\n  }\n\n  fitBounds(\n    bounds: MapboxGl.LngLatBoundsLike,\n    options?: MapboxGl.FitBoundsOptions\n  ) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.fitBounds(bounds, options);\n    });\n  }\n\n  fitScreenCoordinates(\n    points: [MapboxGl.PointLike, MapboxGl.PointLike],\n    bearing: number,\n    options?: MapboxGl.AnimationOptions & MapboxGl.CameraOptions\n  ) {\n    return this.zone.runOutsideAngular(() => {\n      this.mapInstance.fitScreenCoordinates(\n        points[0],\n        points[1],\n        bearing,\n        options\n      );\n    });\n  }\n\n  applyChanges() {\n    this.zone.runOutsideAngular(() => {\n      this.removeMarkers();\n      this.removePopups();\n      this.removeImages();\n    });\n  }\n\n  private createMap(optionsWithAccessToken: MapboxOptionsWithAccessToken) {\n    NgZone.assertNotInAngularZone();\n    Object.keys(optionsWithAccessToken).forEach((key: string) => {\n      const tkey = key as keyof MapboxGl.MapboxOptions;\n      if (optionsWithAccessToken[tkey] === undefined) {\n        delete optionsWithAccessToken[tkey];\n      }\n    });\n    this.mapInstance = new MapboxGl.Map(optionsWithAccessToken);\n\n    const isIEorEdge =\n      window && /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\n    if (isIEorEdge) {\n      this.mapInstance.setStyle(optionsWithAccessToken.style!);\n    }\n\n    this.subscription.add(\n      this.zone.onMicrotaskEmpty.subscribe(() => this.applyChanges())\n    );\n  }\n\n  private removeMarkers() {\n    for (const marker of this.markersToRemove) {\n      marker.remove();\n    }\n    this.markersToRemove = [];\n  }\n\n  private removePopups() {\n    for (const popup of this.popupsToRemove) {\n      popup.remove();\n    }\n    this.popupsToRemove = [];\n  }\n\n  private removeImages() {\n    for (const imageId of this.imageIdsToRemove) {\n      this.mapInstance.removeImage(imageId);\n    }\n    this.imageIdsToRemove = [];\n  }\n\n  private findLayersBySourceId(sourceId: string): MapboxGl.Layer[] {\n    const layers = this.mapInstance.getStyle().layers;\n    if (layers == null) {\n      return [];\n    }\n\n    return layers.filter((l) =>\n      'source' in l ? l.source === sourceId : false\n    );\n  }\n\n  private hookEvents(events: MapEvent) {\n    this.mapInstance.on('load', (evt) => {\n      this.mapLoaded.next(undefined);\n      this.mapLoaded.complete();\n      this.zone.run(() => {\n        events.mapLoad.emit(evt.target);\n        events.load.emit(evt.target);\n      });\n    });\n    if (events.mapResize.observers.length || events.resize.observers.length) {\n      this.mapInstance.on('resize', (evt) =>\n        this.zone.run(() => {\n          events.mapResize.emit(evt);\n          events.resize.emit(evt);\n        })\n      );\n    }\n    if (events.mapRemove.observers.length || events.remove.observers.length) {\n      this.mapInstance.on('remove', (evt) =>\n        this.zone.run(() => {\n          events.mapRemove.emit(evt);\n          events.remove.emit(evt);\n        })\n      );\n    }\n    if (\n      events.mapMouseDown.observers.length ||\n      events.mouseDown.observers.length\n    ) {\n      this.mapInstance.on('mousedown', (evt) =>\n        this.zone.run(() => {\n          events.mapMouseDown.emit(evt);\n          events.mouseDown.emit(evt);\n        })\n      );\n    }\n    if (events.mapMouseUp.observers.length || events.mouseUp.observers.length) {\n      this.mapInstance.on('mouseup', (evt) =>\n        this.zone.run(() => {\n          events.mapMouseUp.emit(evt);\n          events.mouseUp.emit(evt);\n        })\n      );\n    }\n    if (\n      events.mapMouseMove.observers.length ||\n      events.mouseMove.observers.length\n    ) {\n      this.mapInstance.on('mousemove', (evt) =>\n        this.zone.run(() => {\n          events.mapMouseMove.emit(evt);\n          events.mouseMove.emit(evt);\n        })\n      );\n    }\n    if (events.mapClick.observers.length || events.click.observers.length) {\n      this.mapInstance.on('click', (evt) =>\n        this.zone.run(() => {\n          events.mapClick.emit(evt);\n          events.click.emit(evt);\n        })\n      );\n    }\n    if (\n      events.mapDblClick.observers.length ||\n      events.dblClick.observers.length\n    ) {\n      this.mapInstance.on('dblclick', (evt) =>\n        this.zone.run(() => {\n          events.mapDblClick.emit(evt);\n          events.dblClick.emit(evt);\n        })\n      );\n    }\n    if (\n      events.mapMouseOver.observers.length ||\n      events.mouseOver.observers.length\n    ) {\n      this.mapInstance.on('mouseover', (evt) =>\n        this.zone.run(() => {\n          events.mapMouseOver.emit(evt);\n          events.mouseOver.emit(evt);\n        })\n      );\n    }\n    if (\n      events.mapMouseOut.observers.length ||\n      events.mouseOut.observers.length\n    ) {\n      this.mapInstance.on('mouseout', (evt) =>\n        this.zone.run(() => {\n          events.mapMouseOut.emit(evt);\n          events.mouseOut.emit(evt);\n        })\n      );\n    }\n    if (\n      events.mapContextMenu.observers.length ||\n      events.contextMenu.observers.length\n    ) {\n      this.mapInstance.on('contextmenu', (evt) =>\n        this.zone.run(() => {\n          events.mapContextMenu.emit(evt);\n          events.contextMenu.emit(evt);\n        })\n      );\n    }\n    if (\n      events.mapTouchStart.observers.length ||\n      events.touchStart.observers.length\n    ) {\n      this.mapInstance.on('touchstart', (evt) =>\n        this.zone.run(() => {\n          events.mapTouchStart.emit(evt);\n          events.touchStart.emit(evt);\n        })\n      );\n    }\n    if (\n      events.mapTouchEnd.observers.length ||\n      events.touchEnd.observers.length\n    ) {\n      this.mapInstance.on('touchend', (evt) =>\n        this.zone.run(() => {\n          events.mapTouchEnd.emit(evt);\n          events.touchEnd.emit(evt);\n        })\n      );\n    }\n    if (\n      events.mapTouchMove.observers.length ||\n      events.touchMove.observers.length\n    ) {\n      this.mapInstance.on('touchmove', (evt) =>\n        this.zone.run(() => {\n          events.mapTouchMove.emit(evt);\n          events.touchMove.emit(evt);\n        })\n      );\n    }\n    if (\n      events.mapTouchCancel.observers.length ||\n      events.touchCancel.observers.length\n    ) {\n      this.mapInstance.on('touchcancel', (evt) =>\n        this.zone.run(() => {\n          events.mapTouchCancel.emit(evt);\n          events.touchCancel.emit(evt);\n        })\n      );\n    }\n    if (events.mapWheel.observers.length || events.wheel.observers.length) {\n      this.mapInstance.on('wheel', (evt) =>\n        this.zone.run(() => {\n          events.mapWheel.emit(evt);\n          events.wheel.emit(evt);\n        })\n      );\n    }\n    if (events.moveStart.observers.length) {\n      this.mapInstance.on('movestart', (evt) =>\n        this.zone.run(() => events.moveStart.emit(evt))\n      );\n    }\n    if (events.move.observers.length) {\n      this.mapInstance.on('move', (evt) =>\n        this.zone.run(() => events.move.emit(evt))\n      );\n    }\n    if (events.moveEnd.observers.length) {\n      this.mapInstance.on('moveend', (evt) =>\n        this.zone.run(() => events.moveEnd.emit(evt))\n      );\n    }\n    if (\n      events.mapDragStart.observers.length ||\n      events.dragStart.observers.length\n    ) {\n      this.mapInstance.on('dragstart', (evt) =>\n        this.zone.run(() => {\n          events.mapDragStart.emit(evt);\n          events.dragStart.emit(evt);\n        })\n      );\n    }\n    if (events.mapDrag.observers.length || events.drag.observers.length) {\n      this.mapInstance.on('drag', (evt) =>\n        this.zone.run(() => {\n          events.mapDrag.emit(evt);\n          events.drag.emit(evt);\n        })\n      );\n    }\n    if (events.mapDragEnd.observers.length || events.dragEnd.observers.length) {\n      this.mapInstance.on('dragend', (evt) =>\n        this.zone.run(() => {\n          events.mapDragEnd.emit(evt);\n          events.dragEnd.emit(evt);\n        })\n      );\n    }\n    if (events.zoomStart.observers.length) {\n      this.mapInstance.on('zoomstart', (evt) =>\n        this.zone.run(() => events.zoomStart.emit(evt))\n      );\n    }\n    if (events.zoomEvt.observers.length) {\n      this.mapInstance.on('zoom', (evt) =>\n        this.zone.run(() => events.zoomEvt.emit(evt))\n      );\n    }\n    if (events.zoomEnd.observers.length) {\n      this.mapInstance.on('zoomend', (evt) =>\n        this.zone.run(() => events.zoomEnd.emit(evt))\n      );\n    }\n    if (events.rotateStart.observers.length) {\n      this.mapInstance.on('rotatestart', (evt) =>\n        this.zone.run(() => events.rotateStart.emit(evt))\n      );\n    }\n    if (events.rotate.observers.length) {\n      this.mapInstance.on('rotate', (evt) =>\n        this.zone.run(() => events.rotate.emit(evt))\n      );\n    }\n    if (events.rotateEnd.observers.length) {\n      this.mapInstance.on('rotateend', (evt) =>\n        this.zone.run(() => events.rotateEnd.emit(evt))\n      );\n    }\n    if (events.pitchStart.observers.length) {\n      this.mapInstance.on('pitchstart', (evt) =>\n        this.zone.run(() => events.pitchStart.emit(evt))\n      );\n    }\n    if (events.pitchEvt.observers.length) {\n      this.mapInstance.on('pitch', (evt) =>\n        this.zone.run(() => events.pitchEvt.emit(evt))\n      );\n    }\n    if (events.pitchEnd.observers.length) {\n      this.mapInstance.on('pitchend', (evt) =>\n        this.zone.run(() => events.pitchEnd.emit(evt))\n      );\n    }\n    if (events.boxZoomStart.observers.length) {\n      this.mapInstance.on('boxzoomstart', (evt) =>\n        this.zone.run(() => events.boxZoomStart.emit(evt))\n      );\n    }\n    if (events.boxZoomEnd.observers.length) {\n      this.mapInstance.on('boxzoomend', (evt) =>\n        this.zone.run(() => events.boxZoomEnd.emit(evt))\n      );\n    }\n    if (events.boxZoomCancel.observers.length) {\n      this.mapInstance.on('boxzoomcancel', (evt) =>\n        this.zone.run(() => events.boxZoomCancel.emit(evt))\n      );\n    }\n    if (events.webGlContextLost.observers.length) {\n      this.mapInstance.on('webglcontextlost', (evt) =>\n        this.zone.run(() => events.webGlContextLost.emit(evt))\n      );\n    }\n    if (events.webGlContextRestored.observers.length) {\n      this.mapInstance.on('webglcontextrestored', (evt) =>\n        this.zone.run(() => events.webGlContextRestored.emit(evt))\n      );\n    }\n    if (events.render.observers.length) {\n      this.mapInstance.on('render', (evt) =>\n        this.zone.run(() => events.render.emit(evt))\n      );\n    }\n    if (events.mapError.observers.length || events.error.observers.length) {\n      this.mapInstance.on('error', (evt) =>\n        this.zone.run(() => {\n          events.mapError.emit(evt);\n          events.error.emit(evt);\n        })\n      );\n    }\n    if (events.data.observers.length) {\n      this.mapInstance.on('data', (evt) =>\n        this.zone.run(() => events.data.emit(evt))\n      );\n    }\n    if (events.styleData.observers.length) {\n      this.mapInstance.on('styledata', (evt) =>\n        this.zone.run(() => events.styleData.emit(evt))\n      );\n    }\n    if (events.sourceData.observers.length) {\n      this.mapInstance.on('sourcedata', (evt) =>\n        this.zone.run(() => events.sourceData.emit(evt))\n      );\n    }\n    if (events.dataLoading.observers.length) {\n      this.mapInstance.on('dataloading', (evt) =>\n        this.zone.run(() => events.dataLoading.emit(evt))\n      );\n    }\n    if (events.styleDataLoading.observers.length) {\n      this.mapInstance.on('styledataloading', (evt) =>\n        this.zone.run(() => events.styleDataLoading.emit(evt))\n      );\n    }\n    if (events.sourceDataLoading.observers.length) {\n      this.mapInstance.on('sourcedataloading', (evt) =>\n        this.zone.run(() => events.sourceDataLoading.emit(evt))\n      );\n    }\n    if (events.styleImageMissing.observers.length) {\n      this.mapInstance.on('styleimagemissing', (evt) =>\n        this.zone.run(() => events.styleImageMissing.emit(evt))\n      );\n    }\n    if (events.idle.observers.length) {\n      this.mapInstance.on('idle', (evt) =>\n        this.zone.run(() => events.idle.emit(evt))\n      );\n    }\n  }\n\n  // TODO move this elsewhere\n  private assign(obj: any, prop: any, value: any) {\n    if (typeof prop === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      prop = prop.split('.');\n    }\n    if (prop.length > 1) {\n      const e = prop.shift();\n      this.assign(\n        (obj[e] =\n          Object.prototype.toString.call(obj[e]) === '[object Object]'\n            ? obj[e]\n            : {}),\n        prop,\n        value\n      );\n    } else {\n      obj[prop[0]] = value;\n    }\n  }\n}\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Input,\n  OnDestroy,\n  ViewChild,\n} from '@angular/core';\nimport { IControl } from 'mapbox-gl';\nimport { MapService } from '../map/map.service';\n\nexport class CustomControl implements IControl {\n  constructor(private container: HTMLElement) {}\n\n  onAdd() {\n    return this.container;\n  }\n\n  onRemove() {\n    return this.container.parentNode!.removeChild(this.container);\n  }\n\n  getDefaultPosition() {\n    return 'top-right';\n  }\n}\n\n@Component({\n  selector: 'mgl-control',\n  template:\n    '<div class=\"mapboxgl-ctrl\" #content><ng-content></ng-content></div>',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ControlComponent<T extends IControl>\n  implements OnDestroy, AfterContentInit {\n  /* Init inputs */\n  @Input() position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n\n  @ViewChild('content', { static: true }) content: ElementRef;\n\n  control: T | CustomControl;\n\n  private controlAdded = false;\n\n  constructor(private mapService: MapService) {}\n\n  ngAfterContentInit() {\n    if (this.content.nativeElement.childNodes.length) {\n      this.control = new CustomControl(this.content.nativeElement);\n      this.mapService.mapCreated$.subscribe(() => {\n        this.mapService.addControl(this.control!, this.position);\n        this.controlAdded = true;\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.controlAdded) {\n      this.mapService.removeControl(this.control);\n    }\n  }\n}\n","import { AfterContentInit, Directive, Host, Input } from '@angular/core';\nimport { AttributionControl } from 'mapbox-gl';\nimport { MapService } from '../map/map.service';\nimport { ControlComponent } from './control.component';\n\n@Directive({\n  selector: '[mglAttribution]',\n})\nexport class AttributionControlDirective implements AfterContentInit {\n  /* Init inputs */\n  @Input() compact?: boolean;\n  @Input() customAttribution?: string | string[];\n\n  constructor(\n    private mapService: MapService,\n    @Host() private controlComponent: ControlComponent<AttributionControl>\n  ) {}\n\n  ngAfterContentInit() {\n    this.mapService.mapCreated$.subscribe(() => {\n      if (this.controlComponent.control) {\n        throw new Error('Another control is already set for this control');\n      }\n      const options: {\n        compact?: boolean;\n        customAttribution?: string | string[];\n      } = {};\n      if (this.compact !== undefined) {\n        options.compact = this.compact;\n      }\n      if (this.customAttribution !== undefined) {\n        options.customAttribution = this.customAttribution;\n      }\n      this.controlComponent.control = new AttributionControl(options);\n      this.mapService.addControl(\n        this.controlComponent.control,\n        this.controlComponent.position\n      );\n    });\n  }\n}\n","import { AfterContentInit, Directive, Host, HostListener, Input } from '@angular/core';\nimport { FullscreenControl } from 'mapbox-gl';\nimport { MapService } from '../map/map.service';\nimport { ControlComponent } from './control.component';\n\n@Directive({\n  selector: '[mglFullscreen]',\n})\nexport class FullscreenControlDirective implements AfterContentInit {\n  /* Init inputs */\n  @Input() container?: HTMLElement;\n\n  constructor(\n    private mapService: MapService,\n    @Host() private controlComponent: ControlComponent<FullscreenControl>\n  ) {}\n\n  @HostListener('window:webkitfullscreenchange', ['$event.target'])\n  onFullscreen(){\n      this.mapService.mapInstance.resize();\n  }\n\n  ngAfterContentInit() {\n    this.mapService.mapCreated$.subscribe(() => {\n      if (this.controlComponent.control) {\n        throw new Error('Another control is already set for this control');\n      }\n      this.controlComponent.control = new FullscreenControl({\n        container: this.container,\n      });\n      this.mapService.addControl(\n        this.controlComponent.control,\n        this.controlComponent.position\n      );\n    });\n  }\n}\n","import {\n  AfterContentInit,\n  Directive,\n  EventEmitter,\n  Host,\n  Input,\n  Output,\n} from '@angular/core';\nimport { FitBoundsOptions, GeolocateControl } from 'mapbox-gl';\nimport { MapService } from '../map/map.service';\nimport { ControlComponent } from './control.component';\nimport { Position } from '../map/map.types';\n\n@Directive({\n  selector: '[mglGeolocate]',\n})\nexport class GeolocateControlDirective implements AfterContentInit {\n  /* Init inputs */\n  @Input() positionOptions?: PositionOptions;\n  @Input() fitBoundsOptions?: FitBoundsOptions;\n  @Input() trackUserLocation?: boolean;\n  @Input() showUserLocation?: boolean;\n\n  @Output()\n  geolocate: EventEmitter<Position> = new EventEmitter<Position>();\n\n  constructor(\n    private mapService: MapService,\n    @Host() private controlComponent: ControlComponent<GeolocateControl>\n  ) {}\n\n  ngAfterContentInit() {\n    this.mapService.mapCreated$.subscribe(() => {\n      if (this.controlComponent.control) {\n        throw new Error('Another control is already set for this control');\n      }\n      const options = {\n        positionOptions: this.positionOptions,\n        fitBoundsOptions: this.fitBoundsOptions,\n        trackUserLocation: this.trackUserLocation,\n        showUserLocation: this.showUserLocation,\n      };\n\n      Object.keys(options).forEach((key: string) => {\n        const tkey = key as keyof typeof options;\n        if (options[tkey] === undefined) {\n          delete options[tkey];\n        }\n      });\n      this.controlComponent.control = new GeolocateControl(options);\n      this.controlComponent.control.on('geolocate', (data) => {\n          this.geolocate.emit(data as Position);\n        }\n      );\n      this.mapService.addControl(\n        this.controlComponent.control,\n        this.controlComponent.position\n      );\n    });\n  }\n}\n","import { AfterContentInit, Directive, Host, Input } from '@angular/core';\nimport { NavigationControl } from 'mapbox-gl';\nimport { MapService } from '../map/map.service';\nimport { ControlComponent } from './control.component';\n\n@Directive({\n  selector: '[mglNavigation]',\n})\nexport class NavigationControlDirective implements AfterContentInit {\n  /* Init inputs */\n  @Input() showCompass?: boolean;\n  @Input() showZoom?: boolean;\n\n  constructor(\n    private mapService: MapService,\n    @Host() private controlComponent: ControlComponent<NavigationControl>\n  ) {}\n\n  ngAfterContentInit() {\n    this.mapService.mapCreated$.subscribe(() => {\n      if (this.controlComponent.control) {\n        throw new Error('Another control is already set for this control');\n      }\n      const options: { showCompass?: boolean; showZoom?: boolean } = {};\n      if (this.showCompass !== undefined) {\n        options.showCompass = this.showCompass;\n      }\n      if (this.showZoom !== undefined) {\n        options.showZoom = this.showZoom;\n      }\n      this.controlComponent.control = new NavigationControl(options);\n      this.mapService.addControl(\n        this.controlComponent.control,\n        this.controlComponent.position\n      );\n    });\n  }\n}\n","import {\n  AfterContentInit,\n  Directive,\n  Host,\n  Input,\n  OnChanges,\n  SimpleChanges,\n} from '@angular/core';\nimport { ScaleControl } from 'mapbox-gl';\nimport { MapService } from '../map/map.service';\nimport { ControlComponent } from './control.component';\n\n@Directive({\n  selector: '[mglScale]',\n})\nexport class ScaleControlDirective implements AfterContentInit, OnChanges {\n  /* Init inputs */\n  @Input() maxWidth?: number;\n\n  /* Dynamic inputs */\n  @Input() unit?: 'imperial' | 'metric' | 'nautical';\n\n  constructor(\n    private mapService: MapService,\n    @Host() private controlComponent: ControlComponent<ScaleControl>\n  ) {}\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.unit && !changes.unit.isFirstChange()) {\n      (this.controlComponent.control as any).setUnit(changes.unit.currentValue);\n    }\n  }\n\n  ngAfterContentInit() {\n    this.mapService.mapCreated$.subscribe(() => {\n      if (this.controlComponent.control) {\n        throw new Error('Another control is already set for this control');\n      }\n      const options: { maxWidth?: number; unit?: string } = {};\n      if (this.maxWidth !== undefined) {\n        options.maxWidth = this.maxWidth;\n      }\n      if (this.unit !== undefined) {\n        options.unit = this.unit;\n      }\n      this.controlComponent.control = new ScaleControl(options);\n      this.mapService.addControl(\n        this.controlComponent.control,\n        this.controlComponent.position\n      );\n    });\n  }\n}\n","export const deprecationWarning = (\n  context: string,\n  oldApi: string,\n  newApi: string\n) => {\n  console.warn(\n    `[ngx-mapbox-gl]: ${context}: ${oldApi} is deprecated, please use ${newApi} instead.`\n  );\n};\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n  NgZone,\n} from '@angular/core';\nimport {\n  GeoJSONSource,\n  GeoJSONSourceOptions,\n  GeoJSONSourceRaw,\n} from 'mapbox-gl';\nimport { fromEvent, Subject, Subscription } from 'rxjs';\nimport { debounceTime, filter } from 'rxjs/operators';\nimport { MapService } from '../../map/map.service';\n\n@Component({\n  selector: 'mgl-geojson-source',\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GeoJSONSourceComponent\n  implements OnInit, OnDestroy, OnChanges, GeoJSONSourceOptions\n{\n  /* Init inputs */\n  @Input() id: string;\n\n  /* Dynamic inputs */\n  @Input() data?: GeoJSONSourceOptions['data'];\n  @Input() maxzoom?: GeoJSONSourceOptions['maxzoom'];\n  @Input() attribution?: GeoJSONSourceOptions['attribution'];\n  @Input() buffer?: GeoJSONSourceOptions['buffer'];\n  @Input() tolerance?: GeoJSONSourceOptions['tolerance'];\n  @Input() cluster?: GeoJSONSourceOptions['cluster'];\n  @Input() clusterRadius?: GeoJSONSourceOptions['clusterRadius'];\n  @Input() clusterMaxZoom?: GeoJSONSourceOptions['clusterMaxZoom'];\n  @Input() clusterMinPoints?: GeoJSONSourceOptions['clusterMinPoints'];\n  @Input() clusterProperties?: GeoJSONSourceOptions['clusterProperties'];\n  @Input() lineMetrics?: GeoJSONSourceOptions['lineMetrics'];\n  @Input() generateId?: GeoJSONSourceOptions['generateId'];\n  @Input() promoteId?: GeoJSONSourceOptions['promoteId'];\n  @Input() filter?: GeoJSONSourceOptions['filter'];\n\n  updateFeatureData = new Subject();\n\n  private sub = new Subscription();\n  private sourceAdded = false;\n  private featureIdCounter = 0;\n\n  constructor(private mapService: MapService, private zone: NgZone) {}\n\n  ngOnInit() {\n    if (!this.data) {\n      this.data = {\n        type: 'FeatureCollection',\n        features: [],\n      };\n    }\n    const sub1 = this.mapService.mapLoaded$.subscribe(() => {\n      this.init();\n      const sub = fromEvent(this.mapService.mapInstance as any, 'styledata')\n        .pipe(filter(() => !this.mapService.mapInstance.getSource(this.id)))\n        .subscribe(() => {\n          this.init();\n        });\n      this.sub.add(sub);\n    });\n    this.sub.add(sub1);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (!this.sourceAdded) {\n      return;\n    }\n    if (\n      (changes.maxzoom && !changes.maxzoom.isFirstChange()) ||\n      (changes.attribution && !changes.attribution.isFirstChange()) ||\n      (changes.buffer && !changes.buffer.isFirstChange()) ||\n      (changes.tolerance && !changes.tolerance.isFirstChange()) ||\n      (changes.cluster && !changes.cluster.isFirstChange()) ||\n      (changes.clusterRadius && !changes.clusterRadius.isFirstChange()) ||\n      (changes.clusterMaxZoom && !changes.clusterMaxZoom.isFirstChange()) ||\n      (changes.clusterMinPoints && !changes.clusterMinPoints.isFirstChange()) ||\n      (changes.clusterProperties &&\n        !changes.clusterProperties.isFirstChange()) ||\n      (changes.lineMetrics && !changes.lineMetrics.isFirstChange()) ||\n      (changes.generateId && !changes.generateId.isFirstChange()) ||\n      (changes.promoteId && !changes.promoteId.isFirstChange()) ||\n      (changes.filter && !changes.filter.isFirstChange())\n    ) {\n      this.ngOnDestroy();\n      this.ngOnInit();\n    }\n    if (changes.data && !changes.data.isFirstChange()) {\n      const source = this.mapService.getSource<GeoJSONSource>(this.id);\n      if (source === undefined) {\n        return;\n      }\n      source.setData(this.data!);\n    }\n  }\n\n  ngOnDestroy() {\n    this.sub.unsubscribe();\n    if (this.sourceAdded) {\n      this.mapService.removeSource(this.id);\n      this.sourceAdded = false;\n    }\n  }\n\n  /**\n   * For clustered sources, fetches the zoom at which the given cluster expands.\n   *\n   * @param clusterId The value of the cluster's cluster_id property.\n   */\n  async getClusterExpansionZoom(clusterId: number) {\n    const source = this.mapService.getSource<GeoJSONSource>(this.id);\n    return this.zone.run(\n      async () =>\n        new Promise<number>((resolve, reject) => {\n          source.getClusterExpansionZoom(clusterId, (error, zoom) => {\n            if (error) {\n              reject(error);\n            } else {\n              resolve(zoom);\n            }\n          });\n        })\n    );\n  }\n\n  /**\n   * For clustered sources, fetches the children of the given cluster on the next zoom level (as an array of GeoJSON features).\n   *\n   * @param clusterId The value of the cluster's cluster_id property.\n   */\n  async getClusterChildren(clusterId: number) {\n    const source = this.mapService.getSource<GeoJSONSource>(this.id);\n    return this.zone.run(\n      async () =>\n        new Promise<GeoJSON.Feature<GeoJSON.Geometry>[]>((resolve, reject) => {\n          source.getClusterChildren(clusterId, (error, features) => {\n            if (error) {\n              reject(error);\n            } else {\n              resolve(features);\n            }\n          });\n        })\n    );\n  }\n\n  /**\n   * For clustered sources, fetches the original points that belong to the cluster (as an array of GeoJSON features).\n   *\n   * @param clusterId The value of the cluster's cluster_id property.\n   * @param limit The maximum number of features to return.\n   * @param offset The number of features to skip (e.g. for pagination).\n   */\n  async getClusterLeaves(clusterId: number, limit: number, offset: number) {\n    const source = this.mapService.getSource<GeoJSONSource>(this.id);\n    return this.zone.run(\n      async () =>\n        new Promise<GeoJSON.Feature<GeoJSON.Geometry>[]>((resolve, reject) => {\n          source.getClusterLeaves(\n            clusterId,\n            limit,\n            offset,\n            (error, features) => {\n              if (error) {\n                reject(error);\n              } else {\n                resolve(features);\n              }\n            }\n          );\n        })\n    );\n  }\n\n  _addFeature(feature: GeoJSON.Feature<GeoJSON.GeometryObject>) {\n    const collection = this\n      .data as GeoJSON.FeatureCollection<GeoJSON.GeometryObject>;\n    collection.features.push(feature);\n    this.updateFeatureData.next(null);\n  }\n\n  _removeFeature(feature: GeoJSON.Feature<GeoJSON.GeometryObject>) {\n    const collection = this\n      .data as GeoJSON.FeatureCollection<GeoJSON.GeometryObject>;\n    const index = collection.features.indexOf(feature);\n    if (index > -1) {\n      collection.features.splice(index, 1);\n    }\n    this.updateFeatureData.next(null);\n  }\n\n  _getNewFeatureId() {\n    return ++this.featureIdCounter;\n  }\n\n  private init() {\n    const source: GeoJSONSourceRaw = {\n      type: 'geojson',\n      data: this.data,\n      maxzoom: this.maxzoom,\n      attribution: this.attribution,\n      buffer: this.buffer,\n      tolerance: this.tolerance,\n      cluster: this.cluster,\n      clusterRadius: this.clusterRadius,\n      clusterMaxZoom: this.clusterMaxZoom,\n      clusterMinPoints: this.clusterMinPoints,\n      clusterProperties: this.clusterProperties,\n      lineMetrics: this.lineMetrics,\n      generateId: this.generateId,\n      promoteId: this.promoteId,\n      filter: this.filter,\n    };\n    this.mapService.addSource(this.id, source);\n    const sub = this.updateFeatureData.pipe(debounceTime(0)).subscribe(() => {\n      const source = this.mapService.getSource<GeoJSONSource>(this.id);\n      if (source === undefined) {\n        return;\n      }\n      source.setData(this.data!);\n    });\n    this.sub.add(sub);\n    this.sourceAdded = true;\n  }\n}\n","import {\n  Component,\n  forwardRef,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  ChangeDetectionStrategy,\n} from '@angular/core';\nimport { GeoJSONSourceComponent } from './geojson-source.component';\n\n@Component({\n  selector: 'mgl-feature',\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FeatureComponent\n  implements OnInit, OnDestroy, GeoJSON.Feature<GeoJSON.GeometryObject>\n{\n  /* Init inputs */\n  @Input() id?: number; // FIXME number only for now https://github.com/mapbox/mapbox-gl-js/issues/2716\n  @Input() geometry: GeoJSON.GeometryObject;\n  @Input() properties: any;\n  type: 'Feature' = 'Feature';\n\n  private feature: GeoJSON.Feature<GeoJSON.GeometryObject>;\n\n  constructor(\n    @Inject(forwardRef(() => GeoJSONSourceComponent))\n    private GeoJSONSourceComponent: GeoJSONSourceComponent\n  ) {}\n\n  ngOnInit() {\n    if (!this.id) {\n      this.id = this.GeoJSONSourceComponent._getNewFeatureId();\n    }\n    this.feature = {\n      type: this.type,\n      geometry: this.geometry,\n      properties: this.properties ? this.properties : {},\n    };\n    this.feature.id = this.id;\n    this.GeoJSONSourceComponent._addFeature(this.feature);\n  }\n\n  ngOnDestroy() {\n    this.GeoJSONSourceComponent._removeFeature(this.feature);\n  }\n\n  updateCoordinates(coordinates: number[]) {\n    (this.feature.geometry as GeoJSON.Point).coordinates = coordinates;\n    this.GeoJSONSourceComponent.updateFeatureData.next(null);\n  }\n}\n","import {\n  Directive,\n  EventEmitter,\n  Host,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n} from '@angular/core';\nimport { MapMouseEvent } from 'mapbox-gl';\nimport { fromEvent, Observable, Subscription } from 'rxjs';\nimport { filter, switchMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { LayerComponent } from '../layer/layer.component';\nimport { MapService } from '../map/map.service';\nimport { FeatureComponent } from '../source/geojson/feature.component';\nimport { deprecationWarning } from '../utils';\n\n@Directive({\n  selector: '[mglDraggable]',\n})\nexport class DraggableDirective implements OnInit, OnDestroy {\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('mglDraggable') layer?: LayerComponent;\n\n  @Output() featureDragStart = new EventEmitter<MapMouseEvent>();\n  @Output() featureDragEnd = new EventEmitter<MapMouseEvent>();\n  @Output() featureDrag = new EventEmitter<MapMouseEvent>();\n  /**\n   * @deprecated Use featureDragStart instead\n   */\n  @Output() dragStart = new EventEmitter<MapMouseEvent>();\n  /**\n   * @deprecated Use featureDragEnd instead\n   */\n  @Output() dragEnd = new EventEmitter<MapMouseEvent>();\n  /**\n   * @deprecated Use featureDrag instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() drag = new EventEmitter<MapMouseEvent>();\n\n  private sub = new Subscription();\n\n  constructor(\n    private mapService: MapService,\n    private ngZone: NgZone,\n    @Optional() @Host() private featureComponent?: FeatureComponent\n  ) {}\n\n  ngOnInit() {\n    this.warnDeprecatedOutputs();\n    let enter$;\n    let leave$;\n    let updateCoords;\n    if (this.featureComponent && this.layer) {\n      enter$ = this.layer.layerMouseEnter;\n      leave$ = this.layer.layerMouseLeave;\n      updateCoords = this.featureComponent.updateCoordinates.bind(\n        this.featureComponent\n      );\n      if (this.featureComponent.geometry.type !== 'Point') {\n        throw new Error('mglDraggable only support point feature');\n      }\n    } else {\n      throw new Error(\n        'mglDraggable can only be used on Feature (with a layer as input) or Marker'\n      );\n    }\n\n    this.handleDraggable(enter$, leave$, updateCoords);\n  }\n\n  ngOnDestroy() {\n    this.sub.unsubscribe();\n  }\n\n  private handleDraggable(\n    enter$: Observable<MapMouseEvent>,\n    leave$: Observable<MapMouseEvent>,\n    updateCoords: (coord: number[]) => void\n  ) {\n    let moving = false;\n    let inside = false;\n    this.mapService.mapCreated$.subscribe(() => {\n      const mouseUp$ = fromEvent<MapMouseEvent>(\n        this.mapService.mapInstance,\n        'mouseup'\n      );\n      const dragStart$ = enter$.pipe(\n        filter(() => !moving),\n        filter((evt) => this.filterFeature(evt)),\n        tap(() => {\n          inside = true;\n          this.mapService.changeCanvasCursor('move');\n          this.mapService.updateDragPan(false);\n        }),\n        switchMap(() =>\n          fromEvent<MapMouseEvent>(\n            this.mapService.mapInstance,\n            'mousedown'\n          ).pipe(takeUntil(leave$))\n        )\n      );\n      const dragging$ = dragStart$.pipe(\n        switchMap(() =>\n          fromEvent<MapMouseEvent>(\n            this.mapService.mapInstance,\n            'mousemove'\n          ).pipe(takeUntil(mouseUp$))\n        )\n      );\n      const dragEnd$ = dragStart$.pipe(switchMap(() => mouseUp$.pipe(take(1))));\n      this.sub.add(\n        dragStart$.subscribe((evt) => {\n          moving = true;\n          if (\n            this.featureDragStart.observers.length ||\n            this.dragStart.observers.length\n          ) {\n            this.ngZone.run(() => {\n              this.featureDragStart.emit(evt);\n              this.dragStart.emit(evt);\n            });\n          }\n        })\n      );\n      this.sub.add(\n        dragging$.subscribe((evt) => {\n          updateCoords([evt.lngLat.lng, evt.lngLat.lat]);\n          if (this.featureDrag.observers.length || this.drag.observers.length) {\n            this.ngZone.run(() => {\n              this.featureDrag.emit(evt);\n              this.drag.emit(evt);\n            });\n          }\n        })\n      );\n      this.sub.add(\n        dragEnd$.subscribe((evt) => {\n          moving = false;\n          if (\n            this.featureDragEnd.observers.length ||\n            this.dragEnd.observers.length\n          ) {\n            this.ngZone.run(() => {\n              this.featureDragEnd.emit(evt);\n              this.dragEnd.emit(evt);\n            });\n          }\n          if (!inside) {\n            // It's possible to dragEnd outside the target (small input lag)\n            this.mapService.changeCanvasCursor('');\n            this.mapService.updateDragPan(true);\n          }\n        })\n      );\n      this.sub.add(\n        leave$\n          .pipe(\n            tap(() => (inside = false)),\n            filter(() => !moving)\n          )\n          .subscribe(() => {\n            this.mapService.changeCanvasCursor('');\n            this.mapService.updateDragPan(true);\n          })\n      );\n    });\n  }\n\n  private filterFeature(evt: MapMouseEvent) {\n    if (this.featureComponent && this.layer) {\n      const feature: GeoJSON.Feature<any> =\n        this.mapService.queryRenderedFeatures(evt.point, {\n          layers: [this.layer.id],\n          filter: [\n            'all',\n            ['==', '$type', 'Point'],\n            ['==', '$id', this.featureComponent.id],\n          ],\n        })[0];\n      if (!feature) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  private warnDeprecatedOutputs() {\n    const dw = deprecationWarning.bind(undefined, DraggableDirective.name);\n    if (this.dragStart.observers.length) {\n      dw('dragStart', 'featureDragStart');\n    }\n    if (this.dragEnd.observers.length) {\n      dw('dragEnd', 'featureDragEnd');\n    }\n    if (this.drag.observers.length) {\n      dw('drag', 'featureDrag');\n    }\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter, startWith, switchMap } from 'rxjs/operators';\nimport { MapService } from '../map/map.service';\nimport { MapImageData, MapImageOptions } from '../map/map.types';\nimport { deprecationWarning } from '../utils';\n\n@Component({\n  selector: 'mgl-image',\n  template: '',\n})\nexport class ImageComponent implements OnInit, OnDestroy, OnChanges {\n  /* Init inputs */\n  @Input() id: string;\n\n  /* Dynamic inputs */\n  @Input() data?: MapImageData;\n  @Input() options?: MapImageOptions;\n  @Input() url?: string;\n\n  @Output() imageError = new EventEmitter<{ status: number }>();\n  @Output() imageLoaded = new EventEmitter<void>();\n  /**\n   * @deprecated Use imageError instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() error = new EventEmitter<{ status: number }>();\n  /**\n   * @deprecated Use imageLoaded instead\n   */\n  @Output() loaded = new EventEmitter<void>();\n\n  private isAdded = false;\n  private isAdding = false;\n  private sub: Subscription;\n\n  constructor(private mapService: MapService, private zone: NgZone) {}\n\n  ngOnInit() {\n    this.warnDeprecatedOutputs();\n    this.sub = this.mapService.mapLoaded$\n      .pipe(\n        switchMap(() =>\n          fromEvent(this.mapService.mapInstance as any, 'styledata').pipe(\n            startWith(undefined),\n            filter(\n              () =>\n                !this.isAdding && !this.mapService.mapInstance.hasImage(this.id)\n            )\n          )\n        )\n      )\n      .subscribe(() => this.init());\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (\n      (changes.data && !changes.data.isFirstChange()) ||\n      (changes.options && !changes.options.isFirstChange()) ||\n      (changes.url && !changes.url.isFirstChange())\n    ) {\n      this.ngOnDestroy();\n      this.ngOnInit();\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.isAdded) {\n      this.mapService.removeImage(this.id);\n    }\n    if (this.sub) {\n      this.sub.unsubscribe();\n    }\n  }\n\n  private async init() {\n    this.isAdding = true;\n    if (this.data) {\n      this.mapService.addImage(this.id, this.data, this.options);\n      this.isAdded = true;\n      this.isAdding = false;\n    } else if (this.url) {\n      try {\n        await this.mapService.loadAndAddImage(this.id, this.url, this.options);\n        this.isAdded = true;\n        this.isAdding = false;\n        this.zone.run(() => {\n          this.imageLoaded.emit();\n          this.loaded.emit();\n        });\n      } catch (error: any) {\n        this.zone.run(() => {\n          this.imageError.emit(error);\n          this.error.emit(error);\n        });\n      }\n    }\n  }\n\n  private warnDeprecatedOutputs() {\n    const dw = deprecationWarning.bind(undefined, ImageComponent.name);\n    if (this.error.observers.length) {\n      dw('error', 'imageError');\n    }\n    if (this.loaded.observers.length) {\n      dw('loaded', 'imageLoaded');\n    }\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport {\n  AnyLayer,\n  EventData,\n  Layer,\n  MapLayerMouseEvent,\n  MapLayerTouchEvent,\n} from 'mapbox-gl';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter, mapTo, startWith, switchMap } from 'rxjs/operators';\nimport { MapService, SetupLayer } from '../map/map.service';\nimport { LayerEvents } from '../map/map.types';\nimport { deprecationWarning } from '../utils';\n\n@Component({\n  selector: 'mgl-layer',\n  template: '',\n})\nexport class LayerComponent\n  implements OnInit, OnDestroy, OnChanges, Layer, LayerEvents {\n  /* Init inputs */\n  @Input() id: AnyLayer['id'];\n  @Input() source?: Layer['source'];\n  @Input() type: AnyLayer['type'];\n  @Input() metadata?: Layer['metadata'];\n  @Input() sourceLayer?: Layer['source-layer'];\n\n  /* Dynamic inputs */\n  @Input() filter?: Layer['filter'];\n  @Input() layout?: Layer['layout'];\n  @Input() paint?: Layer['paint'];\n  @Input() before?: string;\n  @Input() minzoom?: Layer['minzoom'];\n  @Input() maxzoom?: Layer['maxzoom'];\n\n  @Output() layerClick = new EventEmitter<MapLayerMouseEvent & EventData>();\n  @Output() layerDblClick = new EventEmitter<MapLayerMouseEvent & EventData>();\n  @Output() layerMouseDown = new EventEmitter<MapLayerMouseEvent & EventData>();\n  @Output() layerMouseUp = new EventEmitter<MapLayerMouseEvent & EventData>();\n  @Output() layerMouseEnter = new EventEmitter<\n    MapLayerMouseEvent & EventData\n  >();\n  @Output() layerMouseLeave = new EventEmitter<\n    MapLayerMouseEvent & EventData\n  >();\n  @Output() layerMouseMove = new EventEmitter<MapLayerMouseEvent & EventData>();\n  @Output() layerMouseOver = new EventEmitter<MapLayerMouseEvent & EventData>();\n  @Output() layerMouseOut = new EventEmitter<MapLayerMouseEvent & EventData>();\n  @Output() layerContextMenu = new EventEmitter<\n    MapLayerMouseEvent & EventData\n  >();\n  @Output() layerTouchStart = new EventEmitter<\n    MapLayerTouchEvent & EventData\n  >();\n  @Output() layerTouchEnd = new EventEmitter<MapLayerTouchEvent & EventData>();\n  @Output() layerTouchCancel = new EventEmitter<\n    MapLayerTouchEvent & EventData\n  >();\n  /**\n   * @deprecated Use layerClick instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() click = new EventEmitter<MapLayerMouseEvent & EventData>();\n  /**\n   * @deprecated Use layerDblClick instead\n   */\n  @Output() dblClick = new EventEmitter<MapLayerMouseEvent & EventData>();\n  /**\n   * @deprecated Use layerMouseDown instead\n   */\n  @Output() mouseDown = new EventEmitter<MapLayerMouseEvent & EventData>();\n  /**\n   * @deprecated Use layerMouseUp instead\n   */\n  @Output() mouseUp = new EventEmitter<MapLayerMouseEvent & EventData>();\n  /**\n   * @deprecated Use layerMouseEnter instead\n   */\n  @Output() mouseEnter = new EventEmitter<MapLayerMouseEvent & EventData>();\n  /**\n   * @deprecated Use layerMouseLeave instead\n   */\n  @Output() mouseLeave = new EventEmitter<MapLayerMouseEvent & EventData>();\n  /**\n   * @deprecated Use layerMouseMove instead\n   */\n  @Output() mouseMove = new EventEmitter<MapLayerMouseEvent & EventData>();\n  /**\n   * @deprecated Use layerMouseOver instead\n   */\n  @Output() mouseOver = new EventEmitter<MapLayerMouseEvent & EventData>();\n  /**\n   * @deprecated Use layerMouseOut instead\n   */\n  @Output() mouseOut = new EventEmitter<MapLayerMouseEvent & EventData>();\n  /**\n   * @deprecated Use layerContextMenu instead\n   */\n  @Output() contextMenu = new EventEmitter<MapLayerMouseEvent & EventData>();\n  /**\n   * @deprecated Use layerTouchStart instead\n   */\n  @Output() touchStart = new EventEmitter<MapLayerTouchEvent & EventData>();\n  /**\n   * @deprecated Use layerTouchEnd instead\n   */\n  @Output() touchEnd = new EventEmitter<MapLayerTouchEvent & EventData>();\n  /**\n   * @deprecated Use layerTouchCancel instead\n   */\n  @Output() touchCancel = new EventEmitter<MapLayerTouchEvent & EventData>();\n\n  private layerAdded = false;\n  private sub: Subscription;\n\n  constructor(private mapService: MapService) {}\n\n  ngOnInit() {\n    this.warnDeprecatedOutputs();\n    this.sub = this.mapService.mapLoaded$\n      .pipe(\n        switchMap(() =>\n          fromEvent(this.mapService.mapInstance as any, 'styledata').pipe(\n            mapTo(false),\n            filter(() => !this.mapService.mapInstance.getLayer(this.id)),\n            startWith(true)\n          )\n        )\n      )\n      .subscribe((bindEvents: boolean) => this.init(bindEvents));\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (!this.layerAdded) {\n      return;\n    }\n    if (changes.paint && !changes.paint.isFirstChange()) {\n      this.mapService.setAllLayerPaintProperty(\n        this.id,\n        changes.paint.currentValue!\n      );\n    }\n    if (changes.layout && !changes.layout.isFirstChange()) {\n      this.mapService.setAllLayerLayoutProperty(\n        this.id,\n        changes.layout.currentValue!\n      );\n    }\n    if (changes.filter && !changes.filter.isFirstChange()) {\n      this.mapService.setLayerFilter(this.id, changes.filter.currentValue!);\n    }\n    if (changes.before && !changes.before.isFirstChange()) {\n      this.mapService.setLayerBefore(this.id, changes.before.currentValue!);\n    }\n    if (\n      (changes.minzoom && !changes.minzoom.isFirstChange()) ||\n      (changes.maxzoom && !changes.maxzoom.isFirstChange())\n    ) {\n      this.mapService.setLayerZoomRange(this.id, this.minzoom, this.maxzoom);\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.layerAdded) {\n      this.mapService.removeLayer(this.id);\n    }\n    if (this.sub) {\n      this.sub.unsubscribe();\n    }\n  }\n\n  private init(bindEvents: boolean) {\n    const layer: SetupLayer = {\n      layerOptions: {\n        id: this.id,\n        type: this.type as any,\n        source: this.source,\n        metadata: this.metadata,\n        'source-layer': this.sourceLayer,\n        minzoom: this.minzoom,\n        maxzoom: this.maxzoom,\n        filter: this.filter,\n        layout: this.layout,\n        paint: this.paint,\n      },\n      layerEvents: {\n        layerClick: this.layerClick,\n        layerDblClick: this.layerDblClick,\n        layerMouseDown: this.layerMouseDown,\n        layerMouseUp: this.layerMouseUp,\n        layerMouseEnter: this.layerMouseEnter,\n        layerMouseLeave: this.layerMouseLeave,\n        layerMouseMove: this.layerMouseMove,\n        layerMouseOver: this.layerMouseOver,\n        layerMouseOut: this.layerMouseOut,\n        layerContextMenu: this.layerContextMenu,\n        layerTouchStart: this.layerTouchStart,\n        layerTouchEnd: this.layerTouchEnd,\n        layerTouchCancel: this.layerTouchCancel,\n        click: this.click,\n        dblClick: this.dblClick,\n        mouseDown: this.mouseDown,\n        mouseUp: this.mouseUp,\n        mouseEnter: this.mouseEnter,\n        mouseLeave: this.mouseLeave,\n        mouseMove: this.mouseMove,\n        mouseOver: this.mouseOver,\n        mouseOut: this.mouseOut,\n        contextMenu: this.contextMenu,\n        touchStart: this.touchStart,\n        touchEnd: this.touchEnd,\n        touchCancel: this.touchCancel,\n      },\n    };\n    this.mapService.addLayer(layer, bindEvents, this.before);\n    this.layerAdded = true;\n  }\n\n  private warnDeprecatedOutputs() {\n    const dw = deprecationWarning.bind(undefined, LayerComponent.name);\n    if (this.click.observers.length) {\n      dw('click', 'layerClick');\n    }\n    if (this.dblClick.observers.length) {\n      dw('dblClick', 'layerDblClick');\n    }\n    if (this.mouseDown.observers.length) {\n      dw('mouseDown', 'layerMouseDown');\n    }\n    if (this.mouseUp.observers.length) {\n      dw('mouseUp', 'layerMouseUp');\n    }\n    if (this.mouseEnter.observers.length) {\n      dw('mouseEnter', 'layerMouseEnter');\n    }\n    if (this.mouseLeave.observers.length) {\n      dw('mouseLeave', 'layerMouseLeave');\n    }\n    if (this.mouseMove.observers.length) {\n      dw('mouseMove', 'layerMouseMove');\n    }\n    if (this.mouseOver.observers.length) {\n      dw('mouseOver', 'layerMouseOver');\n    }\n    if (this.mouseOut.observers.length) {\n      dw('mouseOut', 'layerMouseOut');\n    }\n    if (this.contextMenu.observers.length) {\n      dw('contextMenu', 'layerContextMenu');\n    }\n    if (this.touchStart.observers.length) {\n      dw('touchStart', 'layerTouchStart');\n    }\n    if (this.touchEnd.observers.length) {\n      dw('touchEnd', 'layerTouchEnd');\n    }\n    if (this.touchCancel.observers.length) {\n      dw('touchCancel', 'layerTouchCancel');\n    }\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport {\n  AnimationOptions,\n  ErrorEvent,\n  EventData,\n  LngLatBoundsLike,\n  Map,\n  MapboxEvent,\n  MapboxOptions,\n  MapBoxZoomEvent,\n  MapContextEvent,\n  MapDataEvent,\n  MapMouseEvent,\n  MapSourceDataEvent,\n  MapStyleDataEvent,\n  MapTouchEvent,\n  MapWheelEvent,\n  PointLike,\n} from 'mapbox-gl';\nimport { deprecationWarning } from '../utils';\nimport { MapService, MovingOptions } from './map.service';\nimport { MapEvent } from './map.types';\n\n@Component({\n  selector: 'mgl-map',\n  template: '<div #container></div>',\n  styles: [\n    `\n      :host {\n        display: block;\n      }\n      div {\n        height: 100%;\n        width: 100%;\n      }\n    `,\n  ],\n  providers: [MapService],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MapComponent\n  implements\n    OnChanges,\n    OnDestroy,\n    AfterViewInit,\n    Omit<MapboxOptions, 'bearing' | 'container' | 'pitch' | 'zoom'>,\n    MapEvent {\n  /* Init inputs */\n  @Input() accessToken?: MapboxOptions['accessToken'];\n  @Input() collectResourceTiming?: MapboxOptions['collectResourceTiming'];\n  @Input() crossSourceCollisions?: MapboxOptions['crossSourceCollisions'];\n  @Input() customMapboxApiUrl?: string;\n  @Input() fadeDuration?: MapboxOptions['fadeDuration'];\n  @Input() hash?: MapboxOptions['hash'];\n  @Input() refreshExpiredTiles?: MapboxOptions['refreshExpiredTiles'];\n  @Input()\n  failIfMajorPerformanceCaveat?: MapboxOptions['failIfMajorPerformanceCaveat'];\n  @Input() bearingSnap?: MapboxOptions['bearingSnap'];\n  @Input() interactive?: MapboxOptions['interactive'];\n  @Input() pitchWithRotate?: MapboxOptions['pitchWithRotate'];\n  @Input() clickTolerance?: MapboxOptions['clickTolerance'];\n  @Input() attributionControl?: MapboxOptions['attributionControl'];\n  @Input() logoPosition?: MapboxOptions['logoPosition'];\n  @Input() maxTileCacheSize?: MapboxOptions['maxTileCacheSize'];\n  @Input() localIdeographFontFamily?: MapboxOptions['localIdeographFontFamily'];\n  @Input() preserveDrawingBuffer?: MapboxOptions['preserveDrawingBuffer'];\n  @Input() trackResize?: MapboxOptions['trackResize'];\n  @Input() transformRequest?: MapboxOptions['transformRequest'];\n  @Input() bounds?: MapboxOptions['bounds']; // Use fitBounds for dynamic input\n  @Input() antialias?: MapboxOptions['antialias'];\n  @Input() locale: MapboxOptions['locale'];\n\n  /* Dynamic inputs */\n  @Input() minZoom?: MapboxOptions['minZoom'];\n  @Input() maxZoom?: MapboxOptions['maxZoom'];\n  @Input() minPitch?: MapboxOptions['minPitch'];\n  @Input() maxPitch?: MapboxOptions['maxPitch'];\n  @Input() scrollZoom?: MapboxOptions['scrollZoom'];\n  @Input() dragRotate?: MapboxOptions['dragRotate'];\n  @Input() touchPitch?: MapboxOptions['touchPitch'];\n  @Input() touchZoomRotate?: MapboxOptions['touchZoomRotate'];\n  @Input() doubleClickZoom?: MapboxOptions['doubleClickZoom'];\n  @Input() keyboard?: MapboxOptions['keyboard'];\n  @Input() dragPan?: MapboxOptions['dragPan'];\n  @Input() boxZoom?: MapboxOptions['boxZoom'];\n  @Input() style: MapboxOptions['style'];\n  @Input() center?: MapboxOptions['center'];\n  @Input() maxBounds?: MapboxOptions['maxBounds'];\n  @Input() zoom?: [number];\n  @Input() bearing?: [number];\n  @Input() pitch?: [number];\n  // First value goes to options.fitBoundsOptions. Subsequents changes are passed to fitBounds\n  @Input() fitBoundsOptions?: MapboxOptions['fitBoundsOptions'];\n  @Input() renderWorldCopies?: MapboxOptions['renderWorldCopies'];\n\n  /* Added by ngx-mapbox-gl */\n  @Input() movingMethod: 'jumpTo' | 'easeTo' | 'flyTo' = 'flyTo';\n  @Input() movingOptions?: MovingOptions;\n  // => First value is a alias to bounds input (since mapbox 0.53.0). Subsequents changes are passed to fitBounds\n  @Input() fitBounds?: LngLatBoundsLike;\n  @Input() fitScreenCoordinates?: [PointLike, PointLike];\n  @Input() centerWithPanTo?: boolean;\n  @Input() panToOptions?: AnimationOptions;\n  @Input() cursorStyle?: string;\n\n  @Output() mapResize = new EventEmitter<MapboxEvent & EventData>();\n  @Output() mapRemove = new EventEmitter<MapboxEvent & EventData>();\n  @Output() mapMouseDown = new EventEmitter<MapMouseEvent & EventData>();\n  @Output() mapMouseUp = new EventEmitter<MapMouseEvent & EventData>();\n  @Output() mapMouseMove = new EventEmitter<MapMouseEvent & EventData>();\n  @Output() mapClick = new EventEmitter<MapMouseEvent & EventData>();\n  @Output() mapDblClick = new EventEmitter<MapMouseEvent & EventData>();\n  @Output() mapMouseOver = new EventEmitter<MapMouseEvent & EventData>();\n  @Output() mapMouseOut = new EventEmitter<MapMouseEvent & EventData>();\n  @Output() mapContextMenu = new EventEmitter<MapMouseEvent & EventData>();\n  @Output() mapTouchStart = new EventEmitter<MapTouchEvent & EventData>();\n  @Output() mapTouchEnd = new EventEmitter<MapTouchEvent & EventData>();\n  @Output() mapTouchMove = new EventEmitter<MapTouchEvent & EventData>();\n  @Output() mapTouchCancel = new EventEmitter<MapTouchEvent & EventData>();\n  @Output() mapWheel = new EventEmitter<MapWheelEvent & EventData>();\n  @Output() moveStart = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData\n  >();\n  @Output() move = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData\n  >();\n  @Output() moveEnd = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData\n  >();\n  @Output() mapDragStart = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | undefined> & EventData\n  >();\n  @Output() mapDrag = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | undefined> & EventData\n  >();\n  @Output() mapDragEnd = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | undefined> & EventData\n  >();\n  @Output() zoomStart = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData\n  >();\n  @Output() zoomEvt = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData\n  >();\n  @Output() zoomEnd = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData\n  >();\n  @Output() rotateStart = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | undefined> & EventData\n  >();\n  @Output() rotate = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | undefined> & EventData\n  >();\n  @Output() rotateEnd = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | undefined> & EventData\n  >();\n  @Output() pitchStart = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | undefined> & EventData\n  >();\n  @Output() pitchEvt = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | undefined> & EventData\n  >();\n  @Output() pitchEnd = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | undefined> & EventData\n  >();\n  @Output() boxZoomStart = new EventEmitter<MapBoxZoomEvent & EventData>();\n  @Output() boxZoomEnd = new EventEmitter<MapBoxZoomEvent & EventData>();\n  @Output() boxZoomCancel = new EventEmitter<MapBoxZoomEvent & EventData>();\n  @Output() webGlContextLost = new EventEmitter<MapContextEvent & EventData>();\n  @Output() webGlContextRestored = new EventEmitter<\n    MapContextEvent & EventData\n  >();\n  @Output() mapLoad = new EventEmitter<Map>();\n  @Output() idle = new EventEmitter<MapboxEvent & EventData>();\n  @Output() render = new EventEmitter<MapboxEvent & EventData>();\n  @Output() mapError = new EventEmitter<ErrorEvent & EventData>();\n  @Output() data = new EventEmitter<MapDataEvent & EventData>();\n  @Output() styleData = new EventEmitter<MapStyleDataEvent & EventData>();\n  @Output() sourceData = new EventEmitter<MapSourceDataEvent & EventData>();\n  @Output() dataLoading = new EventEmitter<MapDataEvent & EventData>();\n  @Output() styleDataLoading = new EventEmitter<\n    MapStyleDataEvent & EventData\n  >();\n  @Output() sourceDataLoading = new EventEmitter<\n    MapSourceDataEvent & EventData\n  >();\n  @Output() styleImageMissing = new EventEmitter<{ id: string } & EventData>();\n\n  /**\n   * @deprecated Use mapResize instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() resize = new EventEmitter<MapboxEvent & EventData>();\n  /**\n   * @deprecated Use mapRemove instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() remove = new EventEmitter<MapboxEvent & EventData>();\n  /**\n   * @deprecated Use mapMouseDown instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() mouseDown = new EventEmitter<MapMouseEvent & EventData>();\n  /**\n   * @deprecated Use mapMouseUp instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() mouseUp = new EventEmitter<MapMouseEvent & EventData>();\n  /**\n   * @deprecated Use mapMouseMove instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() mouseMove = new EventEmitter<MapMouseEvent & EventData>();\n  /**\n   * @deprecated Use mapClick instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() click = new EventEmitter<MapMouseEvent & EventData>();\n  /**\n   * @deprecated Use mapDblClick instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() dblClick = new EventEmitter<MapMouseEvent & EventData>();\n  /**\n   * @deprecated Use mapMouseOver instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() mouseOver = new EventEmitter<MapMouseEvent & EventData>();\n  /**\n   * @deprecated Use mapMouseOut instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() mouseOut = new EventEmitter<MapMouseEvent & EventData>();\n  /**\n   * @deprecated Use mapContextMenu instead\n   */\n  @Output() contextMenu = new EventEmitter<MapMouseEvent & EventData>();\n  /**\n   * @deprecated Use mapTouchStart instead\n   */\n  @Output() touchStart = new EventEmitter<MapTouchEvent & EventData>();\n  /**\n   * @deprecated Use mapTouchEnd instead\n   */\n  @Output() touchEnd = new EventEmitter<MapTouchEvent & EventData>();\n  /**\n   * @deprecated Use mapTouchMove instead\n   */\n  @Output() touchMove = new EventEmitter<MapTouchEvent & EventData>();\n  /**\n   * @deprecated Use mapTouchCancel instead\n   */\n  @Output() touchCancel = new EventEmitter<MapTouchEvent & EventData>();\n  /**\n   * @deprecated Use mapWheel instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() wheel = new EventEmitter<MapWheelEvent & EventData>();\n  /**\n   * @deprecated Use mapDragStart instead\n   */\n  @Output() dragStart = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | undefined> & EventData\n  >();\n  /**\n   * @deprecated Use mapDrag instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() drag = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | undefined> & EventData\n  >();\n  /**\n   * @deprecated Use mapDragEnd instead\n   */\n  @Output() dragEnd = new EventEmitter<\n    MapboxEvent<MouseEvent | TouchEvent | undefined> & EventData\n  >();\n  /**\n   * @deprecated Use mapLoad instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() load = new EventEmitter<Map>();\n  /**\n   * @deprecated Use mapError instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() error = new EventEmitter<ErrorEvent & EventData>();\n\n  get mapInstance(): Map {\n    return this.mapService.mapInstance;\n  }\n\n  @ViewChild('container', { static: true }) mapContainer: ElementRef;\n\n  constructor(private mapService: MapService) {}\n\n  ngAfterViewInit() {\n    this.warnDeprecatedOutputs();\n    this.mapService.setup({\n      accessToken: this.accessToken,\n      customMapboxApiUrl: this.customMapboxApiUrl,\n      mapOptions: {\n        collectResourceTiming: this.collectResourceTiming,\n        container: this.mapContainer.nativeElement,\n        crossSourceCollisions: this.crossSourceCollisions,\n        fadeDuration: this.fadeDuration,\n        minZoom: this.minZoom,\n        maxZoom: this.maxZoom,\n        minPitch: this.minPitch,\n        maxPitch: this.maxPitch,\n        style: this.style,\n        hash: this.hash,\n        interactive: this.interactive,\n        bearingSnap: this.bearingSnap,\n        pitchWithRotate: this.pitchWithRotate,\n        clickTolerance: this.clickTolerance,\n        attributionControl: this.attributionControl,\n        logoPosition: this.logoPosition,\n        failIfMajorPerformanceCaveat: this.failIfMajorPerformanceCaveat,\n        preserveDrawingBuffer: this.preserveDrawingBuffer,\n        refreshExpiredTiles: this.refreshExpiredTiles,\n        maxBounds: this.maxBounds,\n        scrollZoom: this.scrollZoom,\n        boxZoom: this.boxZoom,\n        dragRotate: this.dragRotate,\n        dragPan: this.dragPan,\n        keyboard: this.keyboard,\n        doubleClickZoom: this.doubleClickZoom,\n        touchPitch: this.touchPitch,\n        touchZoomRotate: this.touchZoomRotate,\n        trackResize: this.trackResize,\n        center: this.center,\n        zoom: this.zoom,\n        bearing: this.bearing,\n        pitch: this.pitch,\n        renderWorldCopies: this.renderWorldCopies,\n        maxTileCacheSize: this.maxTileCacheSize,\n        localIdeographFontFamily: this.localIdeographFontFamily,\n        transformRequest: this.transformRequest,\n        bounds: this.bounds ? this.bounds : this.fitBounds,\n        fitBoundsOptions: this.fitBoundsOptions,\n        antialias: this.antialias,\n        locale: this.locale,\n      },\n      mapEvents: this,\n    });\n    if (this.cursorStyle) {\n      this.mapService.changeCanvasCursor(this.cursorStyle);\n    }\n  }\n\n  ngOnDestroy() {\n    this.mapService.destroyMap();\n  }\n\n  async ngOnChanges(changes: SimpleChanges) {\n    await this.mapService.mapCreated$.toPromise();\n    if (changes.cursorStyle && !changes.cursorStyle.isFirstChange()) {\n      this.mapService.changeCanvasCursor(changes.cursorStyle.currentValue);\n    }\n    if (changes.minZoom && !changes.minZoom.isFirstChange()) {\n      this.mapService.updateMinZoom(changes.minZoom.currentValue);\n    }\n    if (changes.maxZoom && !changes.maxZoom.isFirstChange()) {\n      this.mapService.updateMaxZoom(changes.maxZoom.currentValue);\n    }\n    if (changes.minPitch && !changes.minPitch.isFirstChange()) {\n      this.mapService.updateMinPitch(changes.minPitch.currentValue);\n    }\n    if (changes.maxPitch && !changes.maxPitch.isFirstChange()) {\n      this.mapService.updateMaxPitch(changes.maxPitch.currentValue);\n    }\n    if (\n      changes.renderWorldCopies &&\n      !changes.renderWorldCopies.isFirstChange()\n    ) {\n      this.mapService.updateRenderWorldCopies(\n        changes.renderWorldCopies.currentValue\n      );\n    }\n    if (changes.scrollZoom && !changes.scrollZoom.isFirstChange()) {\n      this.mapService.updateScrollZoom(changes.scrollZoom.currentValue);\n    }\n    if (changes.dragRotate && !changes.dragRotate.isFirstChange()) {\n      this.mapService.updateDragRotate(changes.dragRotate.currentValue);\n    }\n    if (changes.touchPitch && !changes.touchPitch.isFirstChange()) {\n      this.mapService.updateTouchPitch(changes.touchPitch.currentValue);\n    }\n    if (changes.touchZoomRotate && !changes.touchZoomRotate.isFirstChange()) {\n      this.mapService.updateTouchZoomRotate(\n        changes.touchZoomRotate.currentValue\n      );\n    }\n    if (changes.doubleClickZoom && !changes.doubleClickZoom.isFirstChange()) {\n      this.mapService.updateDoubleClickZoom(\n        changes.doubleClickZoom.currentValue\n      );\n    }\n    if (changes.keyboard && !changes.keyboard.isFirstChange()) {\n      this.mapService.updateKeyboard(changes.keyboard.currentValue);\n    }\n    if (changes.dragPan && !changes.dragPan.isFirstChange()) {\n      this.mapService.updateDragPan(changes.dragPan.currentValue);\n    }\n    if (changes.boxZoom && !changes.boxZoom.isFirstChange()) {\n      this.mapService.updateBoxZoom(changes.boxZoom.currentValue);\n    }\n    if (changes.style && !changes.style.isFirstChange()) {\n      this.mapService.updateStyle(changes.style.currentValue);\n    }\n    if (changes.maxBounds && !changes.maxBounds.isFirstChange()) {\n      this.mapService.updateMaxBounds(changes.maxBounds.currentValue);\n    }\n    if (\n      changes.fitBounds &&\n      changes.fitBounds.currentValue &&\n      !changes.fitBounds.isFirstChange()\n    ) {\n      this.mapService.fitBounds(\n        changes.fitBounds.currentValue,\n        this.fitBoundsOptions\n      );\n    }\n    if (\n      changes.fitScreenCoordinates &&\n      changes.fitScreenCoordinates.currentValue\n    ) {\n      if (\n        (this.center || this.zoom || this.pitch || this.fitBounds) &&\n        changes.fitScreenCoordinates.isFirstChange()\n      ) {\n        console.warn(\n          '[ngx-mapbox-gl] center / zoom / pitch / fitBounds inputs are being overridden by fitScreenCoordinates input'\n        );\n      }\n      this.mapService.fitScreenCoordinates(\n        changes.fitScreenCoordinates.currentValue,\n        this.bearing ? this.bearing[0] : 0,\n        this.movingOptions\n      );\n    }\n    if (\n      this.centerWithPanTo &&\n      changes.center &&\n      !changes.center.isFirstChange() &&\n      !changes.zoom &&\n      !changes.bearing &&\n      !changes.pitch\n    ) {\n      this.mapService.panTo(this.center!, this.panToOptions);\n    } else if (\n      (changes.center && !changes.center.isFirstChange()) ||\n      (changes.zoom && !changes.zoom.isFirstChange()) ||\n      (changes.bearing &&\n        !changes.bearing.isFirstChange() &&\n        !changes.fitScreenCoordinates) ||\n      (changes.pitch && !changes.pitch.isFirstChange())\n    ) {\n      this.mapService.move(\n        this.movingMethod,\n        this.movingOptions,\n        changes.zoom && this.zoom ? this.zoom[0] : undefined,\n        changes.center ? this.center : undefined,\n        changes.bearing && this.bearing ? this.bearing[0] : undefined,\n        changes.pitch && this.pitch ? this.pitch[0] : undefined\n      );\n    }\n  }\n\n  private warnDeprecatedOutputs() {\n    const dw = deprecationWarning.bind(undefined, MapComponent.name);\n    if (this.resize.observers.length) {\n      dw('resize', 'mapResize');\n    }\n    if (this.remove.observers.length) {\n      dw('remove', 'mapRemove');\n    }\n    if (this.mouseDown.observers.length) {\n      dw('mouseDown', 'mapMouseDown');\n    }\n    if (this.mouseUp.observers.length) {\n      dw('mouseUp', 'mapMouseUp');\n    }\n    if (this.mouseMove.observers.length) {\n      dw('mouseMove', 'mapMouseMove');\n    }\n    if (this.click.observers.length) {\n      dw('click', 'mapClick');\n    }\n    if (this.dblClick.observers.length) {\n      dw('dblClick', 'mapDblClick');\n    }\n    if (this.mouseOver.observers.length) {\n      dw('mouseOver', 'mapMouseOver');\n    }\n    if (this.mouseOut.observers.length) {\n      dw('mouseOut', 'mapMouseOut');\n    }\n    if (this.contextMenu.observers.length) {\n      dw('contextMenu', 'mapContextMenu');\n    }\n    if (this.touchStart.observers.length) {\n      dw('touchStart', 'mapTouchStart');\n    }\n    if (this.touchEnd.observers.length) {\n      dw('touchEnd', 'mapTouchEnd');\n    }\n    if (this.touchMove.observers.length) {\n      dw('touchMove', 'mapTouchMove');\n    }\n    if (this.touchCancel.observers.length) {\n      dw('touchCancel', 'mapTouchCancel');\n    }\n    if (this.wheel.observers.length) {\n      dw('wheel', 'mapWheel');\n    }\n    if (this.dragStart.observers.length) {\n      dw('dragStart', 'mapDragStart');\n    }\n    if (this.drag.observers.length) {\n      dw('drag', 'mapDrag');\n    }\n    if (this.dragEnd.observers.length) {\n      dw('dragEnd', 'mapDragEnd');\n    }\n    if (this.load.observers.length) {\n      dw('load', 'mapLoad');\n    }\n    if (this.error.observers.length) {\n      dw('error', 'mapError');\n    }\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { LngLatLike, Marker, MarkerOptions } from 'mapbox-gl';\nimport { MapService } from '../map/map.service';\nimport { deprecationWarning } from '../utils';\n\n@Component({\n  selector: 'mgl-marker',\n  template: '<div [class]=\"className\" #content><ng-content></ng-content></div>',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MarkerComponent\n  implements OnChanges, OnDestroy, AfterViewInit, OnInit {\n  /* Init input */\n  @Input() offset?: MarkerOptions['offset'];\n  @Input() anchor?: MarkerOptions['anchor'];\n  @Input() clickTolerance?: MarkerOptions['clickTolerance'];\n\n  /* Dynamic input */\n  @Input() feature?: GeoJSON.Feature<GeoJSON.Point>;\n  @Input() lngLat?: LngLatLike;\n  @Input() draggable?: MarkerOptions['draggable'];\n  @Input() popupShown?: boolean;\n  @Input() className: string;\n  @Input() pitchAlignment?: MarkerOptions['pitchAlignment'];\n  @Input() rotationAlignment?: MarkerOptions['rotationAlignment'];\n\n  @Output() markerDragStart = new EventEmitter<Marker>();\n  @Output() markerDragEnd = new EventEmitter<Marker>();\n  @Output() markerDrag = new EventEmitter<Marker>();\n  /**\n   * @deprecated Use markerDragStart instead\n   */\n  @Output() dragStart = new EventEmitter<Marker>();\n  /**\n   * @deprecated Use markerDragEnd instead\n   */\n  @Output() dragEnd = new EventEmitter<Marker>();\n  /**\n   * @deprecated Use markerDrag instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() drag = new EventEmitter<Marker>();\n\n  @ViewChild('content', { static: true }) content: ElementRef;\n\n  markerInstance?: Marker;\n\n  constructor(private mapService: MapService) {}\n\n  ngOnInit() {\n    this.warnDeprecatedOutputs();\n    if (this.feature && this.lngLat) {\n      throw new Error('feature and lngLat input are mutually exclusive');\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.lngLat && !changes.lngLat.isFirstChange()) {\n      this.markerInstance!.setLngLat(this.lngLat!);\n    }\n    if (changes.feature && !changes.feature.isFirstChange()) {\n      this.markerInstance!.setLngLat(\n        this.feature!.geometry!.coordinates as [number, number]\n      );\n    }\n    if (changes.draggable && !changes.draggable.isFirstChange()) {\n      this.markerInstance!.setDraggable(!!this.draggable);\n    }\n    if (changes.popupShown && !changes.popupShown.isFirstChange()) {\n      changes.popupShown.currentValue\n        ? this.markerInstance!.getPopup().addTo(this.mapService.mapInstance)\n        : this.markerInstance!.getPopup().remove();\n    }\n    if (changes.pitchAlignment && !changes.pitchAlignment.isFirstChange()) {\n      this.markerInstance!.setPitchAlignment(\n        changes.pitchAlignment.currentValue\n      );\n    }\n    if (\n      changes.rotationAlignment &&\n      !changes.rotationAlignment.isFirstChange()\n    ) {\n      this.markerInstance!.setRotationAlignment(\n        changes.rotationAlignment.currentValue\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    this.mapService.mapCreated$.subscribe(() => {\n      this.markerInstance = this.mapService.addMarker({\n        markersOptions: {\n          offset: this.offset,\n          anchor: this.anchor,\n          pitchAlignment: this.pitchAlignment,\n          rotationAlignment: this.rotationAlignment,\n          draggable: !!this.draggable,\n          element: this.content.nativeElement,\n          feature: this.feature,\n          lngLat: this.lngLat,\n          clickTolerance: this.clickTolerance,\n        },\n        markersEvents: {\n          markerDragStart: this.markerDragStart,\n          markerDrag: this.markerDrag,\n          markerDragEnd: this.markerDragEnd,\n          dragStart: this.dragStart,\n          drag: this.drag,\n          dragEnd: this.dragEnd,\n        },\n      });\n    });\n  }\n\n  ngOnDestroy() {\n    this.mapService.removeMarker(this.markerInstance!);\n    this.markerInstance = undefined;\n  }\n\n  togglePopup() {\n    this.markerInstance!.togglePopup();\n  }\n\n  updateCoordinates(coordinates: number[]) {\n    this.markerInstance!.setLngLat(coordinates as [number, number]);\n  }\n\n  private warnDeprecatedOutputs() {\n    const dw = deprecationWarning.bind(undefined, MarkerComponent.name);\n    if (this.dragStart.observers.length) {\n      dw('dragStart', 'markerDragStart');\n    }\n    if (this.dragEnd.observers.length) {\n      dw('dragEnd', 'markerDragEnd');\n    }\n    if (this.drag.observers.length) {\n      dw('drag', 'markerDrag');\n    }\n  }\n}\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  Directive,\n  Input,\n  NgZone,\n  OnDestroy,\n  TemplateRef,\n} from '@angular/core';\nimport { MapboxGeoJSONFeature, MapSourceDataEvent } from 'mapbox-gl';\nimport { fromEvent, merge, Subscription } from 'rxjs';\nimport { filter, startWith, switchMap } from 'rxjs/operators';\nimport { MapService } from '../map/map.service';\n\n@Directive({ selector: 'ng-template[mglPoint]' })\nexport class PointDirective {}\n\n@Directive({ selector: 'ng-template[mglClusterPoint]' })\nexport class ClusterPointDirective {}\n\nlet uniqId = 0;\n\n@Component({\n  selector: 'mgl-markers-for-clusters',\n  template: `\n    <mgl-layer\n      [id]=\"layerId\"\n      [source]=\"source\"\n      type=\"circle\"\n      [paint]=\"{ 'circle-radius': 0 }\"\n    ></mgl-layer>\n    <ng-container\n      *ngFor=\"let feature of clusterPoints; trackBy: trackByClusterPoint\"\n    >\n      <ng-container *ngIf=\"feature.properties.cluster\">\n        <mgl-marker [feature]=\"feature\">\n          <ng-container\n            *ngTemplateOutlet=\"clusterPointTpl; context: { $implicit: feature }\"\n          ></ng-container>\n        </mgl-marker>\n      </ng-container>\n      <ng-container *ngIf=\"!feature.properties.cluster\">\n        <mgl-marker [feature]=\"feature\">\n          <ng-container\n            *ngTemplateOutlet=\"pointTpl; context: { $implicit: feature }\"\n          ></ng-container>\n        </mgl-marker>\n      </ng-container>\n    </ng-container>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n})\nexport class MarkersForClustersComponent\n  implements OnDestroy, AfterContentInit {\n  /* Init input */\n  @Input() source: string;\n\n  @ContentChild(PointDirective, { read: TemplateRef, static: false })\n  pointTpl?: TemplateRef<any>;\n  @ContentChild(ClusterPointDirective, { read: TemplateRef, static: false })\n  clusterPointTpl: TemplateRef<any>;\n\n  clusterPoints: MapboxGeoJSONFeature[]; // Incorrect typings\n  layerId = `mgl-markers-for-clusters-${uniqId++}`;\n\n  private sub = new Subscription();\n\n  constructor(\n    private mapService: MapService,\n    private ChangeDetectorRef: ChangeDetectorRef,\n    private zone: NgZone\n  ) {}\n\n  ngAfterContentInit() {\n    const clusterDataUpdate = () =>\n      fromEvent<MapSourceDataEvent>(\n        this.mapService.mapInstance as any,\n        'data'\n      ).pipe(\n        filter(\n          (e) =>\n            e.sourceId === this.source &&\n            e.sourceDataType !== 'metadata' &&\n            this.mapService.mapInstance.isSourceLoaded(this.source)\n        )\n      );\n    const sub = this.mapService.mapCreated$\n      .pipe(\n        switchMap(clusterDataUpdate),\n        switchMap(() =>\n          merge(\n            fromEvent(this.mapService.mapInstance as any, 'move'),\n            fromEvent(this.mapService.mapInstance as any, 'moveend')\n          ).pipe(startWith<any>(undefined))\n        )\n      )\n      .subscribe(() => {\n        this.zone.run(() => {\n          this.updateCluster();\n        });\n      });\n    this.sub.add(sub);\n  }\n\n  ngOnDestroy() {\n    this.sub.unsubscribe();\n  }\n\n  trackByClusterPoint(_index: number, clusterPoint: { id: number }) {\n    return clusterPoint.id;\n  }\n\n  private updateCluster() {\n    // Invalid queryRenderedFeatures typing\n    const params: any = { layers: [this.layerId] };\n    if (!this.pointTpl) {\n      params.filter = ['==', 'cluster', true];\n    }\n    this.clusterPoints = this.mapService.mapInstance.queryRenderedFeatures(\n      params\n    );\n    this.ChangeDetectorRef.markForCheck();\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { LngLatLike, PointLike, Popup, PopupOptions } from 'mapbox-gl';\nimport { MapService } from '../map/map.service';\nimport { MarkerComponent } from '../marker/marker.component';\nimport { deprecationWarning } from '../utils';\n\n@Component({\n  selector: 'mgl-popup',\n  template: '<div #content><ng-content></ng-content></div>',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PopupComponent\n  implements OnChanges, OnDestroy, AfterViewInit, OnInit {\n  /* Init input */\n  @Input() closeButton?: PopupOptions['closeButton'];\n  @Input() closeOnClick?: PopupOptions['closeOnClick'];\n  @Input() closeOnMove?: PopupOptions['closeOnMove'];\n  @Input() focusAfterOpen?: PopupOptions['focusAfterOpen'];\n  @Input() anchor?: PopupOptions['anchor'];\n  @Input() className?: PopupOptions['className'];\n  @Input() maxWidth?: PopupOptions['maxWidth'];\n\n  /* Dynamic input */\n  @Input() feature?: GeoJSON.Feature<GeoJSON.Point>;\n  @Input() lngLat?: LngLatLike;\n  @Input() marker?: MarkerComponent;\n  @Input() offset?: number | PointLike | { [anchor: string]: [number, number] };\n\n  @Output() popupClose = new EventEmitter<void>();\n  @Output() popupOpen = new EventEmitter<void>();\n  /**\n   * @deprecated Use popupClose instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() close = new EventEmitter<void>();\n  /**\n   * @deprecated Use popupOpen instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() open = new EventEmitter<void>();\n\n  @ViewChild('content', { static: true }) content: ElementRef;\n\n  popupInstance?: Popup;\n\n  constructor(private mapService: MapService) {}\n\n  ngOnInit() {\n    this.warnDeprecatedOutputs();\n    if (\n      (this.lngLat && this.marker) ||\n      (this.feature && this.lngLat) ||\n      (this.feature && this.marker)\n    ) {\n      throw new Error('marker, lngLat, feature input are mutually exclusive');\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (\n      (changes.lngLat && !changes.lngLat.isFirstChange()) ||\n      (changes.feature && !changes.feature.isFirstChange())\n    ) {\n      const newlngLat = changes.lngLat\n        ? this.lngLat!\n        : this.feature!.geometry!.coordinates! as [number, number];\n      this.mapService.removePopupFromMap(this.popupInstance!, true);\n      const popupInstanceTmp = this.createPopup();\n      this.mapService.addPopupToMap(\n        popupInstanceTmp,\n        newlngLat,\n        this.popupInstance!.isOpen()\n      );\n      this.popupInstance = popupInstanceTmp;\n    }\n    if (changes.marker && !changes.marker.isFirstChange()) {\n      const previousMarker: MarkerComponent = changes.marker.previousValue;\n      if (previousMarker.markerInstance) {\n        this.mapService.removePopupFromMarker(previousMarker.markerInstance);\n      }\n      if (this.marker && this.marker.markerInstance && this.popupInstance) {\n        this.mapService.addPopupToMarker(\n          this.marker.markerInstance,\n          this.popupInstance\n        );\n      }\n    }\n    if (\n      changes.offset &&\n      !changes.offset.isFirstChange() &&\n      this.popupInstance\n    ) {\n      this.popupInstance.setOffset(this.offset);\n    }\n  }\n\n  ngAfterViewInit() {\n    this.popupInstance = this.createPopup();\n    this.addPopup(this.popupInstance);\n  }\n\n  ngOnDestroy() {\n    if (this.popupInstance) {\n      if (this.lngLat || this.feature) {\n        this.mapService.removePopupFromMap(this.popupInstance);\n      } else if (this.marker && this.marker.markerInstance) {\n        this.mapService.removePopupFromMarker(this.marker.markerInstance);\n      }\n    }\n    this.popupInstance = undefined;\n  }\n\n  private createPopup() {\n    return this.mapService.createPopup(\n      {\n        popupOptions: {\n          closeButton: this.closeButton,\n          closeOnClick: this.closeOnClick,\n          closeOnMove: this.closeOnMove,\n          focusAfterOpen: this.focusAfterOpen,\n          anchor: this.anchor,\n          offset: this.offset,\n          className: this.className,\n          maxWidth: this.maxWidth,\n        },\n        popupEvents: {\n          open: this.open,\n          close: this.close,\n          popupOpen: this.popupOpen,\n          popupClose: this.popupClose,\n        },\n      },\n      this.content.nativeElement\n    );\n  }\n\n  private addPopup(popup: Popup) {\n    this.mapService.mapCreated$.subscribe(() => {\n      if (this.lngLat || this.feature) {\n        this.mapService.addPopupToMap(\n          popup,\n          this.lngLat\n            ? this.lngLat\n            : this.feature!.geometry!.coordinates! as [number, number]\n        );\n      } else if (this.marker && this.marker.markerInstance) {\n        this.mapService.addPopupToMarker(this.marker.markerInstance, popup);\n      } else {\n        throw new Error(\n          'mgl-popup need either lngLat/marker/feature to be set'\n        );\n      }\n    });\n  }\n\n  private warnDeprecatedOutputs() {\n    const dw = deprecationWarning.bind(undefined, PopupComponent.name);\n    if (this.close.observers.length) {\n      dw('close', 'popupClose');\n    }\n    if (this.open.observers.length) {\n      dw('open', 'popupOpen');\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\nimport { CanvasSource, CanvasSourceOptions, CanvasSourceRaw } from 'mapbox-gl';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { MapService } from '../map/map.service';\n\n@Component({\n  selector: 'mgl-canvas-source',\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CanvasSourceComponent\n  implements OnInit, OnDestroy, OnChanges, CanvasSourceOptions {\n  /* Init inputs */\n  @Input() id: string;\n\n  /* Dynamic inputs */\n  @Input() coordinates: CanvasSourceOptions['coordinates'];\n  @Input() canvas: CanvasSourceOptions['canvas'];\n  @Input() animate?: CanvasSourceOptions['animate'];\n\n  private sourceAdded = false;\n  private sub = new Subscription();\n\n  constructor(private mapService: MapService) {}\n\n  ngOnInit() {\n    const sub1 = this.mapService.mapLoaded$.subscribe(() => {\n      this.init();\n      const sub = fromEvent(this.mapService.mapInstance as any, 'styledata')\n        .pipe(filter(() => !this.mapService.mapInstance.getSource(this.id)))\n        .subscribe(() => {\n          this.init();\n        });\n      this.sub.add(sub);\n    });\n    this.sub.add(sub1);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (!this.sourceAdded) {\n      return;\n    }\n    if (\n      (changes.canvas && !changes.canvas.isFirstChange()) ||\n      (changes.animate && !changes.animate.isFirstChange())\n    ) {\n      this.ngOnDestroy();\n      this.ngOnInit();\n    } else if (changes.coordinates && !changes.coordinates.isFirstChange()) {\n      const source = this.mapService.getSource<CanvasSource>(this.id);\n      if (source === undefined){\n        return;\n      }\n      source.setCoordinates(this.coordinates);\n    }\n  }\n\n  ngOnDestroy() {\n    this.sub.unsubscribe();\n    if (this.sourceAdded) {\n      this.mapService.removeSource(this.id);\n      this.sourceAdded = false;\n    }\n  }\n\n  private init() {\n    const source: CanvasSourceRaw = {\n      type: 'canvas',\n      coordinates: this.coordinates,\n      canvas: this.canvas,\n      animate: this.animate,\n    };\n    this.mapService.addSource(this.id, source);\n    this.sourceAdded = true;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\nimport { ImageSource, ImageSourceOptions, ImageSourceRaw } from 'mapbox-gl';\nimport { Subscription } from 'rxjs';\nimport { MapService } from '../map/map.service';\n\n@Component({\n  selector: 'mgl-image-source',\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageSourceComponent\n  implements OnInit, OnDestroy, OnChanges, ImageSourceOptions {\n  /* Init inputs */\n  @Input() id: string;\n\n  /* Dynamic inputs */\n  @Input() url: ImageSourceOptions['url'];\n  @Input() coordinates: ImageSourceOptions['coordinates'];\n\n  private sub: Subscription;\n  private sourceId?: string;\n\n  constructor(private mapService: MapService) {}\n\n  ngOnInit() {\n    this.sub = this.mapService.mapLoaded$.subscribe(() => this.init());\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (this.sourceId === undefined) {\n      return;\n    }\n\n    const source = this.mapService.getSource<ImageSource>(this.sourceId);\n    if (source === undefined){\n      return;\n    }\n    source.updateImage({\n      url: changes.url === undefined ? undefined : this.url,\n      coordinates:\n        changes.coordinates === undefined ? undefined : this.coordinates,\n    });\n  }\n\n  ngOnDestroy() {\n    if (this.sub !== undefined) {\n      this.sub.unsubscribe();\n    }\n\n    if (this.sourceId !== undefined) {\n      this.mapService.removeSource(this.sourceId);\n      this.sourceId = undefined;\n    }\n  }\n\n  private init() {\n    const imageSource: ImageSourceRaw = {\n      type: 'image',\n      url: this.url,\n      coordinates: this.coordinates,\n    };\n    this.mapService.addSource(this.id, imageSource);\n    this.sourceId = this.id;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\nimport { RasterDemSource } from 'mapbox-gl';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { MapService } from '../map/map.service';\n\n@Component({\n  selector: 'mgl-raster-dem-source',\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RasterDemSourceComponent\n  implements OnInit, OnDestroy, OnChanges, RasterDemSource {\n  /* Init inputs */\n  @Input() id: string;\n\n  /* Dynamic inputs */\n  @Input() url?: RasterDemSource['url'];\n  @Input() tiles?: RasterDemSource['tiles'];\n  @Input() bounds?: RasterDemSource['bounds'];\n  @Input() minzoom?: RasterDemSource['minzoom'];\n  @Input() maxzoom?: RasterDemSource['maxzoom'];\n  @Input() tileSize?: RasterDemSource['tileSize'];\n  @Input() attribution?: RasterDemSource['attribution'];\n  @Input() encoding?: RasterDemSource['encoding'];\n\n  type: RasterDemSource['type'] = 'raster-dem';\n\n  private sourceAdded = false;\n  private sub = new Subscription();\n\n  constructor(private mapService: MapService) {}\n\n  ngOnInit() {\n    const sub1 = this.mapService.mapLoaded$.subscribe(() => {\n      this.init();\n      const sub = fromEvent(this.mapService.mapInstance as any, 'styledata')\n        .pipe(filter(() => !this.mapService.mapInstance.getSource(this.id)))\n        .subscribe(() => {\n          this.init();\n        });\n      this.sub.add(sub);\n    });\n    this.sub.add(sub1);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (!this.sourceAdded) {\n      return;\n    }\n    if (\n      (changes.url && !changes.url.isFirstChange()) ||\n      (changes.tiles && !changes.tiles.isFirstChange()) ||\n      (changes.bounds && !changes.bounds.isFirstChange()) ||\n      (changes.minzoom && !changes.minzoom.isFirstChange()) ||\n      (changes.maxzoom && !changes.maxzoom.isFirstChange()) ||\n      (changes.tileSize && !changes.tileSize.isFirstChange()) ||\n      (changes.attribution && !changes.attribution.isFirstChange()) ||\n      (changes.encoding && !changes.encoding.isFirstChange())\n    ) {\n      this.ngOnDestroy();\n      this.ngOnInit();\n    }\n  }\n\n  ngOnDestroy() {\n    this.sub.unsubscribe();\n    if (this.sourceAdded) {\n      this.mapService.removeSource(this.id);\n      this.sourceAdded = false;\n    }\n  }\n\n  private init() {\n    const source: RasterDemSource = {\n      type: this.type,\n      url: this.url,\n      tiles: this.tiles,\n      bounds: this.bounds,\n      minzoom: this.minzoom,\n      maxzoom: this.maxzoom,\n      tileSize: this.tileSize,\n      attribution: this.attribution,\n      encoding: this.encoding,\n    };\n    this.mapService.addSource(this.id, source);\n    this.sourceAdded = true;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\nimport { RasterSource } from 'mapbox-gl';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { MapService } from '../map/map.service';\n\n@Component({\n  selector: 'mgl-raster-source',\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RasterSourceComponent\n  implements OnInit, OnDestroy, OnChanges, RasterSource {\n  /* Init inputs */\n  @Input() id: string;\n\n  /* Dynamic inputs */\n  @Input() url?: RasterSource['url'];\n  @Input() tiles?: RasterSource['tiles'];\n  @Input() bounds?: RasterSource['bounds'];\n  @Input() minzoom?: RasterSource['minzoom'];\n  @Input() maxzoom?: RasterSource['maxzoom'];\n  @Input() tileSize?: RasterSource['tileSize'];\n  @Input() scheme?: RasterSource['scheme'];\n  @Input() attribution?: RasterSource['attribution'];\n\n  type: RasterSource['type'] = 'raster';\n\n  private sourceAdded = false;\n  private sub = new Subscription();\n\n  constructor(private mapService: MapService) {}\n\n  ngOnInit() {\n    const sub1 = this.mapService.mapLoaded$.subscribe(() => {\n      this.init();\n      const sub = fromEvent(this.mapService.mapInstance as any, 'styledata')\n        .pipe(filter(() => !this.mapService.mapInstance.getSource(this.id)))\n        .subscribe(() => {\n          this.init();\n        });\n      this.sub.add(sub);\n    });\n    this.sub.add(sub1);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (!this.sourceAdded) {\n      return;\n    }\n    if (\n      (changes.url && !changes.url.isFirstChange()) ||\n      (changes.tiles && !changes.tiles.isFirstChange()) ||\n      (changes.bounds && !changes.bounds.isFirstChange()) ||\n      (changes.minzoom && !changes.minzoom.isFirstChange()) ||\n      (changes.maxzoom && !changes.maxzoom.isFirstChange()) ||\n      (changes.tileSize && !changes.tileSize.isFirstChange()) ||\n      (changes.scheme && !changes.scheme.isFirstChange()) ||\n      (changes.attribution && !changes.attribution.isFirstChange())\n    ) {\n      this.ngOnDestroy();\n      this.ngOnInit();\n    }\n  }\n\n  ngOnDestroy() {\n    this.sub.unsubscribe();\n    if (this.sourceAdded) {\n      this.mapService.removeSource(this.id);\n      this.sourceAdded = false;\n    }\n  }\n\n  private init() {\n    const source: RasterSource = {\n      type: this.type,\n      url: this.url,\n      tiles: this.tiles,\n      bounds: this.bounds,\n      minzoom: this.minzoom,\n      maxzoom: this.maxzoom,\n      tileSize: this.tileSize,\n      scheme: this.scheme,\n      attribution: this.attribution,\n    };\n    this.mapService.addSource(this.id, source);\n    this.sourceAdded = true;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\nimport { VectorSource, VectorSourceImpl } from 'mapbox-gl';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { MapService } from '../map/map.service';\n\n@Component({\n  selector: 'mgl-vector-source',\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VectorSourceComponent\n  implements OnInit, OnDestroy, OnChanges, VectorSource {\n  /* Init inputs */\n  @Input() id: string;\n\n  /* Dynamic inputs */\n  @Input() url?: VectorSource['url'];\n  @Input() tiles?: VectorSource['tiles'];\n  @Input() bounds?: VectorSource['bounds'];\n  @Input() scheme?: VectorSource['scheme'];\n  @Input() minzoom?: VectorSource['minzoom'];\n  @Input() maxzoom?: VectorSource['maxzoom'];\n  @Input() attribution?: VectorSource['attribution'];\n  @Input() promoteId?: VectorSource['promoteId'];\n\n  type: VectorSource['type'] = 'vector';\n\n  private sourceAdded = false;\n  private sub = new Subscription();\n\n  constructor(private mapService: MapService) {}\n\n  ngOnInit() {\n    const sub1 = this.mapService.mapLoaded$.subscribe(() => {\n      this.init();\n      const sub = fromEvent(this.mapService.mapInstance as any, 'styledata')\n        .pipe(filter(() => !this.mapService.mapInstance.getSource(this.id)))\n        .subscribe(() => {\n          this.init();\n        });\n      this.sub.add(sub);\n    });\n    this.sub.add(sub1);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (!this.sourceAdded) {\n      return;\n    }\n\n    if (\n      (changes.bounds && !changes.bounds.isFirstChange()) ||\n      (changes.scheme && !changes.scheme.isFirstChange()) ||\n      (changes.minzoom && !changes.minzoom.isFirstChange()) ||\n      (changes.maxzoom && !changes.maxzoom.isFirstChange()) ||\n      (changes.attribution && !changes.attribution.isFirstChange()) ||\n      (changes.promoteId && !changes.promoteId.isFirstChange())\n    ) {\n      this.ngOnDestroy();\n      this.ngOnInit();\n    } else if (\n      (changes.url && !changes.url.isFirstChange()) ||\n      (changes.tiles && !changes.tiles.isFirstChange())\n    ) {\n      const source = this.mapService.getSource<VectorSourceImpl>(this.id);\n      if (source === undefined){\n        return;\n      }\n      if (changes.url && this.url) {\n        source.setUrl(this.url);\n      }\n\n      if (changes.tiles && this.tiles) {\n        source.setTiles(this.tiles);\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this.sub.unsubscribe();\n    if (this.sourceAdded) {\n      this.mapService.removeSource(this.id);\n      this.sourceAdded = false;\n    }\n  }\n\n  private init() {\n    const source: VectorSource = {\n      type: this.type,\n      url: this.url,\n      tiles: this.tiles,\n      bounds: this.bounds,\n      scheme: this.scheme,\n      minzoom: this.minzoom,\n      maxzoom: this.maxzoom,\n      attribution: this.attribution,\n      promoteId: this.promoteId,\n    };\n    this.mapService.addSource(this.id, source);\n    this.sourceAdded = true;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\nimport { VideoSource, VideoSourceOptions, VideoSourceRaw } from 'mapbox-gl';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { MapService } from '../map/map.service';\n\n@Component({\n  selector: 'mgl-video-source',\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VideoSourceComponent\n  implements OnInit, OnDestroy, OnChanges, VideoSourceOptions {\n  /* Init inputs */\n  @Input() id: string;\n\n  /* Dynamic inputs */\n  @Input() urls: VideoSourceOptions['urls'];\n  @Input() coordinates: VideoSourceOptions['coordinates'];\n\n  private sourceAdded = false;\n  private sub = new Subscription();\n\n  constructor(private mapService: MapService) {}\n\n  ngOnInit() {\n    const sub1 = this.mapService.mapLoaded$.subscribe(() => {\n      this.init();\n      const sub = fromEvent(this.mapService.mapInstance as any, 'styledata')\n        .pipe(filter(() => !this.mapService.mapInstance.getSource(this.id)))\n        .subscribe(() => {\n          this.init();\n        });\n      this.sub.add(sub);\n    });\n    this.sub.add(sub1);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (!this.sourceAdded) {\n      return;\n    }\n\n    if (changes.urls && !changes.urls.isFirstChange()) {\n      this.ngOnDestroy();\n      this.ngOnInit();\n    } else if (changes.coordinates && !changes.coordinates.isFirstChange()) {\n      const source = this.mapService.getSource<VideoSource>(this.id);\n      if (source === undefined){\n        return;\n      }\n      source.setCoordinates(this.coordinates!);\n    }\n  }\n\n  ngOnDestroy() {\n    this.sub.unsubscribe();\n    if (this.sourceAdded) {\n      this.mapService.removeSource(this.id);\n      this.sourceAdded = false;\n    }\n  }\n\n  private init() {\n    const source: VideoSourceRaw = {\n      type: 'video',\n      urls: this.urls,\n      coordinates: this.coordinates,\n    };\n    this.mapService.addSource(this.id, source);\n    this.sourceAdded = true;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { AttributionControlDirective } from './control/attribution-control.directive';\nimport { ControlComponent } from './control/control.component';\nimport { FullscreenControlDirective } from './control/fullscreen-control.directive';\nimport { GeolocateControlDirective } from './control/geolocate-control.directive';\nimport { NavigationControlDirective } from './control/navigation-control.directive';\nimport { ScaleControlDirective } from './control/scale-control.directive';\nimport { DraggableDirective } from './draggable/draggable.directive';\nimport { ImageComponent } from './image/image.component';\nimport { LayerComponent } from './layer/layer.component';\nimport { MapComponent } from './map/map.component';\nimport { MAPBOX_API_KEY } from './map/map.service';\nimport { MarkerComponent } from './marker/marker.component';\nimport {\n  ClusterPointDirective,\n  PointDirective,\n  MarkersForClustersComponent,\n} from './markers-for-clusters/markers-for-clusters.component';\nimport { PopupComponent } from './popup/popup.component';\nimport { CanvasSourceComponent } from './source/canvas-source.component';\nimport { FeatureComponent } from './source/geojson/feature.component';\nimport { GeoJSONSourceComponent } from './source/geojson/geojson-source.component';\nimport { ImageSourceComponent } from './source/image-source.component';\nimport { RasterDemSourceComponent } from './source/raster-dem-source.component';\nimport { RasterSourceComponent } from './source/raster-source.component';\nimport { VectorSourceComponent } from './source/vector-source.component';\nimport { VideoSourceComponent } from './source/video-source.component';\n\nexport const MAPBOX_GEOCODER_API_KEY = new InjectionToken('MapboxApiKey');\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [\n    MapComponent,\n    LayerComponent,\n    DraggableDirective,\n    ImageComponent,\n    VectorSourceComponent,\n    GeoJSONSourceComponent,\n    RasterDemSourceComponent,\n    RasterSourceComponent,\n    ImageSourceComponent,\n    VideoSourceComponent,\n    CanvasSourceComponent,\n    FeatureComponent,\n    MarkerComponent,\n    PopupComponent,\n    ControlComponent,\n    FullscreenControlDirective,\n    NavigationControlDirective,\n    GeolocateControlDirective,\n    AttributionControlDirective,\n    ScaleControlDirective,\n    PointDirective,\n    ClusterPointDirective,\n    MarkersForClustersComponent,\n  ],\n  exports: [\n    MapComponent,\n    LayerComponent,\n    DraggableDirective,\n    ImageComponent,\n    VectorSourceComponent,\n    GeoJSONSourceComponent,\n    RasterDemSourceComponent,\n    RasterSourceComponent,\n    ImageSourceComponent,\n    VideoSourceComponent,\n    CanvasSourceComponent,\n    FeatureComponent,\n    MarkerComponent,\n    PopupComponent,\n    ControlComponent,\n    FullscreenControlDirective,\n    NavigationControlDirective,\n    GeolocateControlDirective,\n    AttributionControlDirective,\n    ScaleControlDirective,\n    PointDirective,\n    ClusterPointDirective,\n    MarkersForClustersComponent,\n  ],\n})\nexport class NgxMapboxGLModule {\n  static withConfig(config: {\n    accessToken: string;\n    geocoderAccessToken?: string;\n  }): ModuleWithProviders<NgxMapboxGLModule> {\n    return {\n      ngModule: NgxMapboxGLModule,\n      providers: [\n        {\n          provide: MAPBOX_API_KEY,\n          useValue: config.accessToken,\n        },\n        {\n          provide: MAPBOX_GEOCODER_API_KEY,\n          useValue: config.geocoderAccessToken || config.accessToken,\n        },\n      ],\n    };\n  }\n}\n","/*\n * Public API Surface of ngx-mapbox-gl\n */\n\n// Expose NgxMapboxGlModule and GeocoderControlDirective provided injection tokens\nexport * from './lib/ngx-mapbox-gl.module';\n\n// Expose control component to allow custom directives\nexport * from './lib/control/control.component';\nexport * from './lib/draggable/draggable.directive';\nexport * from './lib/layer/layer.component';\nexport * from './lib/image/image.component';\nexport * from './lib/source/vector-source.component';\nexport * from './lib/source/video-source.component';\nexport * from './lib/source/canvas-source.component';\nexport * from './lib/source/image-source.component';\nexport * from './lib/source/raster-dem-source.component';\nexport * from './lib/source/raster-source.component';\nexport * from './lib/source/geojson/feature.component';\nexport * from './lib/marker/marker.component';\nexport * from './lib/popup/popup.component';\nexport * from './lib/control/fullscreen-control.directive';\nexport * from './lib/control/geolocate-control.directive';\nexport * from './lib/control/navigation-control.directive';\nexport * from './lib/control/attribution-control.directive';\nexport * from './lib/control/scale-control.directive';\nexport * from './lib/markers-for-clusters/markers-for-clusters.component';\n\n// Expose MapService for ngx-mapbox-gl extensions\nexport * from './lib/map/map.service';\nexport * from './lib/map/map.component';\n\n// Expose GeoJSONSourceComponent to access cluster functions\nexport * from './lib/source/geojson/geojson-source.component';\n\nexport * from './lib/map/map.types';\n\n// Expose deprecation warning\nexport * from './lib/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.MapService","i2.ControlComponent","i2.FeatureComponent","i2.LayerComponent","i3.MarkerComponent"],"mappings":"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"}