{"version":3,"file":"camp2gether-c2g-ui-maps.mjs","sources":["../../../projects/c2g-ui/maps/map/map.component.ts","../../../projects/c2g-ui/maps/map/map.component.html","../../../projects/c2g-ui/maps/map/map-marker.component.ts","../../../projects/c2g-ui/maps/map/map-marker.component.html","../../../projects/c2g-ui/maps/camp2gether-c2g-ui-maps.ts"],"sourcesContent":["import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  OnDestroy,\n  ViewChild,\n  ViewEncapsulation,\n  effect,\n  input,\n  output\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as L from 'leaflet';\nimport { C2gMapMarkerData, LeafletMap, LeafletMouseEvent } from './map.types';\n\n@Component({\n  selector: 'c2g-map',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './map.component.html',\n  styleUrls: ['./map.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None\n})\nexport class MapComponent implements AfterViewInit, OnDestroy {\n  @ViewChild('mapContainer', { static: true }) mapContainer!: ElementRef<HTMLDivElement>;\n\n  readonly center = input<[number, number]>([47.6, 9.6]);\n  readonly zoom = input<number>(7);\n  readonly height = input<string>('400px');\n  readonly width = input<string>('100%');\n  readonly markers = input<C2gMapMarkerData[]>([]);\n  readonly interactive = input<boolean>(true);\n  readonly zoomControl = input<boolean>(true);\n\n  readonly mapReady = output<LeafletMap>();\n  readonly mapClick = output<LeafletMouseEvent>();\n  readonly markerClick = output<{ marker: C2gMapMarkerData; event: LeafletMouseEvent }>();\n\n  private map?: LeafletMap;\n  private markerGroup?: L.LayerGroup;\n\n  constructor() {\n    effect(() => {\n      const currentMarkers = this.markers();\n      if (this.markerGroup) {\n        this.updateMarkers(currentMarkers);\n      }\n    });\n\n    effect(() => {\n      const currentCenter = this.center();\n      const currentZoom = this.zoom();\n      if (this.map) {\n        this.map.setView(L.latLng(currentCenter[0], currentCenter[1]), currentZoom, {\n          animate: true,\n          duration: 0.5\n        });\n      }\n    });\n  }\n\n  ngAfterViewInit(): void {\n    this.initializeMap();\n  }\n\n  ngOnDestroy(): void {\n    // ViewEncapsulation.None is required for Leaflet to render tile layers and popups correctly\n    // outside Angular's shadow DOM — clean up the instance explicitly to prevent memory leaks\n    if (this.map) {\n      this.map.remove();\n      this.map = undefined;\n    }\n    this.markerGroup = undefined;\n  }\n\n  private initializeMap(): void {\n    this.markerGroup = L.layerGroup();\n\n    this.map = L.map(this.mapContainer.nativeElement, {\n      center: L.latLng(this.center()[0], this.center()[1]),\n      zoom: this.zoom(),\n      zoomControl: this.interactive() && this.zoomControl(),\n      dragging: this.interactive(),\n      touchZoom: this.interactive(),\n      doubleClickZoom: this.interactive(),\n      scrollWheelZoom: this.interactive(),\n      boxZoom: this.interactive(),\n      keyboard: this.interactive(),\n      attributionControl: true\n    });\n\n    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n      attribution: '© OpenStreetMap contributors',\n      maxZoom: 19\n    }).addTo(this.map);\n\n    this.markerGroup.addTo(this.map);\n\n    if (this.interactive()) {\n      this.map.on('click', (event: L.LeafletMouseEvent) => {\n        this.mapClick.emit(event);\n      });\n    }\n\n    this.updateMarkers(this.markers());\n    this.mapReady.emit(this.map);\n  }\n\n  private updateMarkers(currentMarkers: C2gMapMarkerData[]): void {\n    if (!this.markerGroup) {\n      return;\n    }\n\n    this.markerGroup.clearLayers();\n\n    currentMarkers.forEach((markerData) => {\n      const icon = L.divIcon({\n        className: 'c2g-map-div-icon',\n        html: this.buildMarkerHtml(markerData),\n        iconSize: this.markerSize(markerData.size),\n        iconAnchor: this.markerAnchor(markerData.size)\n      });\n\n      const marker = L.marker([markerData.latitude, markerData.longitude], { icon });\n\n      marker.on('click', (event: L.LeafletMouseEvent) => {\n        this.markerClick.emit({ marker: markerData, event });\n      });\n\n      if (markerData.title) {\n        marker.bindTooltip(markerData.title, {\n          className: 'c2g-map-tooltip',\n          direction: 'top',\n          offset: [0, -16]\n        });\n      }\n\n      this.markerGroup!.addLayer(marker);\n    });\n  }\n\n  private buildMarkerHtml(marker: C2gMapMarkerData): string {\n    const markerType = marker.tourStatus ? `status-${marker.tourStatus}` : (marker.activityType ?? 'adventure');\n    const markerSize = marker.size ?? 'medium';\n    const markerVariant = marker.variant ?? 'default';\n    const selectedClass = marker.selected ? ' c2g-map-marker--selected' : '';\n    const variantClass = markerVariant === 'new-tour' ? ' c2g-map-marker--new-tour' : '';\n\n    return `\n      <div class=\"c2g-map-marker c2g-map-marker--${markerSize} c2g-map-marker--${markerType}${selectedClass}${variantClass}\">\n        <div class=\"c2g-map-marker__pin\">\n          <div class=\"c2g-map-marker__circle\">\n            <span class=\"c2g-map-marker__icon material-icons\">${this.markerIcon(marker)}</span>\n          </div>\n          <div class=\"c2g-map-marker__point\"></div>\n        </div>\n      </div>\n    `;\n  }\n\n  private markerIcon(marker: C2gMapMarkerData): string {\n    if (marker.variant === 'new-tour') {\n      return 'add';\n    }\n\n    if (marker.tourStatus) {\n      const statusIconMap: Record<NonNullable<C2gMapMarkerData['tourStatus']>, string> = {\n        declined: 'close',\n        completed: 'check',\n        current: 'radio_button_checked',\n        upcoming: 'radio_button_unchecked'\n      };\n      return statusIconMap[marker.tourStatus];\n    }\n\n    if (marker.icon) {\n      return marker.icon;\n    }\n\n    const activity = marker.activityType ?? 'adventure';\n    const activityIconMap: Record<NonNullable<C2gMapMarkerData['activityType']>, string> = {\n      water: 'waves',\n      forest: 'park',\n      mountain: 'terrain',\n      desert: 'wb_sunny',\n      urban: 'location_city',\n      adventure: 'outdoor_grill',\n      'point-of-interest': 'star'\n    };\n\n    return activityIconMap[activity];\n  }\n\n  private markerSize(size: C2gMapMarkerData['size']): L.PointExpression {\n    switch (size) {\n      case 'small':\n        return [24, 36];\n      case 'large':\n        return [40, 56];\n      default:\n        return [32, 46];\n    }\n  }\n\n  private markerAnchor(size: C2gMapMarkerData['size']): L.PointExpression {\n    switch (size) {\n      case 'small':\n        return [12, 36];\n      case 'large':\n        return [20, 56];\n      default:\n        return [16, 46];\n    }\n  }\n}\n","<div\n  #mapContainer\n  class=\"c2g-map\"\n  [style.height]=\"height()\"\n  [style.width]=\"width()\"\n></div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { ActivityType, MarkerSize, TourStatus } from './map.types';\n\n@Component({\n  selector: 'c2g-map-marker',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './map-marker.component.html',\n  styleUrls: ['./map-marker.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MapMarkerComponent {\n  readonly activityType = input<ActivityType>('adventure');\n  readonly tourStatus = input<TourStatus | null>(null);\n  readonly selected = input<boolean>(false);\n  readonly size = input<MarkerSize>('medium');\n  readonly variant = input<'default' | 'new-tour'>('default');\n\n  readonly markerType = computed(() => {\n    const status = this.tourStatus();\n    return status ? `status-${status}` : this.activityType();\n  });\n\n  readonly markerIcon = computed(() => {\n    if (this.variant() === 'new-tour') {\n      return 'add';\n    }\n\n    const status = this.tourStatus();\n    if (status) {\n      const statusIconMap: Record<TourStatus, string> = {\n        declined: 'close',\n        completed: 'check',\n        current: 'radio_button_checked',\n        upcoming: 'radio_button_unchecked'\n      };\n      return statusIconMap[status];\n    }\n\n    const activityIconMap: Record<ActivityType, string> = {\n      water: 'waves',\n      forest: 'park',\n      mountain: 'terrain',\n      desert: 'wb_sunny',\n      urban: 'location_city',\n      adventure: 'outdoor_grill',\n      'point-of-interest': 'star'\n    };\n\n    return activityIconMap[this.activityType()];\n  });\n}\n","<div\n  class=\"c2g-map-marker\"\n  [class.c2g-map-marker--selected]=\"selected()\"\n  [class.c2g-map-marker--small]=\"size() === 'small'\"\n  [class.c2g-map-marker--medium]=\"size() === 'medium'\"\n  [class.c2g-map-marker--large]=\"size() === 'large'\"\n  [class.c2g-map-marker--new-tour]=\"variant() === 'new-tour'\"\n  [class]=\"'c2g-map-marker--' + markerType()\"\n>\n  <div class=\"c2g-map-marker__pin\">\n    <div class=\"c2g-map-marker__circle\">\n      <span class=\"c2g-map-marker__icon material-icons\">{{ markerIcon() }}</span>\n    </div>\n    <div class=\"c2g-map-marker__point\"></div>\n  </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}