{"version":3,"file":"hslayers-ng-components-layer-manager.mjs","sources":["../../../projects/hslayers/components/layer-manager/widgets/layer-editor-widget-base.component.ts","../../../projects/hslayers/components/layer-manager/dimensions/layer-editor-dimensions.component.ts","../../../projects/hslayers/components/layer-manager/dimensions/layer-editor-dimensions.component.html","../../../projects/hslayers/components/layer-manager/dimensions/date-preformat.pipe.ts","../../../projects/hslayers/components/layer-manager/dimensions/layer-manager-time-editor.component.ts","../../../projects/hslayers/components/layer-manager/dimensions/layer-manager-time-editor.component.html","../../../projects/hslayers/components/layer-manager/dialogs/copy-layer-dialog.component.ts","../../../projects/hslayers/components/layer-manager/dialogs/copy-layer-dialog.component.html","../../../projects/hslayers/components/layer-manager/editor/sublayers/layer-editor-sub-layer.service.ts","../../../projects/hslayers/components/layer-manager/editor/sublayers/layer-editor-sub-layer-checkboxes.component.ts","../../../projects/hslayers/components/layer-manager/editor/sublayers/layer-editor-sub-layer-checkboxes.component.html","../../../projects/hslayers/components/layer-manager/editor/sublayers/layer-editor-sublayers.component.ts","../../../projects/hslayers/components/layer-manager/editor/layer-editor.service.ts","../../../projects/hslayers/components/layer-manager/widgets/layer-editor-widget-container.service.ts","../../../projects/hslayers/components/layer-manager/dialogs/remove-layer-dialog.component.ts","../../../projects/hslayers/components/layer-manager/dialogs/remove-layer-dialog.component.html","../../../projects/hslayers/components/layer-manager/widgets/cluster-widget.component.ts","../../../projects/hslayers/components/layer-manager/widgets/cluster-widget.component.html","../../../projects/hslayers/components/layer-manager/widgets/extent-widget/extent-widget.component.ts","../../../projects/hslayers/components/layer-manager/widgets/extent-widget/extent-widget.component.html","../../../projects/hslayers/components/layer-manager/widgets/idw-widget.component.ts","../../../projects/hslayers/components/layer-manager/widgets/idw-widget.component.html","../../../projects/hslayers/components/layer-manager/widgets/layer-folder-widget/layer-folder-dialog/layer-folder-dialog.component.ts","../../../projects/hslayers/components/layer-manager/widgets/layer-folder-widget/layer-folder-dialog/layer-folder-dialog.component.html","../../../projects/hslayers/components/layer-manager/widgets/layer-folder-widget/layer-folder-widget.component.ts","../../../projects/hslayers/components/layer-manager/widgets/layer-folder-widget/layer-folder-widget.component.html","../../../projects/hslayers/components/layer-manager/widgets/layer-type-switcher-widget/layer-type-switcher-widget.component.ts","../../../projects/hslayers/components/layer-manager/widgets/layer-type-switcher-widget/layer-type-switcher-widget.component.html","../../../projects/hslayers/components/layer-manager/widgets/legend-widget.component.ts","../../../projects/hslayers/components/layer-manager/widgets/legend-widget.component.html","../../../projects/hslayers/components/layer-manager/widgets/metadata-widget.component.ts","../../../projects/hslayers/components/layer-manager/widgets/metadata-widget.component.html","../../../projects/hslayers/components/layer-manager/widgets/opacity-widget.component.ts","../../../projects/hslayers/components/layer-manager/widgets/opacity-widget.component.html","../../../projects/hslayers/components/layer-manager/widgets/scale-widget.component.ts","../../../projects/hslayers/components/layer-manager/widgets/scale-widget.component.html","../../../projects/hslayers/components/layer-manager/widgets/type-widget.component.ts","../../../projects/hslayers/components/layer-manager/widgets/type-widget.component.html","../../../projects/hslayers/components/layer-manager/widgets/wms-source-widget/wms-source-widget.component.ts","../../../projects/hslayers/components/layer-manager/widgets/wms-source-widget/wms-source-widget.component.html","../../../projects/hslayers/components/layer-manager/editor/widget-config.ts","../../../projects/hslayers/components/layer-manager/editor/layer-editor.component.ts","../../../projects/hslayers/components/layer-manager/editor/layer-editor.component.html","../../../projects/hslayers/components/layer-manager/logical-list/layer-manager-layerlist.service.ts","../../../projects/hslayers/components/layer-manager/gallery/gallery-editor-dialog.component.ts","../../../projects/hslayers/components/layer-manager/gallery/layer-manager-gallery.component.ts","../../../projects/hslayers/components/layer-manager/gallery/layer-manager-gallery.component.html","../../../projects/hslayers/components/layer-manager/logical-list/layer-list-item/layer-list-item.component.ts","../../../projects/hslayers/components/layer-manager/logical-list/layer-list-item/layer-list-item.component.html","../../../projects/hslayers/components/layer-manager/logical-list/layer-manager-layerlist.component.ts","../../../projects/hslayers/components/layer-manager/logical-list/layer-manager-layerlist.component.html","../../../projects/hslayers/components/layer-manager/physical-list/physical-layerlist.component.ts","../../../projects/hslayers/components/layer-manager/physical-list/physical-layerlist.component.html","../../../projects/hslayers/components/layer-manager/dialogs/remove-all-dialog.component.ts","../../../projects/hslayers/components/layer-manager/dialogs/remove-all-dialog.component.html","../../../projects/hslayers/components/layer-manager/layer-manager.component.ts","../../../projects/hslayers/components/layer-manager/layer-manager.component.html","../../../projects/hslayers/components/layer-manager/layer-manager.module.ts","../../../projects/hslayers/components/layer-manager/hslayers-ng-components-layer-manager.ts"],"sourcesContent":["import {BehaviorSubject, filter} from 'rxjs';\nimport {Component, DestroyRef, OnInit, ViewRef, inject} from '@angular/core';\n\nimport {Layer} from 'ol/layer';\n\nimport {HsLayerDescriptor} from 'hslayers-ng/types';\nimport {HsLayerSelectorService} from 'hslayers-ng/services/layer-manager';\nimport {HsPanelComponent} from 'hslayers-ng/common/panels';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\n@Component({\n  template: '<div></div>',\n  standalone: false,\n})\nexport class HsLayerEditorWidgetBaseComponent\n  implements HsPanelComponent, OnInit\n{\n  hsLayerSelectorService = inject(HsLayerSelectorService);\n\n  /**\n   * This could be used to enable/disable widgets by name on HsConfig level\n   */\n  name: string;\n  viewRef: ViewRef;\n  data: any;\n  layerDescriptor = new BehaviorSubject<HsLayerDescriptor>(null);\n  olLayer: Layer;\n  isVisible$ = new BehaviorSubject<boolean>(true);\n\n  baseComponentInitRun = false;\n  destroyRef = inject(DestroyRef);\n\n  constructor() {\n    this.layerDescriptor.subscribe((descriptor) => {\n      this.olLayer = descriptor?.layer;\n    });\n\n    setTimeout(() => {\n      if (!this.baseComponentInitRun) {\n        console.warn(\n          `${\n            this.name || this.constructor.name\n          } implements ngOnInit lifecycle hook without calling HsLayerEditorWidgetBaseComponent ngOnInit. \n          Make sure it is executed by calling super.ngOnInit() from component's ngOnInit manually`,\n        );\n      }\n    }, 3000);\n  }\n\n  ngOnInit() {\n    this.baseComponentInitRun = true;\n    this.layerDescriptor.next(this.hsLayerSelectorService.currentLayer);\n\n    this.hsLayerSelectorService.layerSelected\n      .pipe(\n        filter((layer) => !!layer),\n        takeUntilDestroyed(this.destroyRef),\n      )\n      .subscribe((layer) => {\n        this.layerDescriptor.next(layer);\n      });\n  }\n\n  isVisible(): boolean {\n    return true;\n  }\n}\n","import {Component, OnInit, inject} from '@angular/core';\nimport {filter, merge} from 'rxjs';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {HsDimensionDescriptor} from 'hslayers-ng/common/dimensions';\nimport {\n  HsDimensionService,\n  HsDimensionTimeService,\n} from 'hslayers-ng/services/get-capabilities';\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsLayerEditorWidgetBaseComponent} from '../widgets/layer-editor-widget-base.component';\nimport {HsMapService} from 'hslayers-ng/services/map';\nimport {isFunction} from 'hslayers-ng/services/utils';\nimport {getDimensions} from 'hslayers-ng/common/extensions';\n\n@Component({\n  selector: 'hs-layer-editor-dimensions',\n  templateUrl: './layer-editor-dimensions.component.html',\n  standalone: false,\n})\nexport class HsLayerEditorDimensionsComponent\n  extends HsLayerEditorWidgetBaseComponent\n  implements OnInit\n{\n  hsDimensionService = inject(HsDimensionService);\n  hsDimensionTimeService = inject(HsDimensionTimeService);\n  hsMapService = inject(HsMapService);\n  hsEventBusService = inject(HsEventBusService);\n\n  name = 'dimensions';\n  dimensions: Array<HsDimensionDescriptor> = [];\n\n  constructor() {\n    super();\n    merge(\n      this.hsEventBusService.layerDimensionDefinitionChanges.pipe(\n        filter((layer) => layer === this.olLayer),\n      ),\n      this.layerDescriptor,\n    )\n      .pipe(\n        filter((data) => !!data),\n        takeUntilDestroyed(),\n      )\n      .subscribe(() => {\n        this.updateDimensions();\n      });\n  }\n\n  updateDimensions(): void {\n    const layer = this.olLayer;\n    if (!layer) {\n      return;\n    }\n    this.dimensions = [];\n    const dimensions = getDimensions(layer);\n    if (dimensions && Object.entries(dimensions)) {\n      for (const [key, dimension] of <[any, any]>Object.entries(dimensions)) {\n        let available = true;\n        if (isFunction(dimension.availability)) {\n          available = dimension.availability(layer);\n        }\n        if (available) {\n          if (typeof dimension.values === 'string') {\n            dimension.values = this.hsDimensionTimeService.parseTimePoints(\n              dimension.values,\n            );\n          }\n          this.dimensions.push(new HsDimensionDescriptor(key, dimension));\n        }\n      }\n    }\n  }\n\n  dimensionIsTime(dimension: HsDimensionDescriptor): boolean {\n    const dimensions = getDimensions(this.olLayer);\n    const type = Object.keys(dimensions).find(\n      (key) => dimensions[key] === dimension,\n    );\n    // value of time.onlyInEditor used inversely here intentionally\n    // ( => replacement for inline time-editor)\n    return type === 'time' && dimensions.time?.onlyInEditor;\n  }\n}\n","@if (hsDimensionService.isLayerWithDimensions(olLayer)) {\n  <div>\n    <!-- TODO: Remove function call from template -->\n    <p style=\"text-align: center; font-weight: bold\">\n      {{'LAYERMANAGER.dimensions' | translate }}\n    </p>\n    @for (dimension of dimensions; track $index) {\n      <div class=\"form-inline\">\n        <label class=\"control-label\" style=\"width: 100%; justify-content: left\">{{dimension.label ||\n        dimension.name}}:</label>\n        @if (!dimension.type) {\n          <select class=\"form-control form-select\" style=\"width: 100%\" [(ngModel)]=\"dimension.modelValue\"\n            [ngModelOptions]=\"{standalone: true}\"\n            (change)=\"hsDimensionService.dimensionChanged(dimension)\">\n            @for (dimension_value of dimension.values; track dimension_value) {\n              <option [ngValue]=\"dimension_value\">\n                {{dimension_value}}\n              </option>\n            }\n          </select>\n        }\n        <!-- Time slider replaced by layermanger-time-editor component -->\n        <div class=\"form-group\" [hidden]=\"!dimensionIsTime(dimension)\">\n          <label>{{'COMMON.date' | translate }}</label>\n        </div>\n        @if (dimension.type === 'datetime' || dimension.type === 'date') {\n          <div class=\"input-group flex-fill\">\n            <input type=\"text\" style=\"width: 6.1em\" ngbDatepicker placeholder=\"YYYY-MM-DD\" #d=\"ngbDatepicker\"\n              [(ngModel)]=\"dimension.modelValue\" (dateSelect)=\"hsDimensionService.dimensionChanged(dimension)\"\n              [ngModelOptions]=\"{standalone: true}\" />\n            <button class=\"btn btn-outline-secondary\" (click)=\"d.toggle()\" type=\"button\">\n              <i class=\"fa-solid fa-calendar\"></i>\n            </button>\n          </div>\n        }\n        @if (dimension.type === 'datetime') {\n          <ngb-timepicker size=\"small\" [(ngModel)]=\"dimension.modelTimeValue\"\n            (ngModelChange)=\"hsDimensionService.dimensionChanged(dimension)\" [ngModelOptions]=\"{standalone: true}\">\n          </ngb-timepicker>\n        }\n      </div>\n    }\n  </div>\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n/**\n * Formats a shorthand date in a form YYYYMMDD into a full ISO form YYYY-MM-DD\n * If not used, the shorthand date is parsed as milliseconds in the DatePipe\n */\n@Pipe({\n  name: 'datePreformat',\n  standalone: true,\n})\nexport class DatePreformatPipe implements PipeTransform {\n  transform(value: string): string {\n    if (!value.includes('-') && value.length === 8) {\n      return `${value.slice(0, 4)}-${value.slice(4, 6)}-${value.slice(6, 8)}`;\n    }\n    return value;\n  }\n}\n","import {CommonModule, NgClass} from '@angular/common';\nimport {Component, Input, OnInit, ViewChild, inject} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {DatePreformatPipe} from './date-preformat.pipe';\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsDimensionTimeService} from 'hslayers-ng/services/get-capabilities';\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsLayerDescriptor} from 'hslayers-ng/types';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\n\n@Component({\n  selector: 'hs-layer-manager-time-editor',\n  templateUrl: 'layer-manager-time-editor.component.html',\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    NgClass,\n    DatePreformatPipe,\n    NgbTooltipModule,\n    FormsModule,\n  ],\n})\nexport class HsLayerManagerTimeEditorComponent implements OnInit {\n  hsEventBusService = inject(HsEventBusService);\n  hsDimensionTimeService = inject(HsDimensionTimeService);\n  hsLayoutService = inject(HsLayoutService);\n  hsConfig = inject(HsConfig);\n\n  @Input() layer: HsLayerDescriptor;\n\n  availableTimes: Array<string>;\n  availableTimesFetched = false;\n  /**\n   * ISO format time\n   */\n  currentTime: string;\n  currentTimeIdx: number;\n  hasPreviousTime = false;\n  hasFollowingTime = false;\n  @ViewChild('hstimeselector') selectElement;\n  selectVisible: boolean;\n  timeDisplayFormat = 'yyyy-MM-dd HH:mm:ss z';\n  timesInSync: boolean;\n\n  constructor() {\n    this.hsDimensionTimeService.layerTimeChanges\n      .pipe(takeUntilDestroyed())\n      .subscribe(({layer: layerDescriptor, time}) => {\n        if (this.layer.uid !== layerDescriptor.uid) {\n          return;\n        }\n        if (!this.availableTimes) {\n          this.fillAvailableTimes(layerDescriptor, time);\n        }\n        this.setCurrentTimeIfAvailable(time);\n      });\n\n    this.hsEventBusService.layerTimeSynchronizations\n      .pipe(takeUntilDestroyed())\n      .subscribe(({sync, time}) => {\n        this.timesInSync = sync;\n        if (sync) {\n          this.hideTimeSelect();\n          this.setCurrentTimeIfAvailable(time);\n          if (this.currentTime) {\n            this.setLayerTime();\n          }\n        }\n      });\n  }\n\n  ngOnInit(): void {\n    this.selectVisible = false;\n    this.timesInSync = false;\n    if (this.layer.time) {\n      this.fillAvailableTimes(this.layer, undefined);\n    }\n  }\n\n  /**\n   * Sets hasPreviousTime and hasFollowingTime properties\n   */\n  checkPrevFollowTimesAvailability(): boolean {\n    if (!this.availableTimes) {\n      return;\n    }\n    if (this.currentTimeIdx > 0) {\n      this.hasPreviousTime = true;\n    } else {\n      this.hasPreviousTime = false;\n    }\n    if (this.currentTimeIdx < this.availableTimes.length - 1) {\n      this.hasFollowingTime = true;\n    } else {\n      this.hasFollowingTime = false;\n    }\n  }\n\n  /**\n   * Handler for the \"prev\" button click\n   */\n  previousTime(): void {\n    if (!this.hasPreviousTime) {\n      return;\n    }\n    this.currentTime = this.availableTimes[--this.currentTimeIdx];\n    if (this.timesInSync) {\n      this.hsEventBusService.layerTimeSynchronizations.next({\n        sync: this.timesInSync,\n        time: this.currentTime,\n      });\n    }\n    this.setLayerTime();\n    this.checkPrevFollowTimesAvailability();\n  }\n\n  /**\n   * Handler for the \"next\" button click\n   */\n  followingTime(): void {\n    if (!this.hasFollowingTime) {\n      return;\n    }\n    this.currentTime = this.availableTimes[++this.currentTimeIdx];\n    if (this.timesInSync) {\n      this.hsEventBusService.layerTimeSynchronizations.next({\n        sync: this.timesInSync,\n        time: this.currentTime,\n      });\n    }\n    this.setLayerTime();\n    this.checkPrevFollowTimesAvailability();\n  }\n\n  /**\n   * Handler for a time selection from the SELECT element\n   */\n  selectTime(): void {\n    this.currentTimeIdx = this.availableTimes.indexOf(this.currentTime);\n    if (this.timesInSync) {\n      this.hsEventBusService.layerTimeSynchronizations.next({\n        sync: this.timesInSync,\n        time: this.currentTime,\n      });\n    }\n    this.setLayerTime();\n    this.checkPrevFollowTimesAvailability();\n  }\n\n  setCurrentTimeIfAvailable(time: string): void {\n    if (this.availableTimes.includes(time)) {\n      this.currentTime = time;\n      this.currentTimeIdx = this.availableTimes.indexOf(time);\n    } else {\n      this.currentTime = null;\n      this.currentTimeIdx = -1;\n    }\n    this.checkPrevFollowTimesAvailability();\n  }\n\n  /**\n   * Set selected 'time' on the layer object\n   */\n  setLayerTime(): void {\n    setTimeout(() => {\n      this.hsDimensionTimeService.setLayerTime(this.layer, this.currentTime);\n    }, 100);\n  }\n\n  showTimeSelect(): void {\n    this.selectVisible = true;\n    this.selectElement.nativeElement.focus(); //FIXME: this just refuse to work...\n  }\n\n  hideTimeSelect(): void {\n    this.selectVisible = false;\n  }\n\n  synchronizeTimes(): void {\n    this.timesInSync = !this.timesInSync;\n    this.hsEventBusService.layerTimeSynchronizations.next({\n      sync: this.timesInSync,\n      time: this.currentTime,\n    });\n  }\n\n  /**\n   * This gets called from subscriber and also OnInit because\n   * subscriber could have been set up after the event was broadcasted\n   */\n  private fillAvailableTimes(layer: HsLayerDescriptor, defaultTime: string) {\n    this.availableTimes = layer.time.timePoints;\n    this.setDateTimeFormatting();\n    this.setCurrentTimeIfAvailable(defaultTime ?? this.layer.time.default);\n    if (!this.currentTime && this.availableTimes.length > 0) {\n      this.currentTime = this.availableTimes[0];\n      this.currentTimeIdx = this.availableTimes.indexOf(this.currentTime);\n    }\n    this.availableTimesFetched = true;\n    this.checkPrevFollowTimesAvailability();\n  }\n\n  private setDateTimeFormatting() {\n    if (this.hsConfig.timeDisplayFormat) {\n      this.timeDisplayFormat = this.hsConfig.timeDisplayFormat;\n    } else if (\n      this.availableTimes.every((time) => time.endsWith('00-00T00:00:00.000Z'))\n    ) {\n      this.timeDisplayFormat = 'yyyy';\n    } else if (\n      this.availableTimes.every((time) => time.endsWith('00T00:00:00.000Z'))\n    ) {\n      this.timeDisplayFormat = 'yyyy-MM';\n    } else if (\n      this.availableTimes.every((time) => time.endsWith('00:00:00.000Z'))\n    ) {\n      this.timeDisplayFormat = 'yyyy-MM-dd';\n    } else if (this.availableTimes.every((time) => time.endsWith('00.000Z'))) {\n      this.timeDisplayFormat = 'y-MM-dd HH:mm';\n    } else if (this.availableTimes.every((time) => time.endsWith('000Z'))) {\n      this.timeDisplayFormat = 'y-MM-dd HH:mm:ss';\n    }\n  }\n}\n","<div class=\"p-0 flex-grow-1\">\n  <button type=\"button\" class=\"btn btn-sm text-info border-0\" (click)=\"previousTime()\" [disabled]=\"!hasPreviousTime\">\n    <i class=\"fa-solid fa-chevron-left\"></i>\n  </button>\n  @if (availableTimesFetched) {\n    <button class=\"hs-lm-time-editor-currentTime btn btn-sm text-info px-0\"\n      (click)=\"$event.preventDefault();showTimeSelect()\" [hidden]=\"selectVisible\"\n      >\n      @if (currentTime) {\n        <span>\n          {{currentTime | datePreformat | date:timeDisplayFormat:timeDisplayFormat}}\n        </span>\n      } @else {\n        <span class=\"bg-warning text-dark\" data-toggle=\"tooltip\" data-container=\"body\" data-placement=\"auto\"\n          [ngbTooltip]=\"'LAYERMANAGER.time.outOfRangeDescription' | translate  \"\n          [closeDelay]=\"hsConfig.layerTooltipDelay || 0\">\n          {{'LAYERMANAGER.time.outOfRange' | translate }}\n        </span>\n      }\n    </button>\n  } @else {\n    <div class=\"spinner-border spinner-border-sm text-info\" role=\"status\">\n      <span class=\"visually-hidden\">{{'COMMON.loading' | translate }}</span>\n      </div>&nbsp;<span class=\"text-muted\">{{'LAYERMANAGER.time.loading'| translate }}</span>\n  }\n  <select #hstimeselector [hidden]=\"!selectVisible\" [(ngModel)]=\"currentTime\" (change)=\"selectTime();hideTimeSelect();\"\n    (blur)=\"hideTimeSelect()\">\n    @for (time of availableTimes; track time) {\n      <option [ngValue]=\"time\">\n        {{time | datePreformat | date:timeDisplayFormat:timeDisplayFormat}}\n      </option>\n    }\n  </select>\n  <button type=\"button\" class=\"btn btn-sm text-info border-0\" (click)=\"followingTime()\" [disabled]=\"!hasFollowingTime\">\n    <i class=\"fa-solid fa-chevron-right\"></i>\n  </button>\n</div>\n<div class=\"p-0\">\n  <button type=\"button\" class=\"hs-timeSync-toggle btn px-0 py-md-1 py-2 me-1\"\n    [ngClass]=\"{'btn-info text-white': timesInSync, 'text-secondary': !timesInSync}\" (click)=\"synchronizeTimes()\"\n    [title]=\"'LAYERMANAGER.time.syncTimesTooltip' | translate  \">\n    <i class=\"fa-solid fa-clock-rotate-left\"></i>\n    <span class=\"visually-hidden\">{{'LAYERMANAGER.time.syncTimes' | translate }}</span>\n  </button>\n</div>\n","import {Component, ViewRef, inject} from '@angular/core';\n\nimport {\n  HsDialogComponent,\n  HsDialogContainerService,\n  HsDialogItem,\n} from 'hslayers-ng/common/dialogs';\n@Component({\n  selector: 'hs-copy-layer-dialog',\n  templateUrl: './copy-layer-dialog.component.html',\n  standalone: false,\n})\nexport class HsCopyLayerDialogComponent implements HsDialogComponent {\n  hsDialogContainerService = inject(HsDialogContainerService);\n\n  dialogItem: HsDialogItem;\n  viewRef: ViewRef;\n  data: {\n    title: string;\n    message: string;\n    layerTitle: string;\n  };\n\n  yes(): void {\n    this.hsDialogContainerService.destroy(this);\n    this.dialogItem.resolve({\n      confirmed: 'yes',\n      layerTitle: this.data.layerTitle,\n    });\n  }\n\n  no(): void {\n    this.hsDialogContainerService.destroy(this);\n    this.dialogItem.resolve('no');\n  }\n}\n","<div class=\"modal in\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n    <div class=\"modal-dialog\">\n        <div class=\"modal-content\">\n            <div class=\"modal-header\">\n                <h4 class=\"modal-title\">\n                    {{data.title | translate }} ?\n                </h4>\n                <button type=\"button\" (click)=\"no()\" class=\"btn-close\" data-dismiss=\"modal\"\n                    [attr.aria-label]=\"'COMMON.close' | translate\"></button>\n            </div>\n            <div class=\"modal-body\" style=\"overflow-y:auto\">\n                <p class=\"fw-bold h6\">{{data.message | translate }}</p>\n                <div class=\"form-floating m-2\">\n                    <input class=\"form-control\" name=\"title\" [(ngModel)]=\"data.layerTitle\"\n                        [placeholder]=\"'COMMON.title' | translate\" />\n                    <label for=\"title\" class=\"capabilities_label control-label\">{{'COMMON.title' | translate\n                        }}</label>\n                </div>\n            </div>\n            <div class=\"modal-footer\">\n                <button type=\"button\" class=\"btn btn-primary\" (click)=\"yes()\" [title]=\"'COMMON.yes' | translate\"\n                    data-dismiss=\"modal\">{{'COMMON.yes' |\n                    translate}}</button>\n                <button type=\"button\" class=\"btn btn-secondary compositions-btn-cancel\"\n                    [title]=\"'COMMON.no' | translate\" (click)=\"no()\" data-dismiss=\"modal\">{{'COMMON.no' |\n                    translate }}</button>\n            </div>\n        </div>\n    </div>\n</div>\n","import {Injectable, inject} from '@angular/core';\n\nimport {HsLayerDescriptor, HsSublayer, HsWmsLayer} from 'hslayers-ng/types';\nimport {HsLayerManagerVisibilityService} from 'hslayers-ng/services/layer-manager';\nimport {getCachedCapabilities} from 'hslayers-ng/common/extensions';\nimport {\n  getLayerParams,\n  isLayerArcgis,\n  updateLayerParams,\n} from 'hslayers-ng/services/utils';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class HsLayerEditorSublayerService {\n  private hsLayerManagerVisibilityService = inject(\n    HsLayerManagerVisibilityService,\n  );\n\n  layer: HsLayerDescriptor;\n  populatedLayers: Array<any> = [];\n  sublayers: HsSublayer[] = [];\n\n  getSubLayers(layer: HsLayerDescriptor): HsSublayer[] {\n    return layer ? this.populateSubLayers(layer) : [];\n  }\n\n  /**\n   * Converts HsWmsLayer to HsSublayer\n   */\n  mapWMSToLayerVisibility(\n    layers: HsWmsLayer[],\n    visible: boolean,\n  ): HsSublayer[] {\n    return layers.map((layer) => {\n      const mappedLayer: HsSublayer = {\n        name: layer.Name,\n        title: layer.Title,\n        visible: visible,\n        previousVisible: undefined,\n        maxResolution: layer.maxResolution,\n        // Recursively map sublayers if they exist\n        sublayers: layer.Layer\n          ? this.mapWMSToLayerVisibility(layer.Layer as HsWmsLayer[], visible)\n          : undefined,\n      };\n\n      return mappedLayer;\n    });\n  }\n\n  /**\n   * Populates the sublayers of a layer with the given layer descriptor.\n   */\n  populateSubLayers(lyr: HsLayerDescriptor): HsSublayer[] {\n    if (this.populatedLayers.includes(lyr.uid)) {\n      return lyr._sublayers;\n    }\n\n    const layer = lyr.layer;\n    const subLayers: HsWmsLayer[] = getCachedCapabilities(layer)?.Layer;\n\n    if (subLayers?.length > 0) {\n      const parsed = this.mapWMSToLayerVisibility(subLayers, lyr.visible);\n      this.populatedLayers.push(lyr.uid);\n      lyr._sublayers = parsed;\n      return parsed;\n    }\n  }\n\n  /**\n   * Constructs LAYERS param for layer visibility\n   */\n  constructLayersParam(layers: HsSublayer[]): string {\n    const getVisibleLayers = (layer: HsSublayer): string[] => {\n      if (!layer.visible) {\n        return [];\n      }\n      if (layer.sublayers?.length) {\n        const visibleSublayers = layer.sublayers.flatMap(getVisibleLayers);\n        return visibleSublayers.length === layer.sublayers.length\n          ? [layer.name]\n          : visibleSublayers;\n      }\n      return [layer.name];\n    };\n\n    return layers.flatMap(getVisibleLayers).join(',');\n  }\n\n  /**\n   * Handles the selection of a sublayer, updating the layer's visibility and parameters.\n   */\n  subLayerSelected(): void {\n    const layer = this.layer;\n    if (!layer) {\n      console.error('Trying to update sublayer on undefined layer');\n      return;\n    }\n    const params = getLayerParams(layer.layer);\n    params.LAYERS = this.constructLayersParam(layer._sublayers);\n\n    // Special handling for ArcGIS layers\n    if (isLayerArcgis(layer.layer)) {\n      params.LAYERS = `show:${params.LAYERS}`;\n    }\n\n    // If no sublayers are visible, update the overall layer visibility\n    if (params.LAYERS == '' || params.LAYERS == 'show:') {\n      this.hsLayerManagerVisibilityService.changeLayerVisibility(\n        !layer.visible,\n        layer,\n      );\n      return;\n    }\n\n    // If the layer was previously invisible, make it visible\n    if (layer.visible == false) {\n      this.hsLayerManagerVisibilityService.changeLayerVisibility(\n        !layer.visible,\n        layer,\n      );\n    }\n\n    // Update the layer parameters\n    updateLayerParams(layer.layer, params);\n  }\n}\n","import {Component, OnInit, computed, input, inject} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {NgClass} from '@angular/common';\n\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsLayerEditorSublayerService} from './layer-editor-sub-layer.service';\nimport {HsLayerManagerVisibilityService} from 'hslayers-ng/services/layer-manager';\nimport {HsSublayer} from 'hslayers-ng/types';\n\n@Component({\n  selector: 'hs-layer-editor-sub-layer-checkbox',\n  templateUrl: './layer-editor-sub-layer-checkboxes.component.html',\n  imports: [FormsModule, NgClass],\n})\nexport class HsLayerEditorSubLayerCheckboxesComponent implements OnInit {\n  private hsLayerEditorSublayerService = inject(HsLayerEditorSublayerService);\n  hsLayerManagerVisibilityService = inject(HsLayerManagerVisibilityService);\n  private hsConfig = inject(HsConfig);\n\n  parent = input<HsSublayer>();\n  subLayer = input.required<HsSublayer>();\n\n  getNestedLayers = computed(() => {\n    const wmsLayer = this.subLayer();\n    if (!wmsLayer || !wmsLayer.sublayers) {\n      return [];\n    }\n    return Array.isArray(wmsLayer.sublayers)\n      ? wmsLayer.sublayers\n      : [wmsLayer.sublayers];\n  });\n\n  app: string;\n  expanded = false;\n\n  ngOnInit() {\n    this.app = this.hsConfig.id;\n  }\n\n  subLayerIsString(subLayer: any): boolean {\n    return typeof subLayer == 'string';\n  }\n\n  toggleExpanded(): void {\n    this.expanded = !this.expanded;\n  }\n\n  /**\n   * Controls state of layer´s sublayers manipulated by input checkboxes\n   * @param sublayer - Selected sublayer\n   * @param state - New state of sublayer\n   */\n  subLayerSelected(sublayer: HsSublayer, parent?: HsSublayer) {\n    if (parent) {\n      parent.visible =\n        sublayer.visible || parent.sublayers.some((sl) => sl.visible);\n    }\n    if (sublayer.sublayers) {\n      sublayer.sublayers.forEach((sl) => {\n        sl.visible = sublayer.visible;\n      });\n    }\n    return this.hsLayerEditorSublayerService.subLayerSelected();\n  }\n}\n","@let sl = subLayer();\n<div class=\"d-flex m-auto sublayerContainer\">\n  <div class=\"w-100\">\n    <div class=\"d-flex\">\n      <div class=\"p-0 form-check form-check-inline\">\n        @if (!sl.sublayers) {\n        <input class=\"form-check-input\" type=\"checkbox\" [(ngModel)]=\"sl.visible\" name=\"sublayerWithoutNestedSublayers\"\n          (change)=\"subLayerSelected(sl, parent())\" [attr.id]=\"'hs-sublayers-' + sl.name + '-' + app \">\n        <div>\n          <label class=\"form-check-label m-0\" [ngClass]=\"{\n                'hs-checkmark':sl.visible,\n                'hs-uncheckmark':!sl.visible,\n                'grayed': (hsLayerManagerVisibilityService.currentResolution > sl.maxResolution) }\"\n            [attr.for]=\"'hs-sublayers-' + sl.name + '-' + app \">{{sl.title ||sl.name}}</label>\n        </div>\n        }\n        @else {\n        <input class=\"form-check-input\" type=\"checkbox\" [(ngModel)]=\"sl.visible\" name=\"sublayerWithNestedSublayers\"\n          (change)=\"subLayerSelected(sl, parent())\" [attr.id]=\"'hs-sublayers-' + sl.name + '-' + app \">\n        <div class=\"p-0 d-inline-flex flex-grow\">\n          <label class=\"form-check-label m-0\" [ngClass]=\"{'hs-checkmark':sl.visible,'hs-uncheckmark':!sl.visible}\"\n            [attr.for]=\"'hs-sublayers-' + sl.name + '-' + app \"></label>\n          <div (click)=\"toggleExpanded()\" style=\"cursor:pointer\"\n            [ngClass]=\"{'grayed': hsLayerManagerVisibilityService.currentResolution >= sl.maxResolution}\">\n            {{sl.title || sl.name}}\n            <button type=\"button\" class=\"btn btn-sm p-0\" style=\"font-size: 0.6rem;\">\n              <i class=\"fa-solid\" [ngClass]=\"expanded ? 'fa-chevron-down' : 'fa-chevron-right'\"></i>\n            </button>\n          </div>\n        </div>\n        <div class=\"mt-2 ms-3\" [hidden]=\"!expanded\">\n          @for (nestedLayer of getNestedLayers(); track nestedLayer) {\n          <hs-layer-editor-sub-layer-checkbox [subLayer]=\"nestedLayer\" [parent]=\"sl\">\n          </hs-layer-editor-sub-layer-checkbox>\n          }\n        </div>\n        }\n      </div>\n    </div>\n  </div>\n</div>","import {Component, computed, input, inject} from '@angular/core';\n\nimport {HsLayerDescriptor} from 'hslayers-ng/types';\nimport {HsLayerEditorSubLayerCheckboxesComponent} from './layer-editor-sub-layer-checkboxes.component';\nimport {HsLayerEditorSublayerService} from './layer-editor-sub-layer.service';\n\n@Component({\n  selector: 'hs-layer-editor-sublayers',\n  template: `\n    <div class=\"card-body py-2\">\n      @for (subLayer of subLayers(); track subLayer) {\n        <hs-layer-editor-sub-layer-checkbox [subLayer]=\"subLayer\">\n        </hs-layer-editor-sub-layer-checkbox>\n      }\n    </div>\n  `,\n  imports: [HsLayerEditorSubLayerCheckboxesComponent],\n})\nexport class HsLayerEditorSublayersComponent {\n  private hsLayerEditorSublayerService = inject(HsLayerEditorSublayerService);\n\n  layer = input.required<HsLayerDescriptor>();\n  subLayers = computed(() =>\n    this.hsLayerEditorSublayerService.getSubLayers(this.layer()),\n  );\n}\n","import {\n  ComponentRef,\n  Injectable,\n  Type,\n  ViewContainerRef,\n  inject,\n} from '@angular/core';\n\nimport {Layer} from 'ol/layer';\nimport {Source} from 'ol/source';\nimport {Subject, filter} from 'rxjs';\nimport {WMSCapabilities} from 'ol/format';\nimport {transformExtent} from 'ol/proj';\n\nimport {HS_PRMS, HsShareUrlService} from 'hslayers-ng/services/share';\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsLayerDescriptor} from 'hslayers-ng/types';\nimport {HsLayerEditorComponent} from './layer-editor.component';\nimport {HsLayerEditorSublayerService} from './sublayers/layer-editor-sub-layer.service';\nimport {HsLayerEditorSublayersComponent} from './sublayers/layer-editor-sublayers.component';\nimport {\n  HsLayerEditorVectorLayerService,\n  HsLayerManagerMetadataService,\n  HsLayerSelectorService,\n} from 'hslayers-ng/services/layer-manager';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\nimport {\n  HsLegendDescriptor,\n  HsLegendService,\n} from 'hslayers-ng/components/legend';\nimport {HsMapService} from 'hslayers-ng/services/map';\nimport {HsWmsGetCapabilitiesService} from 'hslayers-ng/services/get-capabilities';\nimport {\n  getCachedCapabilities,\n  getCluster,\n  getInlineLegend,\n  getQueryCapabilities,\n  getWmsOriginalExtent,\n  setCluster,\n} from 'hslayers-ng/common/extensions';\nimport {\n  getLayerParams,\n  isLayerWMS,\n  isLayerVectorLayer,\n  getURL,\n} from 'hslayers-ng/services/utils';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class HsLayerEditorService {\n  private hsMapService = inject(HsMapService);\n  private hsWmsGetCapabilitiesService = inject(HsWmsGetCapabilitiesService);\n  private hsLayerEditorVectorLayerService = inject(\n    HsLayerEditorVectorLayerService,\n  );\n  private hsEventBusService = inject(HsEventBusService);\n  private hsLayoutService = inject(HsLayoutService);\n  private hsLegendService = inject(HsLegendService);\n  private hsLayerSelectorService = inject(HsLayerSelectorService);\n  private hsLayerManagerMetadataService = inject(HsLayerManagerMetadataService);\n  private hsLayerEditorSublayerService = inject(HsLayerEditorSublayerService);\n  private hsShareUrlService = inject(HsShareUrlService);\n\n  legendDescriptor: HsLegendDescriptor;\n\n  layerTitleChange: Subject<{\n    newTitle: string;\n    oldTitle: string;\n    layer: Layer<Source>;\n  }> = new Subject();\n\n  editorComponent: ComponentRef<HsLayerEditorComponent>;\n\n  sublayerEditorComponent: ComponentRef<HsLayerEditorSublayersComponent>;\n\n  constructor() {\n    this.hsLayerSelectorService.layerSelected\n      .pipe(filter((layer) => !!layer))\n      .subscribe(async (layer) => {\n        this.legendDescriptor =\n          await this.hsLegendService.getLayerLegendDescriptor(layer.layer);\n      });\n  }\n\n  /**\n   * Create layer editor component for settings\n   * @param vcr - View container reference\n   * @param layer - Layer\n   */\n  createLayerEditor(\n    vcr: ViewContainerRef,\n    layer: HsLayerDescriptor,\n  ): ComponentRef<HsLayerEditorComponent> | undefined {\n    return this.createEditor(vcr, layer, 'settings', HsLayerEditorComponent);\n  }\n\n  /**\n   * Create layer editor component for sublayers\n   * @param vcr - View container reference\n   * @param layer - Layer\n   */\n  createSublayerEditor(\n    vcr: ViewContainerRef,\n    layer: HsLayerDescriptor,\n  ): ComponentRef<HsLayerEditorSublayersComponent> | undefined {\n    return this.createEditor(\n      vcr,\n      layer,\n      'sublayers',\n      HsLayerEditorSublayersComponent,\n    );\n  }\n\n  /**\n   * Generic method to create an editor component\n   * @param vcr - View container reference\n   * @param layer - Layer\n   * @param type - Type of editor ('settings' or 'sublayers')\n   * @param componentType - Component type to create\n   */\n  private createEditor<T>(\n    vcr: ViewContainerRef,\n    layer: HsLayerDescriptor,\n    type: 'settings' | 'sublayers',\n    componentType: Type<T>,\n  ): ComponentRef<T> | undefined {\n    const currentComponent =\n      type === 'settings' ? this.editorComponent : this.sublayerEditorComponent;\n    if (currentComponent) {\n      currentComponent.destroy();\n    }\n    vcr.clear();\n\n    const shouldCreateEditor = this.toggleLayerEditor(layer, type);\n\n    if (shouldCreateEditor) {\n      const component = vcr.createComponent(componentType);\n      component.setInput('layer', layer);\n\n      if (type === 'settings') {\n        this.editorComponent =\n          component as ComponentRef<HsLayerEditorComponent>;\n      } else {\n        this.sublayerEditorComponent =\n          component as ComponentRef<HsLayerEditorSublayersComponent>;\n      }\n\n      return component;\n    }\n    return undefined;\n  }\n\n  /**\n   * Toggles layer editor for current layer.\n   * @param layer - Selected layer\n   * @param toToggle - Part of layer editor to be toggled ('sublayers' or 'settings')\n   * @returns Boolean indicating whether the editor should be created\n   */\n  toggleLayerEditor(\n    layer: HsLayerDescriptor,\n    toToggle: 'sublayers' | 'settings',\n  ): boolean {\n    if (\n      !getCachedCapabilities(layer.layer) &&\n      getQueryCapabilities(layer.layer) !== false\n    ) {\n      this.hsLayerManagerMetadataService.fillMetadata(layer);\n    }\n\n    if (toToggle === 'sublayers' && !layer.hasSublayers) {\n      return false;\n    }\n\n    if (toToggle === 'settings') {\n      if (this.hsLayerSelectorService.currentLayer !== layer) {\n        this.setCurrentLayer(layer);\n        layer.settings = true;\n        return true;\n      }\n      layer.settings = !layer.settings;\n      this.setCurrentLayer(undefined);\n      return false;\n    }\n    const currentLayer = this.hsLayerEditorSublayerService.layer;\n\n    if (currentLayer === layer) {\n      // If the same layer is clicked again, deselect it\n      this.hsLayerEditorSublayerService.layer = null;\n      layer.sublayers = false;\n    } else {\n      // If a different layer is clicked\n      if (currentLayer) {\n        // Deselect the previously selected layer, if any\n        currentLayer.sublayers = false;\n      }\n      // Select the new layer\n      this.hsLayerEditorSublayerService.layer = layer;\n      layer.sublayers = true;\n    }\n\n    // Return the final state of layer.sublayers\n    return layer.sublayers;\n  }\n\n  /**\n   * Updates the current layer and its title in the URL\n   * @param layer - The layer to set as current or undefined to remove the current layer\n   */\n  setCurrentLayer(layer: HsLayerDescriptor | undefined): void {\n    this.updateGetParam(layer?.title);\n    this.hsLayerSelectorService.select(layer);\n  }\n\n  private updateGetParam(title: string | undefined) {\n    const t = {};\n    t[HS_PRMS.layerSelected] = title;\n    this.hsShareUrlService.updateCustomParams(t);\n  }\n\n  /**\n   * Zoom to selected layer (layer extent). Get extent\n   * from bounding box property, getExtent() function or from\n   * BoundingBox property of GetCapabilities request (for WMS layer)\n   * @param layer - OpenLayers layer to zoom to\n   */\n  async zoomToLayer(layer: Layer<Source>): Promise<boolean> {\n    let extent = null;\n    if (layer.getExtent()) {\n      extent = layer.getExtent();\n    } else if ((<any>layer.getSource()).getExtent != undefined) {\n      extent = (<any>layer.getSource()).getExtent();\n    } else if (getWmsOriginalExtent(layer)) {\n      extent = getWmsOriginalExtent(layer);\n    }\n    if (extent) {\n      this.fitIfExtentSet(extent, layer);\n      return true;\n    }\n    if (extent === null && isLayerWMS(layer)) {\n      /**\n       * NOTE:\n       * Used when 'queryCapabilities' is set to false on layer. Otherwise set when parsing capabilities\n       */\n      const url = getURL(layer);\n      const wrapper = await this.hsWmsGetCapabilitiesService.request(url);\n      const parser = new WMSCapabilities();\n      const caps = parser.read(wrapper.response);\n      if (Array.isArray(caps.Capability.Layer.Layer)) {\n        const layers = getLayerParams(layer)?.LAYERS;\n        const foundDefs = caps.Capability.Layer.Layer.map((lyr) =>\n          this.hsLayerManagerMetadataService.identifyLayerObject(layers, lyr),\n        ).filter((item) => item);\n        const foundDef = foundDefs.length > 0 ? foundDefs[0] : null;\n        if (foundDef) {\n          extent = foundDef.EX_GeographicBoundingBox || foundDef.BoundingBox;\n          this.fitIfExtentSet(this.transformToCurrentProj(extent), layer);\n          return true;\n        }\n      } else if (typeof caps.Capability.Layer == 'object') {\n        extent =\n          caps.Capability.Layer.EX_GeographicBoundingBox ||\n          caps.Capability.Layer.BoundingBox;\n        this.fitIfExtentSet(this.transformToCurrentProj(extent), layer);\n        return true;\n      } else {\n        return false;\n      }\n    }\n  }\n\n  /**\n   * Set cluster for layer\n   * @param layer - Layer\n   * @param newValue - To cluster or not to cluster\n   * @param distance - Distance in pixels\n   * @returns Current cluster state\n   */\n  cluster(layer: Layer<Source>, newValue: boolean, distance: number): boolean {\n    if (layer == undefined) {\n      return;\n    }\n    if (newValue != undefined) {\n      setCluster(layer, newValue);\n      this.hsLayerEditorVectorLayerService.cluster(\n        newValue,\n        layer,\n        distance,\n        !this.hsLayerEditorVectorLayerService.layersClusteredFromStart.includes(\n          layer,\n        ),\n      );\n      this.hsEventBusService.compositionEdits.next();\n    } else {\n      return getCluster(layer);\n    }\n  }\n\n  /**\n   * @typedef {Array<number>} Extent\n   * @param {Extent} extent - Extent in EPSG:4326\n   */\n  fitIfExtentSet(extent: number[], layer: Layer<Source>): void {\n    if (extent !== null) {\n      //no Extent + originalExtent = ignoring extent\n      if (!(!layer.getExtent() && getWmsOriginalExtent(layer))) {\n        layer.setExtent(extent);\n      }\n      this.hsMapService.fitExtent(extent);\n    }\n  }\n\n  transformToCurrentProj(extent: number[]): number[] {\n    return transformExtent(\n      extent,\n      'EPSG:4326',\n      this.hsMapService.getCurrentProj(),\n    );\n  }\n\n  legendVisible(): boolean {\n    const legendDescriptor = this.legendDescriptor;\n    return (\n      this.hsLegendService.legendValid(legendDescriptor) &&\n      (getInlineLegend(legendDescriptor.lyr) ||\n        !this.hsLayoutService.panelEnabled('legend'))\n    );\n  }\n\n  /**\n   * Test if layer is Vector layer\n   * @param layer - Selected layer\n   */\n  isLayerVectorLayer(layer: Layer<Source>): boolean {\n    return isLayerVectorLayer(layer);\n  }\n}\n","import {HsPanelContainerService} from 'hslayers-ng/services/panels';\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class HsLayerEditorWidgetContainerService extends HsPanelContainerService {\n  constructor() {\n    super();\n  }\n}\n","import {Component, Input, ViewRef, inject} from '@angular/core';\n\nimport {\n  HsDialogComponent,\n  HsDialogContainerService,\n} from 'hslayers-ng/common/dialogs';\nimport {HsDrawService} from 'hslayers-ng/services/draw';\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsMapService} from 'hslayers-ng/services/map';\n\n@Component({\n  selector: 'hs-layermanager-remove-layer-dialog',\n  templateUrl: './remove-layer-dialog.component.html',\n  standalone: false,\n})\nexport class HsLayerManagerRemoveLayerDialogComponent\n  implements HsDialogComponent\n{\n  hsDialogContainerService = inject(HsDialogContainerService);\n  hsEventBusService = inject(HsEventBusService);\n  hsDrawService = inject(HsDrawService);\n  hsMapService = inject(HsMapService);\n\n  @Input() data: any;\n  viewRef: ViewRef;\n\n  removeLayer(): void {\n    if (this.hsDrawService.selectedLayer == this.data.olLayer) {\n      this.hsDrawService.selectedLayer = null;\n    }\n    this.hsMapService.getMap().removeLayer(this.data.olLayer);\n    this.hsDrawService.fillDrawableLayers();\n\n    this.hsEventBusService.layerManagerUpdates.next(null);\n    this.close();\n  }\n\n  close(): void {\n    this.hsDialogContainerService.destroy(this);\n  }\n}\n","<div class=\"modal hs-remove-layer-dialog in\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n  <div class=\"modal-dialog\">\n    <div class=\"modal-content\">\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title\">\n          {{'PANEL_HEADER.LM' | translate }}\n        </h4>\n        <button (click)=\"close()\" class=\"btn-close\" data-dismiss=\"modal\"\n          [attr.aria-label]=\"'COMMON.close' | translate \">\n        </button>\n      </div>\n      <div class=\"modal-body\" style=\"max-height:600px; overflow-y:auto\">\n        {{'LAYERMANAGER.dialogRemoveLayer.dialogMessage' | translate }}</div>\n      <div class=\"modal-footer\">\n        <button class=\"btn btn-primary\" (click)=\"removeLayer();\" data-dismiss=\"modal\">{{'COMMON.removeLayer' |\n          translate }}</button>\n        <button class=\"btn btn-secondary\" (click)=\"close()\" data-dismiss=\"modal\">{{'COMMON.no' | translate}}</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import {Component, OnInit, inject} from '@angular/core';\n\nimport {Cluster} from 'ol/source';\nimport {Feature} from 'ol';\n\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsLayerEditorService} from '../editor/layer-editor.service';\nimport {HsLayerEditorWidgetBaseComponent} from './layer-editor-widget-base.component';\n\n@Component({\n  selector: 'hs-cluster-widget',\n  templateUrl: './cluster-widget.component.html',\n  styleUrls: ['./layer-editor-widgets.component.scss'],\n  styles: [\n    `\n      .hs-cluster-distance .badge {\n        font-size: 0.75rem;\n        padding: 0.25rem 0.5rem;\n        min-width: 2.5rem;\n        text-align: center;\n      }\n\n      .hs-cluster-distance .form-range {\n        cursor: pointer;\n      }\n\n      .hs-cluster-distance .form-range::-webkit-slider-thumb {\n        transition: all 0.2s ease;\n      }\n\n      .hs-cluster-distance .form-range::-moz-range-thumb {\n        transition: all 0.2s ease;\n      }\n\n      .hs-cluster-distance .form-range:hover::-webkit-slider-thumb {\n        transform: scale(1.1);\n      }\n\n      .hs-cluster-distance .form-range:hover::-moz-range-thumb {\n        transform: scale(1.1);\n      }\n    `,\n  ],\n  standalone: false,\n})\nexport class HsClusterWidgetComponent\n  extends HsLayerEditorWidgetBaseComponent\n  implements OnInit\n{\n  private hsLayerEditorService = inject(HsLayerEditorService);\n  private hsConfig = inject(HsConfig);\n\n  name = 'cluster-widget';\n  distance = {\n    value: 40,\n  };\n\n  ngOnInit() {\n    /* Call super ngOnInit manually as it's getting overridden by local one */\n    super.ngOnInit();\n    this.distance.value = this.setClusteringDistanceFromConfig();\n  }\n\n  /**\n   * Set cluster for layer\n   * @param newValue - To cluster or not to cluster\n   */\n  set cluster(newValue: boolean) {\n    if (!this.layerDescriptor) {\n      return;\n    }\n    this.hsLayerEditorService.cluster(\n      this.olLayer,\n      newValue,\n      this.distance.value,\n    );\n  }\n\n  /**\n   * @returns Current cluster state\n   */\n  get cluster(): boolean | undefined {\n    if (!this.layerDescriptor) {\n      return;\n    }\n    return this.hsLayerEditorService.cluster(\n      this.olLayer,\n      undefined,\n      this.distance.value,\n    );\n  }\n\n  /**\n   * Set distance between cluster features;\n   */\n  changeDistance(): void {\n    if (!this.layerDescriptor) {\n      return;\n    }\n    const layer = this.olLayer;\n    const src = layer.getSource() as Cluster<Feature>;\n    if (src.setDistance == undefined) {\n      return;\n    }\n    src.setDistance(this.distance.value);\n  }\n\n  /**\n   * Test if layer is WMS layer\n   */\n  isVectorLayer(): boolean | undefined {\n    if (!this.layerDescriptor) {\n      return;\n    }\n    const layer = this.olLayer;\n    if (!this.hsLayerEditorService.isLayerVectorLayer(layer)) {\n      return;\n    }\n    return true;\n  }\n\n  /**\n   * Parse initial cluster distance value\n   */\n  private setClusteringDistanceFromConfig(): number {\n    const distance = this.hsConfig.clusteringDistance ?? this.distance.value;\n    return distance > 100 ? 100 : distance;\n  }\n}\n","@if (isVectorLayer()) {\n<div class=\"hs-widget-cluster\">\n  <div class=\"hs-widget-header\">\n    <div class=\"form-check\">\n      <input name=\"layer-cluster\" class=\"form-check-input\" type=\"checkbox\" [(ngModel)]=\"cluster\"\n        [id]=\"'cluster-toggle-' + name\" />\n      <label class=\"form-check-label\" [for]=\"'cluster-toggle-' + name\">\n        {{ \"LAYERMANAGER.layerEditor.cluster\" | translate }}\n      </label>\n    </div>\n  </div>\n\n  @if (cluster) {\n  <div class=\"hs-widget-content\">\n    <div class=\"hs-cluster-distance\">\n      <div class=\"d-flex justify-content-between align-items-center mb-1\">\n        <label class=\"small text-muted mb-0\">{{ \"COMMON.distance\" | translate }}</label>\n        <span class=\"badge bg-primary\">{{ distance.value }}</span>\n      </div>\n      <input name=\"layer-cluster-distance\" type=\"range\" min=\"0\" max=\"100\" step=\"1\" [(ngModel)]=\"distance.value\"\n        (change)=\"changeDistance()\" class=\"form-range\" />\n    </div>\n  </div>\n  }\n</div>\n}","import {Component} from '@angular/core';\nimport {Observable, map} from 'rxjs';\n\nimport {HsLayerEditorWidgetBaseComponent} from '../layer-editor-widget-base.component';\nimport {\n  getWmsOriginalExtent,\n  setWmsOriginalExtent,\n} from 'hslayers-ng/common/extensions';\nimport {getLayerParams, isLayerWMS} from 'hslayers-ng/services/utils';\n\n@Component({\n  selector: 'hs-extent-widget',\n  templateUrl: './extent-widget.component.html',\n  styleUrls: ['../layer-editor-widgets.component.scss'],\n  styles: [\n    `\n      .hs-widget-extent .form-check {\n        display: flex;\n        align-items: center;\n      }\n\n      .hs-widget-extent .form-check .fa-circle-info {\n        cursor: help;\n        font-size: 0.875rem;\n        opacity: 0.6;\n        transition: opacity 0.2s ease;\n      }\n\n      .hs-widget-extent .form-check .fa-circle-info:hover {\n        opacity: 1;\n      }\n    `,\n  ],\n  standalone: false,\n})\nexport class HsExtentWidgetComponent extends HsLayerEditorWidgetBaseComponent {\n  name = 'extent-widget';\n  ignoreExtent: boolean;\n  isEnabled: Observable<boolean>;\n\n  constructor() {\n    super();\n    this.isEnabled = this.layerDescriptor.pipe(\n      map((l) => {\n        const originalExtent = getWmsOriginalExtent(l.layer);\n        const isAllowed = originalExtent ?? isLayerWMS(l.layer);\n        if (isAllowed) {\n          const extent = l.layer.getExtent();\n          /**\n           * Init with true only if no Extent + originalExtent (extent has been ignored by user before)\n           */\n          this.ignoreExtent = !extent && !!originalExtent;\n          if (!originalExtent) {\n            setWmsOriginalExtent(l.layer, extent);\n          }\n          /**\n           * Show widget if extent or originalExtent is available\n           */\n          return !!originalExtent || !!extent;\n        }\n        return false;\n      }),\n    );\n  }\n\n  toggleIgnoreExtent(): void {\n    this.ignoreExtent = !this.ignoreExtent;\n    this.olLayer.setExtent(\n      this.ignoreExtent ? undefined : getWmsOriginalExtent(this.olLayer),\n    );\n    const params = getLayerParams(this.olLayer);\n    this.olLayer\n      .getSource()\n      ['updateParams']({...params, ignoreExtent: this.ignoreExtent});\n  }\n}\n","@if (isEnabled | async) {\n<div class=\"hs-widget-extent\">\n  <div class=\"hs-widget-header\">\n    <div class=\"form-check\">\n      <input id=\"hs-layer-extent-toggle\" name=\"layer-extent-toggle\" class=\"form-check-input\" type=\"checkbox\"\n        (change)=\"toggleIgnoreExtent()\" [checked]=\"ignoreExtent\" />\n      <label for=\"hs-layer-extent-toggle\" class=\"form-check-label\">\n        {{ \"LAYERMANAGER.layerEditor.ignoreExtent\" | translate }}\n      </label>\n      <i class=\"fa-solid fa-circle-info ms-2 text-muted\"\n        [title]=\"'LAYERMANAGER.layerEditor.ignoreExtentInfo' | translate\" (click)=\"$event.stopPropagation()\"></i>\n    </div>\n  </div>\n</div>\n}","import {Component, OnInit, inject} from '@angular/core';\n\nimport colorScales from 'colormap/colorScale';\nimport {Feature} from 'ol';\nimport {Vector as VectorSource} from 'ol/source';\n\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsLanguageService} from 'hslayers-ng/services/language';\nimport {HsLayerEditorWidgetBaseComponent} from './layer-editor-widget-base.component';\nimport {instOf, listNumericAttributes} from 'hslayers-ng/services/utils';\nimport {InterpolatedSource} from 'hslayers-ng/common/layers';\n\n@Component({\n  selector: 'hs-idw-widget',\n  templateUrl: './idw-widget.component.html',\n  styleUrls: ['./layer-editor-widgets.component.scss'],\n  styles: [\n    `\n      .hs-widget-idw .form-label {\n        font-size: 0.8125rem;\n        font-weight: 500;\n      }\n\n      .hs-widget-idw .form-select-sm,\n      .hs-widget-idw .form-control-sm {\n        font-size: 0.8125rem;\n      }\n\n      .hs-widget-idw hs-colormap-picker {\n        display: block;\n        width: 100%;\n      }\n\n      .hs-widget-idw .row .col-6 {\n        padding-left: 0.25rem;\n        padding-right: 0.25rem;\n      }\n\n      .hs-widget-idw .row .col-6:first-child {\n        padding-left: 0.75rem;\n      }\n\n      .hs-widget-idw .row .col-6:last-child {\n        padding-right: 0.75rem;\n      }\n    `,\n  ],\n  standalone: false,\n})\n/**\n * A widget to configure IDW interpolated layer attribute being\n * interpolated, color scheme used and range of values supported.\n */\nexport class HsIdwWidgetComponent\n  extends HsLayerEditorWidgetBaseComponent\n  implements OnInit\n{\n  hsLanguageService = inject(HsLanguageService);\n  hsConfig = inject(HsConfig);\n\n  weightAttribute: string;\n  attributes: string[];\n  name = 'idw-widget';\n  colorMaps = Object.keys(colorScales);\n  colorMap: string;\n  reversed: boolean;\n  min: number | string = '';\n  max: number | string = '';\n\n  ngOnInit(): void {\n    super.ngOnInit();\n    if (!instOf(this.olLayer.getSource(), InterpolatedSource)) {\n      return;\n    }\n    this.fillAttributes();\n    this.fillColorMapValue();\n  }\n\n  /**\n   * Sets colorMap variable value if predefined colorMap is used\n   */\n  fillColorMapValue() {\n    const srcAsIDW = this.getIdwSource();\n    const colorMap = srcAsIDW.options.colorMap;\n    if (typeof colorMap === 'string') {\n      this.reversed = colorMap.includes('-reverse');\n      this.colorMap = this.reversed ? colorMap.split('-')[0] : colorMap;\n    }\n  }\n\n  /**\n   * Get possible attributes from first feature which might be used for interpolation.\n   * If no features exist, wait for them.\n   */\n  fillAttributes() {\n    const srcAsIDW = this.getIdwSource();\n    const underSource = srcAsIDW.featureCache as VectorSource;\n    const features = underSource.getFeatures();\n    this.attributes = this.listNumericAttributes(features);\n    if (this.attributes.length == 0) {\n      underSource.once('change', () => this.fillAttributes());\n    }\n    this.weightAttribute = srcAsIDW.weight;\n  }\n\n  listNumericAttributes(features: Feature[]): string[] {\n    return listNumericAttributes(features);\n  }\n\n  getIdwSource(): InterpolatedSource {\n    const srcAsAny = this.olLayer.getSource() as any;\n    const srcAsIDW = srcAsAny as InterpolatedSource;\n    return srcAsIDW;\n  }\n\n  setWeight(): void {\n    const srcAsIDW = this.getIdwSource();\n    srcAsIDW.weight = this.weightAttribute;\n  }\n\n  setBounds(): void {\n    const srcAsIDW = this.getIdwSource();\n    srcAsIDW.min = this.min == '' ? undefined : parseFloat(this.min.toString());\n    srcAsIDW.max = this.max == '' ? undefined : parseFloat(this.max.toString());\n  }\n\n  setColorMap(): void {\n    const srcAsIDW = this.getIdwSource();\n    srcAsIDW.colorMap = this.reversed\n      ? `${this.colorMap}-reverse`\n      : this.colorMap;\n  }\n}\n","@if ((layerDescriptor | async).type === 'IDW') {\n<div class=\"hs-widget-idw\">\n  <div class=\"hs-widget-header-title\">\n    <i class=\"fa-solid fa-chart-area me-2\"></i>\n    <span>{{ \"LAYERMANAGER.layerEditor.interpolatedAttribute\" | translate }}</span>\n  </div>\n  \n  <div class=\"hs-widget-content-simple\">\n    <div class=\"mb-3\">\n      <label class=\"form-label small text-muted mb-1\">\n        {{ \"LAYERMANAGER.layerEditor.interpolatedAttribute\" | translate }}\n      </label>\n      <select \n        class=\"form-control form-select form-select-sm\" \n        [(ngModel)]=\"weightAttribute\"\n        name=\"hs-idw-widget-interpolated-attribute\" \n        (change)=\"setWeight()\"\n      >\n        @for (attr of attributes; track attr) {\n        <option [ngValue]=\"attr\">{{ attr }}</option>\n        }\n      </select>\n    </div>\n\n    <div class=\"mb-3\">\n      <hs-colormap-picker \n        (change)=\"setColorMap()\" \n        [height]=\"'30vh'\" \n        [(ngModel)]=\"colorMap\"\n        [colorMaps]=\"colorMaps\"\n      />\n    </div>\n\n    <div class=\"form-check mb-3\">\n      <input \n        class=\"form-check-input\" \n        type=\"checkbox\" \n        (change)=\"setColorMap()\" \n        [(ngModel)]=\"reversed\"\n        [id]=\"'hs-idw-widget-reversed' + hsConfig.id\"\n      />\n      <label class=\"form-check-label\" [for]=\"'hs-idw-widget-reversed' + hsConfig.id\">\n        {{ \"COMMON.reversed\" | translate }}\n      </label>\n    </div>\n\n    <div class=\"row g-2\">\n      <div class=\"col-6\">\n        <label class=\"form-label small text-muted mb-1\" for=\"hsIdwMin\">\n          {{ \"LAYERMANAGER.layerEditor.min\" | translate }}\n        </label>\n        <input \n          class=\"form-control form-control-sm\" \n          (change)=\"setBounds()\" \n          [(ngModel)]=\"min\" \n          name=\"hsIdwMin\" \n          id=\"hsIdwMin\" \n        />\n      </div>\n      <div class=\"col-6\">\n        <label class=\"form-label small text-muted mb-1\" for=\"hsIdwMax\">\n          {{ \"LAYERMANAGER.layerEditor.max\" | translate }}\n        </label>\n        <input \n          class=\"form-control form-control-sm\" \n          (change)=\"setBounds()\" \n          [(ngModel)]=\"max\" \n          name=\"hsIdwMax\" \n          id=\"hsIdwMax\" \n        />\n      </div>\n    </div>\n  </div>\n</div>\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  ElementRef,\n  OnInit,\n  QueryList,\n  Signal,\n  ViewChild,\n  ViewChildren,\n  ViewRef,\n  computed,\n  inject,\n} from '@angular/core';\nimport {FormControl, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {NgbDropdownModule} from '@ng-bootstrap/ng-bootstrap';\nimport {Observable, debounceTime, filter, fromEvent} from 'rxjs';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {Layer} from 'ol/layer';\n\nimport {HsLanguageService} from 'hslayers-ng/services/language';\n\nimport {\n  HsDialogComponent,\n  HsDialogContainerService,\n  HsDialogItem,\n} from 'hslayers-ng/common/dialogs';\nimport {\n  HsLayerManagerFolderService,\n  HsLayerManagerService,\n} from 'hslayers-ng/services/layer-manager';\nimport {getPath} from 'hslayers-ng/common/extensions';\n\n@Component({\n  selector: 'hs-layer-folder-widget-dialog',\n  imports: [TranslatePipe, ReactiveFormsModule, NgbDropdownModule],\n  templateUrl: './layer-folder-dialog.component.html',\n  styles: `\n    .hs-folder-widget-dialog-list * {\n      cursor: pointer;\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LayerFolderWidgetDialogComponent\n  implements HsDialogComponent, OnInit, AfterViewInit\n{\n  data: {\n    layer: Layer;\n  };\n\n  viewRef: ViewRef;\n  dialogItem: HsDialogItem;\n\n  hsLayermanagerService = inject(HsLayerManagerService);\n  folderService = inject(HsLayerManagerFolderService);\n  languageService = inject(HsLanguageService);\n  hsDialogContainerService = inject(HsDialogContainerService);\n  destroyRef = inject(DestroyRef);\n\n  @ViewChild('pathInput', {static: false}) pathInput: ElementRef;\n  @ViewChildren('pathRadio') pathRadios: QueryList<ElementRef>;\n\n  isEnabled: Observable<boolean>;\n\n  pathControl = new FormControl('', [\n    Validators.required,\n    Validators.minLength(1),\n  ]);\n  availableFolders: Signal<string[]>;\n\n  constructor() {}\n\n  ngOnInit(): void {\n    this.availableFolders = computed(() => {\n      const folders = this.hsLayermanagerService.data.folders();\n      return [...folders.entries()].reduce((acc, [key, value]) => {\n        return key !== getPath(this.data.layer) ? [...acc, key] : acc;\n      }, []);\n    });\n\n    this.pathControl.valueChanges\n      .pipe(\n        takeUntilDestroyed(this.destroyRef),\n        filter((v) => this.availableFolders().includes(v)),\n      )\n      .subscribe((val) => {\n        this.pathInput.nativeElement.value = null;\n      });\n  }\n\n  ngAfterViewInit() {\n    fromEvent(this.pathInput.nativeElement, 'input')\n      .pipe(takeUntilDestroyed(this.destroyRef), debounceTime(250))\n      .subscribe((input) => {\n        this.pathRadios.forEach((r) => (r.nativeElement.checked = false));\n      });\n  }\n\n  yes(): void {\n    this.hsDialogContainerService.destroy(this);\n    this.dialogItem.resolve(this.pathControl.valid ? this.pathControl : false);\n  }\n\n  no(): void {\n    this.hsDialogContainerService.destroy(this);\n    this.dialogItem.resolve(false);\n  }\n}\n","<div class=\"modal in\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n    <div class=\"modal-dialog\">\n        <div class=\"modal-content\">\n            <div class=\"modal-header\">\n                <h4 class=\"modal-title d-flex\">\n                    {{'LAYERMANAGER.layerEditor.pickOrCreate' | translate}}\n                </h4>\n                <button type=\"button\" (click)=\"no()\" class=\"btn-close\" data-dismiss=\"modal\"\n                    [attr.aria-label]=\"'COMMON.close' | translate \"></button>\n            </div>\n            <div class=\"modal-body d-flex flex-column align-items-center m-auto my-2\">\n                @for(folder of availableFolders(); track $index)\n                {\n                <div class=\"hs-folder-widget-dialog-list form-check mx-2 d-flex gap-2 align-items-end\">\n                    <input #pathRadio class=\"form-check-input\" type=\"radio\" name=\"hs-move-to-folder-radio\"\n                        [formControl]=\"pathControl\" [value]=\"folder\" [id]=\"'hs-move-to-folder-option-' + $index\">\n                    <label class=\"form-check-label text-truncate\" style=\"width: 35ch;\"\n                        [for]=\"'hs-move-to-folder-option-' + $index\">\n                        {{'LAYERMANAGER.' + folder | translate : {fallbackValue: folder} }}\n                    </label>\n                </div>\n                }\n                <div class=\"border border-bottom-0 border-secondary-subtle d-block my-2 w-100\"></div>\n                <input #pathInput [formControl]=\"pathControl\" class=\"form-control m-auto\" type=\"text\"\n                    placeholder=\"{{'LAYERMANAGER.layerEditor.typeFolderName' | translate}}\"\n                    aria-describedby=\"hs-move-to-folder-btn\">\n            </div>\n            <div class=\"modal-footer\">\n                <button class=\"btn btn-primary\" style=\"width: 10rem;\" type=\"button\" id=\"hs-move-to-folder-btn\"\n                    (click)=\"yes()\" [disabled]=\"!pathControl.valid\">{{\n                    'LAYERMANAGER.move' |\n                    translate}}</button>\n                <button type=\"button\" class=\"btn btn-secondary compositions-btn-cancel\"\n                    [title]=\"'COMMON.back' | translate\" (click)=\"no()\" data-dismiss=\"modal\">{{\n                    'COMMON.back' | translate\n                    }}</button>\n            </div>\n        </div>\n    </div>\n</div>\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {Observable, map} from 'rxjs';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsDialogContainerService} from 'hslayers-ng/common/dialogs';\nimport {HsLayerManagerFolderService} from 'hslayers-ng/services/layer-manager';\nimport {getBase, setPath} from 'hslayers-ng/common/extensions';\n\nimport {HsLayerEditorWidgetBaseComponent} from '../layer-editor-widget-base.component';\nimport {LayerFolderWidgetDialogComponent} from './layer-folder-dialog/layer-folder-dialog.component';\n\n@Component({\n  selector: 'hs-layer-folder-widget',\n  imports: [AsyncPipe, TranslatePipe],\n  templateUrl: './layer-folder-widget.component.html',\n  styleUrls: ['../layer-editor-widgets.component.scss'],\n  styles: [\n    `\n      .hs-widget-folder .btn {\n        font-size: 0.875rem;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n      }\n\n      .hs-widget-folder .btn i {\n        font-size: 0.8125rem;\n      }\n    `,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HsLayerFolderWidgetComponent extends HsLayerEditorWidgetBaseComponent {\n  isEnabled: Observable<boolean>;\n\n  hsDialogContainerService = inject(HsDialogContainerService);\n  folderService = inject(HsLayerManagerFolderService);\n\n  constructor() {\n    super();\n    this.isEnabled = this.layerDescriptor.pipe(\n      takeUntilDestroyed(),\n      map((layer) => {\n        return layer.layer && !getBase(layer.layer);\n      }),\n    );\n  }\n\n  /**\n   * Creates new layer folder dialog\n   */\n  async createDialog() {\n    const dialog = this.hsDialogContainerService.create(\n      LayerFolderWidgetDialogComponent,\n      {\n        layer: this.olLayer,\n      },\n    );\n    const confirmed = await dialog.waitResult();\n    if (confirmed.value) {\n      this.moveLayerToNewFolder(confirmed.value);\n    }\n  }\n\n  /**\n   * Move layer to the selected folder\n   */\n  moveLayerToNewFolder(folder: string) {\n    this.folderService.folderAction$.next(\n      this.folderService.removeLayer(this.hsLayerSelectorService.currentLayer),\n    );\n    setPath(this.olLayer, folder);\n    this.folderService.folderAction$.next(\n      this.folderService.addLayer(this.hsLayerSelectorService.currentLayer),\n    );\n    this.folderService.folderAction$.next(\n      this.folderService.sortByZ({debounce: false}),\n    );\n  }\n}\n","@if (isEnabled | async) {\n<div class=\"hs-widget-folder\">\n  <div class=\"hs-widget-header-title\">\n    <i class=\"fa-solid fa-folder me-2\"></i>\n    <span>{{ \"COMMON.folder\" | translate }}</span>\n  </div>\n  <div class=\"hs-widget-content-simple\">\n    <button type=\"button\" class=\"btn btn-outline-primary btn-sm w-100\" (click)=\"createDialog()\">\n      <i class=\"fa-solid fa-folder-arrow-up me-1\"></i>\n      {{'LAYERMANAGER.layerEditor.moveToNewFolder' | translate}}\n    </button>\n  </div>\n</div>\n}\n","import {AsyncPipe, NgClass} from '@angular/common';\nimport {Component, Signal, inject, signal} from '@angular/core';\nimport {Observable, map} from 'rxjs';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {OSM} from 'ol/source';\n\nimport {HsConfirmDialogComponent} from 'hslayers-ng/common/confirm';\nimport {HsDialogContainerService} from 'hslayers-ng/common/dialogs';\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsLayerDescriptor} from 'hslayers-ng/types';\nimport {HsLayerEditorService} from '../../editor/layer-editor.service';\nimport {HsLayerEditorWidgetBaseComponent} from '../layer-editor-widget-base.component';\nimport {\n  HsLayerManagerFolderService,\n  HsLayerManagerLoadingProgressService,\n  HsLayerManagerService,\n  HsLayerManagerVisibilityService,\n} from 'hslayers-ng/services/layer-manager';\nimport {\n  instOf,\n  isLayerIDW,\n  isLayerVectorLayer,\n} from 'hslayers-ng/services/utils';\nimport {getBase, setBase} from 'hslayers-ng/common/extensions';\n\ntype layerType = 'base' | 'thematic';\n\n@Component({\n  selector: 'hs-layer-type-switcher-widget',\n  imports: [NgClass, AsyncPipe, TranslatePipe],\n  templateUrl: './layer-type-switcher-widget.component.html',\n})\nexport class HsLayerTypeSwitcherWidgetComponent extends HsLayerEditorWidgetBaseComponent {\n  private hsLayermanagerService = inject(HsLayerManagerService);\n  private hsLayerManagerVisibilityService = inject(\n    HsLayerManagerVisibilityService,\n  );\n  private loadingProgressSerice = inject(HsLayerManagerLoadingProgressService);\n  private folderService = inject(HsLayerManagerFolderService);\n  private hsEventBusService = inject(HsEventBusService);\n  private hsDialogContainerService = inject(HsDialogContainerService);\n  private layerEditorService = inject(HsLayerEditorService);\n\n  isEnabled: Observable<boolean>;\n  currentType: Signal<string>;\n\n  types: layerType[] = ['base', 'thematic'];\n\n  typeChanged$: Observable<void>;\n\n  constructor() {\n    super();\n    this.isEnabled = this.layerDescriptor.pipe(\n      map((layer) => {\n        const source = layer.layer.getSource();\n        return (\n          !!layer.layer &&\n          /**\n           * Allowed for layers which are not OSM, Vector or IDW\n           */\n          !instOf(source, OSM) &&\n          !isLayerIDW(layer.layer) &&\n          !isLayerVectorLayer(layer.layer)\n        );\n      }),\n    );\n\n    this.currentType = signal(\n      getBase(this.hsLayerSelectorService.currentLayer.layer)\n        ? 'base'\n        : 'thematic',\n    );\n  }\n\n  /***\n   * Toggle between base and thematic layer type\n   */\n  async changeLayerType(type: layerType) {\n    if (type == this.currentType()) {\n      return;\n    }\n    const dialog = this.hsDialogContainerService.create(\n      HsConfirmDialogComponent,\n      {\n        message: 'LAYERMANAGER.layerEditor.changeLayerType',\n        note: 'LAYERMANAGER.layerEditor.layerTypeChangeNote',\n        title: 'LAYERMANAGER.layerEditor.confirmLayerTypeChange',\n      },\n    );\n    const confirmed = await dialog.waitResult();\n    if (confirmed === 'yes') {\n      setBase(this.olLayer, type === 'base');\n\n      this.updateLayerType(type === 'base');\n    }\n  }\n\n  private updateLayerType(toBase: boolean) {\n    const currentLayer = this.hsLayerSelectorService.currentLayer;\n\n    /**\n     * Remove/add manipulated layer from/to the layer folder structure\n     */\n    this.folderService.folderAction$.next(\n      this.folderService[toBase ? 'removeLayer' : 'addLayer'](currentLayer),\n    );\n    this.folderService.folderAction$.next(this.folderService.sortByZ());\n\n    /**\n     * Remove/add manipulated layer to the layermanager layer structure\n     */\n    const [current, destination] = toBase\n      ? [\n          this.hsLayermanagerService.data.layers,\n          this.hsLayermanagerService.data.baselayers,\n        ]\n      : [\n          this.hsLayermanagerService.data.baselayers,\n          this.hsLayermanagerService.data.layers,\n        ];\n\n    destination.push(currentLayer as HsLayerDescriptor);\n    current.splice(current.indexOf(currentLayer as HsLayerDescriptor), 1);\n\n    /**\n     * Update visiblity of base layer\n     */\n    this.hsLayerManagerVisibilityService.changeBaseLayerVisibility(\n      true,\n      toBase ? currentLayer : this.hsLayermanagerService.data.baselayers[0],\n    );\n\n    if (!toBase) {\n      this.loadingProgressSerice.loadingEvents(currentLayer);\n    } else {\n      this.layerEditorService.toggleLayerEditor(currentLayer, 'settings');\n    }\n\n    this.hsEventBusService.layerManagerUpdates.next(this.olLayer);\n    this.hsEventBusService.compositionEdits.next();\n  }\n}\n","@if (isEnabled | async) {\n  <div class=\"btn-group w-75 m-auto my-1 d-block\">\n    @for (t of types; track t) {\n      <button class=\"btn btn-sm btn-outline-primary w-50\" style=\"min-width: 7rem;\"\n        (click)=\"changeLayerType(t)\" [ngClass]=\"{'btn-primary active': currentType() === t }\">\n        {{'COMMON.' + t | translate }}\n      </button>\n    }\n  </div>\n}\n","import {Component, inject} from '@angular/core';\n\nimport {HsLayerEditorService} from '../editor/layer-editor.service';\nimport {HsLayerEditorWidgetBaseComponent} from './layer-editor-widget-base.component';\n\n@Component({\n  selector: 'hs-legend-widget',\n  templateUrl: './legend-widget.component.html',\n  styleUrls: ['./layer-editor-widgets.component.scss'],\n  styles: [\n    `\n      .hs-widget-legend hs-legend-layer {\n        display: block;\n        width: 100%;\n      }\n    `,\n  ],\n  standalone: false,\n})\nexport class HsLegendWidgetComponent extends HsLayerEditorWidgetBaseComponent {\n  hsLayerEditorService = inject(HsLayerEditorService);\n\n  name = 'legend-widget';\n}\n","@if (olLayer && hsLayerEditorService.legendVisible()) {\n<div class=\"hs-widget-legend\">\n  <div class=\"hs-widget-header-title\">\n    <i class=\"fa-solid fa-map-signs me-2\"></i>\n    <span>{{ \"COMMON.legend\" | translate }}</span>\n  </div>\n  <div class=\"hs-widget-content-simple\">\n    <hs-legend-layer [layer]=\"hsLayerEditorService.legendDescriptor\" />\n  </div>\n</div>\n}\n","import {Component, inject} from '@angular/core';\n\nimport {HsLanguageService} from 'hslayers-ng/services/language';\nimport {HsLayerDescriptor} from 'hslayers-ng/types';\nimport {HsLayerEditorWidgetBaseComponent} from './layer-editor-widget-base.component';\nimport {\n  HsLayerManagerMetadataService,\n  HsLayerManagerService,\n} from 'hslayers-ng/services/layer-manager';\nimport {\n  getAbstract,\n  setAbstract,\n  getAttribution,\n} from 'hslayers-ng/common/extensions';\n\n@Component({\n  selector: 'hs-metadata-widget',\n  templateUrl: './metadata-widget.component.html',\n  standalone: false,\n})\nexport class HsMetadataWidgetComponent extends HsLayerEditorWidgetBaseComponent {\n  hsLanguageService = inject(HsLanguageService);\n  metadataService = inject(HsLayerManagerMetadataService);\n  hsLayerManagerService = inject(HsLayerManagerService);\n\n  name = 'metadata-widget';\n  getAttribution = getAttribution;\n\n  /**\n   * Determines if layer has copyright information available\n   * @param layer - Selected layer (HsLayerManagerService.currentLayer)\n   */\n  hasCopyright(layer: HsLayerDescriptor): boolean | undefined {\n    if (!this.layerDescriptor) {\n      return;\n    }\n    return getAttribution(layer.layer)?.onlineResource != undefined;\n  }\n\n  set abstract(newAbstract: string) {\n    const layer = this.olLayer;\n    if (layer == undefined) {\n      return;\n    }\n    setAbstract(layer, newAbstract);\n  }\n\n  get abstract(): string {\n    const layer = this.olLayer;\n    if (layer == undefined) {\n      return;\n    }\n    return getAbstract(layer);\n  }\n}\n","@if ({ layer: layerDescriptor | async }; as descriptor) {\n  @if (descriptor.layer && metadataService.hasMetadata(descriptor.layer)) {\n    <div class=\"form-group\">\n      <!-- Metadata -->\n      <div class=\"pt-2\">\n        @for (metadataUrl of metadataService.metadataArray(descriptor.layer); track metadataUrl) {\n          <a class=\"card-href\"\n            [href]=\"metadataUrl.onlineResource\" target=\"_blank\" [title]=\"'COMMON.metadata' | translate\">\n            <span [hidden]=\"!metadataUrl.type\">\n              {{ \"LAYERMANAGER.layerEditor.metadataOfLayer\" | translate }}\n              {{ metadataUrl.type }}\n            </span>\n            <span [hidden]=\"metadataUrl.type\">\n              {{ \"LAYERMANAGER.layerEditor.metadataOfService\" | translate }}\n            </span>\n          </a>\n        }\n      </div>\n      <!-- Copyright -->\n      @if (hasCopyright(descriptor.layer)) {\n        <div>\n          <a class=\"card-href\" [href]=\"getAttribution(descriptor.layer.layer).onlineResource\" target=\"_blank\"\n            [title]=\"'LAYERMANAGER.layerEditor.copyright' | translate\">\n          {{ \"LAYERMANAGER.layerEditor.copyright\" | translate }}</a>\n        </div>\n      }\n    </div>\n  }\n  <div class=\"form-group\" [hidden]=\"!abstract\">\n    <label>{{ \"COMMON.abstract\" | translate }}</label>\n    <p [innerHtml]=\"\n        hsLayerManagerService.makeSafeAndTranslate('LAYERS', abstract)\n      \"></p><!-- TODO: Remove function call from template -->\n  </div>\n}\n","import {Component, inject} from '@angular/core';\n\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsLayerEditorWidgetBaseComponent} from './layer-editor-widget-base.component';\n\n@Component({\n  selector: 'hs-opacity-widget',\n  templateUrl: './opacity-widget.component.html',\n  styleUrls: ['./layer-editor-widgets.component.scss'],\n  styles: [\n    `\n      .hs-widget-opacity .form-range {\n        cursor: pointer;\n        background: linear-gradient(\n          to right,\n          var(--bs-primary) 0%,\n          var(--bs-primary) var(--opacity-percentage, 100%),\n          rgba(0, 0, 0, 0.1) var(--opacity-percentage, 100%),\n          rgba(0, 0, 0, 0.1) 100%\n        );\n        height: 0.5rem;\n        border-radius: 0.25rem;\n      }\n\n      .hs-widget-opacity .form-range::-webkit-slider-thumb {\n        height: 1.25rem;\n        width: 1.25rem;\n        background: #fff;\n        border: 2px solid var(--bs-primary);\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n        transition: all 0.2s ease;\n      }\n\n      .hs-widget-opacity .form-range::-moz-range-thumb {\n        height: 1.25rem;\n        width: 1.25rem;\n        background: #fff;\n        border: 2px solid var(--bs-primary);\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n        transition: all 0.2s ease;\n      }\n\n      .hs-widget-opacity .form-range:hover::-webkit-slider-thumb {\n        transform: scale(1.1);\n      }\n\n      .hs-widget-opacity .form-range:hover::-moz-range-thumb {\n        transform: scale(1.1);\n      }\n\n      .hs-widget-opacity .form-range::-webkit-slider-runnable-track {\n        background: transparent;\n      }\n\n      .hs-widget-opacity .form-range::-moz-range-track {\n        background: transparent;\n      }\n    `,\n  ],\n  standalone: false,\n})\nexport class HsOpacityWidgetComponent extends HsLayerEditorWidgetBaseComponent {\n  private hsEventBusService = inject(HsEventBusService);\n\n  name = 'opacity-widget';\n\n  /**\n   * Set selected layer's opacity and emits \"compositionchanged\"\n   */\n  set opacity(newValue) {\n    if (!this.layerDescriptor) {\n      return;\n    }\n    this.olLayer.setOpacity(newValue);\n    this.hsEventBusService.compositionEdits.next();\n  }\n\n  get opacity() {\n    return this.olLayer.getOpacity();\n  }\n}\n","<div class=\"hs-widget-opacity\" [style.--opacity-percentage.%]=\"opacity * 100\">\n  <div class=\"hs-widget-header-simple\">\n    <div class=\"d-flex justify-content-between align-items-center\">\n      <label for=\"layer-opacity-range\" class=\"mb-0\">{{ \"LAYERMANAGER.layerEditor.opacity\" | translate }}</label>\n      <span class=\"badge bg-secondary\">{{ (opacity * 100) | number:'1.0-0' }}%</span>\n    </div>\n  </div>\n  <div class=\"hs-widget-content-simple\">\n    <input id=\"layer-opacity-range\" type=\"range\" name=\"layer-opacity\" step=\"0.01\" min=\"0\" max=\"1\" [(ngModel)]=\"opacity\"\n      class=\"form-range\" />\n  </div>\n</div>","import {Component, inject, signal, WritableSignal, OnInit} from '@angular/core';\n\nimport {METERS_PER_UNIT} from 'ol/proj';\n\nimport {HsLayerEditorWidgetBaseComponent} from './layer-editor-widget-base.component';\nimport {HsMapService} from 'hslayers-ng/services/map';\nimport {calculateResolutionFromScale} from 'hslayers-ng/services/utils';\nimport {HsLanguageService} from 'hslayers-ng/services/language';\n\n@Component({\n  selector: 'hs-scale-widget',\n  templateUrl: './scale-widget.component.html',\n  styleUrls: ['./layer-editor-widgets.component.scss'],\n  styles: [\n    `\n      .hs-scale-inputs {\n        display: flex;\n        flex-direction: column;\n        gap: 0.75rem;\n      }\n\n      .hs-scale-input-group {\n        display: flex;\n        flex-direction: column;\n        gap: 0.25rem;\n      }\n\n      .hs-scale-input-group label {\n        margin-bottom: 0;\n        font-size: 0.8125rem;\n        font-weight: 500;\n      }\n\n      .hs-scale-input-group .input-group-text {\n        font-size: 0.8125rem;\n        font-weight: 500;\n        min-width: 2rem;\n        justify-content: center;\n        background-color: rgba(0, 0, 0, 0.04);\n        border-color: rgba(0, 0, 0, 0.15);\n      }\n\n      .hs-scale-input-group .form-control {\n        font-size: 0.8125rem;\n      }\n\n      .hs-scale-input-group .form-control:focus {\n        box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.25);\n      }\n\n      .hs-scale-summary {\n        margin-top: 0.75rem;\n        padding: 0.5rem 0.625rem;\n        background: rgba(var(--bs-primary-rgb), 0.08);\n        border-radius: 0.25rem;\n        font-size: 0.8125rem;\n        color: var(--bs-primary);\n        font-weight: 500;\n        display: flex;\n        align-items: center;\n      }\n\n      .hs-scale-summary i {\n        font-size: 0.75rem;\n        opacity: 0.8;\n      }\n\n      .hs-scale-summary .mx-1 {\n        opacity: 0.6;\n        font-weight: 400;\n      }\n    `,\n  ],\n  standalone: false,\n})\nexport class HsScaleWidgetComponent\n  extends HsLayerEditorWidgetBaseComponent\n  implements OnInit {\n  hsMapService = inject(HsMapService);\n  hsLanguageService = inject(HsLanguageService);\n\n  name = 'scale-widget';\n\n  scaleEnabled: WritableSignal<boolean> = signal(false);\n  suppressCacheUpdate: boolean = false;\n\n  ngOnInit() {\n    super.ngOnInit();\n    this.scaleEnabled.set(this.isScaleVisible());\n\n    // Store initial valid values if they exist\n    this.storeLastValidScaleValues();\n  }\n\n  toggle() {\n    this.scaleEnabled.update((value) => !value);\n\n    if (this.scaleEnabled()) {\n      this.restoreLastValidScaleValues();\n    } else {\n      // Suppress cache update to avoid clearing cache\n      this.suppressCacheUpdate = true;\n      this.storeLastValidScaleValues();\n      this.minResolution = 0;\n      this.maxResolution = Infinity;\n      this.suppressCacheUpdate = false;\n    }\n  }\n\n  private storeLastValidScaleValues() {\n    if (!this.olLayer) {\n      return;\n    }\n\n    if (this.minResolutionValid()) {\n      const currentMinScale = this.minResolution;\n      if (currentMinScale && currentMinScale !== 0) {\n        this.olLayer.set('lastValidMinResolution', currentMinScale);\n      }\n    }\n\n    if (this.maxResolutionValid()) {\n      const currentMaxScale = this.maxResolution;\n      if (currentMaxScale && currentMaxScale !== Infinity) {\n        this.olLayer.set('lastValidMaxResolution', currentMaxScale);\n      }\n    }\n  }\n\n  private restoreLastValidScaleValues() {\n    if (!this.olLayer) {\n      return;\n    }\n\n    const lastValidMin = this.olLayer.get('lastValidMinResolution');\n    const lastValidMax = this.olLayer.get('lastValidMaxResolution');\n\n    this.minResolution = lastValidMin ?? 0;\n    this.maxResolution = lastValidMax ?? Infinity;\n  }\n\n  placeholder = this.hsLanguageService.getTranslation('COMMON.infinity');\n\n  /**\n   * Test if selected layer has min or max resolution set\n   */\n  isScaleVisible(): boolean {\n    return (\n      !!this.olLayer && (this.minResolutionValid() || this.maxResolutionValid())\n    );\n  }\n\n  /**\n   * Set min resolution for selected layer\n   */\n  set minResolution(newValue) {\n    if (!this.layerDescriptor) {\n      return;\n    }\n    const layer = this.olLayer;\n    const value = newValue ?? 0;\n\n    const resolution = calculateResolutionFromScale(\n      value,\n      this.hsMapService.getMap().getView(),\n    );\n    layer.setMinResolution(resolution);\n    if (!this.suppressCacheUpdate) {\n      if (value === 0) {\n        layer.unset('lastValidMinResolution', true);\n      } else {\n        layer.set('lastValidMinResolution', value);\n      }\n    }\n  }\n\n  get minResolution() {\n    if (!this.layerDescriptor) {\n      return;\n    }\n    const layer = this.olLayer;\n    return this.resolutionToScale(layer.getMinResolution());\n  }\n\n  /**\n   * Set max resolution for selected layer\n   */\n  set maxResolution(newValue) {\n    if (!this.layerDescriptor) {\n      return;\n    }\n    const layer = this.olLayer;\n    const value = newValue ?? Infinity;\n    const resolution = calculateResolutionFromScale(\n      value,\n      this.hsMapService.getMap().getView(),\n    );\n    layer.setMaxResolution(resolution);\n    if (!this.suppressCacheUpdate) {\n      if (value === Infinity) {\n        layer.unset('lastValidMaxResolution');\n      } else {\n        layer.set('lastValidMaxResolution', value);\n      }\n    }\n  }\n\n  get maxResolution() {\n    if (!this.layerDescriptor) {\n      return;\n    }\n    const layer = this.olLayer;\n    return this.resolutionToScale(layer.getMaxResolution());\n  }\n\n  resolutionToScale(resolution) {\n    const view = this.hsMapService.getMap().getView();\n    const units = view.getProjection().getUnits();\n    const dpi = 25.4 / 0.28;\n    const mpu = METERS_PER_UNIT[units];\n    return Math.round(resolution * mpu * 39.37 * dpi);\n  }\n\n  minResolutionValid(): boolean {\n    const minRes = this.olLayer?.getMinResolution();\n    return minRes !== undefined && minRes !== 0;\n  }\n\n  maxResolutionValid(): boolean {\n    const maxRes = this.olLayer?.getMaxResolution();\n    return maxRes !== undefined && maxRes !== Infinity;\n  }\n}\n","<div class=\"hs-widget-scale\">\n  <div class=\"hs-widget-header\">\n    <div class=\"form-check\">\n      <input type=\"checkbox\" [id]=\"'scale-enabled-' + name\" [checked]=\"scaleEnabled()\" (change)=\"toggle()\"\n        class=\"form-check-input\" />\n      <label [for]=\"'scale-enabled-' + name\" class=\"form-check-label\">\n        {{ \"LAYERMANAGER.layerEditor.scale\" | translate }}\n      </label>\n    </div>\n  </div>\n\n  @if (scaleEnabled()) {\n  <div class=\"hs-widget-content\">\n    <div class=\"hs-scale-inputs\">\n      <div class=\"hs-scale-input-group\">\n        <label [for]=\"'min-scale-' + name\" class=\"small text-muted\">\n          {{ \"COMMON.from\" | translate }}\n        </label>\n        <div class=\"input-group input-group-sm\">\n          <span class=\"input-group-text\">1:</span>\n          <input type=\"number\" [id]=\"'min-scale-' + name\" class=\"form-control\" [(ngModel)]=\"minResolution\"\n            name=\"minResolution\" [placeholder]=\"placeholder\" min=\"0\" step=\"1\" />\n        </div>\n      </div>\n\n      <div class=\"hs-scale-input-group\">\n        <label [for]=\"'max-scale-' + name\" class=\"small text-muted\">\n          {{ \"COMMON.to\" | translate }}\n        </label>\n        <div class=\"input-group input-group-sm\">\n          <span class=\"input-group-text\">1:</span>\n          <input type=\"number\" [id]=\"'max-scale-' + name\" class=\"form-control\" [(ngModel)]=\"maxResolution\"\n            name=\"maxResolution\" [placeholder]=\"placeholder\" min=\"1\" step=\"1\" />\n        </div>\n      </div>\n    </div>\n\n    @if (isScaleVisible()) {\n    <div class=\"hs-scale-summary\">\n      <i class=\"fa-solid fa-ruler-horizontal me-1\"></i>\n      <span>{{ \"COMMON.from\" | translate }} 1:{{ minResolution }}</span>\n      <span class=\"mx-1\">→</span>\n      <span>1:{{ maxResolution }}</span>\n    </div>\n    }\n  </div>\n  }\n</div>","import {Component} from '@angular/core';\n\nimport {HsLayerEditorWidgetBaseComponent} from './layer-editor-widget-base.component';\n\n@Component({\n  selector: 'hs-type-widget',\n  templateUrl: './type-widget.component.html',\n  standalone: false,\n})\nexport class HsTypeWidgetComponent extends HsLayerEditorWidgetBaseComponent {\n  showCheck = false;\n  name = 'type-widget';\n}\n","<div class=\"form-group\">\n  @if (layerDescriptor | async; as descriptor) {\n  <small class=\"text-secondary\">\n    {{ 'LAYERMANAGER.layerEditor.' + descriptor.type | translate : {fallbackValue: descriptor.type} }}\n    {{ \"LAYERMANAGER.layerEditor.layerFrom\" | translate }}\n    <div class=\"mw-100 d-flex align-items-center justify-content-between\">\n      @if (descriptor.source === \"memory\") {\n      <span class=\"text-truncate\">\n        {{ 'LAYERMANAGER.layerEditor.memory' | translate }}\n      </span>\n      }\n      @else{<hs-clipboard-text [text]=\"descriptor.source\" />}\n    </div>\n  </small>\n  }\n</div>\n","import {CommonModule} from '@angular/common';\nimport {Component, inject} from '@angular/core';\nimport {Observable, map, tap} from 'rxjs';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {Image as ImageLayer, Tile} from 'ol/layer';\nimport {ImageWMS, TileWMS} from 'ol/source';\n\nimport {HsConfirmDialogComponent} from 'hslayers-ng/common/confirm';\nimport {HsDialogContainerService} from 'hslayers-ng/common/dialogs';\nimport {HsLayerEditorWidgetBaseComponent} from '../layer-editor-widget-base.component';\nimport {HsLayerSelectorService} from 'hslayers-ng/services/layer-manager';\nimport {HsLayerShiftingService} from 'hslayers-ng/services/layer-shifting';\nimport {instOf, isLayerWMS} from 'hslayers-ng/services/utils';\nimport {HsMapService} from 'hslayers-ng/services/map';\n\n@Component({\n  selector: 'hs-wms-source-widget',\n  imports: [CommonModule, TranslatePipe],\n  templateUrl: './wms-source-widget.component.html',\n})\nexport class HsWmsSourceWidgetComponent extends HsLayerEditorWidgetBaseComponent {\n  private hsMapService = inject(HsMapService);\n  private hsLayerShiftingService = inject(HsLayerShiftingService);\n  private hsDialogContainerService = inject(HsDialogContainerService);\n\n  name = 'wms-source-widget';\n  isEnabled: Observable<boolean>;\n\n  options = ['Tile', 'Image'];\n  currentType: string;\n  constructor() {\n    super();\n    this.isEnabled = this.layerDescriptor.pipe(\n      tap((l) => {\n        this.currentType = instOf(l.layer, ImageLayer) ? 'Image' : 'Tile';\n      }),\n      map((l) => {\n        return isLayerWMS(l.layer);\n      }),\n    );\n  }\n\n  private getUrls(source: TileWMS): string {\n    return source.getUrls()[0];\n  }\n\n  private getUrl(source: ImageWMS): string[] {\n    return [source.getUrl()];\n  }\n\n  async changeLayerType() {\n    const dialog = this.hsDialogContainerService.create(\n      HsConfirmDialogComponent,\n      {\n        message: 'LAYERMANAGER.layerEditor.changeLayerType',\n        note: 'LAYERMANAGER.layerEditor.layerTypeChangeNote',\n        title: 'LAYERMANAGER.layerEditor.confirmLayerTypeChange',\n      },\n    );\n    const confirmed = await dialog.waitResult();\n    if (confirmed === 'yes') {\n      this.recreateLayer();\n    }\n  }\n\n  /**\n   * Clone layer properties and parameters and recreate it as a different type\n   * (Tile or Image)\n   */\n  private recreateLayer() {\n    const source = this.olLayer.getSource() as ImageWMS | TileWMS;\n    const sourceOptions = {\n      attributions: source.getAttributions(),\n      projection: source.getProjection(),\n      params: source.getParams(),\n    };\n\n    const urlTypeToGet = this.currentType == 'Tile' ? 'Urls' : 'Url';\n    const urlTypeToSet = urlTypeToGet == 'Urls' ? 'url' : 'urls';\n\n    sourceOptions[urlTypeToSet] = this[`get${urlTypeToGet}`](source as any);\n\n    const layerProps = {...this.olLayer.getProperties()};\n    layerProps.source =\n      this.currentType == 'Tile'\n        ? new ImageWMS(sourceOptions)\n        : new TileWMS(sourceOptions);\n    layerProps.map = undefined;\n    const lyr =\n      this.currentType == 'Tile'\n        ? new ImageLayer(layerProps)\n        : new Tile(layerProps);\n\n    this.hsMapService.getMap().addLayer(lyr);\n    this.hsLayerShiftingService.moveTo(lyr, this.olLayer.getZIndex());\n    this.hsMapService.getMap().removeLayer(this.olLayer);\n  }\n}\n","@if (isEnabled | async) {\n  <div class=\"btn-group w-75 m-auto d-block\">\n    @for (o of options; track o) {\n      <button (click)=\"changeLayerType()\" [ngClass]=\"{'btn-primary active': o === currentType}\"\n        class=\"btn btn-sm w-50 btn-outline-primary\" style=\"min-width: 7rem;\">\n        {{'COMMON.' + o | translate }}\n      </button>\n    }\n  </div>\n}\n","import {Type} from '@angular/core';\n\nimport {HsClusterWidgetComponent} from '../widgets/cluster-widget.component';\nimport {HsExtentWidgetComponent} from '../widgets/extent-widget/extent-widget.component';\nimport {HsIdwWidgetComponent} from '../widgets/idw-widget.component';\nimport {HsLayerEditorDimensionsComponent} from '../dimensions/layer-editor-dimensions.component';\nimport {HsLayerFolderWidgetComponent} from '../widgets/layer-folder-widget/layer-folder-widget.component';\nimport {HsLayerTypeSwitcherWidgetComponent} from '../widgets/layer-type-switcher-widget/layer-type-switcher-widget.component';\nimport {HsLegendWidgetComponent} from '../widgets/legend-widget.component';\nimport {HsMetadataWidgetComponent} from '../widgets/metadata-widget.component';\nimport {HsOpacityWidgetComponent} from '../widgets/opacity-widget.component';\nimport {HsScaleWidgetComponent} from '../widgets/scale-widget.component';\nimport {HsTypeWidgetComponent} from '../widgets/type-widget.component';\nimport {HsWmsSourceWidgetComponent} from '../widgets/wms-source-widget/wms-source-widget.component';\n\nexport interface LayerEditorWidget {\n  name: string;\n  component: Type<any>;\n}\n\nexport const LAYER_EDITOR_WIDGETS: LayerEditorWidget[] = [\n  {\n    name: 'type',\n    component: HsTypeWidgetComponent,\n  },\n  {\n    name: 'metadata',\n    component: HsMetadataWidgetComponent,\n  },\n  {\n    name: 'extent',\n    component: HsExtentWidgetComponent,\n  },\n  {\n    name: 'cluster',\n    component: HsClusterWidgetComponent,\n  },\n  {\n    name: 'scale',\n    component: HsScaleWidgetComponent,\n  },\n  {\n    name: 'legend',\n    component: HsLegendWidgetComponent,\n  },\n  {\n    name: 'dimensions',\n    component: HsLayerEditorDimensionsComponent,\n  },\n  {\n    name: 'folder',\n    component: HsLayerFolderWidgetComponent,\n  },\n  {\n    name: 'opacity',\n    component: HsOpacityWidgetComponent,\n  },\n  {\n    name: 'idw',\n    component: HsIdwWidgetComponent,\n  },\n  {\n    name: 'wmsSource',\n    component: HsWmsSourceWidgetComponent,\n  },\n  {\n    name: 'layerType',\n    component: HsLayerTypeSwitcherWidgetComponent,\n  },\n];\n","import {Component, computed, inject, input, model, signal} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {NgClass} from '@angular/common';\nimport {map} from 'rxjs';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {Feature} from 'ol';\nimport {Vector as VectorLayer} from 'ol/layer';\nimport {Vector as VectorSource} from 'ol/source';\n\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsConfirmDialogComponent} from 'hslayers-ng/common/confirm';\nimport {HsDialogContainerService} from 'hslayers-ng/common/dialogs';\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsLayerDescriptor} from 'hslayers-ng/types';\nimport {\n  HsLayerManagerCopyLayerService,\n  HsLayerManagerService,\n  HsLayerManagerUtilsService,\n} from 'hslayers-ng/services/layer-manager';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\nimport {HsPanelHelpersModule} from 'hslayers-ng/common/panels';\nimport {HsStylerService} from 'hslayers-ng/services/styler';\nimport {\n  getBase,\n  getGreyscale,\n  getRemovable,\n  getTitle,\n  getWfsUrl,\n  getWorkspace,\n  setTitle,\n} from 'hslayers-ng/common/extensions';\n\n// Widgets\nimport {HsCopyLayerDialogComponent} from '../dialogs/copy-layer-dialog.component';\nimport {HsLayerEditorService} from './layer-editor.service';\nimport {HsLayerEditorWidgetContainerService} from '../widgets/layer-editor-widget-container.service';\nimport {HsLayerManagerRemoveLayerDialogComponent} from '../dialogs/remove-layer-dialog.component';\nimport {LAYER_EDITOR_WIDGETS} from './widget-config';\nimport {layerIsZoomable, layerIsStyleable} from 'hslayers-ng/services/utils';\n\n@Component({\n  selector: 'hs-layer-editor',\n  templateUrl: './layer-editor.component.html',\n  imports: [NgClass, FormsModule, TranslatePipe, HsPanelHelpersModule],\n})\nexport class HsLayerEditorComponent {\n  private hsConfig = inject(HsConfig);\n  private hsStylerService = inject(HsStylerService);\n  private hsLayoutService = inject(HsLayoutService);\n  private hsLayerEditorService = inject(HsLayerEditorService);\n  private hsEventBusService = inject(HsEventBusService);\n  private hsDialogContainerService = inject(HsDialogContainerService);\n  private hsLayerManagerUtilsService = inject(HsLayerManagerUtilsService);\n  private hsLayerManagerCopyLayerService = inject(\n    HsLayerManagerCopyLayerService,\n  );\n  hsLayerManagerService = inject(HsLayerManagerService);\n  hsWidgetContainerService = inject(HsLayerEditorWidgetContainerService);\n\n  layer = input.required<HsLayerDescriptor>();\n  olLayer = computed(() => this.layer()?.layer || undefined);\n\n  layerNodeAvailable = signal(false);\n  layer_renamer_visible = signal(false);\n\n  layerTitle = model<string | undefined>(undefined);\n\n  getBase = getBase;\n  getGreyscale = getGreyscale;\n\n  layerIsZoomable = computed(() => layerIsZoomable(this.olLayer()));\n  layerIsStylable = computed(() => layerIsStyleable(this.olLayer()));\n  isLayerRemovable = computed(() => {\n    const layer = this.olLayer();\n    return (\n      !layer || getRemovable(layer) == undefined || getRemovable(layer) == true\n    );\n  });\n  isVectorLayer = computed(() =>\n    this.hsLayerEditorService.isLayerVectorLayer(this.olLayer()),\n  );\n  wfsFilterEnabled = computed(() => {\n    return (\n      this.isVectorLayer() &&\n      this.hsConfig.panelsEnabled.wfsFilter &&\n      (getWfsUrl(this.olLayer()) || getWorkspace(this.olLayer()))\n    );\n  });\n\n  titleUnsaved = computed(() => this.layerTitle() != getTitle(this.olLayer()));\n\n  constructor() {\n    toObservable(this.layer)\n      .pipe(\n        map((layer) => {\n          this.layerTitle.set(layer.title);\n          this.layer_renamer_visible.set(false);\n        }),\n      )\n      .subscribe();\n  }\n\n  async createWidgets(): Promise<void> {\n    if (!this.hsConfig.layerEditorWidgetsEnabled) {\n      return;\n    }\n    const widgetSettings = this.hsConfig.layerEditorWidgets ?? {};\n\n    for (const widget of LAYER_EDITOR_WIDGETS) {\n      // Widget is enabled unless explicitly disabled in config\n      const isEnabled = widgetSettings[widget.name] ?? true;\n\n      if (isEnabled) {\n        try {\n          this.hsWidgetContainerService.create(widget.component, {});\n        } catch (e) {\n          console.warn(`Failed to load widget ${widget.name}:`, e);\n        }\n      }\n    }\n  }\n\n  /**\n   * Confirm saving a vector layer content as a GeoJSON\n   * @returns an empty promise\n   */\n  async createSaveDialog() {\n    const dialog = this.hsDialogContainerService.create(\n      HsConfirmDialogComponent,\n      {\n        message: 'LAYERMANAGER.layerEditor.savegeojson',\n        title: 'COMMON.confirm',\n      },\n    );\n    const confirmed = await dialog.waitResult();\n    if (confirmed == 'yes') {\n      return this.hsLayerManagerUtilsService.saveGeoJson();\n    }\n  }\n\n  /**\n   * Zoom to selected layer (layer extent). Get extent\n   * from bounding box property, getExtent() function or from\n   * BoundingBox property of GetCapabilities request (for WMS layer)\n   * @returns a promise\n   */\n  zoomToLayer(): Promise<any> {\n    return this.hsLayerEditorService.zoomToLayer(this.olLayer());\n  }\n\n  /**\n   * Display styler panel for selected layer, so user can change its style\n   */\n  styleLayer() {\n    const layer = this.olLayer();\n    this.hsStylerService.layer.set(layer as VectorLayer<VectorSource<Feature>>);\n    this.hsLayoutService.setMainPanel('styler');\n  }\n\n  /**\n   * Toggle layer rename control on panel (through layer rename variable)\n   */\n  toggleLayerRename() {\n    this.layerTitle.set(this.layer().title);\n    this.layer_renamer_visible.update((visible) => !visible);\n  }\n\n  removeLayer(): void {\n    this.hsDialogContainerService.create(\n      HsLayerManagerRemoveLayerDialogComponent,\n      {olLayer: this.olLayer()},\n    );\n  }\n\n  /**\n   * Save the layer title\n   */\n  saveTitle(): void {\n    const layer = this.olLayer();\n    if (layer == undefined) {\n      return;\n    }\n    this.hsLayerEditorService.layerTitleChange.next({\n      newTitle: this.layerTitle(),\n      oldTitle: getTitle(layer),\n      layer,\n    });\n    setTitle(layer, this.layerTitle());\n    this.hsEventBusService.layerManagerUpdates.next(null);\n    this.toggleLayerRename();\n  }\n\n  async copyLayer(): Promise<void> {\n    const dialog = this.hsDialogContainerService.create(\n      HsCopyLayerDialogComponent,\n      {\n        message: 'LAYERMANAGER.layerEditor.copyLayer',\n        title: 'COMMON.copyLayer',\n        layerTitle: getTitle(this.layer().layer),\n      },\n    );\n    const result = await dialog.waitResult();\n    if (result.confirmed == 'yes') {\n      return this.hsLayerManagerCopyLayerService.copyLayer(result.layerTitle);\n    }\n  }\n\n  /**\n   * Open the WFS filter panel\n   * layer will be automatically selected via hsLayerSelectorService\n   */\n  openWfsFilter() {\n    this.hsLayoutService.setMainPanel('wfsFilter');\n  }\n}\n","@let currLayer = layer();\n<div class=\"card panel-default\">\n  @if (currLayer) {\n  <div class=\"card-body\">\n    @if (currLayer.settings) {\n    <div>\n      <form>\n        <hs-panel-container [service]=\"hsWidgetContainerService\" (init)=\"createWidgets()\">\n        </hs-panel-container>\n      </form>\n      @if (currLayer.visible && getBase(currLayer.layer)) {\n      <div class=\"btn-group m-auto d-flex w-75\">\n        <button class=\"btn btn-sm btn-outline-primary  w-50\" (click)=\"hsLayerManagerService.setGreyscale(currLayer)\"\n          [ngClass]=\"{'active' : !getGreyscale(currLayer.layer)}\" data-toggle=\"tooltip\"\n          [title]=\"'LAYERMANAGER.layerEditor.zoomToLayer' | translate  \">{{'COMMON.color' |\n          translate }}</button>\n        <button class=\"btn btn-sm btn-outline-primary  w-50\" (click)=\"hsLayerManagerService.setGreyscale(currLayer)\"\n          [ngClass]=\"{'active' : getGreyscale(currLayer.layer)}\" data-toggle=\"tooltip\"\n          [title]=\"'LAYERMANAGER.layerEditor.styleLayer' | translate  \">{{'LAYERMANAGER.baseMapGallery.greyscale'\n          | translate }}</button>\n      </div>\n      }\n    </div>\n    }\n  </div>\n  }\n  @if (currLayer?.settings) {\n  <div class=\"card-footer\">\n    <div class=\"form-group\" [hidden]=\"!layer_renamer_visible()\">\n      <label>{{'COMMON.title' | translate }}</label>\n      <div class=\"input-group\">\n        <input type=\"text\" class=\"form-control\" [(ngModel)]=\"layerTitle\" name=\"title\">\n        <button [hidden]=\"!titleUnsaved()\" (click)=\"saveTitle()\" class=\"btn btn-outline-secondary\" type=\"button\"><i\n            class=\"fa-solid fa-floppy-disk\"></i></button>\n      </div>\n    </div>\n    <div class=\"btn-group\" role=\"group\" [attr.aria-label]=\"'LAYERMANAGER.editorButtons' | translate  \">\n      <button class=\"btn btn-primary\" (click)=\"zoomToLayer()\" [disabled]=\"!layerIsZoomable()\" data-toggle=\"tooltip\"\n        [title]=\"'LAYERMANAGER.layerEditor.zoomToLayer' | translate  \">\n        <i class=\"fa-solid fa-magnifying-glass\"></i>\n      </button>\n      @if (wfsFilterEnabled()) {\n      <button class=\"btn btn-primary\" (click)=\"openWfsFilter()\" data-toggle=\"tooltip\"\n        [title]=\"'SIDEBAR.descriptions.WFS_FILTER' | translate  \">\n        <i class=\"fa-solid fa-filter\"></i>\n      </button>\n      }\n      <button class=\"btn btn-primary\" (click)=\"styleLayer()\" [disabled]=\"!layerIsStylable()\" data-toggle=\"tooltip\"\n        [title]=\"'LAYERMANAGER.layerEditor.styleLayer' | translate  \"><i class=\"fa-solid fa-paintbrush\"></i></button>\n      <button class=\"btn btn-primary\" (click)=\"toggleLayerRename()\" data-toggle=\"tooltip\"\n        [title]=\"'COMMON.renameLayer' | translate  \"><i class=\"fa-solid fa-font\"></i></button>\n      @if (isVectorLayer()) {\n      <button class=\"btn btn-primary\" (click)=\"createSaveDialog()\" data-toggle=\"tooltip\"\n        [title]=\"'LAYERMANAGER.layerEditor.savegeojson' | translate  \">\n        <i class=\"fa-solid fa-floppy-disk\"></i>\n      </button>\n      }\n      <button class=\"btn btn-primary\" (click)=\"copyLayer()\" data-toggle=\"tooltip\"\n        [title]=\"'COMMON.copyLayer' | translate  \"><i class=\"fa-solid fa-copy\"></i></button>\n      @if (isLayerRemovable()) {\n      <button class=\"btn btn-danger\" (click)=\"removeLayer()\" data-toggle=\"tooltip\"\n        [title]=\"'COMMON.removeLayer' | translate  \"><i class=\"fa-solid fa-trash\"></i></button>\n      }\n\n    </div>\n  </div>\n  }\n\n</div>\n","import {Injectable, inject} from '@angular/core';\n\nimport {HsLayerDescriptor, HsSublayer} from 'hslayers-ng/types';\nimport {HsLayerEditorSublayerService} from '../editor/sublayers/layer-editor-sub-layer.service';\nimport {HsLayerManagerService} from 'hslayers-ng/services/layer-manager';\nimport {isLayerQueryable} from 'hslayers-ng/services/utils';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class HsLayerListService {\n  hsLayerManagerService = inject(HsLayerManagerService);\n  hsLayerEditorSublayerService = inject(HsLayerEditorSublayerService);\n\n  /**\n   * Controls state of layer's sublayers checkboxes with layer visibility changes\n   * @param layer - Selected layer\n   */\n  toggleSublayersVisibility(layer: HsLayerDescriptor): void {\n    if (layer._sublayers) {\n      if (!layer.visible) {\n        this.updateSublayersVisibility(layer._sublayers, false);\n      } else {\n        this.restoreSublayersVisibility(layer._sublayers);\n      }\n    }\n  }\n\n  /**\n   * Recursively updates the visibility of sublayers and stores their previous visibility state\n   * @param sublayers - Array of sublayers to update\n   * @param visible - The new visibility state to set\n   */\n  private updateSublayersVisibility(\n    sublayers: HsSublayer[],\n    visible: boolean,\n  ): void {\n    sublayers.forEach((sublayer) => {\n      sublayer.previousVisible = sublayer.visible;\n      sublayer.visible = visible;\n      if (sublayer.sublayers) {\n        this.updateSublayersVisibility(sublayer.sublayers, visible);\n      }\n    });\n  }\n\n  /**\n   * Recursively restores the visibility of sublayers based on their previous visibility state\n   * @param sublayers - Array of sublayers to restore\n   */\n  private restoreSublayersVisibility(sublayers: HsSublayer[]): void {\n    sublayers.forEach((sublayer) => {\n      sublayer.visible = sublayer.previousVisible ?? true;\n      if (sublayer.sublayers) {\n        this.restoreSublayersVisibility(sublayer.sublayers);\n      }\n    });\n  }\n\n  /**\n   * Test if layer is queryable (WMS layer with Info format)\n   * @param layer_container - Selected layer - wrapped in layer object\n   * @returns Boolean indicating if the layer is queryable\n   */\n  isLayerQueryable(layer_container: HsLayerDescriptor): boolean {\n    return isLayerQueryable(layer_container.layer);\n  }\n}\n","import {AsyncPipe, CommonModule} from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnInit,\n  ViewContainerRef,\n  ViewRef,\n  inject,\n  viewChild,\n} from '@angular/core';\nimport {Observable, filter, map, startWith} from 'rxjs';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {\n  HsDialogComponent,\n  HsDialogContainerService,\n} from 'hslayers-ng/common/dialogs';\nimport {HsLayerDescriptor} from 'hslayers-ng/types';\nimport {HsLayerEditorService} from '../editor/layer-editor.service';\nimport {HsLayerManagerService} from 'hslayers-ng/services/layer-manager';\nimport {getBase} from 'hslayers-ng/common/extensions';\n\n@Component({\n  selector: 'hs-gallery-editor-dialog',\n  template: `\n    <div\n      class=\"modal in hs-set-permissions-dialog\"\n      tabindex=\"-1\"\n      role=\"dialog\"\n      aria-hidden=\"true\"\n    >\n      <div class=\"modal-dialog\">\n        <div class=\"modal-content\">\n          <div class=\"modal-header\">\n            <h4 class=\"modal-title text-truncate\">\n              {{ 'LAYERS.' + (title | async) | translate : {fallbackValue: (title | async)} }}\n            </h4>\n            <button\n              type=\"button\"\n              (click)=\"close()\"\n              class=\"btn-close\"\n              data-dismiss=\"modal\"\n              [attr.aria-label]=\"'COMMON.close' | translate\"\n            ></button>\n          </div>\n          <div class=\"modal-body\" style=\"overflow-y:auto\">\n            <ng-container #editor> </ng-container>\n          </div>\n        </div>\n      </div>\n    </div>\n  `,\n  imports: [CommonModule, TranslatePipe, AsyncPipe],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HsGalleryEditorDialogComponent\n  implements HsDialogComponent, OnInit\n{\n  @Input() data: {layer: HsLayerDescriptor};\n  title: Observable<string>;\n  viewRef: ViewRef;\n\n  editor = viewChild('editor', {read: ViewContainerRef});\n\n  private hsDialogContainerService = inject(HsDialogContainerService);\n  private hsLayerEditorService = inject(HsLayerEditorService);\n  private hsLayerManagerService = inject(HsLayerManagerService);\n\n  constructor() {\n    toObservable(this.hsLayerManagerService.data.folders)\n      .pipe(\n        filter((_) => !getBase(this.data.layer.layer)),\n        takeUntilDestroyed(),\n      )\n      .subscribe((folders) => {\n        this.close();\n      });\n  }\n\n  close() {\n    this.hsLayerEditorService.createLayerEditor(this.editor(), this.data.layer);\n    this.hsDialogContainerService.destroy(this);\n  }\n\n  ngOnInit() {\n    this.hsLayerEditorService.createLayerEditor(this.editor(), this.data.layer);\n    this.title = this.hsLayerEditorService.layerTitleChange.pipe(\n      map((event) => event.newTitle),\n      startWith(this.data.layer.title),\n    );\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ViewChild,\n  inject,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nimport {NgbDropdown, NgbDropdownModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsDialogContainerService} from 'hslayers-ng/common/dialogs';\nimport {HsGalleryEditorDialogComponent} from './gallery-editor-dialog.component';\nimport {HsGuiOverlayBaseComponent} from 'hslayers-ng/common/panels';\nimport {HsLayerDescriptor} from 'hslayers-ng/types';\nimport {\n  HsLayerManagerService,\n  HsLayerManagerVisibilityService,\n  HsLayerSelectorService,\n} from 'hslayers-ng/services/layer-manager';\nimport {getBase} from 'hslayers-ng/common/extensions';\n\n@Component({\n  selector: 'hs-layer-manager-gallery',\n  templateUrl: './layer-manager-gallery.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CommonModule, TranslatePipe, NgbDropdownModule],\n})\nexport class HsLayerManagerGalleryComponent extends HsGuiOverlayBaseComponent {\n  hsLayerManagerService = inject(HsLayerManagerService);\n  private hsLayerSelectorService = inject(HsLayerSelectorService);\n  hsLayerManagerVisibilityService = inject(HsLayerManagerVisibilityService);\n\n  @ViewChild('galleryDropdown', {static: false}) dropdown: NgbDropdown;\n  name = 'basemapGallery';\n\n  private hsDialogContainerService = inject(HsDialogContainerService);\n\n  toggleBasemap(layer?: HsLayerDescriptor): void {\n    if (layer) {\n      if (!layer.active) {\n        this.hsLayerManagerVisibilityService.changeBaseLayerVisibility(\n          true,\n          layer,\n        );\n        this.dropdown.close();\n        const olLayer = this.hsLayerSelectorService.currentLayer?.layer;\n        if (!olLayer || getBase(olLayer)) {\n          this.hsLayerSelectorService.currentLayer = null;\n        }\n      }\n    } else {\n      this.dropdown.close();\n      this.hsLayerSelectorService.currentLayer = null;\n\n      this.hsLayerManagerVisibilityService.changeBaseLayerVisibility(\n        null,\n        null,\n      );\n    }\n  }\n\n  expandMenu(layer: HsLayerDescriptor): void {\n    this.hsDialogContainerService.create(HsGalleryEditorDialogComponent, {\n      layer,\n    });\n  }\n}\n","@if (isVisible$ | async) {\n  <div class=\"basemapGallery\" style=\"z-index: 101;\">\n    <div ngbDropdown placement=\"bottom-right\" class=\"btn-group btn-group-sm\" role=\"group\"\n      [attr.data-cy]=\"'basemap-gallery'\" #galleryDropdown=\"ngbDropdown\">\n      <button ngbDropdownToggle type=\"button\" class=\"btn rounded galleryButton btn-light text-secondary pt-0 pb-0\" style=\"font-size: 1rem\"\n        aria-haspopup=\"true\">\n        <i class=\"fa-solid fa-map-location-dot x-large p-0\" style=\"line-height: inherit;\"></i>\n      </button>\n      <div ngbDropdownMenu class=\"bg-transparent border-0 dropdown-menu galleryDropdown p-1 gap-2\">\n        @for (layer of hsLayerManagerService.data.baselayers; track layer) {\n          <div [attr.data-cy]=\"layer.title\"\n            (click)=\"toggleBasemap(layer);\" [ngStyle]=\"{'position':'relative'}\" class=\"m-0 galleryDropdownItem text-primary\">\n            <!-- Mini menu toggle -->\n            @if (layer.active) {\n              <div style=\"position:absolute;top:5px; right:5px;z-index:5\"\n                (click)=\"$event.preventDefault(); expandMenu(layer)\">\n                <span class=\"fa-solid fa-bars icon-small\"></span>\n              </div>\n            }\n            <img [ngClass]=\"{'active': layer.active}\" [src]=\"layer.thumbnail\"\n              [alt]=\"'LAYERMANAGER.basemapThumbnail' | translate \" style=\"width:100%\">\n            <a class=\"dropdown-item flex-grow-1 d-flex align-items-center text-truncate\"\n              [ngClass]=\"{'active': layer.active}\">{{'LAYERS.' + layer.title | translate : {fallbackValue: layer.title} }}</a>\n          </div>\n        }\n        <div (click)=\"toggleBasemap()\" class=\"galleryDropdownItem rounded-bottom-2\">\n          <div class=\"bg-light w-100\" style=\"height: 4.5em\"\n          [ngClass]=\"{'active': !hsLayerManagerVisibilityService.baselayersVisible}\"></div>\n          <a class=\"dropdown-item flex-grow-1 d-flex align-items-center text-truncate rounded-bottom-2\"\n            [ngClass]=\"{'active': !hsLayerManagerVisibilityService.baselayersVisible}\">{{'LAYERMANAGER.baseMapGallery.noBaseMap'\n          | translate }}</a>\n        </div>\n      </div>\n    </div>\n  </div>\n}\n","import {CommonModule} from '@angular/common';\nimport {\n  Component,\n  OnInit,\n  ViewContainerRef,\n  computed,\n  input,\n  viewChild,\n  inject,\n} from '@angular/core';\nimport {\n  NgbProgressbarModule,\n  NgbTooltipModule,\n} from '@ng-bootstrap/ng-bootstrap';\nimport {takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\nimport {filter, startWith} from 'rxjs';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsDimensionTimeService} from 'hslayers-ng/services/get-capabilities';\nimport {HsLayerDescriptor} from 'hslayers-ng/types';\nimport {HsLayerEditorService} from '../../editor/layer-editor.service';\nimport {HsLayerListService} from '../layer-manager-layerlist.service';\nimport {\n  HsLayerManagerService,\n  HsLayerManagerVisibilityService,\n  HsLayerSelectorService,\n} from 'hslayers-ng/services/layer-manager';\nimport {HsLayerManagerTimeEditorComponent} from '../../dimensions/layer-manager-time-editor.component';\nimport {\n  getExclusive,\n  getHsLaymanSynchronizing,\n} from 'hslayers-ng/common/extensions';\nimport {layerInvalid} from 'hslayers-ng/services/utils';\n\n@Component({\n  selector: 'hs-layer-list-item',\n  templateUrl: './layer-list-item.component.html',\n  imports: [\n    CommonModule,\n    NgbTooltipModule,\n    NgbProgressbarModule,\n    TranslatePipe,\n    HsLayerManagerTimeEditorComponent,\n  ],\n})\nexport class HsLayerListItemComponent implements OnInit {\n  hsConfig = inject(HsConfig);\n  private hsLayerManagerService = inject(HsLayerManagerService);\n  private hsLayerSelectorService = inject(HsLayerSelectorService);\n  private hsDimensionTimeService = inject(HsDimensionTimeService);\n  private hsLayerListService = inject(HsLayerListService);\n  private hsLayerManagerVisibilityService = inject(\n    HsLayerManagerVisibilityService,\n  );\n  private hsLayerEditorService = inject(HsLayerEditorService);\n\n  layer = input.required<HsLayerDescriptor>();\n\n  isSelected = computed(\n    () => this.hsLayerSelectorService.currentLayer === this.layer(),\n  );\n\n  abstract = computed(() =>\n    this.hsLayerManagerService.makeSafeAndTranslate(\n      'LAYERS',\n      this.layer().abstract,\n    ),\n  );\n\n  editor = viewChild('editor', {read: ViewContainerRef});\n  sublayers = viewChild('sublayers', {read: ViewContainerRef});\n\n  getExclusive = getExclusive;\n  getHsLaymanSynchronizing = getHsLaymanSynchronizing;\n  layerInvalid = layerInvalid;\n\n  layerId = computed(() => this.layer().idString());\n\n  isLayerQueryable = computed(() =>\n    this.hsLayerListService.isLayerQueryable(this.layer()),\n  );\n\n  layerTimeChanges = toSignal(\n    this.hsDimensionTimeService.layerTimeChanges.pipe(\n      filter(({layer}) => layer.layer === this.layer().layer),\n      //When list is recreated on panel toggle we dont automatically get\n      //update so check all layers to make sure we display time editor if necessary\n      startWith(true),\n      takeUntilDestroyed(),\n    ),\n  );\n\n  showLayerWmsT = computed(() => {\n    const layer = this.layer();\n    const layerTimeChanges = this.layerTimeChanges();\n    if (layerTimeChanges) {\n      return this.hsDimensionTimeService.layerIsWmsT(layer);\n    }\n    return false;\n  });\n\n  ngOnInit() {\n    /**\n     * Opens editor for layer specified in 'hs-layer-selected' url parameter\n     */\n    if (this.layer().layer.get('editorOnInit')) {\n      this.toggleEditor();\n      //Once editor is opened, set editorOnInit to false\n      this.layer().layer.set('editorOnInit', false);\n    }\n  }\n\n  toggleVisibility(): void {\n    this.hsLayerManagerVisibilityService.changeLayerVisibility(\n      !this.layer().visible,\n      this.layer(),\n    );\n    this.hsLayerListService.toggleSublayersVisibility(this.layer());\n  }\n\n  /**\n   * Toggles the layer editor for the current layer.\n   * Creates or removes the layer editor component in the designated view container.\n   */\n  toggleEditor(): void {\n    this.hsLayerEditorService.createLayerEditor(this.editor(), this.layer());\n  }\n\n  /**\n   * Toggles the sublayer editor for the current layer.\n   * Creates or removes the sublayer editor component in the designated view container.\n   */\n  toggleSublayers(): void {\n    this.hsLayerEditorService.createSublayerEditor(\n      this.sublayers(),\n      this.layer(),\n    );\n  }\n}\n","@let isInvalid = layerInvalid(this.layer());\n<li [id]=\"layerId()\" class=\"list-group-item hs-lm-item my-2 my-md-0\" [attr.data-test]=\"layer().title\" [ngClass]=\"{\n    'hs-lm-detail-activated': isSelected(),\n    'grayed': layer().grayed === true\n  }\">\n  <div class=\"d-flex\">\n    <div class=\"p-0\" [ngClass]=\"getExclusive(layer().layer) ? 'exclusive' : ''\">\n      <button type=\"button\" class=\"btn btn-sm btn-light hs-lm-item-visibility\" (click)=\"toggleVisibility()\"\n        [ngClass]=\"layer().visible ? 'hs-checkmark' : 'hs-uncheckmark'\"></button>\n    </div>\n    <ng-template #abstractTooltip>\n      <span [innerHtml]=\"abstract()\"></span>\n    </ng-template>\n    <div class=\"align-items-center p-0 hs-lm-item-title flex-grow-1\" (click)=\"toggleSublayers()\"\n      style=\"word-break:break-word;\" [ngClass]=\"{'hover': layer().hasSublayers === true}\"\n      [ngbTooltip]=\"layer().abstract ? abstractTooltip : ''\" [closeDelay]=\"hsConfig.layerTooltipDelay || 0\">\n      {{ 'LAYERS.' + layer().title | translate : {fallbackValue: layer().title} }}\n    </div>\n    @if (layer().hasSublayers) {\n    <div class=\"hs-sublayer-toggle p-0 me-1 ms-1 info_btn\" style=\"flex-grow: 100; align-self: center;\"\n      (click)=\"toggleSublayers()\">\n      <span class=\"me-1\" [ngClass]=\"\n            isSelected &&\n            layer().sublayers\n              ? 'fa-solid fa-chevron-right'\n              : 'fa-solid fa-chevron-down'\n          \"></span>\n    </div>\n    }\n    @if (isInvalid) {\n    <div class=\"p-0 \" >\n      <i class=\"fa-solid fa-triangle-exclamation hs-lm-warning-scale\"\n        [title]=\"'LAYERMANAGER.layerList.noAvailableInScale' | translate\" data-toggle=\"tooltip\" data-container=\"body\"\n        data-placement=\"auto\" [hidden]=\"!layer().grayed\" (click)=\"$event.stopPropagation()\"></i>\n    </div>\n    <div class=\"p-0\" >\n      <i class=\"fa-solid fa-triangle-exclamation alert-danger bg-white hs-lm-warning-error\"\n      [title]=\"'LAYERMANAGER.layerList.layerNotAvailable' | translate\" data-toggle=\"tooltip\" data-container=\"body\"\n      data-placement=\"auto\" (click)=\"$event.stopPropagation()\"></i>\n    </div>\n  }\n    <div class=\"p-0\" [hidden]=\"!getHsLaymanSynchronizing(layer().layer)\">\n      <i class=\"fa-solid fa-cloud\" [title]=\"'LAYERMANAGER.layerList.sendingToLayman' | translate\"\n        data-toggle=\"tooltip\" data-container=\"body\" data-placement=\"auto\" (click)=\"$event.stopPropagation()\"></i>\n    </div>\n    <div class=\"p-0\" [hidden]=\"!isLayerQueryable()\">\n      <i class=\"fa-solid fa-circle-info hs-lm-queryable\" [title]=\"'LAYERMANAGER.layerList.layerIsQueryable' | translate\"\n        (click)=\"$event.stopPropagation()\"></i>\n    </div>\n    <div class=\"ps-1 info_btn me-1 text-secondary dropdown-toggle\" (click)=\"toggleEditor()\">\n      <span class=\"fa-solid fa-gears\" [title]=\"'COMMON.info' | translate\" data-toggle=\"tooltip\"\n        data-container=\"body\" data-placement=\"auto\"></span>\n    </div>\n  </div>\n  @if (showLayerWmsT()) {\n  <hs-layer-manager-time-editor [layer]=\"layer()\" class=\"d-flex\">\n  </hs-layer-manager-time-editor>\n  }\n  <ngb-progressbar [value]=\"layer().loadProgress.percents\" height=\"2px\" [animated]=\"true\"\n    [ngClass]=\"{'loaded': layer().loadProgress?.loaded}\"></ngb-progressbar>\n</li>\n<ng-container #sublayers></ng-container>\n<ng-container #editor></ng-container>\n","import {AsyncPipe} from '@angular/common';\nimport {Component, Input, inject} from '@angular/core';\nimport {Observable, map} from 'rxjs';\nimport {combineLatestWith, filter, startWith} from 'rxjs/operators';\nimport {toObservable} from '@angular/core/rxjs-interop';\n\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsLayerDescriptor, HsLayermanagerFolder} from 'hslayers-ng/types';\nimport {HsLayerListItemComponent} from './layer-list-item/layer-list-item.component';\nimport {HsLayerManagerService} from 'hslayers-ng/services/layer-manager';\n\n@Component({\n  selector: 'hs-layer-manager-layer-list',\n  templateUrl: './layer-manager-layerlist.component.html',\n  imports: [HsLayerListItemComponent, AsyncPipe],\n})\nexport class HsLayerListComponent {\n  hsConfig = inject(HsConfig);\n  hsLayerManagerService = inject(HsLayerManagerService);\n\n  @Input({required: true}) folder: string;\n\n  filteredLayers: Observable<HsLayerDescriptor[]>;\n\n  constructor() {\n    this.filteredLayers = this.hsLayerManagerService.data.filter.pipe(\n      startWith(''),\n      combineLatestWith(\n        toObservable(this.hsLayerManagerService.data.folders).pipe(\n          map((folders) => {\n            return folders.get(this.folder);\n          }),\n          startWith({layers: [], zIndex: 0}),\n        ),\n      ),\n      filter(([_, folder]) => !!folder),\n      map(([filter, folder]) => this.filterLayers(folder, filter)),\n    );\n  }\n\n  filterLayers(\n    folder: HsLayermanagerFolder,\n    filter: string,\n  ): HsLayerDescriptor[] {\n    const regex = new RegExp(filter, 'i');\n    return folder.layers.filter(\n      (layer) => regex.test(layer.title) && layer.showInLayerManager,\n    );\n  }\n}\n","@if ((filteredLayers | async ).length>0) {\n  <div class=\"list-group-item hs-lm-list pb-1\">\n    <ul class=\"list-group row\">\n      @for (layer of filteredLayers | async ; track layer) {\n        <hs-layer-list-item\n          [layer]=\"layer\"\n        ></hs-layer-list-item>\n      }\n    </ul>\n  </div>\n}\n","import {CdkDragDrop, moveItemInArray} from '@angular/cdk/drag-drop';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  OnInit,\n  inject,\n} from '@angular/core';\n\nimport {buffer, debounceTime} from 'rxjs';\n\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsLayerShiftingService} from 'hslayers-ng/services/layer-shifting';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\n@Component({\n  selector: 'hs-layermanager-physical-layer-list',\n  templateUrl: './physical-layerlist.component.html',\n  styleUrls: ['./physical-layerlist.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class HsLayerPhysicalListComponent implements OnInit {\n  private hsEventBusService = inject(HsEventBusService);\n  private hsLayerShiftingService = inject(HsLayerShiftingService);\n  private cdr = inject(ChangeDetectorRef);\n\n  layerShiftingAppRef;\n\n  constructor() {\n    this.hsEventBusService.layerManagerUpdates\n      .pipe(\n        buffer(\n          // In case 100ms has passed without another emit => close buffer and emit value\n          this.hsEventBusService.layerManagerUpdates.pipe(debounceTime(100)),\n        ),\n        takeUntilDestroyed(),\n      )\n      .subscribe((layers) => {\n        this.hsLayerShiftingService.fillLayers();\n        //No layers or multiple eg. reset/multi removal.\n        if (layers.length === 0 || layers.length > 1) {\n          this.cdr.markForCheck();\n          return;\n        }\n        //Single layer most likely moved.\n        const layer = layers[0];\n        const layerFound = this.hsLayerShiftingService.layersCopy.find(\n          (wrapper) => wrapper.layer == layer,\n        );\n        if (layerFound !== undefined) {\n          layerFound.active = true;\n        }\n      });\n  }\n\n  ngOnInit(): void {\n    this.layerShiftingAppRef = this.hsLayerShiftingService;\n    this.hsLayerShiftingService.fillLayers();\n  }\n\n  drop(event: CdkDragDrop<any[]>): void {\n    const draggedLayer = event.container.data[event.previousIndex];\n    const replacedLayer = event.container.data[event.currentIndex];\n\n    moveItemInArray(\n      this.layerShiftingAppRef.layersCopy,\n      event.previousIndex,\n      event.currentIndex,\n    );\n\n    this.hsLayerShiftingService.moveTo(draggedLayer, replacedLayer.layer);\n  }\n}\n","@if (layerShiftingAppRef.layersCopy.length !== 0) {\n  <div\n    class=\"list-group-item hs-lm-list pb-1\"\n    >\n    <div cdkDropList class=\"list-group row ps-1\" (cdkDropListDropped)=\"drop($event)\" [cdkDropListData]=\"layerShiftingAppRef.layersCopy\">\n      @for (layer of layerShiftingAppRef.layersCopy; track $index) {\n        <div class=\"list-group-item hs-lm-item p-2\"  [ngClass]=\"{ activeLayer: layer.active }\" cdkDrag>\n          <div\n            class=\"d-flex align-items-center justify-content-between p-0 hs-lm-item-title flex-grow-1\"\n            style=\"word-break: break-all; cursor: move\"\n            >\n            <p class=\"m-0\">{{ 'LAYERS.' + layer.title | translate : {fallbackValue: layer.title} }}</p>\n            <i class=\"fa-solid fa-up-down-left-right text-secondary me-1\"></i>\n          </div>\n        </div>\n      }\n    </div>\n  </div>\n}\n","import {Component, Input, ViewRef, inject} from '@angular/core';\n\nimport {HsCompositionsParserService} from 'hslayers-ng/services/compositions';\nimport {\n  HsDialogComponent,\n  HsDialogContainerService,\n} from 'hslayers-ng/common/dialogs';\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsLayerManagerService} from 'hslayers-ng/services/layer-manager';\nimport {HsMapService} from 'hslayers-ng/services/map';\nimport {Layer} from 'ol/layer';\nimport {Source} from 'ol/source';\nimport {\n  getBase,\n  getRemovable,\n  getShowInLayerManager,\n} from 'hslayers-ng/common/extensions';\n\n@Component({\n  selector: 'hs-layermanager-remove-all-dialog',\n  templateUrl: './remove-all-dialog.component.html',\n  standalone: false,\n})\nexport class HsLayerManagerRemoveAllDialogComponent\n  implements HsDialogComponent\n{\n  hsLayerManagerService = inject(HsLayerManagerService);\n  hsDialogContainerService = inject(HsDialogContainerService);\n  hsEventBusService = inject(HsEventBusService);\n  hsCompositionsParserService = inject(HsCompositionsParserService);\n  private hsMapService = inject(HsMapService);\n\n  @Input() data: any;\n  viewRef: ViewRef;\n\n  /**\n   * Remove all non-base layers that were added to the map by user.\n   * Doesn't remove layers added through app config (In case we want it to be 'removable', it can be set to true in the config.)\n   */\n  removeAllLayers(reloadComposition?: boolean): void {\n    const to_be_removed = [];\n    this.hsMapService\n      .getMap()\n      .getLayers()\n      .forEach((lyr: Layer<Source>) => {\n        if (getRemovable(lyr) == true) {\n          if (!getBase(lyr)) {\n            if (\n              getShowInLayerManager(lyr) == undefined ||\n              getShowInLayerManager(lyr) == true\n            ) {\n              to_be_removed.push(lyr);\n            }\n          }\n        }\n      });\n    while (to_be_removed.length > 0) {\n      this.hsMapService.getMap().removeLayer(to_be_removed.shift());\n    }\n\n    this.hsEventBusService.addedLayersRemoved.next();\n\n    if (reloadComposition) {\n      this.hsEventBusService.compositionLoadStarts.next(\n        this.data.composition_id,\n      );\n    }\n    this.close();\n  }\n\n  close(): void {\n    this.hsDialogContainerService.destroy(this);\n  }\n}\n","<div class=\"modal hs-remove-all-dialog in\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n  <div class=\"modal-dialog\">\n    <div class=\"modal-content\">\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title\">\n          {{'PANEL_HEADER.LM' | translate }}\n        </h4>\n        <button (click)=\"close()\" class=\"btn-close\" data-dismiss=\"modal\"\n          [attr.aria-label]=\"'COMMON.close' | translate \">\n        </button>\n      </div>\n      <div class=\"modal-body\" style=\"max-height:600px; overflow-y:auto\">\n      {{'LAYERMANAGER.dialogRemoveAll.dialogMessage' | translate }}</div>\n      <div class=\"modal-footer\">\n        <button class=\"btn btn-primary\" (click)=\"removeAllLayers(false);\"\n          data-dismiss=\"modal\">{{'LAYERMANAGER.dialogRemoveAll.removeAllAdded' | translate\n        }}</button>\n        @if (hsCompositionsParserService.currentCompositionRecord | async) {\n          <button class=\"btn btn-primary\" (click)=\"removeAllLayers(true)\"\n          data-dismiss=\"modal\">{{'LAYERMANAGER.dialogRemoveAll.reloadComposition' | translate}}</button>\n        }\n        <button class=\"btn btn-secondary\" (click)=\"close()\" data-dismiss=\"modal\">{{'COMMON.no' |\n        translate}}</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  OnInit,\n  ViewChild,\n  signal,\n  inject,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {Layer} from 'ol/layer';\nimport {Observable, fromEvent, merge, of, throwError, timer} from 'rxjs';\nimport {Source} from 'ol/source';\nimport {\n  catchError,\n  debounce,\n  debounceTime,\n  distinctUntilChanged,\n  filter,\n  map,\n  retry,\n  share,\n  startWith,\n  switchMap,\n  take,\n} from 'rxjs/operators';\n\nimport {HsCommonLaymanService} from 'hslayers-ng/common/layman';\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsDialogContainerService} from 'hslayers-ng/common/dialogs';\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsLayerDescriptor, HsTerrainLayerDescriptor} from 'hslayers-ng/types';\nimport {HsLayerListService} from './logical-list/layer-manager-layerlist.service';\nimport {HsLayerManagerRemoveAllDialogComponent} from './dialogs/remove-all-dialog.component';\nimport {\n  HsLayerManagerService,\n  HsLayerManagerVisibilityService,\n  HsLayerSelectorService,\n} from 'hslayers-ng/services/layer-manager';\nimport {HsPanelBaseComponent} from 'hslayers-ng/common/panels';\nimport {HsRemoveLayerDialogService} from 'hslayers-ng/common/remove-multiple';\nimport {HslayersService} from 'hslayers-ng/core';\nimport {\n  getActive,\n  getAttribution,\n  getThumbnail,\n  getTitle,\n} from 'hslayers-ng/common/extensions';\n\n@Component({\n  selector: 'hs-layer-manager',\n  templateUrl: './layer-manager.component.html',\n  standalone: false,\n})\nexport class HsLayerManagerComponent\n  extends HsPanelBaseComponent\n  implements OnInit, AfterViewInit\n{\n  hsCore = inject(HslayersService);\n  hsLayerManagerService = inject(HsLayerManagerService);\n  hsEventBusService = inject(HsEventBusService);\n  hsDialogContainerService = inject(HsDialogContainerService);\n  hsConfig = inject(HsConfig);\n  hsLayerListService = inject(HsLayerListService);\n  private hsRemoveLayerDialogService = inject(HsRemoveLayerDialogService);\n  hsLayerSelectorService = inject(HsLayerSelectorService);\n  hsLayerManagerVisibilityService = inject(HsLayerManagerVisibilityService);\n  private hsCommonLaymanService = inject(HsCommonLaymanService);\n\n  @ViewChild('filterInput', {static: false}) filterInput: ElementRef;\n\n  filteredBaselayers$: Observable<HsLayerDescriptor[]>;\n  filteredTerrainlayers$: Observable<HsTerrainLayerDescriptor[]>;\n\n  map: any;\n  shiftDown = false;\n  allLayersVisible = false;\n  composition_id: string;\n  layerlistVisible: boolean;\n  hovering: boolean;\n  physicalLayerListEnabled = signal(false);\n  cesiumActive$: Observable<boolean>;\n  icons = [\n    'bag1.svg',\n    'banking4.svg',\n    'bar.svg',\n    'beach17.svg',\n    'bicycles.svg',\n    'building103.svg',\n    'bus4.svg',\n    'cabinet9.svg',\n    'camping13.svg',\n    'caravan.svg',\n    'church15.svg',\n    'church1.svg',\n    'coffee-shop1.svg',\n    'disabled.svg',\n    'favourite28.svg',\n    'football1.svg',\n    'footprint.svg',\n    'gift-shop.svg',\n    'gps40.svg',\n    'gps41.svg',\n    'gps42.svg',\n    'gps43.svg',\n    'gps5.svg',\n    'hospital.svg',\n    'hot-air-balloon2.svg',\n    'information78.svg',\n    'library21.svg',\n    'location6.svg',\n    'luggage13.svg',\n    'monument1.svg',\n    'mountain42.svg',\n    'museum35.svg',\n    'park11.svg',\n    'parking28.svg',\n    'pharmacy17.svg',\n    'port2.svg',\n    'restaurant52.svg',\n    'road-sign1.svg',\n    'sailing-boat2.svg',\n    'ski1.svg',\n    'swimming26.svg',\n    'telephone119.svg',\n    'toilets2.svg',\n    'train-station.svg',\n    'university2.svg',\n    'warning.svg',\n    'wifi8.svg',\n  ];\n  getActive = getActive;\n  getTitle = getTitle;\n  getThumbnail = getThumbnail;\n  name = 'layerManager';\n  layerTooltipDelay = 0;\n\n  constructor() {\n    super();\n    this.cesiumActive$ = merge(\n      this.hsEventBusService.cesiumLoads.pipe(\n        map(({service}) => service !== null),\n      ),\n      this.hsEventBusService.mapLibraryChanges.pipe(\n        map((lib) => lib === 'cesium'),\n      ),\n    ).pipe(startWith(false));\n\n    this.hsEventBusService.compositionLoads\n      .pipe(takeUntilDestroyed())\n      .subscribe((data) => {\n        if (data.error == undefined) {\n          if (data.data != undefined && data.data.id != undefined) {\n            this.composition_id = data.data.id;\n          } else if (data.id != undefined) {\n            this.composition_id = data.id;\n          } else {\n            this.composition_id = null;\n          }\n        }\n      });\n\n    this.hsEventBusService.compositionDeletes\n      .pipe(takeUntilDestroyed())\n      .subscribe((composition) => {\n        if (composition.id == this.composition_id) {\n          this.composition_id = null;\n        }\n      });\n\n    this.hsEventBusService.mapResets\n      .pipe(takeUntilDestroyed())\n      .subscribe(() => {\n        this.composition_id = null;\n      });\n  }\n\n  /**\n   * Used in template to preserve order of data.folders map entries\n   */\n  keepOrder = (a, b) => {\n    return 0; // This will keep the order as is in the Map\n  };\n\n  ngAfterViewInit() {\n    /**\n     * Define string filter declared in service\n     */\n    this.hsLayerManagerService.data.filter = this.isVisible$.pipe(\n      /**\n       * Component is constructed despite not being visible (mainPanel) on app init\n       * Thus we cannot keep constructing this stream until layermanager is actually visible\n       * (input is available)\n       */\n      filter((visible) => !!visible),\n      //Make sure filterInput is created\n      debounceTime(0),\n      //Take only the first successful emission\n      take(1),\n      //Switch to 'input' event of filterInput\n      switchMap(() =>\n        fromEvent(this.filterInput.nativeElement, 'input').pipe(\n          //Extract event value (or use '' as default) and add index to to result value\n          map((event: any, index) => [event.target.value as string, index]),\n          //Init with empty string and no debounce\n          startWith(['', 0]),\n          //Use index to determine timer value. No debounce on init\n          debounce(([_, index]: [string, number]) =>\n            timer(index === 0 ? 0 : 300),\n          ),\n          //Return only fitler string\n          map(([value, _]) => value),\n          distinctUntilChanged(),\n        ),\n      ),\n      //Share result instead of executing separately for each subscriber\n      share(),\n    );\n\n    this.filteredBaselayers$ = this.createFilteredLayerObservable('baselayers');\n    //TODO: This should not be necessary for all hsl app\n    this.filteredTerrainlayers$ =\n      this.createFilteredLayerObservable('terrainLayers');\n  }\n\n  /**\n   * Create observable with error handling for selected layer type\n   */\n  // Overload signatures\n  createFilteredLayerObservable(\n    type: 'baselayers',\n  ): Observable<HsLayerDescriptor[]>;\n  createFilteredLayerObservable(\n    type: 'terrainLayers',\n  ): Observable<HsTerrainLayerDescriptor[]>;\n\n  //Implementation\n  createFilteredLayerObservable(\n    type: 'baselayers' | 'terrainLayers',\n  ): Observable<HsLayerDescriptor[] | HsTerrainLayerDescriptor[]> {\n    return this.hsLayerManagerService.data.filter.pipe(\n      switchMap((filter) => {\n        if (this.hsLayerManagerService.data[type].length === 0) {\n          return throwError(() => new Error(`No ${type} found`));\n        }\n        return of(filter);\n      }),\n      map((filter) => this.filterLayers(filter, type)),\n      retry({count: 3, delay: 50}),\n      catchError((err) => this.handleFilterLayerError(err, type)),\n    );\n  }\n\n  private handleFilterLayerError<T extends 'baselayers' | 'terrainLayers'>(\n    err: any,\n    type: T,\n  ): Observable<HsLayerDescriptor[] | HsTerrainLayerDescriptor[]> {\n    console.error(`Error filtering ${type}`, err);\n    if (err.message === `No ${type} found`) {\n      return this.emptyResult(type);\n    }\n    return this.emptyResult(type);\n  }\n\n  /**\n   * Return empty layers result as a result of error while filtering\n   */\n  private emptyResult<T extends 'baselayers' | 'terrainLayers'>(\n    type: T,\n  ): Observable<HsLayerDescriptor[] | HsTerrainLayerDescriptor[]> {\n    return type === 'baselayers'\n      ? of([] as HsLayerDescriptor[])\n      : of([] as HsTerrainLayerDescriptor[]);\n  }\n\n  ngOnInit(): void {\n    this.layerTooltipDelay = this.hsConfig.layerTooltipDelay;\n    this.layerlistVisible = true;\n    super.ngOnInit();\n  }\n\n  togglePhysicalLayerList() {\n    this.physicalLayerListEnabled.update((enabled) => !enabled);\n  }\n\n  changeBaseLayerVisibility(e?, layer?: HsLayerDescriptor) {\n    return this.hsLayerManagerVisibilityService.changeBaseLayerVisibility(\n      e,\n      layer,\n    );\n  }\n\n  changeTerrainLayerVisibility(e, layer: HsTerrainLayerDescriptor) {\n    return this.hsLayerManagerVisibilityService.changeTerrainLayerVisibility(\n      e,\n      layer,\n    );\n  }\n\n  changeLayerVisibility(toWhat: boolean, layer: HsLayerDescriptor) {\n    return this.hsLayerManagerVisibilityService.changeLayerVisibility(\n      toWhat,\n      layer,\n    );\n  }\n\n  setProp(layer: Layer<Source>, property, value): void {\n    layer.set(property, value);\n  }\n\n  filterLayers(\n    filter: string,\n    type: 'baselayers' | 'terrainLayers',\n  ): HsLayerDescriptor[] | HsTerrainLayerDescriptor[] {\n    const r = new RegExp(filter, 'i');\n    if (type === 'baselayers') {\n      // Filter and cast to HsLayerDescriptor[]\n      return this.hsLayerManagerService.data.baselayers.filter(\n        (layer) => r.test(layer.title) && layer.showInLayerManager,\n      ) as HsLayerDescriptor[];\n    }\n    // Filter and cast to HsTerrainLayerDescriptor[]\n    return this.hsLayerManagerService.data.terrainLayers.filter((layer) =>\n      r.test(layer.title),\n    ) as HsTerrainLayerDescriptor[];\n  }\n\n  toggleVisibilityForAll(): void {\n    this.allLayersVisible = !this.allLayersVisible;\n    this.hsLayerManagerService.data.layers.forEach((l) => {\n      this.hsLayerManagerVisibilityService.changeLayerVisibility(\n        this.allLayersVisible,\n        l,\n      );\n      this.hsLayerListService.toggleSublayersVisibility(l);\n    });\n  }\n\n  /**\n   * Removes layer from map object\n   * @param layer - Layer to remove\n   */\n  removeLayer(layer: Layer<Source>): void {\n    this.map.removeLayer(layer);\n  }\n\n  /**\n   * Creates remove-layer dialog which allows for single/multiple layer removal\n   */\n  removeMultipleLayers() {\n    this.hsRemoveLayerDialogService.removeMultipleLayers(\n      this.hsLayerManagerService.data.layers\n        .filter((layer) => layer.showInLayerManager)\n        .map((l) => {\n          return l.layer;\n        }),\n      this.hsCommonLaymanService.isAuthenticated()\n        ? ['map', 'mapcatalogue']\n        : ['map'],\n    );\n  }\n\n  /**\n   * Removes all layers which don't have 'removable' attribute\n   * set to false if user confirms the removal. Might reload composition again.\n   */\n  removeAllLayers(): void {\n    this.hsDialogContainerService.create(\n      HsLayerManagerRemoveAllDialogComponent,\n      {\n        composition_id: this.composition_id,\n      },\n    );\n  }\n  /**\n   * Determines if layer has copyright information available *\n   * @param layer - Selected layer (HsLayerManagerService.currentLayer)\n   */\n  hasCopyright(layer: HsLayerDescriptor): boolean | undefined {\n    if (!this.hsLayerSelectorService.currentLayer) {\n      return;\n    }\n    return getAttribution(layer.layer)?.onlineResource != undefined;\n  }\n\n  /**\n   * Test if layer (WMS) resolution is within map resolution interval\n   * @param layer - Selected layer\n   */\n  isLayerInResolutionInterval(layer: Layer<Source>): boolean {\n    return this.hsLayerManagerVisibilityService.isLayerInResolutionInterval(\n      layer,\n    );\n  }\n}\n","@if(isVisible$ | async){\n<div class=\"card panel-default hs-main-panel hs-layermanager-card\" [ngClass]=\"panelWidthClass\">\n    <hs-panel-header name=\"layerManager\" [panelTabs]=\"'LM'\">\n        <button mainButton class=\"btn btn-sm btn-outline-primary border-0 align-items-center d-flex gap-2\"\n            [class.text-bg-primary]=\"physicalLayerListEnabled()\"\n            (click)=\"togglePhysicalLayerList()\" [title]=\"'LAYERMANAGER.enablePhysicalLayerList'\n            | translate\">\n            {{'COMMON.reorder' | translate}}\n            <i class=\"fa-solid fa-layer-group\"></i>\n        </button>\n        <extra-buttons>\n            <a class=\"dropdown-item\" (click)=\"removeMultipleLayers()\">\n                <i class=\"fa-solid fa-trash\"></i>&nbsp;{{'DRAW.removeMultipleLayers'\n                | translate }}\n            </a>\n            <a class=\"dropdown-item\" (click)=\"removeAllLayers()\">\n                <i class=\"fa-solid fa-trash\"></i>&nbsp;{{'LAYERMANAGER.dialogRemoveAll.removeAllAdded'\n                | translate }}\n            </a>\n            <a class=\"dropdown-item\" (click)=\"hsCore.resetMap()\">\n                <i class=\"fa-solid fa-rotate-right\"></i>&nbsp;{{'LAYERMANAGER.resetMap'\n                | translate }}\n            </a>\n            @if(hsLayerManagerService.data.layers?.length > 0 && !physicalLayerListEnabled()){\n            <a class=\"dropdown-item\" (click)=\"toggleVisibilityForAll()\">\n                <i class=\"fa-solid fa-check-circle\" [ngClass]=\"allLayersVisible ? 'hs-checkmark' : 'hs-uncheckmark'\"></i>\n                {{'LAYERMANAGER.toggleAllLayerVisibility'|translate}}\n            </a>\n            }\n        </extra-buttons>\n    </hs-panel-header>\n    <div class=\"card-body hs-lm-panel\">\n        <div><input #filterInput type=\"text\" class=\"form-control hs-filter\"\n                [placeholder]=\"'COMMON.filter' | translate\" name=\"hs-layermanager-layer-filter\">\n        </div>\n\n        <!-- BASEMAP LAYERS -->\n        @if(!hsLayoutService.componentEnabled('basemapGallery')){\n        <ul class=\"list-group hs-lm-baselayerlist\">\n            <!-- TODO: Remove function call from template -->\n            <li class=\"list-group-item hs-lm-item hs-lm-header clearfix list-group-item-primary\">\n                <div class=\"d-flex\">\n                    <div class=\"p-0 flex-grow-1 hs-lm-item-title\">\n                        <span class=\"align-middle\" style=\"line-height: 2em;\">\n                            {{'LAYERMANAGER.baselayers' | translate}}\n                        </span>\n                    </div>\n                    <div class=\"p-0\">\n                        <button type=\"button\" class=\"btn btn-sm hs-btn-baselayers\" (click)=\"changeBaseLayerVisibility()\"\n                            [ngClass]=\"hsLayerManagerVisibilityService.baselayersVisible ? 'hs-checkmark' : 'hs-uncheckmark'\"></button>\n                    </div>\n                </div>\n            </li>\n            @for(layer of filteredBaselayers$ | async; track $index){\n            <li class=\"list-group-item hs-lm-item my-2 my-md-0\"\n                [ngClass]=\"{'hs-lm-deactivated-layer': !layer.visible || !layer.active}\" [id]=\"layer.idString()\">\n                <div class=\"d-flex\">\n                    <div class=\"p-0\">\n                        <button type=\"button\" class=\"btn btn-sm btn-light hs-lm-item-visibility\"\n                            (click)=\"changeBaseLayerVisibility($event, layer);\"\n                            [ngClass]=\"(hsLayerManagerVisibilityService.baselayersVisible && layer.visible) ? 'hs-checkmark' : 'hs-uncheckmark'\"></button>\n                    </div>\n                    <ng-template #abstractTooltip>\n                        <span [innerHtml]=\"hsLayerManagerService.makeSafeAndTranslate('LAYERS', layer.abstract)\"></span>\n                    </ng-template>\n                    <div class=\"align-items-center p-0 flex-grow-1 hs-lm-item-title\" style=\"cursor:context-menu\"\n                        [ngClass]=\"{'fw-bold': layer.active, 'text-muted': layer.grayed}\"\n                        [ngbTooltip]=\"layer.abstract ? abstractTooltip : ''\" [closeDelay]=\"layerTooltipDelay\">\n                        {{'LAYERS.' + layer.title | translate : {fallbackValue: layer.title} }}\n                    </div>\n                    <!-- (click)=\"hsLayerManagerService.toggleLayerEditor(layer,'settings')\" -->\n                    <div class=\"ps-1 info_btn text-secondary dropdown-toggle\" style=\"cursor: pointer;\"\n                        >\n                        <span class=\"fa-solid fa-gears\" [title]=\"'COMMON.info' | translate\"\n                            data-toggle=\"tooltip\" data-container=\"body\" data-placement=\"auto\"></span>\n                    </div>\n                </div>\n                <ngb-progressbar [value]=\"layer.loadProgress.percents\" height=\"2px\" [animated]=\"true\"\n                    [ngClass]=\"{'loaded': layer.loadProgress?.loaded}\"></ngb-progressbar>\n            </li>\n            }\n        </ul>\n        }\n\n        <!-- TERRAIN LAYERS -->\n        @if(cesiumActive$ | async; as cesium){\n        <ul class=\"list-group hs-lm-baselayerlist\" [hidden]=\"!(hsLayerManagerService.data.terrainLayers.length > 0)\">\n            <li class=\"list-group-item hs-lm-item hs-lm-header clearfix\"\n                [ngClass]=\"cesium ? 'list-group-item-primary' : 'list-group-item-dark'\">\n                <div class=\"d-flex\">\n                    <div class=\"p-0 flex-grow-1 hs-lm-item-title\" [ngClass]=\"{'text-muted': cesium }\">\n                        <span class=\"align-middle\" style=\"line-height: 2em;\">\n                            {{ 'LAYERMANAGER.terrains' | translate}}\n                        </span>\n                    </div>\n                </div>\n            </li>\n            @for(layer of filteredTerrainlayers$ | async; track $index){\n            <li class=\"list-group-item hs-lm-item my-2 my-md-0\" [ngClass]=\" {'hs-lm-deactivated-layer': !layer.active}\">\n                <div class=\"d-flex \">\n                    <div class=\"p-0\">\n                        @if (cesium) {\n                        <button type=\"button\" class=\"btn btn-sm btn-light hs-lm-item-visibility\"\n                            (click)=\"changeTerrainLayerVisibility($event, layer)\"\n                            [ngClass]=\"(hsLayerManagerVisibilityService.baselayersVisible && layer.visible) ? 'hs-checkmark' : 'hs-uncheckmark'\"></button>\n                        } @else {\n                        <span class=\"btn btn-sm text-muted\">\n                            <i class=\"fa-solid fa-globe\"></i>\n                        </span>\n                        }\n                    </div>\n                    <ng-template #abstractTooltip>\n                        <span [innerHtml]=\"hsLayerManagerService.makeSafeAndTranslate('LAYERS', layer.abstract)\"></span>\n                    </ng-template>\n                    <div class=\"align-items-center p-0 flex-grow-1 hs-lm-item-title\" style=\"cursor:context-menu\"\n                        [ngClass]=\"{'fw-bold': layer.active, 'text-muted': layer.grayed}\"\n                        [ngbTooltip]=\"layer.abstract ? abstractTooltip : ''\" [closeDelay]=\"layerTooltipDelay\">\n                        {{'LAYERS.' + layer.title | translate : {fallbackValue: layer.title} }}\n                    </div>\n                </div>\n            </li>\n            }\n        </ul>\n        }\n\n\n        <!-- THEMATIC LAYERS -->\n        <ul class=\"list-group hs-lm-mapcontentlist\">\n            <!-- TODO: Remove function call from template -->\n            @if(!hsLayoutService.componentEnabled('basemapGallery')){\n            <li class=\"hs-lm-header hs-lm-item list-group-item-primary hs-lm-map-content-header list-group-item\"\n                style=\"margin-bottom: 0.2em;\">\n                <span class=\"align-middle\" style=\"line-height: 2em;\">{{ 'LAYERMANAGER.mapContent' | translate}}</span>\n            </li>\n            }\n            @if(!physicalLayerListEnabled()){\n            @for(entry of hsLayerManagerService.data.folders() | keyvalue :keepOrder; track entry.key){\n            <ul class=\"list-group hs-lm-layerlist mb-1\">\n                @if(hsLayerManagerService.data.folders().size > 1){\n\n                <li class=\"list-group-item hs-lm-layerlist-header list-group-item-primary\"\n                    (click)=\"entry.value.visible = !entry.value.visible\">\n                    <span class=\"mx-2 fa-solid fa-chevron-down\" style=\"min-width: 1rem; transition: transform 0.3s ease;\" [class.rotate-n90]=\"!entry.value.visible \"></span>\n                    <span>{{'LAYERMANAGER.' + entry.key | translate }}&nbsp;</span>\n                </li>\n                }\n                <div [hidden]=\"!entry.value.visible\">\n                    <li>\n                        <hs-layer-manager-layer-list [folder]=\"entry.key\"></hs-layer-manager-layer-list>\n                    </li>\n                </div>\n            </ul>\n            }\n            }\n            @else {\n\n            <ul class=\"list-group hs-lm-layerlist mb-1\">\n                <li>\n                    <hs-layermanager-physical-layer-list></hs-layermanager-physical-layer-list>\n                </li>\n            </ul>\n            }\n            <!--\n        <div class=\"btn-group\" data-toggle=\"buttons\">\n            <label class=\"btn btn-secondary active\">\n                <input type=\"radio\" name=\"options\" id=\"option1\" checked> Logical order\n            </label>\n            <label class=\"btn btn-secondary\">\n                <input type=\"radio\" name=\"options\" id=\"option2\"> Physical order\n            </label>\n        </div> -->\n        </ul>\n    </div>\n</div>\n}\n","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DragDropModule} from '@angular/cdk/drag-drop';\nimport {FormsModule} from '@angular/forms';\nimport {\n  NgbDatepickerModule,\n  NgbDropdownModule,\n  NgbProgressbarModule,\n  NgbTooltipModule,\n} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {FilterPipe} from 'hslayers-ng/common/pipes';\nimport {HsClipboardTextComponent} from 'hslayers-ng/common/clipboard-text';\nimport {HsClusterWidgetComponent} from './widgets/cluster-widget.component';\nimport {HsColormapPickerModule} from 'hslayers-ng/common/color-map-picker';\nimport {HsCopyLayerDialogComponent} from './dialogs/copy-layer-dialog.component';\nimport {HsExtentWidgetComponent} from './widgets/extent-widget/extent-widget.component';\nimport {HsIdwWidgetComponent} from './widgets/idw-widget.component';\nimport {HsLayerEditorDimensionsComponent} from './dimensions/layer-editor-dimensions.component';\nimport {HsLayerEditorWidgetBaseComponent} from './widgets/layer-editor-widget-base.component';\nimport {HsLayerFolderWidgetComponent} from './widgets/layer-folder-widget/layer-folder-widget.component';\nimport {HsLayerListComponent} from './logical-list/layer-manager-layerlist.component';\nimport {HsLayerManagerComponent} from './layer-manager.component';\nimport {HsLayerManagerRemoveAllDialogComponent} from './dialogs/remove-all-dialog.component';\nimport {HsLayerManagerRemoveLayerDialogComponent} from './dialogs/remove-layer-dialog.component';\nimport {HsLayerPhysicalListComponent} from './physical-list/physical-layerlist.component';\nimport {HsLegendModule} from 'hslayers-ng/components/legend';\nimport {HsLegendWidgetComponent} from './widgets/legend-widget.component';\nimport {HsMetadataWidgetComponent} from './widgets/metadata-widget.component';\nimport {HsOpacityWidgetComponent} from './widgets/opacity-widget.component';\nimport {\n  HsPanelHeaderComponent,\n  HsPanelHelpersModule,\n} from 'hslayers-ng/common/panels';\nimport {HsScaleWidgetComponent} from './widgets/scale-widget.component';\nimport {HsTypeWidgetComponent} from './widgets/type-widget.component';\nimport {HsWmsSourceWidgetComponent} from './widgets/wms-source-widget/wms-source-widget.component';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  declarations: [\n    HsLayerManagerComponent,\n    HsLayerEditorDimensionsComponent,\n    HsLayerManagerRemoveAllDialogComponent,\n    HsCopyLayerDialogComponent,\n    HsLayerManagerRemoveLayerDialogComponent,\n    HsLayerEditorWidgetBaseComponent,\n    HsLayerPhysicalListComponent,\n    HsTypeWidgetComponent,\n    HsMetadataWidgetComponent,\n    HsScaleWidgetComponent,\n    HsClusterWidgetComponent,\n    HsIdwWidgetComponent,\n    HsLegendWidgetComponent,\n    HsOpacityWidgetComponent,\n    HsExtentWidgetComponent,\n  ],\n  imports: [\n    HsLayerListComponent,\n    TranslatePipe,\n    CommonModule,\n    FormsModule,\n    HsPanelHelpersModule,\n    HsLegendModule,\n    NgbDatepickerModule,\n    NgbDropdownModule,\n    NgbTooltipModule,\n    NgbProgressbarModule,\n    DragDropModule,\n    HsColormapPickerModule,\n    HsWmsSourceWidgetComponent,\n    HsLayerFolderWidgetComponent,\n    HsPanelHeaderComponent,\n    FilterPipe,\n    HsClipboardTextComponent,\n  ],\n  exports: [\n    HsLayerManagerComponent,\n    HsLayerEditorDimensionsComponent,\n    HsLayerListComponent,\n    HsLayerManagerRemoveAllDialogComponent,\n    HsCopyLayerDialogComponent,\n    HsLayerManagerRemoveLayerDialogComponent,\n    HsLayerPhysicalListComponent,\n    HsTypeWidgetComponent,\n    HsMetadataWidgetComponent,\n    HsScaleWidgetComponent,\n    HsClusterWidgetComponent,\n    HsLegendWidgetComponent,\n    HsOpacityWidgetComponent,\n    HsIdwWidgetComponent,\n  ],\n})\nexport class HsLayerManagerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i1","i2","i4","ImageLayer","startWith","filter","map","debounceTime","i1.HsLayerListComponent","i5.HsLayerPhysicalListComponent","i6"],"mappings":"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"}