{"version":3,"file":"helgoland-open-layers.mjs","sources":["../../../../projects/helgoland/open-layers/src/lib/services/wms-capabilities.service.ts","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-abstract/ol-layer-abstract.component.ts","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-abstract/ol-layer-abstract.component.html","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-time-selector/ol-layer-time-selector.component.ts","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-time-selector/ol-layer-time-selector.component.html","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-animate-time/ol-layer-animate-time.component.ts","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-animate-time/ol-layer-animate-time.component.html","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-legend-url/ol-layer-legend-url.component.ts","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-legend-url/ol-layer-legend-url.component.html","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-opacitiy-slider/ol-layer-opacitiy-slider.component.ts","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-opacitiy-slider/ol-layer-opacitiy-slider.component.html","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-title/ol-layer-title.component.ts","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-title/ol-layer-title.component.html","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-visibility-toggler/ol-layer-visibility-toggler.component.ts","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-visibility-toggler/ol-layer-visibility-toggler.component.html","../../../../projects/helgoland/open-layers/src/lib/services/map.service.ts","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-zoom-extent/ol-layer-zoom-extent.component.ts","../../../../projects/helgoland/open-layers/src/lib/controls/legend/ol-layer-zoom-extent/ol-layer-zoom-extent.component.html","../../../../projects/helgoland/open-layers/src/lib/services/mapid.service.ts","../../../../projects/helgoland/open-layers/src/lib/ol-base.component.ts","../../../../projects/helgoland/open-layers/src/lib/controls/ol-mouse-position/ol-mouse-position.component.ts","../../../../projects/helgoland/open-layers/src/lib/controls/ol-overview-map/ol-overview-map.component.ts","../../../../projects/helgoland/open-layers/src/lib/layers/ol-layer/ol-layer.component.ts","../../../../projects/helgoland/open-layers/src/lib/layers/ol-station-selector-layer/ol-station-selector-layer.component.ts","../../../../projects/helgoland/open-layers/src/lib/ol-map/ol-map.component.ts","../../../../projects/helgoland/open-layers/src/lib/open-layers.module.ts","../../../../projects/helgoland/open-layers/src/helgoland-open-layers.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { HttpService } from '@helgoland/core';\nimport WMSCapabilities from 'ol/format/WMSCapabilities';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\ninterface InternalWMSLayer {\n  Name: string;\n  Title: string;\n  Abstract: string;\n  Layer: InternalWMSLayer[];\n  Dimension: {\n    name: string;\n    default: string;\n    values: string;\n  }[];\n  BoundingBox: {\n    crs: string;\n    extent: number[];\n  }[];\n  Style: {\n    Abstract: string;\n    Name: string;\n    Title: string;\n    LegendURL: {\n      Format: string;\n      OnlineResource: string;\n      size: number[];\n    }[];\n  }[];\n  EX_GeographicBoundingBox: number[];\n}\n\nexport interface WMSLayer {\n  name: string;\n  title: string;\n  abstract: string;\n  childLayer: WMSLayer[];\n}\n\n// request Capabilities only all 5 minutes\nconst WMS_CAPABILITIES_REQUEST_EXPIRATION = 1000 * 60 * 5;\n\n/**\n * Handler for WMS capabilities\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class WmsCapabilitiesService {\n  private http = inject(HttpService);\n\n  /**\n   * Returns the layer title of the capabilities as observable\n   *\n   * @param layerName\n   * @param wmsurl\n   * @returns layer title as string observable\n   */\n  getTitle(layerName: string, wmsurl: string): Observable<string> {\n    return this.getLayerInfo(layerName, wmsurl).pipe(\n      map((layer) => (layer?.Title ? layer.Title : 'no layer title')),\n    );\n  }\n\n  /**\n   * Returns the layer abstract of the capabilities as observable\n   *\n   * @param layerName\n   * @param wmsurl\n   * @returns layer abstract as string observable\n   */\n  getAbstract(layerName: string, wmsurl: string): Observable<string> {\n    return this.getLayerInfo(layerName, wmsurl).pipe(\n      map((layer) => (layer?.Abstract ? layer.Abstract : 'no layer abstract')),\n    );\n  }\n\n  /**\n   * Returns a date array as observable for the given layername, if available\n   *\n   * @param layerName\n   * @param wmsurl\n   * @returns\n   */\n  getTimeDimensionArray(layerName: string, wmsurl: string): Observable<Date[]> {\n    return this.getLayerInfo(layerName, wmsurl).pipe(\n      map((layer) => {\n        if (layer) {\n          const timeDimension = layer.Dimension.find((e) => (e.name = 'time'));\n          if (timeDimension) {\n            return this.createTimeList(timeDimension);\n          }\n        }\n        return [];\n      }),\n    );\n  }\n\n  /**\n   * Returns a legend url as observable, if available\n   *\n   * @param layerName\n   * @param wmsurl\n   * @returns\n   */\n  getLegendUrl(layerName: string, wmsurl: string): Observable<string> {\n    return this.getLayerInfo(layerName, wmsurl).pipe(\n      map((layer) => {\n        let legendUrl = '';\n        if (layer)\n          layer.Style.forEach((s) =>\n            s.LegendURL.forEach((l) => (legendUrl = l.OnlineResource)),\n          );\n        return legendUrl;\n      }),\n    );\n  }\n\n  /**\n   * Returns the default date as observable for the given layername, if available\n   *\n   * @param layerName\n   * @param wmsurl\n   * @returns\n   */\n  getDefaultTimeDimension(\n    layerName: string,\n    wmsurl: string,\n  ): Observable<Date | undefined> {\n    return this.getLayerInfo(layerName, wmsurl).pipe(\n      map((layer) => {\n        if (layer) {\n          const timeDimension = layer.Dimension.find((e) => (e.name = 'time'));\n          if (timeDimension && timeDimension.default) {\n            if (timeDimension.default === 'current') {\n              const timeList = this.createTimeList(timeDimension);\n              return this.findNearestTimestamp(timeList, new Date());\n            } else {\n              return new Date(timeDimension.default);\n            }\n          }\n        }\n        return undefined;\n      }),\n    );\n  }\n\n  /**\n   * Returns the extent as observable for the given layername and epsg code, if available\n   *\n   * @param layerName\n   * @param wmsurl\n   * @param epsgCode\n   * @returns\n   */\n  getExtent(\n    layerName: string,\n    wmsurl: string,\n    epsgCode: string,\n  ): Observable<{ crs: string; extent: number[] } | undefined> {\n    return this.getLayerInfo(layerName, wmsurl).pipe(\n      map((layer) => {\n        if (layer) {\n          const match = layer.BoundingBox.find((e) => e.crs === epsgCode);\n          if (match) {\n            return this.fixExtent(match.crs, match.extent);\n          } else {\n            if (layer.BoundingBox.length > 0) {\n              return this.fixExtent(\n                layer.BoundingBox[0].crs,\n                layer.BoundingBox[0].extent,\n              );\n            }\n          }\n        }\n        return undefined;\n      }),\n    );\n  }\n\n  getLayerTree(wmsurl: string): Observable<WMSLayer> {\n    return this.getCapabilities(wmsurl).pipe(\n      map((res) => this.createLayer(res.Capability.Layer)),\n    );\n  }\n\n  /**\n   * Removes every request parameter of the url an returns this cleand url.\n   */\n  cleanUpWMSUrl(url: string): string {\n    let wmsRequesturl = url;\n    if (wmsRequesturl.indexOf('?') !== -1) {\n      wmsRequesturl = wmsRequesturl.substring(0, wmsRequesturl.indexOf('?'));\n    }\n    return wmsRequesturl;\n  }\n\n  private createLayer(layer: InternalWMSLayer): WMSLayer {\n    return {\n      name: layer.Name,\n      title: layer.Title,\n      abstract: layer.Abstract,\n      childLayer: layer.Layer\n        ? layer.Layer.map((l) => this.createLayer(l))\n        : [],\n    };\n  }\n\n  private getCapabilities(url: string): Observable<any> {\n    const wmsRequesturl =\n      this.cleanUpWMSUrl(url) +\n      '?request=GetCapabilities&service=wms&version=1.3.0';\n    return this.http\n      .client({\n        expirationAtMs:\n          new Date().getTime() + WMS_CAPABILITIES_REQUEST_EXPIRATION,\n      })\n      .get(wmsRequesturl, { responseType: 'text' })\n      .pipe(map((res) => new WMSCapabilities().read(res)));\n  }\n\n  private findLayerByName(\n    name: string,\n    layerList: InternalWMSLayer[],\n  ): InternalWMSLayer | undefined {\n    let layer = layerList.find((e) => e.Name === name);\n    if (layer) {\n      return layer;\n    } else {\n      for (let i = 0; i < layerList.length; i++) {\n        if (layerList[i].Layer) {\n          layer = this.findLayerByName(name, layerList[i].Layer);\n          if (layer) {\n            return layer;\n          }\n        }\n      }\n    }\n    return undefined;\n    // throw new Error(`Did not found layer for name ${name}`);\n  }\n\n  private getLayerInfo(\n    layerName: string,\n    url: string,\n  ): Observable<InternalWMSLayer | undefined> {\n    return this.getCapabilities(url).pipe(\n      map((caps) =>\n        this.findLayerByName(layerName, caps.Capability.Layer.Layer),\n      ),\n    );\n  }\n\n  private fixExtent(\n    crs: string,\n    extent: number[],\n  ): { crs: string; extent: number[] } {\n    if (crs === 'EPSG:4326') {\n      const fixExtent = [extent[1], extent[0], extent[3], extent[2]];\n      return { crs, extent: fixExtent };\n    } else {\n      return { crs, extent };\n    }\n  }\n\n  private createTimeList(timeDimension: {\n    name: string;\n    default: string;\n    values: string;\n  }): Date[] {\n    return timeDimension.values.split(',').map((e) => new Date(e));\n  }\n\n  private findNearestTimestamp(timeList: Date[], stamp: Date): Date {\n    let bestDate = timeList.length;\n    let bestDiff = -new Date(0, 0, 0).valueOf();\n    let currDiff = 0;\n    for (let i = 0; i < timeList.length; ++i) {\n      currDiff = Math.abs(timeList[i].valueOf() - stamp.valueOf());\n      if (currDiff < bestDiff) {\n        bestDate = i;\n        bestDiff = currDiff;\n      }\n    }\n    return timeList[bestDate];\n  }\n}\n","import { Component, OnInit, inject, input } from '@angular/core';\nimport { Layer } from 'ol/layer';\nimport { TileWMS } from 'ol/source';\n\nimport { WmsCapabilitiesService } from '../../../services/wms-capabilities.service';\n\n/**\n * Legend component to display the abstract, gathered by the WMS capabilities\n */\n@Component({\n  selector: 'n52-ol-layer-abstract',\n  templateUrl: './ol-layer-abstract.component.html',\n  standalone: true,\n})\nexport class OlLayerAbstractComponent implements OnInit {\n  private wmsCaps = inject(WmsCapabilitiesService);\n\n  readonly layer = input.required<Layer>();\n\n  abstract: string | undefined;\n\n  ngOnInit() {\n    const source = this.layer().getSource();\n    this.layer().getExtent();\n    if (source instanceof TileWMS && source.getUrls()?.length) {\n      const url = source.getUrls()![0];\n      const layerid =\n        source.getParams()['layers'] || source.getParams()['LAYERS'];\n      this.wmsCaps\n        .getAbstract(layerid, url)\n        .subscribe((res) => (this.abstract = res));\n    }\n  }\n}\n","<span>{{ abstract }}</span>\n","import { Component, OnInit, inject, input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TzDatePipe } from '@helgoland/core';\nimport BaseLayer from 'ol/layer/Base';\nimport Layer from 'ol/layer/Layer';\nimport { TileWMS } from 'ol/source';\n\nimport { WmsCapabilitiesService } from '../../../services/wms-capabilities.service';\n\n/**\n * Legend component to select time stamps of a layer, the time information is gathered by the WMS capabilities\n */\n@Component({\n  selector: 'n52-ol-layer-time-selector',\n  templateUrl: './ol-layer-time-selector.component.html',\n  imports: [FormsModule, TzDatePipe],\n})\nexport class OlLayerTimeSelectorComponent implements OnInit {\n  protected wmsCaps = inject(WmsCapabilitiesService);\n\n  readonly layer = input.required<BaseLayer>();\n\n  currentTime: Date | undefined;\n\n  timeDimensions: Date[] | undefined;\n\n  loading: boolean | undefined;\n\n  protected layerSource: TileWMS | undefined;\n  protected layerid: string | undefined;\n  protected url: string | undefined;\n\n  ngOnInit() {\n    const layer = this.layer();\n    if (layer instanceof Layer) {\n      const source = layer.getSource();\n      if (source instanceof TileWMS && source.getUrls()?.length) {\n        this.loading = true;\n        this.layerSource = source;\n        this.url = source.getUrls()![0];\n        this.layerid =\n          source.getParams()['layers'] || source.getParams()['LAYERS'];\n        if (this.layerid) {\n          this.wmsCaps.getTimeDimensionArray(this.layerid, this.url).subscribe({\n            next: (res) => (this.timeDimensions = res),\n            error: (error) => {},\n            complete: () => (this.loading = false),\n          });\n        }\n        this.determineCurrentTimeParameter();\n      }\n    }\n  }\n\n  onSelect(time: Date) {\n    this.setTime(time);\n  }\n\n  compareFn(option1: Date, option2: Date) {\n    return option1 && option2 && option1.getTime() === option2.getTime();\n  }\n\n  protected determineCurrentTimeParameter() {\n    if (this.layerSource && this.layerid && this.url) {\n      const currentTimeParam =\n        this.layerSource.getParams()['time'] ||\n        this.layerSource.getParams()['Time'];\n      if (currentTimeParam) {\n        this.currentTime = new Date(currentTimeParam);\n      } else {\n        this.wmsCaps.getDefaultTimeDimension(this.layerid, this.url).subscribe({\n          next: (time) => (this.currentTime = time),\n          error: (err) => console.error(err),\n        });\n      }\n    }\n  }\n\n  protected setTime(time: Date) {\n    if (this.layerSource) {\n      this.currentTime = time;\n      this.layerSource.updateParams({ time: time.toISOString() });\n    }\n  }\n}\n","@if (loading) {\n  <span>loading ...</span>\n}\n@if (!loading) {\n  <select\n    [ngModel]=\"currentTime\"\n    [compareWith]=\"compareFn\"\n    (ngModelChange)=\"onSelect($event)\"\n  >\n    @for (time of timeDimensions; track time) {\n      <option [ngValue]=\"time\">{{ time | tzDate: \"L LT z\" }}</option>\n    }\n  </select>\n}\n","import { Component, OnInit, input } from '@angular/core';\n\nimport { OlLayerTimeSelectorComponent } from '../ol-layer-time-selector/ol-layer-time-selector.component';\n\n/**\n * Legend component to animate time dependend layers, the time information is gathered by the WMS capabilities\n */\n@Component({\n  selector: 'n52-ol-layer-animate-time',\n  templateUrl: './ol-layer-animate-time.component.html',\n  imports: [],\n})\nexport class OlLayerAnimateTimeComponent\n  extends OlLayerTimeSelectorComponent\n  implements OnInit\n{\n  /**\n   * Interval of the animation\n   */\n  readonly timeInterval = input(2000);\n\n  private interval: number | undefined;\n\n  startAnimation() {\n    if (this.timeDimensions?.length) {\n      // get current time parameter\n      this.determineCurrentTimeParameter();\n      // find index in list\n      let idx = this.timeDimensions.findIndex(\n        (e) => this.currentTime && e.getTime() === this.currentTime.getTime(),\n      );\n      // start animation\n      this.interval = window.setInterval(() => {\n        idx++;\n        if (idx >= this.timeDimensions!.length) {\n          idx = 0;\n        }\n        this.setTime(this.timeDimensions![idx]);\n      }, this.timeInterval());\n    }\n  }\n\n  stopAnimation() {\n    clearInterval(this.interval);\n  }\n\n  resetAnimation() {\n    if (this.layerid && this.url) {\n      this.wmsCaps\n        .getDefaultTimeDimension(this.layerid, this.url)\n        .subscribe((time) => {\n          if (time) this.setTime(time);\n        });\n    }\n  }\n}\n","@if (loading) {\n  <span>loading ...</span>\n}\n@if (!loading) {\n  <span>\n    <span>{{ currentTime }}</span>\n    <span (click)=\"startAnimation()\"> start </span>\n    <span (click)=\"stopAnimation()\"> stop </span>\n    <span (click)=\"resetAnimation()\"> reset </span>\n  </span>\n}\n","import { Component, inject, input, output } from '@angular/core';\nimport { Layer } from 'ol/layer';\nimport { TileWMS } from 'ol/source';\n\nimport { WmsCapabilitiesService } from '../../../services/wms-capabilities.service';\n\n/**\n * Legend component to ascertain the legend url, gathered by the WMS capabilities\n */\n@Component({\n  selector: 'n52-ol-layer-legend-url',\n  templateUrl: './ol-layer-legend-url.component.html',\n  standalone: true,\n})\nexport class OlLayerLegendUrlComponent {\n  private wmsCaps = inject(WmsCapabilitiesService);\n\n  readonly layer = input.required<Layer>();\n\n  /**\n   * Returns the legend url\n   */\n  readonly legendUrl = output<string>();\n\n  deliverLegendUrl() {\n    const source = this.layer().getSource();\n    this.layer().getExtent();\n    if (source instanceof TileWMS && source.getUrls()?.length) {\n      const url = source.getUrls()![0];\n      const layerid =\n        source.getParams()['layers'] || source.getParams()['LAYERS'];\n      this.wmsCaps\n        .getLegendUrl(layerid, url)\n        .subscribe((res) => this.legendUrl.emit(res));\n    }\n  }\n}\n","<span (click)=\"deliverLegendUrl()\">show Legend</span>\n","import { Component, DoCheck, OnInit, input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport BaseLayer from 'ol/layer/Base';\n\n/**\n * Legend component handle the opacity of the layer\n */\n@Component({\n  selector: 'n52-ol-layer-opacitiy-slider',\n  templateUrl: './ol-layer-opacitiy-slider.component.html',\n  imports: [FormsModule],\n})\nexport class OlLayerOpacitiySliderComponent implements OnInit, DoCheck {\n  readonly layer = input.required<BaseLayer>();\n\n  opacity: number | undefined;\n\n  constructor() {}\n\n  ngOnInit(): void {\n    this.opacity = this.layer().getOpacity() * 100;\n  }\n\n  ngDoCheck() {\n    const o = this.layer().getOpacity() * 100;\n    if (this.layer() && o !== this.opacity) {\n      this.opacity = o;\n    }\n  }\n\n  setOpacity(o: number) {\n    this.opacity = o;\n    const layer = this.layer();\n    if (layer) {\n      layer.setOpacity(this.opacity / 100);\n    }\n  }\n}\n","<input\n  name=\"ram\"\n  type=\"range\"\n  min=\"0\"\n  max=\"100\"\n  [(ngModel)]=\"opacity\"\n  (ngModelChange)=\"setOpacity($event)\"\n  value=\"0\"\n/>\n","import { Component, OnInit, inject, input } from '@angular/core';\nimport { Layer } from 'ol/layer';\nimport { TileWMS } from 'ol/source';\n\nimport { WmsCapabilitiesService } from '../../../services/wms-capabilities.service';\n\n/**\n * Legend component to display the title, gathered by the WMS capabilities\n */\n@Component({\n  selector: 'n52-ol-layer-title',\n  templateUrl: './ol-layer-title.component.html',\n  standalone: true,\n})\nexport class OlLayerTitleComponent implements OnInit {\n  private wmsCaps = inject(WmsCapabilitiesService);\n\n  readonly layer = input.required<Layer>();\n\n  title: string | undefined;\n\n  ngOnInit() {\n    const source = this.layer().getSource();\n    this.layer().getExtent();\n    if (source instanceof TileWMS && source.getUrls()?.length) {\n      const url = source.getUrls()![0];\n      const layerid =\n        source.getParams()['layers'] || source.getParams()['LAYERS'];\n      this.wmsCaps\n        .getTitle(layerid, url)\n        .subscribe((res) => (this.title = res));\n    }\n  }\n}\n","<span>{{ title }}</span>\n","import { Component, input } from '@angular/core';\nimport BaseLayer from 'ol/layer/Base';\n\n/**\n * Legend component to toggle the visibility\n */\n@Component({\n  selector: 'n52-ol-layer-visibility-toggler',\n  templateUrl: './ol-layer-visibility-toggler.component.html',\n  standalone: true,\n})\nexport class OlLayerVisibilityTogglerComponent {\n  readonly layer = input.required<BaseLayer>();\n\n  toggleVisibility() {\n    this.layer().setVisible(!this.layer().getVisible());\n  }\n}\n","<span (click)=\"toggleVisibility()\">{{ layer().getVisible() }}</span>\n","import { Injectable } from '@angular/core';\nimport { Map } from 'ol';\nimport { Observable, of, Subject } from 'rxjs';\n\n/**\n * Service which holds all generated maps and their ids\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class OlMapService {\n  private map: { [key: string]: any } = {};\n\n  /**\n   * Saves id and corresponding map\n   *\n   * @param mapId\n   * @param map\n   */\n  setMap(mapId: string, map: Map) {\n    if (this.map[mapId] instanceof Subject) {\n      const subject = this.map[mapId] as Subject<Map>;\n      subject.next(map);\n      subject.complete();\n    }\n    this.map[mapId] = map;\n  }\n\n  /**\n   * Delivers the corresponding map as observable to the id\n   *\n   * @param mapId\n   * @returns the map as observable\n   */\n  getMap(mapId: string): Observable<Map> {\n    if (this.map[mapId]) {\n      if (this.map[mapId] instanceof Subject) {\n        return this.map[mapId];\n      } else {\n        return of(this.map[mapId]);\n      }\n    } else {\n      this.map[mapId] = new Subject<Map>();\n      return this.map[mapId];\n    }\n  }\n\n  /**\n   * Removes the map to the given map id\n   *\n   * @param id\n   */\n  removeMap(id: string): void {\n    if (this.map[id]) {\n      delete this.map[id];\n    }\n  }\n}\n","import { Component, OnInit, inject, input } from '@angular/core';\nimport { View } from 'ol';\nimport BaseLayer from 'ol/layer/Base';\nimport Layer from 'ol/layer/Layer';\nimport { transformExtent } from 'ol/proj';\nimport { TileWMS } from 'ol/source';\n\nimport { OlMapService } from '../../../services/map.service';\nimport { WmsCapabilitiesService } from '../../../services/wms-capabilities.service';\n\n/**\n * Legend component to gather the layer extent by the WMS capabilities and provide the ability to zoom to the extent\n */\n@Component({\n  selector: 'n52-ol-layer-zoom-extent',\n  templateUrl: './ol-layer-zoom-extent.component.html',\n  standalone: true,\n})\nexport class OlLayerZoomExtentComponent implements OnInit {\n  private wmsCaps = inject(WmsCapabilitiesService);\n  private mapServices = inject(OlMapService);\n\n  readonly layer = input.required<BaseLayer>();\n\n  /**\n   * corresponding map id\n   */\n  readonly mapId = input.required<string>();\n\n  private extent: number[] | undefined;\n  private crs: string | undefined;\n  private view: View | undefined;\n\n  ngOnInit() {\n    const layer = this.layer();\n    if (layer.getExtent()) {\n      this.extent = layer.getExtent();\n    } else if (layer instanceof Layer) {\n      const source = layer.getSource();\n      layer.getExtent();\n      if (source instanceof TileWMS && source.getUrls()?.length) {\n        const url = source.getUrls()![0];\n        this.mapServices.getMap(this.mapId()).subscribe((map) => {\n          this.view = map.getView();\n          const epsgCode = this.view.getProjection().getCode();\n          const layerid =\n            source.getParams()['layers'] || source.getParams()['LAYERS'];\n          this.wmsCaps.getExtent(layerid, url, epsgCode).subscribe((res) => {\n            if (res) {\n              this.extent = res.extent;\n              this.crs = res.crs;\n            }\n          });\n        });\n      }\n    }\n  }\n\n  zoomToExtent() {\n    if (this.extent && this.view) {\n      if (!this.crs) {\n        this.view.fit(this.extent);\n      } else {\n        const transformation = transformExtent(\n          this.extent,\n          this.crs,\n          this.view.getProjection().getCode(),\n        );\n        this.view.fit(transformation);\n      }\n    }\n  }\n}\n","<span (click)=\"zoomToExtent()\">Zoom to extent</span>\n","import { Injectable } from '@angular/core';\nimport { Observable, of, Subject } from 'rxjs';\n\n/**\n * Service to hold the corresponding map id\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class OlMapId {\n  private id: string | undefined;\n\n  private subject: Subject<string> = new Subject();\n\n  /**\n   * Returns the map id in an observable\n   *\n   * @returns Observable of the map id\n   */\n  getId(): Observable<string> {\n    return this.id ? of(this.id) : this.subject;\n  }\n\n  /**\n   * Sets the map id\n   *\n   * @param id the map id\n   */\n  setId(id: string) {\n    this.id = id;\n    this.subject.next(id);\n    this.subject.complete();\n  }\n}\n","import { AfterViewInit, Directive, inject } from '@angular/core';\nimport Map from 'ol/Map.js';\n\nimport { OlMapService } from './services/map.service';\nimport { OlMapId } from './services/mapid.service';\n\n/**\n * Defines an abstract class, which must be implemented by every additional component\n */\n@Directive()\nexport abstract class OlBaseComponent implements AfterViewInit {\n  protected mapService = inject(OlMapService);\n  protected mapidService = inject(OlMapId, { host: true });\n\n  /**\n   * Subscribes for the initialization of the map after view is initialized\n   */\n  ngAfterViewInit(): void {\n    this.mapidService\n      .getId()\n      .subscribe((id) =>\n        this.mapService.getMap(id).subscribe((map) => this.mapInitialized(map)),\n      );\n  }\n\n  /**\n   * This method will be triggered, when the corrsponding map is initialized.\n   * @abstract\n   * @param {Map} map - the created map\n   */\n  abstract mapInitialized(map: Map): void;\n}\n","import { Component, ElementRef, inject, input } from '@angular/core';\nimport { Map } from 'ol';\nimport { MousePosition } from 'ol/control';\nimport { createStringXY } from 'ol/coordinate';\n\nimport { OlBaseComponent } from '../../ol-base.component';\n\n/**\n * Control component to show the coordinates at the mouse position\n */\n@Component({\n  selector: 'n52-ol-mouse-position',\n  template: '',\n  standalone: true,\n})\nexport class OlMousePositionComponent extends OlBaseComponent {\n  private elementRef = inject(ElementRef);\n\n  readonly projection = input('EPSG:3857');\n\n  mapInitialized(map: Map) {\n    const target = this.elementRef.nativeElement.parentElement\n      ? this.elementRef.nativeElement\n      : null;\n    const ctrl = new MousePosition({\n      coordinateFormat: createStringXY(4),\n      projection: this.projection(),\n      undefinedHTML: '&nbsp;',\n      target: target,\n    });\n    map.addControl(ctrl);\n  }\n}\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport { Map } from 'ol';\nimport { OverviewMap } from 'ol/control';\nimport { Layer } from 'ol/layer';\n\nimport { OlBaseComponent } from '../../ol-base.component';\n\n/**\n * Control component for an overview map\n */\n@Component({\n  selector: 'n52-ol-overview-map',\n  template: '',\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: ['ol-overview-map.component.scss'],\n  standalone: true,\n})\nexport class OlOverviewMapComponent extends OlBaseComponent {\n  /**\n   * Collapsed on startup\n   */\n  readonly collased = input(true);\n\n  /**\n   * Can be collapsed\n   */\n  readonly collapsible = input(true);\n\n  /**\n   * Layers, which are shown in the overview map\n   */\n  readonly layers = input<Layer[]>([]);\n\n  /**\n   * position of the overview map\n   */\n  readonly position = input<\n    'upperleft' | 'upperright' | 'bottomleft' | 'bottomright'\n  >('bottomleft');\n\n  mapInitialized(map: Map) {\n    const control = new OverviewMap({\n      className: this.generateClassName(),\n      collapseLabel: this.createCollapseLabel(),\n      label: this.createLabel(),\n      collapsed: this.collased(),\n      collapsible: this.collapsible(),\n      layers: this.layers(),\n    });\n    map.addControl(control);\n  }\n\n  private createLabel(): string {\n    const position = this.position();\n    if (position === 'bottomright' || position === 'upperright') {\n      return '\\u00AB';\n    } else {\n      return '\\u00BB';\n    }\n  }\n\n  private createCollapseLabel(): string {\n    const position = this.position();\n    if (position === 'bottomright' || position === 'upperright') {\n      return '\\u00BB';\n    } else {\n      return '\\u00AB';\n    }\n  }\n\n  generateClassName(): string {\n    return `ol-overviewmap ol-custom-overviewmap ol-${this.position()}-overviewmap`;\n  }\n}\n","import {\n  AfterViewInit,\n  Component,\n  OnChanges,\n  SimpleChanges,\n  input,\n} from '@angular/core';\nimport { Map } from 'ol';\nimport BaseLayer from 'ol/layer/Base';\n\nimport { OlBaseComponent } from '../../ol-base.component';\n\n/**\n * Component to configure an additional layer to the map. The component must be embedded as seen in the example\n *\n * @example\n * <n52-ol-map>\n *     <n52-ol-layer></n52-ol-layer>\n * </n52-ol-map>\n */\n@Component({\n  selector: 'n52-ol-layer',\n  template: '',\n  standalone: true,\n})\nexport class OlLayerComponent\n  extends OlBaseComponent\n  implements AfterViewInit, OnChanges\n{\n  /**\n   * Configured layer\n   */\n  readonly layer = input.required<BaseLayer>();\n\n  private map!: Map;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes && this.layer()) {\n      this.addLayer();\n    }\n  }\n\n  mapInitialized(map: Map) {\n    this.map = map;\n    this.addLayer();\n  }\n\n  private addLayer() {\n    const layer = this.layer();\n    if (this.map && layer) {\n      this.map.addLayer(layer);\n    }\n  }\n}\n","import { Component, inject, output, input } from '@angular/core';\nimport {\n  HelgolandParameterFilter,\n  HelgolandPlatform,\n  HelgolandServicesConnector,\n} from '@helgoland/core';\nimport { Feature, Map } from 'ol';\nimport { unlistenByKey } from 'ol/events';\nimport { click, pointerMove } from 'ol/events/condition';\nimport { extend } from 'ol/extent';\nimport { FeatureLike } from 'ol/Feature';\nimport Point from 'ol/geom/Point';\nimport { Select } from 'ol/interaction.js';\nimport VectorLayer from 'ol/layer/Vector';\nimport { Cluster } from 'ol/source';\nimport VectorSource from 'ol/source/Vector';\nimport { Circle, Fill, Stroke, Style, Text } from 'ol/style';\n\nimport { OlBaseComponent } from '../../ol-base.component';\n\n/**\n * Component to display station based on the input parameters. The component must be embedded as seen in the example:\n *\n * @example\n * <n52-ol-map>\n *     <n52-ol-station-selector-layer [serviceUrl]=\"serviceUrl\" [filter]=\"filter\"></n52-ol-station-selector-layer>\n * </n52-ol-map>\n */\n@Component({\n  selector: 'n52-ol-station-selector-layer',\n  template: '',\n  standalone: true,\n})\nexport class OlStationSelectorLayerComponent extends OlBaseComponent {\n  protected servicesConnector = inject(HelgolandServicesConnector);\n\n  /**\n   * The serviceUrl, where the selection should be loaded.\n   */\n  readonly serviceUrl = input.required<string>();\n\n  /**\n   * The filter which should be used, while fetching the selection.\n   */\n  readonly filter = input<HelgolandParameterFilter>();\n\n  /**\n   * Zoom to the stations after collected and displayed\n   */\n  readonly zoomToResult = input(true);\n\n  /**\n   * Cluster stations\n   */\n  readonly cluster = input(true);\n\n  /**\n   * Inform, when a station is selected\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  readonly onSelected = output<HelgolandPlatform>();\n\n  /**\n   * Inform, while stations are loaded\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  readonly onContentLoading = output<boolean>();\n\n  /**\n   * Inform, when no stations are found\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  readonly onNoResultsFound = output<boolean>();\n\n  private map!: Map;\n\n  private layer!: VectorLayer;\n\n  mapInitialized(map: Map) {\n    this.map = map;\n    this.drawGeometries();\n  }\n\n  private drawGeometries() {\n    // TODO: on filter changes\n    // TODO: draw marker for results\n    this.createStationGeometries();\n  }\n\n  private createStationGeometries() {\n    this.servicesConnector\n      .getPlatforms(this.serviceUrl(), this.filter())\n      .subscribe((stations) => {\n        const features: Feature[] = this.createFeatureList(stations);\n\n        this.createLayer(features);\n\n        this.createHoverInteraction();\n\n        this.createClickInteraction();\n\n        if (this.zoomToResult()) {\n          this.zoomToFeatures(features);\n        }\n      });\n  }\n\n  private createLayer(features: Feature[]) {\n    if (this.cluster()) {\n      this.layer = new VectorLayer({\n        source: new Cluster({\n          distance: 100,\n          source: new VectorSource({\n            features,\n          }),\n        }),\n        style: (feature) => this.styleClusterLayer(feature),\n      });\n    } else {\n      this.layer = new VectorLayer({\n        source: new VectorSource({\n          features,\n        }),\n        style: () => this.createMarkerStyle(),\n      });\n    }\n    this.map.addLayer(this.layer);\n  }\n\n  private createFeatureList(stations: HelgolandPlatform[]) {\n    const features: Feature[] = [];\n    stations.forEach((st) => {\n      // TODO: add to service\n      if (st.geometry?.type === 'Point') {\n        const point = new Point(st.geometry.coordinates);\n        point.transform('EPSG:4326', this.map.getView().getProjection());\n        const feature = new Feature(point);\n        feature.set('station', st, true);\n        features.push(feature);\n      }\n    });\n    return features;\n  }\n\n  private createHoverInteraction() {\n    if (this.cluster()) {\n      const hoverSelect = new Select({\n        condition: pointerMove,\n        style: (feature) => this.styleClusterLayer(feature),\n        layers: [this.layer],\n      });\n\n      hoverSelect.on('select', (evt) => {\n        if (evt.selected.length >= 1) {\n          const temp = hoverSelect.getFeatures().on('remove', () => {\n            unlistenByKey(temp);\n          });\n        }\n      });\n      this.map.addInteraction(hoverSelect);\n    }\n  }\n\n  private createClickInteraction() {\n    const clickSelect = new Select({\n      condition: click,\n      style: (feature) =>\n        this.cluster()\n          ? this.styleClusterLayer(feature)\n          : this.createMarkerStyle(),\n      layers: [this.layer],\n    });\n    clickSelect.on('select', (evt) => {\n      if (evt.selected.length >= 1) {\n        if (evt.selected[0].getProperties()['station']) {\n          this.onSelected.emit(evt.selected[0].getProperties()['station']);\n        } else {\n          const selectedFeatures = evt.selected[0].getProperties()['features'];\n          if (selectedFeatures.length > 1) {\n            clickSelect.getFeatures().clear();\n            setTimeout(() => {\n              this.zoomToFeatures(selectedFeatures);\n            }, 10);\n          } else if (selectedFeatures.length === 1) {\n            this.onSelected.emit(selectedFeatures[0].getProperties().station);\n          }\n        }\n      }\n    });\n    this.map.addInteraction(clickSelect);\n  }\n\n  private styleClusterLayer(feature: FeatureLike): Style | Style[] {\n    const size = feature.get('features').length;\n    if (size > 1) {\n      return this.createClusterStyle(size);\n    } else {\n      return this.createMarkerStyle();\n    }\n  }\n\n  private createClusterStyle(size: number) {\n    const color =\n      size > 25 ? '248, 128, 0' : size > 8 ? '248, 192, 0' : '128, 192, 64';\n    const radius = Math.max(8, Math.min(size * 0.75, 20));\n    return [\n      new Style({\n        image: new Circle({\n          radius: radius + 2,\n          stroke: new Stroke({\n            color: 'rgba(' + color + ',0.3)',\n            width: 4,\n          }),\n        }),\n      }),\n      new Style({\n        image: new Circle({\n          radius: radius,\n          fill: new Fill({\n            color: 'rgba(' + color + ',0.6)',\n          }),\n        }),\n        text: new Text({\n          text: size.toString(),\n          fill: new Fill({\n            color: '#000',\n          }),\n        }),\n      }),\n    ];\n  }\n\n  private zoomToFeatures(features: Feature[]) {\n    if (features.length > 0 && features[0].getGeometry()) {\n      const extent = features[0].getGeometry()!.getExtent().slice(0);\n      features.forEach((f) => extend(extent, f.getGeometry()!.getExtent()));\n      this.map.getView().fit(extent, { duration: 300 });\n    }\n  }\n\n  private createMarkerStyle(): Style {\n    return new Style({\n      image: new Circle({\n        radius: 6,\n        fill: new Fill({\n          color: 'blue',\n        }),\n      }),\n    });\n  }\n}\n","import {\n  AfterViewInit,\n  Component,\n  ViewEncapsulation,\n  inject,\n  input,\n} from '@angular/core';\nimport { View } from 'ol';\nimport { Control } from 'ol/control';\nimport Attribution from 'ol/control/Attribution';\nimport Zoom from 'ol/control/Zoom';\nimport TileLayer from 'ol/layer/Tile';\nimport Map from 'ol/Map';\nimport { fromLonLat } from 'ol/proj';\nimport OSM from 'ol/source/OSM';\n\nimport { OlMapService } from '../services/map.service';\nimport { OlMapId } from '../services/mapid.service';\n\n/**\n * Basic open layers map component, which creates a map with an OSM layer as first base layer.\n */\n@Component({\n  selector: 'n52-ol-map',\n  template: '<div class=\"map\" [attr.id]=\"mapId()\"></div>',\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: [\n    '../../../../../../node_modules/ol/ol.css',\n    'ol-map.component.scss',\n  ],\n  providers: [OlMapId],\n  standalone: true,\n})\nexport class OlMapComponent implements AfterViewInit {\n  private mapService = inject(OlMapService);\n  private mapid = inject(OlMapId);\n\n  /**\n   * The map id, to reference this map outside of this component. If no id is given, a unique one is generated\n   */\n  readonly mapId = input.required<string>();\n\n  /**\n   * Longitude to center the map\n   */\n  readonly lon = input(0);\n\n  /**\n   * Latitude to center the map\n   */\n  readonly lat = input(0);\n\n  /**\n   * Zoom level of the map\n   */\n  readonly zoom = input(1);\n\n  /**\n   * Projection of the map\n   */\n  readonly projection = input('EPSG:3857');\n\n  /**\n   * Should the zoom controls be visible on the map\n   */\n  readonly showZoomControl = input(true);\n\n  /**\n   * Should the attribution label be visible on the map\n   */\n  readonly showAttributionControl = input(true);\n\n  private map!: Map;\n\n  ngAfterViewInit(): void {\n    const controls: Control[] = [];\n    if (this.showZoomControl()) {\n      controls.push(new Zoom());\n    }\n    if (this.showAttributionControl()) {\n      controls.push(new Attribution());\n    }\n\n    const center = fromLonLat([this.lon(), this.lat()]);\n    this.map = new Map({\n      layers: [new TileLayer({ source: new OSM() })],\n      controls: controls,\n      target: this.mapId(),\n      view: new View({\n        projection: this.projection(),\n        center: center,\n        zoom: this.zoom(),\n      }),\n    });\n    const mapId = this.mapId();\n    this.mapService.setMap(mapId, this.map);\n    this.mapid.setId(mapId);\n  }\n\n  private generateUUID(): string {\n    function s4() {\n      return Math.floor((1 + Math.random()) * 0x10000)\n        .toString(16)\n        .substring(1);\n    }\n    return (\n      s4() +\n      s4() +\n      '-' +\n      s4() +\n      '-' +\n      s4() +\n      '-' +\n      s4() +\n      '-' +\n      s4() +\n      s4() +\n      s4()\n    );\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { HelgolandCoreModule } from '@helgoland/core';\n\nimport { OlLayerAbstractComponent } from './controls/legend/ol-layer-abstract/ol-layer-abstract.component';\nimport { OlLayerAnimateTimeComponent } from './controls/legend/ol-layer-animate-time/ol-layer-animate-time.component';\nimport { OlLayerLegendUrlComponent } from './controls/legend/ol-layer-legend-url/ol-layer-legend-url.component';\nimport { OlLayerOpacitiySliderComponent } from './controls/legend/ol-layer-opacitiy-slider/ol-layer-opacitiy-slider.component';\nimport { OlLayerTimeSelectorComponent } from './controls/legend/ol-layer-time-selector/ol-layer-time-selector.component';\nimport { OlLayerTitleComponent } from './controls/legend/ol-layer-title/ol-layer-title.component';\nimport { OlLayerVisibilityTogglerComponent } from './controls/legend/ol-layer-visibility-toggler/ol-layer-visibility-toggler.component';\nimport { OlLayerZoomExtentComponent } from './controls/legend/ol-layer-zoom-extent/ol-layer-zoom-extent.component';\nimport { OlMousePositionComponent } from './controls/ol-mouse-position/ol-mouse-position.component';\nimport { OlOverviewMapComponent } from './controls/ol-overview-map/ol-overview-map.component';\nimport { OlLayerComponent } from './layers/ol-layer/ol-layer.component';\nimport { OlStationSelectorLayerComponent } from './layers/ol-station-selector-layer/ol-station-selector-layer.component';\nimport { OlMapComponent } from './ol-map/ol-map.component';\n\nconst COMPONENTS = [\n  OlLayerAbstractComponent,\n  OlLayerAnimateTimeComponent,\n  OlLayerComponent,\n  OlLayerLegendUrlComponent,\n  OlLayerOpacitiySliderComponent,\n  OlLayerTimeSelectorComponent,\n  OlLayerTitleComponent,\n  OlLayerVisibilityTogglerComponent,\n  OlLayerZoomExtentComponent,\n  OlMapComponent,\n  OlMousePositionComponent,\n  OlOverviewMapComponent,\n  OlStationSelectorLayerComponent,\n];\n\n/**\n * The open layers module includes the following functionality:\n * - open-layers map component and different control components\n */\n@NgModule({\n  exports: COMPONENTS,\n  imports: [CommonModule, FormsModule, HelgolandCoreModule, ...COMPONENTS],\n})\nexport class HelgolandOpenLayersModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}