{"version":3,"file":"hslayers-ng-components-info.mjs","sources":["../../../projects/hslayers/components/info/info.component.ts","../../../projects/hslayers/components/info/info.component.html","../../../projects/hslayers/components/info/info.module.ts","../../../projects/hslayers/components/info/hslayers-ng-components-info.ts"],"sourcesContent":["import {Component, inject} from '@angular/core';\nimport {map} from 'rxjs/operators';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsGuiOverlayBaseComponent} from 'hslayers-ng/common/panels';\nimport {getTitle} from 'hslayers-ng/common/extensions';\n\n@Component({\n  selector: 'hs-info',\n  templateUrl: './info.component.html',\n  standalone: false,\n})\nexport class HsInfoComponent extends HsGuiOverlayBaseComponent {\n  private hsEventBusService = inject(HsEventBusService);\n\n  /**\n   * Store if composition is loaded\n   */\n  composition_loaded = true;\n  /**\n   * List of layers which are currently loading.\n   */\n  layer_loading = [];\n  composition_abstract: string;\n  composition_title: string;\n  composition_id: string;\n  info_image: string;\n  composition_edited: boolean;\n\n  //Show layer loading only in case layermanager is not the main panel\n  showLayerLoading = this.hsLayoutService.mainpanel$.pipe(\n    map((panel) => panel !== 'layerManager'),\n    takeUntilDestroyed(this.destroyRef),\n  );\n  name = 'info';\n\n  constructor() {\n    super();\n    this.hsEventBusService.compositionLoads\n      .pipe(takeUntilDestroyed())\n      .subscribe((data) => {\n        if (data.error !== undefined) {\n          const temp_abstract = this.composition_abstract;\n          const temp_title = this.composition_title;\n          this.composition_abstract = data.abstract;\n          this.composition_title = data.title;\n          this.composition_title = temp_title;\n          this.composition_abstract = temp_abstract;\n        }\n        this.composition_loaded = true;\n        this.composition_edited = false;\n      });\n\n    this.hsEventBusService.layerLoading\n      .pipe(takeUntilDestroyed())\n      .subscribe(({layer, progress}) => {\n        if (!this.layer_loading.includes(getTitle(layer))) {\n          this.layer_loading.push(getTitle(layer));\n          this.composition_loaded = false;\n        }\n      });\n\n    this.hsEventBusService.layerLoaded\n      .pipe(takeUntilDestroyed())\n      .subscribe((layer) => {\n        for (let i = 0; i < this.layer_loading.length; i++) {\n          if (this.layer_loading[i] == getTitle(layer)) {\n            this.layer_loading.splice(i, 1);\n          }\n        }\n\n        if (this.layer_loading.length == 0 && !this.composition_loaded) {\n          this.composition_loaded = true;\n        }\n      });\n\n    this.hsEventBusService.compositionDeletes\n      .pipe(takeUntilDestroyed())\n      .subscribe((composition) => {\n        if (composition.id == this.composition_id) {\n          delete this.composition_title;\n          delete this.composition_abstract;\n        }\n      });\n\n    this.hsEventBusService.mapResets\n      .pipe(takeUntilDestroyed())\n      .subscribe(() => {\n        delete this.composition_title;\n        delete this.composition_abstract;\n        this.layer_loading.length = 0;\n        this.composition_loaded = true;\n        this.composition_edited = false;\n      });\n\n    this.hsEventBusService.compositionEdits\n      .pipe(takeUntilDestroyed())\n      .subscribe(() => {\n        this.composition_edited = true;\n      });\n  }\n\n  /**\n   * Test if composition is loaded, to change info template.\n   * @returns Returns true if composition title available\n   */\n  compositionLoaded(): boolean {\n    return this.composition_title !== undefined;\n  }\n\n  isVisible(): boolean {\n    return this.hsLayoutService.panelEnabled('compositionLoadingProgress');\n  }\n}\n","<div class=\"hs-info-container\" [hidden]=\"(isVisible$ | async) === false\">\n  <div class=\"hs-info-area p-1\">\n    @if(showLayerLoading | async){\n      <div style=\"display: flex;box-sizing: content-box\"\n        class=\"hs-info-layers justify-content-start align-items-center\" [hidden]=\"!layer_loading.length\">\n        <div class=\"hs-info-composition-image\">\n          <span class=\"fa-solid fa-rotate fa-spin\"></span>\n        </div>\n        <div class=\"text-truncate\">\n          <div class=\"hs-info-composition-title\">{{'COMMON.loading' | translate }}: </div>\n          @for (layer of layer_loading; track $index) {\n            <span>{{layer}} </span>\n          }\n        </div>\n      </div>\n    }\n    @if (!compositionLoaded() && !composition_edited) {\n      <div class=\"hs-info-composition\" style=\"max-width: max-content;\"\n        >\n        <div class=\"hs-info-composition-container\">\n          <div class=\"hs-info-composition-title\" [title]=\"'INFOCOMPONENT.viewComposeAndAnalyse' | translate \">\n          {{'INFOCOMPONENT.newMap' | translate }}</div>\n        </div>\n      </div>\n    }\n\n    <div class=\"hs-info-composition-edited\" [hidden]=\"!composition_edited\">\n      <span>{{'INFOCOMPONENT.youHaveUnsavedChanges' | translate }}</span>\n    </div>\n\n    @if (compositionLoaded()) {\n      <div class=\"hs-info-composition\">\n        <div class=\"hs-info-composition-container\">\n          <div class=\"hs-info-composition-title-container\">\n            <div class=\"hs-info-composition-title\">{{ 'COMMON.composition' | translate}}</div>\n            <span class=\"text-truncate\">: {{composition_title}}</span>\n          </div>\n          <div class=\"hs-info-composition-abstract text-truncate\">{{composition_abstract}}</div>\n        </div>\n      </div>\n    }\n\n    <update-title [title]=\"composition_title\"></update-title>\n    <update-meta property=\"og:title\" [content]=\"composition_title\"></update-meta>\n    <update-meta property=\"twitter:title\" [content]=\"composition_title\"></update-meta>\n    <update-meta itemprop=\"title\" [content]=\"composition_title\"></update-meta>\n\n    <update-meta name=\"description\" [content]=\"composition_abstract\"></update-meta>\n    <update-meta property=\"og:description\" [content]=\"composition_abstract\"></update-meta>\n    <update-meta property=\"twitter:description\" [content]=\"composition_abstract\"></update-meta>\n    <update-meta itemprop=\"description\" [content]=\"composition_abstract\"></update-meta>\n  </div>\n</div>\n","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsInfoComponent} from './info.component';\nimport {HsPanelHelpersModule} from 'hslayers-ng/common/panels';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  declarations: [HsInfoComponent],\n  imports: [FormsModule, CommonModule, HsPanelHelpersModule, TranslatePipe],\n  exports: [HsInfoComponent],\n})\nexport class HsInfoModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}