{"version":3,"file":"ng-leaflet-universal-cm.mjs","sources":["../../../projects/ng-leaflet-universal/src/lib/utils/index.ts","../../../projects/ng-leaflet-universal/src/lib/map.component.ts","../../../projects/ng-leaflet-universal/src/lib/map.module.ts","../../../projects/ng-leaflet-universal/src/public-api.ts","../../../projects/ng-leaflet-universal/src/ng-leaflet-universal-cm.ts"],"sourcesContent":["import { MarkerCard } from '../models';\n\nexport function generate(prefix = 'ng-leaflet-universal') {\n  const hexstring = Math.random().toString(16).slice(2);\n\n  return [prefix, hexstring].filter(Boolean).join('-');\n}\n\nexport const getCardHtml = (card: MarkerCard) =>\n  card?.customHtml\n    ? card.customHtml\n    : `\n    <div class=\"map-card\">\n      <div class=\"map-card-body\">\n        <div class=\"top-card\">\n          <img src=\"${card?.image?.url}\" alt=\"${card?.title?.text}\" />\n          <div class=\"content\">\n            <h2 class=\"map-card-title\">${card?.title?.text}</h2>\n            <h4 class=\"map-card-subtitle\">${card?.subtitle?.text}</h4>\n            <h5 class=\"map-address\">${card?.address?.text}</h5>\n          </div>\n        </div>\n        <div class=\"map-card-content\">\n          ${card?.content?.text}\n        </div>\n        <div class=\"cta-wrapper\">\n          ${card?.callToActions\n            ?.map(\n              (cta) => `\n              <a href=\"${cta.link}\"\n                target=\"_blank\"\n                style=\"\n                background-color: ${cta.backgroundColor || '#007FFF'};\n                color: ${cta.textColor || 'white'};\"\n                class=\"map-card-cta\">\n                  ${cta.icon ? `<i class=\"${cta.icon}\"></i>` : ''}\n              ${cta.text}</a>\n              `\n            )\n            .reduce((a, b) => a + b)}\n          </div>\n      </div>\n    </div>`;\n","import { map, tileLayer, divIcon, Marker as LeafletMarker } from 'leaflet';\nimport { AfterViewInit, input, output, effect } from '@angular/core';\nimport { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { FeatureGroup } from 'leaflet';\nimport type { Map } from 'leaflet';\n\nimport { generate, getCardHtml } from './utils';\nimport { Marker } from './models';\n\n@Component({\n  selector: 'ng-leaflet-universal',\n  template: `\n    <div class=\"map\">\n      <div class=\"map-frame\">\n        <div [id]=\"id\"></div>\n      </div>\n    </div>\n  `,\n  styleUrls: ['./map.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class MapComponent implements AfterViewInit {\n  mapEvent = output<Marker>();\n\n  markers = input<Array<Marker> | null>([]);\n\n  id = generate('div');\n  map: Map;\n\n  #effet = effect(() => {\n    if (this.map) {\n      this.updateMarkers(this.markers());\n    }\n  })\n\n  ngAfterViewInit() {\n    this.map = map(this.id).setView([18.4, -66.9], 4);\n\n    tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n      attribution: 'Map data © OpenStreetMap contributors',\n    }).addTo(this.map);\n\n    this.updateMarkers(this.markers());\n  }\n\n  removeMarkers() {\n    this.map.eachLayer((layer) => {\n      // Ignore tile layer\n      if (layer.options?.attribution) return;\n\n      // Previous (markers)\n      layer.remove();\n    });\n  }\n\n  updateMarkers(markers: Array<Marker> | null) {\n    this.removeMarkers();\n\n    if (!markers?.length) return;\n\n    const leafletMarkers = markers.map(createLeafletMarker).map((marker, i) => {\n      return marker.on('click', () => this.mapEvent.emit(markers[i]));\n    });\n\n    const group = new FeatureGroup(leafletMarkers);\n\n    group.addTo(this.map);\n\n    this.map.fitBounds(group.getBounds());\n  }\n}\n\nfunction createLeafletMarker(marker: Marker) {\n  const leafletMarker = new LeafletMarker({\n    lat: marker.location.latitude,\n    lng: marker.location.longitude,\n  });\n\n  leafletMarker.setIcon(\n    divIcon({\n      html:\n        marker.html ||\n        `\n      <div class=\"item-marker\">\n          <div class=\"icon-image\" style=\"background-image: url('${marker.icon}')\">\n          </div>\n      </div>`,\n      className: 'map-marker-icon',\n      iconSize: [26, 30],\n      iconAnchor: [13, 30],\n    })\n  );\n\n  leafletMarker.on('click', function ({ target, latlng }) {\n    if (marker.cardActivated && marker?.card) {\n      const html = getCardHtml(marker.card);\n      const popup = target.getPopup();\n\n      if (popup) popup?.openPopup();\n      else {\n        target\n          .bindPopup(html, {\n            autoClose: false,\n            maxWidth: 200,\n          })\n          .openPopup();\n      }\n    }\n\n    target._map.setView(latlng, 15);\n  });\n\n  return leafletMarker;\n}\n","import { NgModule } from '@angular/core';\n\nimport { MapComponent } from './map.component';\n\n@NgModule({\n  declarations: [MapComponent],\n  exports: [MapComponent],\n})\nexport class NgLeafletUniversalModule {}\n","/*\n * Public API Surface of ng-leaflet-universal\n */\n\nexport * from './lib/map.component';\nexport * from './lib/map.module';\nexport * from './lib/models';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["LeafletMarker"],"mappings":"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"}