{"version":3,"file":"ontimize-web-ngx-map.mjs","sources":["../../projects/ontimize-web-ngx-map/src/lib/components/map/o-map-base.class.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map-base-layer/o-map-base-layer.component.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map-base-layer/o-map-base-layer.component.html","../../projects/ontimize-web-ngx-map/src/lib/models/Location.class.ts","../../projects/ontimize-web-ngx-map/src/lib/services/GeocodingService.ts","../../projects/ontimize-web-ngx-map/src/lib/models/BaseLayer.class.ts","../../projects/ontimize-web-ngx-map/src/lib/services/MapServiceUtils.ts","../../projects/ontimize-web-ngx-map/src/lib/i18n/i18n.ts","../../projects/ontimize-web-ngx-map/src/lib/services/TranslateMapService.ts","../../projects/ontimize-web-ngx-map/src/lib/models/BaseLayerCollection.class.ts","../../projects/ontimize-web-ngx-map/src/lib/services/MapService.ts","../../projects/ontimize-web-ngx-map/src/lib/utils/util.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map-layer-container/o-map-layer-container.component.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map-layer-container/o-map-layer-container.component.html","../../projects/ontimize-web-ngx-map/src/lib/components/marker/o-marker.component.ts","../../projects/ontimize-web-ngx-map/src/lib/components/marker/o-marker.component.html","../../projects/ontimize-web-ngx-map/src/lib/components/map-draw-controls/o-map-draw-controls-events.class.ts","../../projects/ontimize-web-ngx-map/src/lib/models/LayerGroupConfiguration.class.ts","../../projects/ontimize-web-ngx-map/src/lib/models/LayerGroupsWarehouse.class.ts","../../projects/ontimize-web-ngx-map/src/lib/models/Center.class.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map/o-map.class.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map/o-map-w-events.class.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map/o-map-w-sidenav.class.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map/o-map-w-layers.class.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map/o-map-w-workspace.class.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map/o-map-w-draw.class.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map/o-map-w-markercluster.class.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map/o-map-w-baselayer.class.ts","../../projects/ontimize-web-ngx-map/src/lib/models/Searcher.class.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map/o-map-w-search.class.ts","../../projects/ontimize-web-ngx-map/src/lib/services/providers.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map-layer/o-map-layer.factory.ts","../../projects/ontimize-web-ngx-map/src/lib/models/LayerConfiguration.class.ts","../../projects/ontimize-web-ngx-map/src/lib/components/toggle-icon-button/o-toggle-icon-button.component.ts","../../projects/ontimize-web-ngx-map/src/lib/components/toggle-icon-button/o-toggle-icon-button.component.html","../../projects/ontimize-web-ngx-map/src/lib/components/map-layer/o-map-layer.component.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map-layer/o-map-layer.component.html","../../projects/ontimize-web-ngx-map/src/lib/components/map-layer-group/o-map-layer-group.component.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map-layer-group/o-map-layer-group.component.html","../../projects/ontimize-web-ngx-map/src/lib/components/map-workspace/o-map-workspace-base.class.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map-workspace-layer/o-map-workspace-layer.component.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map-workspace-layer/o-map-workspace-layer.component.html","../../projects/ontimize-web-ngx-map/src/lib/components/map-workspace/o-map-workspace.component.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map-workspace/o-map-workspace.component.html","../../projects/ontimize-web-ngx-map/src/lib/components/navigator/o-navigator.class.ts","../../projects/ontimize-web-ngx-map/src/lib/components/navigator/o-navigator-item.component.ts","../../projects/ontimize-web-ngx-map/src/lib/components/navigator/o-navigator-item.component.html","../../projects/ontimize-web-ngx-map/src/lib/components/navigator/o-navigator.component.ts","../../projects/ontimize-web-ngx-map/src/lib/components/navigator/o-navigator.component.html","../../projects/ontimize-web-ngx-map/src/lib/components/map/o-map.component.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map/o-map.component.html","../../projects/ontimize-web-ngx-map/src/lib/components/map-crs/o-map-crs-configuration.class.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map-crs/o-map-crs.component.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map-crs/o-map-crs.component.html","../../projects/ontimize-web-ngx-map/src/lib/components/map-draw-controls/o-map-draw-controls.component.ts","../../projects/ontimize-web-ngx-map/src/lib/components/map-draw-controls/o-map-draw-controls.component.html","../../projects/ontimize-web-ngx-map/src/lib/components/export.ts","../../projects/ontimize-web-ngx-map/src/lib/ontimize-web-ngx-map.module.ts","../../projects/ontimize-web-ngx-map/src/lib/models/Feature.class.ts","../../projects/ontimize-web-ngx-map/src/lib/models/Geometry.class.ts"],"sourcesContent":["import { EventEmitter, Injector } from \"@angular/core\";\nimport type { OMapCrsComponent } from \"../map-crs/o-map-crs.component\";\nimport { Observable, Subject } from \"rxjs\";\nimport * as L from 'leaflet';\nimport type { OMapLayerComponent } from \"../map-layer/o-map-layer.component\";\nimport { OSearcher } from \"../../interfaces/search/searcher.interface\";\nimport { OSearchable } from \"../../interfaces/search/searchable.interface\";\nimport type { OMapWorkspace } from \"../../interfaces/o-map-workspace.interface\";\nexport abstract class OMapBase {\n\n\n  abstract setCenter(center: string): void;\n\n  abstract onMapAfterViewInit(): EventEmitter<any>;\n\n  abstract onMapReady(): Subject<any>;\n\n  abstract onMapConfigured(): EventEmitter<boolean>;\n\n  abstract onWSLayerSelected(event): void;\n\n  abstract onWSLayerVisibilityToggled(event): void;\n\n  abstract onWSLayerInWSToggled(event): void;\n\n  abstract getText(text: string): string;\n\n  abstract configureDefaultDrawControl(map): void;\n\n  abstract configureMap(): void;\n\n  abstract getMapService(): any;\n\n  abstract getCenter(): any;\n\n  abstract initialize(): void;\n\n  abstract registerTabGroupListener(): void;\n\n  abstract registerCRSComponent(crsComp: OMapCrsComponent): void;\n\n  abstract setContextmenu(val: any): void;\n\n  abstract searchControl(val: boolean): void;\n\n  abstract getInjector(): Injector;\n\n  abstract isSearchControlButtonVisible(val: boolean): void;\n  abstract unselectBaseLayers();\n  abstract getLMap(): L.Map;\n  abstract getOMapLayers(): Array<OMapLayerComponent>;\n  abstract toggleSidenav(e?: MouseEvent): void;\n  abstract mapSearchers: Array<OSearcher>;\n  abstract search(oSearchValue: string): Observable<Array<OSearchable>>;\n  abstract addOMapLayer(layer: OMapLayerComponent);\n  abstract mapWorkspace: OMapWorkspace;\n  abstract queryFeaturesInBounds: boolean;\n\n}","import { Component, forwardRef, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { BooleanInputConverter } from 'ontimize-web-ngx';\nimport { Subscription } from 'rxjs';\n\nimport { BaseLayer } from '../../interfaces/baselayers/baselayers.interface';\nimport { OSearchable, OSearchResult } from '../../interfaces/search/searchable.interface';\nimport { OMapBase } from '../map/o-map-base.class';\n\n@Component({\n  selector: 'o-map-base-layer',\n  providers: [],\n  inputs: [\n    'id: layer-id',\n    'name: title',\n    'urlTemplate: src',\n    'active'\n  ],\n  templateUrl: './o-map-base-layer.component.html',\n  styleUrls: ['./o-map-base-layer.component.scss']\n})\nexport class OMapBaseLayerComponent implements OnInit, OnDestroy, BaseLayer, OSearchable {\n\n  id: string;\n\n  @BooleanInputConverter()\n  active: boolean = false;\n\n  protected _name: string;\n  protected _urlTemplate: string;\n  protected onMapReadySubscription: Subscription;\n\n  public oSearchKeys: Array<string> = ['name'];\n  get oSearchResult(): OSearchResult {\n    return {\n      label: this.name,\n      icon: 'map',\n      buttons: [{\n        icon: ['visibility', 'visibility_off'],\n        status: () => this.active,\n        callback: () => this.select()\n      }]\n    };\n  }\n\n  constructor(\n    @Inject(forwardRef(() => OMapBase)) protected oMap: OMapBase\n  ) { }\n\n  ngOnInit() {\n    if (this.oMap) {\n      this.onMapReadySubscription = this.oMap.onMapAfterViewInit().subscribe(() => {\n        this.oMap.getLMap().on('baselayerchange', (evt) => {\n          this.updateActiveState(evt.name);\n        });\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.onMapReadySubscription) {\n      this.onMapReadySubscription.unsubscribe();\n    }\n  }\n\n  updateActiveState(layerId: string) {\n    if (layerId === this.name) {\n      this.active = true;\n    } else {\n      this.active = false;\n    }\n  }\n\n  select(): boolean {\n    this.oMap.unselectBaseLayers();\n    this.oMap.getMapService().selectBaseLayer(this.id);\n    return this.active = true;\n  }\n\n  get urlTemplate(): string {\n    return this._urlTemplate;\n  }\n\n  set urlTemplate(val: string) {\n    this._urlTemplate = val;\n  }\n\n  get name(): string {\n    return this._name;\n  }\n\n  set name(val: string) {\n    this._name = val;\n  }\n}\n","<button [class.active]=\"active\" (click)=\"select()\">\n\t<div class=\"image\"\n\t\t[ngStyle]=\"{'background-image': 'url(' + urlTemplate + ')'}\"></div>\n\t<div class=\"image-title\"\n\t\t>{{name}}</div>\n</button>","import { ILatLng } from '../interfaces/ILatLng';\n\nexport class Location implements ILatLng {\n  latitude: number;\n  longitude: number;\n  address: string;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { forwardRef, Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { flatMap, map } from 'rxjs/operators';\n\nimport { IGeocodingService } from '../interfaces/IGeocodingService';\nimport { Location } from '../models/Location.class';\n\n@Injectable()\nexport class GeocodingService implements IGeocodingService{\n\n  constructor(@Inject(forwardRef(() => HttpClient)) protected httpClient: HttpClient) { }\n\n\n  geocode(address: string): Observable<any> {\n    return this.httpClient\n      .get('http://maps.googleapis.com/maps/api/geocode/json?address=' + encodeURIComponent(address))\n      .pipe(map((res: any) => res.json()))\n      .pipe(map((result: any) => {\n        if (result.status !== 'OK') {\n          throw new Error('unable to geocode address');\n        }\n        const locations = result.results.map(r => {\n          const location = new Location();\n          location.address = r.formatted_address;\n          location.latitude = r.geometry.location.lat;\n          location.longitude = r.geometry.location.lng;\n          return location;\n        });\n        return locations;\n      }));\n  }\n\n  getCurrentLocation(): Observable<any> {\n    return this.httpClient\n      .get('http://ipv4.myexternalip.com/json')\n      .pipe(map((res: any) => res.json().ip))\n      .pipe(flatMap(ip => this.httpClient.get('http://freegeoip.net/json/' + ip)))\n      .pipe(map((res: any) => res.json()))\n      .pipe(map((result: any) => {\n        const location = new Location();\n        location.address = result.city + ', ' + result.region_code + ' ' + result.zip_code + ', ' + result.country_code;\n        location.latitude = result.latitude;\n        location.longitude = result.longitude;\n        return location;\n      }));\n  }\n\n}\n","import { EventEmitter } from '@angular/core';\nimport * as L from 'leaflet';\n\nimport { BaseLayer, BaseLayerEvents } from '../interfaces/baselayers/baselayers.interface';\n\nexport class BaseLayerDefault implements BaseLayer {\n  public id: string = '';\n  public name: string;\n  public urlTemplate: string;\n  public options: L.TileLayerOptions;\n  public active: boolean;\n\n  public events: BaseLayerEvents = {\n    onUpdate: new EventEmitter<any>()\n  };\n\n  public tileLayer: L.TileLayer;\n\n  constructor(baseLayer?: BaseLayer) {\n    if (!!baseLayer) {\n      this.setBaseLayer(baseLayer);\n    }\n  }\n\n  getTileLayer(): L.TileLayer {\n    return this.tileLayer || new L.TileLayer(this.urlTemplate, this.options);\n  }\n\n  setBaseLayer(baseLayer: BaseLayer) {\n    if (!!this.tileLayer) {\n      this.events.onUpdate.emit(this.tileLayer);\n    }\n    this.name = baseLayer.name;\n    this.options = baseLayer.options;\n    (<any>this.options).pane = 'tilePane';\n    this.urlTemplate = baseLayer.urlTemplate;\n    this.active = baseLayer.active;\n    this.tileLayer = baseLayer.tileLayer;\n  }\n}\n","import * as L from 'leaflet';\n\nimport { OLayerStyles } from '../types/layer-options.type';\nimport { BaseLayer } from '../interfaces/baselayers/baselayers.interface';\nimport { BaseLayerDefault } from '../models/BaseLayer.class';\n\nconst DEFAULT_BASE_LAYERS = {\n  'OpenStreetMap': {\n    name: 'OpenStreetMap',\n    urlTemplate: 'http://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',\n    options: {\n      attribution: '&copy; <a href=\"http://www.openstreetmap.org/copyright\">OpenStreetMap</a>, Tiles courtesy of <a href=\"http://hot.openstreetmap.org/\" target= \"_blank\" > Humanitarian OpenStreetMap Team< /a>'\n    }\n  },\n  'Esri': {\n    name: 'Esri',\n    urlTemplate: 'http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}',\n    options: {\n      attribution: 'Tiles &copy; Esri &mdash; Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase,'\n        + ' Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community'\n    }\n  },\n  'CartoDB': {\n    name: 'CartoDB',\n    urlTemplate: 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',\n    options: {\n      attribution: '&copy; <a href=\"http://www.openstreetmap.org/copyright\">OpenStreetMap</a> &copy;'\n        + ' <a href=\"http://cartodb.com/attributions\">CartoDB</a>'\n    }\n  }\n};\n\nexport class MapServiceUtils {\n\n  public static retrieveGeoJSONStyles(geoJsonFeature: any, options: OLayerStyles) {\n    if (options && geoJsonFeature.properties) {\n      if (geoJsonFeature.properties.stroke) { options.stroke = geoJsonFeature.properties.stroke; }\n      if (geoJsonFeature.properties.color) { options.color = geoJsonFeature.properties.color; }\n      if (geoJsonFeature.properties.weight) { options.weight = geoJsonFeature.properties.weight; }\n      if (geoJsonFeature.properties.opacity) { options.opacity = geoJsonFeature.properties.opacity; }\n      if (geoJsonFeature.properties.lineCap) { options.lineCap = geoJsonFeature.properties.lineCap; }\n      if (geoJsonFeature.properties.lineJoin) { options.lineJoin = geoJsonFeature.properties.lineJoin; }\n      if (geoJsonFeature.properties.dashArray) { options.dashArray = geoJsonFeature.properties.dashArray; }\n      if (geoJsonFeature.properties.dashOffset) { options.dashOffset = geoJsonFeature.properties.dashOffset; }\n      if (geoJsonFeature.properties.fill) { options.fill = geoJsonFeature.properties.fill; }\n      if (geoJsonFeature.properties.fillColor) { options.fillColor = geoJsonFeature.properties.fillColor; }\n      if (geoJsonFeature.properties.fillOpacity) { options.fillOpacity = geoJsonFeature.properties.fillOpacity; }\n      if (geoJsonFeature.properties.fillRule) { options.fillRule = geoJsonFeature.properties.fillRule; }\n      if (geoJsonFeature.properties.className) { options.className = geoJsonFeature.properties.className; }\n    }\n    return options;\n  }\n\n  public static createDefaultBaseLayer(id: string, active: boolean = false): BaseLayer | L.TileLayer {\n    let baseLayer: BaseLayer | L.TileLayer;\n\n    try {\n      // First, search into known providers\n      const tileLayer: L.TileLayer = L.tileLayer['provider'](id);\n      if (tileLayer !== undefined) {\n        let _url = tileLayer['_url'];\n        if (window.location.protocol === 'https:') {\n          _url = _url.replace('http:', 'https:');\n        }\n        baseLayer = new BaseLayerDefault({\n          id: id,\n          name: id,\n          urlTemplate: _url,\n          active: active,\n          options: tileLayer['options'],\n          tileLayer: tileLayer\n        });\n      } else if (!baseLayer && Object.keys(DEFAULT_BASE_LAYERS).indexOf(id) > -1) {\n        baseLayer = new BaseLayerDefault(this.getDefaultBaseLayerConfiguration(id));\n      }\n    } catch (e) {\n      // If not found, try to create new tile layer\n      if (Object.keys(DEFAULT_BASE_LAYERS).indexOf(id) > -1) {\n        baseLayer = new BaseLayerDefault(this.getDefaultBaseLayerConfiguration(id));\n      }\n    }\n    return baseLayer;\n  }\n\n  private static getDefaultBaseLayerConfiguration(id: string): Object {\n    if (Object.keys(DEFAULT_BASE_LAYERS).indexOf(id) > -1) {\n      const conf = DEFAULT_BASE_LAYERS[id];\n      if (window.location.protocol === 'https:') {\n        conf['urlTemplate'] = conf['urlTemplate'].replace('http:', 'https:');\n      }\n      return conf;\n    }\n    return void 0;\n  }\n\n}\n","export const MAP = {\n\n  // English\n  en: {\n    MAP_BASE_LAYERS: 'Base layers',\n    MAP_LAYERS: 'Layers',\n    MAP_WORKSPACE_LAYERS: 'Workspace',\n    SEARCH_PLACEHOLDER: 'Enter a place to go...',\n    'CONTEXTMENU.CENTER_MAP': 'Center map here',\n    'CONTEXTMENU.ZOOM_IN': 'Zoom in',\n    'CONTEXTMENU.ZOOM_OUT': 'Zoom out'\n  },\n\n  // Spanish\n  es: {\n    MAP_BASE_LAYERS: 'Capas base',\n    MAP_LAYERS: 'Capas',\n    MAP_WORKSPACE_LAYERS: 'Espacio de trabajo',\n    SEARCH_PLACEHOLDER: 'Introduce un lugar...',\n    'CONTEXTMENU.CENTER_MAP': 'Centrar el mapa aquí',\n    'CONTEXTMENU.ZOOM_IN': 'Acercar',\n    'CONTEXTMENU.ZOOM_OUT': 'Alejar'\n  }\n\n};\n","import { Injector } from '@angular/core';\nimport { OTranslateService } from 'ontimize-web-ngx';\nimport { MAP } from '../i18n/i18n';\n\nexport class TranslateMapService {\n\n  protected oTranslateService: OTranslateService;\n  protected currentLang: string = 'en';\n\n  constructor(\n    protected injector: Injector) {\n    try {\n      this.oTranslateService = this.injector.get(OTranslateService);\n      this.currentLang = this.oTranslateService.getCurrentLang();\n      this.oTranslateService.onLanguageChanged.subscribe((lang: string) => {\n        this.currentLang = lang;\n      });\n    } catch (ex) {\n      // nothing to do\n    }\n  }\n\n\n  public get(text: string): string {\n    let textTranslated;\n    try {\n      if (this.oTranslateService) {\n        const bundle = this.oTranslateService.get(text);\n        if (bundle && bundle['value']) {\n          textTranslated = bundle['value'];\n        }\n        /*\n        * Due to a bug fixed on ng2-translate (v2.2.2) library, exceptions is not thrown\n        * anymore when asking for a key that does not exist.\n        */\n        textTranslated = textTranslated === text ? undefined : textTranslated;\n      }\n    } catch (e) {\n      textTranslated = undefined;\n    }\n    if (!textTranslated) {\n      const bundle = MAP[this.currentLang];\n      if (bundle && bundle[text]) {\n        textTranslated = bundle[text];\n      } else {\n        textTranslated = text;\n      }\n    }\n    return textTranslated;\n  }\n\n}\n","import * as L from 'leaflet';\n\nimport { BaseLayer } from '../interfaces/baselayers/baselayers.interface';\nimport { BaseLayerDefault } from './BaseLayer.class';\n\nexport class BaseLayerCollection {\n  baseMaps: Object = {};\n  baseMapsOrderedList: Array<string> = [];\n\n  addLayer(id: string, layer: BaseLayer | L.TileLayer) {\n    if (layer instanceof BaseLayerDefault) {\n      layer.id = id;\n    }\n    this.baseMaps[id] = layer;\n    this.baseMapsOrderedList.push(id);\n  }\n\n  getLayer(id: string): BaseLayer | L.TileLayer {\n    return this.contains(id) ? this.baseMaps[id] : undefined;\n  }\n\n  getTileLayer(id: string): L.TileLayer {\n    const layer: BaseLayer | L.TileLayer = this.getLayer(id);\n    if (layer instanceof BaseLayerDefault) {\n      return layer.getTileLayer();\n    } else if (layer instanceof L.TileLayer) {\n      return layer;\n    }\n    return undefined;\n  }\n\n  getBaseLayers(): Array<BaseLayer> {\n    return this.baseMapsOrderedList\n      .map(k => this.getLayer(k))\n      .filter(l => l instanceof BaseLayerDefault);\n  }\n\n  getLayersMap(): L.Control.LayersObject {\n    const map: L.Control.LayersObject = {};\n    this.baseMapsOrderedList.forEach(k => {\n      // TODO translate 'k' for showing pretty name at control panel\n      map[k] = this.getTileLayer(k);\n    });\n    return map;\n  }\n\n  getLayersArray(): Array<L.TileLayer> {\n    const array = [];\n    this.baseMapsOrderedList.forEach(k => {\n      array.push(this.getTileLayer(k));\n    });\n    return array;\n  }\n\n  contains(id: string): boolean {\n    return this.baseMapsOrderedList.indexOf(id) > -1;\n  }\n}\n","\nimport { EventEmitter, Injectable, Injector } from '@angular/core';\nimport * as L from 'leaflet';\nimport { Map } from 'leaflet';\nimport 'leaflet-contextmenu';\nimport 'leaflet-draw';\nimport 'leaflet-providers';\nimport 'leaflet.heat';\nimport 'leaflet.markercluster';\nimport 'proj4leaflet';\nimport { MapServiceUtils } from './MapServiceUtils';\nimport { TranslateMapService } from './TranslateMapService';\nimport { OMapLayerOptions } from '../types/layer-options.type';\nimport { BaseLayerCollection } from '../models/BaseLayerCollection.class';\nimport { LayerConfigurationContextmenu } from '../models/LayerConfiguration.class';\n\nconst LAYERS_CONTROL_ID: string = 'layers';\n\n@Injectable()\nexport class MapService {\n  static DEFAULT_BASE_MAP: string = 'OpenStreetMap.HOT';\n  map: Map;\n  layers: Object = {};\n  controls: Object = {};\n  baseLayers: BaseLayerCollection = new BaseLayerCollection();\n  overlayMaps: L.Control.LayersObject = {};\n  iconTypes: Object = {};\n\n  drawLayerId: string;\n  translateMapService: TranslateMapService;\n\n  popupOptions: Object = {\n    maxHeight: 200\n  };\n\n  defaultContextMenu: LayerConfigurationContextmenu = {\n    contextmenuItems: [{\n      attr: 'centerMap',\n      label: 'CONTEXTMENU.CENTER_MAP',\n      callback: (e) => this.centerMap(e)\n    }, {\n      label: '',\n      separator: true\n    }, {\n      attr: 'zoomIn',\n      label: 'CONTEXTMENU.ZOOM_IN',\n      icon: 'assets/zoom-in.png',\n      callback: () => this.zoomIn()\n    }, {\n      attr: 'zoomOut',\n      label: 'CONTEXTMENU.ZOOM_OUT',\n      icon: 'assets/zoom-out.png',\n      callback: () => this.zoomOut()\n    }]\n  };\n  public baseLayerSelected: EventEmitter<any> = new EventEmitter();\n\n  constructor(protected injector: Injector) {\n    this.translateMapService = this.injector.get(TranslateMapService);\n  }\n\n  public centerMap(e) {\n    this.getMap().panTo(e.latlng);\n  }\n\n  public zoomIn() {\n    this.getMap().zoomIn();\n  }\n\n  public zoomOut() {\n    this.getMap().zoomOut();\n  }\n\n  disableMouseEvent(tag: string) {\n    var html = L.DomUtil.get(tag);\n\n    L.DomEvent.disableClickPropagation(html);\n    L.DomEvent.on(html, 'mousewheel', L.DomEvent.stopPropagation);\n  }\n\n  /**\n   * Gets or creates the map\n   * @param id Id of the map\n   * @param options Leaflet option for the map\n   */\n  getMap(id?: string, options?: L.MapOptions): Map {\n    if (!!id && !this.map) {\n      this.map = new L.Map(id, options);\n    }\n    return this.map;\n  }\n\n  /**\n   * Sets center of map.\n   * @param latitude Center latitude.\n   * @param longitude  Center longitude.\n   */\n  setCenter(latitude: number, longitude: number) {\n    this.map.setView([latitude, longitude], this.map.getZoom());\n  }\n\n  /**\n   * Returns the geographical center of the map view.\n   * @return Map center geographical coordinates.\n   */\n  getCenter(): L.LatLng {\n    return this.map.getCenter();\n  }\n\n  /**\n   * Sets map zoom.\n   * @param zoom  Zoom value\n   */\n  setZoom(zoom: number) {\n    this.map.setZoom(zoom);\n  }\n\n  /**\n  * Returns map current zoom.\n  * @return Map zoom.\n  */\n  getZoom() {\n    return this.getZoom();\n  }\n\n  getDefaultContextmenuItems() {\n    return this.defaultContextMenu;\n  }\n\n  /**\n   * Adds a layer (tiles, marker, circle, polygon...) to the map.\n   * @param id\n   *          Unique identifier.\n   * @param layer\n   *          Layer to be added.\n   * @param hidden\n   *          (optional) Set this property to true to do not show the layer.\n   * @param showInMenu\n   *          (optional) Set to 'base' or 'overlay' to appear in menu.\n   * @param menuLabel\n   *          (optional) Label to identify this layer in the menu.\n   */\n  addLayer(id, layer, hidden: boolean = false, showInMenu: string = '', menuLabel: string) {\n    // If exists any layer with same id, remove it first\n    if (this.layers[id]) {\n      this.map.removeLayer(this.layers[id]);\n    }\n\n    // Translate menu label\n    if (menuLabel) {\n      // TODO   menuLabel = I18n.translate(menuLabel.trim());\n    } else {\n      menuLabel = id;\n    }\n\n    // Check if layer has to be added to control\n    switch (showInMenu) {\n      case 'base':\n        // Base layer (radio button)\n        if (this.controls[LAYERS_CONTROL_ID] && this.baseLayers.contains(menuLabel)) {\n          this.controls[LAYERS_CONTROL_ID].removeLayer(this.baseLayers.getTileLayer(menuLabel));\n        }\n        this.layers[id] = menuLabel;\n        this.baseLayers.addLayer(menuLabel, layer);\n        if (this.controls[LAYERS_CONTROL_ID]) {\n          this.controls[LAYERS_CONTROL_ID].addBaseLayer(layer, menuLabel);\n        } else {\n          this.controls[LAYERS_CONTROL_ID] = L.control.layers(this.baseLayers.getLayersMap()).addTo(this.map);\n        }\n        break;\n\n      case 'overlay':\n        // Overlay layer (checkbox button)\n        if (this.controls[LAYERS_CONTROL_ID] && this.overlayMaps[menuLabel]) {\n          this.controls[LAYERS_CONTROL_ID].removeLayer(this.overlayMaps[menuLabel]);\n        }\n        this.layers[id] = menuLabel;\n        this.overlayMaps[menuLabel] = layer;\n        if (this.controls[LAYERS_CONTROL_ID]) {\n          this.controls[LAYERS_CONTROL_ID].addOverlay(layer, menuLabel);\n        } else {\n          this.controls[LAYERS_CONTROL_ID] = L.control.layers(void 0, this.overlayMaps).addTo(this.map);\n        }\n        break;\n\n      default:\n        // Layer out of control\n        this.layers[id] = layer;\n        break;\n    }\n\n    // Show layer on map\n    if (!hidden) {\n      layer.addTo(this.map);\n    }\n  }\n\n  addDrawLayer(layer) {\n    this.drawLayerId = Math.random().toString(36);\n    const label = this.translateMapService.get('draw-control-layer');\n    this.addLayer(this.drawLayerId, layer, false, 'overlay', label);\n  }\n\n  removeDrawLayer() {\n    this.removeLayer(this.drawLayerId);\n  }\n\n  getDrawLayer() {\n    return this.overlayMaps[this.layers[this.drawLayerId]];\n  }\n\n  /**\n   * Configures default base layers of the map\n   * @param baseLayerIds Array of base layer identifiers ('OpenStreetMap' | 'Esri' | 'CartoDB' ...)\n   *\t@see https://github.com/leaflet-extras/leaflet-providers#providers\n   */\n  configureBaseLayers(baseLayerIds: Array<string>) {\n    if (baseLayerIds && baseLayerIds.length > 0) {\n      baseLayerIds.forEach((id, index) => {\n        if (!this.baseLayers.contains(id)) {\n          const bl = MapServiceUtils.createDefaultBaseLayer(id, index === 0);\n          if (bl) {\n            this.baseLayers.addLayer(id, bl);\n          }\n        }\n      });\n    } else {\n      // By default it is added 'OpenStreetMap' as base layer.\n      this.baseLayers.addLayer(MapService.DEFAULT_BASE_MAP,\n        MapServiceUtils.createDefaultBaseLayer(MapService.DEFAULT_BASE_MAP, true));\n    }\n  }\n\n  /**\n   * Selects a layer by adding it again to the map\n   * @param id Unique identifier\n   */\n  selectBaseLayer(id: string) {\n    const l = this.baseLayers.getTileLayer(id);\n    if (!!l) {\n      this.clearBaseLayers();\n      l.addTo(this.getMap());\n\n      this.baseLayerSelected.emit(true);\n    }\n  }\n\n  /**\n   * Upload base layers in the map\n   */\n  uploadBaseLayers() {\n    const lM = this.baseLayers.getLayersMap();\n    this.clearBaseLayers();\n    this.controls[LAYERS_CONTROL_ID] = L.control.layers(lM).addTo(this.getMap());\n  }\n\n  /**\n   * Deletes all base layers.\n   */\n  clearBaseLayers(): void {\n    const lM = this.baseLayers.getLayersMap();\n    for (let layerId in lM) {\n      if (lM.hasOwnProperty(layerId)) {\n        const layer = this.baseLayers.getTileLayer(layerId);\n        this.map.removeLayer(layer);\n      }\n    }\n  }\n\n  /**\n   * Removes a layer (tiles, marker, circle, polygon...) from the map.\n   * @param id\n   *          Unique identifier.\n   * @return True if success, else false.\n   */\n  removeLayer(id: string): boolean {\n    let success = false;\n    let layer;\n    if (this.controls[LAYERS_CONTROL_ID]) {\n      if ((typeof (this.layers[id]) === 'string')) {\n        const menuLabel = this.layers[id];\n        if (this.overlayMaps[menuLabel]) {\n          layer = this.overlayMaps[menuLabel];\n        }\n      } else if (this.baseLayers.contains(id)) {\n        layer = this.baseLayers.getTileLayer(id);\n      }\n\n      if (!!layer) {\n        this.controls[LAYERS_CONTROL_ID].removeLayer(layer);\n        this.map.removeLayer(layer);\n        success = true;\n      }\n      delete this.layers[id];\n    }\n    return success;\n  }\n\n  /**\n   * Deletes all layers.\n   */\n  clearLayers(): void {\n    for (let layerId in this.layers) {\n      if (this.layers.hasOwnProperty(layerId)) {\n        this.removeLayer(layerId);\n      }\n    }\n    this.layers = {};\n  }\n\n  /**\n   * Returns concrete map layer.\n   * @param id\n   *          Layer identifier.\n   * @return Layer object if exists, else undefined.\n   */\n  getLayer(id: string) {\n    let layer;\n    if ((typeof (this.layers[id]) === 'string') && this.controls[LAYERS_CONTROL_ID]) {\n      const menuLabel = this.layers[id];\n      layer = this.overlayMaps[menuLabel] || undefined;\n    } else if (this.baseLayers.contains(id) && this.controls[LAYERS_CONTROL_ID]) {\n      layer = this.baseLayers.getTileLayer(id);\n    } else {\n      layer = this.layers[id];\n    }\n    return layer;\n  }\n\n  /**\n   * Creates Leaflet icon type, which can be used to create new icons.\n   * @param id\n   *          Unique identifier.\n   * @param options\n   *          Object with options (http://leafletjs.com/reference.html#icon-options).\n   * @return Leaflet icon type object.\n   */\n  createIconType(id, options) {\n    this.iconTypes[id] = L.Icon.extend({\n      options: options\n    });\n    return this.iconTypes[id];\n  }\n\n  /**\n   * Creates Leaflet icon, which can be used in layers.\n   * @param options\n   *          Object with options (http://leafletjs.com/reference.html#icon-options).\n   * @param type\n   *          (optional) Icon type, previously created with createIconType function.\n   * @return Leaflet icon object.\n   */\n  createIcon(options, type) {\n    let icon = void 0;\n    if (type) {\n      const iconType = this.iconTypes[type];\n      if (iconType) {\n        icon = new iconType(options);\n      }\n    } else {\n      icon = L.icon(options);\n    }\n    return icon;\n  }\n\n  /**\n   * Adds a tile layer to the map.\n   * @param id\n   *          Unique identifier.\n   * @param template\n   *          Known Leaflet provider name (leaflet-providers.js) or URL template\n   *          (http://leafletjs.com/reference.html#tilelayer).\n   * @param options\n   *          (optional) Object with options (http://leafletjs.com/reference.html#tilelayer-options).\n   * @param hidden\n   *          (optional) Set this property to true to do not show the layer.\n   * @param showInMenu\n   *          (optional) Set to 'base' or 'overlay' to appear in menu.\n   * @param menuLabel\n   *          (optional) Label to identify this layer in the menu.\n   * @return Added tile layer.\n   */\n  addTileLayer(id, template, options, hidden, showInMenu, menuLabel) {\n    let tileLayer = null;\n\n    // TODO leaflet-providers library does not have typings (d.ts) for using .provider\n\n    // try {\n    //   // First, search into known providers\n    //   tileLayer = TileLayer.provider(template, options);\n    // } catch (e) {\n    // If not found, try to create new tile layer\n    tileLayer = new L.TileLayer(template, options);\n    // }\n\n    // Add tile layer to map\n    if (tileLayer !== null) {\n      this.addLayer(id, tileLayer, hidden, showInMenu, menuLabel);\n    }\n\n    return tileLayer;\n  }\n\n  /**\n   * Used to display WMS services as tile layers on the map.\n   * @param id\n   *          Unique identifier.\n   * @param baseUrl\n   *          Base URL of the WMS service.\n   * @param options\n   *          (optional) Object with options (http://leafletjs.com/reference.html#tilelayer-wms-options).\n   * @param hidden\n   *          (optional) Set this property to true to do not show the layer.\n   * @param showInMenu\n   *          (optional) Set to 'base' or 'overlay' to appear in menu.\n   * @param menuLabel\n   *          (optional) Label to identify this layer in the menu.\n   * @return Added WMS tile layer.\n   */\n  addTileLayerWMS(id, baseUrl, optionsArg: OMapLayerOptions = {}, hidden, showInMenu, menuLabel) {\n    optionsArg = optionsArg ? optionsArg : {};\n    // Create new WMS tile layer\n    const tileLayerWMS = new L.TileLayer.WMS(baseUrl, (optionsArg.layerOptions as any));\n\n    // Add WMS tile layer to map\n    this.addLayer(id, tileLayerWMS, hidden, showInMenu, menuLabel);\n\n    return tileLayerWMS;\n  }\n\n  /**\n   * Adds a marker to the map.\n   * @param id\n   *          Unique identifier.\n   * @param latitude\n   *          Latitude.\n   * @param longitude\n   *          Longitude.\n   * @param options\n   *          (optional) Object with options (http://leafletjs.com/reference.html#marker-options).\n   * @param popup\n   *          (optional) Pop up message (accepts HTML code).\n   * @param hidden\n   *          (optional) Set this property to true to do not show the layer.\n   * @param showInMenu\n   *          (optional) Set to 'base' or 'overlay' to appear in menu.\n   * @param menuLabel\n   *          (optional) Label to identify this layer in the menu.\n   * @return Added marker.\n   */\n  addMarker(id, latitude, longitude, optionsArg: OMapLayerOptions = {}, popup, hidden, showInMenu, menuLabel) {\n    optionsArg = optionsArg ? optionsArg : {};\n    // Create new marker\n    const latLng = new L.LatLng(latitude, longitude);\n\n    if (optionsArg.iconOptions) {\n      var iconOptions: L.IconOptions = { iconUrl: '' };\n      Object.assign(iconOptions, optionsArg.iconOptions);\n      optionsArg.layerOptions = optionsArg.layerOptions ? optionsArg.layerOptions : {};\n      optionsArg.layerOptions.icon = L.icon(iconOptions);\n    }\n    const marker = L.marker(latLng, optionsArg.layerOptions);\n\n    // Bind popup message\n    if (typeof (popup) === 'string') {\n      marker.bindPopup(popup, optionsArg.popupOptions);\n    }\n\n    // Add marker to map\n    this.addLayer(id, marker, hidden, showInMenu, menuLabel);\n\n    return marker;\n  }\n\n  /**\n   * Displays a single image over specific bounds of the map.\n   * @param id\n   *          Unique identifier.\n   * @param url\n   *          Image URL.\n   * @param left\n   *          Geographical coordinate of left bound.\n   * @param bottom\n   *          Geographical coordinate of bottom bound.\n   * @param right\n   *          Geographical coordinate of right bound.\n   * @param top\n   *          Geographical coordinate of top bound.\n   * @param options\n   *          (optional) Object with options (http://leafletjs.com/reference.html#imageoverlay-options).\n   * @param popup\n   *          (optional) Pop up message (accepts HTML code).\n   * @param hidden\n   *          (optional) Set this property to true to do not show the layer.\n   * @param showInMenu\n   *          (optional) Set to 'base' or 'overlay' to appear in menu.\n   * @param menuLabel\n   *          (optional) Label to identify this layer in the menu.\n   * @return Added image.\n   */\n  addImageOverlay(id, url, left, bottom, right, top, optionsArg: OMapLayerOptions = {}, popup, hidden, showInMenu, menuLabel) {\n    optionsArg = optionsArg ? optionsArg : {};\n    // Create new image overlay\n    const bounds = new L.LatLngBounds([[bottom, left], [top, right]]);\n    const image = new L.ImageOverlay(url, bounds, (optionsArg.layerOptions as any));\n\n    // Bind popup message\n    if (typeof (popup) === 'string') {\n      // TODO image.bindPopup(popup, this.popupOptions);\n    }\n\n    // Add rectangle to map\n    this.addLayer(id, image, hidden, showInMenu, menuLabel);\n\n    return image;\n  }\n\n  /**\n   * Adds a polyline to the map.\n   * @param id\n   *          Unique identifier.\n   * @param points\n   *          Array of geographical points.\n   * @param options\n   *          (optional) Object with options (http://leafletjs.com/reference.html#polyline-options).\n   * @param popup\n   *          (optional) Pop up message (accepts HTML code).\n   * @param hidden\n   *          (optional) Set this property to true to do not show the layer.\n   * @param showInMenu\n   *          (optional) Set to 'base' or 'overlay' to appear in menu.\n   * @param menuLabel\n   *          (optional) Label to identify this layer in the menu.\n   * @return Added polyline.\n   */\n  addPolyline(id, points, optionsArg: OMapLayerOptions = {}, popup, hidden, showInMenu, menuLabel): L.Polyline<any> {\n    optionsArg = optionsArg ? optionsArg : {};\n    // Create new polyline\n    const polyline: L.Polyline<any> = new L.Polyline(points, (optionsArg.layerStyles as any));\n\n    // Bind popup message\n    if (typeof (popup) === 'string') {\n      polyline.bindPopup(popup, optionsArg.popupOptions);\n    }\n\n    // Add polyline to map\n    this.addLayer(id, polyline, hidden, showInMenu, menuLabel);\n\n    return polyline;\n  }\n\n  /**\n   * Adds a multi-polyline to the map.\n   * @param id\n   *          Unique identifier.\n   * @param points\n   *          Array of arrays of geographical points (one for each individual polyline).\n   * @param options\n   *          (optional) Object with options (http://leafletjs.com/reference.html#polyline-options).\n   * @param popup\n   *          (optional) Pop up message (accepts HTML code).\n   * @param hidden\n   *          (optional) Set this property to true to do not show the layer.\n   * @param showInMenu\n   *          (optional) Set to 'base' or 'overlay' to appear in menu.\n   * @param menuLabel\n   *          (optional) Label to identify this layer in the menu.\n   * @return Added multi-polyline.\n   */\n  addMultiPolyline(id, points, optionsArg: OMapLayerOptions = {}, popup, hidden, showInMenu, menuLabel) {\n    optionsArg = optionsArg ? optionsArg : {};\n    // Create new multi-polyline\n    const multiPolyline = new L.MultiPolyline(points, optionsArg.layerStyles);\n\n    // Bind popup message\n    if (typeof (popup) === 'string') {\n      multiPolyline.bindPopup(popup, optionsArg.popupOptions);\n    }\n\n    // Add multi-polyline to map\n    this.addLayer(id, multiPolyline, hidden, showInMenu, menuLabel);\n\n    return multiPolyline;\n  }\n\n  /**\n   * Adds a polygon to the map.\n   * @param id\n   *          Unique identifier.\n   * @param points\n   *          Array of geographical points.\n   * @param options\n   *          (optional) Object with options (http://leafletjs.com/reference.html#polyline-options).\n   * @param popup\n   *          (optional) Pop up message (accepts HTML code).\n   * @param hidden\n   *          (optional) Set this property to true to do not show the layer.\n   * @param showInMenu\n   *          (optional) Set to 'base' or 'overlay' to appear in menu.\n   * @param menuLabel\n   *          (optional) Label to identify this layer in the menu.\n   * @return Added polygon.\n   */\n  addPolygon(id, points, optionsArg: OMapLayerOptions = {}, popup, hidden, showInMenu, menuLabel) {\n    optionsArg = optionsArg ? optionsArg : {};\n    // Create new polygon\n    const polygon = new L.Polygon(points, (optionsArg.layerStyles as any));\n\n    // Bind popup message\n    if (typeof (popup) === 'string') {\n      polygon.bindPopup(popup, optionsArg.popupOptions);\n    }\n\n    // Add polygon to map\n    this.addLayer(id, polygon, hidden, showInMenu, menuLabel);\n\n    return polygon;\n  }\n\n  /**\n   * Adds a multi-polygon to the map.\n   * @param id\n   *          Unique identifier.\n   * @param points\n   *          Array of arrays of geographical points (one for each individual polygon).\n   * @param options\n   *          (optional) Object with options (http://leafletjs.com/reference.html#polyline-options).\n   * @param popup\n   *          (optional) Pop up message (accepts HTML code).\n   * @param hidden\n   *          (optional) Set this property to true to do not show the layer.\n   * @param showInMenu\n   *          (optional) Set to 'base' or 'overlay' to appear in menu.\n   * @param menuLabel\n   *          (optional) Label to identify this layer in the menu.\n   * @return Added multi-polygon.\n   */\n  addMultiPolygon(id, points, optionsArg: OMapLayerOptions = {}, popup, hidden, showInMenu, menuLabel) {\n    optionsArg = optionsArg ? optionsArg : {};\n    // Create new multi-polygon\n    const multiPolygon = new L.MultiPolygon(points, optionsArg.layerStyles);\n\n    // Bind popup message\n    if (typeof (popup) === 'string') {\n      multiPolygon.bindPopup(popup, optionsArg.popupOptions);\n    }\n\n    // Add multi-polygon to map\n    this.addLayer(id, multiPolygon, hidden, showInMenu, menuLabel);\n\n    return multiPolygon;\n  }\n\n  /**\n   * Adds a rectangle to the map.\n   * @param id\n   *          Unique identifier.\n   * @param left\n   *          Geographical coordinate of left bound.\n   * @param bottom\n   *          Geographical coordinate of bottom bound.\n   * @param right\n   *          Geographical coordinate of right bound.\n   * @param top\n   *          Geographical coordinate of top bound.\n   * @param options\n   *          (optional) Object with options (http://leafletjs.com/reference.html#path-options).\n   * @param popup\n   *          (optional) Pop up message (accepts HTML code).\n   * @param hidden\n   *          (optional) Set this property to true to do not show the layer.\n   * @param showInMenu\n   *          (optional) Set to 'base' or 'overlay' to appear in menu.\n   * @param menuLabel\n   *          (optional) Label to identify this layer in the menu.\n   * @return Added rectangle.\n   */\n  addRectangle(id, left, bottom, right, top, optionsArg: OMapLayerOptions = {}, popup, hidden, showInMenu, menuLabel) {\n    optionsArg = optionsArg ? optionsArg : {};\n    // Create new rectangle\n    const bounds = new L.LatLngBounds([[bottom, left], [top, right]]);\n    const rectangle = new L.Rectangle(bounds, (optionsArg.layerStyles as any));\n\n    // Bind popup message\n    if (typeof (popup) === 'string') {\n      rectangle.bindPopup(popup, optionsArg.popupOptions);\n    }\n\n    // Add rectangle to map\n    this.addLayer(id, rectangle, hidden, showInMenu, menuLabel);\n\n    return rectangle;\n  }\n\n  /**\n   * Adds a circle to the map.\n   * @param id\n   *          Unique identifier.\n   * @param latitude\n   *          Center latitude.\n   * @param longitude\n   *          Center longitude.\n   * @param radius\n   *          Radius in pixels.\n   * @param options\n   *          (optional) Object with options (http://leafletjs.com/reference.html#path-options).\n   * @param popup\n   *          (optional) Pop up message (accepts HTML code).\n   * @param hidden\n   *          (optional) Set this property to true to do not show the layer.\n   * @param showInMenu\n   *          (optional) Set to 'base' or 'overlay' to appear in menu.\n   * @param menuLabel\n   *          (optional) Label to identify this layer in the menu.\n   * @return Added circle.\n   */\n  addCircle(id, latitude, longitude, radius, optionsArg: OMapLayerOptions = {}, popup, hidden, showInMenu, menuLabel) {\n    optionsArg = optionsArg ? optionsArg : {};\n    // Create new circle\n    const circle = new L.Circle([latitude, longitude], radius, (optionsArg.layerStyles as any));\n\n    // Bind popup message\n    if (typeof (popup) === 'string') {\n      circle.bindPopup(popup, optionsArg.popupOptions);\n    }\n\n    // Add circle to map\n    this.addLayer(id, circle, hidden, showInMenu, menuLabel);\n\n    return circle;\n  }\n\n  /**\n   * Adds a layer group to the map.\n   * @param id\n   *          Unique identifier.\n   * @param layers\n   *          (optional) Array with layers of the group.\n   * @param hidden\n   *          (optional) Set this property to true to do not show the layer.\n   * @param showInMenu\n   *          (optional) Set to 'base' or 'overlay' to appear in menu.\n   * @param menuLabel\n   *          (optional) Label to identify this layer in the menu.\n   * @return Added layer group.\n   */\n  addLayerGroup(id, layers, hidden, showInMenu, menuLabel) {\n    // Create new layer group\n    const layerGroup = L.layerGroup(layers);\n\n    // Add layer group to map\n    this.addLayer(id, layerGroup, hidden, showInMenu, menuLabel);\n\n    return layerGroup;\n  }\n\n  /**\n   * Adds a extended layer group that also has mouse events (propagated from members of the group) and a shared\n   * bindPopup method.\n   * @param id\n   *          Unique identifier.\n   * @param layers\n   *          (optional) Array with layers of the group.\n   * @param popup\n   *          (optional) Pop up message (accepts HTML code).\n   * @param hidden\n   *          (optional) Set this property to true to do not show the layer.\n   * @param showInMenu\n   *          (optional) Set to 'base' or 'overlay' to appear in menu.\n   * @param menuLabel\n   *          (optional) Label to identify this layer in the menu.\n   * @return Added layer group.\n   */\n  addFeatureGroup(id, layers, popup, hidden, showInMenu, menuLabel) {\n    // Create new feature group\n    const featureGroup = L.featureGroup(layers);\n\n    // Bind popup message\n    if (typeof (popup) === 'string') {\n      featureGroup.bindPopup(popup, this.popupOptions);\n    }\n\n    // Add feature group to map\n    this.addLayer(id, featureGroup, hidden, showInMenu, menuLabel);\n\n    return featureGroup;\n  }\n\n  /**\n   * Adds a GeoJSON layer. Allows to parse GeoJSON data and display it on the map. Extends FeatureGroup.\n   * @param id\n   *          Unique identifier.\n   * @param data\n   *          (optional) GeoJSON data (http://geojson.org/geojson-spec.html).\n   * @param options\n   *          (optional) Object with options (http://leafletjs.com/reference.html#geojson-options).\n   * @param popup\n   *          (optional) Pop up message (accepts HTML code).\n   * @param hidden\n   *          (optional) Set this property to true to do not show the layer.\n   * @param showInMenu\n   *          (optional) Set to 'base' or 'overlay' to appear in menu.\n   * @param menuLabel\n   *          (optional) Label to identify this layer in the menu.\n   * @return Added GeoJSON layer.\n   */\n  public addGeoJSON(id, data, optionsArg: OMapLayerOptions = {}, popup, hidden, showInMenu, menuLabel, contextmenu): L.GeoJSON {\n    optionsArg = optionsArg ? optionsArg : {};\n    // Right now overrides 'onEachFeature' method. In the future try to concatenate with possible user method.\n    const iconOptions = optionsArg.iconOptions;\n    let customIconFromProps: string;\n    if (iconOptions) {\n      customIconFromProps = iconOptions.iconFromProperties;\n      delete iconOptions.iconFromProperties;\n    }\n    const self = this;\n    const geoJson = L.geoJSON(data, {\n      pointToLayer: (feature, latlng) => {\n        optionsArg.layerOptions = optionsArg.layerOptions ? optionsArg.layerOptions : {};\n        if (customIconFromProps && feature && feature.properties[customIconFromProps]) {\n          iconOptions.iconUrl = feature.properties[customIconFromProps];\n        }\n        if (iconOptions) {\n          optionsArg.layerOptions.icon = new L.Icon(iconOptions);\n        } else {\n          optionsArg.layerOptions.icon = new L.Icon.Default();\n        }\n        return (L as any).marker(latlng, optionsArg.layerOptions);\n      },\n      style: geoJsonFeature => {\n        return (MapServiceUtils.retrieveGeoJSONStyles(geoJsonFeature, optionsArg.layerStyles) as any);\n      },\n      onEachFeature: (feature, layer) => {\n        if (contextmenu) {\n          if (contextmenu.callback) {\n            contextmenu['contextmenuItems'] = self.parseContextmenuItems(contextmenu.callback(layer));\n          }\n\n          (layer as any).bindContextMenu({\n            contextmenu: true,\n            contextmenuItems: contextmenu['contextmenuItems'],\n            contextmenuWidth: contextmenu['contextmenuWidth'],\n            contextmenuInheritItems: false\n          });\n        }\n\n        if (popup && Object.keys(feature.properties).length > 0 /*&& Util.isGeoJSONLayer(layer)*/) {\n          try {\n            (<L.GeoJSON>layer).bindPopup('', optionsArg.popupOptions).on('popupopen', (e: any) => {\n              const txt = this.popupTemplate(popup, feature.properties);\n              e.popup.setContent(txt);\n            });\n          } catch (error) {\n            console.log(error);\n          }\n        }\n      }\n    });\n\n    // Add GeoJSON layer to map\n    this.addLayer(id, geoJson, hidden, showInMenu, menuLabel);\n\n    // // Add MarkerCluster to layer\n    // let markers = (<any>L).markerClusterGroup();\n    // markers.addLayer(geoJson);\n    // // this.map.addLayer(markers);\n    // this.addLayer(id, markers, hidden, showInMenu, menuLabel);\n    return geoJson;\n  }\n\n  parseContextmenuItems(items: Array<any>): Array<any> {\n    return items.map((element) => {\n      const item = new Object();\n      if (element instanceof Object) {\n        // label: The label to use for the menu item (required).\n        if (element.hasOwnProperty('label')) {\n          item['text'] = this.translateMapService.get(element.label);\n        }\n        // icon: Url for a 16x16px icon to display to the left of the label.\n        if (element.hasOwnProperty('icon') && element.icon) {\n          item['icon'] = element.icon;\n        }\n        // iconCls: A CSS class which sets the background image for the icon (exclusive of the icon option).\n        if (element.hasOwnProperty('iconCls') && element.iconCls) {\n          item['iconCls'] = element.iconCls;\n        }\n        // callback:A callback function to be invoked when the menu item is clicked.\n        // The callback is passed an object with properties identifying the location the menu was opened at:\n        // latlng, layerPoint and containerPoint.\n        if (element.hasOwnProperty('callback') && element.callback) {\n          item['callback'] = element.callback;\n        }\n        if (element.hasOwnProperty('index') && element.index) {\n          item['index'] = element.index;\n        }\n        // If true a separator will be created instead of a menu item.\n        if (element.hasOwnProperty('separator') && element.separator) {\n          item['separator'] = element.separator;\n        }\n        return item;\n      } else {\n        return element;\n      }\n    });\n  }\n\n  popupTemplate(str, data) {\n    const templateRe = /\\{ *([\\w_\\-]+) *\\}/g;\n    return str.replace(templateRe, (strV, key) => {\n      let value = data[key];\n      if (value === undefined) {\n        value = '';\n      } else if (typeof value === 'function') {\n        value = value(data);\n      }\n      return value;\n    });\n  }\n\n}\n","import * as L from 'leaflet';\n\nimport { ILayerService } from '../interfaces/ILayerService';\n\n// import { TileLayer } from 'leaflet';\n\nexport class Util {\n  static parseBoolean(value: string, defaultValue?: boolean): boolean {\n    if ((typeof value === 'string') && (value.toUpperCase() === 'TRUE' || value.toUpperCase() === 'YES')) {\n      return true;\n    } else if ((typeof value === 'string') && (value.toUpperCase() === 'FALSE' || value.toUpperCase() === 'NO')) {\n      return false;\n    } else if (defaultValue !== undefined || defaultValue !== null) {\n      return defaultValue;\n    }\n    return false;\n  }\n\n  static parseArray(value: string): string[] {\n    if (value) {\n      return value.split(';');\n    }\n    return [];\n  }\n\n  /**\n   * Checks wether specified service as argument implements 'ILayerService' interface\n   * @param arg The service instance for checking.\n   * @returns boolean\n   */\n  static isLayerService(arg: any): arg is ILayerService {\n    return arg && ((arg as ILayerService).load !== undefined);\n  }\n\n  static isGeoJSONLayer(arg: any): arg is L.GeoJSON {\n    return arg && ((arg as L.GeoJSON).addData !== undefined);\n  }\n\n  static isTileLayer(arg: any): arg is L.TileLayer {\n    return arg && ((arg as L.TileLayer).setZIndex !== undefined && (arg as L.TileLayer).on !== undefined);\n  }\n\n  static isBlank(value: any): boolean {\n    let isBlank = false;\n    if (value === undefined || value === null || value.length === 0) {\n      isBlank = true;\n    }\n    return isBlank;\n  }\n}\n","import { Component, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n  selector: 'o-map-layer-container',\n  inputs: [\n    'label'\n  ],\n  templateUrl: './o-map-layer-container.component.html',\n  host: {\n    '[class.o-map-layer-container]': 'true'\n  }\n})\nexport class OMapLayerContainerComponent {\n\n  public label: string;\n\n  @ViewChild('headerTemplateref', { read: TemplateRef })\n  public headerTemplateref: TemplateRef<any>;\n\n  constructor() {\n    //\n  }\n}\n","<ng-template #headerTemplateref>\n  <ng-content select=\"[o-map-layer-container-header]\"></ng-content>\n</ng-template>\n\n<ng-content></ng-content>","import { Component, OnInit } from '@angular/core';\nimport { LeafletMouseEvent } from 'leaflet';\nimport * as L from 'leaflet';\n\nimport { MapService } from '../../services/MapService';\n\n@Component({\n  selector: 'o-marker',\n  templateUrl: './o-marker.component.html',\n  styleUrls: ['./o-marker.component.scss']\n})\nexport class OMarkerComponent implements OnInit {\n  protected _editing: boolean;\n  protected _removing: boolean;\n  public markerCount: number;\n  private mapService: MapService;\n\n  constructor(mapService: MapService) {\n    this.editing = false;\n    this.removing = false;\n    this.markerCount = 0;\n    this.mapService = mapService;\n  }\n\n  ngOnInit() {\n    this.mapService.disableMouseEvent('add-marker');\n    this.mapService.disableMouseEvent('remove-marker');\n  }\n\n  Initialize() {\n    this.mapService.map.on('click', (e: LeafletMouseEvent) => {\n      if (this.editing) {\n        const marker = L.marker(e.latlng, {\n          // icon: L.icon({\n          //     iconUrl: require('../../../node_modules/leaflet/dist/images/marker-icon.png'),\n          //     shadowUrl: require('../../../node_modules/leaflet/dist/images/marker-shadow.png')\n          // }),\n          draggable: true\n        }).bindPopup('Marker #' + (this.markerCount + 1).toString(), {\n          offset: L.point(12, 6)\n        }).addTo(this.mapService.map);\n        // .openPopup();\n\n        this.markerCount += 1;\n\n        marker.on('click', () => {\n          if (this.removing) {\n            this.mapService.map.removeLayer(marker);\n            this.markerCount -= 1;\n          }\n        });\n      }\n    });\n  }\n\n  toggleEditing() {\n    this.editing = !this.editing;\n\n    if (this.editing === true && this.removing === true) {\n      this.removing = false;\n    }\n  }\n\n  toggleRemoving() {\n    this.removing = !this.removing;\n\n    if (this.editing === true && this.removing === true) {\n      this.editing = false;\n    }\n  }\n\n  get editing(): boolean {\n    return this._editing;\n  }\n\n  set editing(val: boolean) {\n    this._editing = val;\n  }\n\n  get removing(): boolean {\n    return this._removing;\n  }\n\n  set removing(val: boolean) {\n    this._removing = val;\n  }\n}\n","<button mat-button id=\"add-marker\"\n\tclass=\"mat-icon-button mat-primary on-map-absolute\"\n\t[class.btn-default]=\"!editing\"\n\t[class.btn-primary]=\"editing\"\n\t[disabled]=\"removing\"\n\ttitle=\"Add Marker\"\n\t(click)=\"toggleEditing()\">\n\t\t<i class=\"material-icons\">add_location</i>\n</button>\n<button mat-button id=\"remove-marker\"\n\tclass=\"mat-icon-button mat-primary on-map-absolute\"\n\t[class.btn-default]=\"!removing\"\n\t[class.btn-primary]=\"removing\"\n\t[disabled]=\"editing\"\n\ttitle=\"Remove Marker\"\n\t(click)=\"toggleRemoving()\">\n\t\t<i class=\"material-icons\">delete</i>\n</button>\n","import { EventEmitter } from '@angular/core';\nimport * as L from 'leaflet';\nimport { Observable } from 'rxjs';\n\nexport interface IMapDrawControlEvent {\n  event: string;\n  data: any;\n}\n\nexport class OMapDrawControlsEvents {\n\n  onDrawEvent: EventEmitter<IMapDrawControlEvent> = new EventEmitter<IMapDrawControlEvent>();\n  protected map: L.Map;\n\n  constructor(protected editableLayers: L.FeatureGroup) { }\n\n  setMap(arg: L.Map) {\n    this.map = arg;\n    this.registerMapEvents();\n  }\n\n  registerMapEvents() {\n    this.map.on('draw:created', (data: any) => {\n      this.editableLayers.addLayer(data.layer);\n      this.onDrawEvent.emit({ event: 'onDrawCreated', data: data });\n    });\n\n    this.map.on('draw:edited', (data: any) => {\n      this.onDrawEvent.emit({ event: 'onDrawEdited', data: data });\n    });\n\n    this.map.on('draw:deleted', (data: any) => {\n      this.onDrawEvent.emit({ event: 'onDrawDeleted', data: data });\n    });\n\n    this.map.on('draw:drawstart', (data: any) => {\n      this.onDrawEvent.emit({ event: 'onDrawDrawStart', data: data });\n    });\n\n    this.map.on('draw:drawstop', (data: any) => {\n      this.onDrawEvent.emit({ event: 'onDrawDrawstop', data: data });\n    });\n\n    this.map.on('draw:drawvertex', (data: any) => {\n      this.onDrawEvent.emit({ event: 'onDrawvertex', data: data });\n    });\n\n    this.map.on('draw:editstart', (data: any) => {\n      this.onDrawEvent.emit({ event: 'onDrawEditStart', data: data });\n    });\n\n    this.map.on('draw:editmove', (data: any) => {\n      this.onDrawEvent.emit({ event: 'onDrawEditMove', data: data });\n    });\n\n    this.map.on('draw:editresize', (data: any) => {\n      this.onDrawEvent.emit({ event: 'onDrawEditResize', data: data });\n    });\n\n    this.map.on('draw:editvertex', (data: any) => {\n      this.onDrawEvent.emit({ event: 'onDrawEditvertex', data: data });\n    });\n\n    this.map.on('draw:editstop', (data: any) => {\n      this.onDrawEvent.emit({ event: 'onDrawEditStop', data: data });\n    });\n\n    this.map.on('draw:deletestart', (data: any) => {\n      this.onDrawEvent.emit({ event: 'onDrawDeleteStart', data: data });\n    });\n\n    this.map.on('draw:deletestop', (data: any) => {\n      this.onDrawEvent.emit({ event: 'onDrawDeleteStop', data: data });\n    });\n  }\n\n  observable(): Observable<IMapDrawControlEvent> {\n    return this.onDrawEvent.asObservable();\n  }\n\n}\n","import { OMapLayerGroupsWarehouse } from './LayerGroupsWarehouse.class';\nimport { LayerConfiguration } from './LayerConfiguration.class';\n\nexport class LayerGroupConfiguration {\n  public id: string;\n  public idParent: string;\n  public name: string;\n  public description: string;\n  public collapsed: boolean;\n  public mapLayers: Array<LayerConfiguration>;\n  public layerGroupsWarehouse: OMapLayerGroupsWarehouse;\n\n  constructor() {\n    this.mapLayers = new Array<LayerConfiguration>();\n    this.layerGroupsWarehouse = new OMapLayerGroupsWarehouse();\n  }\n\n  public addLayerConfiguration(layerConf: LayerConfiguration) {\n    if (layerConf) {\n      this.mapLayers.push(layerConf);\n    }\n  }\n}\n","import { LayerGroupConfiguration } from './LayerGroupConfiguration.class';\n\nexport class OMapLayerGroupsWarehouse {\n  public all: LayerGroupConfiguration[] = [];\n  private map: Object = {};\n\n  public get(id: string): LayerGroupConfiguration {\n    let group: LayerGroupConfiguration;\n    const position = this.map[id];\n    // To always return a layerGroup configuration to work with\n    if (position === undefined) {\n      group = new LayerGroupConfiguration();\n      group.id = id;\n      this.push(group);\n    } else {\n      group = this.all[position];\n    }\n    return group;\n  }\n\n  public push(g: LayerGroupConfiguration) {\n    const p = this.map[g.id];\n    if (p === undefined) {\n      this.map[g.id] = this.all.length;\n      this.all.push(g);\n    } else {\n      g.mapLayers = g.mapLayers.concat(this.all[p].mapLayers);\n      g.layerGroupsWarehouse.concat(this.all[p].layerGroupsWarehouse);\n      this.all[p] = g;\n    }\n  }\n\n  public concat(gw: OMapLayerGroupsWarehouse) {\n    gw.all.forEach(lgw => {\n      this.push(lgw);\n    });\n  }\n}\n","import { ILatLng } from '../interfaces/ILatLng';\n\nexport class Center implements ILatLng {\n  latitude: number;\n  longitude: number;\n\n  constructor(lat: number, lng: number) {\n    this.latitude = lat;\n    this.longitude = lng;\n  }\n}\n","import { EventEmitter } from '@angular/core';\nimport * as L from 'leaflet';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { Zoom } from '../../interfaces/IZoom';\nimport { Center } from '../../models/Center.class';\nimport { MapService } from '../../services/MapService';\nimport { TranslateMapService } from '../../services/TranslateMapService';\nimport { Util } from '../../utils/util';\nimport { OMapBaseLayerComponent } from '../map-base-layer/o-map-base-layer.component';\nimport { OMapLayerComponent } from '../map-layer/o-map-layer.component';\n\nconst DEFAULT_CENTER = new Center(42.2274519, -8.7236805);\n\nexport class OMapBase {\n  public zoom: Zoom = { control: true };\n  protected translateMapService: TranslateMapService;\n  protected mapBaseLayerGroup: Array<OMapBaseLayerComponent> = new Array<OMapBaseLayerComponent>();\n  protected mapLayers: Array<OMapLayerComponent> = new Array<OMapLayerComponent>();\n  protected mapService: MapService;\n  protected mapConfiguration: EventEmitter<any> = new EventEmitter();\n  protected mapAfterViewInit: EventEmitter<any> = new EventEmitter();\n  protected mapReady: BehaviorSubject<any> = new BehaviorSubject(undefined);\n  private center: Center;\n\n  /**\n   * Get individual layer\n   * @param layerId - Id of the layer to find\n   */\n  public getOMapLayer(layerId: string): OMapLayerComponent {\n    return this.mapLayers.filter(layer => layer.layerId === layerId).shift();\n  }\n\n  /**\n   * Get all the layers\n   */\n  public getOMapLayers(): Array<OMapLayerComponent> {\n    return this.mapLayers;\n  }\n\n  /**\n   * Add a new layer\n   * ####TODO\n   * - Change to an Add-Or-Update pattern\n   * @param layer - The layer to add\n   */\n  public addOMapLayer(layer: OMapLayerComponent) {\n    this.mapLayers.push(layer);\n  }\n\n  /**\n   * Get map configuration service\n   */\n  public getMapService(): MapService {\n    return this.mapService;\n  }\n\n  /**\n   * Get Leaflet map reference\n   */\n  public getLMap(): L.Map {\n    return this.getMapService().map;\n  }\n\n  /**\n   * Get current center\n   */\n  public getCenter(): Center {\n    return this.center || DEFAULT_CENTER;\n  }\n\n  /**\n   * Set center from a coma separated coordinates 'latitude, longitude' string.\n   * Accepted ',' and ';'\n   * @param sCenter - 'latitude, longitude' string\n   */\n  public setCenter(sCenter: string) {\n    if (Util.isBlank(sCenter)) {\n      this.center = DEFAULT_CENTER;\n    } else {\n      const coordinates = sCenter.split(/,|;/);\n      if (coordinates.length === 2) {\n        const latitude = parseFloat(coordinates[0]);\n        const longitude = parseFloat(coordinates[1]);\n        this.center = new Center(latitude, longitude);\n      } else {\n        this.center = DEFAULT_CENTER;\n      }\n    }\n\n    const map = this.getMapService().map;\n    if (!Util.isBlank(map)) {\n      map.panTo([this.center.latitude, this.center.longitude]);\n    }\n  }\n\n  /**\n   * @deprecated use getMapService().addMarker\n   */\n  public addMarker(id, latitude, longitude, options, popup, hidden, showInMenu, menuLabel) {\n    this.mapService.addMarker(id, latitude, longitude, options, popup, hidden, showInMenu, menuLabel);\n  }\n\n  public onMapConfigured(): EventEmitter<any> {\n    return this.mapConfiguration;\n  }\n\n  public onMapAfterViewInit(): EventEmitter<any> {\n    return this.mapAfterViewInit;\n  }\n\n  public onMapReady(): BehaviorSubject<any> {\n    return this.mapReady;\n  }\n\n}\n","import { EventEmitter } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { IMapDrawControlEvent } from '../map-draw-controls/o-map-draw-controls-events.class';\nimport { OMapEvents } from './o-map-events.interface';\nimport { OMapBase } from './o-map.class';\nimport { OMapComponent } from './o-map.component';\n\nexport class OMapWEvents extends OMapBase implements OMapEvents {\n\n  onClick = new EventEmitter<any>();\n  onDrag = new EventEmitter<any>();\n  onMove = new EventEmitter<any>();\n  onMoveEnd = new EventEmitter<any>();\n  onZoomLevelsChange = new EventEmitter<any>();\n  onZoomStart = new EventEmitter<any>();\n  onZoomEnd = new EventEmitter<any>();\n  onZoom = new EventEmitter<any>();\n\n  onDrawEvent = new EventEmitter<any>();\n\n  onDrawCreated = new EventEmitter<any>();\n  onDrawEdited = new EventEmitter<any>();\n  onDrawDeleted = new EventEmitter<any>();\n  onDrawDrawStart = new EventEmitter<any>();\n  onDrawDrawstop = new EventEmitter<any>();\n  onDrawvertex = new EventEmitter<any>();\n  onDrawEditStart = new EventEmitter<any>();\n  onDrawEditMove = new EventEmitter<any>();\n  onDrawEditResize = new EventEmitter<any>();\n  onDrawEditvertex = new EventEmitter<any>();\n  onDrawEditStop = new EventEmitter<any>();\n  onDrawDeleteStart = new EventEmitter<any>();\n  onDrawDeleteStop = new EventEmitter<any>();\n\n  constructor() {\n    super();\n    /**\n     * When configuration is triggered\n     * this subscription maps Leaflet events to OMap EventEmitters\n     */\n    this.onMapConfigured().subscribe(() => {\n      ['Click', 'Drag', 'Move', 'MoveEnd', 'ZoomLevelsChange', 'ZoomStart', 'ZoomEnd', 'Zoom'].forEach(eventName => {\n        this.getMapService().map.on(\n          eventName.toLowerCase(),\n          (evt) => {\n            this['on' + eventName].emit(evt);\n          }\n        );\n      });\n    });\n\n    this.onMapAfterViewInit().subscribe((oMap: OMapComponent) => {\n      const observable: Observable<IMapDrawControlEvent> = oMap.getDrawControlEventsObservable();\n      if (observable) {\n        observable.subscribe((args: IMapDrawControlEvent) => {\n          this.onDrawEvent.emit(args.data);\n          this[args.event].emit(args.data);\n        });\n      }\n    });\n  }\n\n}\n","import { MatSidenav } from '@angular/material/sidenav';\n\nimport { OMapWEvents } from './o-map-w-events.class';\n\nexport class OMapWSidenav extends OMapWEvents {\n\n  public sideNavCmp: MatSidenav;\n  protected _isSidenavVisible: boolean = false;\n\n  /**\n   * Changes Sidebar state\n   */\n  public toggleSidenav(e?: MouseEvent): void {\n    if (e) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n    if (this.sideNavCmp) {\n      if (this.isSidenavVisible) {\n        this.sideNavCmp.close();\n      } else {\n        this.sideNavCmp.open();\n      }\n      setTimeout(() => {\n        this.getMapService().map.invalidateSize(true);\n        if (!this.sideNavCmp.opened) {\n          const evt = new UIEvent('resize');\n          window.dispatchEvent(evt);\n        }\n      }, 0);\n    }\n    this.isSidenavVisible = !this.isSidenavVisible;\n  }\n\n  get isSidenavVisible(): boolean {\n    return this._isSidenavVisible;\n  }\n\n  set isSidenavVisible(val: boolean) {\n    this._isSidenavVisible = val;\n  }\n\n}\n","import { OMapLayerGroup } from '../../interfaces/o-map-layer-group.interface';\nimport { LayerConfiguration } from '../../models/LayerConfiguration.class';\nimport { LayerGroupConfiguration } from '../../models/LayerGroupConfiguration.class';\nimport { OMapLayerGroupsWarehouse } from '../../models/LayerGroupsWarehouse.class';\nimport { OMapWSidenav } from './o-map-w-sidenav.class';\n\nexport class OMapWLayers extends OMapWSidenav {\n  mapLayerGroup: OMapLayerGroup;\n  private auxLayerGroupWarehouse: OMapLayerGroupsWarehouse = new OMapLayerGroupsWarehouse();\n  // private mLayerGroupsWarehouse: OMapLayerGroupsWarehouse = new OMapLayerGroupsWarehouse();\n\n  /**\n   * Add multiple LayerGroup configuration objects to OMap\n   * @param groups -\n   */\n  addOMapLayerGroupsConfiguration(groups: Array<LayerGroupConfiguration>) {\n    if (!groups || groups.length === 0) {\n      return;\n    }\n\n    groups.forEach(layerGroup => {\n      this.addOMapLayerGroupConfiguration(layerGroup);\n    });\n  }\n\n  /**\n   * Add LayerGroup configuration object to OMap\n   * @param layerGroup -\n   */\n  addOMapLayerGroupConfiguration(layerGroup: LayerGroupConfiguration) {\n    if (!layerGroup) {\n      return;\n    }\n\n    this.auxLayerGroupWarehouse.push(layerGroup);\n    if (layerGroup.idParent) {\n      this.auxLayerGroupWarehouse.get(layerGroup.idParent).layerGroupsWarehouse.push(layerGroup);\n    } else {\n      this.mapLayerGroup.mLayerGroupsWarehouse.push(layerGroup);\n    }\n  }\n\n  /**\n   * Add a Layer configuration object to OMap\n   * @param layer -\n   */\n  addOMapLayerConfiguration(layer: LayerConfiguration) {\n    if (!layer) {\n      return;\n    }\n\n    if (layer.layerGroupId) {\n      this.auxLayerGroupWarehouse.get(layer.layerGroupId).mapLayers.push(layer);\n    } else {\n      this.mapLayerGroup.mapLayers.push(layer);\n    }\n  }\n\n}\n","import { OMapWorkspace } from '../../interfaces/o-map-workspace.interface';\nimport { OMapLayerComponent } from '../map-layer/o-map-layer.component';\nimport { OMapWLayers } from './o-map-w-layers.class';\n\nexport class OMapWWorkspace extends OMapWLayers {\n  mapWorkspace: OMapWorkspace;\n\n  /**\n   * Get Workspace Layers List\n   */\n  getWorkspaceMapLayers(): Array<OMapLayerComponent> {\n    if (!this.mapWorkspace) {\n      return [];\n    }\n    return this.mapWorkspace.getMapLayers();\n  }\n\n  /**\n   * Get Workspace Layer selected on Layers List\n   */\n  getWorkspaceSelectedMapLayer(): OMapLayerComponent {\n    if (!this.mapWorkspace) {\n      return undefined;\n    }\n    return this.mapWorkspace.getSelectedMapLayer();\n  }\n}\n","import * as L from 'leaflet';\nimport { Observable } from 'rxjs';\n\nimport { MapService } from '../../services/MapService';\nimport { IMapDrawControlEvent, OMapDrawControlsEvents } from '../map-draw-controls/o-map-draw-controls-events.class';\nimport { OMapDrawControlsComponent } from '../map-draw-controls/o-map-draw-controls.component';\nimport { OMapWWorkspace } from './o-map-w-workspace.class';\n\nexport class OMapWDraw extends OMapWWorkspace {\n\n  public drawDefaultControl: boolean = false;\n  public drawControlComponent: OMapDrawControlsComponent;\n  protected defaultDrawControlEvents: OMapDrawControlsEvents;\n\n  registerDrawControlComponent(drawControlComponent: OMapDrawControlsComponent) {\n    this.drawControlComponent = drawControlComponent;\n  }\n\n  getDrawControlEventsObservable(): Observable<IMapDrawControlEvent> {\n    let controlEvents: OMapDrawControlsEvents = this.defaultDrawControlEvents;\n    if (this.drawControlComponent && this.drawControlComponent.drawControlEvents) {\n      controlEvents = this.drawControlComponent.drawControlEvents;\n    }\n    return controlEvents ? controlEvents.observable() : undefined;\n  }\n\n  protected configureDefaultDrawControl(map: L.Map): void {\n    const editableLayers = new L.FeatureGroup();\n    const mapService: MapService = this.getMapService();\n    mapService.addDrawLayer(editableLayers);\n\n    const options: L.Control.DrawConstructorOptions = {\n      position: 'topright',\n      draw: {\n        polygon: {\n          allowIntersection: false\n          // Restricts shapes to simple polygons\n        }\n      },\n      edit: {\n        featureGroup: editableLayers, // REQUIRED!!\n        remove: true\n      }\n    };\n\n    const drawControl = new L.Control.Draw(options);\n    map.addControl(drawControl);\n\n    this.defaultDrawControlEvents = new OMapDrawControlsEvents(editableLayers);\n    this.defaultDrawControlEvents.setMap(map);\n  }\n\n}\n","import { OMapWDraw } from './o-map-w-draw.class';\n\nexport class OMapWMarkerCluster extends OMapWDraw {\n}\n","import { BaseLayer } from '../../interfaces/baselayers/baselayers.interface';\nimport { OMapWMarkerCluster } from './o-map-w-markercluster.class';\n\nexport class OMapWBaseLayer extends OMapWMarkerCluster {\n  private baseLayersGroup: Array<BaseLayer> = new Array<BaseLayer>();\n\n  constructor() {\n    super();\n    /**\n     * When configuration is triggered this subscription:\n     * - creates a Leaflet layer panel\n     * - adds baseLayers to map\n     */\n    this.onMapConfigured().subscribe(() => {\n      this.getMapService().uploadBaseLayers();\n      const bLayers = this.getMapService().baseLayers.getBaseLayers();\n      if (bLayers && bLayers.length > 0) {\n        const layerId = bLayers[0].id;\n        this.getMapService().selectBaseLayer(layerId);\n      }\n    });\n  }\n\n  /**\n   * Look for changes on MapService baseLayers\n   * @return\n   */\n  get baseLayers(): Array<BaseLayer> {\n    let newBaseLayerGroup = this.getMapService().baseLayers.getBaseLayers();\n    if (this.baseLayersGroup.length !== newBaseLayerGroup.length) {\n      this.baseLayersGroup = newBaseLayerGroup.map(bL => this.buildBaseLayerUrl(bL));\n    }\n    return this.baseLayersGroup;\n  }\n\n  /**\n   * Makes all baseLayers inactive\n   */\n  unselectBaseLayers() {\n    this.mapBaseLayerGroup.forEach(bL => bL.active = false);\n  }\n\n  /**\n   * Transforms baseLayers url to the same tile\n   * @param baseLayer - The baseLayer to transform\n   * @return\n   */\n  private buildBaseLayerUrl(bL: BaseLayer): BaseLayer {\n    let url = bL.urlTemplate.replace('{s}', 'b').replace('{x}', '974').replace('{y}', '758').replace('{z}', '11');\n    if (url && url.indexOf('//') === 0) {\n      url = 'http:' + url;\n    }\n    if (url.indexOf('{variant}') > -1) {\n      url = url.replace('{variant}', bL.options['variant']);\n    }\n    return {\n      id: bL.id,\n      active: bL.active,\n      name: bL.name,\n      urlTemplate: url\n    };\n  }\n}\n","import { Observable, Subject } from 'rxjs';\n\nimport { OSearchable } from '../interfaces/search/searchable.interface';\nimport { OSearcher } from '../interfaces/search/searcher.interface';\n\nexport class SearcherDefault implements OSearcher {\n\t/**\n\t * OSearcher implementation\n\t */\n  oSearchTitle: string = '';\n  oSearcherCollection = [];\n  get oSearchableCollection(): Array<OSearchable> {\n    return this.collection();\n  }\n\n  private collection: () => Array<OSearchable>;\n\n  constructor(title?: string, collection?: () => Array<OSearchable>) {\n    if (!!title) {\n      this.oSearchTitle = title;\n    }\n    this.setSearchableCollection(collection);\n  }\n\n  /**\n   * OSearcher implementation\n   */\n  search(oSearchValue: string): Observable<Array<OSearchable>> {\n    const subject = new Subject<Array<OSearchable>>();\n    setTimeout(() => subject.next(this.oSearchableCollection.filter(sc => {\n      let r = false;\n      const l = sc.oSearchKeys.length;\n      for (let i = 0; i < l && !r; i++) {\n        const k = sc.oSearchKeys[i];\n        const t = sc[k] ? this.transformSearchTerm(sc[k]) : '';\n        r = t.indexOf(this.transformSearchTerm(oSearchValue)) > -1;\n      }\n      return r;\n    })), 1);\n    return subject.asObservable();\n  }\n\n  setSearchableCollection(collection: () => Array<OSearchable>) {\n    return this.collection = collection;\n  }\n\n  private transformSearchTerm(s: string): string {\n    let t = s.toLowerCase();\n    // Keyboard mapping\n    t = t.replace(/[ç]/g, 'c')\n      .replace(/[àáäâã]/g, 'a')\n      .replace(/[èéëê]/g, 'e')\n      .replace(/[ìíïî]/g, 'i')\n      .replace(/[òóöôõ]/g, 'o')\n      .replace(/[ùúüû]/g, 'u');\n    // Galician interference\n    t = t.replace(/\\bel\\b/g, 'o')\n      .replace(/\\bla\\b/g, 'a')\n      .replace(/(ua)/g, 'a')\n      .replace(/(ie|ei)/g, 'e')\n      .replace(/(ou|ue)/g, 'o')\n      .replace(/(ll|y|lh|ie)/g, 'i')\n      .replace(/(nh|nn|ny|ñ)/g, 'n')\n      .replace(/(ch)/g, 'c')\n      .replace(/(gh)/g, 'g')\n      .replace(/(j|g)/g, 'x')\n      .replace(/\\b(h)/g, 'f')\n      .replace(/(ito)/g, 'ino')\n      .replace(/(aa|ee|ii|oo|uu)/g, r => r[0]);\n    return t;\n  }\n}\n","import { Observable, Subject } from 'rxjs';\n\nimport { OMapWBaseLayer } from './o-map-w-baselayer.class';\nimport { OSearcher } from '../../interfaces/search/searcher.interface';\nimport { SearcherDefault } from '../../models/Searcher.class';\nimport { OSearchable } from '../../interfaces/search/searchable.interface';\n\nexport class OMapWSearch extends OMapWBaseLayer implements OSearcher {\n  /**\n   * OSearcher implementation\n   */\n  oSearchTitle: string = '';\n  oSearchableCollection = null;\n  get oSearcherCollection(): Array<OSearcher> {\n    return this.mapSearchers;\n  }\n\n  protected _searchControl: boolean = true;\n  get searchControl(): boolean {\n    return this._searchControl;\n  }\n\n  set searchControl(val: boolean) {\n    this._searchControl = val;\n  }\n\n  public mapSearchers: Array<OSearcher> = [\n    new SearcherDefault('Capas Base', () => this.mapBaseLayerGroup),\n    new SearcherDefault('Capas', () => this.mapLayers)\n  ];\n\n  /**\n   * OSearcher implementation\n   */\n  search(oSearchValue: string): Observable<Array<OSearchable>> {\n    const subject = new Subject<Array<OSearchable>>();\n    this.oSearcherCollection.forEach(s => s.search(oSearchValue).subscribe(r => {\n      if (r.length > 0) {\n        subject.next(r);\n      }\n    }));\n    return subject.asObservable();\n  }\n\n}\n","import { IGeocodingService } from './../interfaces/IGeocodingService';\nimport { InjectionToken, Injector } from '@angular/core';\n\nimport { TranslateMapService } from './TranslateMapService';\nimport { GeocodingService } from './GeocodingService';\nimport { _getInjectionTokenValue, Util } from 'ontimize-web-ngx';\nimport { HttpClient } from '@angular/common/http';\n\nexport const O_GEOCODING_SERVICE = new InjectionToken('Geocoding provider');\n\nexport function getTranslateMapServiceProvider(injector) {\n  return new TranslateMapService(injector);\n}\n\nexport function getGeocodingServiceProvider(injector: Injector, httpClient: HttpClient): IGeocodingService {\n\n  const customService: any = _getInjectionTokenValue(O_GEOCODING_SERVICE, injector);\n\n  if (Util.isDefined(customService)) {\n    return new customService(httpClient);\n  } else {\n    return new GeocodingService(httpClient);\n  }\n\n}\n\nexport const OMAP_PROVIDERS: any = [{\n  provide: TranslateMapService,\n  useFactory: getTranslateMapServiceProvider,\n  deps: [Injector]\n}];\n","import * as L from 'leaflet';\n\nimport { LayerConfiguration } from '../../models';\nimport { MapService } from '../../services';\n\nexport class OMapLayerFactory {\n\n  public createMapLayer(layerConf: LayerConfiguration, mapService: MapService): L.Layer {\n    let layer;\n    switch (layerConf.type) {\n      case 'marker':\n        layer = this.createMarker(layerConf, mapService);\n        break;\n      case 'geoJSON':\n        layer = this.createGeoJSON(layerConf, mapService);\n        break;\n      case 'WMS':\n        layer = this.createWMS(layerConf, mapService);\n        break;\n      // case 'image':\n      //   this.createImageOverlay(mapService);\n      //   break;\n      // case 'polyline':\n      //   this.createPolyline(mapService);\n      //   break;\n      // case 'polygon':\n      //   this.createPolygon(mapService);\n      //   break;\n      // case 'rectangle':\n      //   this.createRectangle(mapService);\n      //   break;\n      // case 'circle':\n      //   this.createCircle(mapService);\n      //   break;\n    }\n    return layer;\n  }\n\n  /**\n   * Creates marker and adds it to map.\n   * @param  layerConf\n   *          Layer configuration parameters.\n   * @param  mapService\n   *          Reference to map service responsible of interact with leaflet map object.\n   * @return L.Marker layer.\n   */\n  public createMarker(layerConf: LayerConfiguration, mapService: MapService): L.Marker {\n    // Get id\n    var id = null;\n    if (layerConf.layerId) {\n      id = layerConf.layerId;\n    }\n\n    let layer;\n    var success = ((id !== null) && layerConf.center);\n    if (success) {\n      layer = mapService.addMarker(id, layerConf.center.latitude, layerConf.center.longitude, layerConf.options,\n        layerConf.popup, !layerConf.visible, layerConf.showInMenu, layerConf.menuLabel);\n    }\n    return layer;\n  }\n\n  /**\n   * Creates GeoJSON layer and adds it to map.\n   * @param  layerConf\n   *          Layer configuration parameters.\n   * @param  mapService\n   *          Reference to map service responsible of interact with leaflet map object.\n   * @returns L.GeoJSON layer.\n   */\n  public createGeoJSON(layerConf: LayerConfiguration, mapService: MapService): L.GeoJSON {\n    // Get id\n    let id = null;\n    if (layerConf.layerId) {\n      id = layerConf.layerId;\n    }\n    let layer;\n    if (id !== null) {\n      if (layerConf.options === undefined) {\n        layerConf.options = {};\n      }\n\n      layer = mapService.addGeoJSON(id, void 0, layerConf.options, layerConf.popup,\n        !layerConf.visible, layerConf.showInMenu, layerConf.menuLabel, layerConf.contextmenu);\n    }\n\n    return layer;\n  }\n\n  /**\n   * Creates WMS layer and adds it to map.\n   * @param   layerConf\n   *          Layer configuration parameters.\n   * @param   mapService\n   *          Reference to map service responsible of interact with leaflet map object.\n   * @returns  layer\n   */\n  public createWMS(layerConf: LayerConfiguration, mapService: MapService): L.TileLayer.WMS {\n    var id = null;\n    if (layerConf.layerId) {\n      id = layerConf.layerId;\n    }\n\n    let opt = {\n      format: 'image/png',\n      transparent: true\n    };\n    if (layerConf.options === undefined) {\n      layerConf.options = {};\n    }\n    layerConf.options = Object.assign(layerConf.options, opt);\n\n    let layer;\n    var success = (id !== null);\n    if (success) {\n      layer = mapService.addTileLayerWMS(id, layerConf.baseUrl, layerConf.options,\n        !layerConf.visible, layerConf.showInMenu, layerConf.menuLabel);\n    }\n\n    return layer;\n  }\n\n}\n","import { Layer } from 'leaflet';\n\nimport { OMapLayerOptions } from '../types/layer-options.type';\nimport { Center } from './Center.class';\n\nexport class LayerConfiguration {\n  public layerId: string;\n  public layerGroupId: string;\n  public type: string;\n  public center: Center;\n  public points: any[];\n  public radius: number;\n  public bounds: any;\n  public popup: string;\n  public popupUrl: string;\n  public menuLabel: string;\n  public menuLabelSecondary: string;\n  public service: string;\n  public baseUrl: string;\n  public options: OMapLayerOptions;\n  public showInMenu: string;\n  // Status of the label\n  public selected: boolean = false;\n  public visible: boolean = false;\n  public inWS: boolean = false;\n  public contextmenu: LayerConfigurationContextmenu;\n}\n\nexport type LayerConfigurationFunction = (e: Layer) => LayerConfigurationContextmenuItem[];\n\nexport class LayerConfigurationContextmenu {\n  contextmenuWidth?: number;\n  contextmenuItems?: LayerConfigurationContextmenuItem[];\n  contextmenuCallback?: Function;\n  defaultContextmenuItems?: boolean = true;\n  callback?: LayerConfigurationFunction;\n}\n\nexport class LayerConfigurationContextmenuItem {\n  label: string;\n  attr?: string;\n  index?: number;\n  defaultContextmenuItems?: boolean = true;\n  callback?: Function;\n  icon?: string;\n  separator?: boolean;\n}\n","import { Component, OnInit } from '@angular/core';\nimport { BooleanInputConverter } from 'ontimize-web-ngx';\n\nimport { Util } from '../../utils/index';\n\n@Component({\n  selector: 'o-toggle-icon-button',\n  inputs: [\n    'buttonActive: button-active',\n    'iconDark: icon-dark',\n    'iconName: icon-name',\n    'bgColor: bg-color',\n    'clickable',\n    'noInk: no-ink'\n  ],\n  templateUrl: './o-toggle-icon-button.component.html',\n  styleUrls: ['./o-toggle-icon-button.component.scss']\n})\nexport class OToggleIconButtonComponent implements OnInit {\n  @BooleanInputConverter()\n  public buttonActive: boolean = false;\n  protected _iconDark: boolean;\n  protected _iconName: string;\n  protected bgColor: string;\n  @BooleanInputConverter()\n  public clickable: boolean;\n  @BooleanInputConverter()\n  public noInk: boolean = false;\n\n  ngOnInit() {\n    this.clickable = Util.parseBoolean(this.clickable ? this.clickable.toString() : 'yes', true);\n    this.noInk = Util.parseBoolean(this.noInk ? this.noInk.toString() : 'no', false);\n    this.noInk = !this.clickable ? true : this.noInk;\n    if (this.iconDark === undefined || this.iconDark === null) {\n      if (!!this.bgColor) {\n        const rgb = this.bgColor.replace(/rgb.*\\(/g, '').replace(/[\\)\\s]/g, '').split(',');\n        if (rgb.length >= 3) {\n          this.iconDark = rgb.map(d => parseInt(d, 10) / 255).reduce((n, o) => n + o) / 3 > 0.5;\n        }\n      } else {\n        this.iconDark = false;\n      }\n    } else {\n      this.iconDark = Util.parseBoolean(this.iconDark.toString(), false);\n    }\n  }\n\n  toggle() {\n    if (this.clickable) {\n      return this.buttonActive = !this.buttonActive;\n    }\n    return false;\n  }\n\n  get iconDark(): boolean {\n    return this._iconDark;\n  }\n\n  set iconDark(val: boolean) {\n    this._iconDark = val;\n  }\n\n  get iconName(): string {\n    return this._iconName;\n  }\n\n  set iconName(val: string) {\n    this._iconName = val;\n  }\n}\n","<button mat-button *ngIf=\"iconName !== undefined\" [class.active]=\"buttonActive\" [class.dark]=\"iconDark\"\n\t[class.mat-no-ink]=\"noInk\" (click)=\"toggle()\">\n\t<mat-icon>{{ iconName }}</mat-icon>\n</button>","import { HttpClient } from '@angular/common/http';\nimport {\n  AfterViewInit,\n  Component,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Injector,\n  OnDestroy,\n  OnInit,\n  ViewEncapsulation,\n} from '@angular/core';\nimport * as L from 'leaflet';\nimport { BooleanInputConverter } from 'ontimize-web-ngx';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { OMapLayerFactory } from './o-map-layer.factory';\nimport { LayerConfigurationContextmenu, LayerConfiguration } from '../../models/LayerConfiguration.class';\nimport { OMapLayerOptions } from '../../types/layer-options.type';\nimport { ICRSConfiguration, ICRSConfigurationParameter } from '../map-crs/o-map-crs-configuration.class';\nimport { MapService } from '../../services/MapService';\nimport { OSearchable, OSearchResult } from '../../interfaces/search/searchable.interface';\nimport { TranslateMapService } from '../../services/TranslateMapService';\nimport { Util } from '../../utils/util';\nimport { Center } from '../../models/Center.class';\nimport { ILayerService } from '../../interfaces/ILayerService';\nimport { OMapBase } from '../map/o-map-base.class';\n\n@Component({\n  selector: 'o-map-layer',\n  providers: [MapService],\n  inputs: [\n    'sCenter : layer-center',\n    'sPoints : layer-points',\n    'sRadius : layer-radius',\n    'sBounds : layer-bounds',\n    'sService : layer-service',\n    'baseUrl  : layer-base-url',\n    'selected : layer-selected',\n    'visible : layer-visible',\n    'inWS : layer-in-ws',\n    'inMenu : layer-in-menu',\n    'layerId : layer-id',\n    'layerGroupId : layer-group-id',\n    'type : layer-type',\n    'popup : layer-popup',\n    'popupUrl : layer-popup-url',\n    'menuLabel : layer-menu-label',\n    'menuLabelSecondary : layer-menu-label-secondary',\n    'icon : layer-icon',\n    'options : layer-options',\n    'crs',\n    'crsConfiguration : crs-configuration',\n    'contextMenu : layer-contextmenu',\n    'queryFeaturesInBounds: query-features-in-bounds'\n  ],\n  templateUrl: './o-map-layer.component.html',\n  styleUrls: ['./o-map-layer.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-map-layer]': 'true'\n  }\n})\nexport class OMapLayerComponent implements OnInit, AfterViewInit, OSearchable, OnDestroy {\n  sCenter: string;\n  sPoints: string;\n  sRadius: string;\n  sBounds: string;\n  sService: string;\n\n  // Status of the label\n  @BooleanInputConverter()\n  public selected: boolean = false;\n  @BooleanInputConverter()\n  public visible: boolean = true;\n  @BooleanInputConverter()\n  public inWS: boolean = true;\n  public inMenu: string;\n\n  protected _layerId: string;\n  public layerGroupId: string;\n  public type: string;\n  public center: Center;\n  public points: any[];\n  public radius: number;\n  public bounds: any;\n  public popup: string;\n  public popupUrl: string;\n  protected _menuLabel: string;\n  protected _menuLabelSecondary: string;\n  public service: ILayerService;\n  public baseUrl: string;\n  protected _icon: string;\n  public options: OMapLayerOptions = {};\n  protected _contextmenu;\n  @BooleanInputConverter()\n  public queryFeaturesInBounds: boolean;\n\n  protected crs: string;\n  protected crsConfiguration: ICRSConfiguration;\n  protected translateMapService: TranslateMapService;\n\n  public oSearchKeys: Array<string> = ['menuLabel', 'menuLabelSecondary'];\n\n  layer: L.Layer;\n  protected layerConf: LayerConfiguration;\n\n  private rendered: boolean = null;\n  private _clickEvtEmitter: EventEmitter<any> = new EventEmitter();\n  private _dblClickEvtEmitter: EventEmitter<any> = new EventEmitter();\n  private _mouseDownEvtEmitter: EventEmitter<any> = new EventEmitter();\n  private _mouseUpEvtEmitter: EventEmitter<any> = new EventEmitter();\n  private _mouseOverEvtEmitter: EventEmitter<any> = new EventEmitter();\n  private _mouseOutEvtEmitter: EventEmitter<any> = new EventEmitter();\n  private _mouseMoveEvtEmitter: EventEmitter<any> = new EventEmitter();\n  private _dragStartEvtEmitter: EventEmitter<any> = new EventEmitter();\n  private _dragEvtEmitter: EventEmitter<any> = new EventEmitter();\n  private _dragEndEvtEmitter: EventEmitter<any> = new EventEmitter();\n  private _resizeEvtEmitter: EventEmitter<any> = new EventEmitter();\n  private _popupOpenEvtEmitter: EventEmitter<any> = new EventEmitter();\n  private _popupCloseEvtEmitter: EventEmitter<any> = new EventEmitter();\n  private _contextmenuEvtEmitter: EventEmitter<any> = new EventEmitter();\n  protected oMapConfigurationSubscription: Subscription;\n\n  protected layerAfterViewInitStream: EventEmitter<Object> = new EventEmitter<Object>();\n  protected layerMapConfigured: EventEmitter<Object> = new EventEmitter<Object>();\n  protected layerStream: Observable<any>;\n  protected layerStreamSubscription: Subscription;\n\n  constructor(\n    @Inject(forwardRef(() => OMapBase)) protected oMap: OMapBase,\n    protected injector: Injector\n  ) {\n    this.translateMapService = this.injector.get(TranslateMapService);\n    this.layerStream = combineLatest([\n      this.layerAfterViewInitStream.asObservable(),\n      this.layerMapConfigured.asObservable()\n    ]);\n\n    this.layerStreamSubscription = this.layerStream.subscribe(() => {\n      if (oMap) {\n        this.oMap.addOMapLayer(this);\n        this.updateStatus();\n      }\n    });\n\n    this.oMapConfigurationSubscription = this.oMap.onMapReady().subscribe((map) => {\n      if (map) {\n        this.layerMapConfigured.emit(true);\n      }\n    });\n  }\n\n  ngOnInit() {\n    this.inMenu = this.inMenu ? this.inMenu : 'overlay';\n    if (Util.isBlank(this.queryFeaturesInBounds)) {\n      this.queryFeaturesInBounds = this.oMap.queryFeaturesInBounds;\n    }\n  }\n\n  ngAfterViewInit() {\n    this.layerAfterViewInitStream.emit(true);\n  }\n\n  ngOnDestroy() {\n    if (this.oMapConfigurationSubscription) {\n      this.oMapConfigurationSubscription.unsubscribe();\n    }\n    if (this.layerStreamSubscription) {\n      this.layerStreamSubscription.unsubscribe();\n    }\n  }\n\n  getCRSConfigurationParam(): ICRSConfigurationParameter {\n    return {\n      crsConfiguration: this.crsConfiguration,\n      crs: this.crs\n    };\n  }\n\n  get oSearchResult(): OSearchResult {\n    return {\n      label: this.menuLabel,\n      sublabel: this.menuLabelSecondary,\n      icon: this.icon || 'layers',\n      buttons: [{\n        icon: ['check_box', 'check_box_outline_blank'],\n        status: () => this.inWS,\n        callback: () => this.toggleInWS()\n      }, {\n        icon: ['visibility', 'visibility_off'],\n        status: () => this.visible,\n        callback: () => this.toggleVisible()\n      }]\n    };\n  }\n\n  getMapService(): MapService {\n    return this.oMap.getMapService();\n  }\n\n  getMapLayerFactory(): any {\n    return new OMapLayerFactory();\n  }\n\n  getLayerConfiguration(): LayerConfiguration {\n    if (this.layerConf === undefined) {\n      this.layerConf = this.createLayerConfiguration();\n    }\n    return this.layerConf;\n  }\n\n  createLayerConfiguration(): LayerConfiguration {\n    const layerConf = new LayerConfiguration();\n    layerConf.layerId = this.layerId;\n    layerConf.type = this.type;\n    layerConf.center = this.center;\n    layerConf.popup = this.popup;\n    layerConf.selected = this.selected;\n    layerConf.visible = this.visible;\n    layerConf.inWS = this.inWS;\n    layerConf.menuLabel = this.menuLabel;\n    layerConf.menuLabelSecondary = this.menuLabelSecondary;\n    layerConf.service = this.sService;\n    layerConf.baseUrl = this.baseUrl;\n    layerConf.showInMenu = this.inMenu;\n    layerConf.options = this.options;\n    layerConf.contextmenu = this.contextMenu;\n    return layerConf;\n  }\n\n  initializeMapLayer() {\n    const self = this;\n    if (!this.center && this.sCenter) {\n      const coordinates = this.sCenter.split(/,|;/);\n      if (coordinates.length === 2) {\n        let aux: number[] = [];\n        for (const i in coordinates) {\n          aux[i] = parseFloat(coordinates[i]);\n        }\n        this.center = new Center(aux[0], aux[1]);\n      }\n    }\n\n    if (!this.service && this.sService && this.sService.length > 0) {\n      this.service = this.oMap.getInjector().get(this.sService);\n    }\n    this.layerConf = this.createLayerConfiguration();\n\n    if (this.popupUrl && this.popupUrl.length > 0) {\n      this.loadPopupTpl().subscribe(data => {\n        self.popup = data;\n        self.layerConf.popup = data;\n        self.createMapLayer(self.layerConf);\n      }, () => {\n        console.log('Could not load popup template.');\n        self.popup = '';\n        self.layerConf.popup = '';\n        self.createMapLayer(self.layerConf);\n      });\n    } else {\n      self.createMapLayer(self.layerConf);\n    }\n  }\n\n  createMapLayer(layerConf: LayerConfiguration) {\n    const mapService = this.getMapService();\n    this.layer = this.getMapLayerFactory().createMapLayer(layerConf, mapService);\n    if (Util.isLayerService(this.service) && Util.isGeoJSONLayer(this.layer)) {\n      const self = this;\n      (<ILayerService>this.service).load([layerConf]).subscribe(resp => {\n        (<L.GeoJSON>self.layer).addData(resp);\n      }, err => {\n        console.log(err);\n      });\n    }\n    this.bindLayerEvents();\n  }\n\n  public setSelected(status: boolean) {\n    return this.toggleSelected(status);\n  }\n\n  public toggleSelected(status?: boolean) {\n    this.selected = !Util.isBlank(status) ? status : !this.selected;\n    this.updateStatus();\n    return this.selected;\n  }\n\n  public setInWS(status: boolean) {\n    return this.toggleInWS(status);\n  }\n\n  public toggleInWS(status?: boolean) {\n    this.inWS = !Util.isBlank(status) ? status : !this.inWS;\n    this.updateStatus();\n    return this.inWS;\n  }\n\n  public setVisible(status: boolean) {\n    return this.toggleVisible(status);\n  }\n\n  public toggleVisible(status?: boolean) {\n    this.visible = !Util.isBlank(status) ? status : !this.visible;\n    this.updateStatus();\n    return this.visible;\n  }\n\n  public setZIndex(i: number) {\n    if (Util.isTileLayer(this.layer)) {\n      this.layer.setZIndex(i);\n    }\n  }\n\n  public updateStatus() {\n    const mapService = this.getMapService();\n\n    const notCreated = !!this.visible && !!this.inWS && this.rendered === null;\n    const createdNotRendered = !!this.visible && !!this.inWS && !this.rendered;\n    const renderedNotVisible = !this.visible && !!this.rendered;\n\n    if (notCreated) {\n      this.initializeMapLayer();\n      this.rendered = true;\n    } else if (createdNotRendered) {\n      mapService.addLayer(this.layerId, this.layer, !this.visible, this.inMenu, this.menuLabel);\n      this.rendered = true;\n    } else if (renderedNotVisible) {\n      mapService.removeLayer(this.layerId);\n      this.rendered = false;\n    }\n    this.oMap.mapWorkspace.updateMapLayers();\n  }\n\n  /**\n   * @see('http://leafletjs.com/reference.html#map-events')\n   * @returns void\n   */\n  bindLayerEvents(): void {\n    const self = this;\n    if (Util.isTileLayer(this.layer)) {\n      this.layer.on('click', (evt) => {\n        self._clickEvtEmitter.emit(evt);\n      });\n      this.layer.on('dblclick', (evt) => {\n        self._dblClickEvtEmitter.emit(evt);\n      });\n      this.layer.on('mousedown', (evt) => {\n        self._mouseDownEvtEmitter.emit(evt);\n      });\n      this.layer.on('mouseup', (evt) => {\n        self._mouseUpEvtEmitter.emit(evt);\n      });\n      this.layer.on('mouseover', (evt) => {\n        self._mouseOverEvtEmitter.emit(evt);\n      });\n      this.layer.on('mouseout', (evt) => {\n        self._mouseOutEvtEmitter.emit(evt);\n      });\n      this.layer.on('mousemove', (evt) => {\n        self._mouseMoveEvtEmitter.emit(evt);\n      });\n      this.layer.on('dragstart', (evt) => {\n        self._dragStartEvtEmitter.emit(evt);\n      });\n      this.layer.on('drag', (evt) => {\n        self._dragEvtEmitter.emit(evt);\n      });\n      this.layer.on('dragend', (evt) => {\n        self._dragEndEvtEmitter.emit(evt);\n      });\n      this.layer.on('resize', (evt) => {\n        self._resizeEvtEmitter.emit(evt);\n      });\n      this.layer.on('popupopen', (evt) => {\n        self._popupOpenEvtEmitter.emit(evt);\n      });\n      this.layer.on('popupclose', (evt) => {\n        self._popupCloseEvtEmitter.emit(evt);\n      });\n      this.layer.on('contextmenu', (evt) => {\n        self._contextmenuEvtEmitter.emit(evt);\n      });\n      if (this.queryFeaturesInBounds) {\n        this.oMap.getMapService().map.on('moveend', () => {\n          if (self.visible && Util.isLayerService(self.service) && Util.isGeoJSONLayer(self.layer)) {\n            (<ILayerService>self.service).load([self.layerConf]).subscribe((resp) => {\n              (<L.GeoJSON>self.layer).clearLayers();\n              (<L.GeoJSON>self.layer).addData(resp);\n            }, (err) => {\n              console.log(err);\n            });\n          }\n        });\n      }\n    }\n  }\n\n  onClickEvent(onNext: (value: any) => void): Subscription {\n    return this._clickEvtEmitter.subscribe(onNext);\n  }\n\n  onDoubleClickEvent(onNext: (value: any) => void): Subscription {\n    return this._dblClickEvtEmitter.subscribe(onNext);\n  }\n\n  onMouseDownEvent(onNext: (value: any) => void): Subscription {\n    return this._mouseDownEvtEmitter.subscribe(onNext);\n  }\n\n  onMouseUpEvent(onNext: (value: any) => void): Subscription {\n    return this._mouseUpEvtEmitter.subscribe(onNext);\n  }\n\n  onMouseOverEvent(onNext: (value: any) => void): Subscription {\n    return this._mouseOverEvtEmitter.subscribe(onNext);\n  }\n\n  onMouseOutEvent(onNext: (value: any) => void): Subscription {\n    return this._mouseOutEvtEmitter.subscribe(onNext);\n  }\n\n  onMouseMoveEvent(onNext: (value: any) => void): Subscription {\n    return this._mouseMoveEvtEmitter.subscribe(onNext);\n  }\n\n  onDragStartEvent(onNext: (value: any) => void): Subscription {\n    return this._dragStartEvtEmitter.subscribe(onNext);\n  }\n\n  onDragEvent(onNext: (value: any) => void): Subscription {\n    return this._dragEvtEmitter.subscribe(onNext);\n  }\n\n  onDragEndEvent(onNext: (value: any) => void): Subscription {\n    return this._dragEndEvtEmitter.subscribe(onNext);\n  }\n\n  onResizeEvent(onNext: (value: any) => void): Subscription {\n    return this._resizeEvtEmitter.subscribe(onNext);\n  }\n\n  onPopupCloseEvent(onNext: (value: any) => void): Subscription {\n    return this._popupCloseEvtEmitter.subscribe(onNext);\n  }\n\n  onPopupOpenEvent(onNext: (value: any) => void): Subscription {\n    return this._popupOpenEvtEmitter.subscribe(onNext);\n  }\n\n  public loadPopupTpl(): Observable<any> {\n    const headers: Headers = new Headers();\n    headers.append('Access-Control-Allow-Origin', '*');\n    const httpClient = this.injector.get(HttpClient);\n    return httpClient.get(this.popupUrl)\n      .pipe(map((response: any) => response.text()));\n  }\n\n  get layerId(): string {\n    return this._layerId;\n  }\n\n  set layerId(val: string) {\n    this._layerId = val;\n  }\n\n  get icon(): string {\n    return (this._icon && this._icon.length) ? this._icon : 'layers';\n  }\n\n  set icon(val: string) {\n    this._icon = val;\n  }\n\n  get menuLabelSecondary(): string {\n    return this._menuLabelSecondary;\n  }\n\n  set menuLabelSecondary(val: string) {\n    this._menuLabelSecondary = val;\n  }\n\n  get menuLabel(): string {\n    return this._menuLabel;\n  }\n\n  set menuLabel(val: string) {\n    this._menuLabel = val;\n  }\n\n  set contextMenu(val: LayerConfigurationContextmenu) {\n    if (!val) {\n      return;\n    }\n    this._contextmenu = val;\n    if (val.defaultContextmenuItems) {\n      this._contextmenu.contextmenuItems =\n        this._contextmenu.contextmenuItems.concat(this.getMapService().defaultContextMenu.contextmenuItems);\n    }\n    if (!this._contextmenu.contextmenuItems) {\n      return;\n    }\n    this._contextmenu.contextmenuItems = this.getMapService().parseContextmenuItems(this._contextmenu.contextmenuItems);\n  }\n\n  get contextMenu(): LayerConfigurationContextmenu {\n    return this._contextmenu;\n  }\n\n}\n","<button mat-button mat-ink #layer class=\"o-map-layer-item\" (click)=\"toggleInWS()\">\n\t<!--<img class=\"layer-icon\" *ngIf=\"icon && icon.length>0\" [src]=\"icon\">-->\n\t<o-toggle-icon-button icon-dark=\"true\" [icon-name]=\"icon\" [button-active]=\"inWS\">\n\t</o-toggle-icon-button>\n\t<div fxFlex fxLayout=\"column\" fxLayoutAlign=\"center start\">\n\t\t{{menuLabel || layerId}}\n\t\t<small *ngIf=\"menuLabelSecondary !== undefined\">{{menuLabelSecondary}}</small>\n\t</div>\n</button>","import { Component, forwardRef, Inject, OnInit, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { BooleanInputConverter } from 'ontimize-web-ngx';\n\nimport { OMapLayerGroup } from '../../interfaces/o-map-layer-group.interface';\nimport { LayerConfiguration } from '../../models/LayerConfiguration.class';\nimport { LayerGroupConfiguration } from '../../models/LayerGroupConfiguration.class';\nimport { OMapLayerGroupsWarehouse } from '../../models/LayerGroupsWarehouse.class';\nimport { OMapLayerComponent } from '../map-layer/o-map-layer.component';\nimport { OMapBase } from '../map/o-map-base.class';\n\n\n@Component({\n  selector: 'o-map-layer-group',\n  providers: [],\n  inputs: [\n    'id: group-id',\n    'idParent: group-id-parent',\n    'name: group-name',\n    'description: group-description',\n    'collapsed: group-collapsed',\n    'refGroup: group-ref'\n  ],\n  templateUrl: './o-map-layer-group.component.html',\n  styleUrls: ['./o-map-layer-group.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-map-layer-group]': 'true'\n  }\n})\nexport class OMapLayerGroupComponent implements OMapLayerGroup, OnInit {\n\n  id: string;\n  idParent: string;\n  name: string;\n  protected _description: string;\n  @BooleanInputConverter()\n  collapsed: boolean = false;\n  refGroup: LayerGroupConfiguration;\n\n  public mapLayers: LayerConfiguration[] = [];\n  public mLayerGroupsWarehouse: OMapLayerGroupsWarehouse = new OMapLayerGroupsWarehouse();\n\n  @ViewChildren(forwardRef(() => OMapLayerComponent)) layerChildren: OMapLayerComponent[];\n  @ViewChildren(forwardRef(() => OMapLayerGroupComponent)) layerGroupChildren: OMapLayerGroupComponent[];\n\n  constructor(\n    @Inject(forwardRef(() => OMapBase)) protected oMap: OMapBase\n  ) { }\n\n  ngOnInit() {\n    if (!!this.refGroup) {\n      this.mapLayers = this.refGroup.mapLayers;\n      this.mLayerGroupsWarehouse = this.refGroup.layerGroupsWarehouse;\n    }\n  }\n\n  public hasChildInWS(): boolean {\n    let childLayerGroupInWS: boolean = false;\n    if (this.layerGroupChildren) {\n      this.layerGroupChildren.forEach(lg => {\n        if (lg.hasChildInWS()) {\n          childLayerGroupInWS = true;\n        }\n      });\n    }\n    let childLayerInWS: boolean = false;\n    if (this.layerChildren) {\n      this.layerChildren.forEach(l => {\n        if (l.inWS) {\n          childLayerInWS = true;\n        }\n      });\n    }\n    return childLayerGroupInWS || childLayerInWS;\n  }\n\n  public getMapLayers() {\n    return this.mapLayers;\n  }\n\n  public getLayerGroups() {\n    if (this.mLayerGroupsWarehouse.all &&\n      this.mLayerGroupsWarehouse.all.length > 0) {\n      return this.mLayerGroupsWarehouse.all;\n    }\n    return [];\n  }\n\n  public getLayerCenter(layerConf: LayerConfiguration): string {\n    let center;\n    if (layerConf && layerConf.center) {\n      center = layerConf.center.latitude + ';' + layerConf.center.longitude;\n    }\n    return center;\n  }\n\n  public toggleCollapse() {\n    this.collapsed = !this.collapsed;\n  }\n\n  get description(): string {\n    return this._description;\n  }\n\n  set description(val: string) {\n    this._description = val;\n  }\n\n}\n","<button mat-button mat-ink fxFlex fxFlexFill [class.collapsed]= \"collapsed\"\n\t*ngIf=\"description !== undefined && description.length > 0\"\n\tfxLayout=\"row\" fxLayoutAlign=\"space-around center\"\n\t(click)=\"toggleCollapse()\">\n\t<!--<img class=\"layer-icon\" *ngIf=\"icon && icon.length>0\"[src]= \"icon\">-->\n\t<o-toggle-icon-button\n\t\tclickable=\"no\"\n\t\ticon-dark=\"true\"\n\t\ticon-name=\"folder\"\n\t\t[button-active]= \"hasChildInWS()\">\n\t</o-toggle-icon-button>\n\t<span fxFlex fxLayout=\"row\" fxLayoutAlign=\"start center\">{{ description }}</span>\n\t<o-toggle-icon-button\n\t\tclickable=\"no\" icon-dark=\"true\"\ticon-name=\"keyboard_arrow_down\">\n\t</o-toggle-icon-button>\n</button>\n<div class=\"group-list\" [class.collapsed]= \"collapsed\" [class.expanded]= \"!collapsed\"\n\tfxFlex fxLayout=\"column\" fxLayoutAlign=\"space-between stretch\">\n\t<!-- ng-if=\"mapLayerGroups.all && mapLayerGroups.all.length > 0 \" fxFlex-->\n\t<o-map-layer-group\n\t\t*ngFor=\"let layerGroup of getLayerGroups()\"\n\t\t[group-id]          = \"layerGroup.id\"\n\t\t[group-id-parent]   = \"layerGroup.idParent\"\n\t\t[group-name]        = \"layerGroup.name\"\n\t\t[group-description] = \"layerGroup.description\"\n    [group-collapsed]   = \"layerGroup.collapsed\"\n\t\t[group-ref]         = \"layerGroup\">\n  </o-map-layer-group>\n  <!-- ng-if=\"mapLayers && mapLayers.length > 0\" -->\n\t<o-map-layer fxFlex\n    *ngFor=\"let layerConf of getMapLayers()\"\n\t\t[layer-radius]                = \"layerConf.radius\"\n\t\t[layer-service]               = \"layerConf.service\"\n\t\t[layer-base-url]              = \"layerConf.baseUrl\"\n\t\t[layer-selected]              = \"layerConf.selected\"\n\t\t[layer-visible]               = \"layerConf.visible\"\n\t\t[layer-in-ws]                 = \"layerConf.inWS\"\n\t\t[layer-id]                    = \"layerConf.layerId\"\n\t\t[layer-group-id]              = \"layerConf.layerGroupId\"\n\t\t[layer-type]                  = \"layerConf.type\"\n\t\t[layer-popup]                 = \"layerConf.popup\"\n\t\t[layer-popup-url]             = \"layerConf.popupUrl\"\n\t\t[layer-menu-label]            = \"layerConf.menuLabel\"\n\t\t[layer-menu-label-secondary]  = \"layerConf.menuLabelSecondary\"\n\t\t[layer-icon]                  = \"layerConf.icon\"\n\t\t[layer-show-in-menu]          = \"layerConf.showInMenu\"\n\t\t[layer-center]                = \"getLayerCenter(layerConf)\"\n\t\t[layer-options]               = \"layerConf.options\">\n\t</o-map-layer>\n</div>\n<!--\n\tTODO\n\t\t[layer-points]\t\t\t\t\t= \"layer.points\"\n\t\t[layer-bounds]\t\t\t\t\t= \"layer.bounds\"\n\t\t[layer-options]\t\t\t\t\t= \"layer.options\"\n-->\n","import type { OMapLayerComponent } from \"../map-layer/o-map-layer.component\";\n\nexport abstract class OMapWorkspaceBase {\n  abstract oSearchableCollection: Array<OMapLayerComponent>;\n}","import { Component, EventEmitter, forwardRef, Inject, ViewEncapsulation } from '@angular/core';\nimport { BooleanInputConverter } from 'ontimize-web-ngx';\n\nimport { OSearchable, OSearchResult } from '../../interfaces/search/searchable.interface';\nimport { OMapLayerComponent } from '../map-layer/o-map-layer.component';\nimport { OMapWorkspaceBase } from '../map-workspace/o-map-workspace-base.class';\n\n@Component({\n  selector: 'o-map-workspace-layer',\n  providers: [],\n  inputs: [\n    'selected : layer-selected',\n    'visible : layer-visible',\n    'inWS : layer-in-ws',\n    'menuLabel : layer-menu-label',\n    'menuLabelSecondary : layer-menu-label-secondary',\n    'refLayer : layer-ref',\n    'layerIndex : layer-index'\n  ],\n  outputs: [\n    'onToggleSelected',\n    'onToggleVisibility',\n    'onToggleInWS'\n  ],\n  templateUrl: './o-map-workspace-layer.component.html',\n  styleUrls: ['./o-map-workspace-layer.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-map-workspace-layer]': 'true'\n  }\n})\nexport class OMapWorkspaceLayerComponent implements OSearchable {\n  @BooleanInputConverter()\n  public selected: boolean = false;\n  @BooleanInputConverter()\n  public visible: boolean = true;\n  @BooleanInputConverter()\n  public inWS: boolean = true;\n\n  protected _menuLabel: string;\n  protected _menuLabelSecondary: string;\n  refLayer: OMapLayerComponent;\n  layerIndex: any;\n  dragging: boolean = false;\n\n  public oSearchKeys: Array<string> = ['menuLabel', 'menuLabelSecondary'];\n  onToggleSelected: EventEmitter<Object> = new EventEmitter<Object>();\n  onToggleVisibility: EventEmitter<Object> = new EventEmitter<Object>();\n  onToggleInWS: EventEmitter<Object> = new EventEmitter<Object>();\n\n  constructor(\n    @Inject(forwardRef(() => OMapWorkspaceBase)) private refWorkspace: OMapWorkspaceBase\n  ) { }\n\n  get oSearchResult(): OSearchResult {\n    return {\n      label: this.menuLabel,\n      sublabel: this.menuLabelSecondary,\n      icon: 'layer',\n      buttons: []\n    };\n  }\n\n  public toggleSelected(status?: boolean) {\n    const select = (status !== undefined && !!status) || (!!this.visible && !!this.inWS);\n    const unselect = (status !== undefined && !status) || !this.selected;\n    if (select) {\n      this.refWorkspace.oSearchableCollection.forEach(l => l.setSelected(false));\n      this.selected = this.refLayer.toggleSelected();\n    } else if (unselect) {\n      this.selected = this.refLayer.setSelected(false);\n    }\n    this.onToggleSelected.emit(this);\n  }\n\n  public toggleVisible(status?: boolean, evt?: Event, avoidEvent?: boolean) {\n    if (evt) {\n      evt.stopPropagation();\n    }\n    this.visible = this.refLayer.toggleVisible(status);\n    if (!this.visible && !!this.selected) {\n      this.toggleSelected(false);\n    }\n    if (!avoidEvent) {\n      this.onToggleVisibility.emit(this);\n    }\n  }\n\n  public toggleInWS(status?: boolean) {\n    this.inWS = this.refLayer.toggleInWS(status);\n    if (!this.inWS && !!this.visible) {\n      this.toggleVisible(false, undefined, true);\n    }\n    this.onToggleInWS.emit(this);\n  }\n\n  // onDragStart() {\n  //   this.dragging = true;\n  // }\n\n  // onDragEnd() {\n  //   this.dragging = false;\n  //   this.refWorkspace.updateMapLayersPosition();\n  // }\n\n  get menuLabel(): string {\n    return this._menuLabel;\n  }\n\n  set menuLabel(val: string) {\n    this._menuLabel = val;\n  }\n\n  get menuLabelSecondary(): string {\n    return this._menuLabelSecondary;\n  }\n\n  set menuLabelSecondary(val: string) {\n    this._menuLabelSecondary = val;\n  }\n}\n","<div class=\"mat-content\" fxLayout=\"row\" fxLayoutAlign=\"start stretch\" [class.selected]=\"selected\" (click)=\"toggleSelected()\">\n\n  <o-toggle-icon-button clickable=\"no\" icon-dark=\"true\" icon-name=\"drag_handle\" class=\"drag-handle\">\n  </o-toggle-icon-button>\n  <!--<img class=\"layer-icon\" *ngIf=\"icon && icon.length>0\" [src]=\"icon\">-->\n  <div fxFlex>{{ menuLabel }}\n    <small *ngIf=\"menuLabelSecondary\">\n      <br>{{ menuLabelSecondary }}</small>\n  </div>\n  <o-toggle-icon-button icon-dark=\"true\" [icon-name]=\"visible ? 'visibility' : 'visibility_off'\" [button-active]=\"visible\"\n    (click)=\"toggleVisible(undefined, $event)\">\n  </o-toggle-icon-button>\n  <o-toggle-icon-button icon-dark=\"true\" icon-name=\"delete\" [button-active]=\"inWS\" (click)=\"toggleInWS()\">\n  </o-toggle-icon-button>\n</div>","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { Component, EventEmitter, forwardRef, Inject, ViewEncapsulation } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { OMapWorkspace } from '../../interfaces/o-map-workspace.interface';\nimport { OSearchable } from '../../interfaces/search/searchable.interface';\nimport { OSearcher } from '../../interfaces/search/searcher.interface';\nimport { OMapLayerComponent } from '../map-layer/o-map-layer.component';\nimport { OMapBase } from '../map/o-map-base.class';\nimport { OMapWorkspaceBase } from './o-map-workspace-base.class';\n\n@Component({\n  selector: 'o-map-workspace',\n  inputs: [],\n  outputs: [\n    'onToggleWSLayerSelected',\n    'onToggleWSLayerVisibility',\n    'onToggleWSLayerInWS'\n  ],\n  templateUrl: './o-map-workspace.component.html',\n  styleUrls: ['./o-map-workspace.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-map-workspace]': 'true'\n  },\n  providers: [\n    { provide: OMapWorkspaceBase, useExisting: forwardRef(() => OMapWorkspaceComponent) }\n  ]\n})\nexport class OMapWorkspaceComponent implements OSearcher, OMapWorkspace {\n\n  protected wsMapLayers: Array<OMapLayerComponent> = new Array<OMapLayerComponent>();\n\n  /**\n   * OSearcher implementation\n   */\n  oSearchTitle: string = 'Capas del Espacio de Trabajo';\n  get oSearchableCollection(): Array<OMapLayerComponent> {\n    return this.wsMapLayers;\n  }\n  oSearcherCollection = null;\n\n  onToggleWSLayerSelected: EventEmitter<Object> = new EventEmitter<Object>();\n  onToggleWSLayerVisibility: EventEmitter<Object> = new EventEmitter<Object>();\n  onToggleWSLayerInWS: EventEmitter<Object> = new EventEmitter<Object>();\n\n  constructor(\n    @Inject(forwardRef(() => OMapBase)) private map: OMapBase\n  ) {\n  }\n\n  private parentHasDragHandle(element: any): boolean {\n    let result = false;\n    let parent = element.parentNode;\n    let i = 0;\n    while (i <= 2) {\n      i++;\n      result = parent && parent.classList.contains('drag-handle');\n      if (result) {\n        break;\n      }\n      parent = parent.parentNode;\n    }\n    return result;\n  }\n\n  /**\n   * OSearcher implementation\n   */\n  search(_oSearchValue: string): Observable<Array<OSearchable>> {\n    const subject = new Subject<Array<OSearchable>>();\n    setTimeout(() => subject.next(this.oSearchableCollection), 1);\n    return subject.asObservable();\n  }\n\n  public updateMapLayer(l: OMapLayerComponent) {\n    const p: number = this.wsMapLayers.indexOf(l);\n    const inML = p > -1;\n    const inWS = l.inWS === true;\n\n    if (inWS && !inML) {\n      this.wsMapLayers.push(l);\n      this.updateMapLayersPosition();\n    } else if (!inWS && inML) {\n      this.wsMapLayers.splice(p, 1);\n    }\n  }\n\n  onListitemDragDrop(event: CdkDragDrop<string[]>) {\n    moveItemInArray(this.oSearchableCollection, event.previousIndex, event.currentIndex);\n    this.updateMapLayersPosition();\n  }\n\n  public updateMapLayers() {\n    this.map.getOMapLayers().forEach(l => this.updateMapLayer(l));\n  }\n\n  public getSelectedMapLayer(): OMapLayerComponent {\n    return this.wsMapLayers.filter(l => l.selected === true)[0];\n  }\n\n  public getMapLayers(): Array<OMapLayerComponent> {\n    return this.wsMapLayers;\n  }\n\n  public onWSLayerSelected(event) {\n    this.onToggleWSLayerSelected.emit(event);\n  }\n\n  public onWSLayerVisibilityToggled(event) {\n    this.onToggleWSLayerVisibility.emit(event);\n  }\n\n  public onWSLayerInWSToggled(event) {\n    this.onToggleWSLayerInWS.emit(event);\n  }\n\n  updateMapLayersPosition() {\n    const zMax = this.wsMapLayers.length;\n    this.wsMapLayers.forEach((l, i) => {\n      l.setZIndex(zMax - i + 2);\n    });\n  }\n}\n","<div cdkDropList (cdkDropListDropped)=\"onListitemDragDrop($event)\">\n\t<o-map-workspace-layer *ngFor=\"let layer of oSearchableCollection; let x = index\" cdkDrag\n\t\t[layer-index]\t\t\t\t\t\t\t\t\t= \"x\"\n\t\t[layer-selected]              = \"layer.selected\"\n\t\t[layer-visible]               = \"layer.visible\"\n\t\t[layer-in-ws]                 = \"layer.inWS\"\n\t\t[layer-menu-label]            = \"layer.menuLabel\"\n\t\t[layer-menu-label-secondary]  = \"layer.menuLabelSecondary\"\n\t\t[layer-ref]                   = \"layer\"\n\t\t(onToggleSelected)            = \"onWSLayerSelected($event)\"\n\t\t(onToggleVisibility)          = \"onWSLayerVisibilityToggled($event)\"\n\t\t(onToggleInWS)                = \"onWSLayerInWSToggled($event)\">\n\t</o-map-workspace-layer>\n</div>\n","import { Subscription } from 'rxjs';\n\nimport { OSearchable } from '../../interfaces/search/searchable.interface';\nimport { OSearcher } from '../../interfaces/search/searcher.interface';\nimport { Location } from '../../models/Location.class';\nimport { SearcherDefault } from '../../models/Searcher.class';\nimport { GeocodingService } from '../../services/GeocodingService';\nimport { TranslateMapService } from '../../services/TranslateMapService';\nimport { Util } from '../../utils/util';\nimport { OMapBase } from '../map/o-map-base.class';\nimport { LocationResult } from './o-navigator-location-result.interface';\n\nexport class ONavigatorDefault {\n  protected _searchResults: Array<OSearchable> = new Array<OSearchable>();\n  protected cachedAddress: string = '';\n  private searchObserver: Subscription;\n  private locationSearcher: OSearcher = new SearcherDefault('Lugares', () => this.locationResults);\n  private locationResults: Array<LocationResult> = new Array<LocationResult>();\n\n  constructor(\n    protected geocoder: GeocodingService,\n    protected translateMapService: TranslateMapService,\n    protected oMap: OMapBase\n  ) {\n    // Register location searcher on OMap as first searcher\n    oMap.mapSearchers.splice(0, 0, this.locationSearcher);\n  }\n\n  get address(): string {\n    return this.cachedAddress;\n  }\n\n  set address(address: string) {\n    this.cachedAddress = address;\n  }\n\n  goto() {\n    if (!this.address) {\n      return;\n    }\n\n    this.geocoder.geocode(this.address).subscribe((locations: Array<Location>) => {\n      locations.forEach(l => {\n        const callback = () => {\n          this.oMap.getMapService().map.panTo([l.latitude, l.longitude]);\n          this.address = l.address;\n          return true;\n        };\n        this.locationResults.push({\n          searchTerm: this.address,\n          resultAddress: l.address,\n          oSearchKeys: ['searchTerm', 'resultAddress'],\n          oSearchResult: {\n            label: l.address,\n            icon: 'location_on',\n            buttons: [{\n              icon: ['directions'],\n              status: () => true,\n              callback: callback\n            }]\n          }\n        });\n      });\n      this.address = this.address;\n    }, error => console.error(error));\n  }\n\n  search(): boolean {\n    // Interrupt last search result\n    this.closeSearch();\n\n    // Check if empty\n    if (Util.isBlank(this.address)) {\n      return false;\n    }\n\n    // Add default result\n    this.searchResults = [{\n      oSearchKeys: [],\n      oSearchResult: {\n        label: this.address,\n        icon: 'location_on',\n        buttons: [{\n          icon: ['search'],\n          status: () => true,\n          callback: () => (this.goto(), true)\n        }]\n      }\n    }];\n\n    // Search\n    this.searchObserver = this.oMap.search(this.address).subscribe(a => {\n      this.searchResults = this.searchResults.concat(a);\n    });\n\n    return true;\n  }\n\n  closeSearch() {\n    // Interrupt last search result\n    this.searchResults.splice(0, this.searchResults.length);\n    if (!!this.searchObserver) {\n      this.searchObserver.unsubscribe();\n      this.searchObserver.closed = true;\n    }\n  }\n\n  get searchResults(): Array<OSearchable> {\n    return this._searchResults;\n  }\n\n  set searchResults(val: Array<OSearchable>) {\n    this._searchResults = val;\n  }\n\n}\n","import { Component } from '@angular/core';\n\nimport { OSearchResult, OSearchResultAction } from '../../interfaces/search/searchable.interface';\n\n@Component({\n  selector: 'o-navigator-item',\n  inputs: [\n    'searchResult : search-result'\n  ],\n  templateUrl: './o-navigator-item.component.html',\n  styleUrls: ['./o-navigator-item.component.scss']\n})\nexport class ONavigatorItemComponent {\n  protected _searchResult: OSearchResult;\n\n  private actionButtons: Array<OSearchResultAction> = new Array<OSearchResultAction>();\n\n  /**\n   * Updates or return the list of buttons in this search result\n   * @return Current list of buttons\n   */\n  get actions(): Array<OSearchResultAction> {\n    if (this.actionButtons.length !== this.searchResult.buttons.length) {\n      this.actionButtons = this.searchResult.buttons;\n    }\n    return this.actionButtons;\n  }\n\n  /**\n   * Extracts the true status icon, if any\n   * @param button - The button to extract the icon from\n   * @return The first string in the array\n   */\n  trueStatusIcon(button: OSearchResultAction): string {\n    return (!button.icon || !button.icon.length) ? '' : button.icon.slice(0, 1)[0];\n  }\n\n  /**\n   * Extracts the false status icon, if any\n   * @param button - The button to extract the icon from\n   * @return The last string in the array\n   */\n  falseStatusIcon(button: OSearchResultAction): string {\n    return (!button.icon || !button.icon.length) ? '' : button.icon.slice(-1, button.icon.length)[0];\n  }\n\n  getIcon(button: OSearchResultAction): string {\n    return button.status() ? this.trueStatusIcon(button) : this.falseStatusIcon(button);\n  }\n\n  get searchResult(): OSearchResult {\n    return this._searchResult;\n  }\n\n  set searchResult(val: OSearchResult) {\n    this._searchResult = val;\n  }\n}\n","<div class=\"search-result\" fxLayout=\"row\">\n\t<i class=\"material-icons\" *ngIf=\"searchResult.icon\">{{ searchResult.icon }}</i>\n\t<div fxFlex fxLayout=\"column\" fxLayoutAlign=\"center start\">\n\t\t<span *ngIf=\"searchResult.label\">{{ searchResult.label }}</span>\n\t\t<span class=\"sub-label\" *ngIf=\"searchResult.sublabel\">{{ searchResult.sublabel }}</span>\n\t</div>\n\t<o-toggle-icon-button *ngFor=\"let button of actions\"\n\t\ticon-dark=\"true\" clickable=\"false\"\n\t\t[icon-name]=\"getIcon(button)\"\n\t\t[button-active]=\"button.status()\"\n\t\t(click)=\"button.callback()\">\n\t</o-toggle-icon-button>\n</div>\n","import { Component, forwardRef, Inject, OnDestroy } from '@angular/core';\nimport { BooleanInputConverter } from 'ontimize-web-ngx';\nimport { Subscription } from 'rxjs';\n\nimport { GeocodingService } from '../../services/GeocodingService';\nimport { TranslateMapService } from '../../services/TranslateMapService';\nimport { ONavigatorDefault } from './o-navigator.class';\nimport { OMapBase } from '../map/o-map-base.class';\n\nconst DEFAULT_INPUTS = [\n  'showSidenavButton: show-sidenav-button',\n  'showSearchInput: show-search-input'\n];\n\n@Component({\n  selector: 'o-navigator',\n  templateUrl: './o-navigator.component.html',\n  styleUrls: ['./o-navigator.component.scss'],\n  inputs: DEFAULT_INPUTS\n})\nexport class ONavigatorComponent extends ONavigatorDefault implements OnDestroy {\n\n  public static DEFAULT_INPUTS = DEFAULT_INPUTS;\n\n  @BooleanInputConverter()\n  public showSidenavButton: boolean = true;\n  @BooleanInputConverter()\n  public showSearchInput: boolean = true;\n\n  protected _rendered: boolean = false;\n  protected oMapConfigurationSubscription: Subscription;\n\n  constructor(\n    @Inject(GeocodingService) geocoder: GeocodingService,\n    @Inject(TranslateMapService) translateMapService: TranslateMapService,\n    @Inject(forwardRef(() => OMapBase)) oMap: OMapBase\n  ) {\n    super(geocoder, translateMapService, oMap);\n    this.oMapConfigurationSubscription = this.oMap.onMapConfigured().subscribe(() => {\n      if (this.isSearchInputVisible) {\n        this.oMap.getMapService().disableMouseEvent('place-input');\n      }\n    });\n  }\n\n  public ngOnDestroy(): void {\n    if (this.oMapConfigurationSubscription) {\n      this.oMapConfigurationSubscription.unsubscribe();\n    }\n  }\n\n  public getText(text: string): string {\n    if (this.translateMapService) {\n      return this.translateMapService.get(text);\n    }\n    return text;\n  }\n\n  /**\n   * Update search results using the new value of address\n   */\n  get address(): string {\n    return this.cachedAddress;\n  }\n\n  set address(address: string) {\n    this.cachedAddress = address;\n    this.rendered = this.search();\n    // this.goto();\n  }\n\n  /**\n   * Toggle OMap sidebar state\n   */\n  public toggleSidenav(e: MouseEvent) {\n    this.oMap.toggleSidenav(e);\n  }\n\n  /**\n   * Hide search results when cursor goes out\n   */\n  public onBlur() {\n    this.rendered = false;\n    setTimeout(() => {\n      if (this.rendered === false) {\n        this.closeSearch();\n      }\n    }, 350);\n  }\n\n  /**\n   * Load search results when cursor goes in\n   */\n  public onFocus() {\n    if (this.rendered === false) {\n      this.rendered = this.search();\n    }\n  }\n\n  get rendered(): boolean {\n    return this._rendered;\n  }\n\n  set rendered(val: boolean) {\n    this._rendered = val;\n  }\n\n  get isSearchInputVisible(): boolean {\n    return this.showSearchInput;\n  }\n\n  set isSearchInputVisible(val: boolean) {\n    this.showSearchInput = val;\n  }\n\n  get isSidenavButtonVisible(): boolean {\n    return this.showSidenavButton;\n  }\n\n  set isSidenavButtonVisible(val: boolean) {\n    this.showSidenavButton = val;\n  }\n\n}\n","<div fxLayout=\"row\" layout-padding layout-wrap ng-cloak>\n  <div class=\"search-panel on-map mat-elevation-z2\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n    <button *ngIf=\"isSidenavButtonVisible\" mat-button class=\"mat-button\" (click)=\"toggleSidenav($event)\">\n      <i class=\"material-icons\">menu</i>\n    </button>\n    <input *ngIf=\"isSearchInputVisible\" id=\"place-input\" class=\"on-map\" type=\"text\" fxFlex\n      [placeholder]=\"getText('SEARCH_PLACEHOLDER')\" [(ngModel)]=\"address\" (blur)=\"onBlur()\" (click)=\"onFocus()\">\n  </div>\n</div>\n<div *ngIf=\"searchResults.length > 0\" fxLayout=\"row\" layout-padding fxLayoutWrap ng-cloak>\n  <div class=\"search-results on-map mat-elevation-z2\" fxFlex fxLayout=\"column\" fxLayoutAlign=\"start center\"\n    [class.rendered]=\"rendered\">\n    <o-navigator-item *ngFor=\"let item of searchResults\" [search-result]=\"item.oSearchResult\">\n    </o-navigator-item>\n  </div>\n</div>","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Injector,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  ViewChild,\n  ViewChildren,\n  ViewEncapsulation,\n  forwardRef,\n} from '@angular/core';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { MatTab, MatTabGroup } from '@angular/material/tabs';\nimport * as L from 'leaflet';\nimport { BooleanInputConverter } from 'ontimize-web-ngx';\nimport { Subscription } from 'rxjs';\n\nimport { OMapLayerGroup } from '../../interfaces/o-map-layer-group.interface';\nimport { OMapWorkspace } from '../../interfaces/o-map-workspace.interface';\nimport { LayerConfigurationContextmenu } from '../../models/LayerConfiguration.class';\nimport { GeocodingService } from '../../services/GeocodingService';\nimport { MapService } from '../../services/MapService';\nimport { TranslateMapService } from '../../services/TranslateMapService';\nimport { Util } from '../../utils/util';\nimport type { OMapBaseLayerComponent } from '../map-base-layer/o-map-base-layer.component';\nimport { OMapCrsComponent } from '../map-crs/o-map-crs.component';\nimport { OMapLayerContainerComponent } from '../map-layer-container/o-map-layer-container.component';\nimport { OMarkerComponent } from '../marker/o-marker.component';\nimport { OMapWSearch } from './o-map-w-search.class';\nimport { OMapBase } from './o-map-base.class';\nimport { getGeocodingServiceProvider } from '../../services/providers';\nimport { HttpClient } from '@angular/common/http';\n\nconst DEFAULT_INPUTS = [\n  'sAttr: attr',\n  'sCenter: center',\n  'sZoom: zoom',\n  'sMinZoom: min-zoom',\n  'sMaxZoom: max-zoom',\n  'sZoomControl: zoom-control',\n  'sSearchControl: search-control',\n  'sSearchControlButtonVisible: search-control-button-visible',\n  'sDrawControl: draw-control',\n  'sLayerPanelVisible: layer-panel-visible',\n\n  // Array of provider Id's separated by ';'. The providers are extracted from\n  // https://github.com/leaflet-extras/leaflet-providers#providers\n  'sBaseLayerIds: base-layer-ids',\n\n  'sidenavMode: sidenav-mode',\n\n  'showBaseLayersMenu: show-base-layers-menu',\n  'showLayersMenu: show-layers-menu',\n  'showWorkspaceMenu: show-workspace-menu',\n  'contextMenu : layer-contextmenu',\n\n  'queryFeaturesInBounds: query-features-in-bounds'\n];\n\nconst DEFAULT_OUTPUTS = [\n  'onToggleWSLayerSelected',\n  'onToggleWSLayerVisibility',\n  'onToggleWSLayerInWS',\n\n  'onClick',\n  'onDrag',\n  'onMove',\n  'onMoveEnd',\n  'onZoomLevelsChange',\n  'onZoomStart',\n  'onZoomEnd',\n  'onZoom',\n\n  'onDrawEvent',\n\n  'onDrawCreated',\n  'onDrawEdited',\n  'onDrawDeleted',\n  'onDrawDrawStart',\n  'onDrawDrawstop',\n  'onDrawvertex',\n  'onDrawEditStart',\n  'onDrawEditMove',\n  'onDrawEditResize',\n  'onDrawEditvertex',\n  'onDrawEditStop',\n  'onDrawDeleteStart',\n  'onDrawDeleteStop'\n];\n\n@Component({\n  selector: 'o-map',\n  providers: [\n    MapService, {\n      provide: GeocodingService, useFactory: getGeocodingServiceProvider, deps: [Injector, HttpClient]\n    }, {\n      provide: OMapBase, useExisting: forwardRef(() => OMapComponent)\n    }],\n  inputs: OMapComponent.DEFAULT_INPUTS,\n  outputs: OMapComponent.DEFAULT_OUTPUTS,\n  templateUrl: './o-map.component.html',\n  styleUrls: ['./o-map.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  animations: [\n    trigger('navigatorState', [\n      state('closed', style({\n        position: 'absolute',\n        left: '0px'\n      })),\n      state('open', style({\n        position: 'absolute',\n        left: '{{navigatorExpandedPosition}}'\n      }), { params: { navigatorExpandedPosition: '0px' } }),\n      transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\n    ])\n  ],\n  host: {\n    '[class.o-map]': 'true'\n  }\n})\nexport class OMapComponent extends OMapWSearch implements OnInit, AfterViewInit, OnDestroy {\n\n  public static DEFAULT_INPUTS = DEFAULT_INPUTS;\n  public static DEFAULT_OUTPUTS = DEFAULT_OUTPUTS;\n\n  @ViewChild(OMarkerComponent) markerComponent: OMarkerComponent;\n  @ViewChild('sidenav') sideNavCmp: MatSidenav;\n  @ViewChildren('mainBaseLayerGroup') mapBaseLayerGroup: Array<OMapBaseLayerComponent>;\n  @ViewChild('mainLayerGroup') mapLayerGroup: OMapLayerGroup;\n  @ViewChild('oMapWorkspace') mapWorkspace: OMapWorkspace;\n  @ViewChild('navigatorContainer') navigatorContainer: ElementRef;\n  @ContentChildren(OMapLayerContainerComponent)\n  protected mapLayerContainerQueryList: QueryList<OMapLayerContainerComponent>;\n  mapLayerContainerComponent: OMapLayerContainerComponent;\n\n  onToggleWSLayerSelected: EventEmitter<Object> = new EventEmitter<Object>();\n  onToggleWSLayerVisibility: EventEmitter<Object> = new EventEmitter<Object>();\n  onToggleWSLayerInWS: EventEmitter<Object> = new EventEmitter<Object>();\n\n  public set sCenter(center: string) {\n    this.setCenter(center);\n  }\n  public sAttr: string;\n  public sZoom: string;\n  public sMinZoom: string;\n  public sMaxZoom: string;\n  public sZoomControl: string;\n  public sSearchControl: string;\n  public sSearchControlButtonVisible: string;\n  public sDrawControl: string;\n  public sLayerPanelVisible: string;\n  public sBaseLayerIds: string;\n  private _sidenavMode: 'over' | 'push' | 'side' = 'over';\n  get sidenavMode(): 'over' | 'push' | 'side' { return this._sidenavMode; }\n  set sidenavMode(value: 'over' | 'push' | 'side') {\n    this._sidenavMode = value;\n  }\n  @BooleanInputConverter()\n  public showBaseLayersMenu: boolean = true;\n  @BooleanInputConverter()\n  public showLayersMenu: boolean = true;\n  @BooleanInputConverter()\n  public showWorkspaceMenu: boolean = true;\n  @BooleanInputConverter()\n  public queryFeaturesInBounds: boolean = true;\n\n  mapId: string;\n  protected baseLayerIds: Array<string>;\n  protected tabGroupContainer: MatTabGroup;\n  protected tabContainer: MatTab;\n  protected tabGroupSubscription: Subscription;\n  protected _waitForBuild: boolean = false;\n  protected _searchControl: boolean = true;\n  protected _searchControlButtonVisible: boolean = true;\n  protected crsComponent: OMapCrsComponent;\n  protected _contextmenu: any;\n\n  constructor(\n    protected elRef: ElementRef,\n    protected injector: Injector\n  ) {\n    super();\n    this.mapService = this.injector.get(MapService);\n    this.translateMapService = this.injector.get(TranslateMapService);\n    try {\n      this.tabGroupContainer = this.injector.get(MatTabGroup);\n      this.tabContainer = this.injector.get(MatTab);\n      if (this.tabGroupContainer && this.tabContainer) {\n        this.waitForBuild = true;\n      }\n    } catch (error) {\n      // Do nothing due to not always is contained on tab.\n    }\n  }\n\n  public getInjector(): Injector {\n    return this.injector;\n  }\n\n  ngOnInit() {\n    if (!this.waitForBuild) {\n      this.initialize();\n    } else {\n      this.waitForBuild = true;\n    }\n  }\n\n  ngAfterViewInit() {\n    if (this.waitForBuild && !this.tabContainer.content.isAttached) {\n      this.registerTabGroupListener();\n    } else if (this.waitForBuild) {\n      this.initialize();\n    }\n    if (this.mapLayerContainerQueryList && this.mapLayerContainerQueryList.length > 0) {\n      this.mapLayerContainerComponent = this.mapLayerContainerQueryList.first;\n    }\n  }\n\n  initialize() {\n    this.mapId = this.sAttr ? this.sAttr : 'map_' + new Date().getTime();\n    this.zoom = {\n      current: parseInt(this.sZoom, 10),\n      min: parseInt(this.sMinZoom, 10),\n      max: parseInt(this.sMaxZoom, 10),\n      control: Util.parseBoolean(this.sZoomControl, true)\n    };\n    this.searchControl = Util.parseBoolean(this.sSearchControl, true);\n    this.isSearchControlButtonVisible = Util.parseBoolean(this.sSearchControlButtonVisible, true);\n    this.drawDefaultControl = Util.parseBoolean(this.sDrawControl, false);\n    this.isSidenavVisible = Util.parseBoolean(this.sLayerPanelVisible, false);\n\n    this.baseLayerIds = Util.parseArray(this.sBaseLayerIds);\n    this.mapService.configureBaseLayers(this.baseLayerIds);\n\n    const self = this;\n    setTimeout(() => {\n      if (!self.mapService.map) {\n        // console.debug('Initializing map...');\n        self.configureMap();\n      }\n      if (self.drawDefaultControl && !self.drawControlComponent) {\n        self.configureDefaultDrawControl(self.mapService.getMap());\n      }\n      self.onMapAfterViewInit().emit(self);\n      self.onMapReady().next(self);\n    }, 0);\n  }\n\n  registerCRSComponent(crsComp: OMapCrsComponent) {\n    this.crsComponent = crsComp;\n  }\n\n  registerTabGroupListener() {\n    const self = this;\n    this.tabGroupSubscription = this.tabGroupContainer.selectedTabChange.subscribe((evt) => {\n      const interval = setInterval(function () { timerCallback(evt.tab); }, 250);\n      function timerCallback(tab: MatTab) {\n        if (tab && tab.content.isAttached) {\n          clearInterval(interval);\n          if (tab === self.tabContainer) {\n            self.tabGroupSubscription.unsubscribe();\n            self.initialize();\n            self.waitForBuild = false;\n          }\n        }\n      }\n    });\n  }\n\n  ngOnDestroy() {\n    if (this.tabGroupSubscription) {\n      this.tabGroupSubscription.unsubscribe();\n    }\n  }\n\n  get waitForBuild(): boolean {\n    return this._waitForBuild;\n  }\n\n  set waitForBuild(val: boolean) {\n    this._waitForBuild = val;\n  }\n\n  public onWSLayerSelected(event) {\n    this.onToggleWSLayerSelected.emit(event);\n  }\n\n  public onWSLayerVisibilityToggled(event) {\n    this.onToggleWSLayerVisibility.emit(event);\n  }\n\n  public onWSLayerInWSToggled(event) {\n    this.onToggleWSLayerInWS.emit(event);\n  }\n\n  public getText(text: string): string {\n    if (this.translateMapService) {\n      return this.translateMapService.get(text);\n    }\n    return text;\n  }\n\n  protected configureMap() {\n    L.Icon.Default.imagePath = './assets/';\n\n    const mapOptions = {\n      zoomControl: false,\n      center: new L.LatLng(this.getCenter().latitude, this.getCenter().longitude),\n      zoom: this.zoom.current || 12,\n      minZoom: this.zoom.min || 4,\n      maxZoom: this.zoom.max || 19,\n      layers: this.mapService.baseLayers.getLayersArray()\n    };\n    // Added contextmenu option in mapOptions\n    if (this.contextMenu) {\n      mapOptions['contextmenu'] = true;\n      mapOptions['contextmenuWidth'] = this.contextMenu.contextmenuWidth;\n      mapOptions['contextmenuItems'] = this.contextMenu.contextmenuItems;\n    }\n\n    if (this.crsComponent) {\n      const crsConf = this.crsComponent.getCRS();\n      if (crsConf) {\n        mapOptions['crs'] = crsConf;\n      }\n    }\n\n    const map = this.mapService.getMap(this.mapId, mapOptions);\n\n    L.control.scale().addTo(map);\n    if (this.zoom.control) {\n      L.control.zoom({ position: 'bottomright' }).addTo(map);\n    }\n\n    this.onMapConfigured().emit(true);\n  }\n\n  get searchControl(): boolean {\n    return this._searchControl;\n  }\n\n  set searchControl(val: boolean) {\n    this._searchControl = val;\n  }\n\n  get isSearchControlButtonVisible(): boolean {\n    return this._searchControlButtonVisible;\n  }\n\n  set isSearchControlButtonVisible(val: boolean) {\n    this._searchControlButtonVisible = val;\n  }\n\n  get isNavigatorVisible(): boolean {\n    return this._searchControl || this._searchControlButtonVisible;\n  }\n\n  get navigatorState(): any {\n    let value = 'none';\n    if (this.sidenavMode === 'over' && this.sideNavCmp) {\n      value = this.sideNavCmp.opened ? 'open' : 'closed';\n    }\n    return {\n      value: value,\n      params: {\n        navigatorExpandedPosition: this.navigatorExpandedPosition\n      }\n    };\n  }\n\n  get navigatorExpandedPosition(): string {\n    let result = 0;\n    if (this.sideNavCmp && this.sideNavCmp.opened) {\n      result = this.sideNavCmp._getWidth();\n    }\n    return result + 'px';\n  }\n\n  set contextMenu(val: LayerConfigurationContextmenu) {\n    if (!val) {\n      return;\n    }\n    this._contextmenu = val;\n    if (val.defaultContextmenuItems) {\n      this._contextmenu.contextmenuItems =\n        this._contextmenu.contextmenuItems.concat(this.getMapService().defaultContextMenu.contextmenuItems);\n    }\n    if (!this._contextmenu.contextmenuItems) {\n      return;\n    }\n    this._contextmenu.contextmenuItems = this.getMapService().parseContextmenuItems(this._contextmenu.contextmenuItems);\n  }\n\n  get contextMenu(): LayerConfigurationContextmenu {\n    return this._contextmenu;\n  }\n}\n","<!--\n\tTODO replace this div with o-frame if it goes into the framework\n\tFrame to create the sidebar\n-->\n<mat-sidenav-container fxFlexFill hasBackdrop=\"false\">\n  <mat-sidenav #sidenav id=\"layers\" name=\"layers\" [mode]=\"sidenavMode\" [opened]=\"isSidenavVisible\">\n    <div fxLayout=\"column\" fxLayoutAlign=\"start stretch\">\n\n      <ng-container *ngIf=\"showBaseLayersMenu\">\n        <!-- Header for Layer Base -->\n        <mat-expansion-panel expanded=\"true\">\n          <mat-expansion-panel-header [collapsedHeight]=\"'34px'\" [expandedHeight]=\"'34px'\">\n            <span class=\"mat-expansion-indicator o-close-sidenav\" (click)=\"toggleSidenav($event)\">\n            </span>\n            <mat-panel-title>\n              {{ getText('MAP_BASE_LAYERS') }}\n            </mat-panel-title>\n          </mat-expansion-panel-header>\n\n          <!-- TODO replace this div with o-grid if it goes into the framework. Block with a grid of Base Layers -->\n          <div fxLayout=\"row\" fxLayoutAlign=\"space-evenly center\" class=\"group-ref\">\n            <o-map-base-layer #mainBaseLayerGroup *ngFor=\"let baseLayer of baseLayers\" [layer-id]=\"baseLayer.id\"\n              [title]=\"baseLayer.name\" [src]=\"baseLayer.urlTemplate\" [active]=\"baseLayer.active\" fxLayout fxLayoutAlign=\"center center\">\n            </o-map-base-layer>\n          </div>\n        </mat-expansion-panel>\n      </ng-container>\n\n      <ng-container *ngIf=\"showLayersMenu\">\n        <!-- Header for Layers -->\n        <mat-expansion-panel expanded=\"true\">\n          <mat-expansion-panel-header [collapsedHeight]=\"'34px'\" [expandedHeight]=\"'34px'\">\n            <mat-panel-title>\n              {{ getText('MAP_LAYERS') }}\n            </mat-panel-title>\n          </mat-expansion-panel-header>\n\n          <!-- TODO replace this div with o-tree-list if it goes into the framework. Block with a hierarquical list of Layers and LayerGroups -->\n          <div class=\"group-ref\">\n            <ng-content></ng-content>\n            <o-map-layer-group class=\"o-map-layer-group\" #mainLayerGroup></o-map-layer-group>\n          </div>\n        </mat-expansion-panel>\n      </ng-container>\n\n      <ng-container *ngIf=\"showWorkspaceMenu\">\n        <!-- Header for Workspace -->\n        <mat-expansion-panel expanded=\"true\">\n          <mat-expansion-panel-header [collapsedHeight]=\"'34px'\" [expandedHeight]=\"'34px'\">\n            <mat-panel-title>\n              {{ getText('MAP_WORKSPACE_LAYERS') }}\n            </mat-panel-title>\n          </mat-expansion-panel-header>\n\n          <!-- TODO replace this div with o-list if it goes into the framework. Block with a simple list of WorkspaceLayers -->\n          <o-map-workspace #oMapWorkspace (onToggleWSLayerSelected)=\"onWSLayerSelected($event)\"\n            (onToggleWSLayerVisibility)=\"onWSLayerVisibilityToggled($event)\"\n            (onToggleWSLayerInWS)=\"onWSLayerInWSToggled($event)\">\n          </o-map-workspace>\n        </mat-expansion-panel>\n      </ng-container>\n\n      <ng-container *ngIf=\"mapLayerContainerComponent\">\n        <mat-expansion-panel expanded=\"true\">\n          <mat-expansion-panel-header [collapsedHeight]=\"'34px'\" [expandedHeight]=\"'34px'\">\n\n            <ng-template #headerContent [ngTemplateOutlet]=\"mapLayerContainerComponent.headerTemplateref\">\n            </ng-template>\n\n            <mat-panel-title>\n              {{ mapLayerContainerComponent.label }}\n            </mat-panel-title>\n          </mat-expansion-panel-header>\n          <ng-content select=\"o-map-layer-container\"></ng-content>\n        </mat-expansion-panel>\n      </ng-container>\n    </div>\n  </mat-sidenav>\n  <!--\n\t\tTODO o-frame sidebar container\n\t\tMap Section\n\t-->\n  <div fxLayout=\"column\" fxLayoutAlign=\"top start\" fxFlexFill>\n    <!--\n      Map container for Leaflet\n    -->\n    <div [id]=\"mapId\" class=\"leaflet-map-container\"></div>\n    <!--\n      Omnibar o-navigator\n    -->\n    <div *ngIf=\"isNavigatorVisible\" #navigatorContainer [@navigatorState]=\"navigatorState\" fxLayout=\"row\"\n      fxLayoutAlign=\"start center\">\n      <o-navigator [show-search-input]=\"searchControl\" [show-sidenav-button]=\"isSearchControlButtonVisible\">\n      </o-navigator>\n    </div>\n  </div>\n</mat-sidenav-container>","import * as L from 'leaflet';\n\nimport type { OMapLayerComponent } from '../map-layer/o-map-layer.component';\nimport type { OMapCrsComponent } from './o-map-crs.component';\n\nexport interface ICRSConfiguration {\n  epsg: string;\n  epsg_configuration: string;\n  epsg_args?: Object;\n}\n\nexport interface ICRSConfigurationParameter {\n  crs?: string;\n  crsConfiguration?: ICRSConfiguration;\n}\n\nexport class OMapCrsConfigurationClass {\n  // OMapComponent | OMapLayerComponent\n  static getCRSFromConfigurationObject(comp: OMapCrsComponent | OMapLayerComponent) {\n    let result;\n    const crsParam: ICRSConfiguration = comp.getCRSConfigurationParam().crsConfiguration;\n    let args = {};\n    if (crsParam !== undefined && crsParam.epsg_args !== undefined) {\n      args = crsParam.epsg_args;\n    }\n    if (crsParam.epsg !== undefined && crsParam.epsg_configuration !== undefined) {\n      result = new L.Proj.CRS(crsParam.epsg, crsParam.epsg_configuration, args);\n    }\n    return result;\n  }\n\n  static getCRSObject(arg: OMapCrsComponent | OMapLayerComponent) {\n    const conf: ICRSConfigurationParameter = arg.getCRSConfigurationParam();\n    if (conf.crs !== undefined && L.CRS && L.CRS[conf.crs]) {\n      // EPSG3857 EPSG4326 EPSG900913 L.CRS.Earth L.CRS.Simple\n      return L.CRS[conf.crs];\n    } else if (conf.crsConfiguration !== undefined) {\n      return OMapCrsConfigurationClass.getCRSFromConfigurationObject(arg);\n    }\n    return undefined;\n  }\n}\n","import { Component, forwardRef, Inject, OnInit } from '@angular/core';\n\nimport { OMapComponent } from '../map/o-map.component';\nimport { ICRSConfiguration, ICRSConfigurationParameter, OMapCrsConfigurationClass } from './o-map-crs-configuration.class';\n\nconst DEFAULT_INPUTS = [\n  'crs',\n  'crsConfiguration : crs-configuration'\n];\n\nconst DEFAULT_OUTPUTS = [\n];\n\n@Component({\n  selector: 'o-map-crs',\n  templateUrl: './o-map-crs.component.html',\n  styleUrls: ['./o-map-crs.component.scss'],\n  inputs: DEFAULT_INPUTS,\n  outputs: DEFAULT_OUTPUTS\n})\nexport class OMapCrsComponent implements OnInit {\n\n  public static DEFAULT_INPUTS = DEFAULT_INPUTS;\n  public static DEFAULT_OUTPUTS = DEFAULT_OUTPUTS;\n\n  protected crs: string;\n  protected crsConfiguration: ICRSConfiguration;\n\n  constructor(\n    @Inject(forwardRef(() => OMapComponent)) protected oMap: OMapComponent\n  ) {\n\n  }\n\n  ngOnInit() {\n    if (this.oMap) {\n      this.oMap.registerCRSComponent(this);\n    }\n  }\n\n  getCRSConfigurationParam(): ICRSConfigurationParameter {\n    return {\n      crsConfiguration: this.crsConfiguration,\n      crs: this.crs\n    };\n  }\n\n  getCRS() {\n    return OMapCrsConfigurationClass.getCRSObject(this);\n  }\n\n}\n","","import { Component, forwardRef, Inject, OnDestroy, OnInit } from '@angular/core';\nimport * as L from 'leaflet';\nimport { BooleanInputConverter } from 'ontimize-web-ngx';\nimport { Subscription } from 'rxjs';\n\nimport { OMapComponent } from '../map/o-map.component';\nimport { MapService } from '../../services/MapService';\nimport { OMapDrawControlsEvents } from './o-map-draw-controls-events.class';\n\nconst DEFAULT_INPUTS = [\n  'position',\n  'polylineOptions : polyline-options',\n  'polygonOptions : polygon-options',\n  'rectangleOptions : rectangle-options',\n  'circleOptions : circle-options',\n  'circleMarkerOptions : circlemarker-options',\n  'markerOptions : marker-options',\n\n  'editPolyOptions : edit-poly-options',\n  'editHandlerOptions : edit-handler-options',\n  'deleteHandlerOptions : delete-handler-options',\n  'showControls: show-controls'\n];\n\nconst DEFAULT_OUTPUTS = [\n];\n\n@Component({\n  selector: 'o-map-draw-controls',\n  templateUrl: './o-map-draw-controls.component.html',\n  styleUrls: ['./o-map-draw-controls.component.scss'],\n  inputs: DEFAULT_INPUTS,\n  outputs: DEFAULT_OUTPUTS\n})\nexport class OMapDrawControlsComponent implements OnInit, OnDestroy {\n\n  public static DEFAULT_INPUTS = DEFAULT_INPUTS;\n  public static DEFAULT_OUTPUTS = DEFAULT_OUTPUTS;\n\n  protected static EMPTY_CONTROL_TAG = 'none';\n\n  drawControl: L.Control.Draw;\n\n  protected position: 'topleft' | 'topright' | 'bottomleft' | 'bottomright' = 'topright';\n  // https://leaflet.github.io/Leaflet.draw/docs/leaflet-draw-latest.html\n\n  // DrawOptions\n\n  protected polylineOptions: L.DrawOptions.PolylineOptions | boolean = {};\n  protected polygonOptions: L.DrawOptions.PolygonOptions | boolean = {};\n  protected rectangleOptions: L.DrawOptions.RectangleOptions | boolean = {};\n  protected circleOptions: L.DrawOptions.CircleOptions | boolean = {};\n  protected markerOptions: L.DrawOptions.MarkerOptions | boolean = {};\n  protected circleMarkerOptions = {};\n\n  // EditPolyOptions\n  protected editPolyOptions: any = {};\n\n  protected editHandlerOptions: any = {};\n\n  protected deleteHandlerOptions: any = {};\n\n  protected options: any;\n\n  drawControlEvents: OMapDrawControlsEvents;\n\n  private _editableLayers: L.FeatureGroup;\n\n  protected onMapReadySubscription: Subscription;\n  @BooleanInputConverter()\n  protected showControls: boolean = true;\n\n  constructor(@Inject(forwardRef(() => OMapComponent)) protected oMap: OMapComponent) {\n  }\n\n  ngOnInit() {\n    if (this.oMap) {\n      this.parseDrawOptions();\n      this.setOptions();\n      this.addDrawControlEvents();\n      this.oMap.registerDrawControlComponent(this);\n\n      this.onMapReadySubscription = this.oMap.onMapAfterViewInit().subscribe(() => {\n        this.configureDrawControl();\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.onMapReadySubscription) {\n      this.onMapReadySubscription.unsubscribe();\n    }\n  }\n\n  getMapService(): MapService {\n    return this.oMap.getMapService();\n  }\n\n  protected parseDrawOptions() {\n    // drawOptions\n    if (this.polylineOptions === OMapDrawControlsComponent.EMPTY_CONTROL_TAG) {\n      this.polylineOptions = false;\n    }\n    if (this.polygonOptions === OMapDrawControlsComponent.EMPTY_CONTROL_TAG) {\n      this.polygonOptions = false;\n    }\n    if (this.rectangleOptions === OMapDrawControlsComponent.EMPTY_CONTROL_TAG) {\n      this.rectangleOptions = false;\n    }\n    if (this.circleOptions === OMapDrawControlsComponent.EMPTY_CONTROL_TAG) {\n      this.circleOptions = false;\n    }\n    if (this.markerOptions === OMapDrawControlsComponent.EMPTY_CONTROL_TAG) {\n      this.markerOptions = false;\n    }\n    if (this.circleMarkerOptions === OMapDrawControlsComponent.EMPTY_CONTROL_TAG) {\n      this.circleMarkerOptions = false;\n    }\n\n    // editPolyOptions\n    if (this.editPolyOptions === OMapDrawControlsComponent.EMPTY_CONTROL_TAG) {\n      this.editPolyOptions = false;\n    }\n\n    // editHandlerOptions\n    if (this.editHandlerOptions === OMapDrawControlsComponent.EMPTY_CONTROL_TAG) {\n      this.editHandlerOptions = false;\n    }\n\n    // deleteHandlerOptions\n    if (this.deleteHandlerOptions === OMapDrawControlsComponent.EMPTY_CONTROL_TAG) {\n      this.deleteHandlerOptions = false;\n    }\n\n  }\n\n  protected setOptions() {\n    this.options = {\n      position: this.position\n    };\n\n    const drawOptions: any = {\n      polyline: this.polylineOptions,\n      polygon: this.polygonOptions,\n      rectangle: this.rectangleOptions,\n      circle: this.circleOptions,\n      marker: this.markerOptions,\n      circlemarker: this.circleMarkerOptions\n    };\n    this.options.draw = drawOptions;\n\n    if (this.editPolyOptions) {\n      this.editableLayers = new L.FeatureGroup();\n\n      this.editPolyOptions = {\n        featureGroup: this.editableLayers,\n        remove: this.deleteHandlerOptions\n      };\n\n      if (this.editHandlerOptions) {\n        this.editPolyOptions.edit = this.editHandlerOptions;\n      }\n    }\n\n    this.options.edit = this.editPolyOptions;\n  }\n\n  protected addDrawControlEvents(): void {\n    this.drawControlEvents = new OMapDrawControlsEvents(this.editableLayers);\n  }\n\n  configureDrawControl(): void {\n    const map: L.Map = this.oMap.getLMap();\n    this.drawControl = new L.Control.Draw(this.options);\n    if (this.showControls) {\n      this.showDrawControl();\n    }\n    this.drawControlEvents.setMap(map);\n  }\n\n  removeDrawControl(): void {\n    const map: L.Map = this.oMap.getLMap();\n    map.removeControl(this.drawControl);\n    const mapService: MapService = this.getMapService();\n    mapService.removeDrawLayer();\n  }\n\n  showDrawControl() {\n    const map: L.Map = this.oMap.getLMap();\n    map.addControl(this.drawControl);\n    const mapService: MapService = this.getMapService();\n    mapService.addDrawLayer(this.editableLayers);\n  }\n\n  public get editableLayers(): L.FeatureGroup {\n    return this._editableLayers;\n  }\n  public set editableLayers(value: L.FeatureGroup) {\n    this._editableLayers = value;\n  }\n}\n","","import { OMapBaseLayerComponent } from './map-base-layer/o-map-base-layer.component';\nimport { OMapCrsComponent } from './map-crs/o-map-crs.component';\nimport { OMapDrawControlsComponent } from './map-draw-controls/o-map-draw-controls.component';\nimport { OMapLayerContainerComponent } from './map-layer-container/o-map-layer-container.component';\nimport { OMapLayerGroupComponent } from './map-layer-group/o-map-layer-group.component';\nimport { OMapLayerComponent } from './map-layer/o-map-layer.component';\nimport { OMapWorkspaceLayerComponent } from './map-workspace-layer/o-map-workspace-layer.component';\nimport { OMapWorkspaceComponent } from './map-workspace/o-map-workspace.component';\nimport { OMapComponent } from './map/o-map.component';\nimport { OMarkerComponent } from './marker/o-marker.component';\nimport { ONavigatorItemComponent } from './navigator/o-navigator-item.component';\nimport { ONavigatorComponent } from './navigator/o-navigator.component';\nimport { OToggleIconButtonComponent } from './toggle-icon-button/o-toggle-icon-button.component';\n\nexport const OMAP_COMPONENTS: any[] = [\n  OMapComponent,\n  OMapBaseLayerComponent,\n  OMapDrawControlsComponent,\n  OMapCrsComponent,\n  OMapLayerComponent,\n  OMapLayerGroupComponent,\n  OMapWorkspaceComponent,\n  OMapWorkspaceLayerComponent,\n  OToggleIconButtonComponent,\n  OMarkerComponent,\n  ONavigatorComponent,\n  ONavigatorItemComponent,\n  OMapLayerContainerComponent\n];\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { FormsModule } from '@angular/forms';\nimport { OCustomMaterialModule } from 'ontimize-web-ngx';\n\nimport { OMAP_COMPONENTS } from './components/export';\nimport { OMAP_PROVIDERS } from './services/providers';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    OCustomMaterialModule,\n    FlexLayoutModule,\n    DragDropModule\n  ],\n  declarations: OMAP_COMPONENTS,\n  exports: OMAP_COMPONENTS,\n  providers: OMAP_PROVIDERS,\n  schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class OMapModule { }\n\n","import { Geometry } from './Geometry.class';\n\nexport class Feature {\n  id: string;\n  geometry: Geometry;\n  geometry_name: string;\n  properties: Object;\n}\n","export class Geometry {\n  coordinates: Array<number>;\n}\n"],"names":["OMapBase","i1.MapService","i2","Util","i3","i4.OToggleIconButtonComponent","i4.OMapLayerComponent","i5.OToggleIconButtonComponent","i3.OToggleIconButtonComponent","i3.OMapWorkspaceLayerComponent","DEFAULT_INPUTS","i4","i5.ONavigatorItemComponent","DEFAULT_OUTPUTS","i5.OMapBaseLayerComponent","i6.OMapLayerGroupComponent","i7.OMapWorkspaceComponent","i8.ONavigatorComponent","i1.OMapComponent","i2.OMapBaseLayerComponent","i3.OMapDrawControlsComponent","i4.OMapCrsComponent","i5.OMapLayerComponent","i8.OMapWorkspaceLayerComponent","i9.OToggleIconButtonComponent","i10.OMarkerComponent","i11.ONavigatorComponent","i12.ONavigatorItemComponent","i13.OMapLayerContainerComponent"],"mappings":"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"}