{"version":3,"file":"hslayers-ng-services-sidebar.mjs","sources":["../../../projects/hslayers/services/sidebar/sidebar.service.ts","../../../projects/hslayers/services/sidebar/hslayers-ng-services-sidebar.ts"],"sourcesContent":["import {BehaviorSubject, Observable, Subject, take} from 'rxjs';\nimport {Injectable, inject} from '@angular/core';\n\nimport {HsButton} from 'hslayers-ng/types';\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsEventBusService} from 'hslayers-ng/services/event-bus';\nimport {HsLanguageService} from 'hslayers-ng/services/language';\nimport {HsLayoutService} from 'hslayers-ng/services/layout';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class HsSidebarService {\n  hsLayoutService = inject(HsLayoutService);\n  hsConfig = inject(HsConfig);\n  hsLanguageService = inject(HsLanguageService);\n  hsEventBusService = inject(HsEventBusService);\n\n  buttonDefinition = {\n    'mapSwipe': {\n      panel: 'mapSwipe',\n      module: 'hs.mapSwipe',\n      order: 18,\n      fits: true,\n      title: 'PANEL_HEADER.MAP_SWIPE',\n      description: 'SIDEBAR.descriptions.MAP_SWIPE',\n      icon: 'fa-arrows-left-right-to-line',\n    },\n    'layerManager': {\n      panel: 'layerManager',\n      module: 'hs.layermanager',\n      order: 0,\n      fits: true,\n      title: 'PANEL_HEADER.LM',\n      description: 'SIDEBAR.descriptions.LM',\n      icon: 'fa-layer-group',\n    },\n    'legend': {\n      panel: 'legend',\n      module: 'hs.legend',\n      order: 1,\n      fits: true,\n      title: 'PANEL_HEADER.LEGEND',\n      description: 'SIDEBAR.descriptions.LEGEND',\n      icon: 'fa-list-ul',\n    },\n    'addData': {\n      panel: 'addData',\n      module: 'hs.addData',\n      order: 4,\n      fits: true,\n      title: 'PANEL_HEADER.ADDLAYERS',\n      description: 'SIDEBAR.descriptions.ADDLAYERS',\n      icon: 'fa-database',\n    },\n    'compositions': {\n      panel: 'compositions',\n      module: 'hs.compositions',\n      order: 3,\n      fits: true,\n      title: 'PANEL_HEADER.MAPCOMPOSITIONS',\n      description: 'SIDEBAR.descriptions.MAPCOMPOSITIONS',\n      icon: 'fa-map',\n    },\n    'draw': {\n      panel: 'draw',\n      module: 'hs.draw',\n      order: 16,\n      fits: true,\n      title: 'PANEL_HEADER.draw',\n      description: 'SIDEBAR.descriptions.DRAW',\n      icon: 'fa-pencil',\n    },\n    'language': {\n      panel: 'language',\n      module: 'hs.language',\n      order: 13,\n      fits: true,\n      title: 'PANEL_HEADER.LANGUAGE',\n      description: 'SIDEBAR.descriptions.LANGUAGE',\n      content: () => {\n        return this.hsLanguageService.getCurrentLanguageCode().toUpperCase();\n      },\n    },\n    'share': {\n      panel: 'share',\n      module: 'hs.permalink',\n      order: 11,\n      fits: true,\n      title: 'PANEL_HEADER.PERMALINK',\n      description: 'SIDEBAR.descriptions.PERMALINK',\n      icon: 'fa-share-nodes',\n    },\n    'print': {\n      panel: 'print',\n      module: 'hs.print',\n      order: 10,\n      fits: true,\n      title: 'PANEL_HEADER.PRINT',\n      description: 'SIDEBAR.descriptions.PRINT',\n      icon: 'fa-print',\n    },\n    'query': {\n      panel: 'query',\n      module: 'hs.query',\n      order: 7,\n      fits: true,\n      title: 'PANEL_HEADER.INFO',\n      description: 'SIDEBAR.descriptions.INFO',\n      icon: 'fa-circle-info',\n    },\n    'saveMap': {\n      panel: 'saveMap',\n      module: 'hs.save-map',\n      order: 12,\n      fits: true,\n      title: 'PANEL_HEADER.SAVECOMPOSITION',\n      description: 'SIDEBAR.descriptions.SAVECOMPOSITION',\n      icon: 'fa-floppy-disk',\n    },\n    'measure': {\n      panel: 'measure',\n      module: 'hs.measure',\n      order: 2,\n      fits: true,\n      title: 'PANEL_HEADER.MEASURE',\n      description: 'SIDEBAR.descriptions.MEASURE',\n      icon: 'fa-ruler',\n      condition: true,\n    },\n    'search': {\n      panel: 'search',\n      module: 'hs.search',\n      order: 15,\n      fits: true,\n      title: 'PANEL_HEADER.SEARCH',\n      description: 'SIDEBAR.descriptions.SEARCH',\n      icon: 'fa-magnifying-glass',\n      condition: true,\n    },\n    'tripPlanner': {\n      panel: 'tripPlanner',\n      module: 'hs-trip-planner',\n      order: 17,\n      fits: true,\n      title: 'PANEL_HEADER.TRIP_PLANNER',\n      description: 'SIDEBAR.descriptions.TRIP_PLANNER',\n      icon: 'fa-suitcase-rolling',\n    },\n    'wfsFilter': {\n      panel: 'wfsFilter',\n      order: 0,\n      fits: true,\n      title: 'PANEL_HEADER.WFS_FILTER',\n      description: 'SIDEBAR.descriptions.WFS_FILTER',\n      icon: 'fa-filter',\n    },\n  };\n\n  extraButtons: Array<HsButton> = [];\n  buttonsSubject: BehaviorSubject<HsButton[]> = new BehaviorSubject([]);\n  /**\n   * List of sidebar buttons\n   */\n  buttons: Observable<HsButton[]>;\n  /**\n   * If buttons with importance property exist.\n   * If not, don't display expansion +/- icon\n   */\n  unimportantExist = false;\n  /**\n   * List of visible buttons taking into account viewport size\n   */\n  visibleButtons: Array<HsButton> = [];\n  showUnimportant: boolean;\n  numberOfUnimportant: number;\n  importantButtons: HsButton[];\n  sidebarLoad: Subject<void> = new Subject();\n\n  constructor() {\n    this.buttons = this.buttonsSubject.asObservable();\n    this.hsLayoutService.mainpanel$.subscribe((which) => {\n      /* NOTE: WE used to update map size only 'if (!HsLayoutService.sidebarExpanded) {' \n      but that leads to blank margin between map and window border \n      (see https://github.com/hslayers/hslayers-ng/issues/1107). Using timer to take\n      into account sidebar width changing animation. \n      */\n      setTimeout(() => {\n        this.hsEventBusService.mapSizeUpdates.next();\n      }, 550);\n    });\n  }\n\n  destroy(): void {\n    /**\n     * Clean up/reset buttons entries\n     */\n    this.buttonsSubject.next([]);\n  }\n\n  prepareForTemplate(buttons: HsButton[]): HsButton[] {\n    const tmp = buttons.map((button) => {\n      if (typeof button.title == 'function') {\n        button.title = button.title();\n      }\n      if (typeof button.description == 'function') {\n        button.description = button.description();\n      }\n      return button;\n    });\n    tmp.sort((a, b) => a.order - b.order);\n    return tmp;\n  }\n\n  setButtonVisibility(buttons: HsButton[]) {\n    if (this.hsLayoutService.layoutElement == undefined) {\n      setTimeout(() => this.setButtonVisibility(buttons), 100);\n      return;\n    }\n    this.importantButtons = buttons.filter((button) => {\n      return (\n        button.important != false && this.visibleButtons.includes(button.panel)\n      );\n    });\n    this.numberOfUnimportant = buttons.length - this.importantButtons.length;\n    for (const button of this.importantButtons) {\n      button.fits = this.fitsSidebar(button);\n    }\n    if (!this.unimportantExist) {\n      this.hsLayoutService.minisidebar = this.importantButtons.some(\n        (b) => b.fits == false,\n      );\n    }\n  }\n\n  addButton(button: HsButton) {\n    this.buttons.pipe(take(1)).subscribe((cur) => {\n      /**\n       * Don't add button for measure or search in case their toolbar\n       * alternatives are active\n       */\n      if (\n        button.condition &&\n        this.hsLayoutService.componentEnabled(`${button.panel}Toolbar`)\n      ) {\n        return;\n      }\n      this.buttonsSubject.next([...cur, button]);\n    });\n  }\n\n  /**\n   * Function to set if a button is important and always visible\n   * or only when the sidebar buttons are expanded\n   */\n  setButtonImportance(\n    buttons: HsButton[],\n    panelName: string,\n    state: boolean,\n  ): void {\n    const backCompat = {datasource_selector: 'addData'};\n    panelName = backCompat[panelName] ? backCompat[panelName] : panelName;\n    const button = buttons.find((b) => b.panel == panelName);\n    if (button) {\n      //Unimportant buttons are automatically placed inside minisidebar\n      button.fits = state;\n      button.important = state;\n    }\n\n    this.unimportantExist = buttons.some((b) => b.important == false);\n    this.hsLayoutService.minisidebar = this.unimportantExist;\n  }\n\n  buttonClicked(button: HsButton): void {\n    if (button.click) {\n      button.click();\n    } else {\n      this.hsLayoutService.setMainPanel(button.panel, true);\n    }\n  }\n\n  setPanelState(buttons: Array<HsButton>): void {\n    if (buttons.length == 0) {\n      return;\n    }\n    for (const button of buttons) {\n      if (\n        this.hsLayoutService.getPanelEnableState(button.panel) &&\n        this.checkConfigurableButtons(button)\n      ) {\n        if (!this.visibleButtons.includes(button.panel)) {\n          this.visibleButtons.push(button.panel);\n          button.visible = true;\n        }\n      } else {\n        button.visible = false;\n      }\n    }\n  }\n\n  /**\n   * Checks whether the panels, which could be placed both in map or\n   * in sidebar, have state defined in config.panelsEnabled. If yes it\n   * should be placed in sidebar rather then in map.\n   * It´s necessary for buttons like 'measure' because simple\n   * 'config.panelsEnabled = false' would prevent their functionality.\n   * @param button - Buttons object\n   */\n  checkConfigurableButtons(button: HsButton): boolean {\n    if (typeof button.condition == 'undefined') {\n      return true;\n    }\n    if (!this.hsConfig.panelsEnabled) {\n      return false;\n    }\n    return this.hsConfig.panelsEnabled[button.panel];\n  }\n\n  /**\n   * Check if sidebar button should be visible in classic sidebar or hidden inside minisidebar panel\n   * Toggles minisidebar button\n   * @param which - Sidebar button to be checked (specify panel name)\n   */\n  fitsSidebar(button: HsButton): boolean {\n    const mobileBreakpoint = this.hsConfig.mobileBreakpoint;\n    const dimensionToCheck =\n      this.hsLayoutService.layoutElement.clientWidth > mobileBreakpoint\n        ? 'clientHeight'\n        : 'clientWidth';\n    this.hsLayoutService.sidebarToggleable =\n      this.hsConfig.sidebarToggleable &&\n      this.hsLayoutService.layoutElement.clientWidth > mobileBreakpoint;\n    let maxNumberOfButtons =\n      dimensionToCheck == 'clientHeight'\n        ? Math.floor(this.hsLayoutService.layoutElement[dimensionToCheck] / 65)\n        : 6;\n    maxNumberOfButtons =\n      dimensionToCheck == 'clientHeight'\n        ? maxNumberOfButtons - 1\n        : maxNumberOfButtons;\n\n    return (\n      this.importantButtons.findIndex((btn) => btn.panel === button.panel) +\n        2 <=\n      maxNumberOfButtons\n    );\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}