@acorex/components 22.1.0-next.0 → 22.1.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/combo-box/README.md +12 -3
- package/fesm2022/acorex-components-action-sheet.mjs +1 -0
- package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
- package/fesm2022/acorex-components-button.mjs +2 -2
- package/fesm2022/acorex-components-button.mjs.map +1 -1
- package/fesm2022/acorex-components-combo-box.mjs +372 -30
- package/fesm2022/acorex-components-combo-box.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation.mjs +2 -2
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-decorators.mjs +19 -3
- package/fesm2022/acorex-components-decorators.mjs.map +1 -1
- package/fesm2022/acorex-components-dialog.mjs +4 -2
- package/fesm2022/acorex-components-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-drawer.mjs +2 -2
- package/fesm2022/acorex-components-drawer.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown.mjs +4 -4
- package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
- package/fesm2022/acorex-components-fab.mjs +2 -2
- package/fesm2022/acorex-components-fab.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +2 -2
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-lookup.mjs +724 -175
- package/fesm2022/acorex-components-lookup.mjs.map +1 -1
- package/fesm2022/acorex-components-map.mjs +2 -2
- package/fesm2022/acorex-components-map.mjs.map +1 -1
- package/fesm2022/acorex-components-menu.mjs +26 -6
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-notification.mjs +9 -2
- package/fesm2022/acorex-components-notification.mjs.map +1 -1
- package/fesm2022/acorex-components-password-box.mjs +1 -1
- package/fesm2022/acorex-components-password-box.mjs.map +1 -1
- package/fesm2022/acorex-components-popover.mjs +7 -6
- package/fesm2022/acorex-components-popover.mjs.map +1 -1
- package/fesm2022/acorex-components-popup.mjs +4 -2
- package/fesm2022/acorex-components-popup.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler.mjs +6 -6
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs +19 -9
- package/fesm2022/acorex-components-select-box.mjs.map +1 -1
- package/fesm2022/acorex-components-text-area.mjs +2 -2
- package/fesm2022/acorex-components-text-area.mjs.map +1 -1
- package/fesm2022/acorex-components-toast.mjs +9 -2
- package/fesm2022/acorex-components-toast.mjs.map +1 -1
- package/fesm2022/acorex-components-tooltip.mjs +2 -2
- package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
- package/lookup/README.md +13 -8
- package/package.json +3 -3
- package/select-box/README.md +5 -0
- package/types/acorex-components-action-sheet.d.ts +9 -1
- package/types/acorex-components-combo-box.d.ts +147 -18
- package/types/acorex-components-decorators.d.ts +1 -0
- package/types/acorex-components-dialog.d.ts +9 -0
- package/types/acorex-components-lookup.d.ts +260 -90
- package/types/acorex-components-menu.d.ts +2 -0
- package/types/acorex-components-notification.d.ts +11 -1
- package/types/acorex-components-popover.d.ts +4 -1
- package/types/acorex-components-popup.d.ts +9 -1
- package/types/acorex-components-select-box.d.ts +10 -4
- package/types/acorex-components-toast.d.ts +10 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-map.mjs","sources":["../../../../packages/components/map/src/lib/map.config.ts","../../../../packages/components/map/src/lib/poi.provider.ts","../../../../packages/components/map/src/lib/map-layers.ts","../../../../packages/components/map/src/lib/map.service.ts","../../../../packages/components/map/src/lib/map.component.ts","../../../../packages/components/map/src/lib/map.component.html","../../../../packages/components/map/src/lib/map.module.ts","../../../../packages/components/map/src/acorex-components-map.ts"],"sourcesContent":["import { AX_GLOBAL_CONFIG } from '@acorex/core/config';\nimport { InjectionToken, inject } from '@angular/core';\nimport { set } from 'lodash-es';\n\nexport interface AXMapConfig {\n layers: string;\n layers2x: string;\n markerIcon: string;\n markerIcon2x: string;\n markerShadow: string;\n}\n\nexport const AX_MAP_CONFIG = new InjectionToken<AXMapConfig>('AX_MAP_CONFIG', {\n providedIn: 'root',\n factory: () => {\n const global = inject(AX_GLOBAL_CONFIG);\n set(global, 'layout.map', AX_MAP_CONFIG);\n return AXMapDefaultConfig;\n },\n});\n\nexport const baseUrl = '/assets/images/leaflet/';\n\nexport const AXMapDefaultConfig: AXMapConfig = {\n layers: `${baseUrl}layers.png`,\n layers2x: `${baseUrl}layers-2x.png`,\n markerIcon: `${baseUrl}marker-icon.png`,\n markerIcon2x: `${baseUrl}marker-icon-2x.png`,\n markerShadow: `${baseUrl}marker-shadow.png`,\n};\n\nexport type PartialMapConfig = Partial<AXMapConfig>;\n\nexport function mapConfig(config: PartialMapConfig = {}): AXMapConfig {\n const result = {\n ...AXMapDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { AXPoiMarker } from './map.type';\n\nexport interface AXPoiProvider {\n get key(): string;\n provide(): Promise<AXPoiMarker[]>;\n}\n\nexport const AX_MAP_POI_PROVIDER = new InjectionToken<AXPoiProvider[]>('AX_MAP_POI_PROVIDER');\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPoiProviderService {\n private providers: AXPoiProvider[] = inject(AX_MAP_POI_PROVIDER, { optional: true }) ?? [];\n private cache = new Map<string, AXPoiMarker[]>();\n\n async getList(): Promise<AXPoiMarker[]> {\n const result: AXPoiMarker[] = [];\n const providers = Array.isArray(this.providers) ? this.providers : [this.providers];\n for (const provider of providers) {\n if (!this.cache.has(provider.key)) {\n const list = await provider.provide();\n this.cache.set(provider.key, list);\n }\n const items = this.cache.get(provider.key) ?? [];\n result.push(...items);\n }\n\n return result;\n }\n}\n","import type * as L from 'leaflet';\n\nexport interface AXMapLayerGroups {\n markerLayer: L.FeatureGroup;\n polygonLayer: L.FeatureGroup;\n polylineLayer: L.FeatureGroup;\n rectangleLayer: L.FeatureGroup;\n circleLayer: L.FeatureGroup;\n poiLayer: L.FeatureGroup;\n boundaryLayer: L.FeatureGroup;\n editableItems: L.FeatureGroup;\n}\n\n/**\n * Creates typed Leaflet layer groups for map features and a composite feature group\n * used by leaflet-draw for edit/delete across all editable layers.\n */\nexport function createMapLayerGroups(\n L: typeof import('leaflet'),\n map: L.Map,\n resolveEditableLayer: (layer: L.Layer) => L.FeatureGroup | undefined,\n): AXMapLayerGroups {\n const markerLayer = new L.FeatureGroup();\n const polygonLayer = new L.FeatureGroup();\n const polylineLayer = new L.FeatureGroup();\n const rectangleLayer = new L.FeatureGroup();\n const circleLayer = new L.FeatureGroup();\n const poiLayer = new L.FeatureGroup();\n const boundaryLayer = new L.FeatureGroup();\n\n const editableTypeLayers = [markerLayer, polygonLayer, polylineLayer, rectangleLayer, circleLayer];\n\n // Z-order: boundary and shapes below markers/POIs\n boundaryLayer.addTo(map);\n polygonLayer.addTo(map);\n polylineLayer.addTo(map);\n rectangleLayer.addTo(map);\n circleLayer.addTo(map);\n markerLayer.addTo(map);\n poiLayer.addTo(map);\n\n const editableItems = createCompositeFeatureGroup(L, editableTypeLayers, resolveEditableLayer);\n\n return {\n markerLayer,\n polygonLayer,\n polylineLayer,\n rectangleLayer,\n circleLayer,\n poiLayer,\n boundaryLayer,\n editableItems,\n };\n}\n\nfunction createCompositeFeatureGroup(\n L: typeof import('leaflet'),\n typeLayers: L.FeatureGroup[],\n resolveEditableLayer: (layer: L.Layer) => L.FeatureGroup | undefined,\n): L.FeatureGroup {\n const composite = new L.FeatureGroup();\n\n composite.getLayers = () => typeLayers.flatMap((layer) => layer.getLayers());\n\n composite.eachLayer = function (fn: (layer: L.Layer) => void, context?: object) {\n typeLayers.forEach((group) => group.eachLayer(fn, context));\n return composite;\n };\n\n composite.addLayer = function (layer: L.Layer) {\n const target = resolveEditableLayer(layer);\n target?.addLayer(layer);\n return composite;\n };\n\n composite.removeLayer = function (layer: L.Layer) {\n for (const group of typeLayers) {\n if (group.hasLayer(layer)) {\n group.removeLayer(layer);\n break;\n }\n }\n return composite;\n };\n\n composite.clearLayers = function () {\n typeLayers.forEach((group) => group.clearLayers());\n return composite;\n };\n\n composite.hasLayer = function (layer: L.Layer) {\n return typeLayers.some((group) => group.hasLayer(layer));\n };\n\n return composite;\n}\n","import { AXIconResolverService } from '@acorex/core/icon';\nimport { EventEmitter, inject, Injectable } from '@angular/core';\nimport { AX_MAP_CONFIG } from './map.config';\nimport {\n AXMapCircle,\n AXMapControlPlace,\n AXMapData,\n AXMapLatLng,\n AXMapLocation,\n AXMapMarker,\n AXMapPolygon,\n AXMapPolyline,\n AXMapRectangle,\n AXPoiMarker,\n} from './map.type';\nimport { AXPoiProviderService } from './poi.provider';\nimport { createMapLayerGroups } from './map-layers';\n\n/**\n * Service for managing Leaflet maps and related functionalities.\n */\n@Injectable()\nexport class AXLeafletService {\n private mapConfig = inject(AX_MAP_CONFIG);\n private iconResolver = inject(AXIconResolverService, { optional: true });\n private poiProviderService = inject(AXPoiProviderService, { optional: true });\n private defaultIcon: any;\n private position: AXMapControlPlace = 'topleft';\n private maxMarkers: number | null = null;\n private maxPolygons: number | null = null;\n private maxPolylines: number | null = null;\n private maxRectangles: number | null = null;\n private maxCircles: number | null = null;\n private shapeColor = 'blue';\n private poiMinZoom = 10; // Default minimum zoom level to show POIs\n private poiMarkers: L.Marker[] = []; // Track all POI markers\n\n protected L: typeof import('leaflet');\n private map?: L.Map;\n private drawControl?: L.Control.Draw;\n private locateControl?: L.Control.Locate;\n private markerLayer!: L.FeatureGroup;\n private polygonLayer!: L.FeatureGroup;\n private polylineLayer!: L.FeatureGroup;\n private rectangleLayer!: L.FeatureGroup;\n private circleLayer!: L.FeatureGroup;\n private poiLayer!: L.FeatureGroup;\n private boundaryLayer!: L.FeatureGroup;\n /** Composite group for leaflet-draw edit/delete across all editable layers */\n private drawnItems!: L.FeatureGroup;\n private boundary: AXMapPolygon[] | null = null;\n private _addMarkerOnTapEnabled = false;\n private _isCurrentlyDrawing = false;\n private _hasDrawControl = false;\n private _isReadonly = false;\n private _isDisabled = false;\n private _isUpdatingCenter = false; // Flag to prevent feedback loops\n\n /**\n * Emits when the zoom level of the map changes.\n */\n public onZoomChanged = new EventEmitter<number>();\n\n /**\n * Emits when the longitude of the map center changes.\n */\n public onLongitudeChanged = new EventEmitter<number>();\n\n /**\n * Emits when the latitude of the map center changes.\n */\n public onLatitudeChanged = new EventEmitter<number>();\n\n /**\n * Emits when marker data changes.\n */\n public onMarkerChanged = new EventEmitter<AXMapMarker[]>();\n /**\n * Emits when a poi is added.\n */\n public onPoiAdded = new EventEmitter<AXPoiMarker>();\n /**\n * Emits when a poi is changed.\n */\n public onPoiChanged = new EventEmitter<AXPoiMarker[]>();\n /**\n * Emits when a marker is added.\n */\n public onMarkerAdded = new EventEmitter<AXMapMarker>();\n /**\n * Emits when a marker is clicked.\n */\n public onMarkerClick = new EventEmitter<AXMapMarker>();\n /**\n * Emits when the user's location is found.\n */\n public onLocationFound = new EventEmitter<AXMapLocation>();\n /**\n * Emits when polygon data changes.\n */\n public onPolygonChanged = new EventEmitter<AXMapPolygon[]>();\n /**\n * Emits when an error occurs during map load/initialization\n */\n public onLoadError = new EventEmitter<Error>();\n /**\n * Emits when a polygon is added.\n */\n public onPolygonAdded = new EventEmitter<AXMapPolygon>();\n /**\n * Emits when a polygon is clicked.\n */\n public onPolygonClick = new EventEmitter<AXMapPolygon>();\n /**\n * Emits when polyline data changes.\n */\n public onPolylineChanged = new EventEmitter<AXMapPolyline[]>();\n /**\n * Emits when a polyline is added.\n */\n public onPolylineAdded = new EventEmitter<AXMapPolyline>();\n /**\n * Emits when a polyline is clicked.\n */\n public onPolylineClick = new EventEmitter<AXMapPolyline>();\n /**\n * Emits when rectangle data changes.\n */\n public onRectangleChanged = new EventEmitter<AXMapRectangle[]>();\n /**\n * Emits when a rectangle is added.\n */\n public onRectangleAdded = new EventEmitter<AXMapRectangle>();\n /**\n * Emits when a rectangle is clicked.\n */\n public onRectangleClick = new EventEmitter<AXMapRectangle>();\n /**\n * Emits when circle data changes.\n */\n public onCircleChanged = new EventEmitter<AXMapCircle[]>();\n /**\n * Emits when a circle is added.\n */\n public onCircleAdded = new EventEmitter<AXMapCircle>();\n /**\n * Emits when a circle is clicked.\n */\n public onCircleClick = new EventEmitter<AXMapCircle>();\n /**\n * Loads the Leaflet library and its plugins.\n */\n public async loadLeaflet(): Promise<void> {\n try {\n const leafletModule = await import('leaflet');\n this.L = leafletModule.default ?? leafletModule; // handle default export\n\n await import('leaflet-draw');\n this.patchLeafletDraw();\n await import('leaflet.locatecontrol');\n\n // Set up default icon from mapConfig\n this.defaultIcon = this.L.icon({\n iconUrl: this.mapConfig.markerIcon,\n shadowUrl: this.mapConfig.markerShadow,\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n shadowSize: [41, 41],\n popupAnchor: [0, -40],\n });\n } catch (error) {\n console.error('Error Loading Leaflet:', error);\n // Emit load error for consumers\n this.onLoadError.emit(error instanceof Error ? error : new Error(String(error)));\n throw new Error(`Failed to load Leaflet library: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n }\n\n /**\n * Initializes the Leaflet map.\n * @param mapElement The HTML element to render the map in.\n * @param location The initial map center.\n * @param zoom The initial zoom level. Defaults to 13.\n */\n public async initMap(mapElement: HTMLElement, location: AXMapLatLng, zoom = 13) {\n try {\n await this.loadLeaflet();\n const map = this.L.map(mapElement).setView([location.latitude, location.longitude], zoom);\n this.L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n maxZoom: 20,\n noWrap: true,\n attribution: '© ACoreX',\n }).addTo(map);\n this.initMapLayers(map);\n this.map = map;\n\n // Add event listeners for zoom and move changes\n this.map.on('zoomend', () => this.handleZoomChange());\n this.map.on('moveend', () => this.handleCenterChange());\n\n // Add click listener for adding markers on tap\n this.map.on('click', async (e: any) => {\n if (this._addMarkerOnTapEnabled && !this._isDrawingMode() && !this._isDisabled && !this._isReadonly) {\n // Check max markers limit\n if (this.maxMarkers !== null && this.getMarkers().length >= this.maxMarkers) {\n console.warn('Markers reached max count.');\n return;\n }\n\n const latlng = e.latlng;\n const newMarker: AXMapMarker = { latitude: latlng.lat, longitude: latlng.lng };\n await this.addMarker(newMarker, true);\n }\n });\n\n // Load POIs from providers\n await this.loadPoisFromProviders();\n } catch (error) {\n console.error('Error initializing Leaflet map:', error);\n this.onLoadError.emit(error instanceof Error ? error : new Error(String(error)));\n throw error;\n }\n }\n\n private handleZoomChange(): void {\n if (this.map) {\n const currentZoom = this.map.getZoom();\n this.onZoomChanged.emit(currentZoom);\n\n // Show/hide POIs based on zoom level\n this.updatePoiVisibility(currentZoom);\n }\n }\n\n private handleCenterChange(): void {\n // Don't emit if we're programmatically updating the center (prevents feedback loop)\n if (this.map && !this._isUpdatingCenter) {\n const center = this.map.getCenter();\n this.onLatitudeChanged.emit(center.lat);\n this.onLongitudeChanged.emit(center.lng);\n }\n }\n\n private initMapLayers(map: L.Map): void {\n const layers = createMapLayerGroups(this.L, map, (layer) => this.resolveEditableLayer(layer));\n\n this.markerLayer = layers.markerLayer;\n this.polygonLayer = layers.polygonLayer;\n this.polylineLayer = layers.polylineLayer;\n this.rectangleLayer = layers.rectangleLayer;\n this.circleLayer = layers.circleLayer;\n this.poiLayer = layers.poiLayer;\n this.boundaryLayer = layers.boundaryLayer;\n this.drawnItems = layers.editableItems;\n }\n\n private get editableTypeLayers(): L.FeatureGroup[] {\n return [this.markerLayer, this.polygonLayer, this.polylineLayer, this.rectangleLayer, this.circleLayer];\n }\n\n private resolveEditableLayer(layer: L.Layer): L.FeatureGroup | undefined {\n if (layer instanceof this.L.Marker) {\n return this.markerLayer;\n }\n if (this.isPolygonLayer(layer)) {\n return this.polygonLayer;\n }\n if (this.isPolylineLayer(layer)) {\n return this.polylineLayer;\n }\n if (this.isRectangleLayer(layer)) {\n return this.rectangleLayer;\n }\n if (this.isCircleLayer(layer)) {\n return this.circleLayer;\n }\n return undefined;\n }\n\n private forEachEditableLayer(fn: (layer: L.Layer) => void): void {\n this.editableTypeLayers.forEach((group) => group.eachLayer(fn));\n }\n\n private getAllEditableLayers(): L.Layer[] {\n return this.editableTypeLayers.flatMap((group) => group.getLayers());\n }\n\n /**\n * Creates a custom icon from SVG string or URL using the icon resolver if possible\n * @param iconSrc Path to the icon, SVG string, or icon key\n * @returns Leaflet icon\n */\n public async setCustomIcon(iconSrc: string): Promise<any> {\n if (!iconSrc) {\n return this.defaultIcon;\n }\n\n try {\n // Try to resolve using the icon resolver if available\n if (this.iconResolver) {\n try {\n const resolvedIcon = await this.iconResolver.resolve(iconSrc);\n if (resolvedIcon) {\n return this.createLeafletIcon(resolvedIcon);\n }\n } catch (error) {\n console.warn(`Error resolving icon: ${iconSrc}`, error);\n }\n }\n\n // If resolver not available or resolution failed, treat as direct content\n return this.createLeafletIcon(iconSrc);\n } catch (error) {\n console.warn(`Error creating custom icon: ${iconSrc}`, error);\n return this.defaultIcon;\n }\n }\n\n /**\n * Creates a Leaflet icon from SVG or URL\n * @param iconSrc The icon source (SVG string or URL)\n * @returns Leaflet icon\n */\n private createLeafletIcon(iconSrc: string): any {\n if (!iconSrc) {\n return this.defaultIcon;\n }\n\n try {\n // Check if the iconSrc is a URL or SVG string\n const isSvgString = iconSrc.trim().startsWith('<svg');\n\n if (isSvgString) {\n // Create a div icon with the SVG content\n return this.L.divIcon({\n html: iconSrc,\n className: 'ax-map-custom-icon',\n iconSize: [25, 25],\n iconAnchor: [12, 12],\n popupAnchor: [0, -12],\n });\n } else {\n // Create an icon with the URL\n return this.L.icon({\n iconUrl: iconSrc,\n iconSize: [25, 25],\n iconAnchor: [12, 12],\n popupAnchor: [0, -12],\n });\n }\n } catch (error) {\n console.warn(`Error creating icon from source: ${iconSrc}`, error);\n return this.defaultIcon;\n }\n }\n\n /**\n * Gets the Leaflet map instance.\n * @returns The Leaflet map instance, or undefined if not initialized.\n */\n public getMap(): L.Map | undefined {\n return this.map;\n }\n\n /**\n * Gets the Leaflet package.\n * @returns The Leaflet package.\n */\n public getLeafletPackage(): typeof import('leaflet') {\n return this.L;\n }\n\n /**\n * Sets the zoom level of the map.\n * @param zoom The desired zoom level.\n */\n public setZoomLevel(zoom: number): void {\n if (this.map) {\n this.map.setZoom(zoom);\n this.handleZoomChange(); // Emit zoom change event\n }\n }\n\n /**\n * Sets the center of the map.\n * @param location The new center location.\n */\n public setCenter(location: AXMapLatLng): void {\n if (this.map && location) {\n const currentCenter = this.map.getCenter();\n const newLat = location.latitude;\n const newLng = location.longitude;\n\n // Only update if center actually changed (avoid unnecessary updates)\n if (Math.abs(currentCenter.lat - newLat) > 0.0001 || Math.abs(currentCenter.lng - newLng) > 0.0001) {\n this._isUpdatingCenter = true;\n this.map.setView([newLat, newLng], this.map.getZoom());\n // Reset flag after a short delay to allow moveend event to fire\n setTimeout(() => {\n this._isUpdatingCenter = false;\n }, 100);\n }\n }\n }\n\n /**\n * Flies to a specific location on the map.\n * @param location The target location.\n * @param zoom The target zoom level (optional).\n * @param setMarker Whether to add a marker at the destination after flying.\n * @param duration The duration of the fly animation in seconds.\n */\n public flyTo(location: AXMapLatLng, zoom?: number, setMarker = false, duration = 1.0): void {\n if (this.map && location) {\n this.map.flyTo([location.latitude, location.longitude], zoom || this.map.getZoom(), {\n animate: true,\n duration: duration,\n });\n if (setMarker) {\n this.map.once('moveend', () => {\n this.addMarker(location);\n this.handleCenterChange(); // Emit center change events after flying\n });\n } else {\n this.map.once('moveend', () => this.handleCenterChange()); // Emit center change events after flying\n }\n }\n }\n\n /**\n * Gets all markers currently on the map.\n * @returns An array of AXMapMarker objects.\n */\n public getMarkers(): AXMapMarker[] {\n if (!this.markerLayer) {\n return [];\n }\n\n return this.markerLayer\n .getLayers()\n .filter((layer) => layer instanceof this.L.Marker)\n .map((marker) => {\n const latLng = (marker as L.Marker).getLatLng();\n const location = (marker as any).location || {};\n return {\n latitude: latLng.lat,\n longitude: latLng.lng,\n title: location.title || marker.options.title,\n iconKey: location.iconKey,\n icon: location.icon,\n popup: location.popup,\n popupOpen: location.popupOpen,\n popupCloseButton: location.popupCloseButton,\n id: location.id,\n isLocked: location.isLocked,\n } as AXMapMarker;\n });\n }\n /**\n * Gets all polygons currently on the map.\n * @returns An array of AXMapPolygon objects.\n */\n public getPolygons(): AXMapPolygon[] {\n if (!this.polygonLayer) {\n return [];\n }\n\n return this.polygonLayer\n .getLayers()\n .filter((layer) => this.isPolygonLayer(layer))\n .map((polygon) => {\n const latLngs = polygon.getLatLngs()[0]; // Access the outer boundary\n const meta = (polygon as any).polygon as AXMapPolygon | undefined;\n\n const points: AXMapLatLng[] = (latLngs as any).map((latLng) => ({\n latitude: latLng.lat,\n longitude: latLng.lng,\n }));\n\n return {\n points,\n title: meta?.title,\n color: polygon.options?.color,\n id: meta?.id,\n isLocked: meta?.isLocked,\n };\n });\n }\n\n /**\n * Gets all polylines currently on the map.\n */\n public getPolylines(): AXMapPolyline[] {\n if (!this.polylineLayer) {\n return [];\n }\n\n return this.polylineLayer\n .getLayers()\n .filter((layer) => this.isPolylineLayer(layer))\n .map((polyline) => {\n const latLngs = polyline.getLatLngs() as L.LatLng[];\n const meta = (polyline as any).polyline as AXMapPolyline | undefined;\n\n return {\n points: latLngs.map((latLng) => ({\n latitude: latLng.lat,\n longitude: latLng.lng,\n })),\n title: meta?.title,\n color: polyline.options?.color,\n id: meta?.id,\n isLocked: meta?.isLocked,\n };\n });\n }\n\n /**\n * Gets all rectangles currently on the map.\n */\n public getRectangles(): AXMapRectangle[] {\n if (!this.rectangleLayer) {\n return [];\n }\n\n return this.rectangleLayer\n .getLayers()\n .filter((layer) => this.isRectangleLayer(layer))\n .map((rectangle) => {\n const bounds = rectangle.getBounds();\n const meta = (rectangle as any).rectangle as AXMapRectangle | undefined;\n\n return {\n southWest: {\n latitude: bounds.getSouthWest().lat,\n longitude: bounds.getSouthWest().lng,\n },\n northEast: {\n latitude: bounds.getNorthEast().lat,\n longitude: bounds.getNorthEast().lng,\n },\n title: meta?.title,\n color: rectangle.options?.color,\n id: meta?.id,\n isLocked: meta?.isLocked,\n };\n });\n }\n\n /**\n * Gets all circles currently on the map.\n */\n public getCircles(): AXMapCircle[] {\n if (!this.circleLayer) {\n return [];\n }\n\n return this.circleLayer\n .getLayers()\n .filter((layer) => this.isCircleLayer(layer))\n .map((circle) => {\n const center = circle.getLatLng();\n const meta = (circle as any).circle as AXMapCircle | undefined;\n\n return {\n center: {\n latitude: center.lat,\n longitude: center.lng,\n },\n radius: circle.getRadius(),\n title: meta?.title,\n color: circle.options?.color,\n id: meta?.id,\n isLocked: meta?.isLocked,\n };\n });\n }\n\n /**\n * Gets POI markers from the POI layer.\n * @returns Array of POI markers.\n */\n public getPois(): AXPoiMarker[] {\n const pois: AXPoiMarker[] = [];\n if (!this.poiLayer || !this.map) {\n return pois;\n }\n\n this.poiLayer.eachLayer((layer: any) => {\n if (layer instanceof this.L.Marker) {\n const latLng = layer.getLatLng();\n const poi: AXPoiMarker = {\n latitude: latLng.lat,\n longitude: latLng.lng,\n };\n\n // Extract additional properties if available\n if (layer.options.title) {\n poi.title = layer.options.title;\n }\n if ((layer.options as any).iconKey) {\n poi.iconKey = (layer.options as any).iconKey;\n }\n if ((layer.options as any).providerKey) {\n (poi as any).providerKey = (layer.options as any).providerKey;\n }\n if ((layer.options as any).minZoom !== undefined) {\n poi.minZoom = (layer.options as any).minZoom;\n }\n\n // Handle popup if available\n const popup = layer.getPopup();\n if (popup) {\n const content = popup.getContent();\n poi.popup = typeof content === 'string' ? content : '';\n poi.popupOpen = layer.isPopupOpen();\n }\n\n pois.push(poi);\n }\n });\n\n return pois;\n }\n\n /**\n * Adds a draw control to the map for creating markers, polygons, polylines, rectangles, and circles.\n */\n public addDrawControl(\n position: AXMapControlPlace = 'topleft',\n maxMarkers?: number,\n maxPolygons?: number,\n maxPolylines?: number,\n maxRectangles?: number,\n maxCircles?: number,\n shapeColor?: string,\n ): void {\n this._hasDrawControl = true;\n this.position = position;\n if (maxMarkers !== undefined) this.maxMarkers = maxMarkers;\n if (maxPolygons !== undefined) this.maxPolygons = maxPolygons;\n if (maxPolylines !== undefined) this.maxPolylines = maxPolylines;\n if (maxRectangles !== undefined) this.maxRectangles = maxRectangles;\n if (maxCircles !== undefined) this.maxCircles = maxCircles;\n if (shapeColor) this.shapeColor = shapeColor;\n\n if (this.drawControl) {\n this.map?.removeControl(this.drawControl);\n this.drawControl = undefined;\n }\n\n if (this.map) {\n this.drawControl = new this.L.Control.Draw({\n position: this.position,\n edit: {\n featureGroup: this.drawnItems,\n },\n draw: {\n marker: this.canDrawMoreMarkers() ? { icon: this.defaultIcon } : false,\n polygon: this.canDrawMorePolygons() ? {} : false,\n polyline: this.canDrawMorePolylines() ? {} : false,\n rectangle: this.canDrawMoreRectangles() ? {} : false,\n circle: this.canDrawMoreCircles() ? {} : false,\n circlemarker: false,\n },\n });\n this.map.addControl(this.drawControl);\n\n const onCreated = (event: any) => {\n const layer = event.layer;\n if (layer instanceof this.L.Marker) {\n const markerData = { latitude: layer.getLatLng().lat, longitude: layer.getLatLng().lng };\n this.addMarker(markerData);\n } else if (this.isPolygonLayer(layer)) {\n const latLngs = layer.getLatLngs();\n const polygonData: AXMapPolygon = {\n points: (latLngs[0] as Array<any>).map((latLng) => ({\n latitude: latLng.lat,\n longitude: latLng.lng,\n })),\n color: this.shapeColor || this.getRandomColorName(),\n };\n this.addPolygon(polygonData);\n } else if (this.isPolylineLayer(layer)) {\n const latLngs = layer.getLatLngs() as L.LatLng[];\n const polylineData: AXMapPolyline = {\n points: latLngs.map((latLng) => ({\n latitude: latLng.lat,\n longitude: latLng.lng,\n })),\n color: this.shapeColor || this.getRandomColorName(),\n };\n this.addPolyline(polylineData);\n } else if (this.isRectangleLayer(layer)) {\n const bounds = layer.getBounds();\n const rectangleData: AXMapRectangle = {\n southWest: {\n latitude: bounds.getSouthWest().lat,\n longitude: bounds.getSouthWest().lng,\n },\n northEast: {\n latitude: bounds.getNorthEast().lat,\n longitude: bounds.getNorthEast().lng,\n },\n color: this.shapeColor || this.getRandomColorName(),\n };\n this.addRectangle(rectangleData);\n } else if (this.isCircleLayer(layer)) {\n const center = layer.getLatLng();\n const circleData: AXMapCircle = {\n center: {\n latitude: center.lat,\n longitude: center.lng,\n },\n radius: layer.getRadius(),\n color: this.shapeColor || this.getRandomColorName(),\n };\n this.addCircle(circleData);\n } else {\n console.warn('Unsupported layer type drawn:', layer);\n }\n };\n\n const onDeleted = (event: any) => {\n const deletedLayers = event.layers;\n const layersToReAdd: L.Layer[] = [];\n\n deletedLayers.eachLayer((layer: L.Layer) => {\n if (layer instanceof this.L.Marker) {\n const loc = (layer as any).location as AXMapMarker;\n if (loc?.isLocked) {\n layersToReAdd.push(layer);\n }\n } else if (this.isPolygonLayer(layer)) {\n const meta = (layer as any).polygon as AXMapPolygon | undefined;\n if (meta?.isLocked) {\n layersToReAdd.push(layer);\n }\n } else if (this.isPolylineLayer(layer)) {\n const meta = (layer as any).polyline as AXMapPolyline | undefined;\n if (meta?.isLocked) {\n layersToReAdd.push(layer);\n }\n } else if (this.isRectangleLayer(layer)) {\n const meta = (layer as any).rectangle as AXMapRectangle | undefined;\n if (meta?.isLocked) {\n layersToReAdd.push(layer);\n }\n } else if (this.isCircleLayer(layer)) {\n const meta = (layer as any).circle as AXMapCircle | undefined;\n if (meta?.isLocked) {\n layersToReAdd.push(layer);\n }\n } else {\n console.warn('Unsupported layer type deleted:', layer);\n }\n });\n\n layersToReAdd.forEach((layer) => {\n this.drawnItems.addLayer(layer);\n });\n\n this.onMarkerChanged.emit(this.getMarkers());\n this.onPolygonChanged.emit(this.getPolygons());\n this.onPolylineChanged.emit(this.getPolylines());\n this.onRectangleChanged.emit(this.getRectangles());\n this.onCircleChanged.emit(this.getCircles());\n this.refreshDrawControl();\n };\n\n const onEdited = (event: any) => {\n const layers = event.layers;\n layers.eachLayer((layer: L.Layer) => {\n if (layer instanceof this.L.Marker) {\n const loc = (layer as any).location as AXMapMarker;\n if (loc?.isLocked) {\n (layer as L.Marker).setLatLng(this.L.latLng(loc.latitude, loc.longitude));\n } else {\n const latlng = (layer as L.Marker).getLatLng();\n const newLocation = { latitude: latlng.lat, longitude: latlng.lng };\n\n if (this.boundary) {\n const isWithinBounds = this.boundary.some((boundaryPolygon) =>\n this.isPointInPolygon(newLocation, boundaryPolygon),\n );\n if (!isWithinBounds) {\n (layer as L.Marker).setLatLng(this.L.latLng(loc.latitude, loc.longitude));\n console.warn('Marker movement outside the boundary is not allowed.');\n return;\n }\n }\n\n loc.latitude = latlng.lat;\n loc.longitude = latlng.lng;\n }\n this.onMarkerChanged.emit(this.getMarkers());\n } else if (this.isPolygonLayer(layer)) {\n const latLngs = (layer as L.Polygon).getLatLngs()[0];\n const polygonPoints = (latLngs as any).map((latLng: any) => ({\n latitude: latLng.lat,\n longitude: latLng.lng,\n }));\n\n if (this.boundary && !this.arePointsWithinBoundary(polygonPoints)) {\n console.warn('Polygon editing outside the boundary is not allowed.');\n return;\n }\n\n const existing = (layer as any).polygon as AXMapPolygon | undefined;\n if (existing) {\n (layer as any).polygon = { ...existing, points: polygonPoints };\n }\n\n this.onPolygonChanged.emit(this.getPolygons());\n } else if (this.isPolylineLayer(layer)) {\n const latLngs = (layer as L.Polyline).getLatLngs() as L.LatLng[];\n const polylinePoints = latLngs.map((latLng) => ({\n latitude: latLng.lat,\n longitude: latLng.lng,\n }));\n\n if (this.boundary && !this.arePointsWithinBoundary(polylinePoints)) {\n console.warn('Polyline editing outside the boundary is not allowed.');\n return;\n }\n\n const existing = (layer as any).polyline as AXMapPolyline | undefined;\n if (existing) {\n (layer as any).polyline = { ...existing, points: polylinePoints };\n }\n\n this.onPolylineChanged.emit(this.getPolylines());\n } else if (this.isRectangleLayer(layer)) {\n const bounds = (layer as L.Rectangle).getBounds();\n const rectangleData: AXMapRectangle = {\n southWest: {\n latitude: bounds.getSouthWest().lat,\n longitude: bounds.getSouthWest().lng,\n },\n northEast: {\n latitude: bounds.getNorthEast().lat,\n longitude: bounds.getNorthEast().lng,\n },\n };\n\n if (this.boundary && !this.arePointsWithinBoundary(this.getRectangleCornerPoints(rectangleData))) {\n console.warn('Rectangle editing outside the boundary is not allowed.');\n return;\n }\n\n const existing = (layer as any).rectangle as AXMapRectangle | undefined;\n if (existing) {\n (layer as any).rectangle = { ...existing, ...rectangleData };\n }\n\n this.onRectangleChanged.emit(this.getRectangles());\n } else if (this.isCircleLayer(layer)) {\n const center = (layer as L.Circle).getLatLng();\n const circleData: AXMapCircle = {\n center: {\n latitude: center.lat,\n longitude: center.lng,\n },\n radius: (layer as L.Circle).getRadius(),\n };\n\n if (\n this.boundary &&\n !this.boundary.some((boundaryPolygon) => this.isPointInPolygon(circleData.center, boundaryPolygon))\n ) {\n console.warn('Circle editing outside the boundary is not allowed.');\n return;\n }\n\n const existing = (layer as any).circle as AXMapCircle | undefined;\n if (existing) {\n (layer as any).circle = { ...existing, ...circleData };\n }\n\n this.onCircleChanged.emit(this.getCircles());\n } else {\n console.warn('Unsupported layer type edited:', layer);\n }\n });\n };\n\n this.map.off('draw:created');\n this.map.off('draw:deleted');\n this.map.off('draw:edited');\n this.map.off('draw:drawstart');\n this.map.off('draw:drawstop');\n\n this.map.on('draw:created', onCreated);\n this.map.on('draw:deleted', onDeleted);\n this.map.on('draw:edited', onEdited);\n\n this.map.on('draw:drawstart', () => {\n this._isCurrentlyDrawing = true;\n });\n\n this.map.on('draw:drawstop', () => {\n this._isCurrentlyDrawing = false;\n });\n }\n }\n\n /**\n * Adds a locate control to the map.\n * @param position The position of the control on the map. Defaults to 'bottomright'.\n */\n public addLocateControl(position: AXMapControlPlace = 'bottomright'): void {\n if (this.locateControl) {\n this.map?.removeControl(this.locateControl);\n this.locateControl = undefined;\n }\n if (this.map) {\n const locateControl = this.L.control\n .locate({\n position: position,\n flyTo: true,\n setView: 'untilPanOrZoom',\n showPopup: true,\n onLocationError: (e) => console.warn(e.message),\n onLocationOutsideMapBounds: (control) => control.stop(),\n locateOptions: {\n enableHighAccuracy: true,\n },\n strings: {\n title: 'Show my location',\n popup: 'You are within {distance} meters from this point',\n outsideMapBoundsMsg: 'You seem to be outside the map bounds',\n },\n })\n .addTo(this.map);\n\n this.locateControl = locateControl;\n\n const onLocationFound = (event: any) => {\n const location: AXMapLocation = {\n latitude: event.latitude,\n longitude: event.longitude,\n precision: event.accuracy,\n };\n this.onLocationFound.emit(location);\n };\n\n this.map.on('locationfound', onLocationFound);\n }\n }\n\n private availableColors = ['red', 'blue', 'green', 'orange', 'purple', 'brown', 'black'];\n\n private getRandomColorName = () => {\n const randomIndex = Math.floor(Math.random() * this.availableColors.length);\n return this.availableColors[randomIndex];\n };\n\n /**\n * Removes the draw control from the map.\n */\n public removeDrawControl(): void {\n if (this.drawControl) {\n this.map?.removeControl(this.drawControl);\n this.drawControl = undefined;\n }\n }\n\n /**\n * Removes the locate control from the map.\n */\n public removeLocateControl(): void {\n if (this.map && this.locateControl) {\n this.map.removeControl(this.locateControl);\n this.locateControl = undefined;\n }\n }\n\n /**\n * Clears all drawn items, including markers, polygons, and POIs.\n * @param clearPois Whether to clear POI markers as well. Defaults to false.\n */\n public clearDrawItems(clearPois = false): void {\n if (!this.map || !this.drawnItems) {\n return;\n }\n\n this.drawnItems.clearLayers();\n if (this._hasDrawControl) {\n this.refreshDrawControl();\n }\n\n // Clear POI layer if requested\n if (clearPois && this.poiLayer) {\n this.poiLayer.clearLayers();\n this.poiMarkers = [];\n this.onPoiChanged.emit([]);\n\n if (this.poiProviderService) {\n this.loadPoisFromProviders();\n }\n }\n\n this.onMarkerChanged.emit([]);\n this.onPolygonChanged.emit([]);\n this.onPolylineChanged.emit([]);\n this.onRectangleChanged.emit([]);\n this.onCircleChanged.emit([]);\n }\n\n /**\n * Gets the current drawn items (markers and polygons).\n * @returns An object containing arrays of markers and polygons.\n */\n public getDrawItem(): AXMapData {\n return {\n pois: this.getPois(),\n markers: this.getMarkers(),\n polygons: this.getPolygons(),\n polylines: this.getPolylines(),\n rectangles: this.getRectangles(),\n circles: this.getCircles(),\n };\n }\n\n /**\n * Sets the drawn items on the map.\n */\n public async setDrawItem(data: AXMapData) {\n await this.addMarker(data.markers);\n this.addPolygon(data.polygons);\n this.addPolyline(data.polylines ?? []);\n this.addRectangle(data.rectangles ?? []);\n this.addCircle(data.circles ?? []);\n await this.addPoi(data.pois);\n }\n\n /**\n * Adjusts the map view to fit all markers, polygons, and boundaries currently on the map.\n * POIs are included based on the includePois parameter.\n */\n public fitBoundsToDrawItems(includePois = false): void {\n if (!this.map) {\n return;\n }\n\n const layersToFit: L.Layer[] = [...this.getAllEditableLayers()];\n\n if (includePois && this.poiLayer) {\n layersToFit.push(...this.poiLayer.getLayers());\n }\n\n if (this.boundaryLayer) {\n layersToFit.push(...this.boundaryLayer.getLayers());\n }\n\n if (layersToFit.length > 0) {\n const featureGroup = this.L.featureGroup(layersToFit);\n const bounds = featureGroup.getBounds();\n if (bounds.isValid()) {\n this.map.fitBounds(bounds, { padding: [50, 50] });\n }\n }\n }\n\n /**\n * Sets a boundary for restricting markers and polygons.\n * @param boundaryPolygon The polygon defining the boundary area.\n */\n\n public setBoundary(boundaryPolygons: AXMapPolygon[]): void {\n if (!this.L || !boundaryPolygons || boundaryPolygons.length === 0) {\n console.warn('Invalid boundary polygons provided.');\n return;\n }\n\n // Store the boundary polygons\n this.boundary = boundaryPolygons;\n this.boundaryLayer.clearLayers();\n\n boundaryPolygons.forEach((boundaryPolygon) => {\n if (boundaryPolygon.points.length < 3) {\n console.warn('Invalid boundary polygon provided.');\n return;\n }\n\n const polygon = this.L.polygon(\n boundaryPolygon.points.map((point) => [point.latitude, point.longitude]),\n { color: boundaryPolygon.color ?? 'green', weight: 2, fillOpacity: 0.1, dashArray: '0 10 5 0' },\n );\n\n this.boundaryLayer.addLayer(polygon);\n });\n }\n\n // Add this utility function to your code\n isPointInPolygon(point: AXMapLatLng, polygon: AXMapPolygon): boolean {\n const x = point.latitude;\n const y = point.longitude;\n let inside = false;\n\n for (let i = 0, j = polygon.points.length - 1; i < polygon.points.length; j = i++) {\n const xi = polygon.points[i].latitude;\n const yi = polygon.points[i].longitude;\n const xj = polygon.points[j].latitude;\n const yj = polygon.points[j].longitude;\n\n const intersect = yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;\n\n if (intersect) inside = !inside;\n }\n\n return inside;\n }\n\n /**\n * Removes the boundary, allowing unrestricted drawing.\n */\n public removeBoundary(): void {\n this.boundaryLayer?.clearLayers();\n this.boundary = null;\n }\n\n /**\n * Destroys the map instance and removes all event listeners.\n */\n public destroyMap(): void {\n // Clear POI marker references\n this.poiMarkers = [];\n\n if (this.map) {\n this.map.off();\n this.map.remove();\n this.map = undefined;\n this.drawControl = undefined;\n this.locateControl = undefined;\n }\n }\n\n /**\n * Updates a marker's popup text and options\n * @param marker The marker to update\n * @param popup The new popup text\n * @param open Whether the popup should be opened after update\n * @param closeButton Whether the popup should have a close button\n * @returns True if the update was successful, false otherwise\n */\n public updateMarkerPopup(marker: AXMapMarker, popup: string, open = false, closeButton = true): boolean {\n if (!this.map) return false;\n\n // Find the marker in the drawn items\n const markerLayer = this.findMarkerLayer(marker);\n if (!markerLayer) return false;\n\n // Update the popup\n markerLayer.unbindPopup();\n markerLayer.bindPopup(popup, {\n closeButton: closeButton,\n className: 'ax-map-popup',\n });\n\n // Open popup if requested\n if (open) {\n markerLayer.openPopup();\n }\n\n // Update the marker data\n (markerLayer as any).location.popup = popup;\n (markerLayer as any).location.popupOpen = open;\n (markerLayer as any).location.popupCloseButton = closeButton;\n\n return true;\n }\n\n /**\n * Finds a marker layer by its latitude and longitude\n * @param marker The marker to find\n * @returns The Leaflet marker layer or undefined if not found\n */\n private findMarkerLayer(marker: AXMapMarker): L.Marker | undefined {\n let foundMarker: L.Marker | undefined;\n\n this.markerLayer.eachLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n const layerLatLng = layer.getLatLng();\n if (layerLatLng.lat === marker.latitude && layerLatLng.lng === marker.longitude) {\n foundMarker = layer as L.Marker;\n }\n }\n });\n\n return foundMarker;\n }\n\n /**\n * Updates popups for multiple markers in a single operation\n * @param updates Array of marker popup updates\n * @returns Number of markers successfully updated\n */\n public updateMarkerPopups(\n updates: { marker: AXMapMarker; popup: string; open?: boolean; closeButton?: boolean }[],\n ): number {\n if (!this.map) return 0;\n\n let successCount = 0;\n\n // Create a map of coordinates to marker layers for faster lookup\n const markerLayerMap = new Map<string, L.Marker>();\n\n this.markerLayer.eachLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n const latLng = layer.getLatLng();\n const key = `${latLng.lat},${latLng.lng}`;\n markerLayerMap.set(key, layer as L.Marker);\n }\n });\n\n // Process updates using the map for faster lookups\n updates.forEach((update) => {\n const key = `${update.marker.latitude},${update.marker.longitude}`;\n const markerLayer = markerLayerMap.get(key);\n\n if (markerLayer) {\n // Update popup\n markerLayer.unbindPopup();\n markerLayer.bindPopup(update.popup, {\n closeButton: update.closeButton ?? true,\n className: 'ax-map-popup',\n });\n\n // Open popup if requested\n if (update.open) {\n markerLayer.openPopup();\n }\n\n // Update marker data\n (markerLayer as any).location.popup = update.popup;\n (markerLayer as any).location.popupOpen = update.open ?? false;\n (markerLayer as any).location.popupCloseButton = update.closeButton ?? true;\n\n successCount++;\n }\n });\n\n return successCount;\n }\n\n /**\n * Adds a marker or markers to the map.\n * @param locations The marker or markers to add.\n */\n public async addMarker(locations: AXMapMarker | AXMapMarker[], emitEvents = true): Promise<void> {\n if (!this.map || !this.L) {\n console.warn('Map or Leaflet not initialized.');\n return;\n }\n\n if (\n this.maxMarkers !== null &&\n this.getMarkers().length + (Array.isArray(locations) ? locations.length : 1) > this.maxMarkers\n ) {\n console.warn('Markers Reached max count.');\n }\n\n const locationsArray = Array.isArray(locations) ? locations : [locations];\n\n for (const location of locationsArray) {\n // Check if the marker is within any of the boundary polygons\n if (this.boundary) {\n const isWithinBounds = this.boundary.some((boundaryPolygon) =>\n this.isPointInPolygon(location, boundaryPolygon),\n );\n if (!isWithinBounds) {\n console.warn('Marker placement outside the boundary is not allowed.');\n continue;\n }\n }\n\n // Get icon from either iconKey or direct icon\n let markerIcon = this.defaultIcon;\n if (location.iconKey) {\n markerIcon = await this.setCustomIcon(location.iconKey);\n }\n\n // Add the marker to the map\n const marker = this.L.marker([location.latitude, location.longitude], {\n icon: markerIcon,\n draggable: !location.isLocked && !!this.drawControl && !this._isDisabled && !this._isReadonly,\n });\n\n // Handle popup if provided\n if (location.popup) {\n marker.bindPopup(location.popup, {\n closeButton: location.popupCloseButton !== false,\n className: 'ax-map-popup',\n });\n\n if (location.popupOpen) {\n marker.openPopup();\n }\n }\n\n // Store the location data for later retrieval\n (marker as any).location = location;\n\n marker.on('click', () => {\n this.onMarkerClick.emit(location);\n });\n\n // Handle drag events (without emitting to avoid performance issues)\n marker.on('drag', (event) => {\n const latlng = (event.target as L.Marker).getLatLng();\n const loc = (event.target as any).location as AXMapMarker;\n if (loc?.isLocked) {\n (event.target as L.Marker).setLatLng(this.L.latLng(loc.latitude, loc.longitude));\n return;\n }\n\n // Check boundary during drag\n if (this.boundary) {\n const newLocation = { latitude: latlng.lat, longitude: latlng.lng };\n const isWithinBounds = this.boundary.some((boundaryPolygon) =>\n this.isPointInPolygon(newLocation, boundaryPolygon),\n );\n if (!isWithinBounds) {\n // Revert to original position if outside boundary\n (event.target as L.Marker).setLatLng(this.L.latLng(loc.latitude, loc.longitude));\n return;\n }\n }\n\n // Update location data during drag (but don't emit to avoid lag)\n loc.latitude = latlng.lat;\n loc.longitude = latlng.lng;\n });\n\n marker.on('dragend', (event) => {\n const latlng = (event.target as L.Marker).getLatLng();\n const loc = (event.target as any).location as AXMapMarker;\n if (loc?.isLocked) {\n // revert drag\n (event.target as L.Marker).setLatLng(this.L.latLng(loc.latitude, loc.longitude));\n return;\n }\n\n // Final boundary check on drag end\n if (this.boundary) {\n const newLocation = { latitude: latlng.lat, longitude: latlng.lng };\n const isWithinBounds = this.boundary.some((boundaryPolygon) =>\n this.isPointInPolygon(newLocation, boundaryPolygon),\n );\n if (!isWithinBounds) {\n // Revert to original position if outside boundary\n (event.target as L.Marker).setLatLng(this.L.latLng(loc.latitude, loc.longitude));\n console.warn('Marker movement outside the boundary is not allowed.');\n return;\n }\n }\n\n loc.latitude = latlng.lat;\n loc.longitude = latlng.lng;\n this.onMarkerChanged.emit(this.getMarkers());\n });\n\n this.markerLayer.addLayer(marker);\n if (emitEvents) {\n this.onMarkerAdded.emit(location);\n }\n }\n if (emitEvents) {\n this.onMarkerChanged.emit(this.getMarkers());\n }\n\n if (this.getMarkers().length === this.maxMarkers && this._hasDrawControl) {\n this.refreshDrawControl();\n }\n }\n\n /**\n * Adds a polygon or polygons to the map, respecting the boundary if set.\n * @param polygons The polygon or polygons to add.\n * @param clickCallback Optional callback function to be executed on polygon click.\n */\n public addPolygon(polygons: AXMapPolygon | AXMapPolygon[], emitEvents = true): void {\n if (!this.map || !this.L) {\n console.warn('Map or Leaflet not initialized.');\n return;\n }\n\n const polygonsToAdd = Array.isArray(polygons) ? polygons : [polygons];\n\n polygonsToAdd.forEach((polygon) => {\n if (polygon.points.length < 3) {\n console.warn('Polygon needs 3 or more points.');\n return;\n }\n\n if (this.maxPolygons !== null && this.getPolygons().length >= this.maxPolygons) {\n console.warn('Polygon reached max count.');\n return;\n }\n\n // Check if all polygon points are within any of the boundary polygons\n if (this.boundary) {\n const isWithinBounds = polygon.points.every((point) =>\n this.boundary.some((boundaryPolygon) => this.isPointInPolygon(point, boundaryPolygon)),\n );\n\n if (!isWithinBounds) {\n console.warn('Polygon drawing outside the boundary is not allowed.');\n return;\n }\n }\n\n // Create the polygon\n const latLngs = polygon.points.map((point) => this.L.latLng(point.latitude, point.longitude));\n const newPolygon = new this.L.Polygon(latLngs, { color: polygon.color || 'blue' });\n\n // Store metadata for later lookup/removal by id\n (newPolygon as any).polygon = polygon;\n\n if (polygon.title) {\n newPolygon.bindPopup(polygon.title);\n }\n\n newPolygon.on('click', () => {\n this.onPolygonClick.emit(polygon);\n });\n\n // Add the polygon to the map\n this.polygonLayer.addLayer(newPolygon);\n\n // Emit events\n if (emitEvents) {\n this.onPolygonAdded.emit(polygon);\n this.onPolygonChanged.emit(this.getPolygons());\n }\n });\n\n if (this.getPolygons().length === this.maxPolygons && this._hasDrawControl) {\n this.refreshDrawControl();\n }\n }\n\n /**\n * Adds a polyline or polylines to the map.\n */\n public addPolyline(polylines: AXMapPolyline | AXMapPolyline[], emitEvents = true): void {\n if (!this.map || !this.L) {\n console.warn('Map or Leaflet not initialized.');\n return;\n }\n\n const polylinesToAdd = Array.isArray(polylines) ? polylines : [polylines];\n\n polylinesToAdd.forEach((polyline) => {\n if (polyline.points.length < 2) {\n console.warn('Polyline needs 2 or more points.');\n return;\n }\n\n if (this.maxPolylines !== null && this.getPolylines().length >= this.maxPolylines) {\n console.warn('Polyline reached max count.');\n return;\n }\n\n if (this.boundary && !this.arePointsWithinBoundary(polyline.points)) {\n console.warn('Polyline drawing outside the boundary is not allowed.');\n return;\n }\n\n const latLngs = polyline.points.map((point) => this.L.latLng(point.latitude, point.longitude));\n const newPolyline = new this.L.Polyline(latLngs, { color: polyline.color || this.shapeColor });\n\n (newPolyline as any).polyline = polyline;\n\n if (polyline.title) {\n newPolyline.bindPopup(polyline.title);\n }\n\n newPolyline.on('click', () => {\n this.onPolylineClick.emit(polyline);\n });\n\n this.polylineLayer.addLayer(newPolyline);\n\n if (emitEvents) {\n this.onPolylineAdded.emit(polyline);\n this.onPolylineChanged.emit(this.getPolylines());\n }\n });\n\n if (this.getPolylines().length === this.maxPolylines && this._hasDrawControl) {\n this.refreshDrawControl();\n }\n }\n\n /**\n * Adds a rectangle or rectangles to the map.\n */\n public addRectangle(rectangles: AXMapRectangle | AXMapRectangle[], emitEvents = true): void {\n if (!this.map || !this.L) {\n console.warn('Map or Leaflet not initialized.');\n return;\n }\n\n const rectanglesToAdd = Array.isArray(rectangles) ? rectangles : [rectangles];\n\n rectanglesToAdd.forEach((rectangle) => {\n if (this.maxRectangles !== null && this.getRectangles().length >= this.maxRectangles) {\n console.warn('Rectangle reached max count.');\n return;\n }\n\n const cornerPoints = this.getRectangleCornerPoints(rectangle);\n if (this.boundary && !this.arePointsWithinBoundary(cornerPoints)) {\n console.warn('Rectangle drawing outside the boundary is not allowed.');\n return;\n }\n\n const bounds = this.L.latLngBounds(\n [rectangle.southWest.latitude, rectangle.southWest.longitude],\n [rectangle.northEast.latitude, rectangle.northEast.longitude],\n );\n const newRectangle = new this.L.Rectangle(bounds, { color: rectangle.color || this.shapeColor });\n\n (newRectangle as any).rectangle = rectangle;\n\n if (rectangle.title) {\n newRectangle.bindPopup(rectangle.title);\n }\n\n newRectangle.on('click', () => {\n this.onRectangleClick.emit(rectangle);\n });\n\n this.rectangleLayer.addLayer(newRectangle);\n\n if (emitEvents) {\n this.onRectangleAdded.emit(rectangle);\n this.onRectangleChanged.emit(this.getRectangles());\n }\n });\n\n if (this.getRectangles().length === this.maxRectangles && this._hasDrawControl) {\n this.refreshDrawControl();\n }\n }\n\n /**\n * Adds a circle or circles to the map.\n */\n public addCircle(circles: AXMapCircle | AXMapCircle[], emitEvents = true): void {\n if (!this.map || !this.L) {\n console.warn('Map or Leaflet not initialized.');\n return;\n }\n\n const circlesToAdd = Array.isArray(circles) ? circles : [circles];\n\n circlesToAdd.forEach((circle) => {\n if (circle.radius <= 0) {\n console.warn('Circle radius must be greater than 0.');\n return;\n }\n\n if (this.maxCircles !== null && this.getCircles().length >= this.maxCircles) {\n console.warn('Circle reached max count.');\n return;\n }\n\n if (\n this.boundary &&\n !this.boundary.some((boundaryPolygon) => this.isPointInPolygon(circle.center, boundaryPolygon))\n ) {\n console.warn('Circle drawing outside the boundary is not allowed.');\n return;\n }\n\n const newCircle = new this.L.Circle([circle.center.latitude, circle.center.longitude], {\n radius: circle.radius,\n color: circle.color || this.shapeColor,\n });\n\n (newCircle as any).circle = circle;\n\n if (circle.title) {\n newCircle.bindPopup(circle.title);\n }\n\n newCircle.on('click', () => {\n this.onCircleClick.emit(circle);\n });\n\n this.circleLayer.addLayer(newCircle);\n\n if (emitEvents) {\n this.onCircleAdded.emit(circle);\n this.onCircleChanged.emit(this.getCircles());\n }\n });\n\n if (this.getCircles().length === this.maxCircles && this._hasDrawControl) {\n this.refreshDrawControl();\n }\n }\n\n /**\n * Adds a POI marker to the map.\n * @param locations One or more POI markers to add.\n */\n public async addPoi(locations: AXPoiMarker | AXPoiMarker[]): Promise<void> {\n if (!this.map || !this.poiLayer) {\n return;\n }\n\n const addSinglePoi = async (poi: AXPoiMarker) => {\n try {\n let icon = this.defaultIcon;\n\n if (poi.iconKey) {\n icon = await this.setCustomIcon(poi.iconKey);\n }\n\n const markerOptions: L.MarkerOptions = {\n icon,\n title: poi.title,\n draggable: !this._isDisabled && !this._isReadonly,\n };\n\n // Add custom properties to options\n (markerOptions as any).iconKey = poi.iconKey;\n (markerOptions as any).providerKey = (poi as any).providerKey;\n // Store minZoom property in marker options\n (markerOptions as any).minZoom = poi.minZoom !== undefined ? poi.minZoom : this.poiMinZoom;\n\n const marker = this.L.marker([poi.latitude, poi.longitude], markerOptions);\n\n if (poi.popup) {\n marker.bindPopup(poi.popup, {\n closeButton: poi.popupCloseButton !== false,\n });\n\n if (poi.popupOpen) {\n marker.openPopup();\n }\n }\n\n marker.on('dragend', (event) => {\n const latLng = event.target.getLatLng();\n // Update poi location data in the marker\n (event.target as any).poi = {\n ...poi,\n latitude: latLng.lat,\n longitude: latLng.lng,\n };\n\n this.onPoiChanged.emit(this.getPois());\n });\n\n this.poiLayer.addLayer(marker);\n // Track this marker for visibility control\n this.poiMarkers.push(marker);\n this.onPoiAdded.emit(poi);\n } catch (error) {\n console.error('Error adding POI marker:', error);\n }\n };\n\n if (Array.isArray(locations)) {\n await Promise.all(locations.map((loc) => addSinglePoi(loc)));\n } else {\n await addSinglePoi(locations);\n }\n\n // Set initial visibility based on current zoom\n if (this.map) {\n this.updatePoiVisibility(this.map.getZoom());\n }\n\n this.onPoiChanged.emit(this.getPois());\n }\n\n /**\n * Updates the visibility of POI markers based on the current zoom level\n * @param currentZoom The current zoom level of the map\n */\n private updatePoiVisibility(currentZoom: number): void {\n // Check each marker individually against its own minZoom value or the global one\n this.poiMarkers.forEach((marker) => {\n const el = marker.getElement();\n if (el) {\n // Use the marker's specific minZoom if available, otherwise use the global setting\n const markerMinZoom =\n (marker.options as any).minZoom !== undefined ? (marker.options as any).minZoom : this.poiMinZoom;\n\n const isVisible = currentZoom >= markerMinZoom;\n\n el.style.opacity = isVisible ? '1' : '0';\n // Disable pointer events when hidden\n el.style.pointerEvents = isVisible ? 'auto' : 'none';\n }\n });\n }\n\n /**\n * Sets the minimum zoom level at which POI markers become visible\n * @param minZoom The minimum zoom level (default is 10)\n */\n public setPoiMinZoom(minZoom: number): void {\n this.poiMinZoom = minZoom;\n\n if (this.map) {\n this.updatePoiVisibility(this.map.getZoom());\n }\n }\n\n /**\n * Gets the current minimum zoom level for POI visibility\n * @returns The minimum zoom level\n */\n public getPoiMinZoom(): number {\n return this.poiMinZoom;\n }\n\n /**\n * Loads POIs from all registered providers\n */\n public async loadPoisFromProviders(): Promise<void> {\n if (!this.map || !this.poiProviderService) {\n return;\n }\n\n try {\n const pois = await this.poiProviderService.getList();\n if (pois.length > 0) {\n await this.addPoi(pois);\n }\n } catch (error) {\n console.error('Error loading POIs from providers:', error);\n }\n }\n\n /**\n * Refreshes POIs from providers, clearing existing POIs first\n */\n public async refreshPois(): Promise<void> {\n if (!this.map || !this.poiLayer || !this.poiProviderService) {\n return;\n }\n\n // Clear existing POIs\n this.poiLayer.clearLayers();\n this.poiMarkers = [];\n\n // Load POIs from providers\n await this.loadPoisFromProviders();\n }\n\n /**\n * Refreshes POIs from a specific provider by key\n * @param providerKey The key of the provider to refresh\n */\n public async refreshPoiByProvider(providerKey: string): Promise<void> {\n if (!this.map || !this.poiLayer || !this.poiProviderService) {\n return;\n }\n\n try {\n // Remove existing POIs for this provider\n const currentPois = this.getPois();\n\n // First remove all POI markers from this provider from the map\n this.poiMarkers = this.poiMarkers.filter((marker) => {\n const latLng = marker.getLatLng();\n const isPoi = currentPois.some(\n (poi) =>\n poi.latitude === latLng.lat && poi.longitude === latLng.lng && (poi as any).providerKey === providerKey,\n );\n\n if (isPoi) {\n this.poiLayer.removeLayer(marker);\n return false;\n }\n return true;\n });\n\n // Get fresh POIs from the provider\n const pois = await this.poiProviderService.getList();\n\n // Filter POIs from the specific provider\n const providerPois = pois.filter((poi) => (poi as any).providerKey === providerKey);\n\n // Add the refreshed POIs\n if (providerPois.length > 0) {\n await this.addPoi(providerPois);\n }\n\n this.onPoiChanged.emit(this.getPois());\n } catch (error) {\n console.error(`Error refreshing POIs from provider ${providerKey}:`, error);\n }\n }\n\n /**\n * Sets whether markers can be added by clicking/tapping on the map\n * @param enabled Whether to enable marker-on-tap functionality\n */\n public setAddMarkerOnTap(enabled: boolean): void {\n this._addMarkerOnTapEnabled = enabled;\n }\n\n /**\n * Checks if the map is currently in drawing mode\n * @returns True if currently drawing\n */\n private _isDrawingMode(): boolean {\n return this._isCurrentlyDrawing;\n }\n\n /**\n * Removes markers by id or location. If no location provided, removes all markers.\n */\n public removeMarker(locations?: AXMapMarker | AXMapMarker[]): void {\n if (!this.markerLayer || !this.L) return;\n\n const removeLayer = (layer: L.Layer) => this.markerLayer.removeLayer(layer);\n\n if (!locations) {\n this.markerLayer.clearLayers();\n this.onMarkerChanged.emit(this.getMarkers());\n if (this._hasDrawControl) {\n this.refreshDrawControl();\n }\n return;\n }\n\n const targets = Array.isArray(locations) ? locations : [locations];\n\n const findByIdOrLatLng = (target: AXMapMarker): L.Marker | undefined => {\n let found: L.Marker | undefined;\n this.markerLayer.eachLayer((layer) => {\n if (found) return;\n if (layer instanceof this.L.Marker) {\n const loc = (layer as any).location as AXMapMarker | undefined;\n const hasIdMatch =\n (target as any)?.id != null && (loc as any)?.id != null && (loc as any).id === (target as any).id;\n const hasPosMatch = loc && loc.latitude === target.latitude && loc.longitude === target.longitude;\n if (hasIdMatch || hasPosMatch) {\n found = layer as L.Marker;\n }\n }\n });\n return found;\n };\n\n targets.forEach((t) => {\n const layer = findByIdOrLatLng(t);\n if (layer) {\n removeLayer(layer);\n }\n });\n\n this.onMarkerChanged.emit(this.getMarkers());\n if (this._hasDrawControl) {\n this.refreshDrawControl();\n }\n }\n\n /**\n * Removes polygons by id or geometry. If no location provided, removes all polygons.\n */\n public removePolygon(locations?: AXMapPolygon | AXMapPolygon[]): void {\n if (!this.polygonLayer || !this.L) return;\n\n const removeLayer = (layer: L.Layer) => this.polygonLayer.removeLayer(layer);\n\n if (!locations) {\n this.polygonLayer.clearLayers();\n this.onPolygonChanged.emit(this.getPolygons());\n if (this._hasDrawControl) {\n this.refreshDrawControl();\n }\n return;\n }\n\n const targets = Array.isArray(locations) ? locations : [locations];\n\n const polygonsEqualByPoints = (a: AXMapPolygon, b: AXMapPolygon): boolean => {\n if (!a?.points || !b?.points) return false;\n if (a.points.length !== b.points.length) return false;\n for (let i = 0; i < a.points.length; i++) {\n if (a.points[i].latitude !== b.points[i].latitude || a.points[i].longitude !== b.points[i].longitude) {\n return false;\n }\n }\n return true;\n };\n\n const findPolygonLayer = (target: AXMapPolygon): import('leaflet').Polygon<any> | undefined => {\n let found: import('leaflet').Polygon<any> | undefined;\n this.polygonLayer.eachLayer((layer) => {\n if (found) return;\n if (this.isPolygonLayer(layer)) {\n const meta = (layer as any).polygon as AXMapPolygon | undefined;\n const hasIdMatch =\n (target as any)?.id != null && (meta as any)?.id != null && (meta as any).id === (target as any).id;\n if (hasIdMatch) {\n found = layer as any;\n return;\n }\n // Fallback to geometry match\n const latLngs = (layer as any).getLatLngs()[0] as any[];\n const layerPoly: AXMapPolygon = {\n points: latLngs.map((ll) => ({ latitude: ll.lat, longitude: ll.lng })),\n color: (layer as any).options?.color,\n } as AXMapPolygon;\n if (polygonsEqualByPoints(layerPoly, target)) {\n found = layer as any;\n }\n }\n });\n return found;\n };\n\n targets.forEach((t) => {\n const layer = findPolygonLayer(t);\n if (layer) {\n removeLayer(layer);\n }\n });\n\n this.onPolygonChanged.emit(this.getPolygons());\n if (this._hasDrawControl) {\n this.refreshDrawControl();\n }\n }\n\n public setMaxMarkers(maxMarkers: number): void {\n this.maxMarkers = maxMarkers;\n }\n\n public setMaxPolygons(maxPolygons: number): void {\n this.maxPolygons = maxPolygons;\n }\n\n public setMaxPolylines(maxPolylines: number): void {\n this.maxPolylines = maxPolylines;\n }\n\n public setMaxRectangles(maxRectangles: number): void {\n this.maxRectangles = maxRectangles;\n }\n\n public setMaxCircles(maxCircles: number): void {\n this.maxCircles = maxCircles;\n }\n\n private refreshDrawControl(): void {\n if (this._hasDrawControl) {\n this.addDrawControl(this.position);\n }\n }\n\n private canDrawMoreMarkers(): boolean {\n return this.maxMarkers === null || this.getMarkers().length < this.maxMarkers;\n }\n\n private canDrawMorePolygons(): boolean {\n return this.maxPolygons === null || this.getPolygons().length < this.maxPolygons;\n }\n\n private canDrawMorePolylines(): boolean {\n return this.maxPolylines === null || this.getPolylines().length < this.maxPolylines;\n }\n\n private canDrawMoreRectangles(): boolean {\n return this.maxRectangles === null || this.getRectangles().length < this.maxRectangles;\n }\n\n private canDrawMoreCircles(): boolean {\n return this.maxCircles === null || this.getCircles().length < this.maxCircles;\n }\n\n private isPolygonLayer(layer: L.Layer): layer is L.Polygon {\n return layer instanceof this.L.Polygon && !(layer instanceof this.L.Rectangle);\n }\n\n private isPolylineLayer(layer: L.Layer): layer is L.Polyline {\n return layer instanceof this.L.Polyline && !(layer instanceof this.L.Polygon);\n }\n\n private isRectangleLayer(layer: L.Layer): layer is L.Rectangle {\n return layer instanceof this.L.Rectangle;\n }\n\n private isCircleLayer(layer: L.Layer): layer is L.Circle {\n return layer instanceof this.L.Circle;\n }\n\n private arePointsWithinBoundary(points: AXMapLatLng[]): boolean {\n return points.every((point) =>\n this.boundary?.some((boundaryPolygon) => this.isPointInPolygon(point, boundaryPolygon)),\n );\n }\n\n private getRectangleCornerPoints(rectangle: AXMapRectangle): AXMapLatLng[] {\n return [\n rectangle.southWest,\n rectangle.northEast,\n {\n latitude: rectangle.southWest.latitude,\n longitude: rectangle.northEast.longitude,\n },\n {\n latitude: rectangle.northEast.latitude,\n longitude: rectangle.southWest.longitude,\n },\n ];\n }\n\n /**\n * Removes polylines by id or geometry. If not provided, removes all polylines.\n */\n public removePolyline(locations?: AXMapPolyline | AXMapPolyline[]): void {\n if (!this.polylineLayer || !this.L) return;\n\n const removeLayer = (layer: L.Layer) => this.polylineLayer.removeLayer(layer);\n\n if (!locations) {\n this.polylineLayer.clearLayers();\n this.onPolylineChanged.emit(this.getPolylines());\n this.refreshDrawControl();\n return;\n }\n\n const targets = Array.isArray(locations) ? locations : [locations];\n\n targets.forEach((target) => {\n let found: L.Polyline | undefined;\n this.polylineLayer.eachLayer((layer) => {\n if (found) return;\n const meta = (layer as any).polyline as AXMapPolyline | undefined;\n const hasIdMatch = target.id != null && meta?.id != null && meta.id === target.id;\n if (hasIdMatch) {\n found = layer as L.Polyline;\n return;\n }\n if (this.polylinesEqualByPoints(this.layerToPolyline(layer as L.Polyline), target)) {\n found = layer as L.Polyline;\n }\n });\n if (found) {\n removeLayer(found);\n }\n });\n\n this.onPolylineChanged.emit(this.getPolylines());\n this.refreshDrawControl();\n }\n\n /**\n * Removes rectangles by id or geometry. If not provided, removes all rectangles.\n */\n public removeRectangle(locations?: AXMapRectangle | AXMapRectangle[]): void {\n if (!this.rectangleLayer || !this.L) return;\n\n const removeLayer = (layer: L.Layer) => this.rectangleLayer.removeLayer(layer);\n\n if (!locations) {\n this.rectangleLayer.clearLayers();\n this.onRectangleChanged.emit(this.getRectangles());\n this.refreshDrawControl();\n return;\n }\n\n const targets = Array.isArray(locations) ? locations : [locations];\n\n targets.forEach((target) => {\n let found: L.Rectangle | undefined;\n this.rectangleLayer.eachLayer((layer) => {\n if (found) return;\n const meta = (layer as any).rectangle as AXMapRectangle | undefined;\n const hasIdMatch = target.id != null && meta?.id != null && meta.id === target.id;\n if (hasIdMatch) {\n found = layer as L.Rectangle;\n return;\n }\n const current = this.layerToRectangle(layer as L.Rectangle);\n if (this.rectanglesEqual(current, target)) {\n found = layer as L.Rectangle;\n }\n });\n if (found) {\n removeLayer(found);\n }\n });\n\n this.onRectangleChanged.emit(this.getRectangles());\n this.refreshDrawControl();\n }\n\n /**\n * Removes circles by id or geometry. If not provided, removes all circles.\n */\n public removeCircle(locations?: AXMapCircle | AXMapCircle[]): void {\n if (!this.circleLayer || !this.L) return;\n\n const removeLayer = (layer: L.Layer) => this.circleLayer.removeLayer(layer);\n\n if (!locations) {\n this.circleLayer.clearLayers();\n this.onCircleChanged.emit(this.getCircles());\n this.refreshDrawControl();\n return;\n }\n\n const targets = Array.isArray(locations) ? locations : [locations];\n\n targets.forEach((target) => {\n let found: L.Circle | undefined;\n this.circleLayer.eachLayer((layer) => {\n if (found) return;\n const meta = (layer as any).circle as AXMapCircle | undefined;\n const hasIdMatch = target.id != null && meta?.id != null && meta.id === target.id;\n if (hasIdMatch) {\n found = layer as L.Circle;\n return;\n }\n const current = this.layerToCircle(layer as L.Circle);\n if (this.circlesEqual(current, target)) {\n found = layer as L.Circle;\n }\n });\n if (found) {\n removeLayer(found);\n }\n });\n\n this.onCircleChanged.emit(this.getCircles());\n this.refreshDrawControl();\n }\n\n private layerToPolyline(layer: L.Polyline): AXMapPolyline {\n const latLngs = layer.getLatLngs() as L.LatLng[];\n const meta = (layer as any).polyline as AXMapPolyline | undefined;\n return {\n points: latLngs.map((latLng) => ({ latitude: latLng.lat, longitude: latLng.lng })),\n title: meta?.title,\n color: layer.options?.color,\n id: meta?.id,\n isLocked: meta?.isLocked,\n };\n }\n\n private layerToRectangle(layer: L.Rectangle): AXMapRectangle {\n const bounds = layer.getBounds();\n const meta = (layer as any).rectangle as AXMapRectangle | undefined;\n return {\n southWest: {\n latitude: bounds.getSouthWest().lat,\n longitude: bounds.getSouthWest().lng,\n },\n northEast: {\n latitude: bounds.getNorthEast().lat,\n longitude: bounds.getNorthEast().lng,\n },\n title: meta?.title,\n color: layer.options?.color,\n id: meta?.id,\n isLocked: meta?.isLocked,\n };\n }\n\n private layerToCircle(layer: L.Circle): AXMapCircle {\n const center = layer.getLatLng();\n const meta = (layer as any).circle as AXMapCircle | undefined;\n return {\n center: { latitude: center.lat, longitude: center.lng },\n radius: layer.getRadius(),\n title: meta?.title,\n color: layer.options?.color,\n id: meta?.id,\n isLocked: meta?.isLocked,\n };\n }\n\n private polylinesEqualByPoints(a: AXMapPolyline, b: AXMapPolyline): boolean {\n if (!a?.points || !b?.points || a.points.length !== b.points.length) return false;\n return a.points.every(\n (point, index) => point.latitude === b.points[index].latitude && point.longitude === b.points[index].longitude,\n );\n }\n\n private rectanglesEqual(a: AXMapRectangle, b: AXMapRectangle): boolean {\n return (\n a.southWest.latitude === b.southWest.latitude &&\n a.southWest.longitude === b.southWest.longitude &&\n a.northEast.latitude === b.northEast.latitude &&\n a.northEast.longitude === b.northEast.longitude\n );\n }\n\n private circlesEqual(a: AXMapCircle, b: AXMapCircle): boolean {\n return (\n a.center.latitude === b.center.latitude && a.center.longitude === b.center.longitude && a.radius === b.radius\n );\n }\n\n private setPathLayerInteractive(layer: L.Layer, interactive: boolean): void {\n if (\n this.isPolylineLayer(layer) ||\n this.isPolygonLayer(layer) ||\n this.isRectangleLayer(layer) ||\n this.isCircleLayer(layer)\n ) {\n (layer as L.Path).setStyle({ interactive });\n }\n }\n\n /**\n * Sets the readonly state of the map.\n * When readonly, map is movable and zoomable but all functionality (drawing, adding markers, controls) is disabled.\n * @param readonly Whether to set the map to readonly mode\n */\n public setReadonly(readonly: boolean): void {\n this._isReadonly = readonly;\n\n if (!this.map || this._isDisabled) {\n // Don't modify anything if disabled (disabled takes precedence)\n return;\n }\n\n if (readonly) {\n // Keep map interactions enabled (panning and zooming)\n // But disable dragging on markers and polygons\n this.forEachEditableLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n (layer as L.Marker).dragging?.disable();\n } else {\n this.setPathLayerInteractive(layer, false);\n }\n });\n\n // Disable dragging on POI markers\n if (this.poiLayer) {\n this.poiLayer.eachLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n (layer as L.Marker).dragging?.disable();\n }\n });\n }\n\n // Disable marker-on-tap when readonly\n this._addMarkerOnTapEnabled = false;\n } else {\n // Re-enable dragging on markers and polygons (if draw control exists)\n this.forEachEditableLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n const loc = (layer as any).location as AXMapMarker | undefined;\n if (loc && !loc.isLocked && this.drawControl) {\n (layer as L.Marker).dragging?.enable();\n }\n } else {\n this.setPathLayerInteractive(layer, true);\n }\n });\n\n // Re-enable dragging on POI markers\n if (this.poiLayer) {\n this.poiLayer.eachLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n (layer as L.Marker).dragging?.enable();\n }\n });\n }\n }\n }\n\n /**\n * Sets the disabled state of the map.\n * When disabled, everything is disabled including zoom, moving, drawing, and all interactions.\n * @param disabled Whether to disable the map completely\n */\n public setDisabled(disabled: boolean): void {\n this._isDisabled = disabled;\n\n if (!this.map) {\n return;\n }\n\n if (disabled) {\n // Disable all map interactions (panning and zooming)\n this.map.dragging.disable();\n this.map.touchZoom.disable();\n this.map.doubleClickZoom.disable();\n this.map.scrollWheelZoom.disable();\n this.map.boxZoom.disable();\n this.map.keyboard.disable();\n\n // Remove zoom control buttons\n try {\n if (this.map.zoomControl) {\n this.map.removeControl(this.map.zoomControl);\n }\n } catch (e) {\n // Zoom control might not exist, ignore error\n }\n\n // Disable dragging on existing markers and polygons\n this.forEachEditableLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n (layer as L.Marker).dragging?.disable();\n } else {\n this.setPathLayerInteractive(layer, false);\n }\n });\n\n // Disable dragging on POI markers\n if (this.poiLayer) {\n this.poiLayer.eachLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n (layer as L.Marker).dragging?.disable();\n }\n });\n }\n\n // Disable marker-on-tap when map is disabled\n this._addMarkerOnTapEnabled = false;\n } else {\n // Enable all map interactions\n this.map.dragging.enable();\n this.map.touchZoom.enable();\n this.map.doubleClickZoom.enable();\n this.map.scrollWheelZoom.enable();\n this.map.boxZoom.enable();\n this.map.keyboard.enable();\n\n // Re-add zoom control buttons (only if not readonly, since readonly should keep zoom controls)\n if (!this._isReadonly) {\n // Check if zoom control doesn't exist, then add it\n // Leaflet's addTo will handle if it already exists\n if (!this.map.zoomControl) {\n this.L.control.zoom().addTo(this.map);\n }\n }\n\n // If readonly is still active, don't re-enable dragging\n if (!this._isReadonly) {\n // Re-enable dragging on markers and polygons (if draw control exists)\n this.forEachEditableLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n const loc = (layer as any).location as AXMapMarker | undefined;\n if (loc && !loc.isLocked && this.drawControl) {\n (layer as L.Marker).dragging?.enable();\n }\n } else {\n this.setPathLayerInteractive(layer, true);\n }\n });\n\n // Re-enable dragging on POI markers\n if (this.poiLayer) {\n this.poiLayer.eachLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n (layer as L.Marker).dragging?.enable();\n }\n });\n }\n } else {\n // If readonly is active, apply readonly state\n this.setReadonly(true);\n }\n }\n }\n\n /**\n * Fixes leaflet-draw strict-mode bug where `type` is used without declaration\n * in GeometryUtil.readableArea (affects rectangle/polygon area tooltips).\n * @see https://github.com/Leaflet/Leaflet.draw/issues/898\n */\n private patchLeafletDraw(): void {\n const geometryUtil = (this.L as typeof import('leaflet') & { GeometryUtil?: LeafletDrawGeometryUtil }).GeometryUtil;\n if (!geometryUtil?.readableArea) {\n return;\n }\n\n const defaultPrecision = { km: 2, ha: 2, m: 0, mi: 2, ac: 2, yd: 0, ft: 0, nm: 2 };\n const formattedNumber = geometryUtil.formattedNumber.bind(geometryUtil);\n\n geometryUtil.readableArea = (area: number, isMetric?: boolean | string | string[], precision?: object): string => {\n let areaStr: string;\n let units: string[];\n const resolvedPrecision = { ...defaultPrecision, ...(precision as Record<string, number> | undefined) };\n\n if (isMetric) {\n units = ['ha', 'm'];\n const metricType = typeof isMetric;\n if (metricType === 'string') {\n units = [isMetric as string];\n } else if (metricType !== 'boolean') {\n units = isMetric as string[];\n }\n\n if (area >= 1_000_000 && units.includes('km')) {\n areaStr = `${formattedNumber(area * 0.000001, resolvedPrecision['km'])} km²`;\n } else if (area >= 10_000 && units.includes('ha')) {\n areaStr = `${formattedNumber(area * 0.0001, resolvedPrecision['ha'])} ha`;\n } else {\n areaStr = `${formattedNumber(area, resolvedPrecision['m'])} m²`;\n }\n } else {\n area /= 0.836127;\n\n if (area >= 3_097_600) {\n areaStr = `${formattedNumber(area / 3_097_600, resolvedPrecision['mi'])} mi²`;\n } else if (area >= 4_840) {\n areaStr = `${formattedNumber(area / 4_840, resolvedPrecision['ac'])} acres`;\n } else {\n areaStr = `${formattedNumber(area, resolvedPrecision['yd'])} yd²`;\n }\n }\n\n return areaStr;\n };\n }\n}\n\ntype LeafletDrawGeometryUtil = {\n formattedNumber: (n: number, precision: number) => string;\n readableArea: (area: number, isMetric?: boolean | string | string[], precision?: object) => string;\n};\n","import { AXComponent, NXComponent } from '@acorex/cdk/common';\nimport {\n afterNextRender,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { AXLeafletService } from './map.service';\nimport {\n AXMapCircle,\n AXMapControlPlace,\n AXMapData,\n AXMapMarker,\n AXMapPolygon,\n AXMapPolyline,\n AXMapRectangle,\n AXPoiMarker,\n} from './map.type';\n\n/**\n * @description\n * The `AXMapComponent` provides an interactive map powered by Leaflet. It supports markers, location tracking,\n * and configurable zoom, latitude, longitude, and marker behavior. The component allows easy integration and\n * manipulation of map features.\n *\n * @example\n * <ax-map [latitude]=\"51.505\" [longitude]=\"-0.09\" [zoomLevel]=\"13\" [hasMarker]=\"true\"></ax-map>\n */\n@Component({\n selector: 'ax-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.css'],\n providers: [AXLeafletService, { provide: AXComponent, useExisting: AXMapComponent }],\n\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMapComponent extends NXComponent implements OnDestroy {\n /**\n * @description\n * Zoom level of the map.\n */\n zoomLevel = model<number | null>(null);\n\n /**\n * @description\n * Latitude of the map center.\n */\n latitude = model<number | null>(null);\n\n /**\n * @description\n * Longitude of the map center.\n */\n longitude = model<number | null>(null);\n\n /**\n * @description\n * Maximum number of markers allowed on the map.\n * @default 0\n */\n maxMarker = input(0);\n\n /**\n * @description\n * Maximum number of polygons allowed on the map.\n * @default 0\n */\n maxPolygon = input(0);\n\n /**\n * @description\n * Maximum number of polylines allowed on the map.\n * @default 0\n */\n maxPolyline = input(0);\n\n /**\n * @description\n * Maximum number of rectangles allowed on the map.\n * @default 0\n */\n maxRectangle = input(0);\n\n /**\n * @description\n * Maximum number of circles allowed on the map.\n * @default 0\n */\n maxCircle = input(0);\n\n /**\n * @description\n * Whether the map should have a marker control.\n * @default false\n */\n hasDraw = input(false);\n\n /**\n * @description\n * Whether the map should have a location control.\n * @default false\n */\n hasLocator = input(false);\n\n /**\n * @description\n * Whether map should contain all draw items.\n * @default false\n */\n fitToDraw = input(false);\n\n /**\n * @description\n * Whether map draw has to limit in area.\n * @default undefined\n */\n limitDraw = input<AXMapPolygon[] | undefined>(undefined);\n\n /**\n * @description\n * Whether to include POIs when fitting the map to draw items.\n * @default false\n */\n addPoiToFitDraw = input(false);\n\n /**\n * @description\n * If true, user can add a marker by clicking/tapping on the map.\n * @default false\n */\n addMarkerOnTap = input(false);\n\n /**\n * @description\n * If true, map is movable and zoomable but all functionality (drawing, adding markers, controls) is disabled.\n * @default false\n */\n readonly = input(false);\n\n /**\n * @description\n * If true, disables everything including zoom, moving, drawing, and all interactions. Map becomes completely read-only.\n * @default false\n */\n disabled = input(false);\n\n /**\n * @description\n * Position of the marker control on the map.\n * @default 'topleft'\n */\n markerPlace = input<AXMapControlPlace>('topleft');\n\n /**\n * @description\n * Position of the locate control on the map.\n * @default 'bottomright'\n */\n locatePlace = input<AXMapControlPlace>('bottomright');\n\n /**\n * @description\n * Minimum zoom level at which POI markers become visible.\n * @default 10\n */\n poiMinZoom = input(10);\n\n /**\n * @description\n * Array or single marker location(s) to be placed on the map.\n * @default undefined\n */\n markers = input<AXMapMarker | AXMapMarker[] | undefined>(undefined);\n\n /**\n * @description\n * Array or single polygon location(s) to be placed on the map.\n * @default undefined\n */\n polygons = input<AXMapPolygon | AXMapPolygon[] | undefined>(undefined);\n\n /**\n * @description\n * Array or single polyline(s) to be placed on the map.\n * @default undefined\n */\n polylines = input<AXMapPolyline | AXMapPolyline[] | undefined>(undefined);\n\n /**\n * @description\n * Array or single rectangle(s) to be placed on the map.\n * @default undefined\n */\n rectangles = input<AXMapRectangle | AXMapRectangle[] | undefined>(undefined);\n\n /**\n * @description\n * Array or single circle(s) to be placed on the map.\n * @default undefined\n */\n circles = input<AXMapCircle | AXMapCircle[] | undefined>(undefined);\n\n /**\n * @description\n * Array or single POI marker(s) to be placed on the map.\n * @default undefined\n */\n pois = input<AXPoiMarker | AXPoiMarker[] | undefined>(undefined);\n\n /**\n * @description\n * Event triggered when a new marker is added to the map.\n */\n onMarkerAdded = output<AXMapMarker>();\n\n /**\n * @description\n * Event triggered when a marker is clicked on the map.\n */\n onMarkerClick = output<AXMapMarker>();\n\n /**\n * @description\n * Event triggered when marker positions are changed on the map.\n */\n onMarkerChanged = output<AXMapMarker[]>();\n\n /**\n * @description\n * Event triggered when a new polygon is added to the map.\n */\n onPolygonAdded = output<AXMapPolygon>();\n /**\n * @description\n * Event triggered when a polygon is clicked on the map.\n */\n onPolygonClick = output<AXMapPolygon>();\n\n /**\n * @description\n * Event triggered when polygon positions are changed on the map.\n */\n onPolygonChanged = output<AXMapPolygon[]>();\n\n /**\n * @description\n * Event triggered when a new polyline is added to the map.\n */\n onPolylineAdded = output<AXMapPolyline>();\n\n /**\n * @description\n * Event triggered when a polyline is clicked on the map.\n */\n onPolylineClick = output<AXMapPolyline>();\n\n /**\n * @description\n * Event triggered when polyline positions are changed on the map.\n */\n onPolylineChanged = output<AXMapPolyline[]>();\n\n /**\n * @description\n * Event triggered when a new rectangle is added to the map.\n */\n onRectangleAdded = output<AXMapRectangle>();\n\n /**\n * @description\n * Event triggered when a rectangle is clicked on the map.\n */\n onRectangleClick = output<AXMapRectangle>();\n\n /**\n * @description\n * Event triggered when rectangle bounds are changed on the map.\n */\n onRectangleChanged = output<AXMapRectangle[]>();\n\n /**\n * @description\n * Event triggered when a new circle is added to the map.\n */\n onCircleAdded = output<AXMapCircle>();\n\n /**\n * @description\n * Event triggered when a circle is clicked on the map.\n */\n onCircleClick = output<AXMapCircle>();\n\n /**\n * @description\n * Event triggered when circle data is changed on the map.\n */\n onCircleChanged = output<AXMapCircle[]>();\n\n /**\n * @description\n * Event triggered when a location is found via the location control.\n */\n onLocationFound = output<AXMapMarker>();\n\n /**\n * @description\n * Event triggered when POI positions are changed on the map.\n */\n onPoiChanged = output<AXPoiMarker[]>();\n\n /**\n * @description\n * Event triggered when a new POI is added to the map.\n */\n onPoiAdded = output<AXPoiMarker>();\n\n /**\n * @description\n * Event triggered map is loaded.\n */\n onMapReady = output<void>();\n /**\n * @description\n * Event triggered when map loading/initialization fails.\n */\n onLoadError = output<Error>();\n\n private mapContainer = viewChild<ElementRef>('mapContainer');\n private leafletService = inject(AXLeafletService);\n private rendered = signal(false);\n\n // Subscriptions\n private onLatitudeChangedSubscription?: Subscription;\n private onLongitudeChangedSubscription?: Subscription;\n private onZoomChangedSubscription?: Subscription;\n private onLocationFoundSubscription?: Subscription;\n private onMarkerChangedSubscription?: Subscription;\n private onMarkerAddedSubscription?: Subscription;\n private onMarkerClickSubscription?: Subscription;\n private onPolygonChangedSubscription?: Subscription;\n private onPolygonAddedSubscription?: Subscription;\n private onPolygonClickSubscription?: Subscription;\n private onPolylineChangedSubscription?: Subscription;\n private onPolylineAddedSubscription?: Subscription;\n private onPolylineClickSubscription?: Subscription;\n private onRectangleChangedSubscription?: Subscription;\n private onRectangleAddedSubscription?: Subscription;\n private onRectangleClickSubscription?: Subscription;\n private onCircleChangedSubscription?: Subscription;\n private onCircleAddedSubscription?: Subscription;\n private onCircleClickSubscription?: Subscription;\n private onPoiChangedSubscription?: Subscription;\n private onPoiAddedSubscription?: Subscription;\n\n /**\n * @description\n * Adds a marker to the specified location on the map.\n * @param location - The location where the marker should be placed.\n * @param emitEvents - Whether to emit events for the marker.\n */\n async addMarker(location: AXMapMarker | AXMapMarker[], emitEvents = false) {\n await this.leafletService.addMarker(location, emitEvents);\n }\n\n /**\n * @description\n * Removes markers by id or location; if not provided removes all markers\n */\n removeMarker(location?: AXMapMarker | AXMapMarker[]) {\n this.leafletService.removeMarker(location);\n }\n\n /**\n * @description\n * Adds a polygon to the specified location on the map.\n * @param location - The location where the polygon should be placed.\n * @param emitEvents - Whether to emit events for the polygon.\n */\n addPolygon(location: AXMapPolygon | AXMapPolygon[], emitEvents = false) {\n this.leafletService.addPolygon(location, emitEvents);\n }\n\n /**\n * @description\n * Removes polygons by id or geometry; if not provided removes all polygons\n */\n removePolygon(location?: AXMapPolygon | AXMapPolygon[]) {\n this.leafletService.removePolygon(location);\n }\n\n /**\n * @description\n * Adds a polyline to the map.\n */\n addPolyline(location: AXMapPolyline | AXMapPolyline[], emitEvents = false) {\n this.leafletService.addPolyline(location, emitEvents);\n }\n\n /**\n * @description\n * Removes polylines by id or geometry; if not provided removes all polylines\n */\n removePolyline(location?: AXMapPolyline | AXMapPolyline[]) {\n this.leafletService.removePolyline(location);\n }\n\n /**\n * @description\n * Adds a rectangle to the map.\n */\n addRectangle(location: AXMapRectangle | AXMapRectangle[], emitEvents = false) {\n this.leafletService.addRectangle(location, emitEvents);\n }\n\n /**\n * @description\n * Removes rectangles by id or geometry; if not provided removes all rectangles\n */\n removeRectangle(location?: AXMapRectangle | AXMapRectangle[]) {\n this.leafletService.removeRectangle(location);\n }\n\n /**\n * @description\n * Adds a circle to the map.\n */\n addCircle(location: AXMapCircle | AXMapCircle[], emitEvents = false) {\n this.leafletService.addCircle(location, emitEvents);\n }\n\n /**\n * @description\n * Removes circles by id or geometry; if not provided removes all circles\n */\n removeCircle(location?: AXMapCircle | AXMapCircle[]) {\n this.leafletService.removeCircle(location);\n }\n\n /**\n * @description\n * Retrieves all markers currently placed on the map.\n * @returns An array of `AXMapMarker` representing all markers.\n */\n getMarkers(): AXMapMarker[] {\n return this.leafletService.getMarkers();\n }\n\n /**\n * @description\n * Retrieves all polygons currently placed on the map.\n * @returns An array of `AXMapPolygon` representing all polygons.\n */\n getPolygons(): AXMapPolygon[] {\n return this.leafletService.getPolygons();\n }\n\n /**\n * @description\n * Retrieves all polylines currently placed on the map.\n */\n getPolylines(): AXMapPolyline[] {\n return this.leafletService.getPolylines();\n }\n\n /**\n * @description\n * Retrieves all rectangles currently placed on the map.\n */\n getRectangles(): AXMapRectangle[] {\n return this.leafletService.getRectangles();\n }\n\n /**\n * @description\n * Retrieves all circles currently placed on the map.\n */\n getCircles(): AXMapCircle[] {\n return this.leafletService.getCircles();\n }\n\n /**\n * @description\n * Retrieves all POI markers currently placed on the map.\n * @returns An array of `AXPoiMarker` representing all POI markers.\n */\n getPois(): AXPoiMarker[] {\n return this.leafletService.getPois();\n }\n\n /**\n * @description\n * Clear all markers and polygons\n */\n clearDrawItems() {\n this.leafletService.clearDrawItems();\n }\n\n /**\n * @description\n * Get all markers and polygons\n */\n getDrawItem() {\n return this.leafletService.getDrawItem();\n }\n\n /**\n * @description\n * set markers and polygons\n */\n async setDrawItem(data: AXMapData) {\n return await this.leafletService.setDrawItem(data);\n }\n\n /**\n * Adjusts the map view to fit all markers and polygons currently on the map.\n */\n public fitBoundsToDrawItems() {\n return this.leafletService.fitBoundsToDrawItems(this.addPoiToFitDraw());\n }\n\n /**\n * @description\n * Sets the boundary limit for drawing\n * @param data - The polygon data defining the boundary\n */\n public setLimitDraw(data: AXMapPolygon[]) {\n return this.leafletService.setBoundary(data);\n }\n\n /**\n * @description\n * Removes the boundary limit for drawing\n */\n public removeLimitDraw() {\n this.leafletService.removeBoundary();\n }\n\n /**\n * @description\n * Flies the map to a specific location with optional zoom, marker placement, and animation duration.\n *\n * @param location - The target location to fly to.\n * @param zoom - Optional zoom level for the map.\n * @param setMarker - Whether to set a marker at the destination.\n * @param duration - Optional duration for the fly animation.\n */\n flyTo(location: AXMapMarker, zoom?: number, setMarker?: boolean, duration?: number) {\n this.leafletService.flyTo(location, zoom, setMarker, duration);\n }\n\n /**\n * Initialize the map once rendering is complete\n */\n #initMap = afterNextRender(async () => {\n // Propagate service load errors to component output\n const onLoadErrSub = this.leafletService.onLoadError.subscribe((err) => this.onLoadError.emit(err));\n try {\n await this.leafletService.initMap(\n this.mapContainer().nativeElement,\n { latitude: this.latitude() ?? 31, longitude: this.longitude() ?? 51 },\n this.zoomLevel() ?? 5,\n );\n } catch (e) {\n console.warn(e);\n } finally {\n onLoadErrSub.unsubscribe();\n }\n\n // Set minimum zoom level for POIs\n this.leafletService.setPoiMinZoom(this.poiMinZoom());\n\n // Initialize map data\n if (this.markers()) {\n await this.leafletService.addMarker(this.markers());\n }\n if (this.polygons()) {\n this.leafletService.addPolygon(this.polygons());\n }\n if (this.polylines()) {\n this.leafletService.addPolyline(this.polylines());\n }\n if (this.rectangles()) {\n this.leafletService.addRectangle(this.rectangles());\n }\n if (this.circles()) {\n this.leafletService.addCircle(this.circles());\n }\n if (this.pois()) {\n await this.leafletService.addPoi(this.pois());\n }\n if (this.limitDraw()) {\n this.leafletService.setBoundary(this.limitDraw());\n }\n\n // Setup map events\n this.setupMapEvents();\n\n // Apply initial fit if needed\n if (this.fitToDraw()) {\n this.leafletService.fitBoundsToDrawItems(this.addPoiToFitDraw());\n }\n\n this.onMapReady.emit();\n this.rendered.set(true);\n });\n\n /**\n * Setup map event listeners\n */\n private setupMapEvents(): void {\n this.setupMapMovementEvents();\n // addMarkerOnTap is now handled by the service via the effect\n // Ensure subscriptions to service events are always active, regardless of draw control\n this.setupDrawEventSubscriptions();\n }\n\n /**\n * Setup map movement event subscriptions\n */\n private setupMapMovementEvents(): void {\n this.onLatitudeChangedSubscription = this.leafletService.onLatitudeChanged.subscribe((latitude) => {\n this.latitude.set(latitude);\n });\n\n this.onLongitudeChangedSubscription = this.leafletService.onLongitudeChanged.subscribe((longitude) => {\n this.longitude.set(longitude);\n });\n\n this.onZoomChangedSubscription = this.leafletService.onZoomChanged.subscribe((zoom) => {\n this.zoomLevel.set(zoom);\n });\n }\n\n /**\n * Effect for locator control\n */\n #locatorEffect = effect(() => {\n if (!this.rendered()) return;\n\n const hasLocator = this.hasLocator();\n const locatePlace = this.locatePlace();\n const isDisabled = this.disabled();\n const isReadonly = this.readonly();\n\n if (!hasLocator || isDisabled || isReadonly) {\n this.leafletService.removeLocateControl();\n if (this.onLocationFoundSubscription) {\n this.onLocationFoundSubscription.unsubscribe();\n this.onLocationFoundSubscription = undefined;\n }\n return;\n }\n\n // Add locator control\n this.leafletService.addLocateControl(locatePlace);\n\n // Subscribe to location events if not already subscribed\n if (!this.onLocationFoundSubscription) {\n this.onLocationFoundSubscription = this.leafletService.onLocationFound\n .pipe(\n distinctUntilChanged(\n (prev: AXMapMarker, curr: AXMapMarker) =>\n prev.latitude === curr.latitude && prev.longitude === curr.longitude,\n ),\n )\n .subscribe((location: AXMapMarker) => {\n this.onLocationFound.emit(location);\n });\n }\n });\n\n /**\n * Effect for draw control\n */\n #drawControlEffect = effect(() => {\n if (!this.rendered()) return;\n\n const hasDraw = this.hasDraw();\n const markerPlace = this.markerPlace();\n const maxMarker = this.maxMarker();\n const maxPolygon = this.maxPolygon();\n const maxPolyline = this.maxPolyline();\n const maxRectangle = this.maxRectangle();\n const maxCircle = this.maxCircle();\n const isDisabled = this.disabled();\n const isReadonly = this.readonly();\n\n if (maxMarker) {\n this.leafletService.setMaxMarkers(maxMarker);\n }\n if (maxPolygon) {\n this.leafletService.setMaxPolygons(maxPolygon);\n }\n if (maxPolyline) {\n this.leafletService.setMaxPolylines(maxPolyline);\n }\n if (maxRectangle) {\n this.leafletService.setMaxRectangles(maxRectangle);\n }\n if (maxCircle) {\n this.leafletService.setMaxCircles(maxCircle);\n }\n\n if (!hasDraw || isDisabled || isReadonly) {\n this.leafletService.removeDrawControl();\n return;\n }\n\n this.leafletService.addDrawControl(\n markerPlace,\n maxMarker || 1,\n maxPolygon,\n maxPolyline || 1,\n maxRectangle || 1,\n maxCircle || 1,\n );\n\n // Set up event subscriptions\n this.setupDrawEventSubscriptions();\n });\n\n /**\n * Setup draw event subscriptions\n */\n private setupDrawEventSubscriptions(): void {\n this.setupMarkerEventSubscriptions();\n this.setupPolygonEventSubscriptions();\n this.setupPolylineEventSubscriptions();\n this.setupRectangleEventSubscriptions();\n this.setupCircleEventSubscriptions();\n this.setupPoiEventSubscriptions();\n }\n\n /**\n * Setup marker event subscriptions\n */\n private setupMarkerEventSubscriptions(): void {\n if (!this.onMarkerChangedSubscription) {\n this.onMarkerChangedSubscription = this.leafletService.onMarkerChanged.subscribe((markers) => {\n this.onMarkerChanged.emit(markers);\n });\n }\n\n if (!this.onMarkerAddedSubscription) {\n this.onMarkerAddedSubscription = this.leafletService.onMarkerAdded.subscribe((marker) => {\n this.onMarkerAdded.emit(marker);\n });\n }\n\n if (!this.onMarkerClickSubscription) {\n this.onMarkerClickSubscription = this.leafletService.onMarkerClick.subscribe((marker) => {\n this.onMarkerClick.emit(marker);\n });\n }\n }\n\n /**\n * Setup polygon event subscriptions\n */\n private setupPolygonEventSubscriptions(): void {\n if (!this.onPolygonChangedSubscription) {\n this.onPolygonChangedSubscription = this.leafletService.onPolygonChanged.subscribe((polygons) => {\n this.onPolygonChanged.emit(polygons);\n });\n }\n\n if (!this.onPolygonAddedSubscription) {\n this.onPolygonAddedSubscription = this.leafletService.onPolygonAdded.subscribe((polygon) => {\n this.onPolygonAdded.emit(polygon);\n });\n }\n\n if (!this.onPolygonClickSubscription) {\n this.onPolygonClickSubscription = this.leafletService.onPolygonClick.subscribe((polygon) => {\n this.onPolygonClick.emit(polygon);\n });\n }\n }\n\n private setupPolylineEventSubscriptions(): void {\n if (!this.onPolylineChangedSubscription) {\n this.onPolylineChangedSubscription = this.leafletService.onPolylineChanged.subscribe((polylines) => {\n this.onPolylineChanged.emit(polylines);\n });\n }\n\n if (!this.onPolylineAddedSubscription) {\n this.onPolylineAddedSubscription = this.leafletService.onPolylineAdded.subscribe((polyline) => {\n this.onPolylineAdded.emit(polyline);\n });\n }\n\n if (!this.onPolylineClickSubscription) {\n this.onPolylineClickSubscription = this.leafletService.onPolylineClick.subscribe((polyline) => {\n this.onPolylineClick.emit(polyline);\n });\n }\n }\n\n private setupRectangleEventSubscriptions(): void {\n if (!this.onRectangleChangedSubscription) {\n this.onRectangleChangedSubscription = this.leafletService.onRectangleChanged.subscribe((rectangles) => {\n this.onRectangleChanged.emit(rectangles);\n });\n }\n\n if (!this.onRectangleAddedSubscription) {\n this.onRectangleAddedSubscription = this.leafletService.onRectangleAdded.subscribe((rectangle) => {\n this.onRectangleAdded.emit(rectangle);\n });\n }\n\n if (!this.onRectangleClickSubscription) {\n this.onRectangleClickSubscription = this.leafletService.onRectangleClick.subscribe((rectangle) => {\n this.onRectangleClick.emit(rectangle);\n });\n }\n }\n\n private setupCircleEventSubscriptions(): void {\n if (!this.onCircleChangedSubscription) {\n this.onCircleChangedSubscription = this.leafletService.onCircleChanged.subscribe((circles) => {\n this.onCircleChanged.emit(circles);\n });\n }\n\n if (!this.onCircleAddedSubscription) {\n this.onCircleAddedSubscription = this.leafletService.onCircleAdded.subscribe((circle) => {\n this.onCircleAdded.emit(circle);\n });\n }\n\n if (!this.onCircleClickSubscription) {\n this.onCircleClickSubscription = this.leafletService.onCircleClick.subscribe((circle) => {\n this.onCircleClick.emit(circle);\n });\n }\n }\n\n /**\n * Setup POI event subscriptions\n */\n private setupPoiEventSubscriptions(): void {\n if (!this.onPoiChangedSubscription) {\n this.onPoiChangedSubscription = this.leafletService.onPoiChanged\n .pipe(distinctUntilChanged())\n .subscribe((data) => {\n this.onPoiChanged.emit(data);\n });\n }\n\n if (!this.onPoiAddedSubscription) {\n this.onPoiAddedSubscription = this.leafletService.onPoiAdded.pipe(distinctUntilChanged()).subscribe((data) => {\n this.onPoiAdded.emit(data);\n });\n }\n }\n\n /**\n * Unsubscribe from draw events\n */\n private unsubscribeFromDrawEvents(): void {\n this.unsubscribeMarkerEvents();\n this.unsubscribePolygonEvents();\n this.unsubscribePolylineEvents();\n this.unsubscribeRectangleEvents();\n this.unsubscribeCircleEvents();\n this.unsubscribePoiEvents();\n }\n\n /**\n * Unsubscribe from marker events\n */\n private unsubscribeMarkerEvents(): void {\n const markerSubscriptions = [\n { sub: this.onMarkerChangedSubscription, prop: 'onMarkerChangedSubscription' },\n { sub: this.onMarkerAddedSubscription, prop: 'onMarkerAddedSubscription' },\n { sub: this.onMarkerClickSubscription, prop: 'onMarkerClickSubscription' },\n ];\n\n markerSubscriptions.forEach(({ sub, prop }) => {\n if (sub) {\n sub.unsubscribe();\n (this as any)[prop] = undefined;\n }\n });\n }\n\n /**\n * Unsubscribe from polygon events\n */\n private unsubscribePolygonEvents(): void {\n const polygonSubscriptions = [\n { sub: this.onPolygonChangedSubscription, prop: 'onPolygonChangedSubscription' },\n { sub: this.onPolygonAddedSubscription, prop: 'onPolygonAddedSubscription' },\n { sub: this.onPolygonClickSubscription, prop: 'onPolygonClickSubscription' },\n ];\n\n polygonSubscriptions.forEach(({ sub, prop }) => {\n if (sub) {\n sub.unsubscribe();\n (this as any)[prop] = undefined;\n }\n });\n }\n\n private unsubscribePolylineEvents(): void {\n const subscriptions = [\n { sub: this.onPolylineChangedSubscription, prop: 'onPolylineChangedSubscription' },\n { sub: this.onPolylineAddedSubscription, prop: 'onPolylineAddedSubscription' },\n { sub: this.onPolylineClickSubscription, prop: 'onPolylineClickSubscription' },\n ];\n\n subscriptions.forEach(({ sub, prop }) => {\n if (sub) {\n sub.unsubscribe();\n (this as any)[prop] = undefined;\n }\n });\n }\n\n private unsubscribeRectangleEvents(): void {\n const subscriptions = [\n { sub: this.onRectangleChangedSubscription, prop: 'onRectangleChangedSubscription' },\n { sub: this.onRectangleAddedSubscription, prop: 'onRectangleAddedSubscription' },\n { sub: this.onRectangleClickSubscription, prop: 'onRectangleClickSubscription' },\n ];\n\n subscriptions.forEach(({ sub, prop }) => {\n if (sub) {\n sub.unsubscribe();\n (this as any)[prop] = undefined;\n }\n });\n }\n\n private unsubscribeCircleEvents(): void {\n const subscriptions = [\n { sub: this.onCircleChangedSubscription, prop: 'onCircleChangedSubscription' },\n { sub: this.onCircleAddedSubscription, prop: 'onCircleAddedSubscription' },\n { sub: this.onCircleClickSubscription, prop: 'onCircleClickSubscription' },\n ];\n\n subscriptions.forEach(({ sub, prop }) => {\n if (sub) {\n sub.unsubscribe();\n (this as any)[prop] = undefined;\n }\n });\n }\n\n /**\n * Unsubscribe from POI events\n */\n private unsubscribePoiEvents(): void {\n const poiSubscriptions = [\n { sub: this.onPoiChangedSubscription, prop: 'onPoiChangedSubscription' },\n { sub: this.onPoiAddedSubscription, prop: 'onPoiAddedSubscription' },\n ];\n\n poiSubscriptions.forEach(({ sub, prop }) => {\n if (sub) {\n sub.unsubscribe();\n (this as any)[prop] = undefined;\n }\n });\n }\n\n /**\n * Effect for zoom level changes\n */\n #zoomEffect = effect(() => {\n if (this.rendered() && this.zoomLevel() !== null) {\n this.leafletService.setZoomLevel(this.zoomLevel());\n }\n });\n\n /**\n * Effect for limit draw changes\n */\n #limitDrawEffect = effect(() => {\n if (!this.rendered()) return;\n\n const limitDraw = this.limitDraw();\n if (limitDraw) {\n this.leafletService.removeBoundary();\n this.leafletService.setBoundary(limitDraw);\n\n if (this.fitToDraw()) {\n this.fitBoundsToDrawItems();\n }\n }\n });\n\n /**\n * Effect for fitToDraw changes\n */\n #fitToDrawEffect = effect(() => {\n if (this.rendered() && this.fitToDraw()) {\n this.fitBoundsToDrawItems();\n }\n });\n\n /**\n * Effect for center changes (lat/long)\n */\n #centerEffect = effect(() => {\n if (!this.rendered()) return;\n\n if (this.fitToDraw()) {\n this.fitBoundsToDrawItems();\n }\n });\n\n #latlngEffect = effect(() => {\n if (!this.rendered()) {\n return () => {\n // No-op cleanup\n };\n }\n\n const lat = this.latitude();\n const lng = this.longitude();\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n // Only update if values are not null\n if (lat !== null && lng !== null) {\n // Debounce to avoid excessive updates\n timeoutId = setTimeout(() => {\n if (this.rendered()) {\n this.leafletService.setCenter({\n latitude: lat,\n longitude: lng,\n } as AXMapMarker);\n }\n }, 50);\n }\n\n // Cleanup function for effect\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n });\n\n /**\n * Effect for POI minimum zoom level changes\n */\n #poiMinZoomEffect = effect(() => {\n if (this.rendered()) {\n this.leafletService.setPoiMinZoom(this.poiMinZoom());\n }\n });\n\n /**\n * Effect for addMarkerOnTap changes\n */\n #addMarkerOnTapEffect = effect(() => {\n if (this.rendered()) {\n const isDisabled = this.disabled();\n const isReadonly = this.readonly();\n // Only allow marker-on-tap if not disabled and not readonly\n if (!isDisabled && !isReadonly) {\n this.leafletService.setAddMarkerOnTap(this.addMarkerOnTap());\n } else {\n this.leafletService.setAddMarkerOnTap(false);\n }\n }\n });\n\n /**\n * Effect for readonly state changes\n */\n #readonlyEffect = effect(() => {\n if (!this.rendered()) return;\n\n const isReadonly = this.readonly();\n const isDisabled = this.disabled();\n\n // Disabled takes precedence over readonly\n if (isDisabled) {\n this.leafletService.setDisabled(true);\n return;\n }\n\n this.leafletService.setReadonly(isReadonly);\n\n // Remove controls when readonly\n if (isReadonly) {\n this.leafletService.removeDrawControl();\n this.leafletService.removeLocateControl();\n }\n });\n\n /**\n * Effect for disabled state changes\n */\n #disabledEffect = effect(() => {\n if (!this.rendered()) return;\n\n const isDisabled = this.disabled();\n this.leafletService.setDisabled(isDisabled);\n\n // Remove controls when disabled\n if (isDisabled) {\n this.leafletService.removeDrawControl();\n this.leafletService.removeLocateControl();\n }\n });\n\n /**\n * @description\n * Update popup for a specific marker\n * @param marker - The marker to update\n * @param popup - The new popup text\n * @param open - Whether the popup should be opened after update\n * @param closeButton - Whether the popup should have a close button\n * @returns True if the update was successful, false otherwise\n */\n updateMarkerPopup(marker: AXMapMarker, popup: string, open = false, closeButton = true): boolean {\n return this.leafletService.updateMarkerPopup(marker, popup, open, closeButton);\n }\n\n /**\n * @description\n * Update popup for multiple markers\n * @param updates - Array of marker popup updates\n * @returns Number of markers successfully updated\n */\n updateMarkersPopups(\n updates: { marker: AXMapMarker; popup: string; open?: boolean; closeButton?: boolean }[],\n ): number {\n return this.leafletService.updateMarkerPopups(updates);\n }\n\n /**\n * @description\n * Refreshes POIs from providers, clearing existing POIs first\n */\n async refreshPois(): Promise<void> {\n return this.leafletService.refreshPois();\n }\n\n /**\n * Cleanup function that destroys the map and unsubscribes from all subscriptions.\n */\n ngOnDestroy(): void {\n this.unsubscribeFromAllEvents();\n this.leafletService.destroyMap();\n }\n\n /**\n * Unsubscribe from all event subscriptions\n */\n private unsubscribeFromAllEvents(): void {\n this.unsubscribeFromDrawEvents();\n this.unsubscribeFromMapEvents();\n }\n\n /**\n * Unsubscribe from map-level events\n */\n private unsubscribeFromMapEvents(): void {\n const mapSubscriptions = [\n this.onLocationFoundSubscription,\n this.onLatitudeChangedSubscription,\n this.onLongitudeChangedSubscription,\n this.onZoomChangedSubscription,\n this.onPoiChangedSubscription,\n this.onPoiAddedSubscription,\n ];\n\n mapSubscriptions.forEach((subscription) => {\n if (subscription) {\n subscription.unsubscribe();\n }\n });\n }\n}\n","<div #mapContainer class=\"ax-map-container\"></div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXMapComponent } from './map.component';\nimport { AXLeafletService } from './map.service';\n\n@NgModule({\n imports: [CommonModule, AXMapComponent],\n providers: [AXLeafletService],\n exports: [AXMapComponent],\n})\nexport class AXMapModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-components-map.mjs","sources":["../../../../packages/components/map/src/lib/map.config.ts","../../../../packages/components/map/src/lib/poi.provider.ts","../../../../packages/components/map/src/lib/map-layers.ts","../../../../packages/components/map/src/lib/map.service.ts","../../../../packages/components/map/src/lib/map.component.ts","../../../../packages/components/map/src/lib/map.component.html","../../../../packages/components/map/src/lib/map.module.ts","../../../../packages/components/map/src/acorex-components-map.ts"],"sourcesContent":["import { AX_GLOBAL_CONFIG } from '@acorex/core/config';\nimport { InjectionToken, inject } from '@angular/core';\nimport { set } from 'lodash-es';\n\nexport interface AXMapConfig {\n layers: string;\n layers2x: string;\n markerIcon: string;\n markerIcon2x: string;\n markerShadow: string;\n}\n\nexport const AX_MAP_CONFIG = new InjectionToken<AXMapConfig>('AX_MAP_CONFIG', {\n providedIn: 'root',\n factory: () => {\n const global = inject(AX_GLOBAL_CONFIG);\n set(global, 'layout.map', AX_MAP_CONFIG);\n return AXMapDefaultConfig;\n },\n});\n\nexport const baseUrl = '/assets/images/leaflet/';\n\nexport const AXMapDefaultConfig: AXMapConfig = {\n layers: `${baseUrl}layers.png`,\n layers2x: `${baseUrl}layers-2x.png`,\n markerIcon: `${baseUrl}marker-icon.png`,\n markerIcon2x: `${baseUrl}marker-icon-2x.png`,\n markerShadow: `${baseUrl}marker-shadow.png`,\n};\n\nexport type PartialMapConfig = Partial<AXMapConfig>;\n\nexport function mapConfig(config: PartialMapConfig = {}): AXMapConfig {\n const result = {\n ...AXMapDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { AXPoiMarker } from './map.type';\n\nexport interface AXPoiProvider {\n get key(): string;\n provide(): Promise<AXPoiMarker[]>;\n}\n\nexport const AX_MAP_POI_PROVIDER = new InjectionToken<AXPoiProvider[]>('AX_MAP_POI_PROVIDER');\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPoiProviderService {\n private providers: AXPoiProvider[] = inject(AX_MAP_POI_PROVIDER, { optional: true }) ?? [];\n private cache = new Map<string, AXPoiMarker[]>();\n\n async getList(): Promise<AXPoiMarker[]> {\n const result: AXPoiMarker[] = [];\n const providers = Array.isArray(this.providers) ? this.providers : [this.providers];\n for (const provider of providers) {\n if (!this.cache.has(provider.key)) {\n const list = await provider.provide();\n this.cache.set(provider.key, list);\n }\n const items = this.cache.get(provider.key) ?? [];\n result.push(...items);\n }\n\n return result;\n }\n}\n","import type * as L from 'leaflet';\n\nexport interface AXMapLayerGroups {\n markerLayer: L.FeatureGroup;\n polygonLayer: L.FeatureGroup;\n polylineLayer: L.FeatureGroup;\n rectangleLayer: L.FeatureGroup;\n circleLayer: L.FeatureGroup;\n poiLayer: L.FeatureGroup;\n boundaryLayer: L.FeatureGroup;\n editableItems: L.FeatureGroup;\n}\n\n/**\n * Creates typed Leaflet layer groups for map features and a composite feature group\n * used by leaflet-draw for edit/delete across all editable layers.\n */\nexport function createMapLayerGroups(\n L: typeof import('leaflet'),\n map: L.Map,\n resolveEditableLayer: (layer: L.Layer) => L.FeatureGroup | undefined,\n): AXMapLayerGroups {\n const markerLayer = new L.FeatureGroup();\n const polygonLayer = new L.FeatureGroup();\n const polylineLayer = new L.FeatureGroup();\n const rectangleLayer = new L.FeatureGroup();\n const circleLayer = new L.FeatureGroup();\n const poiLayer = new L.FeatureGroup();\n const boundaryLayer = new L.FeatureGroup();\n\n const editableTypeLayers = [markerLayer, polygonLayer, polylineLayer, rectangleLayer, circleLayer];\n\n // Z-order: boundary and shapes below markers/POIs\n boundaryLayer.addTo(map);\n polygonLayer.addTo(map);\n polylineLayer.addTo(map);\n rectangleLayer.addTo(map);\n circleLayer.addTo(map);\n markerLayer.addTo(map);\n poiLayer.addTo(map);\n\n const editableItems = createCompositeFeatureGroup(L, editableTypeLayers, resolveEditableLayer);\n\n return {\n markerLayer,\n polygonLayer,\n polylineLayer,\n rectangleLayer,\n circleLayer,\n poiLayer,\n boundaryLayer,\n editableItems,\n };\n}\n\nfunction createCompositeFeatureGroup(\n L: typeof import('leaflet'),\n typeLayers: L.FeatureGroup[],\n resolveEditableLayer: (layer: L.Layer) => L.FeatureGroup | undefined,\n): L.FeatureGroup {\n const composite = new L.FeatureGroup();\n\n composite.getLayers = () => typeLayers.flatMap((layer) => layer.getLayers());\n\n composite.eachLayer = function (fn: (layer: L.Layer) => void, context?: object) {\n typeLayers.forEach((group) => group.eachLayer(fn, context));\n return composite;\n };\n\n composite.addLayer = function (layer: L.Layer) {\n const target = resolveEditableLayer(layer);\n target?.addLayer(layer);\n return composite;\n };\n\n composite.removeLayer = function (layer: L.Layer) {\n for (const group of typeLayers) {\n if (group.hasLayer(layer)) {\n group.removeLayer(layer);\n break;\n }\n }\n return composite;\n };\n\n composite.clearLayers = function () {\n typeLayers.forEach((group) => group.clearLayers());\n return composite;\n };\n\n composite.hasLayer = function (layer: L.Layer) {\n return typeLayers.some((group) => group.hasLayer(layer));\n };\n\n return composite;\n}\n","import { AXIconResolverService } from '@acorex/core/icon';\nimport { EventEmitter, inject, Injectable } from '@angular/core';\nimport { AX_MAP_CONFIG } from './map.config';\nimport {\n AXMapCircle,\n AXMapControlPlace,\n AXMapData,\n AXMapLatLng,\n AXMapLocation,\n AXMapMarker,\n AXMapPolygon,\n AXMapPolyline,\n AXMapRectangle,\n AXPoiMarker,\n} from './map.type';\nimport { AXPoiProviderService } from './poi.provider';\nimport { createMapLayerGroups } from './map-layers';\n\n/**\n * Service for managing Leaflet maps and related functionalities.\n */\n@Injectable()\nexport class AXLeafletService {\n private mapConfig = inject(AX_MAP_CONFIG);\n private iconResolver = inject(AXIconResolverService, { optional: true });\n private poiProviderService = inject(AXPoiProviderService, { optional: true });\n private defaultIcon: any;\n private position: AXMapControlPlace = 'topleft';\n private maxMarkers: number | null = null;\n private maxPolygons: number | null = null;\n private maxPolylines: number | null = null;\n private maxRectangles: number | null = null;\n private maxCircles: number | null = null;\n private shapeColor = 'blue';\n private poiMinZoom = 10; // Default minimum zoom level to show POIs\n private poiMarkers: L.Marker[] = []; // Track all POI markers\n\n protected L: typeof import('leaflet');\n private map?: L.Map;\n private drawControl?: L.Control.Draw;\n private locateControl?: L.Control.Locate;\n private markerLayer!: L.FeatureGroup;\n private polygonLayer!: L.FeatureGroup;\n private polylineLayer!: L.FeatureGroup;\n private rectangleLayer!: L.FeatureGroup;\n private circleLayer!: L.FeatureGroup;\n private poiLayer!: L.FeatureGroup;\n private boundaryLayer!: L.FeatureGroup;\n /** Composite group for leaflet-draw edit/delete across all editable layers */\n private drawnItems!: L.FeatureGroup;\n private boundary: AXMapPolygon[] | null = null;\n private _addMarkerOnTapEnabled = false;\n private _isCurrentlyDrawing = false;\n private _hasDrawControl = false;\n private _isReadonly = false;\n private _isDisabled = false;\n private _isUpdatingCenter = false; // Flag to prevent feedback loops\n\n /**\n * Emits when the zoom level of the map changes.\n */\n public onZoomChanged = new EventEmitter<number>();\n\n /**\n * Emits when the longitude of the map center changes.\n */\n public onLongitudeChanged = new EventEmitter<number>();\n\n /**\n * Emits when the latitude of the map center changes.\n */\n public onLatitudeChanged = new EventEmitter<number>();\n\n /**\n * Emits when marker data changes.\n */\n public onMarkerChanged = new EventEmitter<AXMapMarker[]>();\n /**\n * Emits when a poi is added.\n */\n public onPoiAdded = new EventEmitter<AXPoiMarker>();\n /**\n * Emits when a poi is changed.\n */\n public onPoiChanged = new EventEmitter<AXPoiMarker[]>();\n /**\n * Emits when a marker is added.\n */\n public onMarkerAdded = new EventEmitter<AXMapMarker>();\n /**\n * Emits when a marker is clicked.\n */\n public onMarkerClick = new EventEmitter<AXMapMarker>();\n /**\n * Emits when the user's location is found.\n */\n public onLocationFound = new EventEmitter<AXMapLocation>();\n /**\n * Emits when polygon data changes.\n */\n public onPolygonChanged = new EventEmitter<AXMapPolygon[]>();\n /**\n * Emits when an error occurs during map load/initialization\n */\n public onLoadError = new EventEmitter<Error>();\n /**\n * Emits when a polygon is added.\n */\n public onPolygonAdded = new EventEmitter<AXMapPolygon>();\n /**\n * Emits when a polygon is clicked.\n */\n public onPolygonClick = new EventEmitter<AXMapPolygon>();\n /**\n * Emits when polyline data changes.\n */\n public onPolylineChanged = new EventEmitter<AXMapPolyline[]>();\n /**\n * Emits when a polyline is added.\n */\n public onPolylineAdded = new EventEmitter<AXMapPolyline>();\n /**\n * Emits when a polyline is clicked.\n */\n public onPolylineClick = new EventEmitter<AXMapPolyline>();\n /**\n * Emits when rectangle data changes.\n */\n public onRectangleChanged = new EventEmitter<AXMapRectangle[]>();\n /**\n * Emits when a rectangle is added.\n */\n public onRectangleAdded = new EventEmitter<AXMapRectangle>();\n /**\n * Emits when a rectangle is clicked.\n */\n public onRectangleClick = new EventEmitter<AXMapRectangle>();\n /**\n * Emits when circle data changes.\n */\n public onCircleChanged = new EventEmitter<AXMapCircle[]>();\n /**\n * Emits when a circle is added.\n */\n public onCircleAdded = new EventEmitter<AXMapCircle>();\n /**\n * Emits when a circle is clicked.\n */\n public onCircleClick = new EventEmitter<AXMapCircle>();\n /**\n * Loads the Leaflet library and its plugins.\n */\n public async loadLeaflet(): Promise<void> {\n try {\n const leafletModule = await import('leaflet');\n this.L = leafletModule.default ?? leafletModule; // handle default export\n\n await import('leaflet-draw');\n this.patchLeafletDraw();\n await import('leaflet.locatecontrol');\n\n // Set up default icon from mapConfig\n this.defaultIcon = this.L.icon({\n iconUrl: this.mapConfig.markerIcon,\n shadowUrl: this.mapConfig.markerShadow,\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n shadowSize: [41, 41],\n popupAnchor: [0, -40],\n });\n } catch (error) {\n console.error('Error Loading Leaflet:', error);\n // Emit load error for consumers\n this.onLoadError.emit(error instanceof Error ? error : new Error(String(error)));\n throw new Error(`Failed to load Leaflet library: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n }\n\n /**\n * Initializes the Leaflet map.\n * @param mapElement The HTML element to render the map in.\n * @param location The initial map center.\n * @param zoom The initial zoom level. Defaults to 13.\n */\n public async initMap(mapElement: HTMLElement, location: AXMapLatLng, zoom = 13) {\n try {\n await this.loadLeaflet();\n const map = this.L.map(mapElement).setView([location.latitude, location.longitude], zoom);\n this.L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n maxZoom: 20,\n noWrap: true,\n attribution: '© ACoreX',\n }).addTo(map);\n this.initMapLayers(map);\n this.map = map;\n\n // Add event listeners for zoom and move changes\n this.map.on('zoomend', () => this.handleZoomChange());\n this.map.on('moveend', () => this.handleCenterChange());\n\n // Add click listener for adding markers on tap\n this.map.on('click', async (e: any) => {\n if (this._addMarkerOnTapEnabled && !this._isDrawingMode() && !this._isDisabled && !this._isReadonly) {\n // Check max markers limit\n if (this.maxMarkers !== null && this.getMarkers().length >= this.maxMarkers) {\n console.warn('Markers reached max count.');\n return;\n }\n\n const latlng = e.latlng;\n const newMarker: AXMapMarker = { latitude: latlng.lat, longitude: latlng.lng };\n await this.addMarker(newMarker, true);\n }\n });\n\n // Load POIs from providers\n await this.loadPoisFromProviders();\n } catch (error) {\n console.error('Error initializing Leaflet map:', error);\n this.onLoadError.emit(error instanceof Error ? error : new Error(String(error)));\n throw error;\n }\n }\n\n private handleZoomChange(): void {\n if (this.map) {\n const currentZoom = this.map.getZoom();\n this.onZoomChanged.emit(currentZoom);\n\n // Show/hide POIs based on zoom level\n this.updatePoiVisibility(currentZoom);\n }\n }\n\n private handleCenterChange(): void {\n // Don't emit if we're programmatically updating the center (prevents feedback loop)\n if (this.map && !this._isUpdatingCenter) {\n const center = this.map.getCenter();\n this.onLatitudeChanged.emit(center.lat);\n this.onLongitudeChanged.emit(center.lng);\n }\n }\n\n private initMapLayers(map: L.Map): void {\n const layers = createMapLayerGroups(this.L, map, (layer) => this.resolveEditableLayer(layer));\n\n this.markerLayer = layers.markerLayer;\n this.polygonLayer = layers.polygonLayer;\n this.polylineLayer = layers.polylineLayer;\n this.rectangleLayer = layers.rectangleLayer;\n this.circleLayer = layers.circleLayer;\n this.poiLayer = layers.poiLayer;\n this.boundaryLayer = layers.boundaryLayer;\n this.drawnItems = layers.editableItems;\n }\n\n private get editableTypeLayers(): L.FeatureGroup[] {\n return [this.markerLayer, this.polygonLayer, this.polylineLayer, this.rectangleLayer, this.circleLayer];\n }\n\n private resolveEditableLayer(layer: L.Layer): L.FeatureGroup | undefined {\n if (layer instanceof this.L.Marker) {\n return this.markerLayer;\n }\n if (this.isPolygonLayer(layer)) {\n return this.polygonLayer;\n }\n if (this.isPolylineLayer(layer)) {\n return this.polylineLayer;\n }\n if (this.isRectangleLayer(layer)) {\n return this.rectangleLayer;\n }\n if (this.isCircleLayer(layer)) {\n return this.circleLayer;\n }\n return undefined;\n }\n\n private forEachEditableLayer(fn: (layer: L.Layer) => void): void {\n this.editableTypeLayers.forEach((group) => group.eachLayer(fn));\n }\n\n private getAllEditableLayers(): L.Layer[] {\n return this.editableTypeLayers.flatMap((group) => group.getLayers());\n }\n\n /**\n * Creates a custom icon from SVG string or URL using the icon resolver if possible\n * @param iconSrc Path to the icon, SVG string, or icon key\n * @returns Leaflet icon\n */\n public async setCustomIcon(iconSrc: string): Promise<any> {\n if (!iconSrc) {\n return this.defaultIcon;\n }\n\n try {\n // Try to resolve using the icon resolver if available\n if (this.iconResolver) {\n try {\n const resolvedIcon = await this.iconResolver.resolve(iconSrc);\n if (resolvedIcon) {\n return this.createLeafletIcon(resolvedIcon);\n }\n } catch (error) {\n console.warn(`Error resolving icon: ${iconSrc}`, error);\n }\n }\n\n // If resolver not available or resolution failed, treat as direct content\n return this.createLeafletIcon(iconSrc);\n } catch (error) {\n console.warn(`Error creating custom icon: ${iconSrc}`, error);\n return this.defaultIcon;\n }\n }\n\n /**\n * Creates a Leaflet icon from SVG or URL\n * @param iconSrc The icon source (SVG string or URL)\n * @returns Leaflet icon\n */\n private createLeafletIcon(iconSrc: string): any {\n if (!iconSrc) {\n return this.defaultIcon;\n }\n\n try {\n // Check if the iconSrc is a URL or SVG string\n const isSvgString = iconSrc.trim().startsWith('<svg');\n\n if (isSvgString) {\n // Create a div icon with the SVG content\n return this.L.divIcon({\n html: iconSrc,\n className: 'ax-map-custom-icon',\n iconSize: [25, 25],\n iconAnchor: [12, 12],\n popupAnchor: [0, -12],\n });\n } else {\n // Create an icon with the URL\n return this.L.icon({\n iconUrl: iconSrc,\n iconSize: [25, 25],\n iconAnchor: [12, 12],\n popupAnchor: [0, -12],\n });\n }\n } catch (error) {\n console.warn(`Error creating icon from source: ${iconSrc}`, error);\n return this.defaultIcon;\n }\n }\n\n /**\n * Gets the Leaflet map instance.\n * @returns The Leaflet map instance, or undefined if not initialized.\n */\n public getMap(): L.Map | undefined {\n return this.map;\n }\n\n /**\n * Gets the Leaflet package.\n * @returns The Leaflet package.\n */\n public getLeafletPackage(): typeof import('leaflet') {\n return this.L;\n }\n\n /**\n * Sets the zoom level of the map.\n * @param zoom The desired zoom level.\n */\n public setZoomLevel(zoom: number): void {\n if (this.map) {\n this.map.setZoom(zoom);\n this.handleZoomChange(); // Emit zoom change event\n }\n }\n\n /**\n * Sets the center of the map.\n * @param location The new center location.\n */\n public setCenter(location: AXMapLatLng): void {\n if (this.map && location) {\n const currentCenter = this.map.getCenter();\n const newLat = location.latitude;\n const newLng = location.longitude;\n\n // Only update if center actually changed (avoid unnecessary updates)\n if (Math.abs(currentCenter.lat - newLat) > 0.0001 || Math.abs(currentCenter.lng - newLng) > 0.0001) {\n this._isUpdatingCenter = true;\n this.map.setView([newLat, newLng], this.map.getZoom());\n // Reset flag after a short delay to allow moveend event to fire\n setTimeout(() => {\n this._isUpdatingCenter = false;\n }, 100);\n }\n }\n }\n\n /**\n * Flies to a specific location on the map.\n * @param location The target location.\n * @param zoom The target zoom level (optional).\n * @param setMarker Whether to add a marker at the destination after flying.\n * @param duration The duration of the fly animation in seconds.\n */\n public flyTo(location: AXMapLatLng, zoom?: number, setMarker = false, duration = 1.0): void {\n if (this.map && location) {\n this.map.flyTo([location.latitude, location.longitude], zoom || this.map.getZoom(), {\n animate: true,\n duration: duration,\n });\n if (setMarker) {\n this.map.once('moveend', () => {\n this.addMarker(location);\n this.handleCenterChange(); // Emit center change events after flying\n });\n } else {\n this.map.once('moveend', () => this.handleCenterChange()); // Emit center change events after flying\n }\n }\n }\n\n /**\n * Gets all markers currently on the map.\n * @returns An array of AXMapMarker objects.\n */\n public getMarkers(): AXMapMarker[] {\n if (!this.markerLayer) {\n return [];\n }\n\n return this.markerLayer\n .getLayers()\n .filter((layer) => layer instanceof this.L.Marker)\n .map((marker) => {\n const latLng = (marker as L.Marker).getLatLng();\n const location = (marker as any).location || {};\n return {\n latitude: latLng.lat,\n longitude: latLng.lng,\n title: location.title || marker.options.title,\n iconKey: location.iconKey,\n icon: location.icon,\n popup: location.popup,\n popupOpen: location.popupOpen,\n popupCloseButton: location.popupCloseButton,\n id: location.id,\n isLocked: location.isLocked,\n } as AXMapMarker;\n });\n }\n /**\n * Gets all polygons currently on the map.\n * @returns An array of AXMapPolygon objects.\n */\n public getPolygons(): AXMapPolygon[] {\n if (!this.polygonLayer) {\n return [];\n }\n\n return this.polygonLayer\n .getLayers()\n .filter((layer) => this.isPolygonLayer(layer))\n .map((polygon) => {\n const latLngs = polygon.getLatLngs()[0]; // Access the outer boundary\n const meta = (polygon as any).polygon as AXMapPolygon | undefined;\n\n const points: AXMapLatLng[] = (latLngs as any).map((latLng) => ({\n latitude: latLng.lat,\n longitude: latLng.lng,\n }));\n\n return {\n points,\n title: meta?.title,\n color: polygon.options?.color,\n id: meta?.id,\n isLocked: meta?.isLocked,\n };\n });\n }\n\n /**\n * Gets all polylines currently on the map.\n */\n public getPolylines(): AXMapPolyline[] {\n if (!this.polylineLayer) {\n return [];\n }\n\n return this.polylineLayer\n .getLayers()\n .filter((layer) => this.isPolylineLayer(layer))\n .map((polyline) => {\n const latLngs = polyline.getLatLngs() as L.LatLng[];\n const meta = (polyline as any).polyline as AXMapPolyline | undefined;\n\n return {\n points: latLngs.map((latLng) => ({\n latitude: latLng.lat,\n longitude: latLng.lng,\n })),\n title: meta?.title,\n color: polyline.options?.color,\n id: meta?.id,\n isLocked: meta?.isLocked,\n };\n });\n }\n\n /**\n * Gets all rectangles currently on the map.\n */\n public getRectangles(): AXMapRectangle[] {\n if (!this.rectangleLayer) {\n return [];\n }\n\n return this.rectangleLayer\n .getLayers()\n .filter((layer) => this.isRectangleLayer(layer))\n .map((rectangle) => {\n const bounds = rectangle.getBounds();\n const meta = (rectangle as any).rectangle as AXMapRectangle | undefined;\n\n return {\n southWest: {\n latitude: bounds.getSouthWest().lat,\n longitude: bounds.getSouthWest().lng,\n },\n northEast: {\n latitude: bounds.getNorthEast().lat,\n longitude: bounds.getNorthEast().lng,\n },\n title: meta?.title,\n color: rectangle.options?.color,\n id: meta?.id,\n isLocked: meta?.isLocked,\n };\n });\n }\n\n /**\n * Gets all circles currently on the map.\n */\n public getCircles(): AXMapCircle[] {\n if (!this.circleLayer) {\n return [];\n }\n\n return this.circleLayer\n .getLayers()\n .filter((layer) => this.isCircleLayer(layer))\n .map((circle) => {\n const center = circle.getLatLng();\n const meta = (circle as any).circle as AXMapCircle | undefined;\n\n return {\n center: {\n latitude: center.lat,\n longitude: center.lng,\n },\n radius: circle.getRadius(),\n title: meta?.title,\n color: circle.options?.color,\n id: meta?.id,\n isLocked: meta?.isLocked,\n };\n });\n }\n\n /**\n * Gets POI markers from the POI layer.\n * @returns Array of POI markers.\n */\n public getPois(): AXPoiMarker[] {\n const pois: AXPoiMarker[] = [];\n if (!this.poiLayer || !this.map) {\n return pois;\n }\n\n this.poiLayer.eachLayer((layer: any) => {\n if (layer instanceof this.L.Marker) {\n const latLng = layer.getLatLng();\n const poi: AXPoiMarker = {\n latitude: latLng.lat,\n longitude: latLng.lng,\n };\n\n // Extract additional properties if available\n if (layer.options.title) {\n poi.title = layer.options.title;\n }\n if ((layer.options as any).iconKey) {\n poi.iconKey = (layer.options as any).iconKey;\n }\n if ((layer.options as any).providerKey) {\n (poi as any).providerKey = (layer.options as any).providerKey;\n }\n if ((layer.options as any).minZoom !== undefined) {\n poi.minZoom = (layer.options as any).minZoom;\n }\n\n // Handle popup if available\n const popup = layer.getPopup();\n if (popup) {\n const content = popup.getContent();\n poi.popup = typeof content === 'string' ? content : '';\n poi.popupOpen = layer.isPopupOpen();\n }\n\n pois.push(poi);\n }\n });\n\n return pois;\n }\n\n /**\n * Adds a draw control to the map for creating markers, polygons, polylines, rectangles, and circles.\n */\n public addDrawControl(\n position: AXMapControlPlace = 'topleft',\n maxMarkers?: number,\n maxPolygons?: number,\n maxPolylines?: number,\n maxRectangles?: number,\n maxCircles?: number,\n shapeColor?: string,\n ): void {\n this._hasDrawControl = true;\n this.position = position;\n if (maxMarkers !== undefined) this.maxMarkers = maxMarkers;\n if (maxPolygons !== undefined) this.maxPolygons = maxPolygons;\n if (maxPolylines !== undefined) this.maxPolylines = maxPolylines;\n if (maxRectangles !== undefined) this.maxRectangles = maxRectangles;\n if (maxCircles !== undefined) this.maxCircles = maxCircles;\n if (shapeColor) this.shapeColor = shapeColor;\n\n if (this.drawControl) {\n this.map?.removeControl(this.drawControl);\n this.drawControl = undefined;\n }\n\n if (this.map) {\n this.drawControl = new this.L.Control.Draw({\n position: this.position,\n edit: {\n featureGroup: this.drawnItems,\n },\n draw: {\n marker: this.canDrawMoreMarkers() ? { icon: this.defaultIcon } : false,\n polygon: this.canDrawMorePolygons() ? {} : false,\n polyline: this.canDrawMorePolylines() ? {} : false,\n rectangle: this.canDrawMoreRectangles() ? {} : false,\n circle: this.canDrawMoreCircles() ? {} : false,\n circlemarker: false,\n },\n });\n this.map.addControl(this.drawControl);\n\n const onCreated = (event: any) => {\n const layer = event.layer;\n if (layer instanceof this.L.Marker) {\n const markerData = { latitude: layer.getLatLng().lat, longitude: layer.getLatLng().lng };\n this.addMarker(markerData);\n } else if (this.isPolygonLayer(layer)) {\n const latLngs = layer.getLatLngs();\n const polygonData: AXMapPolygon = {\n points: (latLngs[0] as Array<any>).map((latLng) => ({\n latitude: latLng.lat,\n longitude: latLng.lng,\n })),\n color: this.shapeColor || this.getRandomColorName(),\n };\n this.addPolygon(polygonData);\n } else if (this.isPolylineLayer(layer)) {\n const latLngs = layer.getLatLngs() as L.LatLng[];\n const polylineData: AXMapPolyline = {\n points: latLngs.map((latLng) => ({\n latitude: latLng.lat,\n longitude: latLng.lng,\n })),\n color: this.shapeColor || this.getRandomColorName(),\n };\n this.addPolyline(polylineData);\n } else if (this.isRectangleLayer(layer)) {\n const bounds = layer.getBounds();\n const rectangleData: AXMapRectangle = {\n southWest: {\n latitude: bounds.getSouthWest().lat,\n longitude: bounds.getSouthWest().lng,\n },\n northEast: {\n latitude: bounds.getNorthEast().lat,\n longitude: bounds.getNorthEast().lng,\n },\n color: this.shapeColor || this.getRandomColorName(),\n };\n this.addRectangle(rectangleData);\n } else if (this.isCircleLayer(layer)) {\n const center = layer.getLatLng();\n const circleData: AXMapCircle = {\n center: {\n latitude: center.lat,\n longitude: center.lng,\n },\n radius: layer.getRadius(),\n color: this.shapeColor || this.getRandomColorName(),\n };\n this.addCircle(circleData);\n } else {\n console.warn('Unsupported layer type drawn:', layer);\n }\n };\n\n const onDeleted = (event: any) => {\n const deletedLayers = event.layers;\n const layersToReAdd: L.Layer[] = [];\n\n deletedLayers.eachLayer((layer: L.Layer) => {\n if (layer instanceof this.L.Marker) {\n const loc = (layer as any).location as AXMapMarker;\n if (loc?.isLocked) {\n layersToReAdd.push(layer);\n }\n } else if (this.isPolygonLayer(layer)) {\n const meta = (layer as any).polygon as AXMapPolygon | undefined;\n if (meta?.isLocked) {\n layersToReAdd.push(layer);\n }\n } else if (this.isPolylineLayer(layer)) {\n const meta = (layer as any).polyline as AXMapPolyline | undefined;\n if (meta?.isLocked) {\n layersToReAdd.push(layer);\n }\n } else if (this.isRectangleLayer(layer)) {\n const meta = (layer as any).rectangle as AXMapRectangle | undefined;\n if (meta?.isLocked) {\n layersToReAdd.push(layer);\n }\n } else if (this.isCircleLayer(layer)) {\n const meta = (layer as any).circle as AXMapCircle | undefined;\n if (meta?.isLocked) {\n layersToReAdd.push(layer);\n }\n } else {\n console.warn('Unsupported layer type deleted:', layer);\n }\n });\n\n layersToReAdd.forEach((layer) => {\n this.drawnItems.addLayer(layer);\n });\n\n this.onMarkerChanged.emit(this.getMarkers());\n this.onPolygonChanged.emit(this.getPolygons());\n this.onPolylineChanged.emit(this.getPolylines());\n this.onRectangleChanged.emit(this.getRectangles());\n this.onCircleChanged.emit(this.getCircles());\n this.refreshDrawControl();\n };\n\n const onEdited = (event: any) => {\n const layers = event.layers;\n layers.eachLayer((layer: L.Layer) => {\n if (layer instanceof this.L.Marker) {\n const loc = (layer as any).location as AXMapMarker;\n if (loc?.isLocked) {\n (layer as L.Marker).setLatLng(this.L.latLng(loc.latitude, loc.longitude));\n } else {\n const latlng = (layer as L.Marker).getLatLng();\n const newLocation = { latitude: latlng.lat, longitude: latlng.lng };\n\n if (this.boundary) {\n const isWithinBounds = this.boundary.some((boundaryPolygon) =>\n this.isPointInPolygon(newLocation, boundaryPolygon),\n );\n if (!isWithinBounds) {\n (layer as L.Marker).setLatLng(this.L.latLng(loc.latitude, loc.longitude));\n console.warn('Marker movement outside the boundary is not allowed.');\n return;\n }\n }\n\n loc.latitude = latlng.lat;\n loc.longitude = latlng.lng;\n }\n this.onMarkerChanged.emit(this.getMarkers());\n } else if (this.isPolygonLayer(layer)) {\n const latLngs = (layer as L.Polygon).getLatLngs()[0];\n const polygonPoints = (latLngs as any).map((latLng: any) => ({\n latitude: latLng.lat,\n longitude: latLng.lng,\n }));\n\n if (this.boundary && !this.arePointsWithinBoundary(polygonPoints)) {\n console.warn('Polygon editing outside the boundary is not allowed.');\n return;\n }\n\n const existing = (layer as any).polygon as AXMapPolygon | undefined;\n if (existing) {\n (layer as any).polygon = { ...existing, points: polygonPoints };\n }\n\n this.onPolygonChanged.emit(this.getPolygons());\n } else if (this.isPolylineLayer(layer)) {\n const latLngs = (layer as L.Polyline).getLatLngs() as L.LatLng[];\n const polylinePoints = latLngs.map((latLng) => ({\n latitude: latLng.lat,\n longitude: latLng.lng,\n }));\n\n if (this.boundary && !this.arePointsWithinBoundary(polylinePoints)) {\n console.warn('Polyline editing outside the boundary is not allowed.');\n return;\n }\n\n const existing = (layer as any).polyline as AXMapPolyline | undefined;\n if (existing) {\n (layer as any).polyline = { ...existing, points: polylinePoints };\n }\n\n this.onPolylineChanged.emit(this.getPolylines());\n } else if (this.isRectangleLayer(layer)) {\n const bounds = (layer as L.Rectangle).getBounds();\n const rectangleData: AXMapRectangle = {\n southWest: {\n latitude: bounds.getSouthWest().lat,\n longitude: bounds.getSouthWest().lng,\n },\n northEast: {\n latitude: bounds.getNorthEast().lat,\n longitude: bounds.getNorthEast().lng,\n },\n };\n\n if (this.boundary && !this.arePointsWithinBoundary(this.getRectangleCornerPoints(rectangleData))) {\n console.warn('Rectangle editing outside the boundary is not allowed.');\n return;\n }\n\n const existing = (layer as any).rectangle as AXMapRectangle | undefined;\n if (existing) {\n (layer as any).rectangle = { ...existing, ...rectangleData };\n }\n\n this.onRectangleChanged.emit(this.getRectangles());\n } else if (this.isCircleLayer(layer)) {\n const center = (layer as L.Circle).getLatLng();\n const circleData: AXMapCircle = {\n center: {\n latitude: center.lat,\n longitude: center.lng,\n },\n radius: (layer as L.Circle).getRadius(),\n };\n\n if (\n this.boundary &&\n !this.boundary.some((boundaryPolygon) => this.isPointInPolygon(circleData.center, boundaryPolygon))\n ) {\n console.warn('Circle editing outside the boundary is not allowed.');\n return;\n }\n\n const existing = (layer as any).circle as AXMapCircle | undefined;\n if (existing) {\n (layer as any).circle = { ...existing, ...circleData };\n }\n\n this.onCircleChanged.emit(this.getCircles());\n } else {\n console.warn('Unsupported layer type edited:', layer);\n }\n });\n };\n\n this.map.off('draw:created');\n this.map.off('draw:deleted');\n this.map.off('draw:edited');\n this.map.off('draw:drawstart');\n this.map.off('draw:drawstop');\n\n this.map.on('draw:created', onCreated);\n this.map.on('draw:deleted', onDeleted);\n this.map.on('draw:edited', onEdited);\n\n this.map.on('draw:drawstart', () => {\n this._isCurrentlyDrawing = true;\n });\n\n this.map.on('draw:drawstop', () => {\n this._isCurrentlyDrawing = false;\n });\n }\n }\n\n /**\n * Adds a locate control to the map.\n * @param position The position of the control on the map. Defaults to 'bottomright'.\n */\n public addLocateControl(position: AXMapControlPlace = 'bottomright'): void {\n if (this.locateControl) {\n this.map?.removeControl(this.locateControl);\n this.locateControl = undefined;\n }\n if (this.map) {\n const locateControl = this.L.control\n .locate({\n position: position,\n flyTo: true,\n setView: 'untilPanOrZoom',\n showPopup: true,\n onLocationError: (e) => console.warn(e.message),\n onLocationOutsideMapBounds: (control) => control.stop(),\n locateOptions: {\n enableHighAccuracy: true,\n },\n strings: {\n title: 'Show my location',\n popup: 'You are within {distance} meters from this point',\n outsideMapBoundsMsg: 'You seem to be outside the map bounds',\n },\n })\n .addTo(this.map);\n\n this.locateControl = locateControl;\n\n const onLocationFound = (event: any) => {\n const location: AXMapLocation = {\n latitude: event.latitude,\n longitude: event.longitude,\n precision: event.accuracy,\n };\n this.onLocationFound.emit(location);\n };\n\n this.map.on('locationfound', onLocationFound);\n }\n }\n\n private availableColors = ['red', 'blue', 'green', 'orange', 'purple', 'brown', 'black'];\n\n private getRandomColorName = () => {\n const randomIndex = Math.floor(Math.random() * this.availableColors.length);\n return this.availableColors[randomIndex];\n };\n\n /**\n * Removes the draw control from the map.\n */\n public removeDrawControl(): void {\n if (this.drawControl) {\n this.map?.removeControl(this.drawControl);\n this.drawControl = undefined;\n }\n }\n\n /**\n * Removes the locate control from the map.\n */\n public removeLocateControl(): void {\n if (this.map && this.locateControl) {\n this.map.removeControl(this.locateControl);\n this.locateControl = undefined;\n }\n }\n\n /**\n * Clears all drawn items, including markers, polygons, and POIs.\n * @param clearPois Whether to clear POI markers as well. Defaults to false.\n */\n public clearDrawItems(clearPois = false): void {\n if (!this.map || !this.drawnItems) {\n return;\n }\n\n this.drawnItems.clearLayers();\n if (this._hasDrawControl) {\n this.refreshDrawControl();\n }\n\n // Clear POI layer if requested\n if (clearPois && this.poiLayer) {\n this.poiLayer.clearLayers();\n this.poiMarkers = [];\n this.onPoiChanged.emit([]);\n\n if (this.poiProviderService) {\n this.loadPoisFromProviders();\n }\n }\n\n this.onMarkerChanged.emit([]);\n this.onPolygonChanged.emit([]);\n this.onPolylineChanged.emit([]);\n this.onRectangleChanged.emit([]);\n this.onCircleChanged.emit([]);\n }\n\n /**\n * Gets the current drawn items (markers and polygons).\n * @returns An object containing arrays of markers and polygons.\n */\n public getDrawItem(): AXMapData {\n return {\n pois: this.getPois(),\n markers: this.getMarkers(),\n polygons: this.getPolygons(),\n polylines: this.getPolylines(),\n rectangles: this.getRectangles(),\n circles: this.getCircles(),\n };\n }\n\n /**\n * Sets the drawn items on the map.\n */\n public async setDrawItem(data: AXMapData) {\n await this.addMarker(data.markers);\n this.addPolygon(data.polygons);\n this.addPolyline(data.polylines ?? []);\n this.addRectangle(data.rectangles ?? []);\n this.addCircle(data.circles ?? []);\n await this.addPoi(data.pois);\n }\n\n /**\n * Adjusts the map view to fit all markers, polygons, and boundaries currently on the map.\n * POIs are included based on the includePois parameter.\n */\n public fitBoundsToDrawItems(includePois = false): void {\n if (!this.map) {\n return;\n }\n\n const layersToFit: L.Layer[] = [...this.getAllEditableLayers()];\n\n if (includePois && this.poiLayer) {\n layersToFit.push(...this.poiLayer.getLayers());\n }\n\n if (this.boundaryLayer) {\n layersToFit.push(...this.boundaryLayer.getLayers());\n }\n\n if (layersToFit.length > 0) {\n const featureGroup = this.L.featureGroup(layersToFit);\n const bounds = featureGroup.getBounds();\n if (bounds.isValid()) {\n this.map.fitBounds(bounds, { padding: [50, 50] });\n }\n }\n }\n\n /**\n * Sets a boundary for restricting markers and polygons.\n * @param boundaryPolygon The polygon defining the boundary area.\n */\n\n public setBoundary(boundaryPolygons: AXMapPolygon[]): void {\n if (!this.L || !boundaryPolygons || boundaryPolygons.length === 0) {\n console.warn('Invalid boundary polygons provided.');\n return;\n }\n\n // Store the boundary polygons\n this.boundary = boundaryPolygons;\n this.boundaryLayer.clearLayers();\n\n boundaryPolygons.forEach((boundaryPolygon) => {\n if (boundaryPolygon.points.length < 3) {\n console.warn('Invalid boundary polygon provided.');\n return;\n }\n\n const polygon = this.L.polygon(\n boundaryPolygon.points.map((point) => [point.latitude, point.longitude]),\n { color: boundaryPolygon.color ?? 'green', weight: 2, fillOpacity: 0.1, dashArray: '0 10 5 0' },\n );\n\n this.boundaryLayer.addLayer(polygon);\n });\n }\n\n // Add this utility function to your code\n isPointInPolygon(point: AXMapLatLng, polygon: AXMapPolygon): boolean {\n const x = point.latitude;\n const y = point.longitude;\n let inside = false;\n\n for (let i = 0, j = polygon.points.length - 1; i < polygon.points.length; j = i++) {\n const xi = polygon.points[i].latitude;\n const yi = polygon.points[i].longitude;\n const xj = polygon.points[j].latitude;\n const yj = polygon.points[j].longitude;\n\n const intersect = yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;\n\n if (intersect) inside = !inside;\n }\n\n return inside;\n }\n\n /**\n * Removes the boundary, allowing unrestricted drawing.\n */\n public removeBoundary(): void {\n this.boundaryLayer?.clearLayers();\n this.boundary = null;\n }\n\n /**\n * Destroys the map instance and removes all event listeners.\n */\n public destroyMap(): void {\n // Clear POI marker references\n this.poiMarkers = [];\n\n if (this.map) {\n this.map.off();\n this.map.remove();\n this.map = undefined;\n this.drawControl = undefined;\n this.locateControl = undefined;\n }\n }\n\n /**\n * Updates a marker's popup text and options\n * @param marker The marker to update\n * @param popup The new popup text\n * @param open Whether the popup should be opened after update\n * @param closeButton Whether the popup should have a close button\n * @returns True if the update was successful, false otherwise\n */\n public updateMarkerPopup(marker: AXMapMarker, popup: string, open = false, closeButton = true): boolean {\n if (!this.map) return false;\n\n // Find the marker in the drawn items\n const markerLayer = this.findMarkerLayer(marker);\n if (!markerLayer) return false;\n\n // Update the popup\n markerLayer.unbindPopup();\n markerLayer.bindPopup(popup, {\n closeButton: closeButton,\n className: 'ax-map-popup',\n });\n\n // Open popup if requested\n if (open) {\n markerLayer.openPopup();\n }\n\n // Update the marker data\n (markerLayer as any).location.popup = popup;\n (markerLayer as any).location.popupOpen = open;\n (markerLayer as any).location.popupCloseButton = closeButton;\n\n return true;\n }\n\n /**\n * Finds a marker layer by its latitude and longitude\n * @param marker The marker to find\n * @returns The Leaflet marker layer or undefined if not found\n */\n private findMarkerLayer(marker: AXMapMarker): L.Marker | undefined {\n let foundMarker: L.Marker | undefined;\n\n this.markerLayer.eachLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n const layerLatLng = layer.getLatLng();\n if (layerLatLng.lat === marker.latitude && layerLatLng.lng === marker.longitude) {\n foundMarker = layer as L.Marker;\n }\n }\n });\n\n return foundMarker;\n }\n\n /**\n * Updates popups for multiple markers in a single operation\n * @param updates Array of marker popup updates\n * @returns Number of markers successfully updated\n */\n public updateMarkerPopups(\n updates: { marker: AXMapMarker; popup: string; open?: boolean; closeButton?: boolean }[],\n ): number {\n if (!this.map) return 0;\n\n let successCount = 0;\n\n // Create a map of coordinates to marker layers for faster lookup\n const markerLayerMap = new Map<string, L.Marker>();\n\n this.markerLayer.eachLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n const latLng = layer.getLatLng();\n const key = `${latLng.lat},${latLng.lng}`;\n markerLayerMap.set(key, layer as L.Marker);\n }\n });\n\n // Process updates using the map for faster lookups\n updates.forEach((update) => {\n const key = `${update.marker.latitude},${update.marker.longitude}`;\n const markerLayer = markerLayerMap.get(key);\n\n if (markerLayer) {\n // Update popup\n markerLayer.unbindPopup();\n markerLayer.bindPopup(update.popup, {\n closeButton: update.closeButton ?? true,\n className: 'ax-map-popup',\n });\n\n // Open popup if requested\n if (update.open) {\n markerLayer.openPopup();\n }\n\n // Update marker data\n (markerLayer as any).location.popup = update.popup;\n (markerLayer as any).location.popupOpen = update.open ?? false;\n (markerLayer as any).location.popupCloseButton = update.closeButton ?? true;\n\n successCount++;\n }\n });\n\n return successCount;\n }\n\n /**\n * Adds a marker or markers to the map.\n * @param locations The marker or markers to add.\n */\n public async addMarker(locations: AXMapMarker | AXMapMarker[], emitEvents = true): Promise<void> {\n if (!this.map || !this.L) {\n console.warn('Map or Leaflet not initialized.');\n return;\n }\n\n if (\n this.maxMarkers !== null &&\n this.getMarkers().length + (Array.isArray(locations) ? locations.length : 1) > this.maxMarkers\n ) {\n console.warn('Markers Reached max count.');\n }\n\n const locationsArray = Array.isArray(locations) ? locations : [locations];\n\n for (const location of locationsArray) {\n // Check if the marker is within any of the boundary polygons\n if (this.boundary) {\n const isWithinBounds = this.boundary.some((boundaryPolygon) =>\n this.isPointInPolygon(location, boundaryPolygon),\n );\n if (!isWithinBounds) {\n console.warn('Marker placement outside the boundary is not allowed.');\n continue;\n }\n }\n\n // Get icon from either iconKey or direct icon\n let markerIcon = this.defaultIcon;\n if (location.iconKey) {\n markerIcon = await this.setCustomIcon(location.iconKey);\n }\n\n // Add the marker to the map\n const marker = this.L.marker([location.latitude, location.longitude], {\n icon: markerIcon,\n draggable: !location.isLocked && !!this.drawControl && !this._isDisabled && !this._isReadonly,\n });\n\n // Handle popup if provided\n if (location.popup) {\n marker.bindPopup(location.popup, {\n closeButton: location.popupCloseButton !== false,\n className: 'ax-map-popup',\n });\n\n if (location.popupOpen) {\n marker.openPopup();\n }\n }\n\n // Store the location data for later retrieval\n (marker as any).location = location;\n\n marker.on('click', () => {\n this.onMarkerClick.emit(location);\n });\n\n // Handle drag events (without emitting to avoid performance issues)\n marker.on('drag', (event) => {\n const latlng = (event.target as L.Marker).getLatLng();\n const loc = (event.target as any).location as AXMapMarker;\n if (loc?.isLocked) {\n (event.target as L.Marker).setLatLng(this.L.latLng(loc.latitude, loc.longitude));\n return;\n }\n\n // Check boundary during drag\n if (this.boundary) {\n const newLocation = { latitude: latlng.lat, longitude: latlng.lng };\n const isWithinBounds = this.boundary.some((boundaryPolygon) =>\n this.isPointInPolygon(newLocation, boundaryPolygon),\n );\n if (!isWithinBounds) {\n // Revert to original position if outside boundary\n (event.target as L.Marker).setLatLng(this.L.latLng(loc.latitude, loc.longitude));\n return;\n }\n }\n\n // Update location data during drag (but don't emit to avoid lag)\n loc.latitude = latlng.lat;\n loc.longitude = latlng.lng;\n });\n\n marker.on('dragend', (event) => {\n const latlng = (event.target as L.Marker).getLatLng();\n const loc = (event.target as any).location as AXMapMarker;\n if (loc?.isLocked) {\n // revert drag\n (event.target as L.Marker).setLatLng(this.L.latLng(loc.latitude, loc.longitude));\n return;\n }\n\n // Final boundary check on drag end\n if (this.boundary) {\n const newLocation = { latitude: latlng.lat, longitude: latlng.lng };\n const isWithinBounds = this.boundary.some((boundaryPolygon) =>\n this.isPointInPolygon(newLocation, boundaryPolygon),\n );\n if (!isWithinBounds) {\n // Revert to original position if outside boundary\n (event.target as L.Marker).setLatLng(this.L.latLng(loc.latitude, loc.longitude));\n console.warn('Marker movement outside the boundary is not allowed.');\n return;\n }\n }\n\n loc.latitude = latlng.lat;\n loc.longitude = latlng.lng;\n this.onMarkerChanged.emit(this.getMarkers());\n });\n\n this.markerLayer.addLayer(marker);\n if (emitEvents) {\n this.onMarkerAdded.emit(location);\n }\n }\n if (emitEvents) {\n this.onMarkerChanged.emit(this.getMarkers());\n }\n\n if (this.getMarkers().length === this.maxMarkers && this._hasDrawControl) {\n this.refreshDrawControl();\n }\n }\n\n /**\n * Adds a polygon or polygons to the map, respecting the boundary if set.\n * @param polygons The polygon or polygons to add.\n * @param clickCallback Optional callback function to be executed on polygon click.\n */\n public addPolygon(polygons: AXMapPolygon | AXMapPolygon[], emitEvents = true): void {\n if (!this.map || !this.L) {\n console.warn('Map or Leaflet not initialized.');\n return;\n }\n\n const polygonsToAdd = Array.isArray(polygons) ? polygons : [polygons];\n\n polygonsToAdd.forEach((polygon) => {\n if (polygon.points.length < 3) {\n console.warn('Polygon needs 3 or more points.');\n return;\n }\n\n if (this.maxPolygons !== null && this.getPolygons().length >= this.maxPolygons) {\n console.warn('Polygon reached max count.');\n return;\n }\n\n // Check if all polygon points are within any of the boundary polygons\n if (this.boundary) {\n const isWithinBounds = polygon.points.every((point) =>\n this.boundary.some((boundaryPolygon) => this.isPointInPolygon(point, boundaryPolygon)),\n );\n\n if (!isWithinBounds) {\n console.warn('Polygon drawing outside the boundary is not allowed.');\n return;\n }\n }\n\n // Create the polygon\n const latLngs = polygon.points.map((point) => this.L.latLng(point.latitude, point.longitude));\n const newPolygon = new this.L.Polygon(latLngs, { color: polygon.color || 'blue' });\n\n // Store metadata for later lookup/removal by id\n (newPolygon as any).polygon = polygon;\n\n if (polygon.title) {\n newPolygon.bindPopup(polygon.title);\n }\n\n newPolygon.on('click', () => {\n this.onPolygonClick.emit(polygon);\n });\n\n // Add the polygon to the map\n this.polygonLayer.addLayer(newPolygon);\n\n // Emit events\n if (emitEvents) {\n this.onPolygonAdded.emit(polygon);\n this.onPolygonChanged.emit(this.getPolygons());\n }\n });\n\n if (this.getPolygons().length === this.maxPolygons && this._hasDrawControl) {\n this.refreshDrawControl();\n }\n }\n\n /**\n * Adds a polyline or polylines to the map.\n */\n public addPolyline(polylines: AXMapPolyline | AXMapPolyline[], emitEvents = true): void {\n if (!this.map || !this.L) {\n console.warn('Map or Leaflet not initialized.');\n return;\n }\n\n const polylinesToAdd = Array.isArray(polylines) ? polylines : [polylines];\n\n polylinesToAdd.forEach((polyline) => {\n if (polyline.points.length < 2) {\n console.warn('Polyline needs 2 or more points.');\n return;\n }\n\n if (this.maxPolylines !== null && this.getPolylines().length >= this.maxPolylines) {\n console.warn('Polyline reached max count.');\n return;\n }\n\n if (this.boundary && !this.arePointsWithinBoundary(polyline.points)) {\n console.warn('Polyline drawing outside the boundary is not allowed.');\n return;\n }\n\n const latLngs = polyline.points.map((point) => this.L.latLng(point.latitude, point.longitude));\n const newPolyline = new this.L.Polyline(latLngs, { color: polyline.color || this.shapeColor });\n\n (newPolyline as any).polyline = polyline;\n\n if (polyline.title) {\n newPolyline.bindPopup(polyline.title);\n }\n\n newPolyline.on('click', () => {\n this.onPolylineClick.emit(polyline);\n });\n\n this.polylineLayer.addLayer(newPolyline);\n\n if (emitEvents) {\n this.onPolylineAdded.emit(polyline);\n this.onPolylineChanged.emit(this.getPolylines());\n }\n });\n\n if (this.getPolylines().length === this.maxPolylines && this._hasDrawControl) {\n this.refreshDrawControl();\n }\n }\n\n /**\n * Adds a rectangle or rectangles to the map.\n */\n public addRectangle(rectangles: AXMapRectangle | AXMapRectangle[], emitEvents = true): void {\n if (!this.map || !this.L) {\n console.warn('Map or Leaflet not initialized.');\n return;\n }\n\n const rectanglesToAdd = Array.isArray(rectangles) ? rectangles : [rectangles];\n\n rectanglesToAdd.forEach((rectangle) => {\n if (this.maxRectangles !== null && this.getRectangles().length >= this.maxRectangles) {\n console.warn('Rectangle reached max count.');\n return;\n }\n\n const cornerPoints = this.getRectangleCornerPoints(rectangle);\n if (this.boundary && !this.arePointsWithinBoundary(cornerPoints)) {\n console.warn('Rectangle drawing outside the boundary is not allowed.');\n return;\n }\n\n const bounds = this.L.latLngBounds(\n [rectangle.southWest.latitude, rectangle.southWest.longitude],\n [rectangle.northEast.latitude, rectangle.northEast.longitude],\n );\n const newRectangle = new this.L.Rectangle(bounds, { color: rectangle.color || this.shapeColor });\n\n (newRectangle as any).rectangle = rectangle;\n\n if (rectangle.title) {\n newRectangle.bindPopup(rectangle.title);\n }\n\n newRectangle.on('click', () => {\n this.onRectangleClick.emit(rectangle);\n });\n\n this.rectangleLayer.addLayer(newRectangle);\n\n if (emitEvents) {\n this.onRectangleAdded.emit(rectangle);\n this.onRectangleChanged.emit(this.getRectangles());\n }\n });\n\n if (this.getRectangles().length === this.maxRectangles && this._hasDrawControl) {\n this.refreshDrawControl();\n }\n }\n\n /**\n * Adds a circle or circles to the map.\n */\n public addCircle(circles: AXMapCircle | AXMapCircle[], emitEvents = true): void {\n if (!this.map || !this.L) {\n console.warn('Map or Leaflet not initialized.');\n return;\n }\n\n const circlesToAdd = Array.isArray(circles) ? circles : [circles];\n\n circlesToAdd.forEach((circle) => {\n if (circle.radius <= 0) {\n console.warn('Circle radius must be greater than 0.');\n return;\n }\n\n if (this.maxCircles !== null && this.getCircles().length >= this.maxCircles) {\n console.warn('Circle reached max count.');\n return;\n }\n\n if (\n this.boundary &&\n !this.boundary.some((boundaryPolygon) => this.isPointInPolygon(circle.center, boundaryPolygon))\n ) {\n console.warn('Circle drawing outside the boundary is not allowed.');\n return;\n }\n\n const newCircle = new this.L.Circle([circle.center.latitude, circle.center.longitude], {\n radius: circle.radius,\n color: circle.color || this.shapeColor,\n });\n\n (newCircle as any).circle = circle;\n\n if (circle.title) {\n newCircle.bindPopup(circle.title);\n }\n\n newCircle.on('click', () => {\n this.onCircleClick.emit(circle);\n });\n\n this.circleLayer.addLayer(newCircle);\n\n if (emitEvents) {\n this.onCircleAdded.emit(circle);\n this.onCircleChanged.emit(this.getCircles());\n }\n });\n\n if (this.getCircles().length === this.maxCircles && this._hasDrawControl) {\n this.refreshDrawControl();\n }\n }\n\n /**\n * Adds a POI marker to the map.\n * @param locations One or more POI markers to add.\n */\n public async addPoi(locations: AXPoiMarker | AXPoiMarker[]): Promise<void> {\n if (!this.map || !this.poiLayer) {\n return;\n }\n\n const addSinglePoi = async (poi: AXPoiMarker) => {\n try {\n let icon = this.defaultIcon;\n\n if (poi.iconKey) {\n icon = await this.setCustomIcon(poi.iconKey);\n }\n\n const markerOptions: L.MarkerOptions = {\n icon,\n title: poi.title,\n draggable: !this._isDisabled && !this._isReadonly,\n };\n\n // Add custom properties to options\n (markerOptions as any).iconKey = poi.iconKey;\n (markerOptions as any).providerKey = (poi as any).providerKey;\n // Store minZoom property in marker options\n (markerOptions as any).minZoom = poi.minZoom !== undefined ? poi.minZoom : this.poiMinZoom;\n\n const marker = this.L.marker([poi.latitude, poi.longitude], markerOptions);\n\n if (poi.popup) {\n marker.bindPopup(poi.popup, {\n closeButton: poi.popupCloseButton !== false,\n });\n\n if (poi.popupOpen) {\n marker.openPopup();\n }\n }\n\n marker.on('dragend', (event) => {\n const latLng = event.target.getLatLng();\n // Update poi location data in the marker\n (event.target as any).poi = {\n ...poi,\n latitude: latLng.lat,\n longitude: latLng.lng,\n };\n\n this.onPoiChanged.emit(this.getPois());\n });\n\n this.poiLayer.addLayer(marker);\n // Track this marker for visibility control\n this.poiMarkers.push(marker);\n this.onPoiAdded.emit(poi);\n } catch (error) {\n console.error('Error adding POI marker:', error);\n }\n };\n\n if (Array.isArray(locations)) {\n await Promise.all(locations.map((loc) => addSinglePoi(loc)));\n } else {\n await addSinglePoi(locations);\n }\n\n // Set initial visibility based on current zoom\n if (this.map) {\n this.updatePoiVisibility(this.map.getZoom());\n }\n\n this.onPoiChanged.emit(this.getPois());\n }\n\n /**\n * Updates the visibility of POI markers based on the current zoom level\n * @param currentZoom The current zoom level of the map\n */\n private updatePoiVisibility(currentZoom: number): void {\n // Check each marker individually against its own minZoom value or the global one\n this.poiMarkers.forEach((marker) => {\n const el = marker.getElement();\n if (el) {\n // Use the marker's specific minZoom if available, otherwise use the global setting\n const markerMinZoom =\n (marker.options as any).minZoom !== undefined ? (marker.options as any).minZoom : this.poiMinZoom;\n\n const isVisible = currentZoom >= markerMinZoom;\n\n el.style.opacity = isVisible ? '1' : '0';\n // Disable pointer events when hidden\n el.style.pointerEvents = isVisible ? 'auto' : 'none';\n }\n });\n }\n\n /**\n * Sets the minimum zoom level at which POI markers become visible\n * @param minZoom The minimum zoom level (default is 10)\n */\n public setPoiMinZoom(minZoom: number): void {\n this.poiMinZoom = minZoom;\n\n if (this.map) {\n this.updatePoiVisibility(this.map.getZoom());\n }\n }\n\n /**\n * Gets the current minimum zoom level for POI visibility\n * @returns The minimum zoom level\n */\n public getPoiMinZoom(): number {\n return this.poiMinZoom;\n }\n\n /**\n * Loads POIs from all registered providers\n */\n public async loadPoisFromProviders(): Promise<void> {\n if (!this.map || !this.poiProviderService) {\n return;\n }\n\n try {\n const pois = await this.poiProviderService.getList();\n if (pois.length > 0) {\n await this.addPoi(pois);\n }\n } catch (error) {\n console.error('Error loading POIs from providers:', error);\n }\n }\n\n /**\n * Refreshes POIs from providers, clearing existing POIs first\n */\n public async refreshPois(): Promise<void> {\n if (!this.map || !this.poiLayer || !this.poiProviderService) {\n return;\n }\n\n // Clear existing POIs\n this.poiLayer.clearLayers();\n this.poiMarkers = [];\n\n // Load POIs from providers\n await this.loadPoisFromProviders();\n }\n\n /**\n * Refreshes POIs from a specific provider by key\n * @param providerKey The key of the provider to refresh\n */\n public async refreshPoiByProvider(providerKey: string): Promise<void> {\n if (!this.map || !this.poiLayer || !this.poiProviderService) {\n return;\n }\n\n try {\n // Remove existing POIs for this provider\n const currentPois = this.getPois();\n\n // First remove all POI markers from this provider from the map\n this.poiMarkers = this.poiMarkers.filter((marker) => {\n const latLng = marker.getLatLng();\n const isPoi = currentPois.some(\n (poi) =>\n poi.latitude === latLng.lat && poi.longitude === latLng.lng && (poi as any).providerKey === providerKey,\n );\n\n if (isPoi) {\n this.poiLayer.removeLayer(marker);\n return false;\n }\n return true;\n });\n\n // Get fresh POIs from the provider\n const pois = await this.poiProviderService.getList();\n\n // Filter POIs from the specific provider\n const providerPois = pois.filter((poi) => (poi as any).providerKey === providerKey);\n\n // Add the refreshed POIs\n if (providerPois.length > 0) {\n await this.addPoi(providerPois);\n }\n\n this.onPoiChanged.emit(this.getPois());\n } catch (error) {\n console.error(`Error refreshing POIs from provider ${providerKey}:`, error);\n }\n }\n\n /**\n * Sets whether markers can be added by clicking/tapping on the map\n * @param enabled Whether to enable marker-on-tap functionality\n */\n public setAddMarkerOnTap(enabled: boolean): void {\n this._addMarkerOnTapEnabled = enabled;\n }\n\n /**\n * Checks if the map is currently in drawing mode\n * @returns True if currently drawing\n */\n private _isDrawingMode(): boolean {\n return this._isCurrentlyDrawing;\n }\n\n /**\n * Removes markers by id or location. If no location provided, removes all markers.\n */\n public removeMarker(locations?: AXMapMarker | AXMapMarker[]): void {\n if (!this.markerLayer || !this.L) return;\n\n const removeLayer = (layer: L.Layer) => this.markerLayer.removeLayer(layer);\n\n if (!locations) {\n this.markerLayer.clearLayers();\n this.onMarkerChanged.emit(this.getMarkers());\n if (this._hasDrawControl) {\n this.refreshDrawControl();\n }\n return;\n }\n\n const targets = Array.isArray(locations) ? locations : [locations];\n\n const findByIdOrLatLng = (target: AXMapMarker): L.Marker | undefined => {\n let found: L.Marker | undefined;\n this.markerLayer.eachLayer((layer) => {\n if (found) return;\n if (layer instanceof this.L.Marker) {\n const loc = (layer as any).location as AXMapMarker | undefined;\n const hasIdMatch =\n (target as any)?.id != null && (loc as any)?.id != null && (loc as any).id === (target as any).id;\n const hasPosMatch = loc && loc.latitude === target.latitude && loc.longitude === target.longitude;\n if (hasIdMatch || hasPosMatch) {\n found = layer as L.Marker;\n }\n }\n });\n return found;\n };\n\n targets.forEach((t) => {\n const layer = findByIdOrLatLng(t);\n if (layer) {\n removeLayer(layer);\n }\n });\n\n this.onMarkerChanged.emit(this.getMarkers());\n if (this._hasDrawControl) {\n this.refreshDrawControl();\n }\n }\n\n /**\n * Removes polygons by id or geometry. If no location provided, removes all polygons.\n */\n public removePolygon(locations?: AXMapPolygon | AXMapPolygon[]): void {\n if (!this.polygonLayer || !this.L) return;\n\n const removeLayer = (layer: L.Layer) => this.polygonLayer.removeLayer(layer);\n\n if (!locations) {\n this.polygonLayer.clearLayers();\n this.onPolygonChanged.emit(this.getPolygons());\n if (this._hasDrawControl) {\n this.refreshDrawControl();\n }\n return;\n }\n\n const targets = Array.isArray(locations) ? locations : [locations];\n\n const polygonsEqualByPoints = (a: AXMapPolygon, b: AXMapPolygon): boolean => {\n if (!a?.points || !b?.points) return false;\n if (a.points.length !== b.points.length) return false;\n for (let i = 0; i < a.points.length; i++) {\n if (a.points[i].latitude !== b.points[i].latitude || a.points[i].longitude !== b.points[i].longitude) {\n return false;\n }\n }\n return true;\n };\n\n const findPolygonLayer = (target: AXMapPolygon): import('leaflet').Polygon<any> | undefined => {\n let found: import('leaflet').Polygon<any> | undefined;\n this.polygonLayer.eachLayer((layer) => {\n if (found) return;\n if (this.isPolygonLayer(layer)) {\n const meta = (layer as any).polygon as AXMapPolygon | undefined;\n const hasIdMatch =\n (target as any)?.id != null && (meta as any)?.id != null && (meta as any).id === (target as any).id;\n if (hasIdMatch) {\n found = layer as any;\n return;\n }\n // Fallback to geometry match\n const latLngs = (layer as any).getLatLngs()[0] as any[];\n const layerPoly: AXMapPolygon = {\n points: latLngs.map((ll) => ({ latitude: ll.lat, longitude: ll.lng })),\n color: (layer as any).options?.color,\n } as AXMapPolygon;\n if (polygonsEqualByPoints(layerPoly, target)) {\n found = layer as any;\n }\n }\n });\n return found;\n };\n\n targets.forEach((t) => {\n const layer = findPolygonLayer(t);\n if (layer) {\n removeLayer(layer);\n }\n });\n\n this.onPolygonChanged.emit(this.getPolygons());\n if (this._hasDrawControl) {\n this.refreshDrawControl();\n }\n }\n\n public setMaxMarkers(maxMarkers: number): void {\n this.maxMarkers = maxMarkers;\n }\n\n public setMaxPolygons(maxPolygons: number): void {\n this.maxPolygons = maxPolygons;\n }\n\n public setMaxPolylines(maxPolylines: number): void {\n this.maxPolylines = maxPolylines;\n }\n\n public setMaxRectangles(maxRectangles: number): void {\n this.maxRectangles = maxRectangles;\n }\n\n public setMaxCircles(maxCircles: number): void {\n this.maxCircles = maxCircles;\n }\n\n private refreshDrawControl(): void {\n if (this._hasDrawControl) {\n this.addDrawControl(this.position);\n }\n }\n\n private canDrawMoreMarkers(): boolean {\n return this.maxMarkers === null || this.getMarkers().length < this.maxMarkers;\n }\n\n private canDrawMorePolygons(): boolean {\n return this.maxPolygons === null || this.getPolygons().length < this.maxPolygons;\n }\n\n private canDrawMorePolylines(): boolean {\n return this.maxPolylines === null || this.getPolylines().length < this.maxPolylines;\n }\n\n private canDrawMoreRectangles(): boolean {\n return this.maxRectangles === null || this.getRectangles().length < this.maxRectangles;\n }\n\n private canDrawMoreCircles(): boolean {\n return this.maxCircles === null || this.getCircles().length < this.maxCircles;\n }\n\n private isPolygonLayer(layer: L.Layer): layer is L.Polygon {\n return layer instanceof this.L.Polygon && !(layer instanceof this.L.Rectangle);\n }\n\n private isPolylineLayer(layer: L.Layer): layer is L.Polyline {\n return layer instanceof this.L.Polyline && !(layer instanceof this.L.Polygon);\n }\n\n private isRectangleLayer(layer: L.Layer): layer is L.Rectangle {\n return layer instanceof this.L.Rectangle;\n }\n\n private isCircleLayer(layer: L.Layer): layer is L.Circle {\n return layer instanceof this.L.Circle;\n }\n\n private arePointsWithinBoundary(points: AXMapLatLng[]): boolean {\n return points.every((point) =>\n this.boundary?.some((boundaryPolygon) => this.isPointInPolygon(point, boundaryPolygon)),\n );\n }\n\n private getRectangleCornerPoints(rectangle: AXMapRectangle): AXMapLatLng[] {\n return [\n rectangle.southWest,\n rectangle.northEast,\n {\n latitude: rectangle.southWest.latitude,\n longitude: rectangle.northEast.longitude,\n },\n {\n latitude: rectangle.northEast.latitude,\n longitude: rectangle.southWest.longitude,\n },\n ];\n }\n\n /**\n * Removes polylines by id or geometry. If not provided, removes all polylines.\n */\n public removePolyline(locations?: AXMapPolyline | AXMapPolyline[]): void {\n if (!this.polylineLayer || !this.L) return;\n\n const removeLayer = (layer: L.Layer) => this.polylineLayer.removeLayer(layer);\n\n if (!locations) {\n this.polylineLayer.clearLayers();\n this.onPolylineChanged.emit(this.getPolylines());\n this.refreshDrawControl();\n return;\n }\n\n const targets = Array.isArray(locations) ? locations : [locations];\n\n targets.forEach((target) => {\n let found: L.Polyline | undefined;\n this.polylineLayer.eachLayer((layer) => {\n if (found) return;\n const meta = (layer as any).polyline as AXMapPolyline | undefined;\n const hasIdMatch = target.id != null && meta?.id != null && meta.id === target.id;\n if (hasIdMatch) {\n found = layer as L.Polyline;\n return;\n }\n if (this.polylinesEqualByPoints(this.layerToPolyline(layer as L.Polyline), target)) {\n found = layer as L.Polyline;\n }\n });\n if (found) {\n removeLayer(found);\n }\n });\n\n this.onPolylineChanged.emit(this.getPolylines());\n this.refreshDrawControl();\n }\n\n /**\n * Removes rectangles by id or geometry. If not provided, removes all rectangles.\n */\n public removeRectangle(locations?: AXMapRectangle | AXMapRectangle[]): void {\n if (!this.rectangleLayer || !this.L) return;\n\n const removeLayer = (layer: L.Layer) => this.rectangleLayer.removeLayer(layer);\n\n if (!locations) {\n this.rectangleLayer.clearLayers();\n this.onRectangleChanged.emit(this.getRectangles());\n this.refreshDrawControl();\n return;\n }\n\n const targets = Array.isArray(locations) ? locations : [locations];\n\n targets.forEach((target) => {\n let found: L.Rectangle | undefined;\n this.rectangleLayer.eachLayer((layer) => {\n if (found) return;\n const meta = (layer as any).rectangle as AXMapRectangle | undefined;\n const hasIdMatch = target.id != null && meta?.id != null && meta.id === target.id;\n if (hasIdMatch) {\n found = layer as L.Rectangle;\n return;\n }\n const current = this.layerToRectangle(layer as L.Rectangle);\n if (this.rectanglesEqual(current, target)) {\n found = layer as L.Rectangle;\n }\n });\n if (found) {\n removeLayer(found);\n }\n });\n\n this.onRectangleChanged.emit(this.getRectangles());\n this.refreshDrawControl();\n }\n\n /**\n * Removes circles by id or geometry. If not provided, removes all circles.\n */\n public removeCircle(locations?: AXMapCircle | AXMapCircle[]): void {\n if (!this.circleLayer || !this.L) return;\n\n const removeLayer = (layer: L.Layer) => this.circleLayer.removeLayer(layer);\n\n if (!locations) {\n this.circleLayer.clearLayers();\n this.onCircleChanged.emit(this.getCircles());\n this.refreshDrawControl();\n return;\n }\n\n const targets = Array.isArray(locations) ? locations : [locations];\n\n targets.forEach((target) => {\n let found: L.Circle | undefined;\n this.circleLayer.eachLayer((layer) => {\n if (found) return;\n const meta = (layer as any).circle as AXMapCircle | undefined;\n const hasIdMatch = target.id != null && meta?.id != null && meta.id === target.id;\n if (hasIdMatch) {\n found = layer as L.Circle;\n return;\n }\n const current = this.layerToCircle(layer as L.Circle);\n if (this.circlesEqual(current, target)) {\n found = layer as L.Circle;\n }\n });\n if (found) {\n removeLayer(found);\n }\n });\n\n this.onCircleChanged.emit(this.getCircles());\n this.refreshDrawControl();\n }\n\n private layerToPolyline(layer: L.Polyline): AXMapPolyline {\n const latLngs = layer.getLatLngs() as L.LatLng[];\n const meta = (layer as any).polyline as AXMapPolyline | undefined;\n return {\n points: latLngs.map((latLng) => ({ latitude: latLng.lat, longitude: latLng.lng })),\n title: meta?.title,\n color: layer.options?.color,\n id: meta?.id,\n isLocked: meta?.isLocked,\n };\n }\n\n private layerToRectangle(layer: L.Rectangle): AXMapRectangle {\n const bounds = layer.getBounds();\n const meta = (layer as any).rectangle as AXMapRectangle | undefined;\n return {\n southWest: {\n latitude: bounds.getSouthWest().lat,\n longitude: bounds.getSouthWest().lng,\n },\n northEast: {\n latitude: bounds.getNorthEast().lat,\n longitude: bounds.getNorthEast().lng,\n },\n title: meta?.title,\n color: layer.options?.color,\n id: meta?.id,\n isLocked: meta?.isLocked,\n };\n }\n\n private layerToCircle(layer: L.Circle): AXMapCircle {\n const center = layer.getLatLng();\n const meta = (layer as any).circle as AXMapCircle | undefined;\n return {\n center: { latitude: center.lat, longitude: center.lng },\n radius: layer.getRadius(),\n title: meta?.title,\n color: layer.options?.color,\n id: meta?.id,\n isLocked: meta?.isLocked,\n };\n }\n\n private polylinesEqualByPoints(a: AXMapPolyline, b: AXMapPolyline): boolean {\n if (!a?.points || !b?.points || a.points.length !== b.points.length) return false;\n return a.points.every(\n (point, index) => point.latitude === b.points[index].latitude && point.longitude === b.points[index].longitude,\n );\n }\n\n private rectanglesEqual(a: AXMapRectangle, b: AXMapRectangle): boolean {\n return (\n a.southWest.latitude === b.southWest.latitude &&\n a.southWest.longitude === b.southWest.longitude &&\n a.northEast.latitude === b.northEast.latitude &&\n a.northEast.longitude === b.northEast.longitude\n );\n }\n\n private circlesEqual(a: AXMapCircle, b: AXMapCircle): boolean {\n return (\n a.center.latitude === b.center.latitude && a.center.longitude === b.center.longitude && a.radius === b.radius\n );\n }\n\n private setPathLayerInteractive(layer: L.Layer, interactive: boolean): void {\n if (\n this.isPolylineLayer(layer) ||\n this.isPolygonLayer(layer) ||\n this.isRectangleLayer(layer) ||\n this.isCircleLayer(layer)\n ) {\n (layer as L.Path).setStyle({ interactive });\n }\n }\n\n /**\n * Sets the readonly state of the map.\n * When readonly, map is movable and zoomable but all functionality (drawing, adding markers, controls) is disabled.\n * @param readonly Whether to set the map to readonly mode\n */\n public setReadonly(readonly: boolean): void {\n this._isReadonly = readonly;\n\n if (!this.map || this._isDisabled) {\n // Don't modify anything if disabled (disabled takes precedence)\n return;\n }\n\n if (readonly) {\n // Keep map interactions enabled (panning and zooming)\n // But disable dragging on markers and polygons\n this.forEachEditableLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n (layer as L.Marker).dragging?.disable();\n } else {\n this.setPathLayerInteractive(layer, false);\n }\n });\n\n // Disable dragging on POI markers\n if (this.poiLayer) {\n this.poiLayer.eachLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n (layer as L.Marker).dragging?.disable();\n }\n });\n }\n\n // Disable marker-on-tap when readonly\n this._addMarkerOnTapEnabled = false;\n } else {\n // Re-enable dragging on markers and polygons (if draw control exists)\n this.forEachEditableLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n const loc = (layer as any).location as AXMapMarker | undefined;\n if (loc && !loc.isLocked && this.drawControl) {\n (layer as L.Marker).dragging?.enable();\n }\n } else {\n this.setPathLayerInteractive(layer, true);\n }\n });\n\n // Re-enable dragging on POI markers\n if (this.poiLayer) {\n this.poiLayer.eachLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n (layer as L.Marker).dragging?.enable();\n }\n });\n }\n }\n }\n\n /**\n * Sets the disabled state of the map.\n * When disabled, everything is disabled including zoom, moving, drawing, and all interactions.\n * @param disabled Whether to disable the map completely\n */\n public setDisabled(disabled: boolean): void {\n this._isDisabled = disabled;\n\n if (!this.map) {\n return;\n }\n\n if (disabled) {\n // Disable all map interactions (panning and zooming)\n this.map.dragging.disable();\n this.map.touchZoom.disable();\n this.map.doubleClickZoom.disable();\n this.map.scrollWheelZoom.disable();\n this.map.boxZoom.disable();\n this.map.keyboard.disable();\n\n // Remove zoom control buttons\n try {\n if (this.map.zoomControl) {\n this.map.removeControl(this.map.zoomControl);\n }\n } catch (e) {\n // Zoom control might not exist, ignore error\n }\n\n // Disable dragging on existing markers and polygons\n this.forEachEditableLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n (layer as L.Marker).dragging?.disable();\n } else {\n this.setPathLayerInteractive(layer, false);\n }\n });\n\n // Disable dragging on POI markers\n if (this.poiLayer) {\n this.poiLayer.eachLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n (layer as L.Marker).dragging?.disable();\n }\n });\n }\n\n // Disable marker-on-tap when map is disabled\n this._addMarkerOnTapEnabled = false;\n } else {\n // Enable all map interactions\n this.map.dragging.enable();\n this.map.touchZoom.enable();\n this.map.doubleClickZoom.enable();\n this.map.scrollWheelZoom.enable();\n this.map.boxZoom.enable();\n this.map.keyboard.enable();\n\n // Re-add zoom control buttons (only if not readonly, since readonly should keep zoom controls)\n if (!this._isReadonly) {\n // Check if zoom control doesn't exist, then add it\n // Leaflet's addTo will handle if it already exists\n if (!this.map.zoomControl) {\n this.L.control.zoom().addTo(this.map);\n }\n }\n\n // If readonly is still active, don't re-enable dragging\n if (!this._isReadonly) {\n // Re-enable dragging on markers and polygons (if draw control exists)\n this.forEachEditableLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n const loc = (layer as any).location as AXMapMarker | undefined;\n if (loc && !loc.isLocked && this.drawControl) {\n (layer as L.Marker).dragging?.enable();\n }\n } else {\n this.setPathLayerInteractive(layer, true);\n }\n });\n\n // Re-enable dragging on POI markers\n if (this.poiLayer) {\n this.poiLayer.eachLayer((layer) => {\n if (layer instanceof this.L.Marker) {\n (layer as L.Marker).dragging?.enable();\n }\n });\n }\n } else {\n // If readonly is active, apply readonly state\n this.setReadonly(true);\n }\n }\n }\n\n /**\n * Fixes leaflet-draw strict-mode bug where `type` is used without declaration\n * in GeometryUtil.readableArea (affects rectangle/polygon area tooltips).\n * @see https://github.com/Leaflet/Leaflet.draw/issues/898\n */\n private patchLeafletDraw(): void {\n const geometryUtil = (this.L as typeof import('leaflet') & { GeometryUtil?: LeafletDrawGeometryUtil }).GeometryUtil;\n if (!geometryUtil?.readableArea) {\n return;\n }\n\n const defaultPrecision = { km: 2, ha: 2, m: 0, mi: 2, ac: 2, yd: 0, ft: 0, nm: 2 };\n const formattedNumber = geometryUtil.formattedNumber.bind(geometryUtil);\n\n geometryUtil.readableArea = (area: number, isMetric?: boolean | string | string[], precision?: object): string => {\n let areaStr: string;\n let units: string[];\n const resolvedPrecision = { ...defaultPrecision, ...(precision as Record<string, number> | undefined) };\n\n if (isMetric) {\n units = ['ha', 'm'];\n const metricType = typeof isMetric;\n if (metricType === 'string') {\n units = [isMetric as string];\n } else if (metricType !== 'boolean') {\n units = isMetric as string[];\n }\n\n if (area >= 1_000_000 && units.includes('km')) {\n areaStr = `${formattedNumber(area * 0.000001, resolvedPrecision['km'])} km²`;\n } else if (area >= 10_000 && units.includes('ha')) {\n areaStr = `${formattedNumber(area * 0.0001, resolvedPrecision['ha'])} ha`;\n } else {\n areaStr = `${formattedNumber(area, resolvedPrecision['m'])} m²`;\n }\n } else {\n area /= 0.836127;\n\n if (area >= 3_097_600) {\n areaStr = `${formattedNumber(area / 3_097_600, resolvedPrecision['mi'])} mi²`;\n } else if (area >= 4_840) {\n areaStr = `${formattedNumber(area / 4_840, resolvedPrecision['ac'])} acres`;\n } else {\n areaStr = `${formattedNumber(area, resolvedPrecision['yd'])} yd²`;\n }\n }\n\n return areaStr;\n };\n }\n}\n\ntype LeafletDrawGeometryUtil = {\n formattedNumber: (n: number, precision: number) => string;\n readableArea: (area: number, isMetric?: boolean | string | string[], precision?: object) => string;\n};\n","import { AXComponent, NXComponent } from '@acorex/cdk/common';\nimport {\n afterNextRender,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { AXLeafletService } from './map.service';\nimport {\n AXMapCircle,\n AXMapControlPlace,\n AXMapData,\n AXMapMarker,\n AXMapPolygon,\n AXMapPolyline,\n AXMapRectangle,\n AXPoiMarker,\n} from './map.type';\n\n/**\n * @description\n * The `AXMapComponent` provides an interactive map powered by Leaflet. It supports markers, location tracking,\n * and configurable zoom, latitude, longitude, and marker behavior. The component allows easy integration and\n * manipulation of map features.\n *\n * @example\n * <ax-map [latitude]=\"51.505\" [longitude]=\"-0.09\" [zoomLevel]=\"13\" [hasMarker]=\"true\"></ax-map>\n */\n@Component({\n selector: 'ax-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.css'],\n providers: [AXLeafletService, { provide: AXComponent, useExisting: AXMapComponent }],\n\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMapComponent extends NXComponent implements OnDestroy {\n /**\n * @description\n * Zoom level of the map.\n */\n zoomLevel = model<number | null>(null);\n\n /**\n * @description\n * Latitude of the map center.\n */\n latitude = model<number | null>(null);\n\n /**\n * @description\n * Longitude of the map center.\n */\n longitude = model<number | null>(null);\n\n /**\n * @description\n * Maximum number of markers allowed on the map.\n * @default 0\n */\n maxMarker = input(0);\n\n /**\n * @description\n * Maximum number of polygons allowed on the map.\n * @default 0\n */\n maxPolygon = input(0);\n\n /**\n * @description\n * Maximum number of polylines allowed on the map.\n * @default 0\n */\n maxPolyline = input(0);\n\n /**\n * @description\n * Maximum number of rectangles allowed on the map.\n * @default 0\n */\n maxRectangle = input(0);\n\n /**\n * @description\n * Maximum number of circles allowed on the map.\n * @default 0\n */\n maxCircle = input(0);\n\n /**\n * @description\n * Whether the map should have a marker control.\n * @default false\n */\n hasDraw = input(false);\n\n /**\n * @description\n * Whether the map should have a location control.\n * @default false\n */\n hasLocator = input(false);\n\n /**\n * @description\n * Whether map should contain all draw items.\n * @default false\n */\n fitToDraw = input(false);\n\n /**\n * @description\n * Whether map draw has to limit in area.\n * @default undefined\n */\n limitDraw = input<AXMapPolygon[] | undefined>(undefined);\n\n /**\n * @description\n * Whether to include POIs when fitting the map to draw items.\n * @default false\n */\n addPoiToFitDraw = input(false);\n\n /**\n * @description\n * If true, user can add a marker by clicking/tapping on the map.\n * @default false\n */\n addMarkerOnTap = input(false);\n\n /**\n * @description\n * If true, map is movable and zoomable but all functionality (drawing, adding markers, controls) is disabled.\n * @default false\n */\n readonly = input(false);\n\n /**\n * @description\n * If true, disables everything including zoom, moving, drawing, and all interactions. Map becomes completely read-only.\n * @default false\n */\n disabled = input(false);\n\n /**\n * @description\n * Position of the marker control on the map.\n * @default 'topleft'\n */\n markerPlace = input<AXMapControlPlace>('topleft');\n\n /**\n * @description\n * Position of the locate control on the map.\n * @default 'bottomright'\n */\n locatePlace = input<AXMapControlPlace>('bottomright');\n\n /**\n * @description\n * Minimum zoom level at which POI markers become visible.\n * @default 10\n */\n poiMinZoom = input(10);\n\n /**\n * @description\n * Array or single marker location(s) to be placed on the map.\n * @default undefined\n */\n markers = input<AXMapMarker | AXMapMarker[] | undefined>(undefined);\n\n /**\n * @description\n * Array or single polygon location(s) to be placed on the map.\n * @default undefined\n */\n polygons = input<AXMapPolygon | AXMapPolygon[] | undefined>(undefined);\n\n /**\n * @description\n * Array or single polyline(s) to be placed on the map.\n * @default undefined\n */\n polylines = input<AXMapPolyline | AXMapPolyline[] | undefined>(undefined);\n\n /**\n * @description\n * Array or single rectangle(s) to be placed on the map.\n * @default undefined\n */\n rectangles = input<AXMapRectangle | AXMapRectangle[] | undefined>(undefined);\n\n /**\n * @description\n * Array or single circle(s) to be placed on the map.\n * @default undefined\n */\n circles = input<AXMapCircle | AXMapCircle[] | undefined>(undefined);\n\n /**\n * @description\n * Array or single POI marker(s) to be placed on the map.\n * @default undefined\n */\n pois = input<AXPoiMarker | AXPoiMarker[] | undefined>(undefined);\n\n /**\n * @description\n * Event triggered when a new marker is added to the map.\n */\n onMarkerAdded = output<AXMapMarker>();\n\n /**\n * @description\n * Event triggered when a marker is clicked on the map.\n */\n onMarkerClick = output<AXMapMarker>();\n\n /**\n * @description\n * Event triggered when marker positions are changed on the map.\n */\n onMarkerChanged = output<AXMapMarker[]>();\n\n /**\n * @description\n * Event triggered when a new polygon is added to the map.\n */\n onPolygonAdded = output<AXMapPolygon>();\n /**\n * @description\n * Event triggered when a polygon is clicked on the map.\n */\n onPolygonClick = output<AXMapPolygon>();\n\n /**\n * @description\n * Event triggered when polygon positions are changed on the map.\n */\n onPolygonChanged = output<AXMapPolygon[]>();\n\n /**\n * @description\n * Event triggered when a new polyline is added to the map.\n */\n onPolylineAdded = output<AXMapPolyline>();\n\n /**\n * @description\n * Event triggered when a polyline is clicked on the map.\n */\n onPolylineClick = output<AXMapPolyline>();\n\n /**\n * @description\n * Event triggered when polyline positions are changed on the map.\n */\n onPolylineChanged = output<AXMapPolyline[]>();\n\n /**\n * @description\n * Event triggered when a new rectangle is added to the map.\n */\n onRectangleAdded = output<AXMapRectangle>();\n\n /**\n * @description\n * Event triggered when a rectangle is clicked on the map.\n */\n onRectangleClick = output<AXMapRectangle>();\n\n /**\n * @description\n * Event triggered when rectangle bounds are changed on the map.\n */\n onRectangleChanged = output<AXMapRectangle[]>();\n\n /**\n * @description\n * Event triggered when a new circle is added to the map.\n */\n onCircleAdded = output<AXMapCircle>();\n\n /**\n * @description\n * Event triggered when a circle is clicked on the map.\n */\n onCircleClick = output<AXMapCircle>();\n\n /**\n * @description\n * Event triggered when circle data is changed on the map.\n */\n onCircleChanged = output<AXMapCircle[]>();\n\n /**\n * @description\n * Event triggered when a location is found via the location control.\n */\n onLocationFound = output<AXMapMarker>();\n\n /**\n * @description\n * Event triggered when POI positions are changed on the map.\n */\n onPoiChanged = output<AXPoiMarker[]>();\n\n /**\n * @description\n * Event triggered when a new POI is added to the map.\n */\n onPoiAdded = output<AXPoiMarker>();\n\n /**\n * @description\n * Event triggered map is loaded.\n */\n onMapReady = output<void>();\n /**\n * @description\n * Event triggered when map loading/initialization fails.\n */\n onLoadError = output<Error>();\n\n private mapContainer = viewChild<ElementRef>('mapContainer');\n private leafletService = inject(AXLeafletService);\n private rendered = signal(false);\n\n // Subscriptions\n private onLatitudeChangedSubscription?: Subscription;\n private onLongitudeChangedSubscription?: Subscription;\n private onZoomChangedSubscription?: Subscription;\n private onLocationFoundSubscription?: Subscription;\n private onMarkerChangedSubscription?: Subscription;\n private onMarkerAddedSubscription?: Subscription;\n private onMarkerClickSubscription?: Subscription;\n private onPolygonChangedSubscription?: Subscription;\n private onPolygonAddedSubscription?: Subscription;\n private onPolygonClickSubscription?: Subscription;\n private onPolylineChangedSubscription?: Subscription;\n private onPolylineAddedSubscription?: Subscription;\n private onPolylineClickSubscription?: Subscription;\n private onRectangleChangedSubscription?: Subscription;\n private onRectangleAddedSubscription?: Subscription;\n private onRectangleClickSubscription?: Subscription;\n private onCircleChangedSubscription?: Subscription;\n private onCircleAddedSubscription?: Subscription;\n private onCircleClickSubscription?: Subscription;\n private onPoiChangedSubscription?: Subscription;\n private onPoiAddedSubscription?: Subscription;\n\n /**\n * @description\n * Adds a marker to the specified location on the map.\n * @param location - The location where the marker should be placed.\n * @param emitEvents - Whether to emit events for the marker.\n */\n async addMarker(location: AXMapMarker | AXMapMarker[], emitEvents = false) {\n await this.leafletService.addMarker(location, emitEvents);\n }\n\n /**\n * @description\n * Removes markers by id or location; if not provided removes all markers\n */\n removeMarker(location?: AXMapMarker | AXMapMarker[]) {\n this.leafletService.removeMarker(location);\n }\n\n /**\n * @description\n * Adds a polygon to the specified location on the map.\n * @param location - The location where the polygon should be placed.\n * @param emitEvents - Whether to emit events for the polygon.\n */\n addPolygon(location: AXMapPolygon | AXMapPolygon[], emitEvents = false) {\n this.leafletService.addPolygon(location, emitEvents);\n }\n\n /**\n * @description\n * Removes polygons by id or geometry; if not provided removes all polygons\n */\n removePolygon(location?: AXMapPolygon | AXMapPolygon[]) {\n this.leafletService.removePolygon(location);\n }\n\n /**\n * @description\n * Adds a polyline to the map.\n */\n addPolyline(location: AXMapPolyline | AXMapPolyline[], emitEvents = false) {\n this.leafletService.addPolyline(location, emitEvents);\n }\n\n /**\n * @description\n * Removes polylines by id or geometry; if not provided removes all polylines\n */\n removePolyline(location?: AXMapPolyline | AXMapPolyline[]) {\n this.leafletService.removePolyline(location);\n }\n\n /**\n * @description\n * Adds a rectangle to the map.\n */\n addRectangle(location: AXMapRectangle | AXMapRectangle[], emitEvents = false) {\n this.leafletService.addRectangle(location, emitEvents);\n }\n\n /**\n * @description\n * Removes rectangles by id or geometry; if not provided removes all rectangles\n */\n removeRectangle(location?: AXMapRectangle | AXMapRectangle[]) {\n this.leafletService.removeRectangle(location);\n }\n\n /**\n * @description\n * Adds a circle to the map.\n */\n addCircle(location: AXMapCircle | AXMapCircle[], emitEvents = false) {\n this.leafletService.addCircle(location, emitEvents);\n }\n\n /**\n * @description\n * Removes circles by id or geometry; if not provided removes all circles\n */\n removeCircle(location?: AXMapCircle | AXMapCircle[]) {\n this.leafletService.removeCircle(location);\n }\n\n /**\n * @description\n * Retrieves all markers currently placed on the map.\n * @returns An array of `AXMapMarker` representing all markers.\n */\n getMarkers(): AXMapMarker[] {\n return this.leafletService.getMarkers();\n }\n\n /**\n * @description\n * Retrieves all polygons currently placed on the map.\n * @returns An array of `AXMapPolygon` representing all polygons.\n */\n getPolygons(): AXMapPolygon[] {\n return this.leafletService.getPolygons();\n }\n\n /**\n * @description\n * Retrieves all polylines currently placed on the map.\n */\n getPolylines(): AXMapPolyline[] {\n return this.leafletService.getPolylines();\n }\n\n /**\n * @description\n * Retrieves all rectangles currently placed on the map.\n */\n getRectangles(): AXMapRectangle[] {\n return this.leafletService.getRectangles();\n }\n\n /**\n * @description\n * Retrieves all circles currently placed on the map.\n */\n getCircles(): AXMapCircle[] {\n return this.leafletService.getCircles();\n }\n\n /**\n * @description\n * Retrieves all POI markers currently placed on the map.\n * @returns An array of `AXPoiMarker` representing all POI markers.\n */\n getPois(): AXPoiMarker[] {\n return this.leafletService.getPois();\n }\n\n /**\n * @description\n * Clear all markers and polygons\n */\n clearDrawItems() {\n this.leafletService.clearDrawItems();\n }\n\n /**\n * @description\n * Get all markers and polygons\n */\n getDrawItem() {\n return this.leafletService.getDrawItem();\n }\n\n /**\n * @description\n * set markers and polygons\n */\n async setDrawItem(data: AXMapData) {\n return await this.leafletService.setDrawItem(data);\n }\n\n /**\n * Adjusts the map view to fit all markers and polygons currently on the map.\n */\n public fitBoundsToDrawItems() {\n return this.leafletService.fitBoundsToDrawItems(this.addPoiToFitDraw());\n }\n\n /**\n * @description\n * Sets the boundary limit for drawing\n * @param data - The polygon data defining the boundary\n */\n public setLimitDraw(data: AXMapPolygon[]) {\n return this.leafletService.setBoundary(data);\n }\n\n /**\n * @description\n * Removes the boundary limit for drawing\n */\n public removeLimitDraw() {\n this.leafletService.removeBoundary();\n }\n\n /**\n * @description\n * Flies the map to a specific location with optional zoom, marker placement, and animation duration.\n *\n * @param location - The target location to fly to.\n * @param zoom - Optional zoom level for the map.\n * @param setMarker - Whether to set a marker at the destination.\n * @param duration - Optional duration for the fly animation.\n */\n flyTo(location: AXMapMarker, zoom?: number, setMarker?: boolean, duration?: number) {\n this.leafletService.flyTo(location, zoom, setMarker, duration);\n }\n\n /**\n * Initialize the map once rendering is complete\n */\n #initMap = afterNextRender(async () => {\n // Propagate service load errors to component output\n const onLoadErrSub = this.leafletService.onLoadError.subscribe((err) => this.onLoadError.emit(err));\n try {\n await this.leafletService.initMap(\n this.mapContainer().nativeElement,\n { latitude: this.latitude() ?? 31, longitude: this.longitude() ?? 51 },\n this.zoomLevel() ?? 5,\n );\n } catch (e) {\n console.warn(e);\n } finally {\n onLoadErrSub.unsubscribe();\n }\n\n // Set minimum zoom level for POIs\n this.leafletService.setPoiMinZoom(this.poiMinZoom());\n\n // Initialize map data\n if (this.markers()) {\n await this.leafletService.addMarker(this.markers());\n }\n if (this.polygons()) {\n this.leafletService.addPolygon(this.polygons());\n }\n if (this.polylines()) {\n this.leafletService.addPolyline(this.polylines());\n }\n if (this.rectangles()) {\n this.leafletService.addRectangle(this.rectangles());\n }\n if (this.circles()) {\n this.leafletService.addCircle(this.circles());\n }\n if (this.pois()) {\n await this.leafletService.addPoi(this.pois());\n }\n if (this.limitDraw()) {\n this.leafletService.setBoundary(this.limitDraw());\n }\n\n // Setup map events\n this.setupMapEvents();\n\n // Apply initial fit if needed\n if (this.fitToDraw()) {\n this.leafletService.fitBoundsToDrawItems(this.addPoiToFitDraw());\n }\n\n this.onMapReady.emit();\n this.rendered.set(true);\n });\n\n /**\n * Setup map event listeners\n */\n private setupMapEvents(): void {\n this.setupMapMovementEvents();\n // addMarkerOnTap is now handled by the service via the effect\n // Ensure subscriptions to service events are always active, regardless of draw control\n this.setupDrawEventSubscriptions();\n }\n\n /**\n * Setup map movement event subscriptions\n */\n private setupMapMovementEvents(): void {\n this.onLatitudeChangedSubscription = this.leafletService.onLatitudeChanged.subscribe((latitude) => {\n this.latitude.set(latitude);\n });\n\n this.onLongitudeChangedSubscription = this.leafletService.onLongitudeChanged.subscribe((longitude) => {\n this.longitude.set(longitude);\n });\n\n this.onZoomChangedSubscription = this.leafletService.onZoomChanged.subscribe((zoom) => {\n this.zoomLevel.set(zoom);\n });\n }\n\n /**\n * Effect for locator control\n */\n #locatorEffect = effect(() => {\n if (!this.rendered()) return;\n\n const hasLocator = this.hasLocator();\n const locatePlace = this.locatePlace();\n const isDisabled = this.disabled();\n const isReadonly = this.readonly();\n\n if (!hasLocator || isDisabled || isReadonly) {\n this.leafletService.removeLocateControl();\n if (this.onLocationFoundSubscription) {\n this.onLocationFoundSubscription.unsubscribe();\n this.onLocationFoundSubscription = undefined;\n }\n return;\n }\n\n // Add locator control\n this.leafletService.addLocateControl(locatePlace);\n\n // Subscribe to location events if not already subscribed\n if (!this.onLocationFoundSubscription) {\n this.onLocationFoundSubscription = this.leafletService.onLocationFound\n .pipe(\n distinctUntilChanged(\n (prev: AXMapMarker, curr: AXMapMarker) =>\n prev.latitude === curr.latitude && prev.longitude === curr.longitude,\n ),\n )\n .subscribe((location: AXMapMarker) => {\n this.onLocationFound.emit(location);\n });\n }\n });\n\n /**\n * Effect for draw control\n */\n #drawControlEffect = effect(() => {\n if (!this.rendered()) return;\n\n const hasDraw = this.hasDraw();\n const markerPlace = this.markerPlace();\n const maxMarker = this.maxMarker();\n const maxPolygon = this.maxPolygon();\n const maxPolyline = this.maxPolyline();\n const maxRectangle = this.maxRectangle();\n const maxCircle = this.maxCircle();\n const isDisabled = this.disabled();\n const isReadonly = this.readonly();\n\n if (maxMarker) {\n this.leafletService.setMaxMarkers(maxMarker);\n }\n if (maxPolygon) {\n this.leafletService.setMaxPolygons(maxPolygon);\n }\n if (maxPolyline) {\n this.leafletService.setMaxPolylines(maxPolyline);\n }\n if (maxRectangle) {\n this.leafletService.setMaxRectangles(maxRectangle);\n }\n if (maxCircle) {\n this.leafletService.setMaxCircles(maxCircle);\n }\n\n if (!hasDraw || isDisabled || isReadonly) {\n this.leafletService.removeDrawControl();\n return;\n }\n\n this.leafletService.addDrawControl(\n markerPlace,\n maxMarker || 1,\n maxPolygon,\n maxPolyline || 1,\n maxRectangle || 1,\n maxCircle || 1,\n );\n\n // Set up event subscriptions\n this.setupDrawEventSubscriptions();\n });\n\n /**\n * Setup draw event subscriptions\n */\n private setupDrawEventSubscriptions(): void {\n this.setupMarkerEventSubscriptions();\n this.setupPolygonEventSubscriptions();\n this.setupPolylineEventSubscriptions();\n this.setupRectangleEventSubscriptions();\n this.setupCircleEventSubscriptions();\n this.setupPoiEventSubscriptions();\n }\n\n /**\n * Setup marker event subscriptions\n */\n private setupMarkerEventSubscriptions(): void {\n if (!this.onMarkerChangedSubscription) {\n this.onMarkerChangedSubscription = this.leafletService.onMarkerChanged.subscribe((markers) => {\n this.onMarkerChanged.emit(markers);\n });\n }\n\n if (!this.onMarkerAddedSubscription) {\n this.onMarkerAddedSubscription = this.leafletService.onMarkerAdded.subscribe((marker) => {\n this.onMarkerAdded.emit(marker);\n });\n }\n\n if (!this.onMarkerClickSubscription) {\n this.onMarkerClickSubscription = this.leafletService.onMarkerClick.subscribe((marker) => {\n this.onMarkerClick.emit(marker);\n });\n }\n }\n\n /**\n * Setup polygon event subscriptions\n */\n private setupPolygonEventSubscriptions(): void {\n if (!this.onPolygonChangedSubscription) {\n this.onPolygonChangedSubscription = this.leafletService.onPolygonChanged.subscribe((polygons) => {\n this.onPolygonChanged.emit(polygons);\n });\n }\n\n if (!this.onPolygonAddedSubscription) {\n this.onPolygonAddedSubscription = this.leafletService.onPolygonAdded.subscribe((polygon) => {\n this.onPolygonAdded.emit(polygon);\n });\n }\n\n if (!this.onPolygonClickSubscription) {\n this.onPolygonClickSubscription = this.leafletService.onPolygonClick.subscribe((polygon) => {\n this.onPolygonClick.emit(polygon);\n });\n }\n }\n\n private setupPolylineEventSubscriptions(): void {\n if (!this.onPolylineChangedSubscription) {\n this.onPolylineChangedSubscription = this.leafletService.onPolylineChanged.subscribe((polylines) => {\n this.onPolylineChanged.emit(polylines);\n });\n }\n\n if (!this.onPolylineAddedSubscription) {\n this.onPolylineAddedSubscription = this.leafletService.onPolylineAdded.subscribe((polyline) => {\n this.onPolylineAdded.emit(polyline);\n });\n }\n\n if (!this.onPolylineClickSubscription) {\n this.onPolylineClickSubscription = this.leafletService.onPolylineClick.subscribe((polyline) => {\n this.onPolylineClick.emit(polyline);\n });\n }\n }\n\n private setupRectangleEventSubscriptions(): void {\n if (!this.onRectangleChangedSubscription) {\n this.onRectangleChangedSubscription = this.leafletService.onRectangleChanged.subscribe((rectangles) => {\n this.onRectangleChanged.emit(rectangles);\n });\n }\n\n if (!this.onRectangleAddedSubscription) {\n this.onRectangleAddedSubscription = this.leafletService.onRectangleAdded.subscribe((rectangle) => {\n this.onRectangleAdded.emit(rectangle);\n });\n }\n\n if (!this.onRectangleClickSubscription) {\n this.onRectangleClickSubscription = this.leafletService.onRectangleClick.subscribe((rectangle) => {\n this.onRectangleClick.emit(rectangle);\n });\n }\n }\n\n private setupCircleEventSubscriptions(): void {\n if (!this.onCircleChangedSubscription) {\n this.onCircleChangedSubscription = this.leafletService.onCircleChanged.subscribe((circles) => {\n this.onCircleChanged.emit(circles);\n });\n }\n\n if (!this.onCircleAddedSubscription) {\n this.onCircleAddedSubscription = this.leafletService.onCircleAdded.subscribe((circle) => {\n this.onCircleAdded.emit(circle);\n });\n }\n\n if (!this.onCircleClickSubscription) {\n this.onCircleClickSubscription = this.leafletService.onCircleClick.subscribe((circle) => {\n this.onCircleClick.emit(circle);\n });\n }\n }\n\n /**\n * Setup POI event subscriptions\n */\n private setupPoiEventSubscriptions(): void {\n if (!this.onPoiChangedSubscription) {\n this.onPoiChangedSubscription = this.leafletService.onPoiChanged\n .pipe(distinctUntilChanged())\n .subscribe((data) => {\n this.onPoiChanged.emit(data);\n });\n }\n\n if (!this.onPoiAddedSubscription) {\n this.onPoiAddedSubscription = this.leafletService.onPoiAdded.pipe(distinctUntilChanged()).subscribe((data) => {\n this.onPoiAdded.emit(data);\n });\n }\n }\n\n /**\n * Unsubscribe from draw events\n */\n private unsubscribeFromDrawEvents(): void {\n this.unsubscribeMarkerEvents();\n this.unsubscribePolygonEvents();\n this.unsubscribePolylineEvents();\n this.unsubscribeRectangleEvents();\n this.unsubscribeCircleEvents();\n this.unsubscribePoiEvents();\n }\n\n /**\n * Unsubscribe from marker events\n */\n private unsubscribeMarkerEvents(): void {\n const markerSubscriptions = [\n { sub: this.onMarkerChangedSubscription, prop: 'onMarkerChangedSubscription' },\n { sub: this.onMarkerAddedSubscription, prop: 'onMarkerAddedSubscription' },\n { sub: this.onMarkerClickSubscription, prop: 'onMarkerClickSubscription' },\n ];\n\n markerSubscriptions.forEach(({ sub, prop }) => {\n if (sub) {\n sub.unsubscribe();\n (this as any)[prop] = undefined;\n }\n });\n }\n\n /**\n * Unsubscribe from polygon events\n */\n private unsubscribePolygonEvents(): void {\n const polygonSubscriptions = [\n { sub: this.onPolygonChangedSubscription, prop: 'onPolygonChangedSubscription' },\n { sub: this.onPolygonAddedSubscription, prop: 'onPolygonAddedSubscription' },\n { sub: this.onPolygonClickSubscription, prop: 'onPolygonClickSubscription' },\n ];\n\n polygonSubscriptions.forEach(({ sub, prop }) => {\n if (sub) {\n sub.unsubscribe();\n (this as any)[prop] = undefined;\n }\n });\n }\n\n private unsubscribePolylineEvents(): void {\n const subscriptions = [\n { sub: this.onPolylineChangedSubscription, prop: 'onPolylineChangedSubscription' },\n { sub: this.onPolylineAddedSubscription, prop: 'onPolylineAddedSubscription' },\n { sub: this.onPolylineClickSubscription, prop: 'onPolylineClickSubscription' },\n ];\n\n subscriptions.forEach(({ sub, prop }) => {\n if (sub) {\n sub.unsubscribe();\n (this as any)[prop] = undefined;\n }\n });\n }\n\n private unsubscribeRectangleEvents(): void {\n const subscriptions = [\n { sub: this.onRectangleChangedSubscription, prop: 'onRectangleChangedSubscription' },\n { sub: this.onRectangleAddedSubscription, prop: 'onRectangleAddedSubscription' },\n { sub: this.onRectangleClickSubscription, prop: 'onRectangleClickSubscription' },\n ];\n\n subscriptions.forEach(({ sub, prop }) => {\n if (sub) {\n sub.unsubscribe();\n (this as any)[prop] = undefined;\n }\n });\n }\n\n private unsubscribeCircleEvents(): void {\n const subscriptions = [\n { sub: this.onCircleChangedSubscription, prop: 'onCircleChangedSubscription' },\n { sub: this.onCircleAddedSubscription, prop: 'onCircleAddedSubscription' },\n { sub: this.onCircleClickSubscription, prop: 'onCircleClickSubscription' },\n ];\n\n subscriptions.forEach(({ sub, prop }) => {\n if (sub) {\n sub.unsubscribe();\n (this as any)[prop] = undefined;\n }\n });\n }\n\n /**\n * Unsubscribe from POI events\n */\n private unsubscribePoiEvents(): void {\n const poiSubscriptions = [\n { sub: this.onPoiChangedSubscription, prop: 'onPoiChangedSubscription' },\n { sub: this.onPoiAddedSubscription, prop: 'onPoiAddedSubscription' },\n ];\n\n poiSubscriptions.forEach(({ sub, prop }) => {\n if (sub) {\n sub.unsubscribe();\n (this as any)[prop] = undefined;\n }\n });\n }\n\n /**\n * Effect for zoom level changes\n */\n #zoomEffect = effect(() => {\n if (this.rendered() && this.zoomLevel() !== null) {\n this.leafletService.setZoomLevel(this.zoomLevel());\n }\n });\n\n /**\n * Effect for limit draw changes\n */\n #limitDrawEffect = effect(() => {\n if (!this.rendered()) return;\n\n const limitDraw = this.limitDraw();\n if (limitDraw) {\n this.leafletService.removeBoundary();\n this.leafletService.setBoundary(limitDraw);\n\n if (this.fitToDraw()) {\n this.fitBoundsToDrawItems();\n }\n }\n });\n\n /**\n * Effect for fitToDraw changes\n */\n #fitToDrawEffect = effect(() => {\n if (this.rendered() && this.fitToDraw()) {\n this.fitBoundsToDrawItems();\n }\n });\n\n /**\n * Effect for center changes (lat/long)\n */\n #centerEffect = effect(() => {\n if (!this.rendered()) return;\n\n if (this.fitToDraw()) {\n this.fitBoundsToDrawItems();\n }\n });\n\n #latlngEffect = effect(() => {\n if (!this.rendered()) {\n return () => {\n // No-op cleanup\n };\n }\n\n const lat = this.latitude();\n const lng = this.longitude();\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n // Only update if values are not null\n if (lat !== null && lng !== null) {\n // Debounce to avoid excessive updates\n timeoutId = setTimeout(() => {\n if (this.rendered()) {\n this.leafletService.setCenter({\n latitude: lat,\n longitude: lng,\n } as AXMapMarker);\n }\n }, 50);\n }\n\n // Cleanup function for effect\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n });\n\n /**\n * Effect for POI minimum zoom level changes\n */\n #poiMinZoomEffect = effect(() => {\n if (this.rendered()) {\n this.leafletService.setPoiMinZoom(this.poiMinZoom());\n }\n });\n\n /**\n * Effect for addMarkerOnTap changes\n */\n #addMarkerOnTapEffect = effect(() => {\n if (this.rendered()) {\n const isDisabled = this.disabled();\n const isReadonly = this.readonly();\n // Only allow marker-on-tap if not disabled and not readonly\n if (!isDisabled && !isReadonly) {\n this.leafletService.setAddMarkerOnTap(this.addMarkerOnTap());\n } else {\n this.leafletService.setAddMarkerOnTap(false);\n }\n }\n });\n\n /**\n * Effect for readonly state changes\n */\n #readonlyEffect = effect(() => {\n if (!this.rendered()) return;\n\n const isReadonly = this.readonly();\n const isDisabled = this.disabled();\n\n // Disabled takes precedence over readonly\n if (isDisabled) {\n this.leafletService.setDisabled(true);\n return;\n }\n\n this.leafletService.setReadonly(isReadonly);\n\n // Remove controls when readonly\n if (isReadonly) {\n this.leafletService.removeDrawControl();\n this.leafletService.removeLocateControl();\n }\n });\n\n /**\n * Effect for disabled state changes\n */\n #disabledEffect = effect(() => {\n if (!this.rendered()) return;\n\n const isDisabled = this.disabled();\n this.leafletService.setDisabled(isDisabled);\n\n // Remove controls when disabled\n if (isDisabled) {\n this.leafletService.removeDrawControl();\n this.leafletService.removeLocateControl();\n }\n });\n\n /**\n * @description\n * Update popup for a specific marker\n * @param marker - The marker to update\n * @param popup - The new popup text\n * @param open - Whether the popup should be opened after update\n * @param closeButton - Whether the popup should have a close button\n * @returns True if the update was successful, false otherwise\n */\n updateMarkerPopup(marker: AXMapMarker, popup: string, open = false, closeButton = true): boolean {\n return this.leafletService.updateMarkerPopup(marker, popup, open, closeButton);\n }\n\n /**\n * @description\n * Update popup for multiple markers\n * @param updates - Array of marker popup updates\n * @returns Number of markers successfully updated\n */\n updateMarkersPopups(\n updates: { marker: AXMapMarker; popup: string; open?: boolean; closeButton?: boolean }[],\n ): number {\n return this.leafletService.updateMarkerPopups(updates);\n }\n\n /**\n * @description\n * Refreshes POIs from providers, clearing existing POIs first\n */\n async refreshPois(): Promise<void> {\n return this.leafletService.refreshPois();\n }\n\n /**\n * Cleanup function that destroys the map and unsubscribes from all subscriptions.\n */\n ngOnDestroy(): void {\n this.unsubscribeFromAllEvents();\n this.leafletService.destroyMap();\n }\n\n /**\n * Unsubscribe from all event subscriptions\n */\n private unsubscribeFromAllEvents(): void {\n this.unsubscribeFromDrawEvents();\n this.unsubscribeFromMapEvents();\n }\n\n /**\n * Unsubscribe from map-level events\n */\n private unsubscribeFromMapEvents(): void {\n const mapSubscriptions = [\n this.onLocationFoundSubscription,\n this.onLatitudeChangedSubscription,\n this.onLongitudeChangedSubscription,\n this.onZoomChangedSubscription,\n this.onPoiChangedSubscription,\n this.onPoiAddedSubscription,\n ];\n\n mapSubscriptions.forEach((subscription) => {\n if (subscription) {\n subscription.unsubscribe();\n }\n });\n }\n}\n","<div #mapContainer class=\"ax-map-container\"></div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXMapComponent } from './map.component';\nimport { AXLeafletService } from './map.service';\n\n@NgModule({\n imports: [CommonModule, AXMapComponent],\n providers: [AXLeafletService],\n exports: [AXMapComponent],\n})\nexport class AXMapModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|