{"version":3,"file":"hslayers-ng-components-add-data.mjs","sources":["../../../projects/hslayers/components/add-data/catalogue/catalogue-metadata/catalogue-metadata.component.ts","../../../projects/hslayers/components/add-data/catalogue/catalogue-metadata/catalogue-metadata.component.html","../../../projects/hslayers/components/add-data/catalogue/catalogue-metadata/catalogue-metadata.service.ts","../../../projects/hslayers/components/add-data/catalogue/catalogue-list-item/catalogue-list-item.component.ts","../../../projects/hslayers/components/add-data/catalogue/catalogue-list-item/catalogue-list-item.component.html","../../../projects/hslayers/components/add-data/catalogue/catalogue.component.ts","../../../projects/hslayers/components/add-data/catalogue/catalogue.component.html","../../../projects/hslayers/components/add-data/common/add-layer-authorized/add-layer-authorized.component.ts","../../../projects/hslayers/components/add-data/common/add-layer-authorized/add-layer-authorized.component.html","../../../projects/hslayers/components/add-data/common/target-position/target-position.component.ts","../../../projects/hslayers/components/add-data/common/target-position/target-position.component.html","../../../projects/hslayers/components/add-data/common/advanced-options/advanced-options.component.ts","../../../projects/hslayers/components/add-data/common/advanced-options/advanced-options.component.html","../../../projects/hslayers/components/add-data/file/file.service.ts","../../../projects/hslayers/components/add-data/enums/load-types.const.ts","../../../projects/hslayers/components/add-data/common/save-to-layman/save-to-layman.component.ts","../../../projects/hslayers/components/add-data/common/save-to-layman/save-to-layman.component.html","../../../projects/hslayers/components/add-data/common/new-layer-form/new-layer-form.component.ts","../../../projects/hslayers/components/add-data/common/new-layer-form/new-layer-form.component.html","../../../projects/hslayers/components/add-data/common/common.module.ts","../../../projects/hslayers/components/add-data/common/url/add/add.component.ts","../../../projects/hslayers/components/add-data/common/url/add/add.component.html","../../../projects/hslayers/components/add-data/common/url/add-as-toggle/add-as-toggle.component.ts","../../../projects/hslayers/components/add-data/common/url/details/details.component.ts","../../../projects/hslayers/components/add-data/common/url/details/details.component.html","../../../projects/hslayers/components/add-data/common/url/progress/progress.component.ts","../../../projects/hslayers/components/add-data/common/url/progress/progress.component.html","../../../projects/hslayers/components/add-data/common/url/url.component.ts","../../../projects/hslayers/components/add-data/common/url/url.component.html","../../../projects/hslayers/components/add-data/common/url/url.module.ts","../../../projects/hslayers/components/add-data/file/file-type-values.ts","../../../projects/hslayers/components/add-data/file/file-base.component.ts","../../../projects/hslayers/components/add-data/file/shp/shp.component.ts","../../../projects/hslayers/components/add-data/file/shp/shp.component.html","../../../projects/hslayers/components/add-data/vector/vector-file/vector-file.component.ts","../../../projects/hslayers/components/add-data/vector/vector-file/vector-file.component.html","../../../projects/hslayers/components/add-data/file/raster/raster-timeseries/raster-timeseries.component.ts","../../../projects/hslayers/components/add-data/file/raster/raster-timeseries/raster-timeseries.component.html","../../../projects/hslayers/components/add-data/file/raster/raster.component.ts","../../../projects/hslayers/components/add-data/file/raster/raster.component.html","../../../projects/hslayers/components/add-data/file/file.component.ts","../../../projects/hslayers/components/add-data/file/file.component.html","../../../projects/hslayers/components/add-data/vector/vector-url/vector-url.component.ts","../../../projects/hslayers/components/add-data/vector/vector-url/vector-url.component.html","../../../projects/hslayers/components/add-data/vector/vector.module.ts","../../../projects/hslayers/components/add-data/file/raster/raster.module.ts","../../../projects/hslayers/components/add-data/file/shp/shp.module.ts","../../../projects/hslayers/components/add-data/file/file.module.ts","../../../projects/hslayers/components/add-data/url/arcgis/arcgis.component.ts","../../../projects/hslayers/components/add-data/url/arcgis/arcgis.component.html","../../../projects/hslayers/components/add-data/url/arcgis/arcgis.module.ts","../../../projects/hslayers/components/add-data/url/wfs/wfs.component.ts","../../../projects/hslayers/components/add-data/url/wfs/wfs.component.html","../../../projects/hslayers/components/add-data/url/wfs/wfs.module.ts","../../../projects/hslayers/components/add-data/url/wms/wms.component.ts","../../../projects/hslayers/components/add-data/url/wms/wms.component.html","../../../projects/hslayers/components/add-data/url/wms/wms.module.ts","../../../projects/hslayers/components/add-data/url/wmts/wmts.component.ts","../../../projects/hslayers/components/add-data/url/wmts/wmts.component.html","../../../projects/hslayers/components/add-data/url/wmts/wmts.module.ts","../../../projects/hslayers/components/add-data/url/add-data-url-values.ts","../../../projects/hslayers/components/add-data/url/geosparql/geosparql.service.ts","../../../projects/hslayers/components/add-data/url/geosparql/geosparql.component.ts","../../../projects/hslayers/components/add-data/url/geosparql/geosparql.component.html","../../../projects/hslayers/components/add-data/url/xyz/xyz.component.ts","../../../projects/hslayers/components/add-data/url/xyz/xyz.component.html","../../../projects/hslayers/components/add-data/url/add-data-url.component.ts","../../../projects/hslayers/components/add-data/url/add-data-url.component.html","../../../projects/hslayers/components/add-data/url/geosparql/geosparql.module.ts","../../../projects/hslayers/components/add-data/url/xyz/xyz.module.ts","../../../projects/hslayers/components/add-data/url/add-data-url.module.ts","../../../projects/hslayers/components/add-data/vector/vector-url-parser.service.ts","../../../projects/hslayers/components/add-data/add-data.component.ts","../../../projects/hslayers/components/add-data/add-data.component.html","../../../projects/hslayers/components/add-data/add-data.module.ts","../../../projects/hslayers/components/add-data/hslayers-ng-components-add-data.ts"],"sourcesContent":["import {Component, computed, input, ViewRef, inject} from '@angular/core';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {transform} from 'ol/proj';\n\nimport {\n  HsAddDataCatalogueMapService,\n  HsAddDataCatalogueService,\n} from 'hslayers-ng/services/add-data';\nimport {\n  HsAddDataLayerDescriptor,\n  WhatToAddDescriptor,\n  HsEndpoint,\n  HsAddDataLaymanLayerDescriptor,\n  HsAddDataMickaLayerDescriptor,\n} from 'hslayers-ng/types';\nimport {HsConfig} from 'hslayers-ng/config';\nimport {\n  HsDialogComponent,\n  HsDialogContainerService,\n} from 'hslayers-ng/common/dialogs';\nimport {HsUiExtensionsRecursiveDdComponent} from 'hslayers-ng/common/widgets';\nimport {HsMapService} from 'hslayers-ng/services/map';\n\n@Component({\n  selector: 'hs-catalogue-metadata',\n  templateUrl: './catalogue-metadata.component.html',\n  imports: [HsUiExtensionsRecursiveDdComponent, TranslatePipe],\n})\nexport class HsCatalogueMetadataComponent implements HsDialogComponent {\n  hsConfig = inject(HsConfig);\n  hsAddDataCatalogueService = inject(HsAddDataCatalogueService);\n  hsAddDataCatalogueMapService = inject(HsAddDataCatalogueMapService);\n  hsDialogContainerService = inject(HsDialogContainerService);\n  private hsMapService = inject(HsMapService);\n\n  data = input<{\n    selectedLayer: HsAddDataLayerDescriptor;\n    selectedDS: HsEndpoint;\n  }>();\n\n  selectedLayer = computed(() => this.data().selectedLayer);\n  selectedDS = computed(() => this.data().selectedDS);\n\n  endpointType = computed(() => this.selectedDS().type);\n\n  addAvailable = computed(() => {\n    const layer = this.selectedLayer();\n    const endpointType = this.endpointType();\n    return endpointType === 'micka' || layer.wfsWmsStatus === 'AVAILABLE';\n  });\n\n  availableTypes = computed(() => {\n    let types = [];\n    const layer = this.selectedLayer();\n    if (this.isMickaLayer(layer)) {\n      types = layer.links\n        .map((l) => {\n          return ['WMS', 'WFS'].some((t) => l.protocol.includes(t))\n            ? l.protocol.includes('WMS')\n              ? 'WMS'\n              : 'WFS'\n            : null;\n        })\n        .filter((type) => !!type);\n    } else {\n      types = layer.type;\n    }\n    return types.includes('WMS') ? [...types, 'WMTS'] : types;\n  });\n\n  metadataUrl = computed(() => {\n    const layer = this.selectedLayer();\n    if (this.isMickaLayer(layer)) {\n      return `${this.selectedDS().url.replace('csw', 'record/basic')}/${layer.id}`;\n    }\n    return layer.metadata.record_url;\n  });\n\n  bbox = computed(() => {\n    const layer = this.selectedLayer();\n    if (this.isLaymanLayer(layer)) {\n      return layer.bounding_box;\n    }\n    return layer.bbox;\n  });\n\n  viewRef: ViewRef;\n  excludedKeys: string[] = ['feature', 'thumbnail', 'endpoint'];\n\n  /**\n   * @param type - Type in which the layer shall be added (WMS, WFS, etc.)\n   */\n  async addLayerToMap(type: string): Promise<void> {\n    const ds = this.selectedDS();\n    const layer = this.selectedLayer();\n\n    const whatToAdd =\n      await this.hsAddDataCatalogueService.describeCatalogueLayer(ds, layer);\n    whatToAdd.type = type === 'WMS' || type === 'WMTS' ? 'WMS' : type;\n    this.hsAddDataCatalogueService.addLayerToMap(\n      ds,\n      whatToAdd as WhatToAddDescriptor<string>,\n      {\n        useTiles: type === 'WMTS',\n      },\n    );\n    this.close();\n  }\n\n  private isMickaLayer(\n    layer: HsAddDataLayerDescriptor,\n  ): layer is HsAddDataMickaLayerDescriptor {\n    return 'links' in layer && Array.isArray(layer.links);\n  }\n\n  private isLaymanLayer(\n    layer: HsAddDataLayerDescriptor,\n  ): layer is HsAddDataLaymanLayerDescriptor {\n    return 'native_bounding_box' in layer;\n  }\n\n  close(): void {\n    this.hsDialogContainerService.destroy(this);\n  }\n\n  /**\n   * ZoomTo to selected layer overview\n   * Micka layers bbox is defined in EPSG:4326\n   * Layman layers bbox is defined in EPSG:3857 (using bounding_box property)\n   */\n  zoomTo(): void {\n    const b = this.bbox();\n    if (!b) {\n      return;\n    }\n    let first_pair = [b[0], b[1]];\n    let second_pair = [b[2], b[3]];\n\n    const currentProjection = this.hsMapService\n      .getMap()\n      .getView()\n      .getProjection();\n    const sourceProjection = this.isLaymanLayer(this.selectedLayer())\n      ? 'EPSG:3857'\n      : 'EPSG:4326';\n    first_pair = transform(first_pair, sourceProjection, currentProjection);\n    second_pair = transform(second_pair, sourceProjection, currentProjection);\n\n    if (first_pair.some(isNaN) || second_pair.some(isNaN)) {\n      return;\n    }\n    const extent = [\n      first_pair[0],\n      first_pair[1],\n      second_pair[0],\n      second_pair[1],\n    ];\n    this.hsMapService.fitExtent(extent);\n  }\n}\n","<div class=\"modal in hs-datasource_selector-metadata-dialog\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n  <div class=\"modal-dialog modal-lg\">\n    <div class=\"modal-content\">\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title\">\n          {{'DATASOURCE_SELECTOR.metadataFor' | translate }} {{ selectedLayer().title}}\n        </h4>\n        <button type=\"button\" (click)=\"close()\" class=\"btn-close\" data-dismiss=\"modal\"\n          [attr.aria-label]=\"'COMMON.close' | translate \"></button>\n      </div>\n      <div class=\"modal-body\" style=\"max-height:400px; overflow-y:auto\">\n        @if (selectedLayer().thumbnail) {\n        <div class=\"bg-light mb-3 text-center\">\n          <img [src]=\"selectedLayer().thumbnail.url\" class=\"img-fluid\" alt=\"Thumbnail\">\n        </div>\n        }\n        <hs-widgets-recursive-dd [value]=\"selectedLayer()\" [firstLevel]=\"true\" [excludeKeys]=\"excludedKeys\">\n        </hs-widgets-recursive-dd>\n      </div>\n      <div class=\"modal-footer\">\n        @if (addAvailable()) {\n        <div class=\"d-flex\">\n          @for (type of availableTypes(); track type) {\n          <button type=\"button\" class=\"btn btn-primary ms-2 d-flex gap-2 align-items-center\"\n            (click)=\"addLayerToMap(type)\" data-dismiss=\"modal\">\n            <span class=\"fa-solid fa-plus\"></span><span>{{'DATASOURCE_SELECTOR.addToMapAs' | translate }}\n              {{type}}</span>\n          </button>\n          }\n        </div>\n        }\n        <div class=\"d-flex w-100 justify-content-between\">\n          @if (metadataUrl()) {\n          <a target=\"_blank\" [href]=\"metadataUrl()\" class=\"btn btn-primary\"\n            (click)=\"close()\">{{'DATASOURCE_SELECTOR.seeFullRecord' | translate}} <i\n              class=\"fa-solid fa-up-right-from-square\"></i></a>\n          }\n          <div class=\"d-flex gap-2\">\n            <a role=\"button\" class=\"btn btn-success\"\n              [href]='hsAddDataCatalogueService.layerRDF(selectedDS(), selectedLayer())' data-toggle=\"tooltip\"\n              title=\"GeoDCAT-AP\" target=\"_blank\"\n              [hidden]='endpointType()!==\"micka\" || hsAddDataCatalogueService.layerRDF(selectedDS(), selectedLayer()) === \"#\"'>\n              <i class=\"fa-solid fa-share-nodes\"></i> RDF\n            </a><!-- TODO: Remove function call from template -->\n            <button type=\"button\" class=\"btn btn-success\" [hidden]=\"bbox() === undefined\"\n              (click)=\"zoomTo()\">{{'LAYERMANAGER.layerEditor.zoomToLayer'\n              |\n              translate }}</button>\n            <button type=\"button\" class=\"btn btn-secondary\" (click)=\"close()\" data-dismiss=\"modal\"\n              [title]=\"'COMMON.close' | translate \">\n              {{'COMMON.close' | translate }}\n            </button>\n          </div>\n        </div>\n\n      </div>\n    </div>\n  </div>\n</div>\n","import {Injectable} from '@angular/core';\nimport {isPOJO, structuredClone} from 'hslayers-ng/services/utils';\n\n@Injectable({providedIn: 'root'})\nexport class HsCatalogueMetadataService {\n  decomposeMetadata(input, prestring?: string): any {\n    if (isPOJO(input)) {\n      return this.decomposeObject(input, prestring);\n    }\n    if (Array.isArray(input)) {\n      return this.decomposeArray(input, prestring);\n    }\n    return false;\n  }\n\n  decomposeObject(obj, substring?: string): any {\n    let decomposed = {};\n    let subvalue = undefined;\n    Object.entries(obj).forEach((entry) => {\n      const [key, value] = entry;\n      if (key == 'feature') {\n        return;\n      }\n      let newstring = '';\n      if (substring !== undefined) {\n        newstring = substring + ' - ' + key;\n      } else {\n        newstring = key;\n      }\n      if (isPOJO(value)) {\n        subvalue = this.decomposeObject(value, newstring);\n      } else if (Array.isArray(value)) {\n        subvalue = this.decomposeArray(value, newstring);\n      } else {\n        subvalue = value;\n      }\n      if (isPOJO(subvalue)) {\n        decomposed = structuredClone(subvalue, decomposed);\n      } else {\n        decomposed[newstring] = subvalue;\n      }\n    });\n    return decomposed;\n  }\n\n  decomposeArray(arr: any[], substring: string): any {\n    let decomposed = undefined;\n    let sub: any = '';\n    arr.forEach((value) => {\n      if (isPOJO(value)) {\n        sub = this.decomposeObject(value, substring);\n      } else if (Array.isArray(value)) {\n        sub = this.decomposeArray(value, substring);\n      } else {\n        sub += value;\n      }\n      if (isPOJO(sub)) {\n        decomposed = structuredClone(sub, decomposed);\n      } else {\n        decomposed[substring] = sub;\n      }\n    });\n    return decomposed;\n  }\n}\n","import {Component, computed, input, inject} from '@angular/core';\nimport {NgClass, NgStyle} from '@angular/common';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {\n  HsAddDataCatalogueService,\n  HsLaymanBrowserService,\n} from 'hslayers-ng/services/add-data';\nimport {\n  HsAddDataLaymanLayerDescriptor,\n  HsAddDataLayerDescriptor,\n  HsEndpoint,\n  WhatToAddDescriptor,\n} from 'hslayers-ng/types';\nimport {HsCatalogueMetadataService} from '../catalogue-metadata/catalogue-metadata.service';\nimport {HsDialogContainerService} from 'hslayers-ng/common/dialogs';\nimport {HsLogService} from 'hslayers-ng/services/log';\nimport {HsRemoveLayerDialogService} from 'hslayers-ng/common/remove-multiple';\nimport {HsSetPermissionsDialogComponent} from 'hslayers-ng/common/dialog-set-permissions';\nimport {HsCommonLaymanService} from 'hslayers-ng/common/layman';\n\n@Component({\n  selector: 'hs-catalogue-list-item',\n  templateUrl: 'catalogue-list-item.component.html',\n  styles: [\n    `\n      .dropdown-toggle::after {\n        font-size: 1.25rem;\n        vertical-align: initial;\n      }\n    `,\n  ],\n  imports: [NgClass, NgStyle, TranslatePipe],\n})\nexport class HsCatalogueListItemComponent {\n  private hsDatasourcesMetadataService = inject(HsCatalogueMetadataService);\n  hsAddDataCatalogueService = inject(HsAddDataCatalogueService);\n  private hsDialogContainerService = inject(HsDialogContainerService);\n  private hsLaymanBrowserService = inject(HsLaymanBrowserService);\n  private hsLog = inject(HsLogService);\n  private hsRemoveLayerDialogService = inject(HsRemoveLayerDialogService);\n  private hsCommonLaymanService = inject(HsCommonLaymanService);\n\n  layer = input<HsAddDataLayerDescriptor>();\n\n  title = computed(() => this.layer().title);\n  abstract = computed(() => {\n    const layer = this.layer();\n    const hasAbstract = layer['abstract'];\n    return hasAbstract ? layer['abstract'] : '';\n  });\n\n  //** Layers wfsWmsStatus is AVAILABLE  */\n  layerAvailable = computed(() => {\n    const layer = this.layer();\n    return (\n      layer.endpoint.type === 'micka' || layer.wfsWmsStatus === 'AVAILABLE'\n    );\n  });\n\n  explanationsVisible: boolean;\n  metadata;\n  selectTypeToAddLayerVisible: boolean;\n  whatToAdd: WhatToAddDescriptor;\n  whatToAddTypes: string[];\n  loadingInfo = false;\n\n  loadingMetadata = false;\n\n  /**\n   * Toggle add layer options\n   */\n  toggleAddOptions() {\n    if (!this.selectTypeToAddLayerVisible) {\n      this.loadingInfo = true;\n      this.describeCatalogueLayer(this.layer().endpoint, this.layer());\n      return;\n    }\n    this.abortAdd();\n  }\n\n  /**\n   * Get layer descriptor, show available options or add to map directly if only WFS available\n   */\n  private async describeCatalogueLayer(\n    endpoint: HsEndpoint,\n    layer: HsAddDataLayerDescriptor,\n  ) {\n    this.whatToAdd =\n      await this.hsAddDataCatalogueService.describeCatalogueLayer(\n        endpoint,\n        layer,\n      );\n    this.loadingInfo = false;\n    let availableTypes = this.whatToAdd.type;\n\n    /**\n     * Layer is available only as a WFS or its service\n     */\n    if (this.whatToAdd.type === 'WFS' || layer.type.includes('service')) {\n      this.selectTypeAndAdd(\n        this.whatToAdd.type as string,\n        new MouseEvent('click'),\n      );\n    } else if (Array.isArray(availableTypes) || availableTypes == 'WMS') {\n      availableTypes =\n        availableTypes === 'WMS' ? [availableTypes] : availableTypes;\n      /**\n       * Add another type allowing user to choose image source type\n       */\n      if (availableTypes.includes('WMS')) {\n        availableTypes.splice(1, 0, 'WMTS');\n      }\n      this.whatToAddTypes = availableTypes;\n    }\n\n    this.selectTypeToAddLayerVisible = Array.isArray(availableTypes);\n    this.explanationsVisible = false;\n  }\n\n  abortAdd(): void {\n    this.selectTypeToAddLayerVisible = Array.isArray(this.whatToAddTypes);\n    this.explanationsVisible = false;\n  }\n\n  /**\n   * Add layer by type click wrapper. Prevents bubbling of DOM event\n   * @param type - One of 'WMS', 'WFS'\n   * @param event - Mouse click event\n   */\n  async selectTypeAndAdd(type: string, event: MouseEvent) {\n    event.preventDefault();\n    const layer = this.layer();\n    if (!this.whatToAdd) {\n      this.whatToAdd =\n        await this.hsAddDataCatalogueService.describeCatalogueLayer(\n          layer.endpoint,\n          layer,\n        );\n    }\n    if (!this.whatToAdd.type || this.whatToAdd.type === 'none') {\n      this.hsLog.error('Could not get catalogue layer descriptor!');\n      return;\n    }\n    this.whatToAdd.type = type === 'WMS' || type === 'WMTS' ? 'WMS' : type;\n    this.hsAddDataCatalogueService.addLayerToMap(\n      layer.endpoint,\n      this.whatToAdd as WhatToAddDescriptor<string>,\n      {\n        useTiles: type === 'WMTS',\n      },\n    );\n  }\n\n  toggleExplanations(): void {\n    this.explanationsVisible = !this.explanationsVisible;\n  }\n\n  /**\n   * Show metadata record dialog window for selected layer.\n   * @param endpoint - Datasource of selected layer\n   * @param layer - Metadata record of selected layer\n   */\n  async showMetadata(): Promise<void> {\n    const layer = this.layer();\n    const endpoint = layer.endpoint;\n    let layerWithMetadata;\n    if (endpoint.type.includes('layman')) {\n      this.loadingMetadata = true;\n      layerWithMetadata = await this.hsLaymanBrowserService.fillLayerMetadata(\n        endpoint,\n        layer as HsAddDataLaymanLayerDescriptor,\n      );\n    }\n    //this.metadata = this.hsDatasourcesMetadataService.decomposeMetadata(layer);\n    //console.log(this.metadata);\n    const {HsCatalogueMetadataComponent} = await import(\n      '../catalogue-metadata/catalogue-metadata.component'\n    );\n    this.hsDialogContainerService.create(HsCatalogueMetadataComponent, {\n      data: {\n        selectedLayer: layerWithMetadata || layer,\n        selectedDS: endpoint,\n      },\n      signalInput: true,\n    });\n    this.loadingMetadata = false;\n  }\n\n  /**\n   * Show permissions dialog window for selected layer.\n   * @param layer - Metadata record of selected layer\n   */\n  async showPermissions(): Promise<void> {\n    const layer = this.layer();\n    if (!this.hsCommonLaymanService.isAuthenticated()) {\n      return;\n    }\n    this.hsDialogContainerService.create(HsSetPermissionsDialogComponent, {\n      recordType: 'layer',\n      selectedRecord: layer,\n      onPermissionSaved: {\n        service: this.hsAddDataCatalogueService,\n        method: 'reloadData',\n      },\n    });\n  }\n\n  /**\n   * @param endpoint - Datasource of selected layer\n   * @param layer - Metadata record of selected layer\n   * @returns URL to record file\n   */\n\n  layerRDF(endpoint: HsEndpoint, layer): string {\n    return this.hsAddDataCatalogueService.layerRDF(endpoint, layer);\n  }\n\n  /**\n   * Removes selected drawing layer from both Layermanager and Layman\n   * @param layer - Metadata record of selected layer\n   */\n  async removeLayer(): Promise<void> {\n    const layer = this.layer();\n    if (!layer.editable) {\n      return;\n    }\n\n    const confirmed = await this.hsRemoveLayerDialogService.removeLayer(\n      layer.name,\n      ['catalogue'],\n    );\n    if (confirmed) {\n      this.hsAddDataCatalogueService.catalogEntries =\n        this.hsAddDataCatalogueService.catalogEntries.filter((item) => {\n          return item.id != layer.id;\n        });\n    }\n  }\n}\n","@let editable = layer().editable;\n@let layerIsAvailable = layerAvailable();\n<div class=\"d-flex flex-column\" [class.disabled]=\"!layerIsAvailable\">\n  <div style=\" display: flex; justify-content: space-between;\">\n    <a class=\"hs-catalogue-list-item-title\" data-toggle=\"tooltip\" [title]=\"abstract()\">{{title() ||\n      abstract()}}</a>\n    <!-- STATUS BADGE -->\n    @if (loadingMetadata) {\n    <span class=\"pe-2 hs-loader hs-loader-dark\"></span>\n    }\n    @if (!layerIsAvailable) {\n    <span class=\"badge rounded-pill w-auto\" [class.bg-danger]=\"layer().wfsWmsStatus === 'NOT_AVAILABLE'\"\n      [class.bg-warning]=\"layer().wfsWmsStatus === 'PREPARING'\"> {{'COMMON.' + layer().wfsWmsStatus | translate\n      }}</span>\n    }\n  </div>\n  @if (hsAddDataCatalogueService.selectedLayer?.id === layer().id) {\n  <div class=\"hs-catalogue-item-body d-flex flex-column w-100 justify-content-around mt-2\">\n    <div class=\"d-flex flex-row justify-content-around align-items-end\">\n      <div class=\"btn-group\" (click)=\"$event.stopPropagation()\">\n        <button type=\"button\" class=\"btn btn-sm border-0\" [class.disabled]=\"!layerIsAvailable\"\n          (click)=\"selectTypeAndAdd('WMS',$event)\">\n          <i class=\"fa-solid fa-plus icon-primary\"></i>\n          @if (layerIsAvailable) {\n          <span class=\"ms-1\">{{'COMMON.addToMap' |\n            translate }}</span>\n          }\n        </button>\n        @if (layerIsAvailable) {\n        <div class=\"btn-group\" role=\"group\">\n          <button type=\"button\" class=\"btn btn-sm dropdown-toggle-split btn-outline-primary border-0 dropdown-toggle\"\n            (click)=\"$event.stopPropagation();toggleAddOptions()\">\n          </button>\n        </div>\n        }\n      </div>\n      <a class=\"btn btn-sm border-0\" (click)=\"showMetadata()\">\n        <i class=\"fa-solid fa-circle-info icon-primary\"></i><span class=\"ms-1\">{{'COMMON.metadata' |\n          translate }}</span>\n      </a>\n      <a class=\"btn btn-sm border-0\" (click)=\"$event.stopPropagation();showPermissions()\" data-toggle=\"tooltip\"\n        data-placement=\"bottom\"\n        [title]=\"layer().editable ? '' : 'DATASOURCE_SELECTOR.datasourceListItem.notAllowedToEditLayer' | translate \">\n        <i class=\"fa-solid fa-lock icon-primary\" [ngClass]=\"{'text-muted': !layer().editable}\"\n          [ngStyle]=\"{'cursor' : layer().editable ? 'pointer' : 'default'}\"></i>@if (layer().editable) {\n        <span class=\"ms-1\">{{'COMMON.setPermissions' | translate }}</span>\n        }\n      </a>\n      <a class=\"btn btn-sm border-0\" (click)=\"$event.stopPropagation();removeLayer()\" data-toggle=\"tooltip\"\n        data-placement=\"bottom\"\n        [title]=\"editable ? '' : 'DATASOURCE_SELECTOR.datasourceListItem.notAllowedToEditLayer' | translate \">\n        <i class=\"fa-solid fa-trash text-danger\" [ngClass]=\"editable ? 'text-danger' : 'text-muted'\"\n          [ngStyle]=\"{'cursor' : editable ? 'pointer' : 'default'}\"></i>@if (editable) {\n        <span class=\"ms-1\">{{'COMMON.removeLayer' | translate }}</span>\n        }\n      </a>\n    </div>\n  </div>\n  }\n  <div class=\"d-none\">\n    <div class=\"p-0\" [hidden]='hsAddDataCatalogueService.layerDownload(layer().endpoint,layer()) === \"#\"'>\n      <!-- TODO: Remove function call from template -->\n      <a class=\"btn btn-sm border-0 btn-secondary\"\n        [href]='hsAddDataCatalogueService.layerDownload(layer().endpoint, layer())' data-toggle=\"tooltip\"\n        [title]=\"'COMMON.download' | translate \"><i class=\"fa-solid fa-download\"></i></a>\n    </div>\n  </div>\n</div>\n<div>\n  <div [hidden]=\"!loadingInfo\" class=\"list-group-item text-primary text-center py-2\">\n    <span class=\"pe-2 hs-loader hs-loader-dark\"></span>\n    &emsp;{{'ADDDATA.CATALOGUE.loading' | translate }}\n  </div>\n  <div class=\"card bg-light align-items-center\"\n    [hidden]=\"!selectTypeToAddLayerVisible || loadingInfo || hsAddDataCatalogueService.selectedLayer?.id !== layer().id\">\n    <div class=\"d-flex flex-row justify-content-between align-items-center w-100\">\n      <div class=\"px-3 py-2\">\n        <span class=\"btn btn-sm disabled border-0\" disabled=\"true\" aria-disabled=\"true\">{{\n          'COMMON.addAs' |\n          translate }}&nbsp;</span>\n        <div class=\"btn-group btn-group-toggle h-100 pe-2 align-items-center\" data-toggle=\"buttons\">\n          @for (type of whatToAddTypes; track type) {\n          <label class=\"btn btn-sm btn-outline-secondary\" style=\"width:6em\" (click)=\"selectTypeAndAdd(type,$event)\">\n            {{type}}\n          </label>\n          }\n        </div>\n        <a class=\"btn btn-sm border-0 px-0\" style=\"margin-top: -1rem;\"\n          (click)=\"$event.stopPropagation();toggleExplanations()\"\n          [title]=\"'DATASOURCE_SELECTOR.datasourceListItem.whatDoesItMean' | translate \">\n          <i class=\"fa-solid fa-circle-question text-primary\"></i>\n        </a>\n      </div>\n      <a class=\"btn btn-sm border-0\" [title]=\"'COMMON.close' | translate \" (click)=\"$event.stopPropagation();abortAdd()\"\n        [hidden]=\"!selectTypeToAddLayerVisible\">\n        <i class=\"fa-solid fa-xmark text-danger\"></i>\n      </a>\n    </div>\n    <div class=\"d-flex\">\n      <ul class=\"ms-auto p-2 list-unstyled\" [hidden]=\"!explanationsVisible\">\n        @for (type of whatToAddTypes; track type) {\n        <li class=\"text-secondary small\">\n          {{type}} &ndash; {{'ADDDATA.CATALOGUE.DESC.' + type | translate }}\n        </li>\n        }\n      </ul>\n    </div>\n  </div>\n</div>","import {Component, computed, OnInit, signal, inject} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {NgbDropdownModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {\n  HsAddDataCatalogueMapService,\n  HsAddDataService,\n  HsAddDataCatalogueService,\n} from 'hslayers-ng/services/add-data';\nimport {HsAddDataLayerDescriptor} from 'hslayers-ng/types';\nimport {\n  HsCommonLaymanService,\n  HsLaymanCurrentUserComponent,\n} from 'hslayers-ng/common/layman';\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsLanguageService} from 'hslayers-ng/services/language';\nimport {HsLaymanService} from 'hslayers-ng/services/save-map';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\nimport {HsPagerModule} from 'hslayers-ng/common/pager';\nimport {HsCatalogueListItemComponent} from './catalogue-list-item/catalogue-list-item.component';\n\n@Component({\n  selector: 'hs-add-data-catalogue',\n  templateUrl: './catalogue.component.html',\n  imports: [\n    FormsModule,\n    HsPagerModule,\n    NgbDropdownModule,\n    TranslatePipe,\n    HsCatalogueListItemComponent,\n    HsLaymanCurrentUserComponent,\n  ],\n})\nexport class HsAddDataCatalogueComponent implements OnInit {\n  hsLanguageService = inject(HsLanguageService);\n  hsConfig = inject(HsConfig);\n  hsAddDataCatalogueService = inject(HsAddDataCatalogueService);\n  hsAddDataCatalogueMapService = inject(HsAddDataCatalogueMapService);\n  hsLayoutService = inject(HsLayoutService);\n  hsLaymanService = inject(HsLaymanService);\n  hsCommonLaymanService = inject(HsCommonLaymanService);\n  private hsAddDataService = inject(HsAddDataService);\n\n  types: any[];\n  data: any;\n  advancedSearch: boolean;\n\n  filterTypeMenu = signal(false);\n  optionsButtonLabel = computed(() =>\n    this.filterTypeMenu() ? 'less' : 'more',\n  );\n\n  readonly textFieldTypes = ['AnyText', 'Abstract', 'Title'];\n  readonly dataTypes = ['all', 'service', 'dataset'];\n  readonly sortbyTypes = ['date', 'title', 'bbox'];\n\n  constructor() {\n    this.advancedSearch = false;\n  }\n\n  ngOnInit(): void {\n    this.data = this.hsAddDataCatalogueService.data;\n  }\n\n  layerSelected(layer: HsAddDataLayerDescriptor): void {\n    this.hsAddDataCatalogueService.selectedLayer =\n      this.hsAddDataCatalogueService.selectedLayer == layer\n        ? <HsAddDataLayerDescriptor>{}\n        : layer;\n  }\n\n  toggleFilterTypeMenu(): void {\n    this.filterTypeMenu.update((value) => !value);\n  }\n\n  queryByFilter(): void {\n    /*\n     * A bit tricky way how to force add-data hs-panel-header to refresh its template\n     * in order to show/hide buttons. Previously done by reloadData call.\n     * This achieves the same via datasetTypeSelected subscription in catalogue service\n     */\n    this.hsAddDataService.datasetSelected.next(\n      this.hsAddDataService.datasetSelected.getValue(),\n    );\n  }\n\n  selectType(type: string): void {\n    this.data.textField = type;\n    if (this.data.query.textFilter.length > 0) {\n      this.queryByFilter();\n    }\n  }\n\n  selectQueryType(type: string, query: string): void {\n    this.data.query[query] = type;\n    this.queryByFilter();\n  }\n\n  highlightLayer(layer, state: boolean): void {\n    layer.highlighted = state;\n    this.hsAddDataCatalogueMapService.highlightLayer(layer, state);\n  }\n}\n","<div class=\"card hs-main-panel h-100\">\n  <div class=\"hs-add-data-catalogue-header\">\n    <div class=\"mt-3 mx-3 ps-1 d-flex justify-content-between\">\n      <div class=\"input-group w-50\">\n        <input type=\"search\" class=\"form-control w-50\" [placeholder]=\"'COMMON.search' | translate   \" name=\"search\"\n          [(ngModel)]=\"data.query.textFilter\" (ngModelChange)=\"queryByFilter()\">\n        <button class=\"input-group-text text-secondary border-start-0\" (click)=\"queryByFilter()\">\n          <i class=\"fa-solid fa-magnifying-glass icon-primary\"></i>\n        </button>\n      </div>\n      <hs-layman-current-user />\n    </div>\n    <div class=\"d-flex ms-4 me-3 justify-content-between py-1 \">\n      <div class=\"d-flex\">\n        <div class=\"input-group-text border-0\" style=\"line-height: normal;\">\n          <input type=\"checkbox\" class=\"checkbox-lg\" [(ngModel)]=\"data.filterByExtent\" (change)=\"queryByFilter()\"\n            name=\"filterByExtent\">\n          <span class=\"ms-2\">{{'COMPOSITIONS.filterByMap' | translate }}</span>\n        </div>\n        @if (hsCommonLaymanService.isAuthenticated()) {\n        <div class=\"input-group-text border-0 ms-1\" style=\"line-height: normal;\">\n          <input type=\"checkbox\" class=\"checkbox-lg\" [(ngModel)]=\"data.onlyMine\" (ngModelChange)=\"queryByFilter()\"\n            name=\"onlyMine\">\n          <span class=\"ms-2\">{{'COMPOSITIONS.onlyMine' | translate }}</span>\n        </div>\n        }\n      </div>\n      <div ngbDropdown display=\"dynamic\" placement=\"bottom-right\" class=\"d-inline-block\"\n        data-cy=\"hs-addData-catalogue-filter\">\n        <button class=\"btn btn-light hs-white-background hs-custom-toggle\" (click)=\"toggleFilterTypeMenu()\"\n          ngbDropdownToggle>{{'COMMON.' + optionsButtonLabel() | translate}}</button>\n        <div ngbDropdownMenu class=\"dropdown-menu-right p-2 m-1\"\n          style=\"min-width: 23rem; max-width: 23rem;  overflow: visible\" aria-labelledby=\"filtersDropdown\">\n          <table class=\"p-1 ps-3\" style=\"border-collapse:separate; border-spacing:0.5rem 0.5rem;\">\n            <tbody>\n              <tr>\n                <td class=\"tdbreak\">\n                  {{'ADDDATA.CATALOGUE.filterType' | translate }}\n                </td>\n                <td ngbDropdown display=\"dynamic\" placement=\"bottom-right\" #searchTypeDropdown=\"ngbDropdown\">\n                  <button type=\"button\" ngbDropdownToggle\n                    class=\"btn btn-light btn-sm hs-custom-toggle hs-background-alfa p-2 ps-1 border-0\"\n                    style=\"text-align:start; min-width: 11rem; max-width: 11rem; border-radius: 0px; justify-content: space-between; display:flex; align-items: center;\">\n                    {{'ADDDATA.CATALOGUE.searchFilterTypes.' + data.textField | translate}}\n                  </button>\n                  <ul ngbDropdownMenu aria-labelledby=\"searchType\" class=\"ps-2\"\n                    style=\"overflow-y: auto; max-height: 10rem; min-width:10rem\">\n                    @for (searchType of textFieldTypes; track searchType; let index = $index) {\n                    <li class=\"p-2 p-md-0\">\n                      <label style=\"cursor: pointer;\"><input class=\"me-2\" type=\"radio\" name=\"searchType-index\"\n                          [checked]=\"(index === 0)\"\n                          (change)=\"selectType(searchType); searchTypeDropdown.close()\">{{'ADDDATA.CATALOGUE.searchFilterTypes.' + searchType | translate}}</label>\n                    </li>\n                    }\n                  </ul>\n                </td>\n              </tr>\n              <tr>\n                <td class=\"tdbreak\">\n                  {{'ADDDATA.CATALOGUE.resourceType' | translate }}\n                </td>\n                <td ngbDropdown display=\"dynamic\" placement=\"bottom-right\" #resourceType=\"ngbDropdown\">\n                  <button type=\"button\" ngbDropdownToggle\n                    class=\"btn btn-light btn-sm hs-custom-toggle hs-background-alfa p-2 ps-1 border-0\"\n                    style=\"text-align:start; min-width: 11rem; max-width: 11rem; border-radius: 0px; justify-content: space-between; display:flex; align-items: center;\">\n                    {{'ADDDATA.CATALOGUE.queryDataTypes.' + data.query.type | translate}}\n                  </button>\n                  <ul ngbDropdownMenu aria-labelledby=\"type\" class=\"ps-2\"\n                    style=\"overflow-y: auto; max-height: 10rem; min-width:10rem\">\n                    @for (type of dataTypes; track type; let index = $index) {\n                    <li class=\"p-2 p-md-0\">\n                      <label style=\"cursor: pointer;\"><input class=\"me-2\" type=\"radio\" name=\"type-index\"\n                          [checked]=\"(index === 0)\"\n                          (change)=\"selectQueryType(type, 'type');resourceType.close()\">{{'ADDDATA.CATALOGUE.queryDataTypes.' + type | translate}}</label>\n                    </li>\n                    }\n                  </ul>\n                </td>\n              </tr>\n              <tr>\n                <td class=\"tdbreak\">\n                  {{'COMMON.sortBy' | translate }}\n                </td>\n                <td ngbDropdown display=\"dynamic\" placement=\"bottom-right\" #sortByDrop=\"ngbDropdown\">\n                  <button type=\"button\" ngbDropdownToggle\n                    class=\"btn btn-light btn-sm hs-custom-toggle hs-background-alfa p-2 ps-1 border-0\"\n                    style=\"text-align:start; min-width: 11rem; max-width: 11rem; border-radius: 0px; justify-content: space-between; display:flex; align-items: center;\">\n                    {{'ADDDATA.CATALOGUE.sortbyTypes.' + data.query.sortby | translate}}\n                    <!-- TODO: Remove function call from template -->\n                  </button>\n                  <ul ngbDropdownMenu aria-labelledby=\"sortBy\" class=\"ps-2\"\n                    style=\"overflow-y: auto; max-height: 10rem; min-width:10rem\">\n                    @for (sortType of sortbyTypes; track sortType; let index = $index) {\n                    <li class=\"p-2 p-md-0\">\n                      <label style=\"cursor: pointer;\"><input class=\"me-2\" type=\"radio\" name=\"sort-index\"\n                          [checked]=\"(index === 0)\"\n                          (change)=\"selectQueryType(sortType, 'sortby');sortByDrop.close()\">{{'ADDDATA.CATALOGUE.sortbyTypes.' + sortType | translate}}</label>\n                    </li>\n                    }\n                  </ul>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class=\"card d-flex border-0 flex-fill\" style=\"font-size: 1rem !important; overflow-y: auto;\">\n    <div class=\"card-body\">\n      <ul class=\"list-group\">\n        @for (layer of hsAddDataCatalogueService.catalogEntries; track layer.id) {\n        <li [hidden]=\"hsAddDataCatalogueService.dataLoading\" style=\"cursor: pointer;\"\n          class=\"list-group-item border-0 border-bottom\" [class.hs-endpoint-item-active]=\"layer.highlighted\"\n          (click)=\"layerSelected(layer)\" (mouseover)=\"highlightLayer(layer, true)\"\n          (mouseleave)=\"highlightLayer(layer, false)\">\n          <hs-catalogue-list-item [layer]=\"layer\" class=\"w-100\"></hs-catalogue-list-item>\n        </li>\n        }\n        <li class='list-group-item text-primary text-center py-2 border-0' style=\"font-size: 1.25rem;\"\n          [hidden]=\"!hsAddDataCatalogueService.dataLoading\"><span\n            class=\"pe-2 hs-loader hs-loader-dark\"></span>&emsp;{{'ADDDATA.CATALOGUE.loading' | translate\n          }}</li>\n        <li [hidden]='hsAddDataCatalogueService.catalogEntries.length > 0 || hsAddDataCatalogueService.dataLoading'\n          class='list-group-item' style=\"border-top-width: 1px; border-radius: inherit\">\n          {{'DATASOURCE_SELECTOR.noResults' | translate }}</li>\n      </ul>\n    </div>\n  </div>\n  @if (hsAddDataCatalogueService.matchedRecords !== 0 && !hsAddDataCatalogueService.dataLoading) {\n  <hs-pager class=\"sticky-bottom bg-white border-0\" [pagerService]=\"hsAddDataCatalogueService\"></hs-pager>\n  }\n</div>\n","import {Component, Input, inject} from '@angular/core';\n\nimport {FileDataObject} from 'hslayers-ng/types';\nimport {HsAddDataCommonFileService} from 'hslayers-ng/services/add-data';\nimport {HsLaymanService} from 'hslayers-ng/services/save-map';\n\n@Component({\n  selector: 'hs-add-layer-authorized',\n  templateUrl: 'add-layer-authorized.component.html',\n  standalone: false,\n})\nexport class HsAddLayerAuthorizedComponent {\n  hsAddDataCommonFileService = inject(HsAddDataCommonFileService);\n  hsLaymanService = inject(HsLaymanService);\n\n  @Input() data: FileDataObject;\n\n  async add(): Promise<void> {\n    await this.hsAddDataCommonFileService.addAsService(this.data);\n  }\n\n  private hasNameAndSrs() {\n    return this.data.name && this.data.srs;\n  }\n\n  canAdd() {\n    return this.data.type == 'raster-ts'\n      ? this.hasNameAndSrs() && this.data.timeRegex\n      : this.hasNameAndSrs();\n  }\n}\n","<div class=\"w-100 mt-2\" style=\"display: inline-block;\" data-toggle=\"tooltip\" data-placement=\"top\"\n  [title]=\"hsAddDataCommonFileService.getToolTipText(data)\">\n  <!-- TODO: Remove function call from template -->\n  @if (hsAddDataCommonFileService.isAuthenticated()) {\n  <hs-add-to-map [disabled]=\"!canAdd()\" (add)=\"add()\" [loading]=\"hsAddDataCommonFileService.loadingToLayman\">\n    <!-- TODO: Remove function call from template -->\n    @if (hsAddDataCommonFileService.loadingToLayman && hsAddDataCommonFileService.readingData) {\n    <span>&emsp;{{'COMMON.reading'\n      |\n      translate }}</span>\n    }\n    @if (hsAddDataCommonFileService.loadingToLayman && (hsAddDataCommonFileService.asyncLoading ||\n    hsAddDataCommonFileService.readingData)) {\n    <ngb-progressbar [showValue]=\"true\" class=\"rounded-0 mb-1\" type=\"secondary\" [max]=\"1\"\n      [value]=\"hsLaymanService.totalProgress\">\n    </ngb-progressbar>\n    }\n  </hs-add-to-map>\n  } @else {\n  <div class=\"alert alert-warning d-flex align-items-center mt-2 justify-content-between\">\n    <p class=\"m-0\"> {{'ADDLAYERS.SHP.loginRequired' | translate }}</p>\n    <hs-layman-current-user></hs-layman-current-user>\n  </div>\n  }\n</div>\n","import {Component, EventEmitter, Input, Output, inject} from '@angular/core';\n\nimport {Layer} from 'ol/layer';\nimport {Source} from 'ol/source';\n\nimport {HsLayerDescriptor} from 'hslayers-ng/types';\nimport {HsLayerManagerService} from 'hslayers-ng/services/layer-manager';\n\n@Component({\n  selector: 'hs-target-position',\n  templateUrl: './target-position.component.html',\n  standalone: false,\n})\nexport class HsPositionComponent {\n  hsLayerManagerService = inject(HsLayerManagerService);\n\n  @Input() addUnder: Layer<Source> | null;\n  @Output() addUnderChange = new EventEmitter<Layer<Source> | null>();\n\n  updateChanges(): void {\n    this.addUnderChange.next(this.addUnder);\n  }\n\n  /**\n   * Filter layers by showInLayermanager property\n   * This function is passed as filter pipe function\n   */\n  layerInManager = (layer: HsLayerDescriptor): boolean => {\n    return layer.showInLayerManager;\n  };\n}\n","<div class=\"form-group\">\n  <div class=\"input-group\">\n    <span class=\"input-group-text control-label\">{{'ADDLAYERS.under' | translate }}</span>\n    <select class=\"form-control form-select\" [(ngModel)]=\"addUnder\" (ngModelChange)=\"updateChanges()\" name=\"addUnder\">\n      <option [ngValue]=\"null\" selected>{{'ADDLAYERS.none' | translate }}</option>\n      @for (layer of hsLayerManagerService.data.layers | filter: layerInManager; track layer) {\n      <option [ngValue]=\"layer.layer\">\n        {{'LAYERS.' + layer.title | translate : {fallbackValue: layer.title} }}</option>\n      }\n    </select>\n  </div>\n</div>\n","import {Component, Input, OnInit, inject} from '@angular/core';\n\nimport {\n  FileDataObject,\n  IntersectWithTooltip,\n  VectorDataObject,\n} from 'hslayers-ng/types';\nimport {HsAddDataVectorService} from 'hslayers-ng/services/add-data';\n\nexport type VectorFileDataType = IntersectWithTooltip<\n  Partial<FileDataObject> & VectorDataObject\n>;\n\n@Component({\n  selector: 'hs-advanced-options',\n  templateUrl: 'advanced-options.component.html',\n  standalone: false,\n})\nexport class HsAdvancedOptionsComponent implements OnInit {\n  private hsAddDataVectorService = inject(HsAddDataVectorService);\n\n  @Input() data: VectorFileDataType;\n\n  isKml: boolean;\n  ngOnInit(): void {\n    this.isKml = this.hsAddDataVectorService.isKml(\n      this.data.type,\n      this.data.url ?? null,\n    );\n  }\n}\n","<div class=\"hs-advanced-options\">\n  <div class=\"form-floating mb-3\">\n    <input class=\"form-control\" name=\"folder\" [(ngModel)]=\"data.folder_name\"\n      [placeholder]=\"'ADDLAYERS.folderName' | translate  \" />\n    <label for=\"folder\" class=\"capabilities_label control-label\">{{'ADDLAYERS.folderName' | translate\n      }}</label>\n  </div>\n  @if (isKml) {\n  <div class=\"form-group\">\n    <input type=\"checkbox\" name=\"extractStyles\" [(ngModel)]=\"data.extract_styles\" />\n    <label class=\"capabilities_label control-label ms-1\">{{'ADDLAYERS.VECTOR.extractStyles' |\n      translate }}</label>\n  </div>\n  }\n  <hs-target-position [(addUnder)]=\"data.addUnder\"></hs-target-position>\n  @if (data.loadAsType) {\n  <div class=\"d-flex flex-row justify-content-between align-items-baseline mb-1 ps-4\">\n    {{'ADDDATA.loadAs' | translate }}\n    <div class=\"btn-group ms-2\">\n      <button type=\"button\" class=\"btn btn-light btn-outline-secondary\" (click)=\"data.loadAsType = 'wms'\"\n        [ngClass]=\"{'active': data.loadAsType === 'wms'}\">\n        WMS\n      </button>\n      <button type=\"button\" class=\"btn btn-light btn-outline-secondary\" (click)=\"data.loadAsType = 'wfs'\"\n        [ngClass]=\"{'active': data.loadAsType === 'wfs'}\">\n        WFS\n      </button>\n    </div>\n  </div>\n  }\n</div>\n","import {Injectable, inject} from '@angular/core';\n\nimport {FileDataObject} from 'hslayers-ng/types';\nimport {HsAddDataCommonFileService} from 'hslayers-ng/services/add-data';\nimport {HsLanguageService} from 'hslayers-ng/services/language';\nimport {HsUploadedFiles} from 'hslayers-ng/common/upload';\n\n@Injectable({providedIn: 'root'})\nexport class HsFileService {\n  hsLanguageService = inject(HsLanguageService);\n  hsAddDataCommonFileService = inject(HsAddDataCommonFileService);\n\n  fileUploadErrorHeader = 'ADDLAYERS.couldNotUploadSelectedFile';\n\n  async read(evt: HsUploadedFiles, readAsText: boolean = false): Promise<void> {\n    const filesRead = [];\n    const files = Array.from(evt.fileList);\n    const promises = [];\n    const data: FileDataObject = {};\n    try {\n      if (!this.hsAddDataCommonFileService.filesValid(files)) {\n        return;\n      }\n      for (const file of files) {\n        const filePromise = new Promise((resolve) => {\n          const reader = new FileReader();\n          reader.onload = (loadEvent) => {\n            filesRead.push({\n              name: file.name,\n              type: file.type,\n              content: loadEvent.target.result,\n            });\n            resolve(reader.result);\n          };\n          const readerMethod = readAsText ? 'readAsText' : 'readAsArrayBuffer';\n          reader[readerMethod](file);\n        });\n        promises.push(filePromise);\n      }\n      await Promise.all(promises);\n      if (evt.uploader.includes('shpdbfshx')) {\n        data.files = filesRead;\n        this.checkShpFiles(data);\n      } else if (evt.uploader.includes('style')) {\n        data.serializedStyle = filesRead[0];\n        this.hsAddDataCommonFileService.dataObjectChanged.next(data);\n      } else if (evt.uploader.includes('hs-file-raster')) {\n        data.files = filesRead;\n        this.checkRasterFiles(data);\n      }\n    } catch (e) {\n      this.hsAddDataCommonFileService.displayErrorMessage({\n        message: e.message,\n        header: this.fileUploadErrorHeader,\n      });\n    }\n  }\n  checkShpFiles(data: FileDataObject): void {\n    if (\n      data.files.length == 3 ||\n      this.hsAddDataCommonFileService.isZip(data.files[0].type)\n    ) {\n      this.hsAddDataCommonFileService.setDataName(data);\n    } else if (data.files.length > 3) {\n      this.tooManyFiles(3, data.files.length);\n    } else {\n      this.hsAddDataCommonFileService.displayErrorMessage({\n        message: 'ADDLAYERS.SHP.missingOneOrMore',\n        header: this.fileUploadErrorHeader,\n      });\n    }\n  }\n\n  checkRasterFiles(data: FileDataObject): void {\n    if (\n      data.files.length == 2 ||\n      this.hsAddDataCommonFileService.isZip(data.files[0].type) ||\n      this.hsAddDataCommonFileService.isGeotiff(data.files[0].type) ||\n      this.hsAddDataCommonFileService.isJp2(data.files[0].type)\n    ) {\n      this.hsAddDataCommonFileService.setDataName(data);\n    } else if (data.files.length > 2) {\n      this.tooManyFiles(2, data.files.length);\n    } else {\n      this.hsAddDataCommonFileService.displayErrorMessage({\n        message: 'ADDLAYERS.missingImageorWorldFile',\n        header: this.fileUploadErrorHeader,\n      });\n    }\n  }\n\n  tooManyFiles(allowed: number, length: number): void {\n    this.hsAddDataCommonFileService.displayErrorMessage({\n      message: this.hsLanguageService.getTranslationIgnoreNonExisting(\n        'ADDLAYERS.SHP',\n        'maximumNumberOf',\n        {allowed, length},\n      ),\n      header: this.fileUploadErrorHeader,\n    });\n  }\n}\n","export const DEFAULT_SHP_LOAD_TYPE = 'wms' as const;\nexport const DEFAULT_VECTOR_LOAD_TYPE = 'wfs' as const;\n","import {Component, Input} from '@angular/core';\n\nimport {DEFAULT_VECTOR_LOAD_TYPE} from '../../enums/load-types.const';\nimport {FileDataObject} from 'hslayers-ng/types';\n\n@Component({\n  selector: 'hs-save-to-layman',\n  templateUrl: 'save-to-layman.component.html',\n  standalone: false,\n})\nexport class HsSaveToLaymanComponent {\n  @Input() data: FileDataObject;\n\n  descriptionVisible = false;\n\n  constructor() {}\n\n  setSaveToLayman(save: boolean) {\n    this.data.saveToLayman = save;\n    if (save) {\n      this.data.loadAsType = DEFAULT_VECTOR_LOAD_TYPE;\n    } else {\n      this.data.loadAsType = undefined;\n    }\n  }\n\n  toggleDescVisibility() {\n    this.descriptionVisible = !this.descriptionVisible;\n  }\n}\n","@if (data.type !== 'shp' && !data.type.includes('raster') ) {\n<div class=\"d-flex flex-row justify-content-between align-items-baseline mb-1 ps-4\">\n  <div>\n    {{'ADDDATA.saveToCatalogue' | translate }}\n    <a class=\"btn btn-sm border-0\" (click)=\"$event.stopPropagation();toggleDescVisibility()\"\n      [title]=\"'ADDDATA.saveToDbExplanation' | translate \">\n      <i class=\"fa-solid fa-circle-info text-primary\"></i>\n    </a>\n  </div>\n  <div class=\"btn-group ms-2\">\n    <button type=\"button\" class=\"btn btn-light  btn-outline-secondary\" (click)=\"setSaveToLayman(true)\"\n      [ngClass]=\"{'active':data.saveToLayman}\">\n      {{'COMMON.yes' | translate }}\n    </button>\n    <button type=\"button\" class=\"btn btn-light  btn-outline-secondary\" (click)=\"setSaveToLayman(false)\"\n      [ngClass]=\"{'active': !data.saveToLayman}\">\n      {{'COMMON.no' | translate }}\n    </button>\n  </div>\n</div>\n<div class=\"mb-1 ps-4 fst-italic text-secondary\" [hidden]=\"!descriptionVisible\">\n  {{'ADDDATA.saveToDbExplanation' | translate }}\n</div>\n}\n@if (data.saveToLayman) {\n<hs-layman-access-rights [(access_rights)]=\"data.access_rights\" class=\"ps-4 mt-3 d-block\" />\n}","import {Component, Input, OnInit, inject} from '@angular/core';\n\nimport {FileDataObject} from 'hslayers-ng/types';\nimport {HsAddDataCommonFileService} from 'hslayers-ng/services/add-data';\nimport {HsFileService} from '../../file/file.service';\nimport {HsLaymanService} from 'hslayers-ng/services/save-map';\nimport {HsUploadedFiles} from 'hslayers-ng/common/upload';\n\n@Component({\n  selector: 'hs-new-layer-form',\n  templateUrl: 'new-layer-form.component.html',\n  standalone: false,\n})\nexport class HsNewLayerFormComponent implements OnInit {\n  hsAddDataCommonFileService = inject(HsAddDataCommonFileService);\n  private hsFileService = inject(HsFileService);\n  hsLaymanService = inject(HsLaymanService);\n\n  advancedPanelVisible = false;\n  @Input() data: FileDataObject;\n\n  allowedStyles: {\n    list: string;\n    title: string;\n  };\n\n  ngOnInit() {\n    this.allowedStyles = {\n      list:\n        this.data.allowedStyles.length > 3\n          ? '.sld, .qml'\n          : `.${this.data.allowedStyles}`,\n      title: `ADDLAYERS.add${this.data.allowedStyles}`,\n    };\n  }\n\n  async read(evt: HsUploadedFiles): Promise<void> {\n    await this.hsFileService.read(evt, this.data.type === 'geojson');\n  }\n}\n","<div>\n\n  <div class=\"form-floating mb-3\">\n    <input [placeholder]=\"'ADDDATA.URL.submitLayerName' | translate  \" class=\"form-control\" name=\"name\"\n      [(ngModel)]=\"data.name\" (ngModelChange)=\"data.title = data.name\" />\n    <label for=\"name\" class=\"capabilities_label control-label\">{{'COMMON.name' | translate }}</label>\n\n  </div>\n  <div class=\"form-floating mb-3\">\n    <textarea class=\"form-control\" id='hs-ows-abstract' [placeholder]=\"'COMMON.fillInDescriptive' | translate  \"\n      name=\"abstract\" [(ngModel)]=\"data.abstract\">\n    </textarea>\n    <label for=\"absctract\" class=\"capabilities_label control-label\">{{'COMMON.abstract' | translate }}</label>\n\n  </div>\n  <div class=\"d-flex w-100 flex-column\">\n    @if (data.type === 'shp' || data.type.includes('raster')) {\n    <div class=\"form-floating\">\n      <select class=\"form-select rounded-0\" id=\"hs-add-data-crs\" [(ngModel)]=\"data.srs\" name=\"srs\"\n        [ngClass]=\"data?.srs ? 'is-valid mb-2' : 'is-invalid'\" aria-label=\"CRS floating label select\">\n        @for (epsg of hsLaymanService.supportedCRRList(); track epsg) {\n        <option [ngValue]=\"epsg\">{{epsg | epsg}}\n          }\n      </select>\n      <label for=\"hs-add-data-crs\">{{'ADDLAYERS.srs' | translate }}</label>\n    </div>\n    }\n  </div>\n  <p [hidden]=\"data?.srs\"><sub class=\"text-danger\">{{'ADDLAYERS.Vector.note' | translate }}</sub></p>\n\n  @if (hsAddDataCommonFileService.isAuthenticated() && data.saveAvailable) {\n  <hs-save-to-layman [data]=\"data\" />\n  }\n  @if (data.type === 'shp' || data.type.includes('raster') || data.type === 'geojson') {\n  <div class=\"d-flex justify-content-between align-items-center\">\n    <p class=\"ps-4\">{{'ADDLAYERS.SHP.SLDStyleFile' | translate }}</p>\n    <label class=\"dropzone-label\">\n      <input name=\"file\" type=\"file\" style=\"position: fixed;\" [accept]=\"allowedStyles.list\" class=\"inputfile\"\n        (change)=\"read({fileList: $event.target.files, uploader: 'style', dropped: false})\" id=\"style\">\n      <label for=\"style\" class=\"p-2 rounded\" style=\"font-size: 1em;\"\n        [ngClass]=\"data.serializedStyle ? 'bg-success' : 'bg-primary'\">\n        <i class=\"fa-solid fa-cloud-arrow-up p-2\"></i>{{data.serializedStyle?.name ?? allowedStyles.title\n        |translate}}</label>\n    </label>\n  </div>\n  }\n\n  <button type=\"button\" class=\"btn w-100 mt-2 btn-outline-secondary dropdown-toggle dropdown-toggle-split\"\n    (click)=\"advancedPanelVisible = !advancedPanelVisible\">\n    {{'COMMON.advancedOptions' | translate }}\n  </button>\n  @if (advancedPanelVisible) {\n  <hs-advanced-options [data]=\"data\"></hs-advanced-options>\n  }","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {NgbProgressbarModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {EpsgPipe, FilterPipe} from 'hslayers-ng/common/pipes';\nimport {HsAddLayerAuthorizedComponent} from './add-layer-authorized/add-layer-authorized.component';\nimport {HsAddToMapButtonComponent} from 'hslayers-ng/common/add-to-map';\nimport {HsAdvancedOptionsComponent} from './advanced-options/advanced-options.component';\nimport {\n  HsCommonLaymanAccessRightsComponent,\n  HsLaymanCurrentUserComponent,\n} from 'hslayers-ng/common/layman';\nimport {HsNewLayerFormComponent} from './new-layer-form/new-layer-form.component';\nimport {HsPositionComponent} from './target-position/target-position.component';\nimport {HsSaveToLaymanComponent} from './save-to-layman/save-to-layman.component';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  imports: [\n    CommonModule,\n    FormsModule,\n    TranslatePipe,\n    HsLaymanCurrentUserComponent,\n    NgbProgressbarModule,\n    HsAddToMapButtonComponent,\n    EpsgPipe,\n    FilterPipe,\n    HsCommonLaymanAccessRightsComponent,\n  ],\n  exports: [\n    HsAdvancedOptionsComponent,\n    HsSaveToLaymanComponent,\n    HsNewLayerFormComponent,\n    HsPositionComponent,\n    HsAddLayerAuthorizedComponent,\n  ],\n  declarations: [\n    HsAdvancedOptionsComponent,\n    HsSaveToLaymanComponent,\n    HsNewLayerFormComponent,\n    HsPositionComponent,\n    HsAddLayerAuthorizedComponent,\n  ],\n})\nexport class HsAddDataCommonModule {}\n","import {Component, Input, inject} from '@angular/core';\n\nimport {HsAddDataUrlService} from 'hslayers-ng/services/add-data';\nimport {HsUrlTypeServiceModel, Service} from 'hslayers-ng/types';\n\n@Component({\n  selector: 'hs-url-add',\n  templateUrl: './add.component.html',\n  standalone: false,\n})\nexport class HsUrlAddComponent {\n  hsAddDataUrlService = inject(HsAddDataUrlService);\n\n  @Input() services?: Service[];\n\n  @Input() layers: {name: string; checked: boolean}[];\n  @Input() injectedService: HsUrlTypeServiceModel;\n  _selectAll = true;\n\n  /**\n   * Select all records from service.\n   */\n  selectAll(): void {\n    this._selectAll = !this._selectAll;\n    this.checkAllRecords(\n      this.services?.length > 0 ? this.services : this.layers,\n    );\n  }\n\n  checkAllRecords(records: any[]): void {\n    if (!records) {\n      return;\n    }\n    for (const r of records) {\n      r.checked = !this._selectAll;\n      if (r.Layer) {\n        this.checkAllRecords(r.Layer);\n      }\n    }\n    this.changed();\n  }\n\n  async add(): Promise<void> {\n    if (this.layers) {\n      const layers = await this.injectedService.getLayers(true);\n      this.injectedService.addLayers(layers);\n    }\n    if (this.injectedService.addServices && this.services) {\n      this.injectedService.addServices(this.services);\n    }\n    //NOTE: THIS CAN BE DONE IF WE CHOSE TO RESET DEFAULT SOMEWHERE ELSE OTHER THAN\n    // injectedService.getLayers. add-data/url/<type>/<type>.component.ts constructor maybe?\n    // zoomToLayers implemented for wms, wfs\n    // if (this.injectedService.zoomToLayers) {\n    //   this.injectedService.zoomToLayers();\n    // }\n  }\n\n  changed(): void {\n    this.hsAddDataUrlService.searchForChecked([\n      ...(this.layers ?? []),\n      ...(this.services ?? []),\n    ]);\n  }\n}\n","<div class=\"w-100 d-flex justify-content-between pb-2 bg-white\" style=\"position: sticky;\n                bottom: 0\">\n  <button class=\"btn btn-primary\" (click)=\"selectAll()\">{{'ADDDATA.URL.selectAll' |\n    translate }}</button>\n  <hs-add-to-map [disabled]=\"!hsAddDataUrlService.addingAllowed\" (add)=\"add()\"\n    [title]=\"'ADDLAYERS.addSelected'\"></hs-add-to-map>\n</div>\n","import {Component, input, output} from '@angular/core';\n\n@Component({\n  selector: 'hs-add-as-toggle',\n  standalone: false,\n  template: `\n    <div\n      class=\"d-flex flex-row justify-content-start align-items-center my-2 rounded border\"\n    >\n      <span\n        class=\"control-label input-group-text border-top-0 border-bottom-0 border-start-0\"\n      >\n        {{ 'COMMON.addAs' | translate }}\n      </span>\n      <div\n        class=\"d-flex flex-fill gap-2 justify-content-end align-items-center\"\n      >\n        <!-- Base/Layer Toggle -->\n        <div class=\"btn-group\">\n          <button\n            type=\"button\"\n            class=\"btn btn-sm btn-outline-secondary\"\n            (click)=\"setBase(true)\"\n            [ngClass]=\"{active: isBase()}\"\n          >\n            {{ 'COMPOSITONKEYWORDS.Basemap' | translate }}\n          </button>\n          <button\n            type=\"button\"\n            class=\"btn btn-sm btn-outline-secondary\"\n            (click)=\"setBase(false)\"\n            [ngClass]=\"{active: !isBase()}\"\n          >\n            {{ 'COMMON.layer' | translate }}\n          </button>\n        </div>\n\n        <!-- Group/Separate Toggle (WMS only) -->\n        @if (showGroupToggle()) {\n          <div class=\"btn-group\">\n            <button\n              type=\"button\"\n              class=\"text-capitalize btn btn-sm btn-outline-secondary\"\n              (click)=\"setGroup(true)\"\n              [ngClass]=\"{active: isGroup()}\"\n            >\n              {{ 'COMMON.group' | translate }}\n            </button>\n            <button\n              type=\"button\"\n              class=\"text-capitalize btn btn-sm btn-outline-secondary\"\n              (click)=\"setGroup(false)\"\n              [ngClass]=\"{active: !isGroup()}\"\n              [disabled]=\"isBase() === true\"\n            >\n              {{ 'COMMON.separateLayers' | translate }}\n            </button>\n          </div>\n        }\n      </div>\n    </div>\n  `,\n  styles: [\n    `\n      :host {\n        display: block;\n      }\n    `,\n  ],\n})\nexport class HsAddUrlAsToggleComponent {\n  isBase = input<boolean>(false);\n  isGroup = input<boolean>(false);\n  showGroupToggle = input<boolean>(false);\n\n  baseChange = output<boolean>();\n  groupChange = output<boolean>();\n\n  setBase(state: boolean) {\n    this.baseChange.emit(state);\n  }\n\n  setGroup(state: boolean) {\n    this.groupChange.emit(state);\n  }\n}\n","import {AfterContentInit, Component, Input, inject} from '@angular/core';\n\nimport {\n  AddDataUrlType,\n  UrlDataObject,\n  HsUrlTypeServiceModel,\n} from 'hslayers-ng/types';\nimport {HsAddDataCommonService} from 'hslayers-ng/services/add-data';\n\n@Component({\n  selector: 'hs-url-details',\n  templateUrl: './details.component.html',\n  standalone: false,\n})\nexport class HsUrlDetailsComponent implements AfterContentInit {\n  hsAddDataCommonService = inject(HsAddDataCommonService);\n\n  @Input() injectedService: HsUrlTypeServiceModel;\n  @Input() type: AddDataUrlType;\n\n  data: UrlDataObject;\n  getDimensionValues: any;\n  advancedPanelVisible = false;\n\n  ngAfterContentInit(): void {\n    this.data = this.injectedService.data;\n    if (this.type == 'wms') {\n      this.data.group = true;\n    }\n    this.getDimensionValues = this.hsAddDataCommonService.getDimensionValues;\n  }\n\n  srsChanged(): void {\n    this.data.resample_warning = this.hsAddDataCommonService.srsChanged(\n      this.data.srs,\n    );\n  }\n\n  setBase(state: boolean) {\n    this.data.base = state;\n    this.data.group = state || this.data.group;\n  }\n\n  setGroup(state: boolean) {\n    this.data.group = state;\n  }\n}\n","<div [hidden]=\"!hsAddDataCommonService.showDetails || hsAddDataCommonService.loadingInfo\">\n  <div class=\"d-flex flex-column my-3 mb-2\">\n    @if (data.group === true || type !== 'wms') {\n    <div class=\"input-group\"\n      style=\"box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px;\">\n      <span class=\"input-group-text control-label\">{{'COMMON.title' | translate }}</span>\n      <input class=\"form-control\" name=\"baseTitle\" [(ngModel)]=\"data.title\" />\n    </div>\n    }\n\n    <hs-add-as-toggle [isBase]=\"data.base\" [isGroup]=\"data.group\" [showGroupToggle]=\"type === 'wms'\"\n      (baseChange)=\"setBase($event)\" (groupChange)=\"setGroup($event)\"></hs-add-as-toggle>\n  </div>\n\n  <button type=\"button\" class=\"btn w-100 btn-outline-secondary dropdown-toggle dropdown-toggle-split mb-2\"\n    (click)=\"advancedPanelVisible = !advancedPanelVisible\">\n    {{'COMMON.advancedOptions' | translate }}\n  </button>\n  @if (advancedPanelVisible) {\n  <div class=\"form-group mt-1\" [hidden]=\"type === 'arcgis' && !data.get_map_url?.includes('image')\">\n    <div class=\"input-group\">\n      <span class=\"input-group-text control-label\">{{'ADDLAYERS.imageFormat' | translate }}</span>\n      <select class=\"form-control form-select\" name=\"imageFormat\" [(ngModel)]=\"data.image_format\">\n        @for (format of data.image_formats; track format) {\n        <option>{{format}}</option>\n        }\n      </select>\n    </div>\n  </div>\n  <div class=\"form-group capabilities_input\">\n    <label class=\"capabilities_label control-label d-flex gap-2\">\n      <input type=\"checkbox\" class=\"me-1 checkbox-lg\" name=\"queryable\" [(ngModel)]=\"data.queryable\" />\n      {{'COMMON.queryable' | translate }}\n    </label>\n  </div>\n  @if (data.queryable && data.query_formats?.length) {\n  <div class=\"form-group\">\n    <div class=\"input-group\">\n      <span class=\"input-group-text control-label\">{{'ADDLAYERS.queryFormat' | translate }}</span>\n      <select class=\"form-control form-select\" name=\"queryFormat\" [(ngModel)]=\"data.query_format\">\n        @for (format of data.query_formats; track format) {\n        <option>{{format}}</option>\n        }\n      </select>\n    </div>\n  </div>\n  }\n  <div class=\"form-group\" [hidden]=\"!data.srs || data.srs.toUpperCase() === data.map_projection\">\n    <div class=\"input-group\">\n      <span class=\"input-group-text control-label\">{{'ADDLAYERS.srs' | translate }}</span>\n      <select class=\"form-control form-select form-select\" name=\"srs\" [(ngModel)]=\"data.srs\" (change)=\"srsChanged()\">\n        @for (epsg of data.srss | slice:0:50; track $index) {\n        <option [ngValue]=\"epsg\">{{epsg | epsg}}</option>\n        }\n      </select>\n    </div>\n  </div>\n  <div class=\"form-group\" [hidden]=\"data.base === true\">\n    <div class=\"input-group\">\n      <span class=\"input-group-text control-label\">{{'ADDLAYERS.folderName' | translate }}</span>\n      <input class=\"form-control\" name=\"folderName\" [(ngModel)]=\"data.folder_name\" />\n    </div>\n  </div>\n  @if (type === 'wms' || type === 'arcgis') {\n  <p class=\"col-sm-12 alert alert-danger\" [hidden]=\"!data.use_resampling\">\n    {{'ADDLAYERS.mapAndLayerProjection' | translate }}\n  </p>\n  }\n  <div class=\"form-group\">\n    <div class=\"capabilities_input d-flex flex-column\">\n      @if (type === 'wms') {\n      <label class=\"capabilities_label control-label\"> <input type=\"checkbox\" class=\"me-1 checkbox-lg\" name=\"useTiles\"\n          [(ngModel)]=\"data.useTiles\" />\n        {{'ADDLAYERS.useTiles' | translate }}\n      </label>\n      }\n    </div>\n  </div>\n  @if (type === 'wms' || type === 'arcgis') {\n  <p class=\"col-sm-12 alert alert-warning\" [hidden]=\"data.useTiles\">\n    {{'ADDLAYERS.considerUsingTiles' | translate }}\n  </p>\n  }\n  @if (type === 'wms') {\n  <div class=\"form-group\">\n    <div class=\"input-group\">\n      <span class=\"input-group-text control-label\">{{'ADDLAYERS.tileSize' | translate }}</span>\n      <input class=\"form-control\" name=\"tileSize\" [(ngModel)]=\"data.tile_size\" />\n    </div>\n  </div>\n  }\n  }\n\n  @if (type === 'wms') {\n  <hs-target-position [(addUnder)]=\"data.add_under\"></hs-target-position>\n  }\n  <hs-layer-table [type]=\"type\" [injectedService]=\"injectedService\"> </hs-layer-table>\n  <hs-url-add class=\"w-100\" [injectedService]=\"injectedService\" [services]=\"data.services\" [layers]=\"data.layers\">\n  </hs-url-add>\n</div>","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\n\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\n\n@Component({\n  selector: 'hs-url-progress',\n  templateUrl: './progress.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class HsUrlProgressComponent {\n  hsEventBusService = inject(HsEventBusService);\n}\n","<div class=\"d-flex justify-content-center btn-group w-75 m-auto\">\n  <button class=\"btn btn-primary w-75\">{{'ADDDATA.CATALOGUE.loading' | translate }}&emsp;\n    <span class=\"ms-2 hs-loader\"></span>\n  </button>\n  <button class=\"btn btn-secondary\" (click)=\"hsEventBusService.cancelAddDataUrlRequest.next()\">&#10006;\n  </button>\n</div>\n","import {Component, EventEmitter, Input, Output, inject} from '@angular/core';\n\nimport {HsHistoryListService} from 'hslayers-ng/common/history-list';\n\n@Component({\n  selector: 'hs-common-url',\n  templateUrl: './url.component.html',\n  standalone: false,\n})\nexport class HsCommonUrlComponent {\n  private historyListService = inject(HsHistoryListService);\n\n  items;\n  what;\n  @Input() type: any;\n\n  @Input() url: any;\n\n  @Output() urlChange = new EventEmitter<any>();\n  @Output() connect = new EventEmitter<any>();\n\n  constructor() {\n    this.items = this.historyListService.readSourceHistory(this.what);\n  }\n\n  emitConnect(): void {\n    this.connect.emit();\n  }\n\n  change(): void {\n    this.urlChange.emit(this.url.trim());\n  }\n\n  historySelected(url): void {\n    this.url = url;\n    this.change();\n  }\n}\n","<div class=\"form-group\">\n  <div class=\"input-group\">\n    <input type=\"url\" class=\"form-control\" name=\"url\" [(ngModel)]=\"url\" (change)=\"change()\"\n      [placeholder]=\"'ADDLAYERS.externalDataSource' | translate \" required #uri=\"ngModel\" style=\"height: auto;\" />\n\n    @if (uri.valid) {\n    <button type=\"button\" class=\"btn btn-secondary\" (click)=\"emitConnect()\"><i class=\"fa-solid fa-link\"></i></button>\n    }\n\n    <!-- TODO: Following should be validating URL and warning user if URL is invalid -->\n    <hs-history-list type=\"button\" (historyUrlSelected)=\"historySelected($event)\" [(what)]=\"type\">\n    </hs-history-list>\n  </div>\n</div>\n","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {EpsgPipe, TrackByPropertyPipe} from 'hslayers-ng/common/pipes';\nimport {HsAddToMapButtonComponent} from 'hslayers-ng/common/add-to-map';\nimport {HsCommonUrlComponent} from './url.component';\nimport {HsHistoryListModule} from 'hslayers-ng/common/history-list';\nimport {HsLayerTableComponent} from 'hslayers-ng/common/layer-table';\nimport {HsUrlAddComponent} from './add/add.component';\nimport {HsUrlDetailsComponent} from './details/details.component';\nimport {HsUrlProgressComponent} from './progress/progress.component';\nimport {HsAddUrlAsToggleComponent} from './add-as-toggle/add-as-toggle.component';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  imports: [\n    CommonModule,\n    FormsModule,\n    TranslatePipe,\n    HsHistoryListModule,\n    HsAddToMapButtonComponent,\n    EpsgPipe,\n    TrackByPropertyPipe,\n    HsLayerTableComponent,\n  ],\n  exports: [\n    HsUrlAddComponent,\n    HsUrlProgressComponent,\n    HsCommonUrlComponent,\n    HsUrlDetailsComponent,\n    HsAddUrlAsToggleComponent,\n  ],\n  declarations: [\n    HsUrlAddComponent,\n    HsUrlProgressComponent,\n    HsCommonUrlComponent,\n    HsUrlDetailsComponent,\n    HsAddUrlAsToggleComponent,\n  ],\n})\nexport class HsCommonUrlModule {}\n","import {AddDataFileType} from 'hslayers-ng/types';\n\nexport const AddDataFileValues: Array<{id: AddDataFileType; text: string}> = [\n  {\n    id: 'kml',\n    text: 'KML',\n  },\n  {\n    id: 'gpx',\n    text: 'GPX',\n  },\n  {\n    id: 'geojson',\n    text: 'GeoJSON',\n  },\n  {\n    id: 'shp',\n    text: 'Shapefile',\n  },\n  {\n    id: 'raster',\n    text: 'Raster image',\n  },\n  {\n    id: 'raster-ts',\n    text: 'Raster time series',\n  },\n];\n","import {\n  AfterViewInit,\n  Component,\n  DestroyRef,\n  ElementRef,\n  OnInit,\n  ViewChild,\n  inject,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {Layer} from 'ol/layer';\nimport {Source} from 'ol/source';\n\nimport {\n  AddDataFileType,\n  FileDataObject,\n  FileDescriptor,\n} from 'hslayers-ng/types';\nimport {\n  HsAddDataCommonFileService,\n  HsAddDataCommonService,\n} from 'hslayers-ng/services/add-data';\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\nimport {HsUploadComponent} from 'hslayers-ng/common/upload';\n\n@Component({\n  template: '<div></div>',\n  standalone: false,\n})\nexport class HsAddDataFileBaseComponent implements OnInit, AfterViewInit {\n  hsAddDataCommonService = inject(HsAddDataCommonService);\n  hsAddDataCommonFileService = inject(HsAddDataCommonFileService);\n  hsLayoutService = inject(HsLayoutService);\n  hsConfig = inject(HsConfig);\n\n  app: string;\n  data: FileDataObject;\n  fileInput: ElementRef;\n  acceptedFormats: string;\n  baseFileType: AddDataFileType;\n  private destroyRef = inject(DestroyRef);\n\n  @ViewChild(HsUploadComponent) hsUploadComponent: HsUploadComponent;\n\n  clearInput(): void {\n    if (this.fileInput) {\n      this.fileInput.nativeElement.value = '';\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (this.hsUploadComponent) {\n      this.fileInput = this.hsUploadComponent.getFileInput();\n    }\n  }\n\n  ngOnInit(): void {\n    this.app = this.hsConfig.id;\n    this.hsAddDataCommonFileService.dataObjectChanged\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((data) => {\n        this.hsAddDataCommonService.showDetails = true;\n        Object.assign(this.data, data);\n        this.clearInput();\n      });\n\n    this.hsAddDataCommonFileService.layerAddedAsService\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((success) => {\n        if (success) {\n          this.hsLayoutService.setMainPanel('layerManager');\n          this.hsAddDataCommonService.setPanelToCatalogue();\n        }\n        this.setDataToDefault();\n        this.clearInput();\n      });\n\n    this.setDataToDefault();\n  }\n\n  /**\n   * Reset data object to its default values\n   */\n  setDataToDefault(): void {\n    this.data = {\n      abstract: '',\n      access_rights: {\n        'access_rights.write': 'private',\n        'access_rights.read': 'EVERYONE',\n      },\n      addUnder: null as Layer<Source>,\n      extract_styles: false,\n      files: [] as FileDescriptor[],\n      folder_name: '',\n      name: '',\n      saveAvailable: true,\n      saveToLayman: true,\n      serializedStyle: null,\n      srs: undefined,\n      title: '',\n      type: this.baseFileType,\n      allowedStyles: 'sldqml',\n    };\n    this.hsAddDataCommonFileService.clearParams();\n    this.hsAddDataCommonService.clearParams();\n  }\n}\n","import {AfterViewInit, Component, OnInit, inject} from '@angular/core';\n\nimport {AddDataFileType} from 'hslayers-ng/types';\nimport {DEFAULT_SHP_LOAD_TYPE} from '../../enums/load-types.const';\nimport {\n  HsAddDataCommonFileService,\n  HsAddDataCommonService,\n} from 'hslayers-ng/services/add-data';\nimport {HsAddDataFileBaseComponent} from '../file-base.component';\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsFileService} from '../file.service';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\nimport {HsUploadedFiles} from 'hslayers-ng/common/upload';\n\n@Component({\n  selector: 'hs-file-shp',\n  templateUrl: './shp.component.html',\n  standalone: false,\n})\nexport class HsFileShpComponent\n  extends HsAddDataFileBaseComponent\n  implements OnInit, AfterViewInit\n{\n  hsFileService = inject(HsFileService);\n  hsAddDataCommonService = inject(HsAddDataCommonService);\n  hsAddDataCommonFileService = inject(HsAddDataCommonFileService);\n  hsLayoutService = inject(HsLayoutService);\n  hsConfig = inject(HsConfig);\n\n  fileType: AddDataFileType = 'shp';\n\n  ngAfterViewInit(): void {\n    this.fileInput = this.hsUploadComponent.getFileInput();\n  }\n\n  ngOnInit(): void {\n    this.acceptedFormats = '.shp, .shx, .dbf, .sbn, .zip';\n    this.baseFileType = this.fileType;\n    super.ngOnInit();\n    this.data.loadAsType = DEFAULT_SHP_LOAD_TYPE;\n  }\n\n  async handleFileUpload(evt: HsUploadedFiles): Promise<void> {\n    await this.hsFileService.read(evt);\n  }\n}\n","<form class=\"form-horizontal m-3\" role=\"form\">\n  <div class=\"form-group justify-content-center\">\n    <hs-file-upload (uploaded)=\"handleFileUpload($event)\" [acceptedFormats]=\"acceptedFormats\"\n      [uploader]=\"'shpdbfshx' + app\">\n    </hs-file-upload>\n  </div>\n  @if (data.files?.length === 0) {\n  <div class=\"alert alert-warning d-flex align-items-center mt-2 justify-content-between\">\n    <p class=\"m-0\"> {{'ADDLAYERS.SHP.neededFiles' | translate }}</p>\n  </div>\n  }\n  @if (hsAddDataCommonService.showDetails) {\n  <div>\n    <div class=\"d-flex flex-row justify-content-around\">\n      <div class=\"d-flex flex-column justify-content-center\">\n        <p class=\"p-2 bg-success rounded\" style=\"color: white;\"> {{data.files.length}}\n          {{'ADDLAYERS.filesSelected' | translate }}</p>\n      </div>\n      <div class=\"d-flex flex-column mw-75\">\n        @for (file of data.files; track file.name) {\n        <p>{{file.name}}</p>\n        }\n      </div>\n    </div>\n    <hs-new-layer-form [data]=\"data\"></hs-new-layer-form>\n    <hs-add-layer-authorized [data]=\"data\"></hs-add-layer-authorized>\n  </div>\n  }\n</form>\n","import {\n  AfterViewInit,\n  Component,\n  DestroyRef,\n  ElementRef,\n  Input,\n  OnInit,\n  ViewChild,\n  inject,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {Cluster} from 'ol/source';\nimport {Feature} from 'ol';\nimport {GeoJSON} from 'ol/format';\n\nimport {AccessRightsModel} from 'hslayers-ng/types';\nimport {DEFAULT_VECTOR_LOAD_TYPE} from '../../enums/load-types.const';\nimport {\n  HsAddDataCommonFileService,\n  HsAddDataVectorUploadService,\n  HsAddDataVectorService,\n} from 'hslayers-ng/services/add-data';\nimport {HsCommonLaymanService} from 'hslayers-ng/common/layman';\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsLanguageService} from 'hslayers-ng/services/language';\nimport {HsLayerManagerService} from 'hslayers-ng/services/layer-manager';\nimport {\n  undefineEmptyString,\n  isLayerClustered,\n  isLayerVectorLayer,\n} from 'hslayers-ng/services/utils';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\nimport {HsMapService} from 'hslayers-ng/services/map';\nimport {HsToastService} from 'hslayers-ng/common/toast';\nimport {HsUploadComponent, HsUploadedFiles} from 'hslayers-ng/common/upload';\nimport {VectorFileDataType} from '../../common/advanced-options/advanced-options.component';\nimport {getShowInLayerManager} from 'hslayers-ng/common/extensions';\n\n@Component({\n  selector: 'hs-file-vector',\n  templateUrl: 'vector-file.component.html',\n  standalone: false,\n})\nexport class HsAddDataVectorFileComponent implements OnInit, AfterViewInit {\n  private hsAddDataVectorService = inject(HsAddDataVectorService);\n  private hsAddDataVectorUploadService = inject(HsAddDataVectorUploadService);\n  hsAddDataCommonFileService = inject(HsAddDataCommonFileService);\n  private hsCommonLaymanService = inject(HsCommonLaymanService);\n  private hsConfig = inject(HsConfig);\n  hsLanguageService = inject(HsLanguageService);\n  private hsLayerManagerService = inject(HsLayerManagerService);\n  private hsLayoutService = inject(HsLayoutService);\n  private hsMapService = inject(HsMapService);\n  private hsToastService = inject(HsToastService);\n\n  @Input() fileType: 'geojson' | 'kml' | 'gpx';\n\n  @ViewChild(HsUploadComponent) hsUploadComponent: HsUploadComponent;\n  app: string;\n  acceptedFormats: string;\n  uploadType = 'new';\n  data: VectorFileDataType;\n  fileInput: ElementRef;\n  access_rights: AccessRightsModel = {\n    'access_rights.write': 'private',\n    'access_rights.read': 'EVERYONE',\n  };\n  private destroyRef = inject(DestroyRef);\n\n  ngAfterViewInit(): void {\n    this.fileInput = this.hsUploadComponent.getFileInput();\n  }\n\n  ngOnInit(): void {\n    this.app = this.hsConfig.id;\n    this.hsAddDataCommonFileService.dataObjectChanged\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((data) => {\n        this.data.showDetails = true;\n        Object.assign(this.data, data);\n        // this.clearInput();\n      });\n\n    this.getAcceptedFormats();\n    this.setToDefault();\n  }\n\n  getAcceptedFormats(): void {\n    switch (this.fileType) {\n      case 'kml':\n        this.acceptedFormats = '.kml';\n        break;\n      case 'gpx':\n        this.acceptedFormats = '.gpx';\n        break;\n      default:\n        this.acceptedFormats = '.geojson, .json';\n        break;\n    }\n  }\n\n  /**\n   * Handler for adding vector file, file in template.\n   */\n  async add(): Promise<void> {\n    if (this.uploadType == 'new') {\n      if (this.data.loadAsType === 'wms') {\n        await this.addAsWms();\n      } else {\n        const response = await this.hsAddDataVectorService.addNewLayer(\n          this.data,\n        );\n        if (!response.complete) {\n          return;\n        }\n      }\n    } else {\n      await this.updateExistingLayer();\n    }\n    this.moveToLayerManager();\n  }\n\n  /**\n   * Upload vector file to Layman then load it as WMS\n   * Converts already parsed features into GeoJSON.\n   * We intentionally ignore if the file was originally KML or GPX as only GeoJSON is supported natively by Layman.\n   */\n  async addAsWms(): Promise<void> {\n    this.data.files = [\n      {\n        name: this.data.name + '.geojson',\n        type: '',\n        // It is kinda silly to first parse and then serialise the features again, but the current UI/IX design prevents doing it differently\n        content: new GeoJSON().writeFeatures(this.data.features),\n      },\n    ];\n    this.data.srs = this.hsMapService.getCurrentProj().getCode();\n    return await this.hsAddDataCommonFileService.addAsService(this.data);\n  }\n\n  /**\n   * After layer has successfully been added to the map, move to LM panel and clean up the code\n   */\n  moveToLayerManager(): void {\n    this.hsLayoutService.setMainPanel('layerManager');\n    this.hsAddDataVectorService.setPanelToCatalogue();\n    this.setToDefault();\n  }\n\n  async updateExistingLayer(): Promise<void> {\n    let features = this.data.features.length > 0 ? this.data.features : [];\n    if (this.fileType != 'geojson') {\n      const nonJson =\n        await this.hsAddDataVectorUploadService.convertUploadedData(\n          this.fileInput.nativeElement.files[0],\n        );\n      features = nonJson.features; //proper typing will get rid of this\n    }\n    if (isLayerClustered(this.data.sourceLayer)) {\n      (this.data.sourceLayer.getSource() as Cluster<Feature>)\n        .getSource()\n        .addFeatures(features);\n    } else {\n      this.data.sourceLayer.getSource().addFeatures(features);\n    }\n  }\n\n  handleFileUpload(evt: HsUploadedFiles): void {\n    Array.from(evt.fileList).forEach(async (f) => {\n      const uploadedData =\n        await this.hsAddDataVectorUploadService.readUploadedFile(f);\n      if (uploadedData !== undefined && !uploadedData.error) {\n        if (uploadedData.url !== undefined) {\n          this.data.base64url = uploadedData.url;\n        } else {\n          this.data.url = undefined;\n          this.data.base64url = undefined;\n        }\n\n        this.data.name =\n          uploadedData.name !== undefined ? uploadedData.name : '';\n        this.data.title =\n          uploadedData.title !== undefined ? uploadedData.title : '';\n        this.data.srs =\n          uploadedData.srs !== undefined\n            ? uploadedData.srs.getCode()\n            : 'EPSG:4326';\n        this.data.abstract =\n          uploadedData.abstract !== undefined ? uploadedData.abstract : '';\n\n        if (uploadedData.features !== undefined) {\n          this.data.features = uploadedData.features;\n          this.data.featureCount = uploadedData.features.length;\n        } else {\n          this.data.features = [];\n          this.data.featureCount = 0;\n        }\n        if (uploadedData.nativeFeatures !== undefined) {\n          this.data.nativeFeatures = uploadedData.nativeFeatures;\n        }\n\n        if (uploadedData.nativeSRS !== undefined) {\n          this.data.nativeSRS = uploadedData.nativeSRS.getCode();\n        }\n\n        if (uploadedData.type !== undefined) {\n          this.data.type = uploadedData.type;\n        } else {\n          this.data.type = this.fileType;\n        }\n        if (this.hsAddDataVectorService.isKml(this.data.type, this.data.url)) {\n          this.data.saveToLayman = false;\n          this.data.saveAvailable = false;\n        } else {\n          this.data.saveAvailable = true;\n          this.data.saveToLayman = this.hsCommonLaymanService.isAuthenticated();\n          if (this.data.saveToLayman) {\n            this.data.loadAsType = DEFAULT_VECTOR_LOAD_TYPE;\n          }\n        }\n        //add layman endpoint url as url to allow sync\n        if (\n          undefineEmptyString(this.data.url) === undefined &&\n          this.data.saveToLayman\n        ) {\n          this.data.url = this.hsCommonLaymanService.layman()?.url;\n        }\n        this.data.showDetails = true;\n      } else {\n        this.setToDefault();\n\n        this.hsToastService.createToastPopupMessage(\n          this.hsLanguageService.getTranslation(\n            'ADDLAYERS.ERROR.someErrorHappened',\n            undefined,\n          ),\n          this.hsLanguageService.getTranslationIgnoreNonExisting(\n            'ADDLAYERS',\n            `${uploadedData?.error ?? 'someErrorHappened'}`,\n            undefined,\n          ),\n          {disableLocalization: true},\n        );\n      }\n    });\n  }\n\n  setUploadType(type: string): void {\n    this.uploadType = type;\n    if (type == 'existing') {\n      this.data.vectorLayers = this.hsLayerManagerService.data.layers.filter(\n        (layer) => {\n          const showInLM = getShowInLayerManager(layer.layer);\n          return (\n            isLayerVectorLayer(layer.layer) &&\n            (showInLM || showInLM === undefined)\n          );\n        },\n      );\n    }\n  }\n\n  setToDefault(): void {\n    this.setDataToDefault();\n    this.data.showDetails = false;\n    this.uploadType = 'new';\n    if (this.fileInput) {\n      this.fileInput.nativeElement.value = '';\n    }\n  }\n\n  /**\n   * Reset data object to its default values\n   */\n  setDataToDefault(): void {\n    this.data = {\n      // Not possible to save KML to layman yet\n      abstract: '',\n      addUnder: null,\n      base64url: '',\n      extract_styles: false,\n      featureCount: 0,\n      features: [],\n      nativeFeatures: [],\n      folder_name: '',\n      name: '',\n      saveAvailable: false,\n      saveToLayman: false,\n      showDetails: false,\n      srs: 'EPSG:4326',\n      nativeSRS: undefined,\n      title: '',\n      type: this.fileType,\n      url: undefined,\n      serializedStyle: null,\n      access_rights: {\n        'access_rights.write': 'private',\n        'access_rights.read': 'EVERYONE',\n      },\n      sourceLayer: null,\n      vectorLayers: null,\n      allowedStyles: 'sldqml',\n    };\n    this.hsAddDataCommonFileService.clearParams();\n  }\n}\n","<form class=\"form-horizontal\" role=\"form\">\n  <div class=\"form-group m-3\">\n    <hs-file-upload (uploaded)=\"handleFileUpload($event)\" [uploader]=\"'hs-file-vector' + app\"\n      [acceptedFormats]=\"acceptedFormats\">\n    </hs-file-upload>\n  </div>\n  @if (data.showDetails) {\n    <div>\n      <div class=\"border-bottom d-flex flex-row justify-content-between\">\n        <p class=\"align-self-center m-0\">\n          {{hsLanguageService.getTranslationIgnoreNonExisting('ADDLAYERS.Vector','addingFiles',{featuresCount:data.featureCount})}}\n        </p>\n        <ul class=\"nav nav-tabs justify-content-end\">\n          <li class=\"nav-item\">\n            <a class=\"nav-link text-secondary\" [ngClass]=\"{'active': uploadType === 'new'}\"\n            (click)=\"setUploadType('new')\">{{'LAYERS.newLayer' | translate }}</a>\n          </li>\n          <li class=\"nav-item\">\n            <a class=\"nav-link text-secondary\" [ngClass]=\"{'active': uploadType === 'existing'}\"\n            (click)=\"setUploadType('existing')\">{{'LAYERS.existingLayer' | translate }}</a>\n          </li>\n        </ul>\n      </div>\n      <div [hidden]=\"uploadType === 'new'\">\n        <div class=\"form-group my-3\">\n          <label class=\"capabilities_label control-label\">{{'LAYERS.existingLayer' | translate }}</label>\n          <select class=\"hsl-custom-select\" name=\"sourceLayer\" [(ngModel)]=\"data.sourceLayer\" style=\"flex-grow: 1;\">\n            <option [ngValue]=\"null\" [disabled]=\"true\" selected hidden> {{'ADDLAYERS.Vector.chooseLayer' |\n            translate }}</option>\n            @for (lyr of data.vectorLayers; track lyr) {\n              <option [ngValue]=\"lyr.layer\">{{ lyr.title }} </option>\n            }\n          </select>\n        </div>\n      </div>\n      <div [hidden]=\"uploadType === 'existing'\">\n        <hs-new-layer-form [data]=\"data\"></hs-new-layer-form>\n      </div>\n      <hs-add-to-map class=\"w-100 mt-2\" [disabled]=\"uploadType === 'new' ? !data.title : !data.sourceLayer\" (add)=\"add()\"\n      [loading]=\"hsAddDataCommonFileService.loadingToLayman\"></hs-add-to-map>\n    </div>\n  }\n</form>\n","import {\n  Component,\n  DestroyRef,\n  ElementRef,\n  Input,\n  OnInit,\n  ViewChild,\n  inject,\n} from '@angular/core';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {NgbAccordionDirective} from '@ng-bootstrap/ng-bootstrap';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {FileDataObject, FileDescriptor} from 'hslayers-ng/types';\nimport {HsAddDataCommonFileService} from 'hslayers-ng/services/add-data';\nimport {HsToastService} from 'hslayers-ng/common/toast';\n\n@Component({\n  selector: 'hs-file-raster-timeseries',\n  templateUrl: './raster-timeseries.component.html',\n  styleUrls: ['./raster-timeseries.component.scss'],\n  standalone: false,\n})\nexport class RasterTimeseriesComponent implements OnInit {\n  private fb = inject(FormBuilder);\n  private hsToastService = inject(HsToastService);\n  private hsAddDataCommonFileService = inject(HsAddDataCommonFileService);\n\n  @Input() data: FileDataObject;\n\n  @ViewChild('acc') accordion: NgbAccordionDirective;\n  @ViewChild('hsTimeseriesTitle') fileTitleInput: ElementRef<HTMLInputElement>;\n\n  private destroyRef = inject(DestroyRef);\n\n  form: FormGroup;\n  formVisible = false;\n\n  tsData: FileDescriptor;\n  fileTitle: string;\n\n  selectedString: string;\n\n  supportedRegex = [\n    {\n      regex: /^[0-9]{8}T([0-9]{6}([0-9]{3})?)(Z)?$/,\n      timeregex: '[0-9]{8}T[0-9]{6}',\n    },\n    {\n      regex: /^[0-9._/-]+(?<![a-zA-Z])$/,\n      timeregex: undefined,\n    },\n  ];\n\n  constructor() {\n    this.form = this.fb.group({\n      /* Regex string encoding of date pattern used in file name  */\n      regex: ['', Validators.required],\n      verified: [false, Validators.requiredTrue],\n    });\n  }\n\n  ngOnInit() {\n    this.tsData = this.data.files[0];\n\n    this.getFileTitle(this.tsData.content);\n\n    this.hsAddDataCommonFileService.dataObjectChanged\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((data) => {\n        if (data.files) {\n          this.resetForm();\n          this.data.srs = undefined;\n          this.getFileTitle(data.files[0].content);\n        }\n      });\n  }\n\n  private async getFileTitle(content: string | ArrayBuffer): Promise<void> {\n    const jszip = (await import('jszip')).default;\n    jszip.loadAsync(content).then((zip) => {\n      // Get an array of filenames within the zip archive\n      const filenames = Object.keys(zip.files);\n      this.fileTitle = filenames[0];\n    });\n  }\n\n  /** On click handler used by user to mark inferred inputs as verified */\n  verifyInputs(): void {\n    this.form.patchValue({verified: true});\n    this.accordion.collapse('hs-timeseries-acc');\n    this.data.timeRegex = `${this.form.controls.regex.value}`;\n  }\n\n  /**\n   * Checks the validity of the selected string\n   * String is valid if:\n   * - matches one of the following regex datetime formats\n   *    -[0-9]\\{8\\}T[0-9]\\{9\\}Z eg 20220510T050948Z\n   *    -[0-9]\\{8\\}T[0-9]\\{9\\} eg. 20220510T050948\n   * - consist of digits only or digits and separators  ., _, /, or -\n   */\n  private checkStringValidity(): string | undefined {\n    return this.supportedRegex\n      .map((val) => val.regex)\n      .find((r: RegExp) => {\n        return r.test(this.selectedString);\n      })?.source;\n  }\n\n  selectDateString(e: MouseEvent): void {\n    e.preventDefault();\n    //Reset verified control and data value (it's added on verify to control form submission)\n    this.form.patchValue({verified: false});\n    this.data.timeRegex = undefined;\n    //Get selected string\n    this.selectedString = this.getSelectedText();\n\n    const isValid = this.checkStringValidity();\n    if (isValid) {\n      this.form.patchValue({\n        regex: this.inferRegexPatternFromString(this.selectedString, isValid),\n      });\n      this.formVisible = true;\n    } else {\n      this.resetForm();\n\n      this.hsToastService.createToastPopupMessage(\n        'Selected string is invalid',\n        'Selected string is missing or is not supported.',\n        {\n          type: 'danger',\n          customDelay: 7000,\n        },\n      );\n    }\n  }\n\n  /**\n   * Get first special character from string selected by user\n   * Assuming it's separator\n   */\n  private getSeparator(input: string): string {\n    const separators = input.match(/[._\\/-]/g) || [];\n    return separators[0];\n  }\n\n  /**\n   *Infer regex pattern from selected string\n   */\n  inferRegexPatternFromString(timestamp: string, regex: string): string {\n    if (regex !== '^[0-9._/-]+(?<![a-zA-Z])$') {\n      const match = timestamp.match(regex);\n      const hasMs = match[1].length == 9;\n      let timeregex = this.supportedRegex[0].timeregex;\n      //has Z postfix\n      if (match[3]) {\n        //If milliseconds are included in timestamp ignore them\n        timeregex = hasMs ? `(${timeregex})${match[2]}(Z)` : `${timeregex}Z`;\n      }\n      //timeregex alone would work but in UI its a bit more clear that\n      //only first 6 time digits are used\n      return hasMs ? `(${timeregex})${match[2]}` : timeregex;\n    }\n    const separator = this.getSeparator(timestamp);\n    if (separator) {\n      let parts = timestamp.split(separator);\n      parts = parts.map((part) => `([0-9]{${part.length}})`);\n      return parts.join(separator);\n    }\n    return `[0-9]{${this.selectedString.length}}`;\n  }\n\n  /**\n   * Extract selected text from element.\n   * Necessary workaround because of Firefox bug https://bugzilla.mozilla.org/show_bug.cgi?id=85686\n   */\n  private getSelectedText(): string {\n    const inputElement = this.fileTitleInput.nativeElement;\n    return inputElement.value.substring(\n      inputElement.selectionStart,\n      inputElement.selectionEnd,\n    );\n  }\n\n  private resetSelection(): void {\n    const inputElement = this.fileTitleInput.nativeElement;\n    inputElement.selectionStart = undefined;\n    inputElement.selectionEnd = undefined;\n  }\n\n  /**\n   * Reset form controls to default values\n   */\n  private resetForm(): void {\n    this.selectedString = undefined;\n    this.formVisible = false;\n    this.data.timeRegex = undefined;\n    this.form.patchValue({verified: false});\n    this.resetSelection();\n  }\n}\n","<div class=\"d-flex flex-column justify-content-between w-100 pb-2\">\n    <div class=\"d-flex w-100 flex-column\">\n        <form class=\"input-group\">\n            <input #hsTimeseriesTitle readonly type=\"text\" class=\"form-control\" id=\"hs-timeseries-title\"\n                [value]=\"fileTitle\" [ngClass]=\"{'is-invalid': !selectedString}\">\n            <button type=\"button\" (click)=\"selectDateString($event)\" class=\"btn btn-sm btn-primary\">{{'COMMON.select' |\n                translate }}</button>\n        </form>\n        <label for=\"hs-timeseries-title\" class=\"text-danger small pt-1\"\n            [hidden]=\"selectedString\">{{'ADDDATA.FILE.highlightAndSelect' | translate }}</label>\n\n    </div>\n\n    <div ngbAccordion #acc=\"ngbAccordion\" class=\"my-2\" [hidden]=\"!formVisible\">\n        <div ngbAccordionItem [collapsed]=\"false\" id=\"hs-timeseries-acc\">\n            <div ngbAccordionHeader>\n                <button ngbAccordionButton class=\"accordion-button text-black-50\">{{'ADDDATA.FILE.selectedString' |\n                    translate }}: <span class=\"text-black ps-1\">{{selectedString}}</span></button>\n            </div>\n            <div ngbAccordionCollapse>\n                <form ngbAccordionBody [formGroup]=\"form\" class=\"d-flex flex-column\">\n                    <ng-template>\n                        <div class=\"form-floating mt-2 flex-fill\"\n                            [ngClass]=\"{'verification-pending': !form.get('verified').value}\">\n                            <input formControlName=\"regex\" type=\"text\" class=\"form-control form-control-sm\"\n                                id=\"hs-timeseries-regex\" [ngClass]=\"{'is-valid': form.get('verified').value}\">\n                            <label for=\"hs-timeseries-regex\">{{'ADDDATA.FILE.inferredRegex' |\n                                translate }}</label>\n                        </div>\n                        <div class=\"d-flex justify-content-between\">\n                            <p class=\"text-black-50 small pt-1\">{{'ADDDATA.FILE.verifyInferredRegex' |\n                                translate }}</p>\n                            <button type=\"button\" (click)=\"verifyInputs()\"\n                                class=\"btn btn-sm btn-primary m-2 w-25\">{{'COMMON.confirm' |\n                                translate }}</button>\n                        </div>\n                    </ng-template>\n                </form>\n            </div>\n        </div>\n    </div>\n</div>\n","import {Component, Input, OnInit, inject} from '@angular/core';\n\nimport {AddDataFileType} from 'hslayers-ng/types';\nimport {\n  HsAddDataCommonFileService,\n  HsAddDataCommonService,\n} from 'hslayers-ng/services/add-data';\nimport {HsAddDataFileBaseComponent} from '../file-base.component';\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsFileService} from '../file.service';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\nimport {HsUploadedFiles} from 'hslayers-ng/common/upload';\n\n@Component({\n  selector: 'hs-file-raster',\n  templateUrl: 'raster.component.html',\n  standalone: false,\n})\nexport class HsFileRasterComponent\n  extends HsAddDataFileBaseComponent\n  implements OnInit\n{\n  hsFileService = inject(HsFileService);\n  hsAddDataCommonService = inject(HsAddDataCommonService);\n  hsAddDataCommonFileService = inject(HsAddDataCommonFileService);\n  hsLayoutService = inject(HsLayoutService);\n  hsConfig = inject(HsConfig);\n\n  @Input() fileType: Extract<AddDataFileType, 'raster' | 'raster-ts'>;\n\n  ngOnInit(): void {\n    this.baseFileType = this.fileType;\n    this.acceptedFormats =\n      this.fileType === 'raster-ts'\n        ? '.zip'\n        : '.tif, .tifw, .tiff, .tiffw, .gtiff, .gtiffw, .tfw, .png, .pngw, .pgw, .png.aux.xml, .jpg, .jpgw, .jgw, .jpg.aux.xml, .jp2, .jp2w, .j2w, .zip, .wld';\n    super.ngOnInit();\n    this.data.allowedStyles = 'sld';\n  }\n\n  async handleFileUpload(evt: HsUploadedFiles): Promise<void> {\n    await this.hsFileService.read(evt);\n  }\n}\n","<form class=\"form-horizontal\" role=\"form\" name=\"frmRaster\">\n  <div class=\"form-group m-3\">\n    <hs-file-upload (uploaded)=\"handleFileUpload($event)\" [uploader]=\"'hs-file-raster' + app\"\n      [acceptedFormats]=\"acceptedFormats\">\n    </hs-file-upload>\n  </div>\n  @if (hsAddDataCommonService.showDetails) {\n  <div>\n    <div class=\"d-flex flex-row justify-content-around\">\n      <div class=\"d-flex flex-column justify-content-center\">\n        <p class=\"p-2 bg-success rounded\" style=\"color: white;\"> {{data.files.length}}\n          {{'ADDLAYERS.filesSelected' | translate }}</p>\n      </div>\n      <div class=\"d-flex flex-column mw-75\">\n        @for (file of data.files; track file.name) {\n        <p>{{file.name}}</p>\n        }\n      </div>\n    </div>\n    @if (fileType === 'raster-ts') {\n    <hs-file-raster-timeseries [data]=\"data\"> </hs-file-raster-timeseries>\n    }\n    <hs-new-layer-form [data]=\"data\"></hs-new-layer-form>\n    <hs-add-layer-authorized [data]=\"data\"></hs-add-layer-authorized>\n  </div>\n  }\n</form>\n","import {Component, inject} from '@angular/core';\n\nimport {AddDataFileType, FILES_SUPPORTED} from 'hslayers-ng/types';\nimport {AddDataFileValues} from './file-type-values';\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsLanguageService} from 'hslayers-ng/services/language';\n\n@Component({\n  selector: 'hs-add-data-file',\n  templateUrl: './file.component.html',\n  standalone: false,\n})\nexport class HsAddDataFileComponent {\n  hsConfig = inject(HsConfig);\n  hsLanguageService = inject(HsLanguageService);\n\n  typeSelected: AddDataFileType;\n  types: {id: AddDataFileType; text: string}[];\n\n  constructor() {\n    if (Array.isArray(this.hsConfig.uploadTypes)) {\n      this.types = this.hsConfig.uploadTypes\n        .filter((type) => FILES_SUPPORTED.includes(type))\n        .map((type) => AddDataFileValues.find((v) => v.id == type));\n    } else {\n      this.types = AddDataFileValues;\n    }\n  }\n\n  selectType(type: AddDataFileType): void {\n    this.typeSelected = type;\n  }\n\n  //Not being used\n  isVectorType(): boolean {\n    return (\n      this.typeSelected == 'kml' ||\n      this.typeSelected == 'gpx' ||\n      this.typeSelected == 'geojson'\n    );\n  }\n}\n","<div class=\"d-flex justify-content-center flex-column align-items-center m-3\">\n  <div class=\"container px-md-5\">\n    <div class=\"row justify-content-center gap-1\">\n      @for (type of types; track type) {\n      <button [ngClass]=\"{'active': type.id === typeSelected }\" (click)=\"selectType(type.id)\"\n        class=\"btn btn-outline-secondary rounded btn-sm col-sm-3 flex-grow-1\">\n        {{hsLanguageService.getTranslationIgnoreNonExisting('ADDLAYERS', type.text, undefined)}}\n        <!-- TODO: Remove function call from template -->\n      </button>\n      }\n    </div>\n  </div>\n  <div class=\"w-100 pt-3\">\n    @if (typeSelected === 'geojson') {\n    <hs-file-vector [fileType]=\"typeSelected\"></hs-file-vector>\n    }\n    @if (typeSelected === 'gpx') {\n    <hs-file-vector [fileType]=\"typeSelected\"></hs-file-vector>\n    }\n    @if (typeSelected === 'kml') {\n    <hs-file-vector [fileType]=\"typeSelected\"></hs-file-vector>\n    }\n    @if (typeSelected === 'shp') {\n    <hs-file-shp></hs-file-shp>\n    }\n    @if (typeSelected === 'raster') {\n    <hs-file-raster [fileType]=\"typeSelected\"></hs-file-raster>\n    }\n    @if (typeSelected === 'raster-ts') {\n    <hs-file-raster [fileType]=\"typeSelected\"></hs-file-raster>\n    }\n  </div>\n</div>","import {Component, DestroyRef, Input, OnInit, inject} from '@angular/core';\n\nimport {Layer} from 'ol/layer';\nimport {Source} from 'ol/source';\n\nimport {\n  HsAddDataCommonFileService,\n  HsAddDataVectorService,\n} from 'hslayers-ng/services/add-data';\nimport {HsHistoryListService} from 'hslayers-ng/common/history-list';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\nimport {VectorDataObject} from 'hslayers-ng/types';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\n@Component({\n  selector: 'hs-url-vector',\n  templateUrl: 'vector-url.component.html',\n  standalone: false,\n})\nexport class HsAddDataVectorUrlComponent implements OnInit {\n  hsHistoryListService = inject(HsHistoryListService);\n  hsAddDataVectorService = inject(HsAddDataVectorService);\n  hsAddDataCommonFileService = inject(HsAddDataCommonFileService);\n  hsLayoutService = inject(HsLayoutService);\n\n  @Input() fileType: 'geojson' | 'kml' | 'gpx';\n\n  data: VectorDataObject;\n  private destroyRef = inject(DestroyRef);\n\n  connect = async (): Promise<void> => {\n    const obtainable = await this.hsAddDataCommonFileService.isUrlObtainable(\n      this.data.url,\n    );\n    if (obtainable) {\n      this.hsHistoryListService.addSourceHistory(this.fileType, this.data.url);\n      this.data.showDetails = true;\n    }\n  };\n\n  ngOnInit(): void {\n    this.hsAddDataCommonFileService.dataObjectChanged\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((data) => {\n        this.data.showDetails = true;\n        Object.assign(this.data, data);\n        // this.clearInput();\n      });\n    this.setDataToDefault();\n  }\n\n  /**\n   * Handler for adding non-wms service, file in template.\n   */\n  async add(): Promise<void> {\n    const response: {layer; complete: boolean} =\n      await this.hsAddDataVectorService.addNewLayer(this.data);\n    if (response.complete) {\n      this.hsLayoutService.setMainPanel('layerManager');\n      this.setDataToDefault();\n    }\n  }\n  /**\n   * Reset data object to its default values\n   */\n  setDataToDefault(): void {\n    this.data = {\n      // Not possible to save KML to layman yet\n      abstract: '',\n      addUnder: null as Layer<Source>,\n      base64url: '',\n      extract_styles: false,\n      featureCount: 0,\n      features: [],\n      folder_name: '',\n      name: '',\n      saveAvailable: false,\n      saveToLayman: false,\n      showDetails: false,\n      serializedStyle: null,\n      srs: 'EPSG:4326',\n      title: '',\n      type: this.fileType,\n      url: undefined,\n      allowedStyles: 'sldqml',\n    };\n  }\n}\n","<form class=\"form-horizontal\" role=\"form\">\n  <hs-common-url [type]=\"fileType\" [(url)]=\"data.url\" (connect)=\"connect()\">\n  </hs-common-url>\n\n  @if (data.showDetails) {\n    <div>\n      <hs-new-layer-form [data]=\"data\"></hs-new-layer-form>\n      <hs-add-to-map [disabled]=\"!data.title\" (add)=\"add()\" class=\"w-100 mt-2\"></hs-add-to-map>\n    </div>\n  }\n\n</form>\n","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsAddDataCommonModule} from '../common/common.module';\nimport {HsAddDataVectorFileComponent} from './vector-file/vector-file.component';\nimport {HsAddDataVectorUrlComponent} from './vector-url/vector-url.component';\nimport {HsAddToMapButtonComponent} from 'hslayers-ng/common/add-to-map';\nimport {HsCommonUrlModule} from '../common/url/url.module';\nimport {HsLaymanCurrentUserComponent} from 'hslayers-ng/common/layman';\nimport {HsUploadModule} from 'hslayers-ng/common/upload';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  imports: [\n    CommonModule,\n    FormsModule,\n    TranslatePipe,\n    HsAddDataCommonModule,\n    HsCommonUrlModule,\n    HsLaymanCurrentUserComponent,\n    HsUploadModule,\n    HsAddToMapButtonComponent,\n  ],\n  exports: [HsAddDataVectorFileComponent, HsAddDataVectorUrlComponent],\n  declarations: [HsAddDataVectorFileComponent, HsAddDataVectorUrlComponent],\n})\nexport class HsAddDataVectorModule {}\n","import {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {NgModule} from '@angular/core';\nimport {NgbAccordionModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsAddDataCommonModule} from '../../common/common.module';\nimport {HsCommonUrlModule} from '../../common/url/url.module';\nimport {HsFileRasterComponent} from './raster.component';\nimport {HsUploadModule} from 'hslayers-ng/common/upload';\nimport {RasterTimeseriesComponent} from './raster-timeseries/raster-timeseries.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    HsAddDataCommonModule,\n    HsCommonUrlModule,\n    TranslatePipe,\n    HsUploadModule,\n    NgbAccordionModule,\n  ],\n  exports: [HsFileRasterComponent],\n  declarations: [HsFileRasterComponent, RasterTimeseriesComponent],\n  providers: [],\n})\nexport class HsFileRasterModule {}\n","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsAddDataCommonModule} from '../../common/common.module';\nimport {HsFileShpComponent} from './shp.component';\nimport {HsUploadModule} from 'hslayers-ng/common/upload';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  imports: [\n    CommonModule,\n    FormsModule,\n    TranslatePipe,\n    HsUploadModule,\n    HsAddDataCommonModule,\n  ],\n  exports: [HsFileShpComponent],\n  declarations: [HsFileShpComponent],\n})\nexport class HsFileShpModule {}\n","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\n\nimport {HsAddDataFileBaseComponent} from './file-base.component';\nimport {HsAddDataFileComponent} from './file.component';\nimport {HsAddDataVectorModule} from '../vector/vector.module';\nimport {HsFileRasterModule} from './raster/raster.module';\nimport {HsFileShpModule} from './shp/shp.module';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  declarations: [HsAddDataFileComponent, HsAddDataFileBaseComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    HsFileShpModule,\n    HsAddDataVectorModule,\n    HsFileRasterModule,\n  ],\n  exports: [HsAddDataFileComponent, HsAddDataFileBaseComponent],\n})\nexport class HsAddDataFileModule {}\n","import {Component, inject} from '@angular/core';\n\nimport {\n  HsAddDataCommonService,\n  HsAddDataOwsService,\n  HsUrlArcGisService,\n} from 'hslayers-ng/services/add-data';\n\n@Component({\n  selector: 'hs-url-arcgis',\n  templateUrl: './arcgis.component.html',\n  standalone: false,\n})\nexport class HsUrlArcGisComponent {\n  hsAddDataCommonService = inject(HsAddDataCommonService);\n  hsUrlArcGisService = inject(HsUrlArcGisService);\n  hsAddDataOwsService = inject(HsAddDataOwsService);\n}\n","<form class=\"form-horizontal\" name=\"frmConnectArcgis\" role=\"form\">\n  <hs-common-url type=\"arcgis\" [(url)]=\"hsAddDataCommonService.url\" (connect)=\"hsAddDataOwsService.connect()\">\n  </hs-common-url>\n  @if (hsAddDataCommonService.loadingInfo) {\n    <hs-url-progress></hs-url-progress>\n  }\n  <hs-url-details [injectedService]=\"hsUrlArcGisService\" type=\"arcgis\"></hs-url-details>\n</form>\n","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\n\nimport {HsAddDataCommonModule} from '../../common/common.module';\nimport {HsCommonUrlModule} from '../../common/url/url.module';\nimport {HsUrlArcGisComponent} from './arcgis.component';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  imports: [\n    CommonModule,\n    FormsModule,\n    HsAddDataCommonModule,\n    HsCommonUrlModule,\n  ],\n  exports: [HsUrlArcGisComponent],\n  declarations: [HsUrlArcGisComponent],\n})\nexport class HsUrlArcGisModule {}\n","import {Component, inject} from '@angular/core';\n\nimport {\n  HsAddDataCommonService,\n  HsAddDataOwsService,\n  HsUrlWfsService,\n} from 'hslayers-ng/services/add-data';\n\n@Component({\n  selector: 'hs-url-wfs',\n  templateUrl: './wfs.component.html',\n  standalone: false,\n})\nexport class HsUrlWfsComponent {\n  hsUrlWfsService = inject(HsUrlWfsService);\n  hsAddDataOwsService = inject(HsAddDataOwsService);\n  hsAddDataCommonService = inject(HsAddDataCommonService);\n\n  title = '';\n}\n","<form class=\"form-horizontal\" name=\"frmConnectWfs\" role=\"form\">\n  <hs-common-url type=\"wfs\" [(url)]=\"hsAddDataCommonService.url\" (connect)=\"hsAddDataOwsService.connect()\">\n  </hs-common-url>\n\n  @if (hsAddDataCommonService.loadingInfo) {\n    <hs-url-progress></hs-url-progress>\n  }\n\n  @if (hsAddDataCommonService.showDetails && !hsAddDataCommonService.loadingInfo) {\n    <div class=\"card p-2\">\n      <!-- FIXME: unused -->\n      <div class=\"card-title text-center fw-bold\">{{title}}</div>\n      <div class=\"form-floating mb-2\">\n        <input class=\"form-control\" [(ngModel)]=\"hsUrlWfsService.data.folder_name\" name=\"hs-addData-wfs-folder\"\n          [placeholder]=\"'ADDLAYERS.folderName' | translate \" />\n        <label for=\"hs-addData-wfs-folder\">{{'ADDLAYERS.folderName' | translate }}</label>\n      </div>\n      <ul class=\"list-group\">\n        <hs-layer-table [type]=\"'wfs'\" [injectedService]=\"hsUrlWfsService\"> </hs-layer-table>\n        <li class=\"list-group-item hs-ows-layerlistheading clearfix bg-white\">\n          <div class=\"d-flex justify-content-center\">\n            <hs-url-add class=\"w-100\" [injectedService]=\"hsUrlWfsService\"\n              [layers]=\"hsUrlWfsService.data.layers\">\n            </hs-url-add>\n            @if (hsUrlWfsService.loadingFeatures) {\n              <button\n                class=\"btn btn-primary w-75\">{{'ADDLAYERS.loadingFeaturePleaseWait' | translate\n                }}&emsp;<span class=\"ms-2 hs-loader\"></span></button>\n              }\n            </div>\n          </li>\n        </ul>\n      </div>\n    }\n  </form>\n","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsAddDataCommonModule} from '../../common/common.module';\nimport {HsCommonUrlModule} from '../../common/url/url.module';\nimport {HsLayerTableComponent} from 'hslayers-ng/common/layer-table';\nimport {HsUrlWfsComponent} from './wfs.component';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  imports: [\n    CommonModule,\n    FormsModule,\n    TranslatePipe,\n    HsAddDataCommonModule,\n    HsCommonUrlModule,\n    HsLayerTableComponent,\n  ],\n  exports: [HsUrlWfsComponent],\n  declarations: [HsUrlWfsComponent],\n})\nexport class HsUrlWfsModule {}\n","import {Component, inject} from '@angular/core';\n\nimport {\n  HsAddDataCommonService,\n  HsAddDataOwsService,\n  HsUrlWmsService,\n} from 'hslayers-ng/services/add-data';\n\n@Component({\n  selector: 'hs-url-wms',\n  templateUrl: './wms.component.html',\n  standalone: false,\n})\nexport class HsUrlWmsComponent {\n  hsAddDataCommonService = inject(HsAddDataCommonService);\n  hsAddDataOwsService = inject(HsAddDataOwsService);\n  hsUrlWmsService = inject(HsUrlWmsService);\n}\n","<form class=\"form-horizontal\" name=\"frmConnectWms\" role=\"form\">\n  <hs-common-url type=\"wms\" [(url)]=\"hsAddDataCommonService.url\" (connect)=\"hsAddDataOwsService.connect()\">\n  </hs-common-url>\n  @if (hsAddDataCommonService.loadingInfo) {\n    <hs-url-progress></hs-url-progress>\n  }\n  <hs-url-details [injectedService]=\"hsUrlWmsService\" type=\"wms\"></hs-url-details>\n</form>","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\n\nimport {HsAddDataCommonModule} from '../../common/common.module';\nimport {HsCommonUrlModule} from '../../common/url/url.module';\nimport {HsUrlWmsComponent} from './wms.component';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  imports: [\n    CommonModule,\n    FormsModule,\n    HsAddDataCommonModule,\n    HsCommonUrlModule,\n  ],\n  exports: [HsUrlWmsComponent],\n  declarations: [HsUrlWmsComponent],\n})\nexport class HsUrlWmsModule {}\n","import {Component, inject} from '@angular/core';\n\nimport {\n  HsAddDataCommonService,\n  HsAddDataOwsService,\n  HsUrlWmtsService,\n} from 'hslayers-ng/services/add-data';\n\n@Component({\n  selector: 'hs-url-wmts',\n  templateUrl: './wmts.component.html',\n  standalone: false,\n})\nexport class HsUrlWmtsComponent {\n  hsAddDataOwsService = inject(HsAddDataOwsService);\n  hsUrlWmtsService = inject(HsUrlWmtsService);\n  hsAddDataCommonService = inject(HsAddDataCommonService);\n}\n","<form class=\"form-horizontal\" name=\"frmConnectWmts\" role=\"form\">\n  <hs-common-url type=\"wmts\" [(url)]=\"hsAddDataCommonService.url\" (connect)=\"hsAddDataOwsService.connect()\">\n  </hs-common-url>\n\n  @if (hsAddDataCommonService.loadingInfo) {\n    <hs-url-progress></hs-url-progress>\n  }\n  @if (hsAddDataCommonService.showDetails && !hsAddDataCommonService.loadingInfo) {\n    <div class=\"card\">\n      <!-- TODO: Remove function call from template -->\n      <ul class=\"list-group\">\n        <li class=\"list-group-item hs-ows-layerlistheading clearfix bg-white\">\n          <div>{{hsUrlWmtsService.data.title}}</div>\n        </li>\n        <hs-layer-table [type]=\"'wmts'\" [injectedService]=\"hsUrlWmtsService\"> </hs-layer-table>\n      </ul>\n        <li class=\"list-group-item hs-ows-layerlistheading clearfix bg-white\" style=\"position: sticky;\n        bottom: 0; z-index:10\">\n        <div class=\"d-flex justify-content-center\">\n          <hs-url-add class=\"w-100\" [injectedService]=\"hsUrlWmtsService\" [layers]=\"hsUrlWmtsService.data.layers\">\n          </hs-url-add>\n        </div>\n      </li>\n    </div>\n  }\n\n</form>\n","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsAddDataCommonModule} from '../../common/common.module';\nimport {HsCommonUrlModule} from '../../common/url/url.module';\nimport {HsLayerTableComponent} from 'hslayers-ng/common/layer-table';\nimport {HsUrlWmtsComponent} from './wmts.component';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  imports: [\n    CommonModule,\n    FormsModule,\n    TranslatePipe,\n    HsAddDataCommonModule,\n    HsCommonUrlModule,\n    HsLayerTableComponent,\n  ],\n  exports: [HsUrlWmtsComponent],\n  declarations: [HsUrlWmtsComponent],\n})\nexport class HsUrlWmtsModule {}\n","import {AddDataUrlType} from 'hslayers-ng/types';\n\nexport const AddDataUrlValues: Array<{id: AddDataUrlType; text: string}> = [\n  {\n    id: 'wms',\n    text: 'WMS',\n  },\n  {\n    id: 'wmts',\n    text: 'WMTS',\n  },\n  {\n    id: 'wfs',\n    text: 'WFS',\n  },\n  {\n    id: 'arcgis',\n    text: 'ArcGIS Map Server',\n  },\n  {\n    id: 'xyz',\n    text: 'XYZ Tiles',\n  },\n  {\n    id: 'geosparql',\n    text: 'GeoSPARQL',\n  },\n  {\n    id: 'kml',\n    text: 'KML',\n  },\n  {\n    id: 'gpx',\n    text: 'GPX',\n  },\n  {\n    id: 'geojson',\n    text: 'GeoJSON',\n  },\n];\n","import {HttpClient} from '@angular/common/http';\nimport {Injectable, inject} from '@angular/core';\nimport {lastValueFrom, takeUntil} from 'rxjs';\n\nimport {HsAddDataUrlService} from 'hslayers-ng/services/add-data';\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsLanguageService} from 'hslayers-ng/services/language';\nimport {HsLogService} from 'hslayers-ng/services/log';\nimport {HsToastService} from 'hslayers-ng/common/toast';\nimport {UrlDataObject} from 'hslayers-ng/types';\n\n@Injectable({providedIn: 'root'})\nexport class HsUrlGeoSparqlService {\n  httpClient = inject(HttpClient);\n  hsEventBusService = inject(HsEventBusService);\n  hsLanguageService = inject(HsLanguageService);\n  hsLog = inject(HsLogService);\n  hsAddDataUrlService = inject(HsAddDataUrlService);\n  private hsToastService = inject(HsToastService);\n\n  data: UrlDataObject;\n\n  constructor() {\n    this.data = {\n      table: {\n        trackBy: 'id',\n        nameProperty: 'name',\n      },\n    };\n  }\n\n  async verifyEndpoint(url: string) {\n    try {\n      const r = await lastValueFrom(\n        this.httpClient\n          .get(url, {\n            //TODO: could there be also different accept header?\n            headers: {'Accept': ['application/rdf+xml', 'application/xml']},\n            responseType: 'blob',\n          })\n          .pipe(takeUntil(this.hsEventBusService.cancelAddDataUrlRequest)),\n      );\n      const blobText = await r.text();\n      const parsedResponse = new DOMParser().parseFromString(\n        blobText,\n        'application/xml',\n      );\n      if (parsedResponse?.activeElement?.localName?.toLowerCase() === 'rdf') {\n        return true;\n      }\n    } catch (e) {\n      this.hsLog.warn(e);\n      this.hsToastService.createToastPopupMessage(\n        'ADDLAYERS.capabilitiesParsingProblem',\n        this.hsLanguageService.getTranslationIgnoreNonExisting(\n          'ADDLAYERS.GEOSPARQL',\n          'invalidEndpoint',\n          null,\n        ),\n        {serviceCalledFrom: 'HsUrlGeoSparqlService'},\n      );\n    }\n    return false;\n  }\n\n  /**\n   * Searches for variables (words beginning on question mark) in the query string and returns an array of the variables found.\n   * The regex pattern for allowed variable characters is created based on:\n   * https://www.w3.org/TR/sparql11-query/#rVARNAME\n   */\n  findParamsInQuery(query: string): string[] {\n    const regex =\n      /\\?[0-9A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u10000-\\uEFFFF]+/g;\n    return [...new Set(query.match(regex))].map((item) => item.slice(1));\n  }\n}\n","import {Component, inject} from '@angular/core';\n\nimport {\n  HsAddDataCommonFileService,\n  HsAddDataCommonService,\n  HsAddDataVectorService,\n} from 'hslayers-ng/services/add-data';\nimport {HsHistoryListService} from 'hslayers-ng/common/history-list';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\nimport {HsUrlGeoSparqlService} from './geosparql.service';\n\n@Component({\n  selector: 'hs-url-geosparql',\n  templateUrl: './geosparql.component.html',\n  standalone: false,\n})\nexport class HsUrlGeoSparqlComponent {\n  hsAddDataCommonService = inject(HsAddDataCommonService);\n  hsAddDataCommonFileService = inject(HsAddDataCommonFileService);\n  hsAddDataVectorService = inject(HsAddDataVectorService);\n  hsHistoryListService = inject(HsHistoryListService);\n  hsLayoutService = inject(HsLayoutService);\n  hsUrlGeoSparqlService = inject(HsUrlGeoSparqlService);\n\n  querySuccessful: boolean;\n  showDetails: boolean;\n  validEndpoint: boolean;\n  data: {\n    abstract?: string;\n    geomProperty?: string;\n    idProperty?: string;\n    name?: string;\n    properties?: string[];\n    query?: string;\n    type: string;\n    title?: string;\n    url?: string;\n  };\n\n  constructor() {\n    this.data = {\n      type: 'sparql',\n    };\n    this.querySuccessful = false;\n    this.showDetails = false;\n    this.validEndpoint = true;\n  }\n\n  connect = async (): Promise<void> => {\n    this.hsAddDataCommonService.loadingInfo = true;\n    this.setDataToDefault();\n    const obtainable = await this.hsAddDataCommonFileService.isUrlObtainable(\n      this.data.url,\n    );\n    if (!obtainable) {\n      this.hsAddDataCommonService.loadingInfo = false;\n      return;\n    }\n    this.hsHistoryListService.addSourceHistory('geosparql', this.data.url);\n    this.validEndpoint = await this.hsUrlGeoSparqlService.verifyEndpoint(\n      this.data.url,\n    );\n    if (this.validEndpoint) {\n      this.showDetails = true;\n    }\n    this.hsAddDataCommonService.loadingInfo = false;\n  };\n\n  async add(): Promise<void> {\n    const response: {layer; complete: boolean} =\n      await this.hsAddDataVectorService.addNewLayer(this.data);\n    if (response.complete) {\n      this.hsLayoutService.setMainPanel('layerManager');\n      this.setDataToDefault();\n    }\n  }\n\n  findParamsInQuery() {\n    this.data.properties = this.hsUrlGeoSparqlService.findParamsInQuery(\n      this.data.query,\n    );\n  }\n\n  private setDataToDefault() {\n    this.querySuccessful = false;\n    this.showDetails = false;\n    this.validEndpoint = true;\n  }\n}\n","<form class=\"form-horizontal\" name=\"frmConnectGeosparql\" role=\"form\">\n  <hs-common-url type=\"geosparql\" [(url)]=\"data.url\" (connect)=\"connect()\">\n  </hs-common-url>\n  @if (hsAddDataCommonService.loadingInfo) {\n    <hs-url-progress></hs-url-progress>\n  }\n  @if (!validEndpoint) {\n    <div>\n      <p class=\"text-danger\">{{'ADDLAYERS.GEOSPARQL.invalidEndpoint' | translate }}</p>\n    </div>\n  }\n\n  @if (showDetails) {\n    <div>\n      <hr class=\"mb-3\">\n      <div class=\"form-floating mb-3\">\n        <textarea class=\"form-control\" id='hs-ows-abstract'\n          [placeholder]=\"'ADDLAYERS.GEOSPARQL.fillInQuery' | translate  \" name=\"query\" [(ngModel)]=\"data.query\"\n          (input)=\"findParamsInQuery()\">\n        </textarea>\n        <label for=\"query\" class=\"capabilities_label control-label\">{{'COMMON.query' | translate }}</label>\n      </div>\n      <div class=\"mb-3\">\n        <p class=\"text-secondary\" [hidden]=\"data.properties === undefined || data.properties.length === 0\">\n          {{'ADDLAYERS.GEOSPARQL.pickGeomParamPt1' | translate }}\n          <strong>{{'ADDLAYERS.GEOSPARQL.pickGeomParamName' | translate }}</strong>\n          {{'ADDLAYERS.GEOSPARQL.pickGeomParamPt2' | translate }}\n        </p>\n        @for (variable of data.properties; track variable) {\n          <input type=\"radio\" class=\"btn-check\" name=\"variables\" id=\"var-geom-{{variable}}\" autocomplete=\"off\"\n            [(ngModel)]=\"data.geomProperty\" [value]=\"variable\">\n          <label class=\"btn btn-sm\"\n            [ngClass]=\"[data.geomProperty === variable ? 'btn-success' : 'btn-outline-primary', data.idProperty === variable ? 'disabled' : '']\"\n          for=\"var-geom-{{variable}}\">?{{variable}}</label>\n          &nbsp;\n        }\n      </div>\n      <div class=\"mb-3\">\n        <p class=\"text-secondary\" [hidden]=\"data.properties === undefined || data.properties.length === 0\">\n          {{'ADDLAYERS.GEOSPARQL.pickIdParamPt1' | translate }} <strong>{{'ADDLAYERS.GEOSPARQL.pickIdParamName' |\n        translate }}</strong> {{'ADDLAYERS.GEOSPARQL.pickIdParamPt2' | translate }}\n      </p>\n      @for (variable of data.properties; track variable) {\n        <input type=\"radio\" class=\"btn-check\" name=\"variables\" id=\"var-id-{{variable}}\" autocomplete=\"off\"\n          [(ngModel)]=\"data.idProperty\" [value]=\"variable\">\n        <label class=\"btn btn-sm\"\n          [ngClass]=\"[data.idProperty === variable ? 'btn-success' : 'btn-outline-primary', data.geomProperty === variable ? 'disabled' : '']\"\n        for=\"var-id-{{variable}}\">?{{variable}}</label>\n        &nbsp;\n      }\n    </div>\n    <hs-new-layer-form [data]=\"data\"></hs-new-layer-form>\n    <hs-add-to-map [disabled]=\"!(data.geomProperty && data.idProperty && data.title)\" (add)=\"add()\"\n    [title]=\"'ADDLAYERS.addSelected'\"></hs-add-to-map>\n  </div>\n}\n\n<!--\n<button class=\"btn btn-primary w-100 mt-2\" [disabled]=\"!data.geomProperty\" (click)=\"hsUrlGeoSparqlService.runQuery()\"><i\nclass=\"fa-solid fa-link\"></i>\n{{'ADDLAYERS.GEOSPARQL.sendQuery' | translate }}\n</button>\n-->\n\n</form>\n","import {Component, inject, OnInit} from '@angular/core';\n\nimport {\n  HsAddDataCommonService,\n  HsAddDataOwsService,\n  HsUrlXyzService,\n} from 'hslayers-ng/services/add-data';\n\nimport {UrlDataObject} from 'hslayers-ng/types';\n\n@Component({\n  selector: 'hs-url-xyz',\n  templateUrl: './xyz.component.html',\n  standalone: false,\n})\nexport class HsUrlXyzComponent implements OnInit {\n  hsUrlXyzService = inject(HsUrlXyzService);\n  hsAddDataCommonService = inject(HsAddDataCommonService);\n  hsAddDataOwsService = inject(HsAddDataOwsService);\n\n  data: UrlDataObject;\n  advancedPanelVisible = false;\n\n  ngOnInit(): void {\n    this.data = this.hsUrlXyzService.data;\n  }\n\n  async add(): Promise<void> {\n    const layers = await this.hsUrlXyzService.getLayers(false);\n    this.hsUrlXyzService.addLayers(layers);\n    this.hsUrlXyzService.finalizeLayerRetrieval(layers);\n  }\n\n  setBase(state: boolean) {\n    this.data.base = state;\n    this.data.group = state || this.data.group;\n  }\n\n  setApiKey(state: boolean) {\n    this.data.useApiKey = state;\n    // Clear API key data when disabled\n    if (!state) {\n      this.data.apiKey = '';\n    }\n  }\n}\n","<div class=\"d-flex flex-column \">\n  <hs-common-url type=\"xyz\" [(url)]=\"hsAddDataCommonService.url\" (connect)=\"hsAddDataOwsService.connect()\">\n  </hs-common-url>\n\n  @if (hsAddDataCommonService.loadingInfo) {\n  <hs-url-progress></hs-url-progress>\n  }\n\n  @if (hsAddDataCommonService.showDetails && !hsAddDataCommonService.loadingInfo) {\n\n\n  <div class=\"input-group pb-2\">\n    <span class=\"input-group-text control-label\">{{'COMMON.title' | translate }}</span>\n    <input class=\"form-control\" name=\"baseTitle\" [(ngModel)]=\"hsUrlXyzService.data.title\" />\n  </div>\n\n  <div class=\"d-flex gap-2 mb-2\">\n    <div class=\"input-group\">\n      <span class=\"input-group-text control-label\">{{'COMMON.minZoom' | translate }}</span>\n      <input type=\"number\" class=\"form-control\" name=\"minZoom\" min=\"1\" max=\"22\" [(ngModel)]=\"hsUrlXyzService.data.minZoom\" />\n    </div>\n    <div class=\"input-group\">\n      <span class=\"input-group-text control-label\">{{'COMMON.maxZoom' | translate }}</span>\n      <input type=\"number\" class=\"form-control\" name=\"maxZoom\" min=\"1\" max=\"22\" [(ngModel)]=\"hsUrlXyzService.data.maxZoom\" />\n    </div>\n  </div>\n\n  <hs-add-as-toggle\n    [isBase]=\"data.base\"\n    [isGroup]=\"data.group\"\n    [showGroupToggle]=\"false\"\n    (baseChange)=\"setBase($event)\"\n  ></hs-add-as-toggle>\n\n  <button type=\"button\" class=\"btn w-100 btn-outline-secondary dropdown-toggle dropdown-toggle-split mb-2\"\n    (click)=\"advancedPanelVisible = !advancedPanelVisible\">\n    {{'COMMON.advancedOptions' | translate }}\n  </button>\n\n  @if (advancedPanelVisible) {\n  <div class=\"form-group\" [hidden]=\"data.base === true\">\n    <div class=\"input-group\">\n      <span class=\"input-group-text control-label\">{{'ADDLAYERS.folderName' | translate }}</span>\n      <input class=\"form-control\" name=\"folderName\" [(ngModel)]=\"data.folder_name\" />\n    </div>\n  </div>\n\n      <div class=\"d-flex flex-row justify-content-start align-items-baseline my-2 border rounded\">\n      <span class=\"control-label input-group-text border-start-0 border-top-0 border-bottom-0\">{{'ADDLAYERS.XYZ.apiKeyUsage' | translate }}</span>\n      <div class=\"d-flex flex-fill gap-2 justify-content-end align-items-center\">\n        <div class=\"btn-group\">\n          <button type=\"button\" class=\"btn btn-sm btn-outline-secondary\" (click)=\"setApiKey(true)\"\n            [ngClass]=\"{'active': data.useApiKey}\">\n            {{'COMMON.yes' | translate }}\n          </button>\n          <button type=\"button\" class=\"btn btn-sm btn-outline-secondary\" (click)=\"setApiKey(false)\"\n            [ngClass]=\"{'active': !data.useApiKey}\">\n            {{'COMMON.no' | translate }}\n          </button>\n        </div>\n      </div>\n    </div>\n\n    @if (hsUrlXyzService.data.useApiKey) {\n    <div class=\"d-flex flex-column gap-2 pb-4\">\n      <div class=\"input-group\">\n        <span class=\"input-group-text control-label\">{{'ADDLAYERS.XYZ.apiKeyParam' | translate }}</span>\n        <input class=\"form-control\" name=\"apiKeyParam\" [(ngModel)]=\"hsUrlXyzService.data.apiKeyParam\" \n          placeholder=\"e.g. apikey, access_token, key\" />\n      </div>\n      \n      <div class=\"input-group\">\n        <span class=\"input-group-text control-label\">{{'COMMON.apiKey' | translate }}</span>\n        <input class=\"form-control\" name=\"apiKey\" [(ngModel)]=\"hsUrlXyzService.data.apiKey\"\n          placeholder=\"{{'ADDLAYERS.XYZ.enterApiKey' | translate }}\" />\n      </div>\n    </div>\n    }\n\n  <hs-target-position [(addUnder)]=\"data.add_under\"></hs-target-position>\n  }\n\n  <hs-add-to-map (add)=\"add()\" [title]=\"'ADDLAYERS.addSelected'\" />\n  }\n</div>\n","import {Component, OnInit, inject} from '@angular/core';\n\nimport {AddDataUrlType, SERVICES_SUPPORTED_BY_URL} from 'hslayers-ng/types';\nimport {AddDataUrlValues} from './add-data-url-values';\nimport {\n  HsAddDataCommonService,\n  HsAddDataOwsService,\n  HsAddDataUrlService,\n} from 'hslayers-ng/services/add-data';\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsDialogContainerService} from 'hslayers-ng/common/dialogs';\nimport {HsLanguageService} from 'hslayers-ng/services/language';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\nimport {HsLogService} from 'hslayers-ng/services/log';\nimport {HsShareUrlService} from 'hslayers-ng/services/share';\n\n@Component({\n  selector: 'hs-add-data-url',\n  templateUrl: './add-data-url.component.html',\n  standalone: false,\n})\nexport class HsAddDataUrlComponent implements OnInit {\n  hsConfig = inject(HsConfig);\n  hsLanguageService = inject(HsLanguageService);\n  hsShareUrlService = inject(HsShareUrlService);\n  hsLog = inject(HsLogService);\n  hsLayoutService = inject(HsLayoutService);\n  hsAddDataCommonService = inject(HsAddDataCommonService);\n  hsAddDataOwsService = inject(HsAddDataOwsService);\n  hsAddDataUrlService = inject(HsAddDataUrlService);\n  hsDialogContainerService = inject(HsDialogContainerService);\n\n  types: {id: AddDataUrlType; text: string}[];\n\n  ngOnInit() {\n    if (Array.isArray(this.hsConfig.connectTypes)) {\n      this.types = this.hsConfig.connectTypes\n        .filter((type) => SERVICES_SUPPORTED_BY_URL.includes(type))\n        .map((type) => AddDataUrlValues.find((v) => v.id == type));\n    } else {\n      this.types = AddDataUrlValues;\n    }\n    if (this.hsAddDataUrlService.typeSelected) {\n      this.connectServiceFromUrlParam(this.hsAddDataUrlService.typeSelected);\n    }\n  }\n\n  selectType(type: AddDataUrlType): void {\n    this.hsAddDataCommonService.clearParams();\n    this.hsAddDataUrlService.typeSelected = type;\n  }\n\n  connectServiceFromUrlParam(type: AddDataUrlType): void {\n    if (!this.hsAddDataUrlService.connectFromParams) {\n      return;\n    }\n    const layers = this.hsShareUrlService.getParamValue(`hs-${type}-layers`);\n    const url = this.hsShareUrlService.getParamValue(`hs-${type}-to-connect`);\n    if (!url) {\n      this.hsAddDataUrlService.connectFromParams = false;\n      return;\n    }\n    if (layers) {\n      for (const layer of layers.split(';')) {\n        this.hsAddDataOwsService.connectToOWS({\n          type,\n          uri: url,\n          layer,\n          layerOptions: {style: undefined},\n        });\n      }\n    } else {\n      this.hsAddDataOwsService.connectToOWS({type, uri: url});\n    }\n    this.hsAddDataUrlService.connectFromParams = false;\n  }\n}\n","<div class=\"d-flex justify-content-center flex-column align-items-center m-3 px-md-4\">\n  <div class=\"container px-md-4\">\n    <div class=\"row justify-content-center gap-1\">\n      @for (type of types; track type) {\n        <button [ngClass]=\"{'active': type.id === hsAddDataUrlService.typeSelected }\"\n          (click)=\"selectType(type.id)\"\n          class=\"btn btn-outline-secondary rounded btn-sm col-sm-3 position-relative flex-grow-1\">\n          {{ 'ADDDATA.URL.' + type.text | translate : {fallbackValue: type.text} }}\n        </button>\n      }\n    </div>\n  </div>\n\n  <div class=\"w-100 pt-3\">\n    @if (hsAddDataUrlService.typeSelected === 'arcgis') {\n      <hs-url-arcgis/>\n    }\n    @if (hsAddDataUrlService.typeSelected === 'wfs') {\n      <hs-url-wfs/>\n    }\n    @if (hsAddDataUrlService.typeSelected === 'wms') {\n      <hs-url-wms/>\n    }\n    @if (hsAddDataUrlService.typeSelected === 'wmts') {\n      <hs-url-wmts/>\n    }\n    @if (hsAddDataUrlService.typeSelected === 'xyz') {\n      <hs-url-xyz/>\n    }\n    @if (hsAddDataUrlService.typeSelected === 'geosparql') {\n      <hs-url-geosparql/>\n    }\n    @if (hsAddDataUrlService.typeSelected === 'geojson') {\n      <hs-url-vector [fileType]=\"hsAddDataUrlService.typeSelected\"/>\n    }\n    @if (hsAddDataUrlService.typeSelected === 'kml') {\n      <hs-url-vector [fileType]=\"hsAddDataUrlService.typeSelected\"/>\n    }\n    @if (hsAddDataUrlService.typeSelected === 'gpx') {\n      <hs-url-vector [fileType]=\"hsAddDataUrlService.typeSelected\"/>\n    }\n  </div>\n</div>\n","import {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {NgModule} from '@angular/core';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsAddDataCommonModule} from '../../common/common.module';\nimport {HsAddToMapButtonComponent} from 'hslayers-ng/common/add-to-map';\nimport {HsCommonUrlModule} from '../../common/url/url.module';\nimport {HsUrlGeoSparqlComponent} from './geosparql.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    HsAddDataCommonModule,\n    HsCommonUrlModule,\n    TranslatePipe,\n    HsAddToMapButtonComponent,\n  ],\n  exports: [HsUrlGeoSparqlComponent],\n  declarations: [HsUrlGeoSparqlComponent],\n})\nexport class HsUrlGeoSparqlModule {}\n","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsAddDataCommonModule} from '../../common/common.module';\nimport {HsCommonUrlModule} from '../../common/url/url.module';\nimport {HsLayerTableComponent} from 'hslayers-ng/common/layer-table';\nimport {HsUrlXyzComponent} from './xyz.component';\nimport {HsAddToMapButtonComponent} from 'hslayers-ng/common/add-to-map';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  imports: [\n    CommonModule,\n    FormsModule,\n    TranslatePipe,\n    HsAddDataCommonModule,\n    HsCommonUrlModule,\n    HsLayerTableComponent,\n    HsAddToMapButtonComponent,\n  ],\n  exports: [HsUrlXyzComponent],\n  declarations: [HsUrlXyzComponent],\n})\nexport class HsUrlXyzModule {}\n","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsAddDataUrlComponent} from './add-data-url.component';\nimport {HsAddDataVectorModule} from '../vector/vector.module';\nimport {HsUrlArcGisModule} from './arcgis/arcgis.module';\nimport {HsUrlGeoSparqlModule} from './geosparql/geosparql.module';\nimport {HsUrlWfsModule} from './wfs/wfs.module';\nimport {HsUrlWmsModule} from './wms/wms.module';\nimport {HsUrlWmtsModule} from './wmts/wmts.module';\nimport {HsUrlXyzModule} from './xyz/xyz.module';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  declarations: [HsAddDataUrlComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    TranslatePipe,\n    HsAddDataVectorModule,\n    HsUrlArcGisModule,\n    HsUrlGeoSparqlModule,\n    HsUrlWfsModule,\n    HsUrlWmsModule,\n    HsUrlWmtsModule,\n    HsUrlXyzModule,\n  ],\n  exports: [HsAddDataUrlComponent],\n})\nexport class HsAddDataUrlModule {}\n","import {Injectable, inject} from '@angular/core';\n\nimport {HsAddDataVectorService} from 'hslayers-ng/services/add-data';\nimport {HsMapService} from 'hslayers-ng/services/map';\nimport {HsShareUrlService} from 'hslayers-ng/services/share';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class HsVectorUrlParserService {\n  hsMapService = inject(HsMapService);\n  hsShareUrlService = inject(HsShareUrlService);\n  hsAddDataVectorService = inject(HsAddDataVectorService);\n\n  constructor() {\n    this.hsMapService.loaded().then((map) => {\n      this.checkUrlParamsAndAdd();\n    });\n  }\n\n  checkUrlParamsAndAdd = async function () {\n    const title =\n      decodeURIComponent(this.HsShareUrlService.getParamValue('title')) ||\n      'Layer';\n    const abstract = decodeURIComponent(\n      this.HsShareUrlService.getParamValue('abstract'),\n    );\n\n    if (this.HsShareUrlService.getParamValue('geojson_to_connect')) {\n      const url = this.HsShareUrlService.getParamValue('geojson_to_connect');\n      let type = 'geojson';\n      if (url.indexOf('gpx') > 0) {\n        type = 'gpx';\n      }\n      if (url.indexOf('kml') > 0) {\n        type = 'kml';\n      }\n      const lyr = await this.HsAddDataVectorService.addVectorLayer(\n        type,\n        url,\n        title,\n        title,\n        abstract,\n        'EPSG:4326',\n      );\n      this.HsAddDataVectorService.fitExtent(lyr);\n    }\n\n    if (this.HsShareUrlService.getParamValue('kml_to_connect')) {\n      const url = this.HsShareUrlService.getParamValue('kml_to_connect');\n      const lyr = await this.HsAddDataVectorService.addVectorLayer(\n        'kml',\n        url,\n        title,\n        title,\n        abstract,\n        'EPSG:4326',\n        {extractStyles: true},\n      );\n      this.HsAddDataVectorService.fitExtent(lyr);\n    }\n  };\n}\n","import {Component, OnInit, inject} from '@angular/core';\nimport {Observable, of, switchMap} from 'rxjs';\n\nimport {\n  AddDataUrlType,\n  DatasetType,\n  SERVICES_SUPPORTED_BY_URL,\n} from 'hslayers-ng/types';\nimport {\n  HsAddDataCatalogueService,\n  HsAddDataService,\n  HsAddDataUrlService,\n} from 'hslayers-ng/services/add-data';\nimport {HsConfirmDialogComponent} from 'hslayers-ng/common/confirm';\nimport {HsDialogContainerService} from 'hslayers-ng/common/dialogs';\n\nimport {\n  HsLayerSynchronizerService,\n  HsLaymanService,\n} from 'hslayers-ng/services/save-map';\nimport {HsPanelBaseComponent} from 'hslayers-ng/common/panels';\nimport {HsRemoveLayerDialogService} from 'hslayers-ng/common/remove-multiple';\nimport {HsShareUrlService} from 'hslayers-ng/services/share';\n\n@Component({\n  selector: 'hs-add-data',\n  templateUrl: './add-data.component.html',\n  standalone: false,\n})\nexport class HsAddDataComponent extends HsPanelBaseComponent implements OnInit {\n  hsAddDataService = inject(HsAddDataService);\n  hsShareUrlService = inject(HsShareUrlService);\n  hsAddDataUrlService = inject(HsAddDataUrlService);\n  private hsDialogContainerService = inject(HsDialogContainerService);\n  hsAddDataCatalogueService = inject(HsAddDataCatalogueService);\n  private hsRemoveLayerDialogService = inject(HsRemoveLayerDialogService);\n  private hsLaymanService = inject(HsLaymanService);\n  /*\n   * Make sure the hsLayerSynchronizerService is available in the setups with add-data\n   */\n  private hsLayerSynchronizerService = inject(HsLayerSynchronizerService);\n\n  layersAvailable: Observable<boolean>;\n  constructor() {\n    super();\n    this.layersAvailable =\n      this.hsAddDataCatalogueService.addDataCatalogueLoaded.pipe(\n        switchMap(() => {\n          return of(this.hsAddDataCatalogueService.catalogEntries.length > 0);\n        }),\n      );\n  }\n  name = 'addData';\n\n  selectDatasetType(type: DatasetType): void {\n    this.hsAddDataService.selectType(type);\n  }\n\n  ngOnInit(): void {\n    this.selectDatasetType('catalogue');\n\n    SERVICES_SUPPORTED_BY_URL.forEach((type) =>\n      this.connectServiceFromUrlParam(type as AddDataUrlType),\n    );\n\n    super.ngOnInit();\n  }\n\n  connectServiceFromUrlParam(type: AddDataUrlType): void {\n    const url = this.hsShareUrlService.getParamValue(`hs-${type}-to-connect`);\n    if (url) {\n      this.hsLayoutService.setMainPanel('addData');\n      this.selectDatasetType('url');\n      this.hsAddDataUrlService.typeSelected = type;\n    }\n  }\n\n  /**\n   * Create remove-layer dialog which allows for single/multiple layer removal\n   */\n  async removeMultipleLayers() {\n    const confirmed =\n      await this.hsRemoveLayerDialogService.removeMultipleLayers(\n        this.hsAddDataCatalogueService.catalogEntries\n          .filter((layer) => layer.editable)\n          .map((l) => {\n            return l.name;\n          }),\n        ['catalogue'],\n      );\n    if (confirmed) {\n      this.hsAddDataCatalogueService.reloadData();\n    }\n  }\n\n  /**\n   * Remove all user's layers from Layman catalogue\n   */\n  async removeAllLayers() {\n    const dialog = this.hsDialogContainerService.create(\n      HsConfirmDialogComponent,\n      {\n        message: 'LAYERMANAGER.dialogRemoveAll.dialogMessage',\n        note: 'DRAW.deleteNotePlural',\n        title: 'LAYERMANAGER.dialogRemoveAll.removeAllCatalogueLayers',\n      },\n    );\n    const confirmed = await dialog.waitResult();\n    if (confirmed === 'yes') {\n      await this.hsLaymanService.removeLayer();\n      this.hsAddDataCatalogueService.reloadData();\n    }\n  }\n}\n","@if (isVisible$ | async) {\n<div class=\"card hs-main-panel overflow-hidden h-100\" style=\"margin-top: 0 !important;\" [ngClass]=\"panelWidthClass\">\n  @if ({selected: hsAddDataService.datasetTypeSelected | async}; as dataset) {\n  <hs-panel-header name=\"addData\" [panelTabs]=\"'catalogue,url,file'\" [selectedTab$]=\"hsAddDataService.datasetSelected\">\n    @if(dataset.selected === 'catalogue' && hsAddDataCatalogueService.data.onlyMine){\n    <extra-buttons>\n      @if ({enabled: layersAvailable | async}; as removal) {\n      <a class=\"dropdown-item\" (click)=\"removeMultipleLayers()\" [class.disabled]=\"!removal.enabled\">\n        <i class=\"fa-solid fa-trash\"></i>&nbsp;{{'DRAW.removeMultipleLayers' | translate }}\n      </a>\n      <a class=\"dropdown-item\" (click)=\"removeAllLayers()\" [class.disabled]=\"!removal.enabled\">\n        <i class=\"fa-solid fa-trash\"></i>&nbsp;{{'LAYERMANAGER.removeAllLayers' | translate }}\n      </a>\n      }\n    </extra-buttons>\n    }\n  </hs-panel-header>\n  <div class=\"card-body\" style=\"overflow-y: auto;\">\n    @if (dataset.selected === 'url' || dataset.selected === 'OWS') {\n    <hs-add-data-url>\n    </hs-add-data-url>\n    }\n    @if (dataset.selected === 'file') {\n    <hs-add-data-file>\n    </hs-add-data-file>\n    }\n    @if (dataset.selected === 'catalogue') {\n      @defer {\n        <hs-add-data-catalogue class=\"h-100 d-block\">\n        </hs-add-data-catalogue>\n      }\n    }\n  </div>\n  }\n</div>\n}\n","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsAddDataComponent} from './add-data.component';\nimport {HsAddDataFileModule} from './file/file.module';\nimport {HsAddDataUrlModule} from './url/add-data-url.module';\nimport {\n  HsPanelHeaderComponent,\n  HsPanelHelpersModule,\n} from 'hslayers-ng/common/panels';\nimport {HsAddDataCatalogueComponent} from './catalogue/catalogue.component';\nimport {HsUrlXyzService} from 'hslayers-ng/services/add-data';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  declarations: [HsAddDataComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    TranslatePipe,\n    HsPanelHelpersModule,\n    HsAddDataUrlModule,\n    HsAddDataFileModule,\n    HsAddDataCatalogueComponent,\n    HsPanelHeaderComponent,\n  ],\n  providers: [HsUrlXyzService],\n  exports: [HsAddDataComponent],\n})\nexport class HsAddDataModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i3.HsPositionComponent","i3.HsAdvancedOptionsComponent","i4.HsSaveToLaymanComponent","i5","i6","i3.HsUrlAddComponent","i4.HsAddUrlAsToggleComponent","i7","i3.HsNewLayerFormComponent","i4.HsAddLayerAuthorizedComponent","i2.HsNewLayerFormComponent","i3.HsAddLayerAuthorizedComponent","i5.RasterTimeseriesComponent","i2.HsFileShpComponent","i3.HsAddDataVectorFileComponent","i4.HsFileRasterComponent","i3.HsCommonUrlComponent","i2.HsUrlProgressComponent","i4.HsUrlDetailsComponent","i2.HsUrlAddComponent","i3.HsUrlProgressComponent","i4.HsCommonUrlComponent","i4.HsUrlProgressComponent","i5.HsCommonUrlComponent","i6.HsAddUrlAsToggleComponent","i8","i2.HsAddDataVectorUrlComponent","i3.HsUrlArcGisComponent","i4.HsUrlGeoSparqlComponent","i5.HsUrlWfsComponent","i6.HsUrlWmsComponent","i7.HsUrlWmtsComponent","i8.HsUrlXyzComponent","i9","i2.HsAddDataUrlComponent","i3.HsAddDataFileComponent","i6.HsAddDataCatalogueComponent"],"mappings":"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"}