{"version":3,"file":"hslayers-ng-common-panels.mjs","sources":["../../../projects/hslayers/common/panels/panel-header/panel-header.component.ts","../../../projects/hslayers/common/panels/panel-header/panel-header.component.html","../../../projects/hslayers/common/panels/panel-base.component.ts","../../../projects/hslayers/common/panels/gui-overlay-base.component.ts","../../../projects/hslayers/common/panels/panel-host.directive.ts","../../../projects/hslayers/common/panels/panel-container.component.ts","../../../projects/hslayers/common/panels/panel-container.component.html","../../../projects/hslayers/common/panels/panel-helpers.module.ts","../../../projects/hslayers/common/panels/panel-item.ts","../../../projects/hslayers/common/panels/hslayers-ng-common-panels.ts"],"sourcesContent":["import {AsyncPipe} from '@angular/common';\n\nimport {BehaviorSubject} from 'rxjs';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DestroyRef,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n  inject,\n} from '@angular/core';\nimport {NgbDropdownModule} from '@ng-bootstrap/ng-bootstrap';\nimport {tap} from 'rxjs/operators';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsLanguageService} from 'hslayers-ng/services/language';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\n\nexport function toArray(panels: string) {\n  return panels.split(',');\n}\n\n@Component({\n  selector: 'hs-panel-header',\n  templateUrl: './panel-header.component.html',\n  imports: [TranslatePipe, NgbDropdownModule, AsyncPipe],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styleUrl: './panel-header.component.scss',\n})\nexport class HsPanelHeaderComponent implements OnInit {\n  hsLayoutService = inject(HsLayoutService);\n  private hsLanguageService = inject(HsLanguageService);\n  private elementRef = inject(ElementRef);\n  private cdr = inject(ChangeDetectorRef);\n\n  @ViewChild('extraButtonsContainer', {static: true})\n  extraButtons: ElementRef;\n  active: string;\n  private destroyRef = inject(DestroyRef);\n\n  @Input() name: string;\n  /**\n   * Part of translation string which exists on 'translationModule' module\n   * eg. COMPOSITIONS --\\> which will be used for translation as 'translationModule'.COMPOSITIONS\n   */\n  @Input({transform: toArray}) panelTabs: string[];\n\n  @Input() translationModule: string = 'PANEL_HEADER';\n\n  @Output() tabSelected = new EventEmitter<string>();\n  @Input() selectedTab$: BehaviorSubject<string>;\n\n  ngOnInit() {\n    if (!this.selectedTab$) {\n      this.selectedTab$ = new BehaviorSubject(this.panelTabs[0]);\n    }\n    this.hsLanguageService\n      .getTranslator()\n      .onLangChange.pipe(\n        tap(() => {\n          this.cdr.markForCheck();\n        }),\n        takeUntilDestroyed(this.destroyRef),\n      )\n      // eslint-disable-next-line @typescript-eslint/no-empty-function\n      .subscribe(() => {});\n  }\n\n  /**\n   * Check if there is some extra content\n   */\n  hasExtraButtons(): boolean {\n    return this.extraButtons?.nativeElement.childElementCount > 0;\n  }\n  /**\n   * Next value of activated tab to the BehaviorSubject\n   */\n  tabClicked(tab: string): void {\n    this.selectedTab$.next(tab);\n  }\n}\n","<ul class=\"w-100 nav nav-tabs pt-1 border-0 ps-1 flex-nowrap\" style=\"height: 99%;\">\n\n  @for (tab of panelTabs; track tab) {\n  <li class=\"nav-item\" (click)=\"tabClicked(tab)\" style=\"max-height:103%\">\n    <a [class.active]=\"(selectedTab$ | async) === tab\" style=\"margin-top: 2px;\"\n      class=\"active align-items-center d-flex h-100 justify-content-center nav-link\" aria-current=\"page\">\n      {{translationModule + (translationModule && translationModule.length > 0 ? '.': '') + tab | translate : {fallbackValue: tab} }}\n    </a>\n  </li>\n  }\n\n  <div class=\"extra-content d-flex position-absolute top-0\">\n    <div #mainButtonContainer class=\"d-flex\" data-cy=\"mainButtonContainer\">\n      <ng-content select=\"[mainButton]\"></ng-content>\n    </div>\n    <div [hidden]=\"!hasExtraButtons()\" class=\"btn-group\" ngbDropdown placement=\"bottom-end\" display=\"dynamic\">\n      <button ngbDropdownToggle class=\"btn bt-sm btn-outline-primary border-0 hs-extra-buttons me-1\" type=\"button\"><i\n          class=\"fa-solid fa-bars\"></i></button>\n      <div #extraButtonsContainer class=\"extra-buttons-container\" ngbDropdownMenu>\n        <ng-content select=\"extra-buttons\"></ng-content>\n      </div>\n    </div>\n  </div>\n\n</ul>\n","import {Component, DestroyRef, OnInit, ViewRef, inject} from '@angular/core';\nimport {Observable, map} from 'rxjs';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\nimport {HsPanelComponent} from './panel-component.interface';\n\n@Component({\n  template: '<div></div>',\n  standalone: true,\n})\nexport class HsPanelBaseComponent implements HsPanelComponent, OnInit {\n  name: string;\n  viewRef: ViewRef;\n  data: any;\n  isVisible$ = new Observable<boolean>();\n\n  panelWidthClass: string;\n\n  /**\n   * Control to make sure HsPanelBaseComponent ngOnInit was run eg.\n   * was called from parent ngOnInit or when parents ngOnInit is not defined\n   */\n  private baseComponentInitRun = false;\n  hsLayoutService = inject(HsLayoutService);\n  destroyRef = inject(DestroyRef);\n  constructor() {\n    this.isVisible$ = this.hsLayoutService.mainpanel$.pipe(\n      takeUntilDestroyed(),\n      map((which) => {\n        return this.name === which;\n      }),\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 HsPanelBaseComponent 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.panelWidthClass = this.getPanelWidthClass();\n    this.hsLayoutService.hsConfig.configChanges\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => {\n        this.panelWidthClass = this.getPanelWidthClass();\n      });\n\n    if (!this.name) {\n      console.error(`${this.constructor.name} is missing a name property!`);\n    }\n  }\n\n  /**\n   * Set panelWidthClass\n   */\n  private getPanelWidthClass() {\n    const pnlWidth =\n      this.hsLayoutService.hsConfig.panelWidths[this.name] ||\n      this.hsLayoutService.hsConfig.panelWidths['default'];\n\n    return `hs-panel-width-${Math.round(pnlWidth / 25) * 25}`;\n  }\n}\n","import {Component, DestroyRef, OnInit, ViewRef, inject} from '@angular/core';\nimport {Observable, of} from 'rxjs';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\nimport {HsPanelComponent} from './panel-component.interface';\n\n@Component({\n  template: '<div></div>',\n  standalone: true,\n})\nexport class HsGuiOverlayBaseComponent implements HsPanelComponent, OnInit {\n  name: string;\n  viewRef: ViewRef;\n  data: any;\n  isVisible$ = new Observable<boolean>();\n\n  /**\n   * Control to make sure HsGuiOverlayBaseComponent ngOnInit was run eg.\n   * was called from parent ngOnInit or when parents ngOnInit is not defined\n   */\n  private baseComponentInitRun = false;\n  hsLayoutService = inject(HsLayoutService);\n  destroyRef = inject(DestroyRef);\n\n  constructor() {\n    setTimeout(() => {\n      if (!this.baseComponentInitRun) {\n        console.warn(\n          `${\n            this.name || this.constructor.name\n          } implements ngOnInit lifecycle hook without calling HsGuiOverlayBaseComponent ngOnInit. \n          Make sure it is executed by calling super.ngOnInit() from component's ngOnInit manually`,\n        );\n      }\n    }, 3000);\n  }\n\n  ngOnInit(): void {\n    this.baseComponentInitRun = true;\n    this.isVisible$ = this.componentEnabled();\n    this.hsLayoutService.hsConfig.configChanges\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => {\n        this.isVisible$ = this.componentEnabled();\n      });\n\n    if (!this.name) {\n      console.error(`${this.constructor.name} is missing a name property!`);\n    }\n  }\n\n  /**\n   * Determine component visibility\n   */\n  componentEnabled(): Observable<boolean> {\n    return of(\n      this.hsLayoutService.componentEnabled(this.name) &&\n        this.hsLayoutService.componentEnabled('guiOverlay'),\n    );\n  }\n}\n","import {Directive, ViewContainerRef, inject} from '@angular/core';\n\n@Directive({\n  selector: '[hsPanelHost]',\n  standalone: false,\n})\nexport class HsPanelHostDirective {\n  viewContainerRef = inject(ViewContainerRef);\n}\n","import {\n  Component,\n  DestroyRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n  inject,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {ReplaySubject} from 'rxjs';\n\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsLogService} from 'hslayers-ng/services/log';\nimport {HsPanelComponent} from './panel-component.interface';\nimport {HsPanelContainerServiceInterface} from './panel-container.service.interface';\nimport {HsPanelHostDirective} from './panel-host.directive';\nimport {HsPanelItem} from './panel-item';\n\n@Component({\n  selector: 'hs-panel-container',\n  templateUrl: './panel-container.component.html',\n  standalone: false,\n})\nexport class HsPanelContainerComponent implements OnInit, OnDestroy {\n  private hsConfig = inject(HsConfig);\n  private hsLog = inject(HsLogService);\n\n  @ViewChild(HsPanelHostDirective, {static: true})\n  panelHost: HsPanelHostDirective;\n  /**\n    Service which manages the list of panels\n   */\n  @Input() service: HsPanelContainerServiceInterface;\n  /**\n   * Miscellaneous data object to set to each of the panels inside this container.\n   * This is used if undefined value is passed to the create functions data parameter.\n   */\n  @Input() data: any;\n  /**\n   * Set this to true to not clear the ReplaySubject on container destruction because\n   * panels are added to ReplaySubject from app component and we cant re-add them.\n   */\n  @Input() reusePanelObserver?: boolean;\n  @Input() panelObserver?: ReplaySubject<HsPanelItem>;\n  @Output() init = new EventEmitter<void>();\n  interval: any;\n  private destroyRef = inject(DestroyRef);\n\n  ngOnDestroy(): void {\n    if (this.service.panelObserver && this.reusePanelObserver !== true) {\n      this.service.panelObserver.complete();\n      this.service.panelObserver = new ReplaySubject<HsPanelItem>();\n    }\n    for (const p of this.service.panels()) {\n      this.service.destroy(p);\n    }\n  }\n\n  ngOnInit(): void {\n    this.service.panels.set([]);\n    (this.panelObserver ?? this.service.panelObserver)\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((item: HsPanelItem) => {\n        this.loadPanel(item);\n      });\n    this.service.panelDestroyObserver\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((item: HsPanelComponent) => {\n        this.destroyPanel(item);\n      });\n    this.init.emit();\n  }\n\n  destroyPanel(panel: HsPanelComponent): void {\n    const viewContainerRef = this.panelHost.viewContainerRef;\n    const index = viewContainerRef.indexOf(panel.viewRef);\n    if (index > -1) {\n      viewContainerRef.remove(index);\n    }\n  }\n\n  loadPanel(panelItem: HsPanelItem): void {\n    const viewContainerRef = this.panelHost.viewContainerRef;\n    const componentRef = viewContainerRef.createComponent(panelItem.component);\n    const componentRefInstance = <HsPanelComponent>componentRef.instance;\n    componentRefInstance.viewRef = componentRef.hostView;\n\n    /* When component doesn't create its own data object \n    set data by merging two sources: html attribute (this.data) and parameter passed \n    to PanelContainerService.create function (panelItem.data). It can contain \n    layerDescriptor for example */\n    if (componentRefInstance.data == undefined) {\n      Object.assign(panelItem.data, this.data);\n      componentRefInstance.data = panelItem.data;\n    }\n    this.service.panels.update((panels) => [...panels, componentRefInstance]);\n    if (!componentRefInstance.isVisible$) {\n      this.hsLog.warn(\n        componentRefInstance,\n        'should extend HsPanelBaseComponent',\n      );\n    }\n  }\n}\n","<ng-template hsPanelHost></ng-template>\n","import {NgModule} from '@angular/core';\n\nimport {HsPanelContainerComponent} from './panel-container.component';\nimport {HsPanelHostDirective} from './panel-host.directive';\n@NgModule({\n  declarations: [HsPanelHostDirective, HsPanelContainerComponent],\n  imports: [],\n  exports: [HsPanelContainerComponent],\n})\nexport class HsPanelHelpersModule {}\n","import {Type} from '@angular/core';\n\nexport class HsPanelItem {\n  constructor(\n    public component: Type<any>,\n    public data: any,\n  ) {}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.HsPanelHostDirective"],"mappings":"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"}