{"version":3,"file":"hslayers-ng-common-color-map-picker.mjs","sources":["../../../projects/hslayers/common/color-map-picker/colormap-picker.component.ts","../../../projects/hslayers/common/color-map-picker/colormap-picker.component.html","../../../projects/hslayers/common/color-map-picker/colormap-picker.module.ts","../../../projects/hslayers/common/color-map-picker/hslayers-ng-common-color-map-picker.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  forwardRef,\n  inject,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nimport colorScales from 'colormap/colorScale';\nimport {HsStylerService} from 'hslayers-ng/services/styler';\n\nexport type hsStylerColorMaps = {\n  [name: string]: SVGSVGElement;\n};\n\ntype hsStylerColorMapsKeyValue = {\n  key: string;\n  value: SVGSVGElement;\n};\n\n@Component({\n  selector: 'hs-colormap-picker',\n  templateUrl: './colormap-picker.component.html',\n  styleUrls: ['./colormap-picker.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      // eslint-disable-next-line no-use-before-define\n      useExisting: forwardRef(() => ColormapPickerComponent),\n      multi: true,\n    },\n  ],\n  standalone: false,\n})\nexport class ColormapPickerComponent implements ControlValueAccessor {\n  private hsStylerService = inject(HsStylerService);\n\n  @Input() height?: string = '50vh';\n  _colorMaps: hsStylerColorMaps;\n  //Value propagated to ngModel\n  colorMap: string;\n  //Internal, to be able to show selected map along with SVG\n  _colorMap: hsStylerColorMapsKeyValue;\n  menuVisible = false;\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() change = new EventEmitter<string>();\n\n  get colorMaps(): hsStylerColorMaps {\n    if (!this._colorMaps) {\n      this._colorMaps = this.createColorMaps();\n    }\n    return this._colorMaps;\n  }\n\n  onChange = (_: any) => {};\n  onTouch = (_: any) => {};\n\n  registerOnChange(providedFn) {\n    this.onChange = providedFn;\n  }\n\n  registerOnTouched(providedFn) {\n    this.onTouch = providedFn;\n  }\n\n  /**\n   * If value changes from the outside of control\n   * update component\n   */\n  writeValue(providedValue: string) {\n    this.colorMap = providedValue;\n    this._colorMap = {\n      key: providedValue,\n      value: this.colorMaps[providedValue],\n    };\n  }\n\n  createColorMaps(): hsStylerColorMaps {\n    const colorMap = {};\n    for (const [name, colors] of Object.entries(colorScales)) {\n      colorMap[name] = this.getColorMapSVG(name, colors);\n    }\n    return colorMap;\n  }\n\n  private getColorMapSVG(colormap: string, colors) {\n    const rgbValues = colors.map((c) => c.rgb);\n    return this.hsStylerService.generateSVGGradientForColorMap(rgbValues);\n  }\n\n  /**\n   * Pick a colorMap\n   */\n  select(colorMapName: {key: string; value: SVGSVGElement}): void {\n    this.menuVisible = false;\n    this.colorMap = colorMapName.key;\n    this._colorMap = colorMapName;\n    this.onChange(this.colorMap);\n    this.change.emit(this.colorMap);\n  }\n}\n","<div class=\"form-inline hs-colorMap-picker-container position-relative py-1\">\n    <label class=\"control-label\" style=\"width: 100%; justify-content: left\">{{\n        \"LAYERMANAGER.layerEditor.colorMap\" | translate }}:</label>\n    <div class=\"form-control form-select hs-colorMap-picker-select d-flex justify-content-between\"\n        (click)=\"menuVisible = !menuVisible\" style=\"width: 100%\" tabindex=\"0\">\n        <ng-container *ngTemplateOutlet=\"colorMapRow;context:{cm: _colorMap}\"></ng-container>\n    </div>\n    <section [hidden]=\"!menuVisible\" [style.height]=\"height\" class=\"hs-colorMap-picker-menu position-absolute\">\n        @for (cm of colorMaps | keyvalue; track cm.key) {\n        <div class=\"hs-colorMap-picker-item d-flex justify-content-between py-1 cursor-pointer\"\n            [class.active]=\"colorMap === cm.key\" (click)=\"select(cm)\">\n            <ng-container *ngTemplateOutlet=\"colorMapRow;context:{cm:cm}\"></ng-container>\n        </div>\n        }\n    </section>\n</div>\n<ng-template #colorMapRow let-cm=\"cm\">\n    <span class=\"hs-color-picker-item-label text-truncate\">{{cm.key}}</span>\n    <span [innerHtml]=\"cm.value\"></span>\n</ng-template>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {ColormapPickerComponent} from './colormap-picker.component';\n\n@NgModule({\n  declarations: [ColormapPickerComponent],\n  imports: [CommonModule, TranslatePipe],\n  exports: [ColormapPickerComponent],\n})\nexport class HsColormapPickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}