@acorex/components 19.6.1 → 19.7.0-next.0
Sign up to get free protection for your applications and to get access to all the features.
- package/button/lib/button-item-list.component.d.ts +1 -1
- package/fesm2022/acorex-components-button.mjs +2 -2
- package/fesm2022/acorex-components-button.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +2 -2
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-map.mjs +50 -13
- package/fesm2022/acorex-components-map.mjs.map +1 -1
- package/fesm2022/acorex-components-media-viewer.mjs +5 -3
- package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-popup.mjs +2 -2
- package/fesm2022/acorex-components-popup.mjs.map +1 -1
- package/fesm2022/acorex-components-side-menu.mjs +82 -12
- package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-tabs.mjs +2 -2
- package/fesm2022/acorex-components-toast.mjs +2 -2
- package/fesm2022/acorex-components-toast.mjs.map +1 -1
- package/map/lib/map.component.d.ts +4 -3
- package/map/lib/map.service.d.ts +4 -0
- package/package.json +1 -1
- package/side-menu/index.d.ts +1 -0
- package/side-menu/lib/side-menu-item/side-menu-item.component.d.ts +3 -3
- package/side-menu/lib/side-menu.component.d.ts +26 -2
- package/side-menu/lib/side-menu.directive.d.ts +14 -0
- package/side-menu/lib/side-menu.module.d.ts +8 -6
@@ -36,8 +36,8 @@ class AXLeafletService {
|
|
36
36
|
constructor() {
|
37
37
|
this.mapConfig = inject(AX_MAP_CONFIG);
|
38
38
|
this.position = 'topleft';
|
39
|
-
this.maxMarkers =
|
40
|
-
this.maxPolygons =
|
39
|
+
this.maxMarkers = null;
|
40
|
+
this.maxPolygons = null;
|
41
41
|
this.polygonColor = 'blue';
|
42
42
|
/**
|
43
43
|
* Emits when marker data changes.
|
@@ -155,7 +155,8 @@ class AXLeafletService {
|
|
155
155
|
* @param locations The marker or markers to add.
|
156
156
|
*/
|
157
157
|
addMarker(locations) {
|
158
|
-
if (this.
|
158
|
+
if (this.maxMarkers !== null &&
|
159
|
+
this.getMarkers().length + (Array.isArray(locations) ? locations.length : 1) > this.maxMarkers) {
|
159
160
|
console.warn('Markers Reached max count.');
|
160
161
|
}
|
161
162
|
else {
|
@@ -185,7 +186,7 @@ class AXLeafletService {
|
|
185
186
|
console.warn('Polygon needs 3 or more points.');
|
186
187
|
continue;
|
187
188
|
}
|
188
|
-
if (this.getPolygons().length >= this.maxPolygons) {
|
189
|
+
if (this.maxPolygons !== null && this.getPolygons().length >= this.maxPolygons) {
|
189
190
|
console.warn('Polygon reached max count.');
|
190
191
|
break;
|
191
192
|
}
|
@@ -204,6 +205,7 @@ class AXLeafletService {
|
|
204
205
|
if (this.getPolygons().length === this.maxPolygons) {
|
205
206
|
this.addDrawControl(this.position, this.maxMarkers, this.maxPolygons);
|
206
207
|
}
|
208
|
+
this.fitBoundsToDrawItems();
|
207
209
|
}
|
208
210
|
/**
|
209
211
|
* Gets all markers currently on the map.
|
@@ -417,6 +419,37 @@ class AXLeafletService {
|
|
417
419
|
this.addMarker(data.markers);
|
418
420
|
this.addPolygon(data.polygons);
|
419
421
|
}
|
422
|
+
/**
|
423
|
+
* Adjusts the map view to fit all markers and polygons currently on the map.
|
424
|
+
*/
|
425
|
+
fitBoundsToDrawItems() {
|
426
|
+
debugger;
|
427
|
+
if (!this.map || !this.drawnItems) {
|
428
|
+
console.warn('Map or drawn items not initialized.');
|
429
|
+
return;
|
430
|
+
}
|
431
|
+
const bounds = this.L.latLngBounds([]);
|
432
|
+
// Include all markers in the bounds
|
433
|
+
this.drawnItems.getLayers().forEach((layer) => {
|
434
|
+
if (layer instanceof this.L.Marker) {
|
435
|
+
bounds.extend(layer.getLatLng());
|
436
|
+
}
|
437
|
+
else if (layer instanceof this.L.Polygon) {
|
438
|
+
const latLngs = layer.getLatLngs();
|
439
|
+
latLngs.forEach((latLngArray) => {
|
440
|
+
latLngArray.forEach((latLng) => {
|
441
|
+
bounds.extend(latLng);
|
442
|
+
});
|
443
|
+
});
|
444
|
+
}
|
445
|
+
});
|
446
|
+
if (bounds.isValid()) {
|
447
|
+
this.map.fitBounds(bounds, { padding: [20, 20] }); // Add padding for better view
|
448
|
+
}
|
449
|
+
else {
|
450
|
+
console.warn('No valid bounds found for markers or polygons.');
|
451
|
+
}
|
452
|
+
}
|
420
453
|
/**
|
421
454
|
* Destroys the map instance and removes all event listeners.
|
422
455
|
*/
|
@@ -451,21 +484,18 @@ class AXMapComponent {
|
|
451
484
|
/**
|
452
485
|
* @description
|
453
486
|
* Zoom level of the map.
|
454
|
-
* @default 13
|
455
487
|
*/
|
456
|
-
this.zoomLevel = input(
|
488
|
+
this.zoomLevel = input(null);
|
457
489
|
/**
|
458
490
|
* @description
|
459
491
|
* Latitude of the map center.
|
460
|
-
* @default 51.505
|
461
492
|
*/
|
462
|
-
this.latitude = input(
|
493
|
+
this.latitude = input(null);
|
463
494
|
/**
|
464
495
|
* @description
|
465
496
|
* Longitude of the map center.
|
466
|
-
* @default -0.09
|
467
497
|
*/
|
468
|
-
this.longitude = input(
|
498
|
+
this.longitude = input(null);
|
469
499
|
/**
|
470
500
|
* @description
|
471
501
|
* Maximum number of markers allowed on the map.
|
@@ -543,13 +573,14 @@ class AXMapComponent {
|
|
543
573
|
this.leafletService = inject(AXLeafletService);
|
544
574
|
this.rendered = signal(false);
|
545
575
|
this.#initMap = afterNextRender(async () => {
|
546
|
-
await this.leafletService.initMap(this.mapContainer().nativeElement, { latitude: this.latitude(), longitude: this.longitude() }, this.zoomLevel());
|
576
|
+
await this.leafletService.initMap(this.mapContainer().nativeElement, { latitude: this.latitude() ?? 31, longitude: this.longitude() ?? 51 }, this.zoomLevel() ?? 5);
|
547
577
|
if (this.markers()) {
|
548
578
|
this.leafletService.addMarker(this.markers());
|
549
579
|
}
|
550
580
|
if (this.polygons()) {
|
551
581
|
this.leafletService.addPolygon(this.polygons());
|
552
582
|
}
|
583
|
+
this.leafletService.fitBoundsToDrawItems();
|
553
584
|
this.rendered.set(true);
|
554
585
|
});
|
555
586
|
this.#locatorEffect = effect(() => {
|
@@ -605,12 +636,12 @@ class AXMapComponent {
|
|
605
636
|
}
|
606
637
|
});
|
607
638
|
this.#zoomEffect = effect(() => {
|
608
|
-
if (this.rendered()) {
|
639
|
+
if (this.rendered() && this.zoomLevel() !== null) {
|
609
640
|
this.leafletService.setZoomLevel(this.zoomLevel());
|
610
641
|
}
|
611
642
|
});
|
612
643
|
this.#centerEffect = effect(() => {
|
613
|
-
if (this.rendered()) {
|
644
|
+
if (this.rendered() && this.latitude() !== null && this.longitude() !== null) {
|
614
645
|
this.leafletService.setCenter({
|
615
646
|
latitude: this.latitude(),
|
616
647
|
longitude: this.longitude(),
|
@@ -666,6 +697,12 @@ class AXMapComponent {
|
|
666
697
|
setDrawItem(data) {
|
667
698
|
return this.leafletService.setDrawItem(data);
|
668
699
|
}
|
700
|
+
/**
|
701
|
+
* Adjusts the map view to fit all markers and polygons currently on the map.
|
702
|
+
*/
|
703
|
+
fitBoundsToDrawItems() {
|
704
|
+
return this.leafletService.fitBoundsToDrawItems();
|
705
|
+
}
|
669
706
|
/**
|
670
707
|
* @description
|
671
708
|
* Flies the map to a specific location with optional zoom, marker placement, and animation duration.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-components-map.mjs","sources":["../../../../libs/components/map/src/lib/map.config.ts","../../../../libs/components/map/src/lib/map.service.ts","../../../../libs/components/map/src/lib/map.component.ts","../../../../libs/components/map/src/lib/map.component.html","../../../../libs/components/map/src/lib/map.module.ts","../../../../libs/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 { EventEmitter, inject, Injectable } from '@angular/core';\nimport { AX_MAP_CONFIG } from './map.config';\nimport {\n AXMapControlPlace,\n AXMapData,\n AXMapLatLng,\n AXMapLocation,\n AXMapMarker,\n AXMapPolygon,\n} from './map.type';\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 icon: any;\n private position: AXMapControlPlace = 'topleft';\n private maxMarkers = 1;\n private maxPolygons = 1;\n private polygonColor = 'blue';\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 drawnItems: L.FeatureGroup;\n\n /**\n * Emits when marker data changes.\n */\n public onMarkerChanged = new EventEmitter<AXMapMarker[]>();\n /**\n * Emits when a marker is added.\n */\n public onMarkerAdded = 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 a polygon is added.\n */\n public onPolygonAdded = new EventEmitter<AXMapPolygon>();\n\n /**\n * Loads the Leaflet library and its plugins.\n */\n public async loadLeaflet(): Promise<void> {\n try {\n this.L = await import('leaflet');\n await import('leaflet-draw');\n await import('leaflet.locatecontrol');\n this.icon = 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 });\n } catch (error) {\n console.error('Error Loading Leaflet,', 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 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 attribution: '© ACoreX',\n }).addTo(map);\n this.drawnItems = new this.L.FeatureGroup();\n this.drawnItems.addTo(map);\n this.map = map;\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 this.map?.setZoom(zoom);\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 this.map.setView([location.latitude, location.longitude], this.map.getZoom());\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', () => this.addMarker(location));\n }\n }\n }\n\n /**\n * Adds a marker or markers to the map.\n * @param locations The marker or markers to add.\n */\n public addMarker(locations: AXMapMarker | AXMapMarker[]): void {\n if (this.getMarkers().length + (Array.isArray(locations) ? locations.length : 1) > this.maxMarkers) {\n console.warn('Markers Reached max count.');\n } else {\n const locationsArray = Array.isArray(locations) ? locations : [locations];\n locationsArray.forEach((location) => {\n this.L.marker([location.latitude, location.longitude], {\n icon: this.icon,\n title: location.title,\n }).addTo(this.drawnItems);\n this.onMarkerAdded.emit(location);\n this.onMarkerChanged.emit(this.getMarkers());\n });\n if (this.getMarkers().length === this.maxMarkers) {\n this.addDrawControl(this.position, this.maxMarkers, this.maxPolygons);\n }\n }\n }\n\n /**\n * Adds a polygon or polygons to the map.\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(\n polygons: AXMapPolygon | AXMapPolygon[],\n clickCallback?: (event: L.LeafletMouseEvent) => void,\n ): void {\n const polygonsToAdd = Array.isArray(polygons) ? polygons : [polygons];\n\n for (const polygon of polygonsToAdd) {\n if (polygon.points.length < 3) {\n console.warn('Polygon needs 3 or more points.');\n continue;\n }\n\n if (this.getPolygons().length >= this.maxPolygons) {\n console.warn('Polygon reached max count.');\n break;\n }\n\n const latLngs = polygon.points.map(\n (location) => new this.L.LatLng(location.latitude, location.longitude),\n );\n const newPolygon = new this.L.Polygon(latLngs, { color: polygon.color || 'blue' });\n\n if (polygon.title) {\n newPolygon.bindPopup(polygon.title);\n }\n\n if (clickCallback) {\n newPolygon.on('click', clickCallback);\n }\n\n this.drawnItems.addLayer(newPolygon);\n this.onPolygonAdded.emit(polygon);\n this.onPolygonChanged.emit(this.getPolygons());\n }\n\n if (this.getPolygons().length === this.maxPolygons) {\n this.addDrawControl(this.position, this.maxMarkers, this.maxPolygons);\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 return this.drawnItems\n .getLayers()\n .filter((layer) => layer instanceof this.L.Marker)\n .map((marker) => {\n const latLng = (marker as L.Marker).getLatLng();\n const title = marker.options.title;\n return {\n latitude: latLng.lat,\n longitude: latLng.lng,\n title,\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 return this.drawnItems\n .getLayers()\n .filter((layer) => layer instanceof this.L.Polygon)\n .map((polygon) => {\n const latLngs = polygon.getLatLngs()[0]; // Access the outer boundary\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 color: polygon.options?.color,\n };\n });\n }\n\n /**\n * Adds a draw control to the map for creating markers and polygons.\n * @param position The position of the control on the map. Defaults to 'topleft'.\n * @param maxMarkers The maximum number of markers allowed. Defaults to 1.\n * @param maxPolygons The maximum number of polygons allowed. Defaults to 1.\n * @param PolygonColor The default color for polygons.\n */\n public addDrawControl(\n position: AXMapControlPlace = 'topleft',\n maxMarkers = 1,\n maxPolygons = 1,\n PolygonColor?: string,\n ): void {\n this.position = position;\n this.maxMarkers = maxMarkers;\n this.maxPolygons = maxPolygons;\n this.polygonColor = PolygonColor || 'blue'; // Use provided color or default to blue\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.getMarkers().length < this.maxMarkers ? { icon: this.icon } : false,\n polygon: this.getPolygons().length < this.maxPolygons ? {} : false,\n polyline: false,\n rectangle: false,\n circle: 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 (layer instanceof this.L.Polygon) {\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.polygonColor || this.getRandomColorName(), // Use configured color or random\n };\n this.addPolygon(polygonData);\n } else {\n console.warn('Unsupported layer type drawn:', layer);\n }\n };\n\n const onDeleted = (event: any) => {\n const deletedLayers = event.layers;\n deletedLayers.eachLayer((layer: L.Layer) => {\n if (layer instanceof this.L.Marker) {\n this.onMarkerChanged.emit(this.getMarkers());\n } else if (layer instanceof this.L.Polygon) {\n this.onPolygonChanged.emit(this.getPolygons());\n } else {\n console.warn('Unsupported layer type deleted:', layer);\n }\n });\n this.addDrawControl(this.position, this.maxMarkers, this.maxPolygons);\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 this.onMarkerChanged.emit(this.getMarkers());\n } else if (layer instanceof this.L.Polygon) {\n this.onPolygonChanged.emit(this.getPolygons());\n } else {\n console.warn('Unsupported layer type drawn:', layer);\n }\n });\n };\n\n this.map.off('draw:created');\n this.map.off('draw:deleted');\n this.map.off('draw:edited');\n\n this.map.on('draw:created', onCreated);\n this.map.on('draw:deleted', onDeleted);\n this.map.on('draw:edited', onEdited);\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) => alert(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 (markers and polygons) from the map.\n */\n public clearDrawItems(): void {\n if (this.drawnItems) {\n this.drawnItems.clearLayers();\n }\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 markers: this.getMarkers(),\n polygons: this.getPolygons(),\n };\n }\n\n /**\n * Sets the drawn items (markers and polygons) on the map.\n * @param data An object containing arrays of markers and polygons.\n */\n public setDrawItem(data: AXMapData) {\n this.addMarker(data.markers);\n this.addPolygon(data.polygons);\n }\n\n /**\n * Destroys the map instance and removes all event listeners.\n */\n public destroyMap(): void {\n if (this.map) {\n this.map.off();\n this.map.remove();\n this.map = undefined;\n this.drawControl = undefined; // Important: Clear references to prevent memory leaks\n this.locateControl = undefined;\n this.drawnItems = undefined;\n }\n }\n}\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n inject,\n input,\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 { AXMapControlPlace, AXMapData, AXMapMarker, AXMapPolygon } 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.scss'],\n providers: [AXLeafletService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class AXMapComponent implements OnDestroy {\n /**\n * @description\n * Zoom level of the map.\n * @default 13\n */\n zoomLevel = input(13);\n\n /**\n * @description\n * Latitude of the map center.\n * @default 51.505\n */\n latitude = input(51.505);\n\n /**\n * @description\n * Longitude of the map center.\n * @default -0.09\n */\n longitude = input(-0.09);\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 * 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 * 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 * 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 * Event triggered when a new marker is added to the map.\n */\n onMarkerAdded = 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 /**\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 location is found via the location control.\n */\n onLocationFound = output<AXMapMarker>();\n\n private mapContainer = viewChild<ElementRef>('mapContainer');\n private leafletService = inject(AXLeafletService);\n private rendered = signal(false);\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 */\n addMarker(location: AXMapMarker | AXMapMarker[]) {\n this.leafletService.addMarker(location);\n }\n\n addPolygon(location: AXMapPolygon | AXMapPolygon[], clickCallback?: (event: L.LeafletMouseEvent) => void) {\n this.leafletService.addPolygon(location, clickCallback);\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 * 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 setDrawItem(data: AXMapData) {\n return this.leafletService.setDrawItem(data);\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 #initMap = afterNextRender(async () => {\n await this.leafletService.initMap(\n this.mapContainer().nativeElement,\n { latitude: this.latitude(), longitude: this.longitude() },\n this.zoomLevel(),\n );\n if (this.markers()) {\n this.leafletService.addMarker(this.markers());\n }\n if (this.polygons()) {\n this.leafletService.addPolygon(this.polygons());\n }\n this.rendered.set(true);\n });\n\n onLocationFoundSubscription?: Subscription;\n\n #locatorEffect = effect(() => {\n if (this.rendered()) {\n if (!this.hasLocator()) {\n this.leafletService.removeLocateControl();\n if (this.onLocationFoundSubscription) {\n this.onLocationFoundSubscription.unsubscribe();\n this.onLocationFoundSubscription = null;\n }\n } else {\n this.leafletService.addLocateControl(this.locatePlace());\n\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\n onMarkerChangedSubscription?: Subscription;\n onMarkerAddedSubscription?: Subscription;\n onPolygonChangedSubscription?: Subscription;\n onPolygonAddedSubscription?: Subscription;\n\n #drawEffect = effect(() => {\n if (this.rendered()) {\n if (!this.hasDraw()) {\n this.leafletService.removeDrawControl();\n this.unsubscribeFromEvents();\n } else {\n this.leafletService.addDrawControl(this.markerPlace(), this.maxMarker() || 1, this.maxPolygon());\n if (!this.onMarkerChangedSubscription) {\n this.onMarkerChangedSubscription = this.leafletService.onMarkerChanged.subscribe((location) => {\n this.onMarkerChanged.emit(location);\n });\n }\n if (!this.onMarkerAddedSubscription) {\n this.onMarkerAddedSubscription = this.leafletService.onMarkerAdded.subscribe((location) => {\n this.onMarkerAdded.emit(location);\n });\n }\n if (!this.onPolygonChangedSubscription) {\n this.onPolygonChangedSubscription = this.leafletService.onPolygonChanged.subscribe((location) => {\n this.onPolygonChanged.emit(location);\n });\n }\n if (!this.onPolygonAddedSubscription) {\n this.onPolygonAddedSubscription = this.leafletService.onPolygonAdded.subscribe((location) => {\n this.onPolygonAdded.emit(location);\n });\n }\n }\n }\n });\n\n unsubscribeFromEvents() {\n if (this.onMarkerChangedSubscription) {\n this.onMarkerChangedSubscription.unsubscribe();\n this.onMarkerChangedSubscription = null;\n }\n if (this.onMarkerAddedSubscription) {\n this.onMarkerAddedSubscription.unsubscribe();\n this.onMarkerAddedSubscription = null;\n }\n if (this.onPolygonChangedSubscription) {\n this.onPolygonChangedSubscription.unsubscribe();\n this.onPolygonChangedSubscription = null;\n }\n if (this.onPolygonAddedSubscription) {\n this.onPolygonAddedSubscription.unsubscribe();\n this.onPolygonAddedSubscription = null;\n }\n }\n\n #zoomEffect = effect(() => {\n if (this.rendered()) {\n this.leafletService.setZoomLevel(this.zoomLevel());\n }\n });\n\n #centerEffect = effect(() => {\n if (this.rendered()) {\n this.leafletService.setCenter({\n latitude: this.latitude(),\n longitude: this.longitude(),\n } as AXMapMarker);\n }\n });\n\n /**\n * @description\n * Cleanup function that destroys the map when the component is destroyed.\n */\n ngOnDestroy(): void {\n this.leafletService.destroyMap();\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';\n\n@NgModule({\n declarations: [AXMapComponent],\n imports: [CommonModule],\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":["../../../../libs/components/map/src/lib/map.config.ts","../../../../libs/components/map/src/lib/map.service.ts","../../../../libs/components/map/src/lib/map.component.ts","../../../../libs/components/map/src/lib/map.component.html","../../../../libs/components/map/src/lib/map.module.ts","../../../../libs/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 { EventEmitter, inject, Injectable } from '@angular/core';\nimport { AX_MAP_CONFIG } from './map.config';\nimport {\n AXMapControlPlace,\n AXMapData,\n AXMapLatLng,\n AXMapLocation,\n AXMapMarker,\n AXMapPolygon,\n} from './map.type';\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 icon: any;\n private position: AXMapControlPlace = 'topleft';\n private maxMarkers: number | null = null;\n private maxPolygons: number | null = null;\n private polygonColor = 'blue';\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 drawnItems: L.FeatureGroup;\n\n /**\n * Emits when marker data changes.\n */\n public onMarkerChanged = new EventEmitter<AXMapMarker[]>();\n /**\n * Emits when a marker is added.\n */\n public onMarkerAdded = 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 a polygon is added.\n */\n public onPolygonAdded = new EventEmitter<AXMapPolygon>();\n\n /**\n * Loads the Leaflet library and its plugins.\n */\n public async loadLeaflet(): Promise<void> {\n try {\n this.L = await import('leaflet');\n await import('leaflet-draw');\n await import('leaflet.locatecontrol');\n this.icon = 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 });\n } catch (error) {\n console.error('Error Loading Leaflet,', 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 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 attribution: '© ACoreX',\n }).addTo(map);\n this.drawnItems = new this.L.FeatureGroup();\n this.drawnItems.addTo(map);\n this.map = map;\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 this.map?.setZoom(zoom);\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 this.map.setView([location.latitude, location.longitude], this.map.getZoom());\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', () => this.addMarker(location));\n }\n }\n }\n\n /**\n * Adds a marker or markers to the map.\n * @param locations The marker or markers to add.\n */\n public addMarker(locations: AXMapMarker | AXMapMarker[]): void {\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 } else {\n const locationsArray = Array.isArray(locations) ? locations : [locations];\n locationsArray.forEach((location) => {\n this.L.marker([location.latitude, location.longitude], {\n icon: this.icon,\n title: location.title,\n }).addTo(this.drawnItems);\n this.onMarkerAdded.emit(location);\n this.onMarkerChanged.emit(this.getMarkers());\n });\n if (this.getMarkers().length === this.maxMarkers) {\n this.addDrawControl(this.position, this.maxMarkers, this.maxPolygons);\n }\n }\n }\n\n /**\n * Adds a polygon or polygons to the map.\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(\n polygons: AXMapPolygon | AXMapPolygon[],\n clickCallback?: (event: L.LeafletMouseEvent) => void,\n ): void {\n const polygonsToAdd = Array.isArray(polygons) ? polygons : [polygons];\n\n for (const polygon of polygonsToAdd) {\n if (polygon.points.length < 3) {\n console.warn('Polygon needs 3 or more points.');\n continue;\n }\n\n if (this.maxPolygons !== null && this.getPolygons().length >= this.maxPolygons) {\n console.warn('Polygon reached max count.');\n break;\n }\n\n const latLngs = polygon.points.map(\n (location) => new this.L.LatLng(location.latitude, location.longitude),\n );\n const newPolygon = new this.L.Polygon(latLngs, { color: polygon.color || 'blue' });\n\n if (polygon.title) {\n newPolygon.bindPopup(polygon.title);\n }\n\n if (clickCallback) {\n newPolygon.on('click', clickCallback);\n }\n\n this.drawnItems.addLayer(newPolygon);\n this.onPolygonAdded.emit(polygon);\n this.onPolygonChanged.emit(this.getPolygons());\n }\n\n if (this.getPolygons().length === this.maxPolygons) {\n this.addDrawControl(this.position, this.maxMarkers, this.maxPolygons);\n }\n this.fitBoundsToDrawItems();\n }\n\n /**\n * Gets all markers currently on the map.\n * @returns An array of AXMapMarker objects.\n */\n public getMarkers(): AXMapMarker[] {\n return this.drawnItems\n .getLayers()\n .filter((layer) => layer instanceof this.L.Marker)\n .map((marker) => {\n const latLng = (marker as L.Marker).getLatLng();\n const title = marker.options.title;\n return {\n latitude: latLng.lat,\n longitude: latLng.lng,\n title,\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 return this.drawnItems\n .getLayers()\n .filter((layer) => layer instanceof this.L.Polygon)\n .map((polygon) => {\n const latLngs = polygon.getLatLngs()[0]; // Access the outer boundary\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 color: polygon.options?.color,\n };\n });\n }\n\n /**\n * Adds a draw control to the map for creating markers and polygons.\n * @param position The position of the control on the map. Defaults to 'topleft'.\n * @param maxMarkers The maximum number of markers allowed. Defaults to 1.\n * @param maxPolygons The maximum number of polygons allowed. Defaults to 1.\n * @param PolygonColor The default color for polygons.\n */\n public addDrawControl(\n position: AXMapControlPlace = 'topleft',\n maxMarkers = 1,\n maxPolygons = 1,\n PolygonColor?: string,\n ): void {\n this.position = position;\n this.maxMarkers = maxMarkers;\n this.maxPolygons = maxPolygons;\n this.polygonColor = PolygonColor || 'blue'; // Use provided color or default to blue\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.getMarkers().length < this.maxMarkers ? { icon: this.icon } : false,\n polygon: this.getPolygons().length < this.maxPolygons ? {} : false,\n polyline: false,\n rectangle: false,\n circle: 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 (layer instanceof this.L.Polygon) {\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.polygonColor || this.getRandomColorName(), // Use configured color or random\n };\n this.addPolygon(polygonData);\n } else {\n console.warn('Unsupported layer type drawn:', layer);\n }\n };\n\n const onDeleted = (event: any) => {\n const deletedLayers = event.layers;\n deletedLayers.eachLayer((layer: L.Layer) => {\n if (layer instanceof this.L.Marker) {\n this.onMarkerChanged.emit(this.getMarkers());\n } else if (layer instanceof this.L.Polygon) {\n this.onPolygonChanged.emit(this.getPolygons());\n } else {\n console.warn('Unsupported layer type deleted:', layer);\n }\n });\n this.addDrawControl(this.position, this.maxMarkers, this.maxPolygons);\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 this.onMarkerChanged.emit(this.getMarkers());\n } else if (layer instanceof this.L.Polygon) {\n this.onPolygonChanged.emit(this.getPolygons());\n } else {\n console.warn('Unsupported layer type drawn:', layer);\n }\n });\n };\n\n this.map.off('draw:created');\n this.map.off('draw:deleted');\n this.map.off('draw:edited');\n\n this.map.on('draw:created', onCreated);\n this.map.on('draw:deleted', onDeleted);\n this.map.on('draw:edited', onEdited);\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) => alert(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 (markers and polygons) from the map.\n */\n public clearDrawItems(): void {\n if (this.drawnItems) {\n this.drawnItems.clearLayers();\n }\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 markers: this.getMarkers(),\n polygons: this.getPolygons(),\n };\n }\n\n /**\n * Sets the drawn items (markers and polygons) on the map.\n * @param data An object containing arrays of markers and polygons.\n */\n public setDrawItem(data: AXMapData) {\n this.addMarker(data.markers);\n this.addPolygon(data.polygons);\n }\n\n /**\n * Adjusts the map view to fit all markers and polygons currently on the map.\n */\n public fitBoundsToDrawItems(): void {\n debugger;\n if (!this.map || !this.drawnItems) {\n console.warn('Map or drawn items not initialized.');\n return;\n }\n\n const bounds = this.L.latLngBounds([]);\n\n // Include all markers in the bounds\n this.drawnItems.getLayers().forEach((layer) => {\n if (layer instanceof this.L.Marker) {\n bounds.extend((layer as L.Marker).getLatLng());\n } else if (layer instanceof this.L.Polygon) {\n const latLngs = (layer as L.Polygon).getLatLngs();\n (latLngs as any[]).forEach((latLngArray) => {\n latLngArray.forEach((latLng) => {\n bounds.extend(latLng);\n });\n });\n }\n });\n\n if (bounds.isValid()) {\n this.map.fitBounds(bounds, { padding: [20, 20] }); // Add padding for better view\n } else {\n console.warn('No valid bounds found for markers or polygons.');\n }\n }\n\n /**\n * Destroys the map instance and removes all event listeners.\n */\n public destroyMap(): void {\n if (this.map) {\n this.map.off();\n this.map.remove();\n this.map = undefined;\n this.drawControl = undefined; // Important: Clear references to prevent memory leaks\n this.locateControl = undefined;\n this.drawnItems = undefined;\n }\n }\n}\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n inject,\n input,\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 { AXMapControlPlace, AXMapData, AXMapMarker, AXMapPolygon } 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.scss'],\n providers: [AXLeafletService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class AXMapComponent implements OnDestroy {\n /**\n * @description\n * Zoom level of the map.\n */\n zoomLevel = input<number | null>(null);\n\n /**\n * @description\n * Latitude of the map center.\n */\n latitude = input<number | null>(null);\n\n /**\n * @description\n * Longitude of the map center.\n */\n longitude = input<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 * 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 * 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 * 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 * Event triggered when a new marker is added to the map.\n */\n onMarkerAdded = 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 /**\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 location is found via the location control.\n */\n onLocationFound = output<AXMapMarker>();\n\n private mapContainer = viewChild<ElementRef>('mapContainer');\n private leafletService = inject(AXLeafletService);\n private rendered = signal(false);\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 */\n addMarker(location: AXMapMarker | AXMapMarker[]) {\n this.leafletService.addMarker(location);\n }\n\n addPolygon(location: AXMapPolygon | AXMapPolygon[], clickCallback?: (event: L.LeafletMouseEvent) => void) {\n this.leafletService.addPolygon(location, clickCallback);\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 * 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 setDrawItem(data: AXMapData) {\n return 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();\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 #initMap = afterNextRender(async () => {\n await this.leafletService.initMap(\n this.mapContainer().nativeElement,\n { latitude: this.latitude() ?? 31, longitude: this.longitude() ?? 51 },\n this.zoomLevel() ?? 5,\n );\n if (this.markers()) {\n this.leafletService.addMarker(this.markers());\n }\n if (this.polygons()) {\n this.leafletService.addPolygon(this.polygons());\n }\n this.leafletService.fitBoundsToDrawItems();\n this.rendered.set(true);\n });\n\n onLocationFoundSubscription?: Subscription;\n\n #locatorEffect = effect(() => {\n if (this.rendered()) {\n if (!this.hasLocator()) {\n this.leafletService.removeLocateControl();\n if (this.onLocationFoundSubscription) {\n this.onLocationFoundSubscription.unsubscribe();\n this.onLocationFoundSubscription = null;\n }\n } else {\n this.leafletService.addLocateControl(this.locatePlace());\n\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\n onMarkerChangedSubscription?: Subscription;\n onMarkerAddedSubscription?: Subscription;\n onPolygonChangedSubscription?: Subscription;\n onPolygonAddedSubscription?: Subscription;\n\n #drawEffect = effect(() => {\n if (this.rendered()) {\n if (!this.hasDraw()) {\n this.leafletService.removeDrawControl();\n this.unsubscribeFromEvents();\n } else {\n this.leafletService.addDrawControl(this.markerPlace(), this.maxMarker() || 1, this.maxPolygon());\n if (!this.onMarkerChangedSubscription) {\n this.onMarkerChangedSubscription = this.leafletService.onMarkerChanged.subscribe((location) => {\n this.onMarkerChanged.emit(location);\n });\n }\n if (!this.onMarkerAddedSubscription) {\n this.onMarkerAddedSubscription = this.leafletService.onMarkerAdded.subscribe((location) => {\n this.onMarkerAdded.emit(location);\n });\n }\n if (!this.onPolygonChangedSubscription) {\n this.onPolygonChangedSubscription = this.leafletService.onPolygonChanged.subscribe((location) => {\n this.onPolygonChanged.emit(location);\n });\n }\n if (!this.onPolygonAddedSubscription) {\n this.onPolygonAddedSubscription = this.leafletService.onPolygonAdded.subscribe((location) => {\n this.onPolygonAdded.emit(location);\n });\n }\n }\n }\n });\n\n unsubscribeFromEvents() {\n if (this.onMarkerChangedSubscription) {\n this.onMarkerChangedSubscription.unsubscribe();\n this.onMarkerChangedSubscription = null;\n }\n if (this.onMarkerAddedSubscription) {\n this.onMarkerAddedSubscription.unsubscribe();\n this.onMarkerAddedSubscription = null;\n }\n if (this.onPolygonChangedSubscription) {\n this.onPolygonChangedSubscription.unsubscribe();\n this.onPolygonChangedSubscription = null;\n }\n if (this.onPolygonAddedSubscription) {\n this.onPolygonAddedSubscription.unsubscribe();\n this.onPolygonAddedSubscription = null;\n }\n }\n\n #zoomEffect = effect(() => {\n if (this.rendered() && this.zoomLevel() !== null) {\n this.leafletService.setZoomLevel(this.zoomLevel());\n }\n });\n\n #centerEffect = effect(() => {\n if (this.rendered() && this.latitude() !== null && this.longitude() !== null) {\n this.leafletService.setCenter({\n latitude: this.latitude(),\n longitude: this.longitude(),\n } as AXMapMarker);\n }\n });\n\n /**\n * @description\n * Cleanup function that destroys the map when the component is destroyed.\n */\n ngOnDestroy(): void {\n this.leafletService.destroyMap();\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';\n\n@NgModule({\n declarations: [AXMapComponent],\n imports: [CommonModule],\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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"}
|