{"version":3,"file":"hslayers-ng-services-compositions.mjs","sources":["../../../projects/hslayers/services/compositions/layer-parser.service.ts","../../../projects/hslayers/services/compositions/compositions-parser.service.ts","../../../projects/hslayers/services/compositions/hslayers-ng-services-compositions.ts"],"sourcesContent":["import {Injectable, inject} from '@angular/core';\n\nimport {Feature} from 'ol';\nimport {GeoJSON} from 'ol/format';\nimport {Image as ImageLayer, Layer, Vector as VectorLayer} from 'ol/layer';\nimport {ImageStatic, Source, Vector as VectorSource} from 'ol/source';\n\nimport {\n  HsAddDataOwsService,\n  HsAddDataVectorService,\n} from 'hslayers-ng/services/add-data';\nimport {\n  HsCommonLaymanLayerService,\n  HsCommonLaymanService,\n  isAtLeastVersions,\n} from 'hslayers-ng/common/layman';\nimport {HsLanguageService} from 'hslayers-ng/services/language';\nimport {HsLogService} from 'hslayers-ng/services/log';\nimport {HsMapService} from 'hslayers-ng/services/map';\nimport {HsStylerService} from 'hslayers-ng/services/styler';\nimport {HsToastService} from 'hslayers-ng/common/toast';\nimport {HsVectorLayerOptions, OwsConnection} from 'hslayers-ng/types';\nimport {SparqlJson} from 'hslayers-ng/common/layers';\nimport {setDefinition} from 'hslayers-ng/common/extensions';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class HsCompositionsLayerParserService {\n  private hsMapService = inject(HsMapService);\n  private hsAddDataVectorService = inject(HsAddDataVectorService);\n  private hsStylerService = inject(HsStylerService);\n  private hsLanguageService = inject(HsLanguageService);\n  private hsLog = inject(HsLogService);\n  private hsToastService = inject(HsToastService);\n  private hsCommonLaymanService = inject(HsCommonLaymanService);\n  private hsCommonLaymanLayerService = inject(HsCommonLaymanLayerService);\n  private hsAddDataOwsService = inject(HsAddDataOwsService);\n\n  /**\n   * Initiate creation of WFS layer through HsUrlWfsService\n   * Create WFS layer from capabilities\n   *\n   * @param lyr_def - Layer definition object\n   */\n  async createWFSLayer(lyr_def): Promise<Layer<Source>> {\n    try {\n      const {name, workspace} = this.hsCommonLaymanService.isLaymanUrl(\n        lyr_def.protocol.url,\n        this.hsCommonLaymanService.layman(),\n      )\n        ? await this.hsCommonLaymanLayerService.getLayerWithUUID(\n            lyr_def.name.split('_')[1],\n          )\n        : {name: lyr_def.name, workspace: lyr_def.workspace};\n\n      const style = (lyr_def.sld || lyr_def.qml) ?? lyr_def.style;\n      const styleType = this.hsStylerService.guessStyleFormat(style);\n\n      const layerOptions = {\n        path: lyr_def.path,\n        fromComposition: true,\n        minResolution: lyr_def.minResolution || 0,\n        maxResolution: lyr_def.maxResolution || Infinity,\n        opacity: parseFloat(lyr_def.opacity) ?? 1,\n      };\n      layerOptions[styleType] = style;\n\n      const uri = lyr_def.protocol.url.split('?')[0];\n      const newLayer = await this.hsAddDataOwsService.connectToOWS({\n        type: 'wfs',\n        uri,\n        layer: lyr_def.name,\n        owrCache: false,\n        getOnly: true,\n        layerOptions,\n        connectOptions: {\n          laymanLayer: this.hsCommonLaymanService.isLaymanUrl(\n            uri,\n            this.hsCommonLaymanService.layman(),\n          )\n            ? {\n                title: lyr_def.title,\n                layer: lyr_def.name,\n                name: name,\n                workspace: workspace,\n                link: uri,\n                type: 'wfs',\n              }\n            : undefined,\n        },\n      });\n      newLayer[0].setVisible(lyr_def.visibility);\n      return newLayer[0];\n    } catch (error) {\n      this.hsLog.error(error);\n    }\n  }\n\n  /**\n   * Parse definition object to create WMTS Ol.layer  (source = ol.source.WMTS)\n   * @param lyr_def - Layer definition object\n   * @returns Ol Tile layer\n   */\n  async createWMTSLayer(lyr_def): Promise<Layer<Source>> {\n    try {\n      const newLayer = await this.hsAddDataOwsService.connectToOWS({\n        type: 'wmts',\n        uri: lyr_def.protocol.url.split('?')[0],\n        layer: lyr_def.name,\n        owrCache: false,\n        getOnly: true,\n        layerOptions: {\n          title: lyr_def.title,\n          greyscale: lyr_def.greyscale,\n          fromComposition: true,\n          minResolution: lyr_def.minResolution || 0,\n          maxResolution: lyr_def.maxResolution || Infinity,\n          path: lyr_def.path,\n          opacity: parseFloat(lyr_def.opacity) ?? 1,\n        },\n        connectOptions: {\n          base: lyr_def.base,\n          info_format: lyr_def.info_format,\n        },\n      });\n      newLayer[0].setVisible(lyr_def.visibility);\n      return newLayer[0];\n    } catch (error) {\n      this.hsToastService.createToastPopupMessage(\n        this.hsLanguageService.getTranslation(\n          'ADDLAYERS.capabilitiesParsingProblem',\n          undefined,\n        ),\n        this.hsLanguageService.getTranslationIgnoreNonExisting(\n          'ERRORMESSAGES',\n          error,\n        ),\n        {\n          disableLocalization: true,\n          serviceCalledFrom: 'HsCompositionsLayerParserService',\n        },\n      );\n    }\n  }\n\n  /**\n   * Get WMS layer options\n   * @param lyr_def - Layer definition object\n   * @returns WMS layer options\n   */\n  private getWmsLayerOptions(lyr_def) {\n    return {\n      title: lyr_def.title,\n      fromComposition: lyr_def.fromComposition ?? true,\n      maxResolution: lyr_def.maxResolution || Infinity,\n      minResolution: lyr_def.minResolution || 0,\n      showInLayerManager: lyr_def.displayInLayerSwitcher,\n      abstract: lyr_def.abstract || lyr_def.name,\n      base: lyr_def.base,\n      greyscale: lyr_def.greyscale,\n      metadata: lyr_def.metadata,\n      dimensions: lyr_def.dimensions,\n      legends: this.getLegends(lyr_def),\n      path: lyr_def.path,\n      opacity: parseFloat(lyr_def.opacity) ?? 1,\n      subLayers: lyr_def.subLayers,\n      useTiles: !lyr_def.singleTile,\n      className: lyr_def.greyscale ? 'ol-layer hs-greyscale' : 'ol-layer',\n    };\n  }\n\n  /**\n   * Parse definition object to create WMS Ol.layer  (source = ol.source.ImageWMS / ol.source.TileWMS)\n   * @param lyr_def - Layer definition object\n   * @returns Ol Image or Tile layer\n   */\n  async createWmsLayer(lyr_def) {\n    try {\n      const params = lyr_def.params;\n      delete params.REQUEST;\n      //delete params.FORMAT; Commented, because otherwise when loading from cookie or store, it displays jpeg\n      const url = decodeURIComponent(lyr_def.url);\n\n      const owsConnection: OwsConnection = {\n        type: 'wms',\n        uri: url,\n        owrCache: false,\n        getOnly: true,\n        layerOptions: this.getWmsLayerOptions(lyr_def),\n      };\n\n      if (\n        this.hsCommonLaymanService.isLaymanUrl(\n          url,\n          this.hsCommonLaymanService.layman(),\n        ) &&\n        isAtLeastVersions(this.hsCommonLaymanService.layman(), '2.0')\n      ) {\n        //Query GET /layer to obtain name and workspace of layer\n        const layer = await this.hsCommonLaymanLayerService.getLayerWithUUID(\n          lyr_def.params.LAYERS.split('_')[1],\n          {useCache: true},\n        );\n\n        owsConnection.layerOptions.workspace = layer.workspace;\n        owsConnection.connectOptions = {\n          laymanLayer: {\n            title: lyr_def.title,\n            layer: layer.uuid,\n            name: layer.name,\n            workspace: layer.workspace,\n            link: url,\n            type: 'wms',\n          },\n        };\n      } else {\n        owsConnection.layerOptions.params = params;\n        owsConnection.layer = params.LAYERS;\n        //If multiple layers are selected, it is a group\n        owsConnection.connectOptions = {\n          group: params.LAYERS.includes(','),\n        };\n      }\n\n      const newLayer =\n        await this.hsAddDataOwsService.connectToOWS(owsConnection);\n      newLayer[0].setVisible(lyr_def.visibility);\n\n      return newLayer[0];\n    } catch (error) {\n      this.hsLog.error(error);\n    }\n  }\n\n  /**\n   * Parse definition object to create ArcGIS Ol.layer  (source = ol.source.ImageArcGISRest / ol.source.TileArcGISRest)\n   * @param lyr_def - Layer definition object\n   * @returns Ol Image or Tile layer\n   */\n  async createArcGISLayer(lyr_def) {\n    try {\n      const newLayer = await this.hsAddDataOwsService.connectToOWS({\n        type: 'arcgis',\n        uri: lyr_def.url.split('tile/{z}/{y}/{x}')[0],\n        /**\n         * Allows sublayer definition in compositions as\n         */\n        layer: lyr_def.subLayers?.split(',') || lyr_def.title,\n        owrCache: false,\n        getOnly: true,\n        layerOptions: {\n          title: lyr_def.title,\n          greyscale: lyr_def.greyscale,\n          fromComposition: true,\n          opacity: parseFloat(lyr_def.opacity) ?? 1,\n          path: lyr_def.path,\n          minResolution: lyr_def.minResolution || 0,\n          maxResolution: lyr_def.maxResolution || Infinity,\n        },\n        connectOptions: {\n          base: lyr_def.base,\n        },\n      });\n      newLayer[0].setVisible(lyr_def.visibility);\n      return newLayer[0];\n    } catch (error) {\n      this.hsLog.error(error);\n    }\n  }\n\n  /**\n   * Parse definition object to create XYZ Ol.layer\n   * @param lyr_def - Layer definition object\n   * @returns Ol Image or Tile layer\n   */\n  async createXYZLayer(lyr_def) {\n    try {\n      lyr_def.url = decodeURIComponent(lyr_def.url);\n      if (lyr_def.url.includes('/rest/services/')) {\n        return await this.createArcGISLayer(lyr_def);\n      }\n\n      const legends = this.getLegends(lyr_def);\n      const newLayer = await this.hsAddDataOwsService.connectToOWS({\n        type: 'xyz',\n        uri: decodeURIComponent(lyr_def.url),\n        owrCache: false,\n        getOnly: true,\n        layer: lyr_def.title,\n        layerOptions: {\n          title: lyr_def.title,\n          fromComposition: lyr_def.fromComposition ?? true,\n          showInLayerManager: lyr_def.displayInLayerSwitcher,\n          abstract: lyr_def.title || lyr_def.abstract,\n          base: lyr_def.base,\n          legends: legends,\n          path: lyr_def.path,\n          greyscale: lyr_def.greyscale,\n          opacity: parseFloat(lyr_def.opacity) ?? 1,\n          minResolution: lyr_def.minResolution || 0,\n          maxResolution: lyr_def.maxResolution || Infinity,\n          // dimensions: lyr_def.dimensions,\n        },\n      });\n\n      newLayer[0].setVisible(lyr_def.visibility);\n      return newLayer[0];\n    } catch (error) {\n      this.hsLog.error(error);\n    }\n  }\n\n  /**\n   * Parse definition object to create ImageStatic Ol.layer\n   * @param lyr_def - Layer definition object\n   * @returns OL Image or Tile layer\n   */\n  createStaticImageLayer(lyr_def) {\n    try {\n      const legends = this.getLegends(lyr_def);\n      const source = new ImageStatic({\n        url: decodeURIComponent(lyr_def.url),\n        attributions: lyr_def.attribution\n          ? `<a href=\"${lyr_def.attribution.OnlineResource}\">${lyr_def.attribution.Title}</a>`\n          : undefined,\n        imageExtent: lyr_def.extent,\n        crossOrigin: 'anonymous',\n        projection: lyr_def.projection?.toUpperCase(),\n        //TODO: Add the rest of parameters and describe in the composition schema\n      });\n      const new_layer = new ImageLayer({\n        maxResolution: lyr_def.maxResolution || Infinity,\n        minResolution: lyr_def.minResolution || 0,\n        className: lyr_def.greyscale ? 'ol-layer hs-greyscale' : 'ol-layer',\n        opacity: parseFloat(lyr_def.opacity) ?? 1,\n        source,\n        properties: {\n          title: lyr_def.title,\n          fromComposition: lyr_def.fromComposition ?? true,\n          showInLayerManager: lyr_def.displayInLayerSwitcher,\n          abstract: lyr_def.name || lyr_def.abstract,\n          base: lyr_def.base,\n          greyscale: lyr_def.greyscale,\n          metadata: lyr_def.metadata,\n          dimensions: lyr_def.dimensions,\n          legends: legends,\n          path: lyr_def.path,\n        },\n      });\n\n      new_layer.setVisible(lyr_def.visibility);\n      return new_layer;\n    } catch (error) {\n      this.hsLog.error(error);\n    }\n  }\n\n  /**\n   * Parse definition object to create Sparql layer\n   * @param lyr_def - Layer definition object\n   */\n  async createSparqlLayer(\n    lyr_def,\n  ): Promise<VectorLayer<VectorSource<Feature>>> {\n    try {\n      const url = decodeURIComponent(lyr_def.protocol.url);\n      const definition: any = {};\n      definition.url = url;\n      definition.format = 'Sparql';\n\n      let style = null;\n      if (lyr_def.style) {\n        style = (await this.hsStylerService.parseStyle(lyr_def.style)).style;\n      }\n\n      const src = new SparqlJson({\n        geomAttribute: '?geom',\n        url: url,\n        category: 'http://www.openvoc.eu/poi#categoryWaze',\n        projection: 'EPSG:3857',\n      });\n\n      const lyr = new VectorLayer({\n        properties: {\n          title: lyr_def.title,\n          fromComposition: lyr_def.fromComposition ?? true,\n          definition,\n        },\n        minResolution: lyr_def.minResolution || 0,\n        maxResolution: lyr_def.maxResolution || Infinity,\n        source: src,\n        opacity: parseFloat(lyr_def.opacity) ?? 1,\n        style: style,\n      });\n      lyr.setVisible(lyr_def.visibility);\n      return lyr;\n    } catch (error) {\n      this.hsLog.error(error);\n    }\n  }\n\n  /**\n   * Get layer legends\n   * @param lyr_def - Layer definition object\n   */\n  getLegends(lyr_def): string[] {\n    if (lyr_def.legends) {\n      return lyr_def.legends.map((legend) => decodeURIComponent(legend));\n    }\n    return [];\n  }\n\n  /**\n   * Parse definition object to create Vector layer (classic Ol.vector, KML, GeoJSON, WFS, Sparql)\n   * @param lyr_def - Layer definition object\n   * @returns Either valid vector layer or function for creation of other supported vector file types)\n   */\n  async createVectorLayer(\n    lyr_def,\n  ): Promise<VectorLayer<VectorSource<Feature>>> {\n    try {\n      let format = '';\n      if (lyr_def.protocol) {\n        format = lyr_def.protocol.format;\n        if (lyr_def.protocol.url !== undefined) {\n          lyr_def.protocol.url = decodeURIComponent(lyr_def.protocol.url);\n        }\n      }\n      const options: HsVectorLayerOptions = {\n        opacity: parseFloat(lyr_def.opacity) ?? 1,\n        fromComposition: lyr_def.fromComposition ?? true,\n        path: lyr_def.path,\n        visible: lyr_def.visibility,\n        // Extract workspace name for partial backwards compatibility.\n        workspace:\n          lyr_def.workspace ||\n          lyr_def.protocol?.url.split('geoserver/')[1].split('/')[0],\n      };\n\n      if (lyr_def.minResolution) {\n        options.minResolution = lyr_def.minResolution;\n      }\n      if (lyr_def.maxResolution) {\n        options.maxResolution = lyr_def.maxResolution;\n      }\n      let extractStyles = true;\n      if (lyr_def.style) {\n        if (\n          typeof lyr_def.style == 'string' &&\n          (lyr_def.style as string).startsWith('http')\n        ) {\n          try {\n            lyr_def.style = await this.hsCommonLaymanService.getStyleFromUrl(\n              lyr_def.style,\n            );\n          } catch (ex) {\n            this.hsLog.warn('Could not get style from ' + lyr_def.style);\n          }\n        }\n        // Parse the style definition (SLD, QML, or standard style object)\n        const styleType = this.hsStylerService.guessStyleFormat(lyr_def.style);\n        // Assign the appropriate style property to options\n        if (styleType == 'sld') {\n          options.sld = lyr_def.style;\n          console.warn(lyr_def.title, 'GUESSED AS SLD');\n        } else if (styleType == 'qml') {\n          options.qml = lyr_def.style;\n        } else {\n          console.warn(\n            `Compositions layer ${lyr_def.title} was provided with unknown style format`,\n            lyr_def.style,\n          );\n        }\n        extractStyles = false;\n      }\n      const title = lyr_def.title || 'Layer';\n      let name = lyr_def.name || title;\n      //TODO: Find better way to identify uuid\n      if (name.includes('l_') && name.includes('-') && name.length > 36) {\n        const layerDescriptor =\n          await this.hsCommonLaymanLayerService.getLayerWithUUID(\n            name.split('_')[1],\n          );\n        if (layerDescriptor) {\n          name = layerDescriptor.name;\n        }\n      }\n\n      let layer;\n      switch (format) {\n        case 'ol.format.KML': //backwards compatibility\n        case 'KML':\n          layer = await this.hsAddDataVectorService.createVectorLayer(\n            'kml',\n            lyr_def.protocol.url,\n            name,\n            title,\n            lyr_def.abstract,\n            lyr_def.projection?.toUpperCase(),\n            Object.assign(options, {extractStyles}),\n          );\n          break;\n        case 'ol.format.GeoJSON': //backwards compatibility\n        case 'GeoJSON':\n          layer = await this.hsAddDataVectorService.createVectorLayer(\n            'geojson',\n            lyr_def.protocol.url,\n            name,\n            title,\n            lyr_def.abstract,\n            lyr_def.projection?.toUpperCase(),\n            options,\n          );\n          break;\n        case 'hs.format.WFS': //backwards compatibility\n        case 'WFS':\n          layer = await this.hsAddDataVectorService.createVectorLayer(\n            'wfs',\n            lyr_def.protocol.url,\n            //lyr_def.protocol.LAYERS\n            name,\n            title,\n            lyr_def.abstract,\n            lyr_def.projection?.toUpperCase(),\n            options,\n          );\n          break;\n        case 'hs.format.Sparql': //backwards compatibility\n        case 'Sparql':\n          layer = await this.createSparqlLayer(lyr_def);\n          break;\n        default:\n          const features = lyr_def.features\n            ? new GeoJSON().readFeatures(lyr_def.features, {\n                dataProjection: 'EPSG:4326',\n                featureProjection: this.hsMapService.getCurrentProj(),\n              })\n            : undefined;\n          layer = await this.hsAddDataVectorService.createVectorLayer(\n            '',\n            undefined,\n            name,\n            title,\n            lyr_def.abstract,\n            lyr_def.projection?.toUpperCase(),\n            {\n              opacity: parseFloat(lyr_def.opacity),\n              visible: lyr_def.visibility,\n              path: lyr_def.path,\n              fromComposition: lyr_def.fromComposition,\n              sld: options.sld,\n              qml: options.qml,\n              features,\n            },\n          );\n      }\n      setDefinition(layer, lyr_def.protocol);\n      return layer;\n    } catch (error) {\n      this.hsLog.error(error);\n    }\n  }\n}\n","import * as xml2Json from 'xml-js';\n\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable, inject} from '@angular/core';\n\nimport {Layer} from 'ol/layer';\nimport {\n  Observable,\n  catchError,\n  filter,\n  lastValueFrom,\n  of,\n  shareReplay,\n  switchMap,\n  take,\n} from 'rxjs';\nimport {Source} from 'ol/source';\nimport {transformExtent} from 'ol/proj';\n\nimport {CswLayersDialogComponent} from 'hslayers-ng/common/dialog-csw-layers';\nimport {DuplicateHandling, HsMapService} from 'hslayers-ng/services/map';\nimport {\n  HsCommonLaymanService,\n  getLaymanFriendlyLayerName,\n} from 'hslayers-ng/common/layman';\nimport {HsCompositionsLayerParserService} from './layer-parser.service';\nimport {\n  HsCompositionsWarningDialogComponent,\n  HsDialogContainerService,\n} from 'hslayers-ng/common/dialogs';\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsLanguageService} from 'hslayers-ng/services/language';\nimport {\n  HsLayerManagerService,\n  HsLayerManagerVisibilityService,\n} from 'hslayers-ng/services/layer-manager';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\nimport {HsLogService} from 'hslayers-ng/services/log';\nimport {HsToastService} from 'hslayers-ng/common/toast';\nimport {\n  HslayersLayerJSON,\n  LaymanCompositionDescriptor,\n  SERVICES_SUPPORTED_BY_URL,\n} from 'hslayers-ng/types';\nimport {\n  getTitle,\n  setFromBaseComposition,\n  setIgnorePathZIndex,\n  setMetadata,\n  setSwipeSide,\n} from 'hslayers-ng/common/extensions';\nimport {\n  parseExtent,\n  transformExtentValue,\n  HsProxyService,\n  isFunction,\n} from 'hslayers-ng/services/utils';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class HsCompositionsParserService {\n  private hsMapService = inject(HsMapService);\n  private hsConfig = inject(HsConfig);\n  private $http = inject(HttpClient);\n  private hsProxyService = inject(HsProxyService);\n  private hsCompositionsLayerParserService = inject(\n    HsCompositionsLayerParserService,\n  );\n  private hsDialogContainerService = inject(HsDialogContainerService);\n  private hsLayoutService = inject(HsLayoutService);\n  private $log = inject(HsLogService);\n  private hsEventBusService = inject(HsEventBusService);\n  private hsLanguageService = inject(HsLanguageService);\n  private hsCommonLaymanService = inject(HsCommonLaymanService);\n  private hsLayerManagerService = inject(HsLayerManagerService);\n  private hsToastService = inject(HsToastService);\n  private hsLayerManagerVisibilityService = inject(\n    HsLayerManagerVisibilityService,\n  );\n\n  /**\n   * Layman composition record\n   * holds access_rights\n   */\n  currentCompositionRecord: Observable<LaymanCompositionDescriptor>;\n  /**\n   * Stores current composition URL if there is one or NULL\n   */\n  composition_loaded = null;\n  /**\n   * Stores whether current composition was edited (for composition changes, saving etc.)\n   */\n  composition_edited = false;\n  /**\n   * Stores title of current composition\n   */\n  current_composition_title = '';\n  current_composition_url: string;\n  loadingOptions = {\n    suspendZoomingToExtent: false,\n    suspendPanelChange: false,\n  };\n  constructor() {\n    const $log = this.$log;\n\n    /**\n     * Composition opened -> request its descriptor\n     * in order to get access_rights and workspace properties\n     * (kinda duplicating request for compositions from catalogue - necessary for url ones)\n     */\n    this.currentCompositionRecord =\n      this.hsEventBusService.compositionLoads.pipe(\n        filter((data) => data.error === undefined),\n        switchMap((_) => {\n          const fromLayman = this.hsCommonLaymanService.isLaymanUrl(\n            this.current_composition_url,\n            this.hsCommonLaymanService.layman(),\n          );\n          const url = this.hsProxyService.proxify(\n            this.current_composition_url.replace('/file', ''),\n          );\n          return this.$http\n            .get<LaymanCompositionDescriptor>(url, {\n              withCredentials:\n                this.hsCommonLaymanService.isAuthenticated() && fromLayman,\n            })\n            .pipe(\n              catchError((e) => {\n                if (fromLayman) {\n                  $log.error('Could not get composition metadata');\n                }\n                return of(e);\n              }),\n            );\n        }),\n        //Allows remove-all component to receive value when created eg. late\n        shareReplay(1),\n      );\n  }\n\n  /**\n   * Load selected composition from server, parse it and add layers to map.\n   * Optionally (based on app config) may open layer manager panel\n   * @param url - URL of selected composition\n   * @param overwrite - Whether overwrite current composition in map -\n   * remove all layers from maps which originate from composition (if not pasted, it counts as \"true\")\n   * @param callback - Optional function which should be called when composition is successfully loaded\n   * @param pre_parse - Optional function for pre-parsing loaded data about composition to accepted format\n   */\n  async loadUrl(\n    url: string | any, //CSW record object\n    overwrite?: boolean,\n    callback?,\n    pre_parse?,\n  ): Promise<void> {\n    if (typeof url !== 'string') {\n      pre_parse = (res) => this.parseCSW(res);\n      url.success = true;\n      this.loaded(url, pre_parse, url, overwrite, callback);\n      return;\n    }\n\n    this.current_composition_url = url;\n    url = url.replace(/&amp;/g, '&');\n    url = this.hsProxyService.proxify(url);\n    const options = {};\n    if (url.includes('.wmc')) {\n      pre_parse = (res) => this.parseWMC(res);\n      options['responseType'] = 'text';\n    }\n    options['withCredentials'] =\n      this.hsCommonLaymanService.isLaymanUrl(\n        url,\n        this.hsCommonLaymanService.layman(),\n      ) && this.hsCommonLaymanService.isAuthenticated();\n\n    const data: any = await lastValueFrom(this.$http.get(url, options)).catch(\n      (e) => {\n        this.raiseCompositionLoadError(e);\n      },\n    );\n    if (data) {\n      if (data.file) {\n        // Layman composition wrapper\n        return this.loadUrl(data.file.url, overwrite, callback, pre_parse);\n      }\n      this.loaded(data, pre_parse, url, overwrite, callback);\n    }\n  }\n\n  /**\n   * Check if the response holds the composition data and try to load the composition object\n   * @param response - Response from HTTP GET request requesting composition data\n   * @param pre_parse - Function for pre-parsing loaded data about composition to accepted format\n   * @param url - URL of selected composition\n   * @param overwrite - Whether overwrite current composition in map -\n   * remove all layers from maps which originate from composition (if not pasted, it counts as \"true\")\n   * @param callback - Function which should be called when composition is successfully loaded\n   */\n  async loaded(\n    response,\n    pre_parse,\n    url,\n    overwrite: boolean,\n    callback,\n  ): Promise<void> {\n    if (this.checkLoadSuccess(response)) {\n      if (isFunction(pre_parse)) {\n        response = await pre_parse(response);\n      }\n      /*\n       * Don't set composition_loaded for basemap composition as it's just special way\n       * of setting initial state of the map similarly to default_layers\n       */\n      if (!response.basemapComposition) {\n        this.composition_loaded = url;\n      }\n\n      /*\n      Response might contain {data:{abstract:...}} or {abstract:}\n      directly. If there is data object,\n      that means composition is enclosed in\n      container which itself might contain title or extent\n      properties */\n      const loaded = await this.loadCompositionObject(\n        response.data || response,\n        overwrite && !pre_parse, // For CSW comps we need to wait for dialog to resolve before removing existing layers\n        response.title,\n        response.extent,\n      );\n      // Don't trigger compositionLoads when loading basemapComposition\n      if (loaded && !response.basemapComposition) {\n        this.finalizeCompositionLoading(response);\n      }\n      if (isFunction(callback)) {\n        callback();\n      }\n    } else {\n      this.raiseCompositionLoadError(response);\n    }\n  }\n\n  /**\n   * Parse URL from CSW composition format layer/service\n   */\n  parseCSWLayer(layer) {\n    if (!layer.online) {\n      return;\n    }\n    for (const link of layer.online) {\n      const type = SERVICES_SUPPORTED_BY_URL.find((type) =>\n        link.protocolUri.toLowerCase().includes(type),\n      );\n      if (type) {\n        return {\n          type: type,\n          title: layer.title,\n          url: link.url,\n          id: crypto.randomUUID(),\n        };\n      }\n    }\n  }\n\n  /**\n   * Parse CSW composition record extracting layers\n   */\n  getCSWLayers(record) {\n    const layers = [];\n    const services = [];\n    for (const layer of record.operatesOn) {\n      const layerObject = this.parseCSWLayer(layer);\n      if (layerObject) {\n        (layerObject.url.includes('LAYERS=') ? layers : services).push(\n          layerObject,\n        );\n      }\n    }\n    return {layers, services};\n  }\n\n  async parseCSW(response) {\n    const composition = {};\n\n    composition['name'] = getLaymanFriendlyLayerName(response.title);\n    composition['title'] = response.title;\n    composition['scale'] = 1; //not nice\n    composition['schema_version'] = '2.0.0'; //not nice\n    composition['title'] = response.title;\n    composition['abstract'] = response.abstract;\n\n    const operatesOn = this.getCSWLayers(response);\n    composition['layers'] = operatesOn['layers'];\n    composition['services'] = operatesOn['services'];\n\n    if (composition['layers']?.length > 0) {\n      composition['layers'].filter((l) => {\n        l.className = l.type == 'wms' ? 'WMS' : null;\n        l.params = {\n          FORMAT: 'image/png',\n          INFO_FORMAT: 'text/html',\n          LAYERS: l.url\n            .split('&')\n            .find((p) => p.includes('LAYERS'))\n            .split('=')[1],\n          VERSION: l.url\n            .split('&')\n            .find((p) => p.includes('VERSION'))\n            .split('=')[1],\n        };\n        l.url = l.url.split('?')[0];\n        return l.className;\n      });\n    }\n    return composition;\n  }\n\n  /**\n   * Parse WMC to JSON object\n   * @param response - Response from http get request requesting composition data\n   */\n  parseWMC(response): any {\n    let res: any = xml2Json.xml2js(response, {compact: true});\n    res = res.ViewContext;\n    const compositionJSON: any = {\n      current_base_layer: {\n        title: 'Composite_base_layer',\n      },\n      extent: [\n        parseFloat(res.General.BoundingBox._attributes['maxx']),\n        parseFloat(res.General.BoundingBox._attributes['maxy']),\n        parseFloat(res.General.BoundingBox._attributes['minx']),\n        parseFloat(res.General.BoundingBox._attributes['miny']),\n      ],\n      layers: [],\n      units: res.LayerList.Layer[0].Extension['ol:units']._text,\n      scale: 1,\n      id: res._attributes.id,\n    };\n\n    compositionJSON.name = res.General.Title._text;\n    compositionJSON.projection = res.General.BoundingBox._attributes.SRS;\n    compositionJSON.projection =\n      compositionJSON.projection == 'EPSG:102067'\n        ? 'EPSG:5514'\n        : compositionJSON.projection;\n\n    compositionJSON.extent = transformExtent(\n      compositionJSON.extent,\n      compositionJSON.projection,\n      'EPSG:4326',\n    );\n\n    for (const layer of res.LayerList.Layer) {\n      const layerToAdd = {\n        className: 'WMS',\n        dimensions: undefined,\n        legends: [''],\n        maxResolution: null,\n        metadata: {},\n        minResolution: 0,\n        opacity: layer.Extension['ol:opacity']\n          ? parseFloat(layer.Extension['ol:opacity']._text)\n          : 1,\n        showInLayerManager: layer.Extension['ol:displayInLayerSwitcher']._text,\n        params: {\n          FORMAT: 'image/png',\n\n          INFO_FORMAT: 'text/html',\n          LAYERS: layer.Name._text,\n          VERSION: layer.Server._attributes.version,\n        },\n        ratio: 1.5,\n        singleTile: true,\n        title: layer.Extension['hsl:layer_title']._text,\n        url: layer.Server.OnlineResource._attributes['xlink:href'],\n        visibility: true,\n      };\n      compositionJSON.layers.push(layerToAdd);\n    }\n    const composition = {data: {}};\n    composition.data = compositionJSON;\n    return composition;\n  }\n\n  /**\n   * Check if the response indicates a successful data request\n   * @param response - Response from HTTP GET request requesting composition data\n   */\n  checkLoadSuccess(response): boolean {\n    return (\n      response.success == true /*micka*/ ||\n      (response.success == undefined /*layman*/ &&\n        response.name !== undefined) ||\n      (response.includes && response.includes('LayerList')) /*.wmc micka*/\n    );\n  }\n\n  async loadCompositionObject(\n    obj,\n    overwrite: boolean,\n    titleFromContainer?: boolean,\n    extentFromContainer?: string | Array<number>,\n  ): Promise<boolean> {\n    if (overwrite == undefined || overwrite == true) {\n      this.hsMapService.removeCompositionLayers(overwrite == true);\n    }\n    this.current_composition_title = titleFromContainer || obj.title;\n    const possibleExtent = extentFromContainer || obj.extent;\n    if (\n      possibleExtent !== undefined &&\n      !this.loadingOptions.suspendZoomingToExtent\n    ) {\n      const extent = parseExtent(possibleExtent);\n      if (\n        (extent[0][0] < -90 && extent[0][1] < -180) ||\n        (extent[1][0] > 90 && extent[1][1] > 180)\n      ) {\n        this.loadWarningBootstrap(extent);\n      } else {\n        this.hsMapService.fitExtent(\n          transformExtentValue(extent, this.hsMapService.getCurrentProj()),\n        );\n      }\n    }\n\n    // CSW serviceType compositions\n    const layers = await this.jsonToLayers(obj);\n\n    const confirmed = obj.services\n      ? await this.hsDialogContainerService\n          .create(CswLayersDialogComponent, {\n            services: obj.services,\n            layers: obj.layers,\n          })\n          .waitResult()\n      : true;\n\n    if (confirmed) {\n      /**\n       * If possible register layerAdditions subscription for a current_base_layer\n       * visibility toggle.\n       */\n      if (obj.current_base_layer && !obj.basemapComposition) {\n        this.hsEventBusService.layerAdditions\n          .pipe(\n            filter((l) => {\n              if (!l) {\n                return false;\n              }\n              const title = getTitle(l.layer);\n              return (\n                title === obj.current_base_layer.title ||\n                title === obj.current_base_layer\n              );\n            }),\n            take(1),\n          )\n          .subscribe((currentBaseLayer) => {\n            this.hsLayerManagerVisibilityService.changeBaseLayerVisibility(\n              true,\n              currentBaseLayer,\n            );\n          });\n      }\n\n      if (layers?.length > 0) {\n        layers.forEach((lyr) => {\n          // To suspend layerAdded events\n          if (obj.basemapComposition) {\n            setFromBaseComposition(lyr, true);\n          }\n          this.hsMapService.addLayer(\n            lyr as Layer<Source>,\n            DuplicateHandling.RemoveOriginal,\n          );\n        });\n        this.hsLayerManagerService.updateLayerListPositions();\n      }\n\n      /**\n       * basemapComposition doesn't trigger layerAdded events, thus we need to\n       * make sure layerDescriptors are ready in a bit of a dirty way\n       */\n      if (obj.current_base_layer && obj.basemapComposition) {\n        setTimeout(() => {\n          this.hsMapService\n            .getMap()\n            .getLayers()\n            .forEach((lyr: Layer<Source>) => {\n              const title = getTitle(lyr);\n              if (\n                title === obj.current_base_layer.title ||\n                title === obj.current_base_layer\n              ) {\n                const layerDescriptor =\n                  this.hsLayerManagerService.getLayerDescriptorForOlLayer(\n                    lyr,\n                    true,\n                  );\n                this.hsLayerManagerVisibilityService.changeBaseLayerVisibility(\n                  true,\n                  layerDescriptor,\n                );\n              }\n            });\n        }, 250);\n      }\n\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Finalize composition loading to the OL map\n   * @param responseData - Response from http get request requesting composition data\n   */\n  finalizeCompositionLoading(responseData): void {\n    const open_lm_after_comp_loaded = this.hsConfig.open_lm_after_comp_loaded;\n    if (\n      (open_lm_after_comp_loaded === true ||\n        open_lm_after_comp_loaded === undefined) &&\n      !this.loadingOptions.suspendPanelChange\n    ) {\n      this.loadingOptions.suspendPanelChange = false;\n      this.hsLayoutService.setMainPanel('layerManager');\n    }\n    this.composition_edited = false;\n    this.hsLayerManagerService.updateLayerListPositions();\n    this.hsEventBusService.compositionLoads.next(responseData);\n  }\n\n  /**\n   * Create an error message in case of on an unsuccessful composition load\n   * @param response - Response from http get request requesting composition data\n   */\n  raiseCompositionLoadError(response): void {\n    const respError: any = {};\n    respError.error = response.error ?? 'Composition file corrupted';\n    switch (response.error) {\n      case 'no data':\n        respError.title = this.hsLanguageService.getTranslation(\n          'COMPOSITIONS.compositionNotFound',\n          undefined,\n        );\n        respError.abstract = this.hsLanguageService.getTranslation(\n          'COMPOSITIONS.sorryButComposition',\n          undefined,\n        );\n        break;\n      default:\n        respError.title = this.hsLanguageService.getTranslation(\n          'COMPOSITIONS.compositionNotLoaded',\n          undefined,\n        );\n        respError.abstract = this.hsLanguageService.getTranslation(\n          'COMPOSITIONS.weAreSorryBut',\n          undefined,\n        );\n        break;\n    }\n    this.hsEventBusService.compositionLoads.next(respError);\n  }\n\n  /**\n   * Send Ajax request to selected server to gain information about composition\n   * @param url - Url to composition info\n   * @returns Object containing composition info\n   */\n  async loadInfo(url: string): Promise<any> {\n    url = url.replace(/&amp;/g, '&');\n    url = this.hsProxyService.proxify(url);\n    let response;\n    if (url.endsWith('.wmc')) {\n      response = await lastValueFrom(\n        this.$http.get(url, {responseType: 'text'}),\n      );\n      response = this.parseMickaWmcInfo(response);\n    } else if (url.includes('GetRecordById')) {\n      //CSW composition\n      response = await lastValueFrom(\n        this.$http.get(url, {responseType: 'text'}),\n      );\n      response = this.parseMickaCSWInfo(response);\n    } else {\n      response = await lastValueFrom(\n        this.$http.get(url, {\n          responseType: 'json',\n          withCredentials: !!this.hsCommonLaymanService.isAuthenticated(),\n        }),\n      );\n    }\n    return response.data || response;\n  }\n\n  /**\n   * Parse Micka datasource WMC info to JSON object\n   * @param response - Response from http get request requesting composition data\n   * @returns Object containing composition info\n   */\n  parseMickaWmcInfo(response): any {\n    let res: any = xml2Json.xml2js(response, {compact: true});\n    const layersInfo = res.ViewContext.LayerList?.Layer;\n    const keywordsInfo = res.ViewContext.General.KeywordList?.Keyword;\n    res = res.ViewContext.General;\n    const infoDetails: any = {\n      title: res.Title?._text,\n      abstract: res.Abstract?._text,\n      srs: res.BoundingBox?._attributes?.SRS,\n      extent: [\n        parseFloat(res.BoundingBox?._attributes['maxx']),\n        parseFloat(res.BoundingBox?._attributes['maxy']),\n        parseFloat(res.BoundingBox?._attributes['minx']),\n        parseFloat(res.BoundingBox?._attributes['miny']),\n      ],\n      contactAddress: {\n        address: res.ContactInformation?.ContactAddress?.Address?._text,\n        city: res.ContactInformation?.ContactAddress?.City?._text,\n        country: res.ContactInformation?.ContactAddress?.Country?._text,\n        postalCode: res.ContactInformation?.ContactAddress?.PostCode?._text,\n        stateOrProvince:\n          res.ContactInformation?.ContactAddress?.StateOrProvince?._text,\n      },\n      contactPersonPrimary: {\n        organization:\n          res.ContactInformation?.ContactPersonPrimary?.ContactOrganization\n            ?._text,\n        person:\n          res.ContactInformation?.ContactPersonPrimary?.ContactPerson?._text,\n        phone: res.ContactInformation?.ContactVoiceTelephone?._text,\n        email: res.ContactInformation?.ContactElectronicMailAddress?._text,\n      },\n    };\n    if (layersInfo !== undefined) {\n      infoDetails.layers = layersInfo.map((lyr) => {\n        return {\n          title: lyr.Title?._text,\n        };\n      });\n    }\n    if (keywordsInfo !== undefined) {\n      if (Array.isArray(keywordsInfo)) {\n        infoDetails.keywords = keywordsInfo.map((kw) => kw._text);\n      } else {\n        infoDetails.keywords = keywordsInfo._text;\n      }\n    }\n    return infoDetails;\n  }\n\n  parseMickaCSWInfo(response: string) {\n    const res: any = xml2Json.xml2js(response, {compact: true});\n    const serviceIdentification =\n      res['csw:GetRecordByIdResponse']['gmd:MD_Metadata'][\n        'gmd:identificationInfo'\n      ]['srv:SV_ServiceIdentification'];\n    const layersInfo = serviceIdentification['srv:operatesOn'];\n\n    const bbox =\n      serviceIdentification['srv:extent']['gmd:EX_Extent'][\n        'gmd:geographicElement'\n      ]['gmd:EX_GeographicBoundingBox'];\n    const infoDetails = {\n      title:\n        serviceIdentification['gmd:citation']['gmd:CI_Citation']['gmd:title'][\n          'gco:CharacterString'\n        ]._text,\n      abstract:\n        serviceIdentification['gmd:abstract']['gco:CharacterString']._text,\n      extent: [\n        parseFloat(bbox['gmd:eastBoundLongitude']['gco:Decimal']._text),\n        parseFloat(bbox['gmd:southBoundLatitude']['gco:Decimal']._text),\n        parseFloat(bbox['gmd:northBoundLatitude']['gco:Decimal']._text),\n        parseFloat(bbox['gmd:westBoundLongitude']['gco:Decimal']._text),\n      ],\n    };\n    if (layersInfo !== undefined) {\n      infoDetails['layers'] = layersInfo.map((lyr) => {\n        return {\n          title: lyr._attributes['xlink:title'],\n        };\n      });\n    }\n    let keywordsInfo = serviceIdentification['gmd:descriptiveKeywords'];\n    keywordsInfo = Array.isArray(keywordsInfo)\n      ? this.getCSWKeyWords(keywordsInfo)\n      : keywordsInfo['gmd:MD_Keywords']['gmd:keyword'];\n    if (keywordsInfo) {\n      Array.isArray(keywordsInfo);\n      infoDetails['keywords'] = keywordsInfo.map(\n        (kw) => kw['gco:CharacterString']._text,\n      );\n    }\n    return infoDetails;\n  }\n\n  getCSWKeyWords(keywordInfo) {\n    let kw;\n    for (const keywordObject of keywordInfo) {\n      kw = keywordObject['gmd:MD_Keywords']['gmd:keyword'] ?? kw;\n    }\n    return [kw];\n  }\n\n  /**\n   * Load and display a warning dialog about out of bounds extent\n   * @param extent - Extent value\n   */\n  loadWarningBootstrap(extent): void {\n    this.hsDialogContainerService.create(HsCompositionsWarningDialogComponent, {\n      extent: extent,\n      composition_title: this.current_composition_title,\n      message: 'COMPOSITIONS.dialogWarning.outOfBounds',\n    });\n  }\n\n  /**\n   * Parse composition object to extract individual layers and add them to map\n   * @param j - Composition object with Layers\n   * @returns Array of created layers\n   */\n  async jsonToLayers(j): Promise<Layer<Source>[]> {\n    const layers = [];\n    if (j.data) {\n      j = j.data;\n    }\n    const baselayersOnTop = j.layers[0]?.base;\n    for (const lyr_def of j.layers) {\n      const layer = await this.jsonToLayer(lyr_def);\n      if (layer == undefined) {\n        if (\n          !lyr_def.protocol ||\n          lyr_def.protocol.format != 'hs.format.externalWFS' || //backwards compatibility\n          lyr_def.protocol.format != 'externalWFS'\n        ) {\n          this.$log.warn(\n            'Was not able to parse layer from composition',\n            lyr_def,\n          );\n          this.hsToastService.createToastPopupMessage(\n            this.hsLanguageService.getTranslation(\n              'COMPOSITIONS.errorWhileCreatingLayerFromComposition',\n            ),\n            this.hsLanguageService.getTranslation(\n              'COMPOSITIONS.notAbleToParseLayerFromComposition',\n            ) +\n              ' ' +\n              lyr_def.title,\n            {\n              disableLocalization: true,\n              serviceCalledFrom: 'HsCompositionsParserService',\n            },\n          );\n        }\n      } else {\n        const addToList = baselayersOnTop ? 'push' : 'unshift';\n        layers[addToList](layer);\n      }\n    }\n    return layers;\n  }\n\n  /**\n   * Select correct layer parser for input data based on layer \"className\" property (ArcGISRest, WMS, WFS)\n   * @param lyr_def - Layer to be created (encapsulated in layer definition object)\n   * Parser function to create layer (using config_parsers service)\n   */\n  async jsonToLayer(lyr_def: HslayersLayerJSON): Promise<any> {\n    let resultLayer;\n    switch (lyr_def.className) {\n      case 'HSLayers.Layer.WMS': //backwards compatibility\n      case 'WMS':\n        resultLayer =\n          this.hsCompositionsLayerParserService.createWmsLayer(lyr_def);\n        break;\n      case 'HSLayers.Layer.WMTS': //backwards compatibility\n      case 'WMTS':\n        resultLayer =\n          this.hsCompositionsLayerParserService.createWMTSLayer(lyr_def);\n        break;\n      case 'ArcGISRest':\n        resultLayer =\n          this.hsCompositionsLayerParserService.createArcGISLayer(lyr_def);\n        break;\n      case 'XYZ':\n        resultLayer =\n          this.hsCompositionsLayerParserService.createXYZLayer(lyr_def);\n        break;\n      case 'StaticImage':\n        resultLayer =\n          this.hsCompositionsLayerParserService.createStaticImageLayer(lyr_def);\n        break;\n      case 'Vector':\n        if (lyr_def.protocol?.format.includes('externalWFS')) {\n          resultLayer =\n            this.hsCompositionsLayerParserService.createWFSLayer(lyr_def);\n        } else {\n          resultLayer =\n            this.hsCompositionsLayerParserService.createVectorLayer(lyr_def);\n        }\n        break;\n      default:\n        const existing = this.hsMapService\n          .getLayersArray()\n          .find((l) => getTitle(l as Layer<Source>) == lyr_def.title);\n        if (existing != undefined) {\n          existing.setZIndex(undefined);\n          return existing;\n        }\n        return;\n    }\n    //Resolve promise if needed\n    resultLayer = await resultLayer;\n    if (resultLayer) {\n      setMetadata(resultLayer, lyr_def.metadata);\n      setSwipeSide(resultLayer, lyr_def.swipeSide);\n      setIgnorePathZIndex(resultLayer, true);\n    }\n    return resultLayer;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ImageLayer","VectorLayer"],"mappings":"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"}