{"version":3,"file":"hslayers-ng-components-sidebar.mjs","sources":["../../../projects/hslayers/components/sidebar/impressum.component.ts","../../../projects/hslayers/components/sidebar/impressum.component.html","../../../projects/hslayers/components/sidebar/mini-sidebar.component.ts","../../../projects/hslayers/components/sidebar/sidebar.component.html","../../../projects/hslayers/components/sidebar/sidebar.component.ts","../../../projects/hslayers/components/sidebar/sortBy.pipe.ts","../../../projects/hslayers/components/sidebar/sidebar.module.ts","../../../projects/hslayers/components/sidebar/hslayers-ng-components-sidebar.ts"],"sourcesContent":["import {Component, computed, signal, inject} from '@angular/core';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsConfig} from 'hslayers-ng/config';\n\n@Component({\n  selector: 'hs-impressum',\n  templateUrl: './impressum.component.html',\n  imports: [TranslatePipe],\n  standalone: true,\n})\nexport class HsImpressumComponent {\n  hsConfig = inject(HsConfig);\n\n  version = signal('16.4.0');\n  logoError = signal(false);\n\n  logoPath = computed(\n    () => this.hsConfig.assetsPath + 'img/hslayers-ng-logo.png',\n  );\n\n  githubReleaseUrl = computed(\n    () =>\n      `https://github.com/hslayers/hslayers-ng/releases/tag/${this.version()}`,\n  );\n\n  onLogoError(): void {\n    this.logoError.set(true);\n  }\n}\n","<div class=\"hs-impressum position-absolute w-100 bottom-0 flex-column align-items-center\">\n    <div class=\"hs-branding\">\n      @if (!logoError()) {\n        <a href=\"https://ng.hslayers.org/\" target=\"_blank\" rel=\"noopener noreferrer\">\n          <img \n            [src]=\"logoPath()\" \n            alt=\"HSLayers-NG\"\n            class=\"hs-logo\"\n            (error)=\"onLogoError()\"\n          />\n        </a>\n      } @else {\n        <div class=\"text-primary fw-bolder fs-4\">HSLayers-NG</div>\n      }\n    </div>\n    \n    <div class=\"hs-info\">\n      <div class=\"hs-version d-flex align-items-center justify-content-center gap-2\">\n        <span>{{'COMMON.version' | translate}}</span>\n        <a \n          [href]=\"githubReleaseUrl()\" \n          target=\"_blank\" \n          rel=\"noopener noreferrer\"\n          class=\"hs-version-link text-primary fw-bolder p-1 text-decoration-none\" \n        >\n          {{ version() }}\n        </a>\n      </div>\n    </div>\n</div>\n","import {Component, DestroyRef, OnInit, inject} from '@angular/core';\nimport {Observable, delay, map, startWith} from 'rxjs';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {HsButton} from 'hslayers-ng/types';\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\nimport {HsSidebarService} from 'hslayers-ng/services/sidebar';\n\n@Component({\n  selector: 'hs-mini-sidebar',\n  templateUrl: './sidebar.component.html',\n  standalone: false,\n})\nexport class HsMiniSidebarComponent implements OnInit {\n  hsSidebarService = inject(HsSidebarService);\n  hsLayoutService = inject(HsLayoutService);\n  hsConfig = inject(HsConfig);\n  private hsEventBusService = inject(HsEventBusService);\n\n  buttons: HsButton[] = [];\n  miniSidebarButton: {title: string};\n  private destroyRef = inject(DestroyRef);\n\n  isVisible: Observable<boolean>;\n\n  ngOnInit() {\n    this.hsSidebarService.buttons\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .pipe(startWith([]), delay(0))\n      .subscribe((buttons) => {\n        this.buttons = this.hsSidebarService.prepareForTemplate(buttons);\n      });\n    this.miniSidebarButton = {\n      title: 'SIDEBAR.additionalPanels',\n    };\n\n    this.isVisible = this.hsLayoutService.mainpanel$.pipe(\n      map((which) => {\n        return which == 'sidebar';\n      }),\n    );\n  }\n\n  /**\n   * Seat weather to show all sidebar buttons or just a\n   * subset of important ones\n   */\n  toggleUnimportant(): void {\n    this.hsSidebarService.showUnimportant =\n      !this.hsSidebarService.showUnimportant;\n  }\n\n  /**\n   * Toggle sidebar mode between expanded and narrow\n   */\n  toggleSidebar(): void {\n    this.hsLayoutService.sidebarExpanded =\n      !this.hsLayoutService.sidebarExpanded;\n    setTimeout(() => {\n      this.hsEventBusService.mapSizeUpdates.next();\n    }, 110);\n  }\n}\n","<div class=\"card hs-sidebar-list hs-main-panel list-group\">\n  @if (hsLayoutService.minisidebar) {\n  <hs-panel-header class=\"sidebar-header w-100\" name=\"additional\"\n    [title]=\"'SIDEBAR.additionalPanels' | translate \"></hs-panel-header>\n  }\n\n  @if (hsLayoutService.sidebarToggleable && {position: hsLayoutService.sidebarPosition | async}; as sidebar) {\n  <span class=\"hs-sidebar-item list-group-item border-top-0\" (click)=\"toggleSidebar()\">\n    <i class=\"menu-icon\"\n      [ngClass]=\"hsLayoutService.sidebarExpanded ? (sidebar.position === 'left' ? 'fa-solid fa-chevron-left' : 'fa-solid fa-chevron-right') : (sidebar.position === 'left' ? 'fa-solid fa-chevron-right' : 'fa-solid fa-chevron-left')\"></i>\n  </span>\n  }<!-- TODO: Remove function call from template -->\n\n  @for (button of buttons; track button) {\n  <span class=\"hs-sidebar-item list-group-item h-100 d-flex align-items-center flex-fill\"\n    [attr.data-cy]=\"button.panel\" [hidden]=\"!button.visible\" (click)=\"hsSidebarService.buttonClicked(button)\"\n    [ngClass]=\"{'active': hsLayoutService.mainpanel === button.panel,  'hs-panel-hidden' : !button.fits}\"\n    [class.language]=\"button.panel === 'language'\" [title]=\"button.description | translate\">\n    <!-- TODO: Remove function call from template -->\n    @if (button.icon) {\n    <i class=\"menu-icon fa-solid {{button.icon}}\" data-toggle=\"tooltip\" data-container=\"body\" data-placement=\"auto\"></i>\n    }\n    @if (button.content) {\n    <span data-toggle=\"tooltip\" class=\"hs-sidebar-item-content\" data-container=\"body\" data-placement=\"auto\" \n      [title]=\"button.description | translate \">{{button.content()}}</span>\n    }\n    <span class=\"hs-sidebar-item-title\">{{button.title |\n      translate }}</span>\n  </span>\n  }\n  <!-- TODO: Remove function call from template -->\n  @if (hsLayoutService.minisidebar) {\n  <span class=\"hs-sidebar-item d-flex list-group-item hs-sidebar-additional-items flex-fill align-items-center\"\n    (click)=\"hsLayoutService.setMainPanel('sidebar', true)\"\n    [ngClass]=\"{'active': hsLayoutService.mainpanel === 'sidebar'}\">\n    <i class=\"menu-icon fa-solid fa-equals\" data-toggle=\"tooltip\" data-container=\"body\" data-placement=\"auto\"\n      title=\"Menu\"></i>\n    <span class=\"hs-sidebar-item-title\">{{miniSidebarButton.title | translate }}</span>\n  </span>\n  }\n</div>\n<hs-impressum />\n","import {Component, DestroyRef, OnDestroy, OnInit, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {Subscription, debounceTime} from 'rxjs';\n\nimport {HS_PRMS, HsShareUrlService} from 'hslayers-ng/services/share';\nimport {HsButton} from 'hslayers-ng/types';\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\nimport {HsSidebarService} from 'hslayers-ng/services/sidebar';\n\n@Component({\n  selector: 'hs-sidebar',\n  templateUrl: './sidebar.component.html',\n  standalone: false,\n})\nexport class HsSidebarComponent implements OnInit, OnDestroy {\n  hsLayoutService = inject(HsLayoutService);\n  hsSidebarService = inject(HsSidebarService);\n  hsShareUrlService = inject(HsShareUrlService);\n  hsConfig = inject(HsConfig);\n  private hsEventBusService = inject(HsEventBusService);\n  private destroyRef = inject(DestroyRef);\n\n  configChangesSubscription: Subscription;\n  buttons: HsButton[] = [];\n  miniSidebarButton: {title: string};\n  sidebarPosition: string;\n\n  ngOnDestroy(): void {\n    this.hsSidebarService.destroy();\n  }\n\n  ngOnInit(): void {\n    const panel = this.hsShareUrlService.getParamValue(HS_PRMS.panel);\n    this.hsSidebarService.buttons\n      .pipe(debounceTime(500), takeUntilDestroyed(this.destroyRef))\n      .subscribe((buttons) => {\n        this.buttons = this.hsSidebarService.prepareForTemplate(buttons);\n        this.hsSidebarService.setPanelState(this.buttons);\n        this.hsSidebarService.setButtonVisibility(this.buttons);\n      });\n    this.miniSidebarButton = {\n      title: 'SIDEBAR.additionalPanels',\n    };\n    if (panel) {\n      setTimeout(() => {\n        //Without timeout we get ExpressionChangedAfterItHasBeenCheckedError\n        if (!this.hsLayoutService.minisidebar) {\n          this.hsLayoutService.setMainPanel(panel);\n        }\n      });\n    }\n    this.hsEventBusService.layoutResizes\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => {\n        this.hsSidebarService.setButtonVisibility(this.buttons);\n      });\n    this.hsConfig.configChanges\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => {\n        this.refreshButtons();\n      });\n    this.hsSidebarService.sidebarLoad.next();\n  }\n\n  /**\n   * Refresh buttons array. Remove disabled ones and add the ones that were enabled\n   */\n  refreshButtons() {\n    const disabledPanels = Object.entries(this.hsConfig.panelsEnabled).reduce(\n      (acc, [panel, isEnabled]) => (isEnabled ? [...acc, panel] : acc),\n      [],\n    );\n\n    /**\n     * Filter out disabled\n     */\n    const filteredButtons = this.buttons.filter(\n      (b) => !disabledPanels.includes(b.panel),\n    );\n    const filteredButtonsPanels = filteredButtons.map((b) => b.panel);\n\n    /**\n     * Add panels that were enabled\n     */\n    const toBeActivated = Object.entries(this.hsConfig.panelsEnabled)\n      .reduce(\n        (acc, [panel, isEnabled]) => (isEnabled ? [...acc, panel] : acc),\n        [],\n      )\n      .filter((b) =>\n        ['search', 'measure'].includes(b)\n          ? this.resloveBtnWithCondition(b)\n          : !filteredButtonsPanels.includes(b),\n      );\n\n    for (const b of toBeActivated) {\n      filteredButtons.push(this.hsSidebarService.buttonDefinition[b]);\n    }\n    this.hsSidebarService.buttonsSubject.next(filteredButtons);\n  }\n\n  /**\n   * Resolve whether search/measure buttons should be visible after config update.\n   */\n  private resloveBtnWithCondition(panel: string) {\n    return !(\n      this.hsConfig.componentsEnabled['guiOverlay'] &&\n      this.hsConfig.componentsEnabled['toolbar'] &&\n      this.hsConfig.componentsEnabled[`${panel}Toolbar`]\n    );\n  }\n\n  /**\n   * Seat whether to show all sidebar buttons or just a\n   * subset of important ones\n   */\n  toggleUnimportant(): void {\n    this.hsSidebarService.showUnimportant =\n      !this.hsSidebarService.showUnimportant;\n  }\n\n  /**\n   * Toggle sidebar mode between expanded and narrow\n   */\n  toggleSidebar(): void {\n    this.hsLayoutService.sidebarExpanded =\n      !this.hsLayoutService.sidebarExpanded;\n    this.hsLayoutService.updPanelSpaceWidth();\n    setTimeout(() => {\n      this.hsEventBusService.mapSizeUpdates.next();\n    }, 110);\n  }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n  name: 'sortBy',\n  standalone: false,\n})\nexport class SortByPipe implements PipeTransform {\n  transform(value: any[], order = '', column = ''): any[] {\n    if (value.length <= 1) {\n      return value;\n    } // array with only one item\n    if (order === undefined || order == '') {\n      value ? (column ? this.ascendingOrder(value, column) : value) : [];\n      return value;\n    }\n    if (column === undefined || column == '') {\n      return value;\n    }\n    if (column || column !== '') {\n      value\n        ? order === 'asc'\n          ? this.ascendingOrder(value, column)\n          : this.descendingOrder(value, column)\n        : [];\n      return value;\n    }\n  }\n  ascendingOrder(array: any, column: any): any {\n    return array.sort((a, b) => {\n      return a[column] - b[column];\n    });\n  }\n  descendingOrder(array: any, column: any): any {\n    return array.sort((a, b) => {\n      return b[column] - a[column];\n    });\n  }\n}\n","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsImpressumComponent} from './impressum.component';\nimport {HsMiniSidebarComponent} from './mini-sidebar.component';\nimport {HsPanelHelpersModule} from 'hslayers-ng/common/panels';\nimport {HsSidebarComponent} from './sidebar.component';\nimport {SortByPipe} from './sortBy.pipe';\n\n@NgModule({\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  declarations: [HsMiniSidebarComponent, HsSidebarComponent, SortByPipe],\n  imports: [\n    CommonModule,\n    HsPanelHelpersModule,\n    TranslatePipe,\n    HsImpressumComponent,\n  ],\n  exports: [HsMiniSidebarComponent, HsSidebarComponent],\n})\nexport class HsSidebarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.HsImpressumComponent"],"mappings":"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"}