{"version":3,"file":"hslayers-ng-services-layout.mjs","sources":["../../../projects/hslayers/services/layout/layout.service.ts","../../../projects/hslayers/services/layout/hslayers-ng-services-layout.ts"],"sourcesContent":["import {BehaviorSubject, Observable, Subject, delay, map, skip} from 'rxjs';\nimport {\n  ElementRef,\n  Injectable,\n  Type,\n  ViewContainerRef,\n  inject,\n} from '@angular/core';\n\nimport {HsConfig, DefaultPanel} from 'hslayers-ng/config';\nimport {HsLogService} from 'hslayers-ng/services/log';\n\nexport class HsLayoutParams {\n  _puremapApp: BehaviorSubject<boolean>;\n  /**\n   * Storage of default main panel.\n   * This panel is opened during initialization of app and also when other panel than default is closed.\n   * @default ''\n   */\n  defaultPanel: string;\n  /**\n   * Set panel visibility statuses. Multiple panels can be open at the same time this way\n   */\n  panel_statuses: any;\n  /**\n   * DEPRECATED?\n   */\n  panel_enabled: any;\n  /**\n   * Side on which sidebar will be shown (true = right side of map, false = left side of map)\n   * @default true\n   */\n  sidebarRight: boolean;\n  /**\n   * Whether to display labels of sidebar buttons or not.\n   * Used in CSS classes assertion on hs-panelspace.\n   * @default true\n   */\n  sidebarLabels: boolean;\n  /**\n   * Enable sidebar function to open/close sidebar (if false sidebar panel cannot be opened/closed through GUI)\n   * @default true\n   */\n  sidebarToggleable: boolean;\n  /**\n   * Show if any sidebar panel is opened (sidebar is completely expanded).\n   * When hs.sidebar module is used in the app, it changes automatically to true during initialization.\n   * @default false\n   */\n  sidebarExpanded: boolean;\n  /**\n   * Show if minisidebar panel is visible in sidebar, allows sidebar to be visible in panelspace\n   * @default false\n   */\n  initializedOnce: boolean;\n  /**\n   * Whether the app has been initialized already once.\n   * Need this to not add panels twice when NgRouter is used\n   * @default false\n   */\n  minisidebar: boolean;\n  contentWrapper?: any;\n  layoutElement?: any;\n  sidebarVisible: Observable<boolean>;\n  sidebarPosition: Observable<string>;\n  sidebarVisible$: BehaviorSubject<boolean>;\n  sidebarPosition$: BehaviorSubject<string>;\n\n  mainpanel$: BehaviorSubject<string>;\n\n  get mainpanel() {\n    return this.mainpanel$.getValue();\n  }\n\n  constructor() {\n    this.defaultPanel = '';\n    this.panel_statuses = {};\n    this.panel_enabled = {};\n    this.sidebarRight = true;\n    this.sidebarLabels = true;\n    this.sidebarToggleable = true;\n    this.sidebarExpanded = false;\n    this.initializedOnce = false;\n    this.minisidebar = false;\n  }\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class HsLayoutService extends HsLayoutParams {\n  hsConfig = inject(HsConfig);\n  $log = inject(HsLogService);\n\n  mapSpaceRef: BehaviorSubject<ViewContainerRef> = new BehaviorSubject(\n    undefined,\n  );\n  _puremapApp = new BehaviorSubject<boolean>(false);\n  /**\n   * Whether app is running in puremapApp mode\n   */\n  get puremapApp() {\n    return this._puremapApp.getValue();\n  }\n\n  set puremapApp(val: boolean) {\n    this._puremapApp.next(val);\n  }\n\n  panelSpaceWidth = new BehaviorSubject<number>(425);\n\n  sidebarPosition$ = new BehaviorSubject('left');\n  sidebarVisible$ = new BehaviorSubject(true);\n  mainpanel$: BehaviorSubject<DefaultPanel> = new BehaviorSubject(undefined);\n\n  layoutLoads: Subject<{element: any; innerElement: string}> = new Subject();\n\n  constructor() {\n    super();\n    Object.defineProperty(this, 'panelListElement', {\n      get: function () {\n        return this.contentWrapper.querySelector('.hs-panelplace');\n      },\n    });\n\n    Object.defineProperty(this, 'dialogAreaElement', {\n      get: function () {\n        return this.contentWrapper.querySelector('.hs-dialog-area');\n      },\n    });\n\n    Object.defineProperty(this, 'sidebarListElement', {\n      get: function () {\n        return this.contentWrapper.querySelector('.hs-sidebar-list');\n      },\n    });\n\n    this.parseConfig();\n    this.hsConfig.configChanges.subscribe(() => {\n      this.parseConfig();\n    });\n\n    this.mainpanel$.pipe(skip(1)).subscribe((which) => {\n      this.updPanelSpaceWidth();\n    });\n\n    this.layoutLoads.subscribe(() => {\n      this.updPanelSpaceWidth();\n      this.updSidebarPosition();\n      this.updSidebarVisible(true);\n    });\n\n    this.sidebarVisible = this.sidebarVisible$.pipe(\n      delay(0),\n      map((visible) => visible),\n    );\n    this.sidebarPosition = this.sidebarPosition$.pipe(\n      delay(0),\n      map((position) => position),\n    );\n  }\n\n  updPanelSpaceWidth() {\n    //Timeout to repaint first to get width from element clientWidth\n    setTimeout(() => {\n      this.panelSpaceWidth.next(this.getPanelSpaceWidth());\n    }, 0);\n  }\n\n  async updSidebarPosition() {\n    const lastPosition = this.sidebarPosition$.getValue();\n    const hslElement = this.layoutElement;\n    if (hslElement.clientWidth <= this.hsConfig.mobileBreakpoint) {\n      hslElement.classList.add('hs-mobile-view');\n      if (lastPosition != 'bottom') {\n        this.sidebarPosition$.next('bottom');\n      }\n    } else {\n      hslElement.classList.remove('hs-mobile-view');\n      if (this.hsConfig.sidebarPosition != lastPosition) {\n        this.sidebarPosition$.next(this.hsConfig.sidebarPosition);\n      }\n    }\n  }\n\n  parseConfig() {\n    this.panel_enabled = {};\n    if (this.hsConfig) {\n      for (const key of Object.keys(this.hsConfig.panelsEnabled)) {\n        this.panelEnabled(key, this.getPanelEnableState(key));\n      }\n      this.sidebarToggleable = this.hsConfig.hasOwnProperty('sidebarToggleable')\n        ? this.hsConfig.sidebarToggleable\n        : true;\n      if (this.hsConfig.defaultPanel && !this.hsConfig.sidebarClosed) {\n        this.setMainPanel(this.hsConfig.defaultPanel);\n      }\n    }\n\n    this.sidebarPosition$.next(this.hsConfig?.sidebarPosition ?? 'left');\n  }\n\n  getPanelEnableState(panel): boolean {\n    if (\n      this.hsConfig?.panelsEnabled == undefined ||\n      this.hsConfig?.panelsEnabled[panel] == undefined\n    ) {\n      /* \n      Function called from sidebar and panel is \n      probably custom panel added to buttons array from outside \n      */\n      return true;\n    }\n    return this.hsConfig.panelsEnabled[panel];\n  }\n\n  /**\n   * Close opened panel programmatically.\n   * If sidebar toolbar is used in the app, sidebar stays expanded with sidebar labels.\n   */\n  hidePanels() {\n    this.sidebarLabels = true;\n    this.mainpanel$.next(undefined);\n  }\n\n  /**\n   * Get or set panel visibility in sidebar.\n   * When panel is disabled it means that it's not displayed in sidebar (it can be opened programmatically) but its functionality is running.\n   * Use with status parameter as setter.\n   * @param which - Selected panel (panel name)\n   * @param status - Visibility status of panel to set\n   * @returns Panel enabled/disabled status for getter function\n   */\n  panelEnabled(which: string, status?: boolean): boolean {\n    if (status === undefined) {\n      if (this.panel_enabled[which] != undefined) {\n        return this.panel_enabled[which];\n      }\n      return true;\n    }\n    this.panel_enabled[which] = status;\n  }\n\n  /**\n   * Wrapper for accessing hsConfig.componentsEnabled settings.\n   * @param which - Name of the GUI component to check\n   * @returns true if set to true (default), false otherwise\n   */\n  componentEnabled(which: string): boolean {\n    return (\n      this.hsConfig.componentsEnabled == undefined ||\n      this.hsConfig.componentsEnabled[which] == undefined ||\n      this.hsConfig.componentsEnabled[which]\n    );\n  }\n\n  /**\n   * Sets new main panel (Panel displayed in expanded sidebar).\n   * Change GUI and queryable status of map (when queryable and with hs.query component in the app, the map does info query on map click).\n   * @param which - New panel to activate (panel name)\n   * @param byGui - Whether function call came as result of GUI action\n   */\n  setMainPanel(which: string, byGui?: boolean): void {\n    if (which == this.mainpanel && byGui) {\n      which = '';\n      if (this.sidebarExpanded == true) {\n        if (this.sidebarPosition$.getValue() == 'bottom') {\n          this.sidebarExpanded = false;\n        } else {\n          this.sidebarLabels = true;\n        }\n      }\n    } else {\n      this.sidebarExpanded = true;\n      this.sidebarLabels = false;\n    }\n    this.mainpanel$.next(which);\n  }\n\n  getPanelSpaceWidth(): number {\n    const panelSpaceWidth = this.layoutElement.getElementsByClassName(\n      'hs-panelspace-wrapper',\n    )[0].clientWidth;\n    return panelSpaceWidth;\n  }\n\n  async updSidebarVisible(visible?: boolean): Promise<void> {\n    if (\n      this.hsConfig.sidebarPosition == 'invisible' ||\n      this.hsConfig.pureMap ||\n      this.hsConfig.componentsEnabled.guiOverlay === false ||\n      this.hsConfig.componentsEnabled.sidebar === false\n    ) {\n      return this.sidebarVisible$.next(false);\n    }\n    if (visible == undefined) {\n      this.sidebarVisible$.next(true);\n    } else {\n      this.sidebarVisible$.next(visible);\n    }\n  }\n\n  panelSpaceHeight() {\n    if (this.contentWrapper.querySelector('.hs-panelspace-wrapper')) {\n      return this.contentWrapper.querySelector('.hs-panelspace-wrapper')\n        .clientHeight;\n      // return tmp\n    }\n  }\n\n  addMapVisualizer(visualizerComponent: Type<unknown>): void {\n    this.mapSpaceRef.subscribe((viewContainerRef) => {\n      if (viewContainerRef) {\n        const componentRef: any =\n          viewContainerRef.createComponent(visualizerComponent);\n      }\n    });\n  }\n\n  // createPanel(panelComponent: Type<any>, data?: any): void {\n  //   this.hsPanelContainerService.create(panelComponent, data || {});\n  // }\n\n  // createOverlay(panelComponent: Type<any>, data?: any): void {\n  //   this.HsOverlayConstructorService.create(panelComponent, data || {});\n  // }\n\n  scrollTo(el: ElementRef) {\n    el.nativeElement.scrollIntoView({behavior: 'smooth'});\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}