{"version":3,"file":"ng-doc-app-services-sidebar.mjs","sources":["../../../../libs/app/services/sidebar/sidebar.service.ts","../../../../libs/app/services/sidebar/ng-doc-app-services-sidebar.ts"],"sourcesContent":["import { DOCUMENT, inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { ngDocZoneOptimize } from '@ng-doc/ui-kit';\nimport { NgDocScrollService } from '@ng-doc/ui-kit/services/scroll';\nimport { WA_WINDOW } from '@ng-web-apis/common';\nimport { BehaviorSubject, fromEvent, Observable, share } from 'rxjs';\nimport { filter, startWith } from 'rxjs/operators';\n\n/**\n * Service for sidebar, it can be used to hide/show sidebar or to check if sidebar is collapsable.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class NgDocSidebarService {\n  protected readonly expanded = new BehaviorSubject<boolean>(false);\n  protected readonly document = inject(DOCUMENT);\n  protected readonly window = inject(WA_WINDOW);\n  protected readonly router = inject(Router);\n  protected readonly scroll = inject(NgDocScrollService);\n\n  constructor() {\n    const windowResize = fromEvent(this.window, 'resize').pipe(\n      takeUntilDestroyed(),\n      startWith(null),\n      share(),\n    );\n\n    windowResize\n      .pipe(\n        filter(() => this.expanded.value && this.isMobile),\n        ngDocZoneOptimize(),\n        takeUntilDestroyed(),\n      )\n      .subscribe(() => this.hide());\n\n    windowResize\n      .pipe(\n        filter(() => !this.expanded.value && !this.isMobile),\n        ngDocZoneOptimize(),\n        takeUntilDestroyed(),\n      )\n      .subscribe(() => this.show());\n\n    windowResize\n      .pipe(\n        filter(() => this.expanded.value && !this.isMobile),\n        ngDocZoneOptimize(),\n        takeUntilDestroyed(),\n      )\n      .subscribe(() => this.scroll.unblock());\n\n    this.router.events\n      .pipe(\n        filter((event) => event instanceof NavigationEnd && this.expanded.value && this.isMobile),\n        takeUntilDestroyed(),\n      )\n      .subscribe(() => this.hide());\n  }\n\n  get isMobile(): boolean {\n    return this.window.innerWidth < 1024;\n  }\n\n  /**\n   * Indicates if sidebar is visible, based on the show/hide methods.\n   */\n  isExpanded(): Observable<boolean> {\n    return this.expanded.asObservable();\n  }\n\n  /**\n   * Show sidebar, and block scrolling.\n   */\n  show(): void {\n    if (!this.expanded.value) {\n      this.expanded.next(true);\n      this.isMobile && this.scroll.block();\n    }\n  }\n\n  /**\n   * Hide sidebar, and unblock scrolling.\n   */\n  hide(): void {\n    if (this.expanded.value) {\n      this.expanded.next(false);\n      this.isMobile && this.scroll.unblock();\n    }\n  }\n\n  /**\n   * Toggle sidebar visibility.\n   */\n  toggle(): void {\n    this.expanded.value ? this.hide() : this.show();\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}