{"version":3,"file":"hslayers-ng-components-styler.mjs","sources":["../../../projects/hslayers/components/styler/filters/scale-denominator.component.ts","../../../projects/hslayers/components/styler/filters/scale-denominator.component.html","../../../projects/hslayers/components/styler/symbolizers/color-picker/color-picker.service.ts","../../../projects/hslayers/components/styler/symbolizers/color-picker/color-picker.component.ts","../../../projects/hslayers/components/styler/symbolizers/color-picker/color-picker.component.html","../../../projects/hslayers/components/styler/symbolizers/symbolizer-kind.enum.ts","../../../projects/hslayers/components/styler/symbolizers/slider/slider.component.ts","../../../projects/hslayers/components/styler/symbolizers/slider/slider.component.html","../../../projects/hslayers/components/styler/symbolizers/mark-symbolizer/mark-symbolizer.component.ts","../../../projects/hslayers/components/styler/symbolizers/mark-symbolizer/mark-symbolizer.component.html","../../../projects/hslayers/components/styler/symbolizers/select-icon-dialog/select-icon-dialog.component.ts","../../../projects/hslayers/components/styler/symbolizers/select-icon-dialog/select-icon-dialog.component.html","../../../projects/hslayers/components/styler/symbolizers/icon-symbolizer/icon-symbolizer.component.ts","../../../projects/hslayers/components/styler/symbolizers/icon-symbolizer/icon-symbolizer.component.html","../../../projects/hslayers/components/styler/symbolizers/fill-symbolizer/fill-symbolizer.component.ts","../../../projects/hslayers/components/styler/symbolizers/fill-symbolizer/fill-symbolizer.component.html","../../../projects/hslayers/components/styler/symbolizers/line-symbolizer/line-symbolizer.component.ts","../../../projects/hslayers/components/styler/symbolizers/line-symbolizer/line-symbolizer.component.html","../../../projects/hslayers/components/styler/symbolizers/text-symbolizer/text-symbolizer.component.ts","../../../projects/hslayers/components/styler/symbolizers/text-symbolizer/text-symbolizer.component.html","../../../projects/hslayers/components/styler/symbolizers/symbolizer.component.ts","../../../projects/hslayers/components/styler/symbolizers/symbolizer.component.html","../../../projects/hslayers/components/styler/symbolizers/symbolizer-list-item/symbolizer-list-item.component.ts","../../../projects/hslayers/components/styler/symbolizers/symbolizer-list-item/symbolizer-list-item.component.html","../../../projects/hslayers/components/styler/rule/rule.component.ts","../../../projects/hslayers/components/styler/rule/rule.component.html","../../../projects/hslayers/components/styler/edit-dialog/edit-dialog.component.ts","../../../projects/hslayers/components/styler/edit-dialog/edit-dialog.component.html","../../../projects/hslayers/components/styler/rule/rule-list-item/rule-list-item.component.ts","../../../projects/hslayers/components/styler/rule/rule-list-item/rule-list-item.component.html","../../../projects/hslayers/components/styler/add-colormap.component.ts","../../../projects/hslayers/components/styler/add-colormap.component.html","../../../projects/hslayers/components/styler/styler.component.ts","../../../projects/hslayers/components/styler/styler.component.html","../../../projects/hslayers/components/styler/styles.ts","../../../projects/hslayers/components/styler/styles.module.ts","../../../projects/hslayers/components/styler/hslayers-ng-components-styler.ts"],"sourcesContent":["import {Component, Input, OnInit} from '@angular/core';\n\nimport {Rule} from 'geostyler-style';\n\nimport {HsStylerPartBaseComponent} from 'hslayers-ng/services/styler';\n\n@Component({\n  selector: 'hs-scale-denominator',\n  templateUrl: './scale-denominator.component.html',\n  standalone: false,\n})\nexport class HsScaleDenominatorComponent\n  extends HsStylerPartBaseComponent\n  implements OnInit\n{\n  @Input() rule: Rule;\n\n  scaleDenominator: {min: number; max: number} = {min: null, max: null};\n\n  ngOnInit(): void {\n    Object.assign(this.scaleDenominator, this.rule.scaleDenominator);\n  }\n\n  emitChange(): void {\n    if (\n      this.scaleDenominator.min === null &&\n      this.scaleDenominator.max === null\n    ) {\n      delete this.rule.scaleDenominator;\n      super.emitChange();\n      return;\n    }\n\n    if (this.rule.scaleDenominator == undefined) {\n      this.rule.scaleDenominator = {};\n    }\n    Object.assign(this.rule.scaleDenominator, this.scaleDenominator);\n    //After assign to keep max input empty -> prevent 'out of range' warning\n    if (\n      this.rule.scaleDenominator.max === null &&\n      this.rule.scaleDenominator.min !== null\n    ) {\n      this.rule.scaleDenominator.max = Infinity;\n    }\n    super.emitChange();\n  }\n}\n","<form class=\"form\">\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-2 w-50\">{{'STYLER.minScale' | translate }}:</div>\n    <div class=\"p-1 w-50\">\n      <div class=\"input-group\">\n        <div class=\"input-group-text\">1:</div>\n        <input class=\"form-control\" type=\"number\" [ngModelOptions]=\"{standalone: true}\"\n          [(ngModel)]=\"scaleDenominator.min\" (change)=\"emitChange()\" />\n      </div>\n    </div>\n  </div>\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-2 w-50\">{{'STYLER.maxScale' | translate }}:</div>\n    <div class=\"p-1 w-50\">\n      <div class=\"input-group\">\n        <div class=\"input-group-text\">1:</div>\n        <input class=\"form-control\" type=\"number\" [ngModelOptions]=\"{standalone: true}\"\n          [(ngModel)]=\"scaleDenominator.max\" (change)=\"emitChange()\" />\n      </div>\n    </div>\n  </div>\n</form>\n","import {Injectable} from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class HsColorPickerService {\n  constructor() {}\n  addAlpha(color: string, opacity: number): string {\n    if (opacity == undefined) {\n      return color;\n    }\n    const t = {...this.hex2Rgb(color), a: opacity};\n    return `rgba(${t.r}, ${t.g}, ${t.b}, ${t.a})`;\n  }\n\n  hex2Rgb(aRgbHex: string): {r: number; g: number; b: number} {\n    if (!aRgbHex) {\n      return {r: 0, g: 0, b: 0};\n    }\n    const rgb = aRgbHex.replace('#', '').match(/.{1,2}/g);\n    return {\n      r: parseInt(rgb[0], 16),\n      g: parseInt(rgb[1], 16),\n      b: parseInt(rgb[2], 16),\n    };\n  }\n\n  generateFontColor(rgbColor: Array<number>): string {\n    const [r, g, b] = rgbColor;\n    const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b));\n    return hsp > 127.5 ? 'black' : 'white';\n  }\n\n  colorPickerStyle(bcolor: string, color: string): any {\n    return {\n      'background-color': bcolor,\n      'color': color,\n    };\n  }\n}\n","import {Component, Input, OnInit, inject} from '@angular/core';\n\nimport {ColorEvent} from 'ngx-color';\nimport {FillSymbolizer, MarkSymbolizer, TextSymbolizer} from 'geostyler-style';\n\nimport {HsColorPickerService} from './color-picker.service';\nimport {HsLogService} from 'hslayers-ng/services/log';\nimport {HsStylerPartBaseComponent} from 'hslayers-ng/services/styler';\n\n@Component({\n  selector: 'hs-symbolizer-color-picker',\n  templateUrl: './color-picker.component.html',\n  styles: [\n    `\n      :host.disabled input.form-control {\n        background-color: lightgray !important;\n        opacity: 0.5;\n      }\n    `,\n  ],\n  standalone: false,\n})\nexport class HsColorPickerComponent\n  extends HsStylerPartBaseComponent\n  implements OnInit\n{\n  hsColorPickerService = inject(HsColorPickerService);\n  private hsLog = inject(HsLogService);\n\n  @Input() symbolizer: MarkSymbolizer | FillSymbolizer | TextSymbolizer;\n  @Input() attribute: string;\n  @Input() opacityAttribute?: string;\n  @Input() label: string;\n  fontColor = 'white';\n  pickerVisible = false;\n\n  ngOnInit(): void {\n    const rgb = this.hsColorPickerService.hex2Rgb(\n      this.symbolizer[this.attribute],\n    );\n    this.fontColor = this.hsColorPickerService.generateFontColor([\n      rgb.r,\n      rgb.g,\n      rgb.b,\n    ]);\n  }\n\n  onPick($event: ColorEvent): void {\n    this.symbolizer[this.attribute] = $event.color.hex;\n    if (this.opacityAttribute) {\n      this.symbolizer[this.opacityAttribute] = $event.color.rgb.a;\n    }\n    this.fontColor = this.hsColorPickerService.generateFontColor([\n      $event.color.rgb.r,\n      $event.color.rgb.g,\n      $event.color.rgb.b,\n    ]);\n    this.emitChange();\n  }\n\n  inputChanged() {\n    try {\n      const rgb = this.hsColorPickerService.hex2Rgb(\n        this.symbolizer[this.attribute],\n      );\n      this.fontColor = this.hsColorPickerService.generateFontColor([\n        rgb.r,\n        rgb.g,\n        rgb.b,\n      ]);\n      this.emitChange();\n    } catch (ex) {\n      this.hsLog.error(ex);\n    }\n  }\n\n  colorPickerStyle(): string {\n    return this.hsColorPickerService.colorPickerStyle(\n      this.symbolizer[this.attribute],\n      this.fontColor,\n    );\n  }\n}\n","<div>\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25 mt-2\">{{label}}</div>\n    <ng-content></ng-content>\n    <div class=\"p-1 w-75\">\n      <input class=\"form-control form-select-sm\" (click)=\"pickerVisible = !pickerVisible\" (change)=\"inputChanged()\" [ngStyle]=\"colorPickerStyle()\"\n        [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"symbolizer[attribute]\" />\n    </div>\n  </div>\n  <!-- TODO: Remove function call from template -->\n  @if (pickerVisible && symbolizer[attribute] !== undefined) {\n    <color-sketch [color]=\"hsColorPickerService.addAlpha(symbolizer[attribute], symbolizer[opacityAttribute])\"\n      width=\"320px\"\n    (onChangeComplete)=\"onPick($event)\"></color-sketch>\n  }\n  @if (pickerVisible && symbolizer[attribute] === undefined) {\n    <color-sketch width=\"320px\" (onChangeComplete)=\"onPick($event)\">\n  </color-sketch>\n}\n</div>","export enum Kinds {\n  fill = 'Fill',\n  icon = 'Icon',\n  line = 'Line',\n  text = 'Text',\n  mark = 'Mark',\n}\n","import {Component, Input} from '@angular/core';\n\nimport {FillSymbolizer, MarkSymbolizer, TextSymbolizer} from 'geostyler-style';\n\nimport {HsStylerPartBaseComponent} from 'hslayers-ng/services/styler';\n\n@Component({\n  selector: 'hs-symbolizer-slider',\n  templateUrl: './slider.component.html',\n  standalone: false,\n})\nexport class HsSliderComponent extends HsStylerPartBaseComponent {\n  @Input() symbolizer: MarkSymbolizer | FillSymbolizer | TextSymbolizer;\n  @Input() attribute: string;\n  @Input() label: string;\n  @Input() min: number;\n  @Input() max: number;\n  @Input() step: number;\n}\n","<div>\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25 mt-1\">{{label}}</div>\n    @if (warning !== undefined) {\n      <span class=\"badge bg-warning mt-1\" [title]=\"warning\">!</span>\n    }\n    <div class=\"p-1 w-75\">\n      <input type=\"range\" class=\"w-100\" [step]=\"step\" [min]=\"min\" [max]=\"max\" [ngModelOptions]=\"{standalone: true}\"\n        [(ngModel)]=\"symbolizer[attribute]\" (change)=\"emitChange()\" />\n    </div>\n  </div>\n</div>","import {Component, Input} from '@angular/core';\n\nimport {MarkSymbolizer} from 'geostyler-style';\n\nimport {HsStylerPartBaseComponent} from 'hslayers-ng/services/styler';\n\n@Component({\n  selector: 'hs-mark-symbolizer',\n  templateUrl: './mark-symbolizer.component.html',\n  standalone: false,\n})\nexport class HsMarkSymbolizerComponent extends HsStylerPartBaseComponent {\n  @Input() symbolizer: MarkSymbolizer;\n  @Input() submenu = false;\n  wellKnownNames = [\n    'circle',\n    'square',\n    'triangle',\n    'star',\n    'cross',\n    'x',\n    'shape://vertline',\n    'shape://horline',\n    'shape://slash',\n    'shape://backslash',\n    'shape://dot',\n    'shape://plus',\n    'shape://times',\n    'shape://oarrow',\n    'shape://carrow',\n  ];\n  fillColorPickerVisible = false;\n  strokeColorPickerVisible = false;\n}\n","<form class=\"form\" [ngClass]=\"{'text-secondary ms-2': submenu}\">\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25\">{{'STYLER.symbol' | translate }}:</div>\n    <div class=\"p-1 w-75\">\n      <select class=\"form-control form-select-sm form-select\" data-cy=\"mark-symbolizer-well-known-name\"\n        [(ngModel)]=\"symbolizer.wellKnownName\" (change)=\"emitChange()\" [ngModelOptions]=\"{standalone: true}\">\n        @for (wellKnownName of wellKnownNames; track wellKnownName) {\n          <option>\n            {{wellKnownName}}\n          </option>\n        }\n      </select>\n    </div>\n  </div>\n\n  <hs-symbolizer-color-picker [symbolizer]=\"symbolizer\" attribute=\"color\" opacityAttribute=\"fillOpacity\"\n    (changes)=\"emitChange()\" data-cy=\"mark-symbolizer-color\" [label]=\"'STYLER.fillColor' | translate \">\n  </hs-symbolizer-color-picker>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"fillOpacity\" (changes)=\"emitChange()\" step=\"0.05\" min=\"0\"\n  max=\"1\" [label]=\"'STYLER.fillOpacity' | translate \"></hs-symbolizer-slider>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"radius\" (changes)=\"emitChange()\" step=\"1\" min=\"0\" max=\"50\"\n    data-cy=\"mark-symbolizer-radius\" [label]=\"'STYLER.radius' | translate  \">\n  </hs-symbolizer-slider>\n\n  <hs-symbolizer-color-picker [symbolizer]=\"symbolizer\" attribute=\"strokeColor\" opacityAttribute=\"strokeOpacity\"\n    (changes)=\"emitChange()\" data-cy=\"mark-symbolizer-stroke-color\"\n  [label]=\"'STYLER.strokeColor' | translate  \"></hs-symbolizer-color-picker>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"strokeOpacity\" (changes)=\"emitChange()\" step=\"0.05\" min=\"0\"\n    max=\"1\" data-cy=\"mark-symbolizer-stroke-opacity\"\n  [label]=\"'STYLER.strokeOpacity' | translate  \"></hs-symbolizer-slider>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"strokeWidth\" (changes)=\"emitChange()\" step=\"0.1\" min=\"0\"\n    max=\"20\" data-cy=\"mark-symbolizer-stroke-width\"\n  [label]=\"'STYLER.strokeWidth' | translate  \"></hs-symbolizer-slider>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"rotate\" (changes)=\"emitChange()\" step=\"1\" min=\"0\" max=\"360\"\n    data-cy=\"mark-symbolizer-rotate\" [label]=\"'STYLER.rotation' | translate  \">\n  </hs-symbolizer-slider>\n</form>\n","import {Component, ViewRef, inject} from '@angular/core';\n\nimport {HsConfig, SymbolizerIcon} from 'hslayers-ng/config';\nimport {\n  HsDialogComponent,\n  HsDialogContainerService,\n  HsDialogItem,\n} from 'hslayers-ng/common/dialogs';\nimport {HsIconSymbolizerComponent} from '../icon-symbolizer/icon-symbolizer.component';\n\n@Component({\n  selector: 'hs-select-icon-dialog',\n  templateUrl: './select-icon-dialog.component.html',\n  standalone: false,\n})\nexport class HsSelectIconDialogComponent implements HsDialogComponent {\n  private hsDialogContainerService = inject(HsDialogContainerService);\n  hsConfig = inject(HsConfig);\n\n  dialogItem?: HsDialogItem;\n  viewRef: ViewRef;\n  data: HsIconSymbolizerComponent;\n\n  cancel(): void {\n    this.data.selectedIcon = null;\n    this.hsDialogContainerService.destroy(this);\n  }\n\n  confirm(): void {\n    if (this.data.selectedIcon) {\n      this.data.symbolizer.image = this.data.selectedIcon.url;\n    }\n    this.data.emitChange();\n    this.hsDialogContainerService.destroy(this);\n  }\n\n  iconSelected(icon: SymbolizerIcon): void {\n    this.data.selectedIcon = icon;\n  }\n}\n","<div class=\"modal in hs-select-icon\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n  <div class=\"modal-dialog\">\n    <div class=\"modal-content\">\n      <div class=\"modal-header d-flex flex-column\">\n        <div class=\"d-flex w-100 align-items-center\">\n          <h4 class=\"modal-title\">{{'STYLER.selectIcon' | translate }}</h4>\n          <button type=\"button\" (click)=\"cancel()\" class=\"btn-close\" data-dismiss=\"modal\"\n            [attr.aria-label]=\"'COMMON.close' | translate \">\n          </button>\n        </div>\n      </div>\n      <div class=\"modal-body\" style=\"max-height: 400px; overflow-y: auto\">\n        <div class=\"d-flex flex-wrap\">\n          @for (icon of hsConfig.symbolizerIcons; track icon) {\n            <div [ngClass]=\"{'bg-primary': data.selectedIcon === icon}\"\n              class=\"p-1\" (click)=\"iconSelected(icon)\">\n              <!-- TODO: Remove function call from template -->\n              <img [src]=\"icon.url\" style=\"max-width: 50px; max-height:50px\" />\n            </div>\n          }\n        </div>\n      </div>\n      <div class=\"modal-footer\">\n        <button type=\"button\" class=\"btn btn-primary\" data-dismiss=\"modal\" (click)=\"confirm()\">\n          {{'COMMON.ok' | translate }}\n        </button>\n        <button type=\"button\" class=\"btn btn-primary\" data-dismiss=\"modal\" (click)=\"cancel()\">\n          {{'COMMON.cancel' | translate }}\n        </button>\n      </div>\n    </div>\n  </div>\n</div>\n","import {Component, Input, inject} from '@angular/core';\nimport {take} from 'rxjs';\n\nimport {IconSymbolizer} from 'geostyler-style';\n\nimport {HsDialogContainerService} from 'hslayers-ng/common/dialogs';\nimport {HsSelectIconDialogComponent} from '../select-icon-dialog/select-icon-dialog.component';\nimport {HsStylerPartBaseComponent} from 'hslayers-ng/services/styler';\nimport {SymbolizerIcon} from 'hslayers-ng/config';\n\n@Component({\n  selector: 'hs-icon-symbolizer',\n  templateUrl: './icon-symbolizer.component.html',\n  standalone: false,\n})\nexport class HsIconSymbolizerComponent extends HsStylerPartBaseComponent {\n  private hsDialogContainerService = inject(HsDialogContainerService);\n\n  @Input() symbolizer: IconSymbolizer;\n  @Input() submenu = false;\n  selectedIcon?: SymbolizerIcon;\n\n  anchors = [\n    'center',\n    'left',\n    'right',\n    'top',\n    'bottom',\n    'top-left',\n    'top-right',\n    'bottom-left',\n    'bottom-right',\n  ];\n\n  showIconSelector(): void {\n    this.hsDialogContainerService.create(HsSelectIconDialogComponent, this);\n    this.hsDialogContainerService.dialogDestroyObserver\n      .pipe(take(1))\n      .subscribe((el) => {\n        if (this.selectedIcon) {\n          setTimeout(() => {\n            this.emitChange();\n          }, 250);\n        }\n      });\n  }\n}\n","<form class=\"form\" [ngClass]=\"{'text-secondary ms-2': submenu}\">\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25\">{{'STYLER.source' | translate }}:</div>\n    <div class=\"p-1 w-75\">\n      <div class=\"input-group mb-3\">\n        <input class=\"form-control\" name=\"hs-icon-symbolizer-image\" [(ngModel)]=\"symbolizer.image\"\n          (change)=\"emitChange()\" />\n        <button class=\"btn btn-outline-secondary\" (click)=\"showIconSelector()\" type=\"button\">\n          ...\n        </button>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25 mt-2\">{{'STYLER.anchor' | translate }}:</div>\n    <span class=\"badge bg-warning mt-2\" [title]=\"'STYLER.warningAttribNotStoredNotVisualized' | translate  \">!</span>\n    <div class=\"p-1 w-75\">\n      <select class=\"form-control form-select form-select-sm\" [(ngModel)]=\"symbolizer.anchor\" (change)=\"emitChange()\"\n        name=\"hs-icon-symbolizer-anchor\">\n        @for (anchor of anchors; track anchor) {\n          <option>{{anchor}}</option>\n        }\n      </select>\n    </div>\n  </div>\n\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25\">{{'STYLER.opacity' | translate }}:</div>\n    <div class=\"p-1 w-75\">\n      <input type=\"range\" class=\"w-100\" step=\"0.05\" min=\"0\" max=\"1\" name=\"hs-icon-symbolizer-opacity\"\n        [(ngModel)]=\"symbolizer.opacity\" (change)=\"emitChange()\" />\n    </div>\n  </div>\n\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25\">{{'STYLER.size' | translate }}:</div>\n    <div class=\"p-1 w-75\">\n      <input type=\"range\" class=\"w-100\" step=\"1\" min=\"0.1\" max=\"75\" name=\"hs-icon-symbolizer-size\"\n        [(ngModel)]=\"symbolizer.size\" (change)=\"emitChange()\" />\n    </div>\n  </div>\n\n  @if (symbolizer.offset !== undefined) {\n    <div class=\"d-flex flex-row\">\n      <div class=\"p-1 w-25 mt-2\">{{'STYLER.anchorX' | translate }}:</div>\n      <span class=\"badge bg-warning mt-2\" [title]=\"'STYLER.warningAttribNotStoredNotVisualized' | translate  \">!</span>\n      <div class=\"p-1 w-75\">\n        @if (symbolizer.offset !== undefined) {\n          <input type=\"range\" class=\"w-100\" step=\"0.05\" min=\"-1.0\" max=\"1.0\" name=\"hs-icon-symbolizer-offset-0\"\n            [(ngModel)]=\"symbolizer.offset[0]\" (change)=\"emitChange()\" />\n        }\n      </div>\n    </div>\n  }\n\n\n  @if (symbolizer.offset !== undefined) {\n    <div class=\"d-flex flex-row\">\n      <div class=\"p-1 w-25 mt-2\">{{'STYLER.anchorY' | translate }}:</div>\n      <span class=\"badge bg-warning mt-2\" [title]=\"'STYLER.warningAttribNotStoredNotVisualized' | translate  \">!</span>\n      <div class=\"p-1 w-75\">\n        @if (symbolizer.offset !== undefined) {\n          <input type=\"range\" class=\"w-100\" step=\"0.05\" min=\"-1.0\" max=\"1.0\" name=\"hs-icon-symbolizer-offset-1\"\n            [(ngModel)]=\"symbolizer.offset[1]\" (change)=\"emitChange()\" />\n        }\n      </div>\n    </div>\n  }\n\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25\">{{'STYLER.rotation' | translate }}:</div>\n    <div class=\"p-1 w-75\">\n      <input type=\"range\" class=\"w-100\" step=\"1\" min=\"0\" max=\"360\" name=\"hs-icon-symbolizer-rotate\"\n        [(ngModel)]=\"symbolizer.rotate\" (change)=\"emitChange()\" />\n    </div>\n  </div>\n</form>\n","import {Component, Input, ViewChild} from '@angular/core';\n\nimport {FillSymbolizer, SymbolizerKind} from 'geostyler-style';\n\nimport {HsStylerPartBaseComponent} from 'hslayers-ng/services/styler';\nimport {Kinds} from '../symbolizer-kind.enum';\n\n@Component({\n  selector: 'hs-fill-symbolizer',\n  templateUrl: './fill-symbolizer.component.html',\n  styles: [\n    `\n      hs-symbolizer-color-picker.disabled {\n        color: lightgray;\n      }\n    `,\n  ],\n  standalone: false,\n})\nexport class HsFillSymbolizerComponent extends HsStylerPartBaseComponent {\n  @Input() symbolizer: FillSymbolizer;\n  @ViewChild('graphicFillMenu') menuRef;\n  kinds = Kinds;\n\n  addSymbolizer(attribute: string, kind: SymbolizerKind): void {\n    const symbolizer = {kind, color: '#000000', opacity: 1};\n    if (kind == Kinds.icon) {\n      Object.assign(symbolizer, {\n        offset: [0.5, 0.5],\n        size: 20,\n        image: 'assets/img/icons/information78.svg',\n      });\n    }\n    if (kind == Kinds.mark) {\n      Object.assign(symbolizer, {\n        wellKnownName: 'circle',\n        radius: 7,\n        fillOpacity: 1,\n        strokeColor: '#ffffff',\n        strokeOpacity: 0.25,\n        strokeWidth: 2,\n      });\n    }\n    this.symbolizer[attribute] = symbolizer;\n    this.menuRef.close();\n    this.emitChange();\n  }\n}\n","<form class=\"form\">\n\n  <hs-symbolizer-color-picker [symbolizer]=\"symbolizer\" attribute=\"color\" opacityAttribute=\"fillOpacity\"\n    [class.disabled]=\"symbolizer.graphicFill !== undefined\" (changes)=\"emitChange()\"\n    [label]=\"'STYLER.fillColor' | translate\">\n    @if (symbolizer.graphicFill !== undefined) {\n      <span class=\"badge bg-warning mt-2\"\n      [title]=\"'STYLER.warningFillNotVisualizedDueToGraphic' | translate  \">!</span>\n    }\n  </hs-symbolizer-color-picker>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"fillOpacity\" (changes)=\"emitChange()\" step=\"0.05\" min=\"0\"\n  max=\"1\" [label]=\"'STYLER.opacity' | translate \"></hs-symbolizer-slider>\n\n  <hs-symbolizer-color-picker [symbolizer]=\"symbolizer\" attribute=\"outlineColor\" opacityAttribute=\"outlineOpacity\"\n    (changes)=\"emitChange()\" [label]=\"'STYLER.outlineColor' | translate \">\n  </hs-symbolizer-color-picker>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"outlineOpacity\" (changes)=\"emitChange()\" step=\"0.05\"\n  min=\"0\" max=\"1\" [label]=\"'STYLER.outlineOpacity' | translate \"></hs-symbolizer-slider>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"outlineWidth\" (changes)=\"emitChange()\" step=\"0.1\" min=\"0\"\n  max=\"20\" [label]=\"'STYLER.outlineWidth' | translate  \"></hs-symbolizer-slider>\n\n  <div class=\"d-flex flex-row justify-content-end\">\n    <div class=\"p-1 flex-grow-1\">{{'STYLER.graphicFill' | translate}}:</div>\n    <div class=\"p-1\">\n      <div class=\"btn-group\">\n        <div ngbDropdown class=\"btn-group d-inline-block\" role=\"group\" #graphicFillMenu=\"ngbDropdown\"\n          placement=\"top-right\">\n          <button class=\"btn btn-outline-primary btn-sm\" id=\"dropdownAddFillSymbolizer\" ngbDropdownToggle>\n            <span class=\"fa-solid fa-plus\"></span>\n          </button>\n          <div ngbDropdownMenu aria-labelledby=\"dropdownAddFillSymbolizer\">\n            <button ngbDropdownItem (click)=\"addSymbolizer('graphicFill', 'Mark'); graphicFillMenu.close()\">\n              {{'STYLER.mark' | translate }}\n            </button>\n            <button ngbDropdownItem (click)=\"addSymbolizer('graphicFill', 'Icon'); graphicFillMenu.close()\">\n              {{'STYLER.icon' | translate }}\n            </button>\n          </div>\n        </div>\n        @if (symbolizer.graphicFill !== undefined) {\n          <button class=\"btn btn-outline-danger btn-sm\"\n            (click)=\"symbolizer.graphicFill = undefined;emitChange()\">\n            <span class=\"fa-solid fa-trash\"></span>\n          </button>\n        }\n      </div>\n    </div>\n  </div>\n\n  @if (symbolizer.graphicFill && symbolizer.graphicFill.kind === kinds.mark) {\n    <hs-mark-symbolizer [symbolizer]=\"symbolizer.graphicFill\" [submenu]=\"true\" (changes)=\"emitChange()\"\n      >\n    </hs-mark-symbolizer>\n  }\n\n  @if (symbolizer.graphicFill && symbolizer.graphicFill.kind === kinds.icon) {\n    <hs-icon-symbolizer [symbolizer]=\"symbolizer.graphicFill\" [submenu]=\"true\" (changes)=\"emitChange()\"\n      >\n    </hs-icon-symbolizer>\n  }\n</form>\n","import {Component, Input, ViewChild} from '@angular/core';\n\nimport {LineSymbolizer, SymbolizerKind} from 'geostyler-style';\n\nimport {HsStylerPartBaseComponent} from 'hslayers-ng/services/styler';\nimport {Kinds} from '../symbolizer-kind.enum';\n\n@Component({\n  selector: 'hs-line-symbolizer',\n  templateUrl: './line-symbolizer.component.html',\n  standalone: false,\n})\nexport class HsLineSymbolizerComponent extends HsStylerPartBaseComponent {\n  @Input() symbolizer: LineSymbolizer;\n  @ViewChild('graphicLineMenu') lineMenuRef;\n  @ViewChild('graphicStrokeMenu') strokeMenuRef;\n  caps = ['butt', 'round', 'square'];\n  joins = ['bevel', 'round', 'miter'];\n  kinds = Kinds;\n\n  addSymbolizer(attribute: string, kind: SymbolizerKind): void {\n    this.symbolizer[attribute] = {kind};\n    this.lineMenuRef.close();\n    this.strokeMenuRef.close();\n  }\n\n  addDashItem(): void {\n    if (!this.symbolizer.dasharray) {\n      this.symbolizer.dasharray = [1];\n    } else {\n      this.symbolizer.dasharray.push(1);\n    }\n  }\n\n  removeDashItem(): void {\n    if (this.symbolizer.dasharray.length > 0) {\n      this.symbolizer.dasharray.length--;\n    }\n  }\n}\n","<form class=\"form\">\n  <hs-symbolizer-color-picker [symbolizer]=\"symbolizer\" attribute=\"color\" opacityAttribute=\"opacity\"\n  (changes)=\"emitChange()\" [label]=\"'STYLER.color' | translate  \"></hs-symbolizer-color-picker>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"opacity\" (changes)=\"emitChange()\" step=\"0.05\" min=\"0\"\n  max=\"1\" [label]=\"'STYLER.opacity' | translate  \"></hs-symbolizer-slider>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"width\" (changes)=\"emitChange()\" step=\"0.1\" min=\"0\" max=\"20\"\n  [label]=\"'STYLER.width' | translate  \"></hs-symbolizer-slider>\n\n  <div class=\"d-flex flex-row flex-wrap\">\n    <div class=\"p-1 flex-grow-1 mt-2\">{{'STYLER.dashPattern' | translate }}:</div>\n    @for (dash of symbolizer.dasharray; track dash; let i = $index) {\n      <input class=\"form-control me-1 form-select-sm\" style=\"width: 3em\"\n        [ngModelOptions]=\"{standalone: true}\"\n        [(ngModel)]=\"symbolizer.dasharray[i]\" (change)=\"emitChange()\" />\n    }\n    <div class=\"btn-group\" role=\"group\" [attr.aria-label]=\"'STYLER.dashPattern' | translate  \">\n      <button class=\"btn btn-outline-primary btn-sm\" (click)=\"addDashItem()\">\n        <span class=\"fa-solid fa-plus\"></span>\n      </button>\n      <button class=\"btn btn-outline-danger btn-sm\" (click)=\"removeDashItem()\">\n        <span class=\"fa-solid fa-minus\"></span>\n      </button>\n    </div>\n  </div>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"blur\" (changes)=\"emitChange()\" step=\"0.1\" min=\"0\" max=\"20\"\n    [label]=\"'STYLER.blur' | translate  \" [warning]=\"'STYLER.warningAttribNotStoredNotVisualized' | translate  \">\n  </hs-symbolizer-slider>\n\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25 mt-2\">{{'STYLER.cap' | translate }}:</div>\n    <div class=\"p-1 w-75\">\n      <select class=\"form-control form-select-sm form-select\" [(ngModel)]=\"symbolizer.cap\" (change)=\"emitChange()\"\n        [ngModelOptions]=\"{standalone: true}\">\n        @for (cap of caps; track cap) {\n          <option>{{cap}}</option>\n        }\n      </select>\n    </div>\n  </div>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"gapWidth\" (changes)=\"emitChange()\" step=\"1\" min=\"0\"\n    max=\"10\" [label]=\"'STYLER.gapWidth' | translate  \"\n  [warning]=\"'STYLER.warningAttribNotStoredNotVisualized' | translate  \"></hs-symbolizer-slider>\n\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25 mt-2\">{{'STYLER.join' | translate }}:</div>\n    <div class=\"p-1 w-75\">\n      <select class=\"form-control form-select-sm form-select\" [(ngModel)]=\"symbolizer.join\" (change)=\"emitChange()\"\n        [ngModelOptions]=\"{standalone: true}\">\n        @for (join of joins; track join) {\n          <option>{{join}}</option>\n        }\n      </select>\n    </div>\n  </div>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"miterLimit\" (changes)=\"emitChange()\" step=\"1\" min=\"0\"\n    max=\"90\" [label]=\"'STYLER.miterLimit' | translate  \"\n  [warning]=\"'STYLER.warningAttribNotStoredNotVisualized' | translate  \"></hs-symbolizer-slider>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"perpendicularOffset\" (changes)=\"emitChange()\" step=\"1\"\n    min=\"0\" max=\"20\" [label]=\"'STYLER.perpendicularOffset' | translate  \"\n  [warning]=\"'STYLER.warningAttribStoredNotVisualized' | translate  \"></hs-symbolizer-slider>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"roundLimit\" (changes)=\"emitChange()\" step=\"1\" min=\"0\"\n    max=\"90\" [label]=\"'STYLER.roundLimit' | translate  \"\n  [warning]=\"'STYLER.warningAttribNotStoredNotVisualized' | translate  \"></hs-symbolizer-slider>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"spacing\" (changes)=\"emitChange()\" step=\"1\" min=\"0\" max=\"20\"\n    [label]=\"'STYLER.spacing' | translate  \" [warning]=\"'STYLER.warningAttribNotStoredNotVisualized' | translate  \">\n  </hs-symbolizer-slider>\n\n  <div class=\"d-flex flex-row justify-content-end\">\n    <div class=\"p-1 flex-grow-1 mt-2\">\n      {{'STYLER.graphicFill' | translate }}:\n    </div>\n    <span class=\"badge bg-warning mt-2\" [title]=\"'STYLER.warningAttribStoredNotVisualized' | translate  \">!</span>\n    <div class=\"p-1\">\n      <div class=\"btn-group\">\n        <div ngbDropdown #graphicLineMenu=\"ngbDropdown\" class=\"d-inline-block\" placement=\"top-right\">\n          <button class=\"btn btn-outline-primary btn-sm\" id=\"dropdownAddFillSymbolizer\" ngbDropdownToggle>\n            <span class=\"fa-solid fa-plus\"></span>\n          </button>\n          <div ngbDropdownMenu aria-labelledby=\"dropdownAddFillSymbolizer\">\n            <button ngbDropdownItem (click)=\"addSymbolizer('graphicFill', 'Mark')\">\n              {{'STYLER.mark' | translate }}\n            </button>\n            <button ngbDropdownItem (click)=\"addSymbolizer('graphicFill', 'Icon')\">\n              {{'STYLER.icon' | translate }}\n            </button>\n          </div>\n        </div>\n        @if (symbolizer.graphicFill !== undefined) {\n          <button class=\"btn btn-outline-danger btn-sm\"\n            (click)=\"symbolizer.graphicFill = undefined\">\n            <span class=\"fa-solid fa-trash\"></span>\n          </button>\n        }\n      </div>\n    </div>\n  </div>\n\n  @if (symbolizer.graphicFill && symbolizer.graphicFill.kind === kinds.mark) {\n    <hs-mark-symbolizer (remove)=\"symbolizer.graphicFill = undefined\" [symbolizer]=\"symbolizer.graphicFill\"\n      (changes)=\"emitChange()\"\n      [submenu]=\"true\">\n    </hs-mark-symbolizer>\n  }\n\n  @if (symbolizer.graphicFill && symbolizer.graphicFill.kind === kinds.icon) {\n    <hs-icon-symbolizer (remove)=\"symbolizer.graphicFill = undefined\" [symbolizer]=\"symbolizer.graphicFill\"\n      (changes)=\"emitChange()\"\n      [submenu]=\"true\">\n    </hs-icon-symbolizer>\n  }\n\n  <div class=\"d-flex flex-row justify-content-end\">\n    <div class=\"p-1 flex-grow-1 mt-2\">\n      {{'STYLER.graphicStroke' | translate }}:\n    </div>\n    <span class=\"badge bg-warning mt-2\" [title]=\"'STYLER.warningAttribStoredNotVisualized' | translate  \">!</span>\n    <div class=\"p-1\">\n      <div class=\"btn-group me-3\">\n        <div ngbDropdown #graphicStrokeMenu=\"ngbDropdown\" class=\"d-inline-block\" placement=\"top-right\">\n          <button class=\"btn btn-outline-primary btn-sm\" id=\"dropdownAddStrokeSymbolizer\" ngbDropdownToggle>\n            <span class=\"fa-solid fa-plus\"></span>\n          </button>\n          <div ngbDropdownMenu aria-labelledby=\"dropdownAddStrokeSymbolizer\">\n            <button ngbDropdownItem (click)=\"addSymbolizer('graphicStroke', 'Mark')\">\n              {{'STYLER.mark' | translate }}\n            </button>\n            <button ngbDropdownItem (click)=\"addSymbolizer('graphicStroke', 'Icon')\">\n              {{'STYLER.icon' | translate }}\n            </button>\n          </div>\n        </div>\n        @if (symbolizer.graphicStroke !== undefined) {\n          <button class=\"btn btn-outline-danger btn-sm\"\n            (click)=\"symbolizer.graphicStroke = undefined\">\n            <span class=\"fa-solid fa-trash\"></span>\n          </button>\n        }\n      </div>\n    </div>\n  </div>\n\n  @if (symbolizer.graphicStroke && symbolizer.graphicStroke.kind === kinds.mark) {\n    <hs-mark-symbolizer (remove)=\"symbolizer.graphicStroke = undefined\" [symbolizer]=\"symbolizer.graphicStroke\"\n      (changes)=\"emitChange()\" [submenu]=\"true\"\n      >\n    </hs-mark-symbolizer>\n  }\n\n  @if (symbolizer.graphicStroke && symbolizer.graphicStroke.kind === kinds.icon) {\n    <hs-icon-symbolizer (remove)=\"symbolizer.graphicStroke = undefined\" [symbolizer]=\"symbolizer.graphicStroke\"\n      (changes)=\"emitChange()\" [submenu]=\"true\"\n      >\n    </hs-icon-symbolizer>\n  }\n\n</form>\n","import {Component, Input} from '@angular/core';\n\nimport {TextSymbolizer} from 'geostyler-style';\n\nimport {HsStylerPartBaseComponent} from 'hslayers-ng/services/styler';\n\n@Component({\n  selector: 'hs-text-symbolizer',\n  templateUrl: './text-symbolizer.component.html',\n  standalone: false,\n})\nexport class HsTextSymbolizerComponent extends HsStylerPartBaseComponent {\n  @Input() symbolizer: TextSymbolizer;\n\n  anchors = [\n    'center',\n    'left',\n    'right',\n    'top',\n    'bottom',\n    'top-left',\n    'top-right',\n    'bottom-left',\n    'bottom-right',\n  ];\n  fonts = [\n    'Arial',\n    'Verdana',\n    'Sans-serif',\n    'Courier New',\n    'Lucida Console',\n    'Monospace',\n    'Times New Roman',\n    'Georgia',\n    'Serif',\n  ];\n  fontStyles = ['normal', 'italic', 'bold'];\n  transforms = ['none', 'uppercase', 'lowercase'];\n  justifications = ['left', 'center', 'right'];\n  fontWeights = ['normal', 'bold'];\n}\n","<form class=\"form\">\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25\">{{'STYLER.template' | translate}}:</div>\n    <div class=\"p-1 w-75\">\n      <input class=\"form-control form-select-sm\" [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"symbolizer.label\"\n        (change)=\"emitChange()\" />\n    </div>\n  </div>\n\n  <hs-symbolizer-color-picker [symbolizer]=\"symbolizer\" attribute=\"color\" opacityAttribute=\"opacity\"\n  (changes)=\"emitChange()\" [label]=\"'STYLER.textColor' | translate\"></hs-symbolizer-color-picker>\n\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25\">{{'STYLER.font' | translate}}:</div>\n    <div class=\"p-1 w-75\">\n      <select class=\"form-control form-select-sm form-select\" (change)=\"emitChange()\"\n        [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"symbolizer.font\" multiple>\n        @for (font of fonts; track font) {\n          <option [ngValue]=\"font\">{{font}}</option>\n        }\n      </select>\n    </div>\n  </div>\n\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25\">{{'STYLER.textSize' | translate}}:</div>\n    <div class=\"p-1 w-75\">\n      <input class=\"form-control form-select-sm\" [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"symbolizer.size\"\n        (change)=\"emitChange()\" />\n    </div>\n  </div>\n\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25 mt-2\">{{'STYLER.justify' | translate}}:</div>\n    <span class=\"badge bg-warning mt-2\" [title]=\"'STYLER.warningAttribNotStoredNotVisualized' | translate\">!</span>\n    <div class=\"p-1 w-75\">\n      <select class=\"form-control form-select-sm form-select\" [(ngModel)]=\"symbolizer.justify\" (change)=\"emitChange()\"\n        [ngModelOptions]=\"{standalone: true}\">\n        @for (justify of justifications; track justify) {\n          <option>{{justify}}</option>\n        }\n      </select>\n    </div>\n  </div>\n\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25 mt-2\">{{'STYLER.transform' | translate}}:</div>\n    <span class=\"badge bg-warning mt-2\" [title]=\"'STYLER.warningAttribNotStoredNotVisualized' | translate\">!</span>\n    <div class=\"p-1 w-75\">\n      <select class=\"form-control form-select-sm form-select\" [(ngModel)]=\"symbolizer.transform\" (change)=\"emitChange()\"\n        [ngModelOptions]=\"{standalone: true}\">\n        @for (transform of transforms; track transform) {\n          <option>{{transform}}</option>\n        }\n      </select>\n    </div>\n  </div>\n\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25 mt-2\">{{'STYLER.fontStyle' | translate}}:</div>\n    <div class=\"p-1 w-75\">\n      <select class=\"form-control form-select-sm form-select\" [(ngModel)]=\"symbolizer.fontStyle\" (change)=\"emitChange()\"\n        [ngModelOptions]=\"{standalone: true}\">\n        @for (fontStyle of fontStyles; track fontStyle) {\n          <option>{{fontStyle}}</option>\n        }\n      </select>\n    </div>\n  </div>\n\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25 mt-2\">{{'STYLER.fontWeight' | translate}}:</div>\n    <div class=\"p-1 w-75\">\n      <select class=\"form-control form-select-sm form-select\" [(ngModel)]=\"symbolizer.fontWeight\"\n        (change)=\"emitChange()\" [ngModelOptions]=\"{standalone: true}\">\n        @for (fontWeight of fontWeights; track fontWeight) {\n          <option>{{fontWeight}}</option>\n        }\n      </select>\n    </div>\n  </div>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"opacity\" (changes)=\"emitChange()\" step=\"0.05\" min=\"0\"\n    max=\"1\" [label]=\"'STYLER.opacity' | translate\"\n  [warning]=\"'STYLER.warningAttribNotStoredVisualized' | translate\"></hs-symbolizer-slider>\n\n  <hs-symbolizer-color-picker [symbolizer]=\"symbolizer\" attribute=\"haloColor\" (changes)=\"emitChange()\"\n  [label]=\"'STYLER.haloColor' | translate\"></hs-symbolizer-color-picker>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"haloWidth\" (changes)=\"emitChange()\" step=\"1\" min=\"0\"\n  max=\"20\" [label]=\"'STYLER.haloWidth' | translate\"></hs-symbolizer-slider>\n\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25\">{{'STYLER.offsetX' | translate}}:</div>\n    <div class=\"p-1 w-75\">\n      @if (symbolizer.offset !== undefined) {\n        <input class=\"w-100\" type=\"range\" step=\"1\" min=\"-40\" max=\"40\" [ngModelOptions]=\"{standalone: true}\"\n          [(ngModel)]=\"symbolizer.offset[0]\" (change)=\"emitChange()\" />\n      }\n    </div>\n  </div>\n\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25\">{{'STYLER.offsetY' | translate}}:</div>\n    <div class=\"p-1 w-75\">\n      @if (symbolizer.offset !== undefined) {\n        <input class=\"w-100\" type=\"range\" step=\"1\" min=\"-40\" max=\"40\" [ngModelOptions]=\"{standalone: true}\"\n          [(ngModel)]=\"symbolizer.offset[1]\" (change)=\"emitChange()\" />\n      }\n    </div>\n  </div>\n\n  <hs-symbolizer-slider [symbolizer]=\"symbolizer\" attribute=\"rotate\" (changes)=\"emitChange()\" step=\"1\" min=\"0\" max=\"360\"\n  [label]=\"'STYLER.rotation' | translate\"></hs-symbolizer-slider>\n\n  <div class=\"d-flex flex-row\">\n    <div class=\"p-1 w-25 mt-2\">{{'STYLER.anchor' | translate}}:</div>\n    <span class=\"badge bg-warning mt-2\" [title]=\"'STYLER.warningAttribStoredNotVisualized' | translate\">!</span>\n    <div class=\"p-1 w-75\">\n      <select class=\"form-control form-select-sm form-select\" [(ngModel)]=\"symbolizer.anchor\" (change)=\"emitChange()\"\n        [ngModelOptions]=\"{standalone: true}\">\n        @for (anchor of anchors; track anchor) {\n          <option>{{anchor}}</option>\n        }\n      </select>\n    </div>\n  </div>\n</form>\n","import {Component, Input} from '@angular/core';\n\nimport {HsStylerPartBaseComponent} from 'hslayers-ng/services/styler';\nimport {Kinds} from './symbolizer-kind.enum';\n\n@Component({\n  selector: 'hs-symbolizer',\n  templateUrl: './symbolizer.component.html',\n  standalone: false,\n})\nexport class HsSymbolizerComponent extends HsStylerPartBaseComponent {\n  @Input() symbolizer;\n\n  kinds = Kinds;\n}\n","<div class=\"card m-0\">\n  <form class=\"form\">\n    @if (symbolizer.kind === kinds.fill) {\n      <hs-fill-symbolizer [symbolizer]=\"symbolizer\" (changes)=\"emitChange()\">\n      </hs-fill-symbolizer>\n    }\n    @if (symbolizer.kind === kinds.line) {\n      <hs-line-symbolizer [symbolizer]=\"symbolizer\" (changes)=\"emitChange()\">\n      </hs-line-symbolizer>\n    }\n    @if (symbolizer.kind === kinds.mark) {\n      <hs-mark-symbolizer [symbolizer]=\"symbolizer\" (changes)=\"emitChange()\">\n      </hs-mark-symbolizer>\n    }\n    @if (symbolizer.kind === kinds.icon) {\n      <hs-icon-symbolizer [symbolizer]=\"symbolizer\" (changes)=\"emitChange()\">\n      </hs-icon-symbolizer>\n    }\n    @if (symbolizer.kind === kinds.text) {\n      <hs-text-symbolizer [symbolizer]=\"symbolizer\" (changes)=\"emitChange()\">\n      </hs-text-symbolizer>\n    }\n  </form>\n</div>","import {Component, Input} from '@angular/core';\n\nimport {Rule, Symbolizer} from 'geostyler-style';\n\nimport {HsStylerPartBaseComponent} from 'hslayers-ng/services/styler';\nimport {Kinds} from '../symbolizer-kind.enum';\n\n@Component({\n  selector: 'hs-symbolizer-list-item',\n  templateUrl: 'symbolizer-list-item.component.html',\n  styleUrls: ['../../styler.component.scss'],\n  standalone: false,\n})\nexport class HsSymbolizerListItemComponent extends HsStylerPartBaseComponent {\n  @Input() symbolizer: Symbolizer;\n  @Input() rule: Rule;\n  symbolizerVisible = false;\n\n  getSymbolizerName(symbolizer: any): string {\n    switch (symbolizer.kind) {\n      case Kinds.fill:\n        return 'STYLER.fillSymbolizer';\n      case Kinds.icon:\n        return 'STYLER.iconSymbolizer';\n      case Kinds.line:\n        return 'STYLER.lineSymbolizer';\n      case Kinds.text:\n        return 'STYLER.textSymbolizer';\n      case Kinds.mark:\n        return 'STYLER.markSymbolizer';\n      default:\n        return 'STYLER.unknownSymbolizer';\n    }\n  }\n\n  removeSymbolizer(symbolizer: Symbolizer): void {\n    this.rule.symbolizers.splice(this.rule.symbolizers.indexOf(symbolizer), 1);\n    this.emitChange();\n  }\n}\n","<li\n  class=\"list-group-item hs-list-item-header list-group-item-primary d-flex justify-content-between align-items-center mb-1\"\n  (click)=\"symbolizerVisible = !symbolizerVisible;\" [attr.data-test]=\"getSymbolizerName(symbolizer)\">\n  <div>\n    <button type=\"button\" style=\"border: none; background-color: transparent; cursor: move\">\n      <i class=\"fa-solid fa-up-down-left-right text-secondary\"></i>\n    </button>\n    <span>{{getSymbolizerName(symbolizer) | translate }}&nbsp;</span><!-- TODO: Remove function call from template -->\n  </div>\n  <div>\n    <span class=\"glyphicon me-2\" [ngClass]=\"symbolizerVisible ? 'fa-solid fa-chevron-right' : 'fa-solid fa-chevron-down'\"></span>\n    <button class=\"btn btn-danger btn-sm\" (click)=\"removeSymbolizer(symbolizer)\" data-toggle=\"tooltip\"\n      [title]=\"'STYLER.removeSymbolizer' | translate  \">\n      <i class=\"fa-solid fa-trash\"></i>\n    </button>\n  </div>\n</li>\n\n@if (symbolizerVisible) {\n  <hs-symbolizer [symbolizer]=\"symbolizer\" (changes)=\"emitChange()\" (mousedown)=\"$event.stopPropagation()\">\n  </hs-symbolizer>\n}\n","import {CdkDragDrop, moveItemInArray} from '@angular/cdk/drag-drop';\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n  inject,\n} from '@angular/core';\n\nimport {SymbolizerKind} from 'geostyler-style';\n\nimport {HsLayerSelectorService} from 'hslayers-ng/services/layer-manager';\nimport {\n  HsStylerPartBaseComponent,\n  HsStylerService,\n} from 'hslayers-ng/services/styler';\nimport {Kinds} from '../symbolizers/symbolizer-kind.enum';\n\n@Component({\n  selector: 'hs-rule',\n  templateUrl: './rule.component.html',\n  styleUrls: ['../styler.component.scss'],\n  standalone: false,\n})\nexport class HsRuleComponent extends HsStylerPartBaseComponent {\n  hsStylerService = inject(HsStylerService);\n\n  @Input() rule;\n  @Output() changes = new EventEmitter<void>();\n  @ViewChild('addSymMenu') menuRef;\n\n  layerSelectorService = inject(HsLayerSelectorService);\n\n  filtersVisible = false;\n  scalesVisible = false;\n  async addSymbolizer(kind: SymbolizerKind): Promise<void> {\n    const symbolizer = {kind, color: '#000000'};\n    if (kind === Kinds.text) {\n      Object.assign(symbolizer, {\n        size: 12,\n        offset: [0, 0],\n        font: ['Arial'],\n        fontStyle: 'normal',\n        fontWeight: 'normal',\n        rotation: 0,\n      });\n    }\n    if (kind === Kinds.fill) {\n      Object.assign(symbolizer, {\n        outlineColor: '#ffffff',\n        fillOpacity: 1,\n        outlineOpacity: 0.5,\n        outlineWidth: 2,\n      });\n    }\n    if (kind == Kinds.icon) {\n      Object.assign(symbolizer, {\n        offset: [0.5, 0.5],\n        opacity: 1,\n        size: 20,\n        image: 'assets/img/icons/information78.svg',\n      });\n    }\n    if (kind == Kinds.mark) {\n      Object.assign(symbolizer, {\n        wellKnownName: 'circle',\n        radius: 7,\n        fillOpacity: 1,\n        strokeColor: '#ffffff',\n        strokeOpacity: 0.25,\n        strokeWidth: 2,\n      });\n    }\n    if (kind == Kinds.line) {\n      Object.assign(symbolizer, {\n        width: 2,\n        join: 'round',\n        cap: 'round',\n      });\n    }\n    this.rule.symbolizers.push(symbolizer);\n    this.menuRef.close();\n    this.emitChange();\n  }\n\n  async drop(event: CdkDragDrop<any[]>): Promise<void> {\n    moveItemInArray(\n      this.rule.symbolizers,\n      event.previousIndex,\n      event.currentIndex,\n    );\n\n    this.emitChange();\n  }\n}\n","<div>\n  <div class=\"d-flex flex-row justify-content-end\">\n    <div class=\"p-1 flex-grow-1\">\n      {{'STYLER.filtersAndScales' | translate }}:\n    </div>\n    <div class=\"p-1\">\n      <div class=\"btn-group\" role=\"group\" aria-label=\"Filters and scales\">\n        <button [title]=\"'STYLER.toggleFilters' | translate  \" class=\"btn btn-sm\"\n          [ngClass]=\"{'btn-outline-primary': rule.filter && rule.filter.length > 0, 'btn-outline-secondary': rule.filter === undefined || rule.filter.length === 0}\"\n          (click)=\"filtersVisible = !filtersVisible\">\n          <span class=\"fa-solid fa-filter\"></span>\n        </button>\n        <button [title]=\"'STYLER.toggleScaleDenominators' | translate  \" class=\"btn btn-sm\"\n          [ngClass]=\"{'btn-outline-primary': rule.scaleDenominator && (rule.scaleDenominator.min !== undefined || rule.scaleDenominator.max !== undefined), 'btn-outline-secondary': rule.scaleDenominator === undefined || (rule.scaleDenominator.min === undefined && rule.scaleDenominator.max === undefined)}\"\n          (click)=\"scalesVisible = !scalesVisible\">\n          <span class=\"fa-solid fa-up-right-and-down-left-from-center\"></span>\n        </button>\n      </div>\n    </div>\n  </div>\n  @if (filtersVisible) {\n  <hs-filters (changes)=\"emitChange()\" [selectedLayer]=\"layerSelectorService.currentLayer\" [rule]=\"rule\"></hs-filters>\n  }\n  @if (scalesVisible) {\n  <hs-scale-denominator (changes)=\"emitChange()\" [rule]=\"rule\"></hs-scale-denominator>\n  }\n  <div class=\"d-flex flex-row justify-content-end\">\n    <div class=\"p-1 flex-grow-1\">{{'STYLER.symbolizers' | translate }}:</div>\n    <div class=\"p-1\">\n      <div #addSymMenu=\"ngbDropdown\" ngbDropdown class=\"d-inline-block\" placement=\"bottom-right\">\n        <button class=\"btn btn-outline-primary btn-sm\" [title]=\"'STYLER.addSymbolizer' | translate  \"\n          id=\"dropdownAddSymbolizer\" ngbDropdownToggle>\n          <span class=\"fa-solid fa-plus\"></span>\n        </button>\n        <div ngbDropdownMenu aria-labelledby=\"dropdownAddSymbolizer\">\n          <button ngbDropdownItem (click)=\"addSymbolizer('Mark')\">\n            {{'STYLER.mark' | translate }}\n          </button>\n          <button ngbDropdownItem (click)=\"addSymbolizer('Icon')\">\n            {{'STYLER.icon' | translate }}\n          </button>\n          <button ngbDropdownItem (click)=\"addSymbolizer('Text')\">\n            {{'STYLER.text' | translate }}\n          </button>\n          <button ngbDropdownItem (click)=\"addSymbolizer('Line')\">\n            {{'STYLER.line' | translate }}\n          </button>\n          <button ngbDropdownItem (click)=\"addSymbolizer('Fill')\">\n            {{'STYLER.fill' | translate }}\n          </button>\n        </div>\n      </div>\n    </div>\n  </div>\n  @if (rule.symbolizers.length > 0) {\n  <ul class=\"list-group hs-styler-content-list align-items-end\" cdkDropList (cdkDropListDropped)=\"drop($event)\"\n    [cdkDropListData]=\"rule.symbolizers\">\n    @for (symbolizer of rule.symbolizers; track symbolizer) {\n    <hs-symbolizer-list-item style=\"width: 98%\" cdkDrag [rule]=\"rule\" [symbolizer]=\"symbolizer\"\n      (changes)=\"emitChange()\">\n    </hs-symbolizer-list-item>\n    }\n  </ul>\n  }\n</div>\n","import {Component} from '@angular/core';\nimport {HsConfirmDialogComponent} from 'hslayers-ng/common/confirm';\n\n@Component({\n  selector: 'hs-styles-edit-dialog',\n  templateUrl: './edit-dialog.component.html',\n  standalone: false,\n})\nexport class HsStylerEditDialogComponent extends HsConfirmDialogComponent {\n  exitWithoutSave() {\n    this.hsDialogContainerService.destroy(this);\n    this.dialogItem.resolve('exit');\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                    {{'COMMON.unsavedChanges' | 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}}</p>\n                <p class=\"h6 small\">{{'STYLER.unsavedChanges' | translate }}</p>\n            </div>\n            <div class=\"modal-footer\">\n                <button type=\"button\" class=\"btn btn-primary\" (click)=\"yes()\" [title]=\"'COMMON.save' | translate\"\n                    data-dismiss=\"modal\">{{'COMMON.save' |\n                    translate}}</button>\n                <button type=\"button\" class=\"btn btn-secondary compositions-btn-cancel\"\n                    [title]=\"'COMMON.return' | translate\" (click)=\"no()\" data-dismiss=\"modal\">{{'COMMON.return'\n                    |\n                    translate }}</button>\n                <button type=\"button\" class=\"btn btn-secondary compositions-btn-cancel\"\n                    [title]=\"'STYLER.exitWithoutSave' | translate\" (click)=\"exitWithoutSave()\"\n                    data-dismiss=\"modal\">{{'STYLER.exitWithoutSave' | translate }}</button>\n            </div>\n        </div>\n    </div>\n</div>\n","import {Component, Input, OnInit, inject} from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\n\nimport LegendRenderer from 'geostyler-legend/dist/LegendRenderer/LegendRenderer';\nimport {Style as GeoStylerStyle} from 'geostyler-style';\n\nimport {HsStylerService} from 'hslayers-ng/services/styler';\n\n@Component({\n  selector: 'hs-rule-list-item',\n  templateUrl: 'rule-list-item.component.html',\n  styleUrls: ['../../styler.component.scss'],\n  standalone: false,\n})\nexport class HsRuleListItemComponent implements OnInit {\n  hsStylerService = inject(HsStylerService);\n  private sanitizer = inject(DomSanitizer);\n\n  @Input() rule: any;\n  ruleVisible = false;\n  svg: SafeHtml;\n\n  ngOnInit(): void {\n    this.generateLegend();\n  }\n\n  async generateLegend() {\n    const obj: GeoStylerStyle = {name: '', rules: [this.rule]};\n    const legendOpts: any = {\n      styles: [obj],\n      size: [47, 31],\n      hideRect: true,\n    };\n    const legendRenderer = (LegendRenderer as any).default\n      ? new (LegendRenderer as any).default(legendOpts)\n      : new LegendRenderer(legendOpts);\n    const el = document.createElement('div');\n    await legendRenderer.render(el);\n    const svgText = el.innerHTML\n      .replace('0 0 47 35', '0 0 47 31')\n      .replace('height=\"35\"', 'height=\"31\"');\n    this.svg = this.sanitizer.bypassSecurityTrustHtml(svgText);\n  }\n}\n","<li class=\"list-group-item hs-list-item-header hs-styler-rule list-group-item-primary d-flex align-items-center mb-1\"\n  (click)=\"ruleVisible = !ruleVisible\">\n  <div>\n    <button type=\"button\" style=\"border: none; background-color: transparent; cursor: move\">\n      <i class=\"fa-solid fa-up-down-left-right text-secondary\"></i>\n    </button>\n  </div>\n  <div class=\"flex-grow-1 hs-vector-layer-legend\">\n    <div class=\"input-group input-group-sm\">\n      <span class=\"input-group-text\" style=\"background-color: #FFFFFF;\" [innerHtml]=\"svg\">&#64;</span>\n      <input type=\"text\" class=\"form-control\" (change)=\"hsStylerService.save();\"\n        [placeholder]=\"'STYLER.untitledRule' | translate \" [(ngModel)]=\"rule.name\">\n    </div>\n  </div>\n  <div>\n    <span class=\"glyphicon m-2\" [ngClass]=\"ruleVisible ? 'fa-solid fa-chevron-right' : 'fa-solid fa-chevron-down'\"></span>\n    <button class=\"btn btn-danger btn-sm me-0\" (click)=\"hsStylerService.removeRule(rule)\" data-toggle=\"tooltip\"\n      [title]=\"'STYLER.removeRule' | translate  \">\n      <i class=\"fa-solid fa-trash\"></i>\n    </button>\n  </div>\n</li>\n\n@if (ruleVisible) {\n  <hs-rule [rule]=\"rule\" (changes)=\"hsStylerService.save(); generateLegend()\" (mousedown)=\"$event.stopPropagation()\">\n  </hs-rule>\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  inject,\n} from '@angular/core';\n\nimport {Feature} from 'ol';\nimport {Vector as VectorLayer} from 'ol/layer';\nimport {Vector as VectorSource} from 'ol/source';\n\nimport {HsLanguageService} from 'hslayers-ng/services/language';\nimport {HsStylerService} from 'hslayers-ng/services/styler';\nimport {listNumericAttributes} from 'hslayers-ng/services/utils';\n\n@Component({\n  selector: 'hs-add-colormap',\n  templateUrl: './add-colormap.component.html',\n  standalone: false,\n})\nexport class HsAddColormapComponent implements OnInit {\n  hsLanguageService = inject(HsLanguageService);\n  private hsStylerService = inject(HsStylerService);\n\n  name = 'add-colormap';\n  @Input() layer: VectorLayer<VectorSource<Feature>>;\n  weightAttribute: string;\n  attributes: string[];\n  colorMap: string;\n  min: number | string = '';\n  max: number | string = '';\n  categories: number = 10;\n  @Output() canceled = new EventEmitter<void>();\n\n  ngOnInit(): void {\n    const src = this.layer.getSource();\n    const features = src.getFeatures();\n    this.attributes = listNumericAttributes(features);\n  }\n\n  changeAttrib() {\n    const values = this.layer\n      .getSource()\n      .getFeatures()\n      .map((f) => parseFloat(f.get(this.weightAttribute)));\n    const min = Math.min(...values);\n    const max = Math.max(...values);\n    if (!isNaN(min)) {\n      this.min = min;\n    }\n    if (!isNaN(max)) {\n      this.max = max;\n    }\n  }\n\n  save(): void {\n    this.hsStylerService.addRule('ColorMap', {\n      colorMapName: this.colorMap,\n      categories: this.categories,\n      min: this.min ? parseFloat(this.min.toString()) : undefined,\n      max: this.max ? parseFloat(this.max.toString()) : undefined,\n      attribute: this.weightAttribute,\n    });\n  }\n\n  cancel(): void {\n    this.canceled.emit();\n  }\n}\n","<div class=\"form-group ps-2\">\n  <div class=\"form-inline\">\n    <label class=\"control-label\" style=\"width: 100%; justify-content: left\">{{\n      \"LAYERMANAGER.layerEditor.interpolatedAttribute\" | translate }}:</label>\n\n    <select class=\"form-control form-select\" style=\"width: 100%\" [(ngModel)]=\"weightAttribute\"\n      [ngModelOptions]=\"{standalone: true}\" (change)=\"changeAttrib()\">\n      @for (attr of attributes; track attr) {\n      <option [ngValue]=\"attr\">\n        {{attr}}\n      </option>\n      }\n    </select>\n  </div>\n\n  <hs-colormap-picker [(ngModel)]=\"colorMap\"></hs-colormap-picker>\n\n  <div class=\"pb-3 pt-2 d-flex flex-column\">\n    <label class=\"form-label\">{{\n      \"LAYERMANAGER.layerEditor.nrOfCategories\" | translate }}: {{categories}}</label>\n    <input type=\"range\" min=\"4\" max=\"16\" step=\"1\" class=\"inline mt-0\" [(ngModel)]=\"categories\"\n      name=\"hs-colormap-categories\" />\n  </div>\n\n  <div class=\"row g-3\">\n    <div class=\"col-md-6\">\n      <label class=\"form-label\">{{\n        \"LAYERMANAGER.layerEditor.min\" | translate }}:</label>\n      <input class=\"form-control inline\" [(ngModel)]=\"min\" name=\"hsIdwMin\" />\n\n    </div>\n    <div class=\"col-md-6\">\n      <label class=\"form-label\">{{\n        \"LAYERMANAGER.layerEditor.max\" | translate }}:</label>\n      <input class=\"form-control\" [(ngModel)]=\"max\" name=\"hsIdwMax\" />\n    </div>\n  </div>\n\n  <div class=\"row g-3 p-2\">\n    <div class=\"col-md-6\">\n      <button (click)=\"save()\" class=\"btn btn-primary\">{{\"COMMON.apply\" | translate }}</button>\n    </div>\n    <div class=\"col-md-6\">\n      <button (click)=\"cancel()\" class=\"btn btn-outline-secondary\">{{\"COMMON.close\" | translate }}</button>\n    </div>\n  </div>\n</div>\n","import {CdkDragDrop, moveItemInArray} from '@angular/cdk/drag-drop';\nimport {Component, computed, inject} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport colorScales from 'colormap/colorScale';\nimport {Feature} from 'ol';\nimport {Layer, Vector as VectorLayer} from 'ol/layer';\nimport {Source, Vector as VectorSource} from 'ol/source';\n\nimport {HsDialogContainerService} from 'hslayers-ng/common/dialogs';\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {\n  isLayerVectorLayer,\n  normalizeSldComparisonOperators,\n} from 'hslayers-ng/services/utils';\nimport {HsPanelBaseComponent} from 'hslayers-ng/common/panels';\nimport {HsSaveMapService} from 'hslayers-ng/services/save-map';\nimport {HsStylerEditDialogComponent} from './edit-dialog/edit-dialog.component';\nimport {HsStylerService} from 'hslayers-ng/services/styler';\nimport {HsUploadedFiles} from 'hslayers-ng/common/upload';\n\n@Component({\n  selector: 'hs-styles',\n  templateUrl: './styler.component.html',\n  styleUrls: ['./styler.component.scss'],\n  standalone: false,\n})\nexport class HsStylerComponent extends HsPanelBaseComponent {\n  hsStylerService = inject(HsStylerService);\n  hsEventBusService = inject(HsEventBusService);\n  sanitizer = inject(DomSanitizer);\n  hsSaveMapService = inject(HsSaveMapService);\n  hsDialogContainerService = inject(HsDialogContainerService);\n\n  layerTitle: string;\n  uploaderVisible = false;\n\n  /**\n   * Normalized SLD which will be used for download.\n   */\n  sldForDownload = computed(() => {\n    const sld = normalizeSldComparisonOperators(this.hsStylerService.sld());\n    return sld;\n  });\n  downloadData: any;\n\n  name = 'styler';\n  colormaps = Object.keys(colorScales);\n\n  constructor() {\n    super();\n    this.hsEventBusService.layerSelectedFromUrl\n      .pipe(takeUntilDestroyed())\n      .subscribe((layer: Layer<Source>) => {\n        if (layer !== null && isLayerVectorLayer(layer, false)) {\n          this.hsStylerService.fill(\n            layer as VectorLayer<VectorSource<Feature>>,\n          );\n        }\n      });\n    this.hsLayoutService.mainpanel$\n      .pipe(takeUntilDestroyed())\n      .subscribe((which) => {\n        if (which == 'styler') {\n          this.hsStylerService.fill(this.hsStylerService.layer());\n        }\n      });\n  }\n\n  async close() {\n    if (this.hsStylerService.unsavedChange) {\n      const dialog = this.hsDialogContainerService.create(\n        HsStylerEditDialogComponent,\n        {},\n      );\n      const confirmed = await dialog.waitResult();\n      if (confirmed == 'no') {\n        return;\n      }\n      if (confirmed == 'yes') {\n        this.hsStylerService.setSldQml();\n      }\n    }\n    this.hsLayoutService.setMainPanel('layerManager');\n  }\n\n  uploadSld() {\n    this.uploaderVisible = !this.uploaderVisible;\n  }\n\n  async clear() {\n    await this.hsStylerService.reset();\n  }\n\n  drop(event: CdkDragDrop<any[]>): void {\n    moveItemInArray(\n      this.hsStylerService.styleObject.rules,\n      event.previousIndex,\n      event.currentIndex,\n    );\n    this.hsStylerService.save();\n  }\n\n  handleFileUpload(evt: HsUploadedFiles) {\n    const files = Array.from(evt.fileList);\n    const promises = files.map((file) => {\n      return new Promise((resolve) => {\n        const reader = new FileReader();\n        reader.onload = () => resolve(reader.result);\n        reader.readAsText(file);\n      });\n    });\n    Promise.all(promises).then(async (fileContents) => {\n      const styleString = fileContents[0] as string;\n      await this.hsStylerService.loadStyle(styleString);\n    });\n  }\n}\n","@if (isVisible$ | async) {\n<div class=\"card hs-main-panel\" [ngClass]=\"panelWidthClass\">\n  <hs-panel-header name=\"styler\" [panelTabs]=\"'styler'\">\n    <button mainButton class=\"btn btn-sm btn-outline-primary border-0 align-items-center d-flex gap-2\"\n      [title]=\"'STYLER.clear' | translate\" (click)=\"clear()\"> {{'COMMON.reset' | translate}}\n      <i class=\"fa-solid fa-rotate-right\"></i>\n    </button>\n    <extra-buttons>\n      <a class=\"dropdown-item\" download=\"style.sld\" [hsDownload]=\"sldForDownload()\" mimeType=\"text/plain\"\n        [href]=\"downloadData\" (downloadPrepared)=\"downloadData = $event\">\n        <i class=\"fa-solid fa-download\"></i>{{'STYLER.downloadSld' | translate}}\n      </a>\n      <a class=\"dropdown-item\" (click)=\"uploadSld()\" [ngClass]=\"uploaderVisible ? 'text-primary opacity-100' : ''\">\n        <i class=\"fa-solid fa-upload\"></i>{{'STYLER.uploadStyleFile' | translate}}\n      </a>\n    </extra-buttons>\n  </hs-panel-header>\n  <div class=\"alert align-items-center d-flex justify-content-between me-2 mx-1 my-2 p-2 rounded-0 bg-primary-subtle\">\n    {{hsStylerService.layerTitle}}\n    <button type=\"button\" class=\"btn-close p-0\" aria-label=\"Close\" (click)=\"close()\"></button>\n  </div>\n  <div class=\"card-body p-1 pe-2 pt-2\">\n    @if (uploaderVisible) {\n    <div class=\"form-group m-3\">\n      <hs-file-upload (uploaded)=\"handleFileUpload($event)\" uploader=\"hs-sld-upload\" acceptedFormats=\".sld, .qml\">\n      </hs-file-upload>\n    </div>\n    }\n    @if (hsStylerService.styleObject) {\n    <div class=\"form-floating pb-1\">\n      <input type=\"text\" class=\"form-control\" id=\"hs-styler-style-title\" [placeholder]=\"'STYLER.styleName' | translate\"\n        [(ngModel)]=\"hsStylerService.styleObject.name\">\n      <label for=\"hs-styler-style-title\">{{'STYLER.styleName' | translate}}</label>\n    </div>\n    }\n    <div class=\"d-flex flex-row justify-content-end\">\n      <div class=\"p-1 flex-grow-1\">{{'STYLER.rules' | translate }}:</div>\n      <div class=\"p-1\">\n        <div ngbDropdown class=\"d-inline-block\" display=\"dynamic\" placement=\"bottom-right\">\n          <button class=\"btn btn-outline-primary btn-sm\" [title]=\"'STYLER.addRule' | translate\" id=\"dropdownAddRule\"\n            ngbDropdownToggle>\n            <span class=\"fa-solid fa-plus\"></span>\n          </button>\n          <div ngbDropdownMenu aria-labelledby=\"dropdownAddRule\">\n            <button ngbDropdownItem (click)=\"hsStylerService.addRule('Simple')\">\n              {{'STYLER.simpleRule' | translate }}\n            </button>\n            <button ngbDropdownItem (click)=\"hsStylerService.addRule('Cluster')\">\n              {{'STYLER.clusterRule' | translate }}\n            </button>\n            <button ngbDropdownItem\n              (click)=\"hsStylerService.colorMapDialogVisible = !hsStylerService.colorMapDialogVisible\">\n              {{'STYLER.colorMap' | translate }}\n            </button>\n          </div>\n        </div>\n      </div>\n    </div>\n    @if (hsStylerService.colorMapDialogVisible) {\n    <hs-add-colormap [layer]=\"hsStylerService.layer()\"\n      (canceled)=\"hsStylerService.colorMapDialogVisible = false\"></hs-add-colormap>\n    }\n    @if (hsStylerService.styleObject) {\n    <ul class=\"list-group hs-styler-content-list\" cdkDropList (cdkDropListDropped)=\"drop($event)\"\n      [cdkDropListData]=\"hsStylerService.styleObject.rules\">\n      @for (rule of hsStylerService.styleObject.rules; track rule) {\n      <hs-rule-list-item cdkDrag [rule]=\"rule\"></hs-rule-list-item>\n      }\n    </ul>\n    }\n  </div>\n  <div class=\"card-footer bg-white px-1 border-0\">\n    @if (hsStylerService.isAuthenticated() && hsStylerService\n    .unsavedChange) {\n    <div class=\"d-flex justify-content-end\">\n      @if (!hsStylerService.syncing()) {\n      <div class=\"p-1 m-0 btn bg-danger bg-opacity-25 btn-sm py-0\" role=\"alert\">\n        {{'COMMON.unsavedChanges' | translate}} <button class=\"btn btn-primary btn-sm m-1\"\n          (click)=\"hsStylerService.setSldQml()\" data-toggle=\"tooltip\" [title]=\"'STYLER.unsavedChanges' | translate\">\n          <i class=\"fa-solid fa-floppy-disk\"></i>\n        </button>\n      </div>\n      } @else {\n      <div class=\"d-flex align-items-center p-2 bg-secondary text-white rounded btn\">\n        <span class=\"hs-loader hs-loader-dark\"></span>\n        {{'COMMON.savingChanges' | translate}}\n      </div>\n      }\n    </div>\n    }\n  </div>\n</div>\n}","import {Circle, Fill, Stroke, Style} from 'ol/style';\n\nexport const simple_style = new Style({\n  fill: new Fill({\n    color: 'rgba(255, 255, 255, 1)',\n  }),\n  stroke: new Stroke({\n    color: '#ffcc33',\n    width: 1,\n  }),\n  image: new Circle({\n    radius: 7,\n    fill: new Fill({\n      color: '#ffcc33',\n    }),\n  }),\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';\n\nimport {ColorSketchModule} from 'ngx-color/sketch';\nimport {NgbDropdownModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsAddColormapComponent} from './add-colormap.component';\nimport {HsColorPickerComponent} from './symbolizers/color-picker/color-picker.component';\nimport {HsColormapPickerModule} from 'hslayers-ng/common/color-map-picker';\nimport {HsDownloadDirective} from 'hslayers-ng/common/download';\nimport {HsFillSymbolizerComponent} from './symbolizers/fill-symbolizer/fill-symbolizer.component';\nimport {HsFiltersComponent} from 'hslayers-ng/common/filters';\nimport {HsIconSymbolizerComponent} from './symbolizers/icon-symbolizer/icon-symbolizer.component';\nimport {HsLineSymbolizerComponent} from './symbolizers/line-symbolizer/line-symbolizer.component';\nimport {HsMarkSymbolizerComponent} from './symbolizers/mark-symbolizer/mark-symbolizer.component';\nimport {\n  HsPanelHeaderComponent,\n  HsPanelHelpersModule,\n} from 'hslayers-ng/common/panels';\nimport {HsRuleComponent} from './rule/rule.component';\nimport {HsRuleListItemComponent} from './rule/rule-list-item/rule-list-item.component';\nimport {HsScaleDenominatorComponent} from './filters/scale-denominator.component';\nimport {HsSelectIconDialogComponent} from './symbolizers/select-icon-dialog/select-icon-dialog.component';\nimport {HsSliderComponent} from './symbolizers/slider/slider.component';\nimport {HsStylerComponent} from './styler.component';\nimport {HsStylerEditDialogComponent} from './edit-dialog/edit-dialog.component';\nimport {HsStylerPartBaseComponent} from 'hslayers-ng/services/styler';\nimport {HsSymbolizerComponent} from './symbolizers/symbolizer.component';\nimport {HsSymbolizerListItemComponent} from './symbolizers/symbolizer-list-item/symbolizer-list-item.component';\nimport {HsTextSymbolizerComponent} from './symbolizers/text-symbolizer/text-symbolizer.component';\nimport {HsUploadModule} from 'hslayers-ng/common/upload';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  declarations: [\n    HsStylerComponent,\n    HsRuleComponent,\n    HsSymbolizerComponent,\n    HsFillSymbolizerComponent,\n    HsMarkSymbolizerComponent,\n    HsIconSymbolizerComponent,\n    HsTextSymbolizerComponent,\n    HsLineSymbolizerComponent,\n    HsColorPickerComponent,\n    HsSliderComponent,\n    HsScaleDenominatorComponent,\n    HsSelectIconDialogComponent,\n    HsRuleListItemComponent,\n    HsSymbolizerListItemComponent,\n    HsAddColormapComponent,\n    HsStylerEditDialogComponent,\n  ],\n  imports: [\n    CommonModule,\n    ColorSketchModule,\n    HsPanelHelpersModule,\n    FormsModule,\n    NgbDropdownModule,\n    TranslatePipe,\n    HsUploadModule,\n    HsDownloadDirective,\n    DragDropModule,\n    HsColormapPickerModule,\n    HsPanelHeaderComponent,\n    HsFiltersComponent,\n    HsStylerPartBaseComponent,\n  ],\n  exports: [\n    HsStylerComponent,\n    HsRuleComponent,\n    HsSymbolizerComponent,\n    HsFillSymbolizerComponent,\n    HsMarkSymbolizerComponent,\n    HsIconSymbolizerComponent,\n    HsTextSymbolizerComponent,\n    HsLineSymbolizerComponent,\n    HsSymbolizerListItemComponent,\n    HsColorPickerComponent,\n    HsSliderComponent,\n    HsScaleDenominatorComponent,\n    HsSelectIconDialogComponent,\n    HsRuleListItemComponent,\n    HsAddColormapComponent,\n  ],\n})\nexport class HsStylerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3","i3.HsColorPickerComponent","i4.HsSliderComponent","i5","i3.HsMarkSymbolizerComponent","i4.HsIconSymbolizerComponent","i5.HsColorPickerComponent","i6.HsSliderComponent","i2.HsColorPickerComponent","i3.HsSliderComponent","i4","i2.HsFillSymbolizerComponent","i5.HsTextSymbolizerComponent","i6.HsLineSymbolizerComponent","i2.HsSymbolizerComponent","i5.HsScaleDenominatorComponent","i6.HsSymbolizerListItemComponent","i3.HsRuleComponent","i6","i7","i8.HsRuleListItemComponent","i9.HsAddColormapComponent","i10"],"mappings":"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"}