@maplibre/ngx-maplibre-gl
Version:
A Angular binding of maplibre-gl
1 lines • 236 kB
Source Map (JSON)
{"version":3,"file":"maplibre-ngx-maplibre-gl.mjs","sources":["../../../projects/ngx-maplibre-gl/src/lib/shared/utils/functions/object.fn.ts","../../../projects/ngx-maplibre-gl/src/lib/map/map.service.ts","../../../projects/ngx-maplibre-gl/src/lib/control/control.component.ts","../../../projects/ngx-maplibre-gl/src/lib/control/attribution-control.directive.ts","../../../projects/ngx-maplibre-gl/src/lib/control/fullscreen-control.directive.ts","../../../projects/ngx-maplibre-gl/src/lib/control/geolocate-control.directive.ts","../../../projects/ngx-maplibre-gl/src/lib/control/navigation-control.directive.ts","../../../projects/ngx-maplibre-gl/src/lib/control/scale-control.directive.ts","../../../projects/ngx-maplibre-gl/src/lib/control/terrain-control.directive.ts","../../../projects/ngx-maplibre-gl/src/lib/source/source.directive.ts","../../../projects/ngx-maplibre-gl/src/lib/source/geojson/geojson-source.component.ts","../../../projects/ngx-maplibre-gl/src/lib/source/geojson/feature.component.ts","../../../projects/ngx-maplibre-gl/src/lib/draggable/draggable.directive.ts","../../../projects/ngx-maplibre-gl/src/lib/image/image.component.ts","../../../projects/ngx-maplibre-gl/src/lib/layer/layer.component.ts","../../../projects/ngx-maplibre-gl/src/lib/map/map.component.ts","../../../projects/ngx-maplibre-gl/src/lib/marker/marker.component.ts","../../../projects/ngx-maplibre-gl/src/lib/markers-for-clusters/markers-for-clusters.component.ts","../../../projects/ngx-maplibre-gl/src/lib/popup/popup.component.ts","../../../projects/ngx-maplibre-gl/src/lib/source/canvas-source.component.ts","../../../projects/ngx-maplibre-gl/src/lib/source/image-source.component.ts","../../../projects/ngx-maplibre-gl/src/lib/source/raster-dem-source.component.ts","../../../projects/ngx-maplibre-gl/src/lib/source/raster-source.component.ts","../../../projects/ngx-maplibre-gl/src/lib/source/vector-source.component.ts","../../../projects/ngx-maplibre-gl/src/lib/source/video-source.component.ts","../../../projects/ngx-maplibre-gl/src/lib/ngx-maplibre-gl.module.ts","../../../projects/ngx-maplibre-gl/src/lib/control/globe-control.directive.ts","../../../projects/ngx-maplibre-gl/src/public_api.ts","../../../projects/ngx-maplibre-gl/src/maplibre-ngx-maplibre-gl.ts"],"sourcesContent":["export const keepAvailableObjectValues = <T extends object>(object: T): Required<T> => {\n return Object.keys(object).reduce((acc, curr) => {\n const tKey = curr as keyof T;\n if (object[tKey] === undefined) {\n return acc;\n }\n return { ...acc, [tKey]: object[tKey] };\n }, {} as Required<T>);\n};\n","import {\n Injectable,\n NgZone,\n OutputEmitterRef,\n inject,\n signal,\n} from '@angular/core';\nimport {\n type CameraOptions,\n type FlyToOptions,\n type LngLatLike,\n type MapOptions,\n type MarkerOptions,\n type PopupOptions,\n Map as MaplibreMap,\n Marker,\n Popup,\n type Evented,\n type AnimationOptions,\n type LayerSpecification,\n type StyleSpecification,\n type LngLatBoundsLike,\n type PointLike,\n type IControl,\n type SourceSpecification,\n type FitBoundsOptions,\n type Source,\n type BackgroundLayerSpecification,\n type FillLayerSpecification,\n type FillExtrusionLayerSpecification,\n type LineLayerSpecification,\n type SymbolLayerSpecification,\n type RasterLayerSpecification,\n type CircleLayerSpecification,\n type FilterSpecification,\n type TerrainSpecification,\n type QueryRenderedFeaturesOptions,\n type ControlPosition,\n type Subscription,\n type MapLayerEventType,\n type ProjectionSpecification\n} from 'maplibre-gl';\nimport { AsyncSubject } from 'rxjs';\nimport type {\n LayerEvents,\n MapEvent,\n MapImageData,\n MapImageOptions,\n} from './map.types';\nimport { keepAvailableObjectValues } from '../shared/utils/functions/object.fn';\n\nexport interface SetupMap {\n mapOptions: Omit<MapOptions, 'bearing' | 'pitch' | 'zoom'> & {\n bearing?: [number];\n pitch?: [number];\n zoom?: [number];\n terrain?: TerrainSpecification;\n projection?: ProjectionSpecification;\n };\n mapEvents: MapEvent;\n}\n\nexport interface SetupLayer {\n layerOptions: LayerSpecification;\n layerEvents: LayerEvents;\n}\n\nexport interface SetupPopup {\n popupOptions: PopupOptions;\n popupEvents: {\n popupOpen: OutputEmitterRef<void>;\n popupClose: OutputEmitterRef<void>;\n };\n}\n\n/**\n * @private\n */\nexport interface SetupMarkerOptions extends MarkerOptions {\n element: HTMLElement;\n feature?: GeoJSON.Feature<GeoJSON.Point>;\n lngLat?: LngLatLike;\n}\n\nexport interface SetupMarker {\n markersOptions: SetupMarkerOptions;\n markersEvents: {\n markerDragStart: OutputEmitterRef<Marker>;\n markerDrag: OutputEmitterRef<Marker>;\n markerDragEnd: OutputEmitterRef<Marker>;\n };\n}\n\nexport type MovingOptions =\n | FlyToOptions\n | (AnimationOptions & CameraOptions)\n | CameraOptions;\n\n/**\n * @private\n */\n@Injectable()\nexport class MapService {\n private readonly zone = inject(NgZone);\n\n mapInstance: MaplibreMap;\n mapEvents: MapEvent;\n private readonly subscriptionsPerInstance = new Map<Evented, Subscription[]>();\n\n private readonly mapCreated = new AsyncSubject<void>();\n private readonly mapLoaded = new AsyncSubject<void>();\n private readonly markersToRemove = signal<Marker[]>([]);\n private readonly popupsToRemove = signal<Popup[]>([]);\n private readonly imageIdsToRemove = signal<string[]>([]);\n\n readonly mapCreated$ = this.mapCreated.asObservable();\n readonly mapLoaded$ = this.mapLoaded.asObservable();\n\n setup(options: SetupMap) {\n // Workaround rollup issue\n this.createMap(options.mapOptions as MapOptions);\n this.hookEvents(options.mapEvents);\n this.mapEvents = options.mapEvents;\n this.mapCreated.next(undefined);\n this.mapCreated.complete();\n\n if (options.mapOptions.terrain || options.mapOptions.projection) {\n this.mapInstance.on('load', () => {\n if (options.mapOptions.projection) {\n this.setProjection(options.mapOptions.projection!);\n }\n if (options.mapOptions.terrain) {\n this.setTerrain(options.mapOptions.terrain!);\n }\n });\n }\n }\n\n destroyMap() {\n if (this.mapInstance) {\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: StyleSpecification) {\n return this.zone.runOutsideAngular(() => {\n this.mapInstance.setStyle(style);\n });\n }\n\n updateMaxBounds(maxBounds: LngLatBoundsLike) {\n return this.zone.runOutsideAngular(() => {\n this.mapInstance.setMaxBounds(maxBounds);\n });\n }\n\n setProjection(options: ProjectionSpecification) {\n return this.zone.runOutsideAngular(() => {\n this.mapInstance.setProjection(options);\n });\n }\n\n setTerrain(options: TerrainSpecification) {\n return this.zone.runOutsideAngular(() => {\n this.mapInstance.setTerrain(options);\n });\n }\n\n getTerrain(): TerrainSpecification | null {\n return this.zone.runOutsideAngular(() => {\n return this.mapInstance.getTerrain();\n });\n }\n\n setCenterElevation(elevation: number) {\n return this.zone.runOutsideAngular(() => {\n this.mapInstance.setCenterElevation(elevation);\n });\n }\n\n changeCanvasCursor(cursor: string) {\n const canvas = this.mapInstance.getCanvasContainer();\n canvas.style.cursor = cursor;\n }\n\n queryRenderedFeatures(\n pointOrBox?:\n | PointLike\n | [PointLike, PointLike]\n | QueryRenderedFeaturesOptions,\n parameters?: QueryRenderedFeaturesOptions\n ): GeoJSON.Feature<GeoJSON.GeometryObject>[] {\n return this.mapInstance.queryRenderedFeatures(pointOrBox, parameters);\n }\n\n panTo(center: LngLatLike, options?: 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?: LngLatLike,\n bearing?: number,\n pitch?: number,\n roll?: 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 roll: roll != null ? roll : this.mapInstance.getRoll(),\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 = <keyof LayerSpecification>key;\n if (layer.layerOptions[tkey] === undefined) {\n delete layer.layerOptions[tkey];\n }\n });\n this.mapInstance.addLayer(\n layer.layerOptions as LayerSpecification,\n before\n );\n if (!bindEvents) {\n return;\n }\n const subscriptions: Subscription[] = [];\n subscriptions.push(this.createSubscriptionForLayer(layer.layerOptions.id, 'click', layer.layerEvents.layerClick));\n subscriptions.push(this.createSubscriptionForLayer(layer.layerOptions.id, 'dblclick', layer.layerEvents.layerDblClick));\n subscriptions.push(this.createSubscriptionForLayer(layer.layerOptions.id, 'mousedown', layer.layerEvents.layerMouseDown));\n subscriptions.push(this.createSubscriptionForLayer(layer.layerOptions.id, 'mouseup', layer.layerEvents.layerMouseUp));\n subscriptions.push(this.createSubscriptionForLayer(layer.layerOptions.id, 'mouseenter', layer.layerEvents.layerMouseEnter));\n subscriptions.push(this.createSubscriptionForLayer(layer.layerOptions.id, 'mouseleave', layer.layerEvents.layerMouseLeave));\n subscriptions.push(this.createSubscriptionForLayer(layer.layerOptions.id, 'mousemove', layer.layerEvents.layerMouseMove));\n subscriptions.push(this.createSubscriptionForLayer(layer.layerOptions.id, 'mouseover', layer.layerEvents.layerMouseOver));\n subscriptions.push(this.createSubscriptionForLayer(layer.layerOptions.id, 'mouseout', layer.layerEvents.layerMouseOut));\n subscriptions.push(this.createSubscriptionForLayer(layer.layerOptions.id, 'contextmenu', layer.layerEvents.layerContextMenu));\n subscriptions.push(this.createSubscriptionForLayer(layer.layerOptions.id, 'touchstart', layer.layerEvents.layerTouchStart));\n subscriptions.push(this.createSubscriptionForLayer(layer.layerOptions.id, 'touchend', layer.layerEvents.layerTouchEnd));\n subscriptions.push(this.createSubscriptionForLayer(layer.layerOptions.id, 'touchcancel', layer.layerEvents.layerTouchCancel));\n const layerInstance = this.mapInstance.getLayer(layer.layerOptions.id);\n if (layerInstance) {\n this.subscriptionsPerInstance.set(layerInstance, subscriptions);\n }\n });\n }\n\n removeLayer(layerId: string) {\n this.zone.runOutsideAngular(() => {\n const layerInstance = this.mapInstance.getLayer(layerId);\n if (layerInstance != null) {\n const subscriptions = this.subscriptionsPerInstance.get(layerInstance) || [];\n for (const subscription of subscriptions) {\n subscription.unsubscribe();\n }\n this.subscriptionsPerInstance.delete(layerInstance);\n this.mapInstance.removeLayer(layerId);\n }\n });\n }\n\n addMarker(marker: SetupMarker) {\n const options: MarkerOptions = {\n offset: marker.markersOptions.offset,\n anchor: marker.markersOptions.anchor,\n color: marker.markersOptions.color,\n scale: marker.markersOptions.scale,\n draggable: !!marker.markersOptions.draggable,\n rotationAlignment: marker.markersOptions.rotationAlignment,\n rotation: marker.markersOptions.rotation,\n pitchAlignment: marker.markersOptions.pitchAlignment,\n clickTolerance: marker.markersOptions.clickTolerance,\n element:\n marker.markersOptions.element.childNodes.length > 0\n ? marker.markersOptions.element\n : undefined,\n opacity: marker.markersOptions.opacity,\n opacityWhenCovered: marker.markersOptions.opacityWhenCovered,\n subpixelPositioning: marker.markersOptions.subpixelPositioning,\n };\n\n const markerInstance = new Marker(options);\n markerInstance.on('dragstart', (event: { target: Marker }) => {\n if (event) {\n const { target } = event;\n this.zone.run(() => {\n marker.markersEvents.markerDragStart.emit(target);\n });\n }\n });\n\n markerInstance.on('drag', (event: { target: Marker }) => {\n if (event) {\n const { target } = event;\n this.zone.run(() => marker.markersEvents.markerDrag.emit(target));\n }\n });\n markerInstance.on('dragend', (event: { target: Marker }) => {\n if (event) {\n const { target } = event;\n this.zone.run(() => marker.markersEvents.markerDragEnd.emit(target));\n }\n });\n const lngLat: LngLatLike = marker.markersOptions.feature\n ? <[number, number]>marker.markersOptions.feature.geometry!.coordinates\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: Marker) {\n this.markersToRemove.update((markers) => [...markers, marker]);\n }\n\n createPopup(popup: SetupPopup, element: Node) {\n return this.zone.runOutsideAngular(() => {\n const popupOptions = keepAvailableObjectValues(popup.popupOptions);\n const popupInstance = new Popup(popupOptions);\n popupInstance.setDOMContent(element);\n const subscriptions: Subscription[] = [];\n subscriptions.push(this.createSubscriptionForPopup(popupInstance, 'open', popup.popupEvents.popupOpen));\n subscriptions.push(this.createSubscriptionForPopup(popupInstance, 'close', popup.popupEvents.popupClose));\n this.subscriptionsPerInstance.set(popupInstance, subscriptions);\n return popupInstance;\n });\n }\n\n addPopupToMap(popup: Popup, lngLat: LngLatLike) {\n return this.zone.runOutsideAngular(() => {\n popup.setLngLat(lngLat);\n popup.addTo(this.mapInstance);\n });\n }\n\n addPopupToMarker(marker: Marker, popup: Popup) {\n return this.zone.runOutsideAngular(() => {\n marker.setPopup(popup);\n });\n }\n\n removePopupFromMap(popup: Popup) {\n if (this.subscriptionsPerInstance.has(popup)) {\n const subscriptions = this.subscriptionsPerInstance.get(popup) || [];\n for (const subscription of subscriptions) {\n subscription.unsubscribe();\n }\n this.subscriptionsPerInstance.delete(popup);\n }\n this.popupsToRemove.update((popups) => [...popups, popup]);\n }\n\n removePopupFromMarker(marker: Marker) {\n return this.zone.runOutsideAngular(() => {\n const popup = marker.getPopup();\n if (this.subscriptionsPerInstance.has(popup)) {\n const subscriptions = this.subscriptionsPerInstance.get(popup) || [];\n for (const subscription of subscriptions) {\n subscription.unsubscribe();\n }\n this.subscriptionsPerInstance.delete(popup);\n }\n marker.setPopup(undefined);\n });\n }\n\n addControl(control: IControl, position?: ControlPosition) {\n return this.zone.runOutsideAngular(() => {\n this.mapInstance.addControl(control, position);\n });\n }\n\n removeControl(control: IControl) {\n return this.zone.runOutsideAngular(() => {\n this.mapInstance.removeControl(control);\n });\n }\n\n async loadAndAddImage(\n imageId: string,\n url: string,\n options?: MapImageOptions\n ) {\n return this.zone.runOutsideAngular(async () => {\n const image = await this.mapInstance.loadImage(url);\n this.addImage(imageId, image.data, options);\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.update((imagesIds) => [...imagesIds, imageId]);\n }\n\n addSource(sourceId: string, source: SourceSpecification) {\n return this.zone.runOutsideAngular(() => {\n Object.keys(source).forEach(\n (key) =>\n (source as any)[key] === undefined && delete (source as any)[key]\n );\n this.mapInstance.addSource(sourceId, source);\n });\n }\n\n getSource<T extends Source>(sourceId: string): T {\n return <T>this.mapInstance.getSource(sourceId);\n }\n\n removeSource(sourceId: string) {\n this.zone.runOutsideAngular(() => {\n this.findLayersBySourceId(sourceId).forEach((layer) =>\n this.removeLayer(layer.id)\n );\n this.mapInstance.removeSource(sourceId);\n });\n }\n\n setAllLayerPaintProperty(\n layerId: string,\n paint:\n | BackgroundLayerSpecification['paint']\n | FillLayerSpecification['paint']\n | FillExtrusionLayerSpecification['paint']\n | LineLayerSpecification['paint']\n | SymbolLayerSpecification['paint']\n | RasterLayerSpecification['paint']\n | CircleLayerSpecification['paint']\n ) {\n return this.zone.runOutsideAngular(() => {\n Object.keys(paint as any).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 | BackgroundLayerSpecification['layout']\n | FillLayerSpecification['layout']\n | FillExtrusionLayerSpecification['layout']\n | LineLayerSpecification['layout']\n | SymbolLayerSpecification['layout']\n | RasterLayerSpecification['layout']\n | CircleLayerSpecification['layout']\n ) {\n return this.zone.runOutsideAngular(() => {\n Object.keys(layout as any).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(\n layerId: string,\n filter: FilterSpecification | null | undefined\n ) {\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(bounds: LngLatBoundsLike, options?: FitBoundsOptions) {\n return this.zone.runOutsideAngular(() => {\n this.mapInstance.fitBounds(bounds, options);\n });\n }\n\n fitScreenCoordinates(\n points: [PointLike, PointLike],\n bearing: number,\n options?: AnimationOptions & 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 clearMapElements() {\n this.zone.runOutsideAngular(() => {\n this.removeMarkers();\n this.removePopups();\n this.removeImages();\n });\n }\n\n private createMap(options: MapOptions) {\n NgZone.assertNotInAngularZone();\n\n const mapOptions = keepAvailableObjectValues<MapOptions>(options);\n\n this.mapInstance = new MaplibreMap(mapOptions);\n\n const isIEorEdge =\n window && /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\n if (isIEorEdge) {\n this.mapInstance.setStyle(options.style!);\n }\n }\n\n private removeMarkers() {\n for (const marker of this.markersToRemove()) {\n marker.remove();\n }\n this.markersToRemove.set([]);\n }\n\n private removePopups() {\n for (const popup of this.popupsToRemove()) {\n popup.remove();\n }\n this.popupsToRemove.set([]);\n }\n\n private removeImages() {\n for (const imageId of this.imageIdsToRemove()) {\n this.mapInstance.removeImage(imageId);\n }\n this.imageIdsToRemove.set([]);\n }\n\n private findLayersBySourceId(sourceId: string): LayerSpecification[] {\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 });\n });\n this.mapInstance.on('resize', (evt) =>\n this.zone.run(() => {\n events.mapResize.emit(evt);\n })\n );\n this.mapInstance.on('remove', (evt) =>\n this.zone.run(() => {\n events.mapRemove.emit(evt);\n })\n );\n this.mapInstance.on('mousedown', (evt) =>\n this.zone.run(() => {\n events.mapMouseDown.emit(evt);\n })\n );\n this.mapInstance.on('mouseup', (evt) =>\n this.zone.run(() => {\n events.mapMouseUp.emit(evt);\n })\n );\n this.mapInstance.on('mousemove', (evt) =>\n this.zone.run(() => {\n events.mapMouseMove.emit(evt);\n })\n );\n this.mapInstance.on('click', (evt) =>\n this.zone.run(() => {\n events.mapClick.emit(evt);\n })\n );\n this.mapInstance.on('dblclick', (evt) =>\n this.zone.run(() => {\n events.mapDblClick.emit(evt);\n })\n );\n this.mapInstance.on('mouseover', (evt) =>\n this.zone.run(() => {\n events.mapMouseOver.emit(evt);\n })\n );\n this.mapInstance.on('mouseout', (evt) =>\n this.zone.run(() => {\n events.mapMouseOut.emit(evt);\n })\n );\n this.mapInstance.on('contextmenu', (evt) =>\n this.zone.run(() => {\n events.mapContextMenu.emit(evt);\n })\n );\n this.mapInstance.on('touchstart', (evt) =>\n this.zone.run(() => {\n events.mapTouchStart.emit(evt);\n })\n );\n this.mapInstance.on('touchend', (evt) =>\n this.zone.run(() => {\n events.mapTouchEnd.emit(evt);\n })\n );\n this.mapInstance.on('touchmove', (evt) =>\n this.zone.run(() => {\n events.mapTouchMove.emit(evt);\n })\n );\n this.mapInstance.on('touchcancel', (evt) =>\n this.zone.run(() => {\n events.mapTouchCancel.emit(evt);\n })\n );\n this.mapInstance.on('wheel', (evt) =>\n this.zone.run(() => {\n events.mapWheel.emit(evt);\n })\n );\n this.mapInstance.on('movestart', (evt) =>\n this.zone.run(() => events.moveStart.emit(evt))\n );\n this.mapInstance.on('move', (evt) =>\n this.zone.run(() => events.move.emit(evt))\n );\n this.mapInstance.on('moveend', (evt) =>\n this.zone.run(() => events.moveEnd.emit(evt))\n );\n this.mapInstance.on('dragstart', (evt) =>\n this.zone.run(() => {\n events.mapDragStart.emit(evt);\n })\n );\n this.mapInstance.on('drag', (evt) =>\n this.zone.run(() => {\n events.mapDrag.emit(evt);\n })\n );\n this.mapInstance.on('dragend', (evt) =>\n this.zone.run(() => {\n events.mapDragEnd.emit(evt);\n })\n );\n this.mapInstance.on('zoomstart', (evt) =>\n this.zone.run(() => events.zoomStart.emit(evt))\n );\n this.mapInstance.on('zoom', (evt) =>\n this.zone.run(() => events.zoomEvt.emit(evt))\n );\n this.mapInstance.on('zoomend', (evt) =>\n this.zone.run(() => events.zoomEnd.emit(evt))\n );\n this.mapInstance.on('rotatestart', (evt) =>\n this.zone.run(() => events.rotateStart.emit(evt))\n );\n this.mapInstance.on('rotate', (evt) =>\n this.zone.run(() => events.rotate.emit(evt))\n );\n this.mapInstance.on('rotateend', (evt) =>\n this.zone.run(() => events.rotateEnd.emit(evt))\n );\n this.mapInstance.on('pitchstart', (evt) =>\n this.zone.run(() => events.pitchStart.emit(evt))\n );\n this.mapInstance.on('pitch', (evt) =>\n this.zone.run(() => events.pitchEvt.emit(evt))\n );\n this.mapInstance.on('pitchend', (evt) =>\n this.zone.run(() => events.pitchEnd.emit(evt))\n );\n this.mapInstance.on('boxzoomstart', (evt) =>\n this.zone.run(() => events.boxZoomStart.emit(evt))\n );\n this.mapInstance.on('boxzoomend', (evt) =>\n this.zone.run(() => events.boxZoomEnd.emit(evt))\n );\n this.mapInstance.on('boxzoomcancel', (evt) =>\n this.zone.run(() => events.boxZoomCancel.emit(evt))\n );\n this.mapInstance.on('webglcontextlost', (evt) =>\n this.zone.run(() => events.webGlContextLost.emit(evt))\n );\n this.mapInstance.on('webglcontextrestored', (evt) =>\n this.zone.run(() => events.webGlContextRestored.emit(evt))\n );\n this.mapInstance.on('render', (evt) =>\n this.zone.run(() => events.render.emit(evt))\n );\n this.mapInstance.on('error', (evt) =>\n this.zone.run(() => {\n events.mapError.emit(evt);\n })\n );\n this.mapInstance.on('data', (evt) =>\n this.zone.run(() => events.data.emit(evt))\n );\n this.mapInstance.on('styledata', (evt) =>\n this.zone.run(() => events.styleData.emit(evt))\n );\n this.mapInstance.on('sourcedata', (evt) =>\n this.zone.run(() => events.sourceData.emit(evt))\n );\n this.mapInstance.on('dataloading', (evt) =>\n this.zone.run(() => events.dataLoading.emit(evt))\n );\n this.mapInstance.on('styledataloading', (evt) =>\n this.zone.run(() => events.styleDataLoading.emit(evt))\n );\n this.mapInstance.on('sourcedataloading', (evt) =>\n this.zone.run(() => events.sourceDataLoading.emit(evt))\n );\n this.mapInstance.on('styleimagemissing', (evt) =>\n this.zone.run(() => events.styleImageMissing.emit(evt))\n );\n this.mapInstance.on('idle', (evt) =>\n this.zone.run(() => events.idle.emit(evt))\n );\n }\n\n private createSubscriptionForLayer(layerId: string, event: keyof MapLayerEventType, emitter: OutputEmitterRef<any>): Subscription {\n const handler = (evt: any) => {\n this.zone.run(() => {\n emitter.emit(evt);\n });\n }\n this.mapInstance.on(event, layerId, handler);\n return {\n unsubscribe: () => {\n this.mapInstance.off(event, layerId, handler);\n },\n }\n }\n\n private createSubscriptionForPopup(popup: Popup, event: \"open\" | \"close\", emitter: OutputEmitterRef<any>): Subscription {\n const handler = (evt: any) => {\n this.zone.run(() => {\n emitter.emit(evt);\n });\n }\n popup.on(event, handler);\n return {\n unsubscribe: () => {\n popup.off(event, handler);\n },\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n afterNextRender,\n inject,\n input,\n viewChild,\n} from '@angular/core';\nimport type { ControlPosition, IControl } from 'maplibre-gl';\nimport { MapService } from '../map/map.service';\n\nexport class CustomControl implements IControl {\n constructor(private container: HTMLElement) {}\n\n /** @inheritdoc */\n onAdd() {\n return this.container;\n }\n\n /** @inheritdoc */\n onRemove() {\n return this.container.parentNode!.removeChild(this.container);\n }\n\n /** @inheritdoc */\n getDefaultPosition(): ControlPosition {\n return 'top-right';\n }\n}\n\n/**\n * `mgl-control` - a custom control component\n * @see [Controls](https://maplibre.org/maplibre-gl-js/docs/API/interfaces/IControl/)\n *\n * @category Components\n *\n * @example\n * ```html\n * ...\n * <mgl-map ...>\n * <mgl-control> Hello </mgl-control>\n * ...\n * <mgl-control mglNavigation></mgl-control>\n * ...\n * <mgl-control mglScale unit=\"imperial\" position=\"top-right\"></mgl-control>\n * ...\n * <mgl-control\n * mglTerrain\n * source=\"rasterDemSource\"\n * exaggeration=\"3.1\"\n * ></mgl-control>\n * </mgl-map>\n * ```\n */\n@Component({\n selector: 'mgl-control',\n template: `\n <div class=\"maplibregl-ctrl\" #content>\n <ng-content></ng-content>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ControlComponent<T extends IControl> implements OnDestroy {\n /** Init injection */\n private readonly mapService = inject(MapService);\n\n /** Init input */\n readonly position = input<ControlPosition>();\n\n /** @hidden */\n readonly content = viewChild.required<ElementRef<HTMLDivElement>>('content');\n\n control: T | CustomControl;\n\n constructor() {\n afterNextRender(() => {\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 });\n }\n });\n }\n\n ngOnDestroy(): void {\n if (this.mapService?.mapInstance?.hasControl(this.control)) {\n this.mapService.removeControl(this.control);\n }\n }\n}\n","import { Directive, afterNextRender, inject, input } from '@angular/core';\nimport {\n AttributionControl,\n type AttributionControlOptions,\n} from 'maplibre-gl';\nimport { MapService } from '../map/map.service';\nimport { ControlComponent } from './control.component';\nimport { keepAvailableObjectValues } from '../shared/utils/functions/object.fn';\n\n/**\n * `mglAttribution` - an attribution control directive\n *\n * @category Directives\n *\n * @see [Add custom attribution](https://maplibre.org/ngx-maplibre-gl/demo/custom-attribution)\n * @see [AttributionControl](https://maplibre.org/maplibre-gl-js/docs/API/classes/AttributionControl)\n */\n@Directive({\n selector: '[mglAttribution]',\n})\nexport class AttributionControlDirective {\n /* Init injection */\n private readonly mapService = inject(MapService);\n private readonly controlComponent = inject<\n ControlComponent<AttributionControl>\n >(ControlComponent, { host: true });\n\n /** Init input */\n readonly compact = input<boolean>();\n /** Init input */\n readonly customAttribution = input<string | string[]>();\n\n constructor() {\n afterNextRender(() => {\n this.mapService.mapCreated$.subscribe(() => {\n if (this.controlComponent.control) {\n throw new Error('Another control is already set for this control');\n }\n\n const options = keepAvailableObjectValues<AttributionControlOptions>({\n compact: this.compact(),\n customAttribution: this.customAttribution(),\n });\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}\n","import { Directive, afterNextRender, inject, input } from '@angular/core';\nimport { FullscreenControl } from 'maplibre-gl';\nimport { MapService } from '../map/map.service';\nimport { ControlComponent } from './control.component';\n\n/**\n * `mglFullscreen` - a fullscreen control directive\n *\n * @category Directives\n */\n@Directive({\n selector: '[mglFullscreen]',\n host: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n '(window:webkitfullscreenchange)': 'onFullscreen()',\n },\n})\nexport class FullscreenControlDirective {\n /* Init injection */\n private readonly mapService = inject(MapService);\n private readonly controlComponent = inject<\n ControlComponent<FullscreenControl>\n >(ControlComponent, { host: true });\n\n /* Init inputs */\n readonly container = input<HTMLElement>();\n\n constructor() {\n afterNextRender(() => {\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\n onFullscreen() {\n this.mapService.mapInstance.resize();\n }\n}\n","import {\n Directive,\n afterNextRender,\n inject,\n input,\n output,\n} from '@angular/core';\nimport {\n type FitBoundsOptions,\n GeolocateControl,\n GeolocateControlOptions,\n} from 'maplibre-gl';\nimport { MapService } from '../map/map.service';\nimport { ControlComponent } from './control.component';\nimport type { Position } from '../map/map.types';\nimport { keepAvailableObjectValues } from '../shared/utils/functions/object.fn';\n\n/**\n * `mglGeolocate` - a geolocate control directive\n *\n * @category Directives\n *\n * @see [Locate user](https://maplibre.org/ngx-maplibre-gl/demo/locate-user)\n * @see [GeolocateControl](https://maplibre.org/maplibre-gl-js/docs/API/classes/GeolocateControl)\n */\n@Directive({\n selector: '[mglGeolocate]',\n})\nexport class GeolocateControlDirective {\n /* Init injection */\n private readonly mapService = inject(MapService);\n private readonly controlComponent = inject<\n ControlComponent<GeolocateControl>\n >(ControlComponent, { host: true });\n\n /* Init inputs */\n readonly positionOptions = input<PositionOptions>();\n /* Init inputs */\n readonly fitBoundsOptions = input<FitBoundsOptions>();\n /* Init inputs */\n readonly trackUserLocation = input<boolean>();\n /* Init inputs */\n readonly showUserLocation = input<boolean>();\n\n readonly geolocate = output<Position>();\n\n constructor() {\n afterNextRender(() => {\n this.mapService.mapCreated$.subscribe(() => {\n if (this.controlComponent.control) {\n throw new Error('Another control is already set for this control');\n }\n\n const options = keepAvailableObjectValues<GeolocateControlOptions>({\n positionOptions: this.positionOptions(),\n fitBoundsOptions: this.fitBoundsOptions(),\n trackUserLocation: this.trackUserLocation(),\n showUserLocation: this.showUserLocation(),\n });\n\n this.controlComponent.control = new GeolocateControl(options);\n this.controlComponent.control.on('geolocate', (data: Position) => {\n this.geolocate.emit(data);\n });\n this.mapService.addControl(\n this.controlComponent.control,\n this.controlComponent.position()\n );\n });\n });\n }\n}\n","import { Directive, afterNextRender, inject, input } from '@angular/core';\nimport { NavigationControl, type NavigationControlOptions } from 'maplibre-gl';\nimport { MapService } from '../map/map.service';\nimport { ControlComponent } from './control.component';\nimport { keepAvailableObjectValues } from '../shared/utils/functions/object.fn';\n\n/**\n * `mglNavigation` - a navigation control directive\n *\n * @category Directives\n *\n * @see [Navigation](https://maplibre.org/ngx-maplibre-gl/demo/navigation)\n * @see [NavigationControl](https://maplibre.org/maplibre-gl-js/docs/API/classes/NavigationControl)\n */\n@Directive({\n selector: '[mglNavigation]',\n})\nexport class NavigationControlDirective {\n /* Init injection */\n private readonly mapService = inject(MapService);\n private readonly controlComponent = inject<\n ControlComponent<NavigationControl>\n >(ControlComponent, { host: true });\n\n /* Init inputs */\n readonly showCompass = input<boolean>();\n /* Init inputs */\n readonly showZoom = input<boolean>();\n /* Init inputs */\n readonly visualizePitch = input<boolean>();\n /* Init inputs */\n readonly visualizeRoll = input<boolean>();\n\n constructor() {\n afterNextRender(() => {\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 = keepAvailableObjectValues<NavigationControlOptions>({\n showCompass: this.showCompass(),\n showZoom: this.showZoom(),\n visualizePitch: this.visualizePitch(),\n visualizeRoll: this.visualizeRoll(),\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}\n","import {\n Directive,\n OnChanges,\n SimpleChanges,\n afterNextRender,\n inject,\n input,\n} from '@angular/core';\nimport { ScaleControl, type Unit, type ScaleControlOptions } from 'maplibre-gl';\nimport { MapService } from '../map/map.service';\nimport { ControlComponent } from './control.component';\nimport { keepAvailableObjectValues } from '../shared/utils/functions/object.fn';\n\n/**\n * `mglScale` - a scale control directive\n *\n * @category Directives\n *\n * @see [Scale](https://maplibre.org/ngx-maplibre-gl/demo/ngx-scale-control)\n * @see [ScaleControl](https://maplibre.org/maplibre-gl-js/docs/API/classes/ScaleControl)\n */\n@Directive({\n selector: '[mglScale]',\n})\nexport class ScaleControlDirective implements OnChanges {\n /* Init injection */\n private readonly mapService = inject(MapService);\n private readonly controlComponent = inject<ControlComponent<ScaleControl>>(\n ControlComponent,\n { host: true }\n );\n\n /* Init inputs */\n readonly maxWidth = input<number>();\n\n /* Dynamic inputs */\n readonly unit = input<Unit>();\n\n constructor() {\n afterNextRender(() => {\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 = keepAvailableObjectValues<ScaleControlOptions>({\n maxWidth: this.maxWidth(),\n unit: this.unit(),\n });\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\n ngOnChanges(changes: SimpleChanges) {\n if (changes.unit && !changes.unit.isFirstChange()) {\n (this.controlComponent.control as ScaleControl).setUnit(\n changes.unit.currentValue\n );\n }\n }\n}\n","import { Directive, afterNextRender, inject, input } from '@angular/core';\nimport { TerrainControl, type TerrainSpecification } from 'maplibre-gl';\nimport { MapService } from '../map/map.service';\nimport { ControlComponent } from './control.component';\n\n/**\n * `mglTerrain` - a terrain control directive\n *\n * @category Directives\n *\n * @see [Terrain](https://maplibre.org/ngx-maplibre-gl/demo/terrain-control)\n * @see [TerrainControl](https://maplibre.org/maplibre-gl-js/docs/API/classes/TerrainControl)\n */\n@Directive({\n selector: '[mglTerrain]',\n})\nexport class TerrainControlDirective {\n /* Init injection */\n private readonly mapService = inject(MapService);\n private readonly controlComponent = inject<ControlComponent<TerrainControl>>(\n ControlComponent,\n { host: true }\n );\n\n /* Init inputs */\n readonly source = input.required<string>();\n readonly exaggeration = input<number>();\n\n constructor() {\n afterNextRender(() => {\n this.mapService.mapCreated$.subscribe(() => {\n if (this.controlComponent.control) {\n throw new Error('Another control is already set for this control');\n }\n\n const options: TerrainSpecification = {\n source: this.source(),\n exaggeration: this.exaggeration() ?? 1,\n };\n\n this.controlComponent.control = new TerrainControl(options);\n\n this.mapService.addControl(\n this.controlComponent.control,\n this.controlComponent.position()\n );\n });\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n OnDestroy,\n OnInit,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { filter, switchMap, tap } from 'rxjs/operators';\nimport { MapService } from '../map/map.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Source, SourceSpecification } from 'maplibre-gl';\n\n/**\n * @internal\n * A composition object for the source components\n */\n@Directive({})\nexport class SourceDirective implements OnInit, OnDestroy {\n /** Init injection */\n private readonly mapService = inject(MapService);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Init input */\n public readonly id = input.required<string>();\n\n /** \n * @internal\n * Used to store the current source id and make sure removeSource is only called once.\n */\n readonly sourceId = signal<string | null>(null);\n private readonly loadSourceSubject = new Subject<void>();\n readonly loadSource$ = this.loadSourceSubject.asObservable();\n\n ngOnInit() {\n this.mapService.mapLoaded$\n .pipe(\n tap(() => this.loadSourceSubject.next()),\n switchMap(() =>\n fromEvent(this.mapService.mapInstance, 'styledata').pipe(\n filter(() => !this.mapService.mapInstance.getSource(this.id())),\n tap(() => this.loadSourceSubject.next())\n )\n ),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n }\n\n ngOnDestroy(): void {\n this.removeSource();\n }\n\n refresh() {\n this.removeSource();\n this.loadSourceSubject.next();\n }\n\n removeSource() {\n const currentId = this.sourceId();\n if (currentId) {\n this.mapService.removeSource(currentId);\n this.sourceId.set(null);\n }\n }\n\n addSource(source: SourceSpecification) {\n this.mapService.addSource(this.id(), source);\n this.sourceId.set(this.id());\n }\n\n getSource<T extends Source>(): T | undefined {\n return this.mapService.getSource<T>(this.id());\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n OnChanges,\n SimpleChanges,\n NgZone,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport type { GeoJSONSource, GeoJSONSourceSpecification } from 'maplibre-gl';\nimport { Subject } from 'rxjs';\nimport { debounceTime, switchMap, tap } from 'rxjs/operators';\nimport { SourceDirective } from '../source.directive';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * `mgl-geojson-source` - a geojson source component\n * @see [geojson](https://maplibre.org/maplibre-gl-js/docs/API/classes/maplibregl.GeoJSONSource/)\n *\n * @category Source Components\n *\n * @example\n * ```html\n * ...\n * <mgl-map ...>\n * <mgl-geojson-source id=\"symbols-source\">\n * <mgl-feature\n * *ngFor=\"let geometry of geometries\"\n * [geometry]=\"geometry\"\n * ></mgl-feature>\n * </mgl-geojson-source>\n * ...\n * <mgl-geojson-source\n * id=\"earthquakes\"\n * [data]=\"earthquakes\"\n * [cluster]=\"true\"\n * [clusterMaxZoom]=\"14\"\n * [clusterRadius]=\"50\"\n * ></mgl-geojson-source>\n * </mgl-map>\n *\n * ```\n */\n@Component({\n selector: 'mgl-geojson-source',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [{ directive: SourceDirective, inputs: ['id'] }],\n})\nexport class GeoJSONSourceComponent implements OnChanges {\n /** Init injections */\n private readonly sourceDirective = inject(SourceDirective);\n\n /** Init injection */\n private readonly ngZone = inject(NgZone);\n\n /** Dynamic input */\n readonly data = input<GeoJSONSourceSpecification['data']>({\n type: 'FeatureCollection',\n features: [],\n });\n\n /** Dynamic input */\n readonly maxzoom = input<GeoJSONSourceSpecification['maxzoom']>();\n\n /** Dynamic input */\n readonly attribution = input<GeoJSONSourceSpecification['attribution']>();\n\n /** Dynamic input */\n readonly buffer = input<GeoJSONSourceSpecification['buffer']>();\n\n /** Dynamic input */\n readonly tolerance = input<GeoJSONSourceSpecification['tolerance']>();\n\n /** Dynamic input */\n readonly cluster = input<GeoJSONSourceSpecification['cluster']>();\n\n /** Dynamic input */\n readonly clusterRadius = input<GeoJSONSourceSpecification['clusterRadius']>();\n\n /** Dynamic input */\n readonly clusterMaxZoom =\n input<GeoJSONSourceSpecification['clusterMaxZoom']>();\n\n /** Dynamic input */\n readonly clusterMinPoints =\n input<GeoJSONSourceSpecification['clusterMinPoints']>();\n\n /** Dynamic input */\n readonly clusterProperties =\n input<GeoJSONSourceSpecification['clusterProperties']>();\n\n /** Dynamic input */\n readonly lineMetrics = input<GeoJSONSourceSpecification['lineMetrics']>();\n\n /** Dynamic input */\n readonly generateId = input<GeoJSONSourceSpecification['generateId']>();\n\n /** Dynamic input */\n readonly promoteId = input<GeoJSONSourceSpecification['promoteId']>();\n\n /** Dynamic input */\n readonly filter = input<GeoJSONSourceSpecification['filter']>();\n\n private readonly updateFeatureDataSubject = new Subject<void>();\n\n private readonly featureIdCounter = signal(0);\n\n constructor() {\n this.sourceDirective.loadSource$\n .pipe(\n tap(() =>\n this.sourceDirective.addSource(this.getGeoJSONSourceSpecification())\n ),\n switchMap(() => this.updateFeature()),\n takeUntilDestroyed()\n )\n .subscribe();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.sourceDirective.sourceId()) {\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.sourceDirective.refresh();\n }\n if (changes.data && !changes.data.isFirstChange()) {\n const source = this.sourceDirective.getSource<GeoJSONSource>();\n if (source === undefined) {\n return;\n }\n source.setData(changes.data.currentValue);\n }\n }\n\n /**\n * For clustered sources, fetches the zoom at which the given cluster expands.\n * @param clusterId The value of the cluster's cluster_id property.\n */\n async getClusterExpansionZoom(clusterId: number) {\n const source = this.sourceDirective.getSource<GeoJSONSource>()!;\n return this.ngZone.run(async () => {\n return source.getClusterExpansionZoom(clusterId);\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 * @param clusterId The value of the cluster's cluster_id property.\n */\n async getClusterChildren(clusterId: number) {\n const source = this.sourceDirective.getSource<GeoJSONSource>()!;\n return this.ngZone.run(async () => {\n return source.getClusterChildren(clusterId);\n });\n }\n\n /**\n * For clustered sources, fetches the original points that belong to the cluster (as an array of GeoJSON features).\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.sourceDirective.getSource<GeoJSONSource>()!;\n return this.ngZone.run(async () => {\n return source.getClusterLeaves(clusterId, limit, offset);\n });\n }\n\n _addFeature(feature: GeoJSON.Feature<GeoJSON.GeometryObject>) {\n const collection = <GeoJSON.FeatureCollection<GeoJSON.GeometryObject>>(\n this.data()\n );\n collection.features.push(feature);\n this.updateFeatureDataSubject.next();\n }\n\n _removeFeature(feature: GeoJSON.Feature<GeoJSON.GeometryObject>) {\n const collection = <GeoJSON.FeatureCollection<GeoJSON.GeometryObject>>(\n this.data()\n );\n const index = collection.features.indexOf(feature);\n if (index > -1) {\n collection.features.splice(index, 1);\n }\n this.updateFeatureDataSubject.next();\n }\n\n updateFeatureData() {\n this.updateFeatureDataSubject.next();\n }\n\n _getNewFeatureId() {\n this.featureIdCounter.update((featureIdCounter) => ++featureIdCounter);\n return this.featureIdCounter();\n }\n\n private getGeoJSONSourceSpecification(): GeoJSONSourceSpecification {\n return {\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 }\n\n private updateFeature() {\n return this.updateFeatureDataSubject.pipe(debounceTime(0)).pipe(\n tap(() => {\n const source = this.sourceDirective.getSource<GeoJSONSource>();\n if (source === undefined) {\n return;\n }\n source.setData(this.data()! as string | GeoJSON.GeoJSON);\n })\n );\n }\n}\n","import {\n Component,\n forwardRef,\n OnDestroy,\n OnInit,\n ChangeDetectionStrategy,\n input,\n model,\n inject,\n} from '@angular/core';\nimport { GeoJSONSourceComponent } from './geojson-source.component';\n\n/**\n * `mgl-feature` - a feature component\n * [ngx] inside {@link GeoJSONSourceComponent} only\n *\n * @category Source Components\n */\n@Component({\n selector: 'mgl-feature',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FeatureComponent implements OnInit, OnDestroy {\n /** Init injection */\n private readonly geoJSONSourceComponent = inject<GeoJSONSourceComponent>(\n forwardRef(() => GeoJSONSourceComponent)\n );\n /** Init input */\n readonly id = model<number>(); \n /** Init input */\n readonly geometry = input.required<GeoJSON.GeometryObject>();\n \n /** Init input */\n readonly properties = input<GeoJSON.Feature<GeoJSON.GeometryObject>['properties']>();\n\n private feature: GeoJSON.Feature<GeoJSON.GeometryObject>;\n\n ngOnInit() {\n const id = this.id();\n if (!id) {\n this.id.set(this.geoJSONSourceComponent._getNewFeatureId());\n }\n const properties = this.properties();\n this.feature = {\n type: 'Feature',\n geometry: this.geometry(),\n properties: properties ?? {},\n };\n this.feature.id = this.id();\n this.geoJSONSourceComponent._addFeature(this.feature);\n }\n\n ngOnDestroy(): void {\n this.geoJSONSourceComponent._removeFeature(this.feature);\n }\n\n updateCoordinates(coordinates: number[]) {\n (<GeoJSON.Point>this.feature.geometry).coordinates = coordinates;\n this.geoJSONSourceComponent.updateFeatureData();\n }\n}\n","import {\n Directive,\n NgZone,\n OnDestroy,\n OnInit,\n inject,\n input,\n output,\n} from '@angular/core';\nimport type { MapMouseEvent } from 'maplibre-gl';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { fromEvent, Observable, Subscription } from 'rxjs';\nimport { filter, switchMap, take, takeUntil, tap } from 'rxjs/operators';\nimport type { LayerComponent } from '../layer/layer.component';\nimport { MapService } from '../map/map.service';\nimport { FeatureComponent } from '../source/geojson/feature.component';\n\n/**\n * `mglDraggable` - a directive for Feature or Marker\n *\n * @category Directives\n *\n * @see [Draggable Marker](https://maplibre.org/ng-maplibre-gl/demo/ngx-drag-a-point)\n */\n@Directive({\n selector: '[mglDraggable]',\n})\nexport class DraggableDirective implements OnInit, OnDestroy {\n /** Init injection */\n private readonly mapService = inject(MapService);\n private readonly ngZone = inject(NgZone);\n private readonly featureComponent = inject(FeatureComponent, {\n host: true,\n optional: true,\n });\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly layer = input<LayerComponent | null>(null, {\n alias: 'mglDraggable',\n });\n\n featureDragStart = output<MapMouseEvent>();\n featureDragEnd = output<MapMouseEvent>();\n featureDrag = output<MapMouseEvent>();\n\n private sub = new Subscription();\n\n ngOnInit() {\n let enter$;\n let leave$;\n let updateCoords;\n const layer = this.layer();\n if (this.featureComponent && layer) {\n enter$ = outputToObservable(layer.layerMouseEnter);\n leave$ = outputToObservable(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 this.ngZone.run(() => {\n this.featureDragStart.emit(evt);\n });\n })\n );\n this.sub.add(\n dragging$.subscribe((evt) => {\n updateCoords([evt.lngLat.lng, evt.lngLat.lat]);\n this.ngZone.run(() => {\n this.featureDrag.emit(evt);\n });\n })\n );\n this.sub.add(\n dragEnd$.subscribe((evt) => {\n moving = false;\n this.ngZone.run(() => {\n this.featureDragEnd.emit(evt);\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 const layer = this.layer();\n if (this.featureComponent && layer) {\n const feature: GeoJSON.Feature = this.mapService.queryRenderedFeatures(\n evt.point,\n {\n layers: [layer.id()],\n filter: [\n 'all',\n ['==', '$type', 'Point'],\n ['==', '$id', this.featureComponent.id() as number],\n ],\n }\n )[0];\n if (!feature) {\n return false;\n }\n }\n return true;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { filter, startWith, switchMap } from 'rxjs/operators';\nimport { MapService } from '../map/map.service';\nimport type { MapImageData, MapImageOptions } from '../map/map.types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * `mgl-image` - an image component\n * @see [addImage](https://maplibre.org/maplibre-gl-js/docs/API/classes/Map/#addimage)\n *\n * @category Components\n *\n * @example\n * ```html\n * ...\n * <mgl-map\n * ...\n * >\n * <mgl-image\n * id=\"image\"\n * url=\"https://...\"\n * (imageLoaded)=\"imageLoaded = true\"\n * >\n * ...\n * <mgl-image\n * id=\"image2\"\n * [data]=\"{\n * width: 64,\n * height: 64,\n * data: imageData\n * }\"\n * >\n * </mgl-map>\n * ...\n * imageData: Uint8Array;\n * ```\n */\n@Component({\n selector: 'mgl-image',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageComponent implements OnInit, OnChanges, OnDestroy {\n /** Init injection */\n private readonly mapService = inject(MapService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly zone = inject(NgZone);\n\n /** Init input */\n readonly id = input.required<string>();\n\n /** Dynamic input */\n readonly data = input<MapImageData>();\n /** Dynamic input */\n readonly options = input<MapImageOptions>();\n /** Dynamic input */\n readonly url = input<string>();\n\n readonly imageError = output<{\n status: number;\n }>();\n\n readonly imageLoaded = output<void>();\n\n private isAdded = signal(false);\n private isAdding = signal(false);\n\n ngOnInit() {\n this.mapService.mapLoaded$\n .pipe(\n switchMap(() =>\n fromEvent(this.mapService.mapInstance, 'styledata').pipe(\n startWith(undefined),\n filter(\n () =>\n !this.isAdding() &&\n !this.mapService.mapInstance.hasImage(this.id())\n )\n )\n ),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.addImage());\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.removeImage();\n this.ngOnInit();\n }\n }\n\n ngOnDestroy(): void {\n this.removeImage()\n }\n\n removeImage() {\n if (this.isAdded()) {\n this.mapService.removeImage(this.id());\n }\n }\n\n private async addImage() {\n this.isAdding.set(true);\n const data = this.data();\n const url = this.url();\n if (data) {\n this.mapService.addImage(this.id(), data, this.options());\n this.isAdded.set(true);\n this.isAdding.set(false);\n } else if (url) {\n try {\n await this.mapService.loadAndAddImage(this.id(), url, this.options());\n this.isAdded.set(true);\n this.isAdding.set(false);\n this.zone.run(() => {\n this.imageLoaded.emit();\n });\n } catch (error) {\n this.zone.run(() => {\n this.imageError.emit(error as any);\n });\n }\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport type {\n LayerSpecification,\n FilterSpecification,\n MapLayerMouseEvent,\n MapLayerTouchEvent,\n} from 'maplibre-gl';\nimport { fromEvent } from 'rxjs';\nimport { filter, map, startWith, switchMap } from 'rxjs/operators';\nimport { MapService, type SetupLayer } from '../map/map.service';\nimport type { EventData, LayerEvents } from '../map/map.types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * `mgl-layer` - a layer component\n * @see [layers](https://maplibre.org/maplibre-style-spec/layers/)\n *\n * @category Layer Component\n *\n * @example\n * ```html\n * ...\n * <mgl-map ...>\n * <mgl-layer\n * id=\"state-borders\"\n * type=\"line\"\n * [source]=\"states\"\n * [paint]=\"{\n * 'line-color': '#627BC1',\n * 'line-width': 2\n * }\"\n * ></mgl-layer>\n * </mgl-map>\n * ```\n */\n@Component({\n selector: 'mgl-layer',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LayerComponent\n implements OnInit, OnDestroy, OnChanges, LayerEvents\n{\n /** Init injection */\n private readonly destroyRef = inject(DestroyRef);\n private readonly mapService = inject(MapService);\n\n /** Init input */\n readonly id = input.required<LayerSpecification['id']>();\n readonly type = input.required<LayerSpecification['type']>();\n readonly source = input<string>();\n readonly metadata = input<LayerSpecification['metadata']>();\n readonly sourceLayer = input<string>();\n\n /**\n * A flag to enable removeSource clean up functionality\n *\n * Init input\n */\n readonly removeSource = input<boolean>();\n\n readonly filter = input<FilterSpecification>();\n readonly layout = input<LayerSpecification['layout']>();\n readonly paint = input<LayerSpecification['paint']>();\n readonly before = input<string>();\n readonly minzoom = input<LayerSpecification['minzoom']>();\n readonly maxzoom = input<LayerSpecification['maxzoom']>();\n\n readonly layerClick = output<MapLayerMouseEvent & EventData>();\n readonly layerDblClick = output<MapLayerMouseEvent & EventData>();\n readonly layerMouseDown = output<MapLayerMouseEvent & EventData>();\n readonly layerMouseUp = output<MapLayerMouseEvent & EventData>();\n readonly layerMouseEnter = output<MapLayerMouseEvent & EventData>();\n readonly layerMouseLeave = output<MapLayerMouseEvent & EventData>();\n readonly layerMouseMove = output<MapLayerMouseEvent & EventData>();\n readonly layerMouseOver = output<MapLayerMouseEvent & EventData>();\n readonly layerMouseOut = output<MapLayerMouseEvent & EventData>();\n readonly layerContextMenu = output<MapLayerMouseEvent & EventData>();\n readonly layerTouchStart = output<MapLayerTouchEvent & EventData>();\n readonly layerTouchEnd = output<MapLayerTouchEvent & EventData>();\n readonly layerTouchCancel = output<MapLayerTouchEvent & EventData>();\n\n private readonly layerAdded = signal(false);\n private readonly sourceIdAdded = signal<string | null>(null);\n\n ngOnInit() {\n this.mapService.mapLoaded$\n .pipe(\n switchMap(() =>\n fromEvent(this.mapService.mapInstance, 'styledata').pipe(\n map(() => false),\n filter(() => !this.mapService.mapInstance.getLayer(this.id())),\n startWith(true)\n )\n ),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((bindEvents) => 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(\n this.id(),\n this.minzoom(),\n this.maxzoom()\n );\n }\n }\n\n ngOnDestroy(): void {\n if (this.layerAdded()) {\n const sourceIdAdded = this.sourceIdAdded();\n this.mapService.removeLayer(this.id());\n\n if (sourceIdAdded !== null) {\n // Clean up any automatically created source for this layer\n if (this.mapService.getSource(sourceIdAdded)) {\n this.mapService.removeSource(sourceIdAdded);\n }\n }\n }\n }\n\n private init(bindEvents: boolean) {\n const layer: SetupLayer = {\n layerOptions: {\n id: this.id(),\n type: this.type(),\n source: this.source() as string,\n metadata: this.metadata(),\n // eslint-disable-next-line @typescript-eslint/naming-convention\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 } as LayerSpecification,\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 },\n };\n\n if (this.removeSource() && typeof this.source() !== 'string') {\n // There is no id of an existing source bound to this layer\n if (this.mapService.getSource(this.id()) === undefined) {\n // A source with this layer id doesn't exist so it will be created automatically in the addLayer call below\n this.sourceIdAdded.set(this.id());\n }\n }\n this.mapService.addLayer(layer, bindEvents, this.before());\n\n const sourceIdAdded = this.sourceIdAdded();\n if (sourceIdAdded !== null) {\n const getSource = this.mapService.getSource(sourceIdAdded);\n if (getSource === undefined) {\n // If it wasn't created for some reason then we don't want to clean it up\n this.sourceIdAdded.set(null);\n }\n }\n this.layerAdded.set(true);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n afterEveryRender,\n afterNextRender,\n inject,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport type {\n AnimationOptions,\n LngLatBoundsLike,\n Map,\n MapLibreEvent,\n MapOptions,\n MapLibreZoomEvent,\n MapContextEvent,\n MapDataEvent,\n MapMouseEvent,\n MapSourceDataEvent,\n MapStyleDataEvent,\n MapTouchEvent,\n MapWheelEvent,\n PointLike,\n TerrainSpecification,\n ProjectionSpecification,\n} from 'maplibre-gl';\nimport { MapService, type MovingOptions } from './map.service';\nimport type { MapEvent, EventData } from './map.types';\nimport { firstValueFrom } from 'rxjs';\n\n/**\n * `mgl-map` - The main map component\n * @see [Map](https://maplibre.org/maplibre-gl-js/docs/API/classes/Map/)\n *\n * @category Map Component\n *\n * @example\n * ```typescript\n * ...\n * @Component({\n * template: `\n * <mgl-map\n * [style]=\"'https://demotiles.maplibre.org/style.json'\"\n * [zoom]=\"[9]\"\n * [center]=\"[-74.50, 40]\"\n * (mapLoad)=\"map = $event\"\n * ></mgl-map>\n * `,\n * ...\n * })\n * export class DisplayMapComponent {\n * map: Map; // MapLibre GL Map object (MapLibre is ran outside angular zone, keep that in mind when binding events from this object)\n * ...\n * }\n * ```\n */\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 implements OnChanges, OnDestroy, MapEvent {\n private readonly mapService = inject(MapService);\n private readonly elementRef = inject(ElementRef);\n\n /** Init input */\n readonly collectResourceTiming = input<MapOptions['collectResourceTiming']>();\n /** Init input */\n readonly crossSourceCollisions = input<MapOptions['crossSourceCollisions']>();\n /** Init input */\n readonly customMapboxApiUrl = input<string>();\n /** Init input */\n readonly fadeDuration = input<MapOptions['fadeDuration']>();\n /** Init input */\n readonly hash = input<MapOptions['hash']>();\n /** Init input */\n readonly refreshExpiredTiles = input<MapOptions['refreshExpiredTiles']>();\n /** Init input */\n readonly canvasContextAttributes = input<MapOptions['canvasContextAttributes']>();\n /** Init input */\n readonly bearingSnap = input<MapOptions['bearingSnap']>();\n /** Init input */\n readonly interactive = input<MapOptions['interactive']>();\n /** Init input */\n readonly pitchWithRotate = input<MapOptions['pitchWithRotate']>();\n /** Init input */\n readonly clickTolerance = input<MapOptions['clickTolerance']>();\n /** Init input */\n readonly attributionControl = input<MapOptions['attributionControl']>();\n /** Init input */\n readonly logoPosition = input<MapOptions['logoPosition']>();\n /** Init input */\n readonly maxTileCacheSize = input<MapOptions['maxTileCacheSize']>();\n /** Init input */\n readonly localIdeographFontFamily = input<MapOptions['localIdeographFontFamily']>();\n /** Init input */\n readonly trackResize = input<MapOptions['trackResize']>();\n /** Init input */\n readonly transformRequest = input<MapOptions['transformRequest']>();\n /** Init input */\n readonly bounds = input<MapOptions['bounds']>();\n /** Init input */\n readonly locale = input<MapOptions['locale']>();\n /** Init input */\n readonly cooperativeGestures = input<MapOptions['cooperativeGestures']>();\n /** Init input */\n readonly cancelPendingTileRequestsWhileZooming = input<MapOptions['cancelPendingTileRequestsWhileZooming']>();\n /** Init input */\n readonly centerClampedToGround = input<MapOptions['centerClampedToGround']>();\n /** Init input */\n readonly maplibreLogo = input<MapOptions['maplibreLogo']>();\n /** Init input */\n readonly maxCanvasSize = input<MapOptions['maxCanvasSize']>();\n /** Init input */\n readonly maxTileCacheZoomLevels = input<MapOptions['maxTileCacheZoomLevels']>();\n /** Init input */\n readonly pixelRatio = input<MapOptions['pixelRatio']>();\n /** Init input */\n readonly rollEnabled = input<MapOptions['rollEnabled']>();\n /** Init input */\n readonly transformCameraUpdate = input<MapOptions['transformCameraUpdate']>();\n /** Init input */\n readonly validateStyle = input<MapOptions['validateStyle']>();\n\n /** Dynamic input */\n readonly minZoom = input<MapOptions['minZoom']>();\n /** Dynamic input */\n readonly maxZoom = input<MapOptions['maxZoom']>();\n /** Dynamic input */\n readonly minPitch = input<MapOptions['minPitch']>();\n /** Dynamic input */\n readonly maxPitch = input<MapOptions['maxPitch']>();\n /** Dynamic input */\n readonly scrollZoom = input<MapOptions['scrollZoom']>();\n /** Dynamic input */\n readonly dragRotate = input<MapOptions['dragRotate']>();\n /** Dynamic input */\n readonly touchPitch = input<MapOptions['touchPitch']>();\n /** Dynamic input */\n readonly touchZoomRotate = input<MapOptions['touchZoomRotate']>();\n /** Dynamic input */\n readonly doubleClickZoom = input<MapOptions['doubleClickZoom']>();\n /** Dynamic input */\n readonly keyboard = input<MapOptions['keyboard']>();\n /** Dynamic input */\n readonly dragPan = input<MapOptions['dragPan']>();\n /** Dynamic input */\n readonly boxZoom = input<MapOptions['boxZoom']>();\n /** Dynamic input */\n readonly style = input.required<MapOptions['style']>();\n /** Dynamic input */\n readonly center = input<MapOptions['center']>();\n /** Dynamic input */\n readonly maxBounds = input<MapOptions['maxBounds']>();\n /** Dynamic input */\n readonly zoom = input<[number]>();\n /** Dynamic input */\n readonly bearing = input<[number]>();\n /** Dynamic input */\n readonly pitch = input<[number]>();\n /** Dynamic input */\n readonly roll = input<MapOptions['roll']>();\n /** Dynamic input */\n readonly fitBoundsOptions = input<MapOptions['fitBoundsOptions']>(); // First value goes to options.fitBoundsOptions. Subsequents changes are passed to fitBounds\n /** Dynamic input */\n readonly renderWorldCopies = input<MapOptions['renderWorldCopies']>();\n /** Dynamic input */\n readonly elevation = input<MapOptions['elevation']>();\n /** Dynamic input that is not part of the `MapOptions` object */\n readonly terrain = input<TerrainSpecification>();\n /** Dynamic input that is not part of the `MapOptions` object */\n readonly projection = input<ProjectionSpecification>();\n\n /** Added by ngx-mapbox-gl */\n readonly movingMethod = input<'jumpTo' | 'easeTo' | 'flyTo'>('flyTo');\n readonly movingOptions = input<MovingOptions>();\n\n // => First value is a alias to bounds input (since mapbox 0.53.0). Subsequents changes are passed to fitBounds\n readonly fitBounds = input<LngLatBoundsLike>();\n readonly fitScreenCoordinates = input<[PointLike, PointLike]>();\n readonly centerWithPanTo = input<boolean>();\n readonly panToOptions = input<AnimationOptions>();\n readonly cursorStyle = input<string>();\n\n readonly mapResize = output<MapLibreEvent & EventData>();\n readonly mapRemove = output<MapLibreEvent & EventData>();\n readonly mapMouseDown = output<MapMouseEvent & EventData>();\n readonly mapMouseUp = output<MapMouseEvent & EventData>();\n readonly mapMouseMove = output<MapMouseEvent & EventData>();\n readonly mapClick = output<MapMouseEvent & EventData>();\n readonly mapDblClick = output<MapMouseEvent & EventData>();\n readonly mapMouseOver = output<MapMouseEvent & EventData>();\n readonly mapMouseOut = output<MapMouseEvent & EventData>();\n readonly mapContextMenu = output<MapMouseEvent & EventData>();\n readonly mapTouchStart = output<MapTouchEvent & EventData>();\n readonly mapTouchEnd = output<MapTouchEvent & EventData>();\n readonly mapTouchMove = output<MapTouchEvent & EventData>();\n readonly mapTouchCancel = output<MapTouchEvent & EventData>();\n readonly mapWheel = output<MapWheelEvent & EventData>();\n readonly moveStart = output<\n MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData\n >();\n readonly move = output<\n MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData\n >();\n readonly moveEnd = output<\n MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData\n >();\n readonly mapDragStart = output<\n MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData\n >();\n readonly mapDrag = output<\n MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData\n >();\n readonly mapDragEnd = output<\n MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData\n >();\n readonly zoomStart = output<\n MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData\n >();\n readonly zoomEvt = output<\n MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData\n >();\n readonly zoomEnd = output<\n MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData\n >();\n readonly rotateStart = output<\n MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData\n >();\n readonly rotate = output<\n MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData\n >();\n readonly rotateEnd = output<\n MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData\n >();\n readonly pitchStart = output<\n MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData\n >();\n readonly pitchEvt = output<\n MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData\n >();\n readonly pitchEnd = output<\n MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData\n >();\n readonly boxZoomStart = output<MapLibreZoomEvent & EventData>();\n readonly boxZoomEnd = output<MapLibreZoomEvent & EventData>();\n readonly boxZoomCancel = output<MapLibreZoomEvent & EventData>();\n readonly webGlContextLost = output<MapContextEvent & EventData>();\n readonly webGlContextRestored = output<MapContextEvent & EventData>();\n readonly mapLoad = output<Map>();\n readonly idle = output<MapLibreEvent & EventData>();\n readonly render = output<MapLibreEvent & EventData>();\n readonly mapError = output<ErrorEvent & EventData>();\n readonly data = output<MapDataEvent & EventData>();\n readonly styleData = output<MapStyleDataEvent & EventData>();\n readonly sourceData = output<MapSourceDataEvent & EventData>();\n readonly dataLoading = output<MapDataEvent & EventData>();\n readonly styleDataLoading = output<MapStyleDataEvent & EventData>();\n readonly sourceDataLoading = output<MapSourceDataEvent & EventData>();\n readonly styleImageMissing = output<\n {\n id: string;\n } & EventData\n >();\n\n get mapInstance(): Map {\n return this.mapService.mapInstance;\n }\n\n readonly mapContainer =\n viewChild.required<ElementRef<HTMLDivElement>>('container');\n\n constructor() {\n afterNextRender(() => {\n if (this.canvasContextAttributes()?.preserveDrawingBuffer) {\n // This is to allow better interaction with the map state\n const htmlElement: HTMLElement = this.elementRef.nativeElement;\n htmlElement.setAttribute('data-cy', 'map');\n this.mapLoad.subscribe(() => {\n htmlElement.setAttribute('data-loaded', 'true');\n });\n this.idle.subscribe(() => {\n htmlElement.setAttribute('data-idle', 'true');\n });\n this.render.subscribe(() => {\n htmlElement.removeAttribute('data-idle');\n });\n }\n this.mapService.setup({\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 canvasContextAttributes: this.canvasContextAttributes(),\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 roll: this.roll(),\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 locale: this.locale,\n cooperativeGestures: this.cooperativeGestures(),\n cancelPendingTileRequestsWhileZooming: this.cancelPendingTileRequestsWhileZooming(),\n centerClampedToGround: this.centerClampedToGround(),\n elevation: this.elevation(),\n maplibreLogo: this.maplibreLogo(),\n maxCanvasSize: this.maxCanvasSize(),\n maxTileCacheZoomLevels: this.maxTileCacheZoomLevels(),\n pixelRatio: this.pixelRatio(),\n rollEnabled: this.rollEnabled(),\n transformCameraUpdate: this.transformCameraUpdate(),\n validateStyle: this.validateStyle(),\n\n terrain: this.terrain(),\n projection: this.projection(),\n },\n mapEvents: this,\n });\n const cursorStyle = this.cursorStyle();\n if (cursorStyle) {\n this.mapService.changeCanvasCursor(cursorStyle);\n }\n });\n\n afterEveryRender(() => {\n this.mapService.clearMapElements();\n });\n }\n\n ngOnDestroy(): void {\n this.mapService.destroyMap();\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n await firstValueFrom(this.mapService.mapCreated$);\n const zoom = this.zoom();\n const bearing = this.bearing();\n const pitch = this.pitch();\n const center = this.center();\n\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 (center || zoom || pitch || this.fitBounds()) &&\n changes.fitScreenCoordinates.isFirstChange()\n ) {\n console.warn(\n '[ngx-maplibre-gl] center / zoom / pitch / fitBounds inputs are being overridden by fitScreenCoordinates input'\n );\n }\n this.mapService.fitScreenCoordinates(\n changes.fitScreenCoordinates.currentValue,\n bearing ? 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 !changes.roll\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 && !changes.bearing.isFirstChange() && !changes.fitScreenCoordinates) ||\n (changes.pitch && !changes.pitch.isFirstChange()) ||\n (changes.roll && !changes.roll.isFirstChange())\n ) {\n this.mapService.move(\n this.movingMethod(),\n this.movingOptions(),\n changes.zoom && zoom ? zoom[0] : undefined,\n changes.center ? center : undefined,\n changes.bearing && bearing ? bearing[0] : undefined,\n changes.pitch && pitch ? pitch[0] : undefined,\n changes.roll ? changes.roll.currentValue : undefined\n );\n }\n if (changes.terrain && !changes.terrain.isFirstChange()) {\n this.mapService.setTerrain(changes.terrain.currentValue);\n }\n if (changes.projection && !changes.projection.isFirstChange()) {\n this.mapService.setProjection(changes.projection.currentValue);\n }\n if (changes.elevation && !changes.elevation.isFirstChange()) {\n this.mapService.setCenterElevation(changes.elevation.currentValue);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewEncapsulation,\n afterNextRender,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport type { LngLatLike, Marker, MarkerOptions } from 'maplibre-gl';\nimport { MapService } from '../map/map.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * `mgl-marker` - a marker component\n * @see [Marker](https://maplibre.org/maplibre-gl-js/docs/API/classes/Marker/)\n *\n * @category Components\n *\n * @example\n * ```html\n * ...\n * <mgl-map ...>\n * <mgl-marker [lngLat]=\"[-66.324462890625, -16.024695711685304]\">\n * <div (click)=\"alert('Foo')\" class=\"marker\">Hello</div>\n * </mgl-marker>\n * </mgl-map>\n * ```\n *\n * Note: Only use this if you **really** need to use HTML/Angular component to render your symbol. These markers are slow compared to a `Layer` of symbol because they're not rendered using WebGL.\n */\n@Component({\n selector: 'mgl-marker',\n template: `<div [class]=\"className()\" #content>\n <ng-content></ng-content>\n </div>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MarkerComponent implements OnChanges, OnInit, OnDestroy {\n /** Init injection */\n private readonly mapService = inject(MapService);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Init inputs */\n readonly offset = input<MarkerOptions['offset']>();\n readonly anchor = input<MarkerOptions['anchor']>();\n readonly clickTolerance = input<MarkerOptions['clickTolerance']>();\n readonly color = input<MarkerOptions['color']>();\n readonly scale = input<MarkerOptions['scale']>();\n readonly opacity = input<MarkerOptions['opacity']>();\n readonly opacityWhenCovered = input<MarkerOptions['opacityWhenCovered']>();\n readonly subpixelPositioning = input<MarkerOptions['subpixelPositioning']>();\n /** Dynamic input */\n readonly feature = input<GeoJSON.Feature<GeoJSON.Point>>();\n readonly lngLat = input<LngLatLike>();\n readonly draggable = input<MarkerOptions['draggable']>();\n readonly popupShown = input<boolean>();\n readonly className = input<string>();\n readonly pitchAlignment = input<MarkerOptions['pitchAlignment']>();\n readonly rotationAlignment = input<MarkerOptions['rotationAlignment']>();\n readonly rotation = input<MarkerOptions['rotation']>();\n\n readonly markerDragStart = output<Marker>();\n readonly markerDragEnd = output<Marker>();\n readonly markerDrag = output<Marker>();\n\n readonly content = viewChild.required<ElementRef<HTMLDivElement>>('content');\n\n readonly markerInstance = signal<Marker | null>(null);\n\n constructor() {\n afterNextRender(() => {\n this.mapService.mapCreated$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n const marker = this.mapService.addMarker({\n markersOptions: {\n element: this.content().nativeElement,\n feature: this.feature(),\n lngLat: this.lngLat(),\n offset: this.offset(),\n anchor: this.anchor(),\n color: this.color(),\n scale: this.scale(),\n draggable: !!this.draggable(),\n clickTolerance: this.clickTolerance(),\n rotation: this.rotation(),\n rotationAlignment: this.rotationAlignment(),\n pitchAlignment: this.pitchAlignment(),\n opacity: this.opacity(),\n opacityWhenCovered: this.opacityWhenCovered(),\n subpixelPositioning: this.subpixelPositioning(),\n },\n markersEvents: {\n markerDragStart: this.markerDragStart,\n markerDrag: this.markerDrag,\n markerDragEnd: this.markerDragEnd,\n },\n });\n this.markerInstance.set(marker);\n });\n });\n }\n\n ngOnDestroy(): void {\n this.removeMarker();\n }\n\n ngOnInit() {\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 const markerInstance = this.markerInstance()!;\n if (changes.lngLat && !changes.lngLat.isFirstChange()) {\n markerInstance.setLngLat(changes.lngLat.currentValue);\n }\n\n if (changes.feature && !changes.feature.isFirstChange()) {\n markerInstance.setLngLat(\n changes.feature.currentValue.geometry.coordinates\n );\n }\n if (changes.draggable && !changes.draggable.isFirstChange()) {\n markerInstance.setDraggable(!!changes.draggable.currentValue);\n }\n if (changes.popupShown && !changes.popupShown.isFirstChange()) {\n changes.popupShown.currentValue\n ? markerInstance.getPopup().addTo(this.mapService.mapInstance)\n : markerInstance.getPopup().remove();\n }\n if (changes.pitchAlignment && !changes.pitchAlignment.isFirstChange()) {\n markerInstance.setPitchAlignment(changes.pitchAlignment.currentValue);\n }\n if (\n changes.rotationAlignment &&\n !changes.rotationAlignment.isFirstChange()\n ) {\n markerInstance.setRotationAlignment(\n changes.rotationAlignment.currentValue\n );\n }\n if (changes.rotation && !changes.rotation.isFirstChange()) {\n markerInstance.setRotation(changes.rotation.currentValue);\n }\n }\n\n removeMarker() {\n this.mapService.removeMarker(this.markerInstance()!);\n this.markerInstance.set(null);\n }\n\n togglePopup() {\n this.markerInstance()!.togglePopup();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Directive,\n NgZone,\n TemplateRef,\n afterNextRender,\n contentChild,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport type {\n MapGeoJSONFeature,\n MapSourceDataEvent,\n QueryRenderedFeaturesOptions,\n} from 'maplibre-gl';\nimport { fromEvent, merge } from 'rxjs';\nimport { filter, startWith, switchMap } from 'rxjs/operators';\nimport { MapService } from '../map/map.service';\nimport { MarkerComponent } from '../marker/marker.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { LayerComponent } from '../layer/layer.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * a template directive for point for {@link MarkersForClustersComponent}\n *\n * @category Directives\n */\n@Directive({\n selector: 'ng-template[mglPoint]',\n})\nexport class PointDirective {}\n\n/**\n * a template directive for clustered point for {@link MarkersForClustersComponent}\n *\n * @category Directives\n */\n@Directive({\n selector: 'ng-template[mglClusterPoint]',\n})\nexport class ClusterPointDirective {}\n\nlet uniqId = 0;\n\n/**\n * [ngx] `mgl-markers-for-clusters` - an HTML marker component for clustered points.\n * Requires a geojson source that is clustered.\n *\n * @category Components\n *\n * @example\n * ```html\n * ...\n * <mgl-map ...>\n * <mgl-markers-for-cluster [source]=\"myGeoJsonclusteredSource\">\n * <ng-template mglPoint let-feature> Marker! </ng-template>\n * <ng-template mglClusterPoint let-feature>\n * ClusterId: {{feature.properties?.cluster_id}}, Points:\n * {{feature.properties?.point_count}}\n * </ng-template>\n * </mgl-markers-for-cluster>\n * </mgl-map>\n * ```\n *\n * Note: Only use this if you **really** need to use HTML/Angular component to render your symbols. This is **slower** than rendering symbols in WebGL.\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 @for (feature of clusterPoints(); track $index) { \n @if (feature.properties.cluster) {\n <mgl-marker [feature]=\"feature\">\n <ng-container\n *ngTemplateOutlet=\"clusterPointTpl(); context: { $implicit: feature }\"\n ></ng-container>\n </mgl-marker>\n } @else {\n <mgl-marker [feature]=\"feature\">\n <ng-container\n *ngTemplateOutlet=\"pointTpl(); context: { $implicit: feature }\"\n ></ng-container>\n </mgl-marker>\n } \n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n imports: [LayerComponent, MarkerComponent, NgTemplateOutlet],\n})\nexport class MarkersForClustersComponent {\n private readonly destroyRef = inject(DestroyRef);\n private readonly mapService = inject(MapService);\n private readonly ngZone = inject(NgZone);\n\n /** Init input */\n readonly source = input.required<string>();\n\n /** @hidden */\n readonly pointTpl = contentChild<PointDirective, TemplateRef<PointDirective>>(\n PointDirective,\n {\n read: TemplateRef,\n }\n );\n /** @hidden */\n readonly clusterPointTpl = contentChild<\n ClusterPointDirective,\n TemplateRef<ClusterPointDirective>\n >(ClusterPointDirective, {\n read: TemplateRef,\n });\n\n /** @hidden */\n readonly clusterPoints = signal<MapGeoJSONFeature[]>([]);\n /** @hidden */\n readonly layerId = `mgl-markers-for-clusters-${uniqId++}`;\n\n constructor() {\n afterNextRender(() => {\n const clusterDataUpdate = () =>\n fromEvent<MapSourceDataEvent>(this.mapService.mapInstance, 'data').pipe(\n filter(\n (e) =>\n e.sourceId === this.source() &&\n e.sourceDataType !== 'metadata' &&\n this.mapService.mapInstance.isSourceLoaded(this.source())\n )\n );\n this.mapService.mapCreated$\n .pipe(\n switchMap(clusterDataUpdate),\n switchMap(() =>\n merge(\n fromEvent(this.mapService.mapInstance, 'move'),\n fromEvent(this.mapService.mapInstance, 'moveend')\n ).pipe(startWith(undefined))\n )\n )\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.ngZone.run(() => {\n this.updateCluster();\n });\n });\n });\n }\n\n private updateCluster() {\n const params = this.getClusterParams(this.pointTpl());\n this.clusterPoints.set(\n this.mapService.mapInstance.queryRenderedFeatures(params)\n );\n }\n\n getClusterParams(\n pointTpl: TemplateRef<PointDirective> | undefined\n ): QueryRenderedFeaturesOptions {\n if (!pointTpl) {\n return { layers: [this.layerId], filter: ['==', 'cluster', true] };\n }\n\n return { layers: [this.layerId] };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n afterNextRender,\n inject,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport type { LngLatLike, Offset, Popup, PopupOptions } from 'maplibre-gl';\nimport { MapService } from '../map/map.service';\nimport { MarkerComponent } from '../marker/marker.component';\nimport { tap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * `mgl-popup` - a popup component\n * @see [Popup](https://maplibre.org/maplibre-gl-js/docs/API/classes/Popup/)\n *\n * @category Components\n *\n * @example\n * ```html\n * ...\n * <mgl-map ...>\n * <mgl-popup [lngLat]=\"[-96, 37.8]\" [closeOnClick]=\"false\">\n * <h1>Hello world !</h1>\n * </mgl-popup>\n * ...\n * <mgl-marker #myMarker ...> ... </mgl-marker>\n * <mgl-popup [marker]=\"myMarker\"> Hello from marker ! </mgl-popup>\n * </mgl-map>\n * ```\n */\n@Component({\n selector: 'mgl-popup',\n template: '<div #content data-cy=\"mgl-popup\"><ng-content></ng-content></div>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PopupComponent implements OnChanges, OnInit, OnDestroy {\n /** Init injection */\n private readonly destroyRef = inject(DestroyRef);\n private readonly mapService = inject(MapService);\n\n /** Init input */\n readonly closeButton = input<PopupOptions['closeButton']>();\n\n /** Init input */\n readonly closeOnClick = input<PopupOptions['closeOnClick']>();\n\n /** Init input */\n readonly closeOnMove = input<PopupOptions['closeOnMove']>();\n\n /** Init input */\n readonly focusAfterOpen = input<PopupOptions['focusAfterOpen']>();\n\n /** Init input */\n readonly anchor = input<PopupOptions['anchor']>();\n\n /** Init input */\n readonly className = input<PopupOptions['className']>();\n\n /** Init input */\n readonly maxWidth = input<PopupOptions['maxWidth']>();\n\n /** Init input */\n readonly subpixelPositioning = input<PopupOptions['subpixelPositioning']>();\n\n /**\n * Dynamic input [ngx]\n * Mutually exclusive with `lngLat`\n */\n readonly feature = input<GeoJSON.Feature<GeoJSON.Point>>();\n\n /** Dynamic input */\n readonly lngLat = input<LngLatLike>();\n\n /**\n * Dynamic input [ngx]\n * The targeted marker\n */\n readonly marker = input<MarkerComponent>();\n\n /** Dynamic input */\n readonly offset = input<Offset>();\n\n readonly popupClose = output<void>();\n readonly popupOpen = output<void>();\n\n /** @hidden */\n readonly content = viewChild.required<ElementRef<HTMLDivElement>>('content');\n\n private popupInstance: maplibregl.Popup | null = null;\n\n constructor() {\n afterNextRender(() => {\n this.popupInstance = this.createPopup();\n this.addPopup(this.popupInstance)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe();\n });\n }\n\n ngOnInit() {\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 (changes.feature && !changes.feature.isFirstChange()) {\n const newlngLat = this.getLngLat(this.lngLat(), this.feature());\n this.mapService.removePopupFromMap(this.popupInstance!);\n const popupInstanceTmp = this.createPopup();\n this.mapService.addPopupToMap(\n popupInstanceTmp,\n newlngLat\n );\n this.popupInstance = popupInstanceTmp;\n }\n\n if (changes.lngLat && !changes.lngLat.isFirstChange()) {\n this.popupInstance!.setLngLat(changes.lngLat.currentValue);\n }\n\n if (changes.marker && !changes.marker.isFirstChange()) {\n const previousMarker: MarkerComponent = changes.marker.previousValue;\n const previousMarkerInstance = previousMarker.markerInstance();\n\n if (previousMarkerInstance) {\n this.mapService.removePopupFromMarker(previousMarkerInstance);\n }\n\n const markerInstance = this.marker()?.markerInstance();\n if (markerInstance && this.popupInstance) {\n this.mapService.addPopupToMarker(markerInstance, this.popupInstance);\n }\n }\n if (\n changes.offset &&\n !changes.offset.isFirstChange() &&\n this.popupInstance\n ) {\n this.popupInstance.setOffset(changes.offset.currentValue);\n }\n }\n\n ngOnDestroy(): void {\n this.removePopupFromMarker();\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 subpixelPositioning: this.subpixelPositioning(),\n },\n popupEvents: {\n popupOpen: this.popupOpen,\n popupClose: this.popupClose,\n },\n },\n this.content().nativeElement\n );\n }\n\n private addPopup(popup: Popup) {\n return this.mapService.mapCreated$.pipe(\n tap(() => {\n const lngLat = this.lngLat();\n const feature = this.feature();\n const markerInstance = this.marker()?.markerInstance();\n if (lngLat || feature) {\n this.mapService.addPopupToMap(popup, this.getLngLat(lngLat, feature));\n } else if (markerInstance) {\n this.mapService.addPopupToMarker(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\n removePopupFromMarker() {\n if (this.popupInstance) {\n const markerInstance = this.marker()?.markerInstance();\n if (this.lngLat() || this.feature()) {\n this.mapService.removePopupFromMap(this.popupInstance);\n } else if (markerInstance) {\n this.mapService.removePopupFromMarker(markerInstance);\n } else {\n this.mapService.removePopupFromMap(this.popupInstance);\n }\n }\n this.popupInstance = null;\n }\n\n getLngLat(\n lngLat: LngLatLike | undefined,\n feature: GeoJSON.Feature<GeoJSON.Point> | undefined\n ) {\n if (lngLat) {\n return lngLat;\n } else if (feature) {\n return feature.geometry.coordinates as [number, number];\n }\n throw new Error('lngLat or feature value is required');\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n OnChanges,\n SimpleChanges,\n inject,\n input,\n} from '@angular/core';\nimport type { CanvasSource, CanvasSourceSpecification } from 'maplibre-gl';\nimport { SourceDirective } from './source.directive';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { tap } from 'rxjs';\n\n/**\n * `mgl-canvas-source` - a canvas source component\n * @see [canvas](https://maplibre.org/maplibre-style-spec/sources/#canvas)\n *\n * @category Source Components\n */\n@Component({\n selector: 'mgl-canvas-source',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [{ directive: SourceDirective, inputs: ['id'] }],\n})\nexport class CanvasSourceComponent implements OnChanges {\n /** Init injections */\n private readonly sourceDirective = inject(SourceDirective);\n\n /** Dynamic input */\n readonly coordinates =\n input.required<CanvasSourceSpecification['coordinates']>();\n\n /** Dynamic input */\n readonly canvas = input.required<CanvasSourceSpecification['canvas']>();\n\n /** Dynamic input */\n readonly animate = input<CanvasSourceSpecification['animate']>();\n\n constructor() {\n this.sourceDirective.loadSource$\n .pipe(\n tap(() =>\n this.sourceDirective.addSource(this.getCanvasSourceSpecification() as any)\n ),\n takeUntilDestroyed()\n )\n .subscribe();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.sourceDirective.sourceId()) {\n return;\n }\n if (\n (changes.canvas && !changes.canvas.isFirstChange()) ||\n (changes.animate && !changes.animate.isFirstChange())\n ) {\n this.sourceDirective.refresh();\n } else if (changes.coordinates && !changes.coordinates.isFirstChange()) {\n const source = this.sourceDirective.getSource<CanvasSource>();\n if (source === undefined) {\n return;\n }\n source.setCoordinates(changes.coordinates.currentValue);\n }\n }\n\n getCanvasSourceSpecification(): CanvasSourceSpecification {\n return {\n type: 'canvas',\n coordinates: this.coordinates(),\n canvas: this.canvas(),\n animate: this.animate(),\n };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport type { ImageSourceSpecification, ImageSource } from 'maplibre-gl';\nimport { MapService } from '../map/map.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * `mgl-image-source` - an image source component\n * @see [image](https://maplibre.org/maplibre-style-spec/sources/#image)\n *\n * @category Source Components\n */\n@Component({\n selector: 'mgl-image-source',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageSourceComponent implements OnInit, OnDestroy, OnChanges {\n /** Init injection */\n private readonly destroyRef = inject(DestroyRef);\n private readonly mapService = inject(MapService);\n\n /** Init inputs */\n readonly id = input.required<string>();\n\n /** Dynamic inputs */\n readonly url = input.required<ImageSourceSpecification['url']>();\n readonly coordinates =\n input.required<ImageSourceSpecification['coordinates']>();\n\n readonly type: ImageSourceSpecification['type'] = 'image';\n\n private readonly sourceId = signal<string | null>(null);\n\n ngOnInit() {\n this.mapService.mapLoaded$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.addSource());\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const sourceId = this.sourceId();\n if (sourceId === null) {\n return;\n }\n const source = this.mapService.getSource<ImageSource>(sourceId);\n if (source === undefined) {\n return;\n }\n source.updateImage({\n url: changes.url === undefined ? (undefined as any) : this.url(),\n coordinates:\n changes.coordinates === undefined ? undefined : this.coordinates(),\n });\n }\n\n ngOnDestroy(): void {\n const sourceId = this.sourceId();\n if (sourceId !== null) {\n this.mapService.removeSource(sourceId);\n this.sourceId.set(null);\n }\n }\n\n private addSource() {\n const imageSource: ImageSourceSpecification = {\n type: 'image',\n url: this.url(),\n coordinates: this.coordinates(),\n };\n this.mapService.addSource(this.id(), imageSource);\n this.sourceId.set(this.id());\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n OnChanges,\n SimpleChanges,\n inject,\n input,\n} from '@angular/core';\nimport type { RasterDEMSourceSpecification } from 'maplibre-gl';\nimport { tap } from 'rxjs/operators';\nimport { SourceDirective } from './source.directive';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * `mgl-raster-dem-source` - a raster DEM source\n * @see [raster DEM](https://maplibre.org/maplibre-style-spec/sources/#raster-dem)\n *\n * @category Source Components\n */\n@Component({\n selector: 'mgl-raster-dem-source',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [{ directive: SourceDirective, inputs: ['id'] }],\n})\nexport class RasterDemSourceComponent implements OnChanges {\n /** Init injections */\n private readonly sourceDirective = inject(SourceDirective);\n\n /** Dynamic input */\n readonly url = input<RasterDEMSourceSpecification['url']>();\n\n /** Dynamic input */\n readonly tiles = input<RasterDEMSourceSpecification['tiles']>();\n\n /** Dynamic input */\n readonly bounds = input<RasterDEMSourceSpecification['bounds']>();\n\n /** Dynamic input */\n readonly minzoom = input<RasterDEMSourceSpecification['minzoom']>();\n\n /** Dynamic input */\n readonly maxzoom = input<RasterDEMSourceSpecification['maxzoom']>();\n\n /** Dynamic input */\n readonly tileSize = input<RasterDEMSourceSpecification['tileSize']>();\n\n /** Dynamic input */\n readonly attribution = input<RasterDEMSourceSpecification['attribution']>();\n\n /** Dynamic input */\n readonly encoding = input<RasterDEMSourceSpecification['encoding']>();\n\n constructor() {\n this.sourceDirective.loadSource$\n .pipe(\n tap(() =>\n this.sourceDirective.addSource(this.getRasterDEMSourceSpecification())\n ),\n takeUntilDestroyed()\n )\n .subscribe();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.sourceDirective.sourceId()) {\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.sourceDirective.refresh();\n }\n }\n\n getRasterDEMSourceSpecification(): RasterDEMSourceSpecification {\n return {\n type: 'raster-dem',\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 }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n OnChanges,\n SimpleChanges,\n inject,\n input,\n} from '@angular/core';\nimport type { RasterSourceSpecification } from 'maplibre-gl';\nimport { SourceDirective } from './source.directive';\nimport { tap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * `mgl-raster-source` - a raster source component\n * @see [raster](https://maplibre.org/maplibre-style-spec/sources/#raster)\n *\n * @category Source Components\n */\n@Component({\n selector: 'mgl-raster-source',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [{ directive: SourceDirective, inputs: ['id'] }],\n})\nexport class RasterSourceComponent implements OnChanges {\n /** Init injections */\n private readonly sourceDirective = inject(SourceDirective);\n\n /** Dynamic input */\n readonly url = input<RasterSourceSpecification['url']>();\n\n /** Dynamic input */\n readonly tiles = input<RasterSourceSpecification['tiles']>();\n\n /** Dynamic input */\n readonly bounds = input<RasterSourceSpecification['bounds']>();\n\n /** Dynamic input */\n readonly scheme = input<RasterSourceSpecification['scheme']>();\n\n /** Dynamic input */\n readonly minzoom = input<RasterSourceSpecification['minzoom']>();\n\n /** Dynamic input */\n readonly maxzoom = input<RasterSourceSpecification['maxzoom']>();\n\n /** Dynamic input */\n readonly tileSize = input<RasterSourceSpecification['tileSize']>();\n\n /** Dynamic input */\n readonly attribution = input<RasterSourceSpecification['attribution']>();\n\n constructor() {\n this.sourceDirective.loadSource$\n .pipe(\n tap(() =>\n this.sourceDirective.addSource(this.getRasterSourceSpecification())\n ),\n takeUntilDestroyed()\n )\n .subscribe();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.sourceDirective.sourceId()) {\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.sourceDirective.refresh();\n }\n }\n\n getRasterSourceSpecification(): RasterSourceSpecification {\n return {\n type: 'raster',\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 }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n OnChanges,\n SimpleChanges,\n inject,\n input,\n} from '@angular/core';\nimport type { VectorSourceSpecification, VectorTileSource } from 'maplibre-gl';\nimport { SourceDirective } from './source.directive';\nimport { tap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * `mgl-vector-source` - a vector source component\n * @see [vector](https://maplibre.org/maplibre-style-spec/sources/#vector)\n *\n * @category Source Components\n */\n@Component({\n selector: 'mgl-vector-source',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [{ directive: SourceDirective, inputs: ['id'] }],\n})\nexport class VectorSourceComponent implements OnChanges {\n /** Init injections */\n private readonly sourceDirective = inject(SourceDirective);\n\n /** Dynamic inputs */\n readonly url = input<VectorSourceSpecification['url']>();\n readonly tiles = input<VectorSourceSpecification['tiles']>();\n readonly bounds = input<VectorSourceSpecification['bounds']>();\n readonly scheme = input<VectorSourceSpecification['scheme']>();\n readonly minzoom = input<VectorSourceSpecification['minzoom']>();\n readonly maxzoom = input<VectorSourceSpecification['maxzoom']>();\n readonly attribution = input<VectorSourceSpecification['attribution']>();\n readonly promoteId = input<VectorSourceSpecification['promoteId']>();\n\n constructor() {\n this.sourceDirective.loadSource$\n .pipe(\n tap(() =>\n this.sourceDirective.addSource(this.getVectorSourceSpecification())\n ),\n takeUntilDestroyed()\n )\n .subscribe();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.sourceDirective.sourceId()) {\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.sourceDirective.refresh();\n } else if (\n (changes.url && !changes.url.isFirstChange()) ||\n (changes.tiles && !changes.tiles.isFirstChange())\n ) {\n const source = this.sourceDirective.getSource<VectorTileSource>();\n if (source === undefined) {\n return;\n }\n const url = this.url();\n if (changes.url && url) {\n source.setUrl(url);\n }\n\n const tiles = this.tiles();\n if (changes.tiles && tiles) {\n source.setTiles(tiles);\n }\n }\n }\n\n getVectorSourceSpecification(): VectorSourceSpecification {\n return {\n type: 'vector',\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 }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n OnChanges,\n SimpleChanges,\n inject,\n input,\n} from '@angular/core';\nimport type { VideoSource, VideoSourceSpecification } from 'maplibre-gl';\nimport { SourceDirective } from './source.directive';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { tap } from 'rxjs';\n\n/**\n * `mgl-video-source` - a video source\n * @see [video](https://maplibre.org/maplibre-style-spec/sources/#video)\n *\n * @category Source Components\n */\n@Component({\n selector: 'mgl-video-source',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [{ directive: SourceDirective, inputs: ['id'] }],\n})\nexport class VideoSourceComponent\n implements OnChanges\n{\n private readonly sourceDirective = inject(SourceDirective);\n\n /** Dynamic input */\n readonly urls = input.required<VideoSourceSpecification['urls']>();\n\n /** Dynamic input */\n readonly coordinates =\n input.required<VideoSourceSpecification['coordinates']>();\n\n constructor() {\n\n this.sourceDirective.loadSource$.pipe(\n tap(() => this.addSource()),\n takeUntilDestroyed()\n ).subscribe();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.sourceDirective.sourceId()) {\n return;\n }\n\n if (changes.urls && !changes.urls.isFirstChange()) {\n this.sourceDirective.refresh();\n } else if (changes.coordinates && !changes.coordinates.isFirstChange()) {\n const source = this.sourceDirective.getSource<VideoSource>();\n if (source === undefined) {\n return;\n }\n source.setCoordinates(changes.coordinates.currentValue);\n }\n }\n\n addSource() {\n const source: VideoSourceSpecification = {\n type: 'video',\n urls: this.urls(),\n coordinates: this.coordinates(),\n };\n this.sourceDirective.addSource(source);\n }\n}\n","import { 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 { TerrainControlDirective } from './control/terrain-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 { 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';\nimport { SourceDirective } from './source/source.directive';\n\nconst componentsAndDirectives = [\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 TerrainControlDirective,\n SourceDirective\n];\n\n@NgModule({\n imports: [...componentsAndDirectives],\n exports: [...componentsAndDirectives],\n})\nexport class NgxMapLibreGLModule {}\n","import { Directive, afterNextRender, inject } from '@angular/core';\nimport { GlobeControl } from 'maplibre-gl';\nimport { MapService } from '../map/map.service';\nimport { ControlComponent } from './control.component';\n\n/**\n * `mglGlobe` - a globe control directive\n *\n * @category Directives\n *\n * @see [Globe](https://maplibre.org/ngx-maplibre-gl/demo/globe)\n * @see [GlobeControl](https://maplibre.org/maplibre-gl-js/docs/API/classes/GlobeControl)\n */\n@Directive({\n selector: '[mglGlobe]',\n})\nexport class GlobeControlDirective {\n\n private readonly mapService = inject(MapService);\n private readonly controlComponent = inject<ControlComponent<GlobeControl>>(\n ControlComponent,\n { host: true }\n );\n\n constructor() {\n afterNextRender(() => {\n this.mapService.mapCreated$.subscribe(() => {\n if (this.controlComponent.control) {\n throw new Error('Another control is already set for this control');\n }\n\n this.controlComponent.control = new GlobeControl();\n\n this.mapService.addControl(\n this.controlComponent.control,\n this.controlComponent.position()\n );\n });\n });\n }\n}\n","/*\n * Public API Surface of ngx-maplibre-gl\n */\n\nexport * from './lib/ngx-maplibre-gl.module';\n\n// Expose components 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/source.directive';\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';\nexport * from './lib/control/terrain-control.directive';\nexport * from './lib/control/globe-control.directive';\n\n// Expose MapService for ngx-maplibre-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 * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["MaplibreMap","tap"],"mappings":"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"}