{"version":3,"file":"sidebar.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/sidebar/sidebar-base.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/sidebar/icon-sidebar/icon-sidebar.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/sidebar/icon-sidebar/icon-sidebar.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/sidebar/icon-sidebar/icon-sidebar-container.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/sidebar/icon-sidebar/icon-sidebar-item.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/sidebar/icon-sidebar/icon-sidebar-item.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/sidebar/sidebar/sidebar.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/sidebar/sidebar/sidebar.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/sidebar/sidebar/sidebar-container.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/sidebar/sidebar/sidebar-link.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/sidebar/sidebar/sidebar-link.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/sidebar/sidebar.module.ts"],"sourcesContent":["import { BreakpointObserver } from '@angular/cdk/layout';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  QueryList,\n} from '@angular/core';\nimport { Breakpoints } from '@sbb-esta/angular/core';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, takeUntil } from 'rxjs/operators';\n\n/**\n * Throws an exception if more than one SbbSidebarBase is provided.\n * @docs-private\n */\nexport function throwSbbDuplicatedSidebarError(position: string) {\n  throw Error(`A sidebar was already declared for 'position=\"${position}\"'`);\n}\n\n/**\n * Used to provide a sidebar container to a sidebar while avoiding circular references.\n * @docs-private\n */\nexport const SBB_SIDEBAR_CONTAINER = new InjectionToken('SBB_SIDEBAR_CONTAINER');\n\n/** @docs-private */\nexport interface SbbSidebarMobileCapableContainer {\n  _mobile: boolean;\n}\n\n@Directive()\nexport abstract class SbbSidebarContentBase extends CdkScrollable {\n  _elementRef: ElementRef<HTMLElement> = inject<ElementRef<HTMLElement>>(ElementRef);\n}\n\n/** This component corresponds to a sidebar. */\n@Directive({\n  host: {\n    '[class.sbb-sidebar-end]': 'position === \"end\"',\n  },\n})\nexport abstract class SbbSidebarBase implements AfterViewInit, OnDestroy {\n  abstract _container: SbbSidebarMobileCapableContainer;\n  protected _elementRef: ElementRef<HTMLElement> = inject<ElementRef<HTMLElement>>(ElementRef);\n  protected _doc: Document = inject(DOCUMENT);\n\n  abstract _mobileChanged(mobile: boolean): void;\n\n  /** Whether the view of the component has been attached. */\n  private _isAttached: boolean;\n\n  /** Anchor node used to restore the sidebar to its initial position. */\n  private _anchor: Comment | null;\n\n  /** The side that the sidebar is attached to. */\n  @Input()\n  set position(value: 'start' | 'end') {\n    // Make sure we have a valid value.\n    value = value === 'end' ? 'end' : 'start';\n    if (value !== this._position) {\n      // Static inputs in Ivy are set before the element is in the DOM.\n      if (this._isAttached) {\n        this._updatePositionInParent(value);\n      }\n\n      this._position = value;\n      this.onPositionChanged.emit();\n    }\n  }\n  get position() {\n    return this._position;\n  }\n  _position: 'start' | 'end' = 'start';\n\n  /** Event emitted when the sidebar's position changes. */\n  @Output('positionChanged') readonly onPositionChanged = new EventEmitter<void>();\n\n  protected constructor(...args: unknown[]);\n  protected constructor() {}\n\n  /*\n   * Updates the position of the sidebar in the DOM. We need to move the element around ourselves\n   * when it's in the `end` position so that it comes after the content and the visual order\n   * matches the tab order. We also need to be able to move it back to `start` if the sidebar\n   * started off as `end` and was changed to `start`.\n   */\n  protected _updatePositionInParent(newPosition: 'start' | 'end'): void {\n    // Don't move the DOM node around on the server, because it can throw off hydration.\n    const element = this._elementRef.nativeElement;\n    const parent = element.parentNode!;\n\n    if (newPosition === 'end') {\n      if (!this._anchor) {\n        this._anchor = this._doc.createComment('sbb-sidebar-anchor')!;\n        parent.insertBefore(this._anchor!, element);\n      }\n\n      parent.appendChild(element);\n    } else if (this._anchor) {\n      this._anchor.parentNode!.insertBefore(element, this._anchor);\n    }\n  }\n\n  ngAfterViewInit() {\n    this._isAttached = true;\n\n    // Only update the DOM position when the sidenav is positioned at\n    // the end since we project the sidenav before the content by default.\n    if (this._position === 'end') {\n      this._updatePositionInParent('end');\n    }\n  }\n\n  ngOnDestroy() {\n    this._anchor?.remove();\n    this._anchor = null;\n  }\n}\n\n/**\n * This is the parent component to one or two `<sbb-sidebar>`s that validates the state internally\n * and coordinates the backdrop and content styling.\n */\n@Directive()\nexport abstract class SbbSidebarContainerBase<T extends SbbSidebarBase>\n  implements AfterContentInit, OnDestroy, SbbSidebarMobileCapableContainer\n{\n  protected _ngZone: NgZone = inject(NgZone);\n  protected _changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n  protected _breakpointObserver: BreakpointObserver = inject(BreakpointObserver);\n\n  _mobile: boolean;\n\n  /**\n   * The sidebar child at the start or end position.\n   * @deprecated Use `start` or `end` instead.\n   * @breaking-change 19.0.0\n   */\n  get sidebar(): T | null {\n    return this._start || this._end;\n  }\n\n  /** The sidebar child with the `start` position. */\n  get start(): T | null {\n    return this._start;\n  }\n\n  /** The sidebar child with the `end` position. */\n  get end(): T | null {\n    return this._end;\n  }\n\n  /** Reference to the CdkScrollable instance that wraps the scrollable content. */\n  get scrollable(): CdkScrollable {\n    return this._userContent || this._content;\n  }\n\n  /** All sidebars, also nested sidebars included **/\n  _allSidebars: QueryList<T>;\n\n  /** Sidebars that belong to this container. */\n  _sidebars: QueryList<T> = new QueryList<T>();\n\n  _content: SbbSidebarContentBase;\n  _userContent: SbbSidebarContentBase;\n\n  /** The sidebar at the start/end position. */\n  protected _start: T | null;\n  protected _end: T | null;\n\n  /** Emits when the component is destroyed. */\n  protected readonly _destroyed: Subject<void> = new Subject<void>();\n\n  protected constructor(...args: unknown[]);\n  protected constructor() {}\n\n  ngAfterContentInit() {\n    this._allSidebars.changes\n      .pipe(startWith(this._allSidebars), takeUntil(this._destroyed))\n      .subscribe((allSidebars: QueryList<T>) => {\n        this._sidebars.reset(allSidebars.filter((sidebar) => sidebar._container === this));\n        this._sidebars.notifyOnChanges();\n      });\n  }\n\n  protected _watchBreakpointObserver() {\n    this._breakpointObserver\n      .observe(Breakpoints.Mobile)\n      .pipe(\n        map((r) => r.matches),\n        distinctUntilChanged(),\n        takeUntil(this._destroyed),\n      )\n      .subscribe((newMobile) => this._updateMobileState(newMobile));\n  }\n\n  private _updateMobileState(newMobile: boolean) {\n    const currentMobile = this._mobile;\n    this._mobile = newMobile;\n\n    if ((!this._start && !this._end) || currentMobile === newMobile) {\n      return;\n    }\n\n    this._start?._mobileChanged(newMobile);\n    this._end?._mobileChanged(newMobile);\n    this._changeDetectorRef.markForCheck();\n  }\n\n  ngOnDestroy() {\n    this._sidebars.destroy();\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  /** Validate the state of the sidebar children components. */\n  protected _validateSidebars() {\n    this._start = this._end = null;\n\n    // Ensure that we have at most one start and one end sidebar.\n    this._sidebars.forEach((sidebar) => {\n      if (sidebar.position === 'end') {\n        if (this._end != null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n          throwSbbDuplicatedSidebarError('end');\n        }\n        this._end = sidebar;\n      } else {\n        if (this._start != null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n          throwSbbDuplicatedSidebarError('start');\n        }\n        this._start = sidebar;\n      }\n    });\n  }\n}\n","// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/// <reference types=\"@angular/localize/init\" />\n\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport {\n  AfterContentInit,\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  EventEmitter,\n  inject,\n  Input,\n  Output,\n  QueryList,\n  signal,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { SbbIcon } from '@sbb-esta/angular/icon';\nimport { startWith } from 'rxjs/operators';\n\nimport {\n  SbbSidebarBase,\n  SbbSidebarContainerBase,\n  SbbSidebarContentBase,\n  SbbSidebarMobileCapableContainer,\n  SBB_SIDEBAR_CONTAINER,\n} from '../sidebar-base';\n\nexport function throwSbbDuplicatedIconSidebarError() {\n  throw Error(\n    `Only one icon-sidebar as direct descendant of sidebar container at once is allowed'`,\n  );\n}\n\n@Component({\n  selector: 'sbb-icon-sidebar-content',\n  template: '<ng-content></ng-content>',\n  host: {\n    class: 'sbb-icon-sidebar-content sbb-scrollbar',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: CdkScrollable,\n      useExisting: SbbIconSidebarContent,\n    },\n  ],\n})\nexport class SbbIconSidebarContent extends SbbSidebarContentBase {}\n\n@Component({\n  selector: 'sbb-icon-sidebar',\n  exportAs: 'sbbIconSidebar',\n  templateUrl: './icon-sidebar.html',\n  host: {\n    class: 'sbb-icon-sidebar',\n    tabIndex: '-1',\n    // must prevent the browser from aligning text based on value\n    '[attr.align]': 'null',\n    role: 'navigation',\n    '[class.sbb-icon-sidebar-expanded]': 'expanded && !_container._mobile',\n    '[class.sbb-icon-sidebar-collapsed]': '!expanded && !_container._mobile',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [CdkScrollable, SbbIcon],\n})\nexport class SbbIconSidebar extends SbbSidebarBase {\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n\n  _container: SbbIconSidebarContainer = inject<SbbIconSidebarContainer>(SBB_SIDEBAR_CONTAINER);\n\n  _labelCollapse: string = $localize`:Label to 'collapse' icon sidebar@@sbbSidebarCollapse:Collapse`;\n\n  _labelExpand: string = $localize`:Label to 'expand' icon sidebar@@sbbSidebarExpand:Expand`;\n\n  /** Whether the sidebar is expanded. */\n  @Input({ transform: booleanAttribute })\n  get expanded(): boolean {\n    return this._expanded();\n  }\n  set expanded(value: boolean) {\n    this.toggleExpanded(value);\n  }\n  private _expanded = signal(false);\n\n  /** Event emitted when the icon sidebar expanded state is changed. */\n  @Output() readonly expandedChange: EventEmitter<boolean> =\n    // Note this has to be async in order to avoid some issues with two-bindings (see #8872).\n    new EventEmitter<boolean>(/* isAsync */ true);\n\n  constructor(...args: unknown[]);\n  constructor() {\n    super();\n  }\n\n  toggleExpanded(expanded: boolean = !this._expanded()) {\n    this._expanded.set(expanded);\n    this.expandedChange.emit(this.expanded);\n  }\n\n  _mobileChanged(mobile: boolean): void {\n    this._elementRef.nativeElement.querySelector('.sbb-icon-sidebar-inner-container')!.scrollLeft =\n      0;\n\n    this._updatePositionInParent(this.position);\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /**\n   * On mobile devices, the position of the sidebar is always 'start'.\n   * @docs-private\n   */\n  override _updatePositionInParent(position: 'start' | 'end') {\n    if (this._container._mobile) {\n      super._updatePositionInParent('start');\n    } else {\n      super._updatePositionInParent(position);\n    }\n  }\n}\n\n@Component({\n  selector: 'sbb-icon-sidebar-container',\n  exportAs: 'sbbIconSidebarContainer',\n  templateUrl: './icon-sidebar-container.html',\n  styleUrls: ['./icon-sidebar.css'],\n  host: {\n    class: 'sbb-icon-sidebar-container',\n    '[class.sbb-icon-sidebar-container-mobile]': '_mobile',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: SBB_SIDEBAR_CONTAINER,\n      useExisting: SbbIconSidebarContainer,\n    },\n  ],\n  imports: [SbbIconSidebarContent],\n})\nexport class SbbIconSidebarContainer\n  extends SbbSidebarContainerBase<SbbIconSidebar>\n  implements AfterContentInit, SbbSidebarMobileCapableContainer\n{\n  /** All sidebars in the container. Includes sidebars from inside nested containers. */\n  @ContentChildren(SbbIconSidebar, {\n    // We need to use `descendants: true`, because Ivy will no longer match\n    // indirect descendants if it's left as false.\n    descendants: true,\n  })\n  // We need an initializer here to avoid a TS error.\n  override _allSidebars: QueryList<SbbIconSidebar> = undefined!;\n  @ContentChild(SbbIconSidebarContent) override _content: SbbIconSidebarContent = undefined!;\n  @ViewChild(SbbIconSidebarContent) override _userContent: SbbIconSidebarContent = undefined!;\n\n  constructor(...args: unknown[]);\n  constructor() {\n    super();\n  }\n\n  override ngAfterContentInit() {\n    super.ngAfterContentInit();\n\n    this._sidebars.changes.pipe(startWith(null)).subscribe(() => {\n      this._validateSidebars();\n    });\n\n    // Has to be called at last (needs sidebar to be set)\n    this._watchBreakpointObserver();\n  }\n\n  /** Validate the state of the icon sidebar children components. */\n  override _validateSidebars() {\n    super._validateSidebars();\n\n    if (this._sidebars.length > 1 && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throwSbbDuplicatedIconSidebarError();\n    }\n  }\n}\n","<div class=\"sbb-icon-sidebar-inner-container sbb-scrollbar sbb-scrollbar-opaque\" cdkScrollable>\n  <div class=\"sbb-icon-sidebar-links\">\n    <ng-content select=\"a[sbbIconSidebarItem], hr\"></ng-content>\n  </div>\n\n  @if (!_container._mobile) {\n    <button\n      class=\"sbb-icon-sidebar-item sbb-button-reset-frameless sbb-icon-sidebar-collapse-expand-button\"\n      (click)=\"toggleExpanded()\"\n      type=\"button\"\n    >\n      <span class=\"sbb-icon-sidebar-item-icon sbb-icon-scaled\">\n        <sbb-icon svgIcon=\"chevron-small-left-circle-small\"></sbb-icon>\n      </span>\n      <span [attr.aria-hidden]=\"!expanded\" class=\"sbb-icon-sidebar-item-label\">{{\n        _labelCollapse\n      }}</span>\n      <span [attr.aria-hidden]=\"expanded\" class=\"sbb-icon-sidebar-item-label cdk-visually-hidden\">{{\n        _labelExpand\n      }}</span>\n    </button>\n  }\n</div>\n","<ng-content select=\"sbb-icon-sidebar\"></ng-content>\n\n<ng-content select=\"sbb-icon-sidebar-content\"> </ng-content>\n@if (!_content) {\n  <sbb-icon-sidebar-content>\n    <ng-content></ng-content>\n  </sbb-icon-sidebar-content>\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'a[sbbIconSidebarItem]',\n  templateUrl: './icon-sidebar-item.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'sbb-icon-sidebar-item sbb-icon-scaled',\n  },\n})\nexport class SbbIconSidebarItem {\n  /** Label of the icon */\n  @Input()\n  label: string;\n}\n","<span class=\"sbb-icon-sidebar-item-icon\">\n  <ng-content select=\"sbb-icon\"></ng-content>\n</span>\n<span class=\"sbb-icon-sidebar-item-label\"> {{ label }} </span>\n","// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/// <reference types=\"@angular/localize/init\" />\n\nimport {\n  ConfigurableFocusTrapFactory,\n  FocusMonitor,\n  FocusOrigin,\n  FocusTrap,\n} from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport { Platform } from '@angular/cdk/platform';\nimport { CdkScrollable, ViewportRuler } from '@angular/cdk/scrolling';\nimport { AsyncPipe } from '@angular/common';\nimport {\n  AfterContentInit,\n  afterNextRender,\n  ANIMATION_MODULE_TYPE,\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Injector,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  QueryList,\n  Renderer2,\n  signal,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { SbbIcon } from '@sbb-esta/angular/icon';\nimport { BehaviorSubject, combineLatest, fromEvent, merge, NEVER, Observable, Subject } from 'rxjs';\nimport { filter, map, mapTo, startWith, take, takeUntil } from 'rxjs/operators';\n\nimport {\n  SbbSidebarBase,\n  SbbSidebarContainerBase,\n  SbbSidebarContentBase,\n  SbbSidebarMobileCapableContainer,\n  SBB_SIDEBAR_CONTAINER,\n} from '../sidebar-base';\n\n/** Result of the toggle promise that indicates the state of the sidebar. */\nexport type SbbSidebarToggleResult = 'open' | 'close';\n\n/** Sidebar display modes. */\nexport type SbbSidebarMode = 'over' | 'side';\n\n@Component({\n  selector: 'sbb-sidebar-content',\n  template: '<ng-content></ng-content>',\n  host: {\n    class: 'sbb-sidebar-content sbb-scrollbar',\n    '[style.margin-left.px]': '_container._contentMargins.left',\n    '[style.margin-right.px]': '_container._contentMargins.right',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: CdkScrollable,\n      useExisting: SbbSidebarContent,\n    },\n  ],\n})\nexport class SbbSidebarContent extends SbbSidebarContentBase implements AfterContentInit {\n  _container: SbbSidebarContainer = inject(SbbSidebarContainer);\n  _changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n  ngAfterContentInit() {\n    this._container._contentMarginChanges.subscribe(() => {\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n}\n\n@Component({\n  selector: 'sbb-sidebar',\n  exportAs: 'sbbSidebar',\n  templateUrl: './sidebar.html',\n  host: {\n    class: 'sbb-sidebar',\n    tabIndex: '-1',\n    // must prevent the browser from aligning text based on value\n    '[attr.align]': 'null',\n    '[class.sbb-sidebar-over]': 'mode === \"over\"',\n    '[class.sbb-sidebar-mobile]': '_mobile',\n    '[class.sbb-sidebar-side]': 'mode === \"side\"',\n    '[class.sbb-sidebar-opened]': 'opened',\n    '[class.sbb-sidebar-collapsible]': 'collapsible',\n    '[style.visibility]': '(!_container && !opened) ? \"hidden\" : null',\n    // The sidebar container should not be focused on when used in side mode.\n    // Updates tabIndex to default to null if in side mode.\n    '[attr.tabIndex]': '(mode !== \"side\") ? \"-1\" : null',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [CdkScrollable, SbbIcon],\n})\nexport class SbbSidebar extends SbbSidebarBase implements AfterContentInit, OnDestroy {\n  private _focusTrapFactory = inject(ConfigurableFocusTrapFactory);\n  private _focusMonitor = inject(FocusMonitor);\n  private _ngZone = inject(NgZone);\n  private _renderer = inject(Renderer2);\n  override _container: SbbSidebarContainer = inject<SbbSidebarContainer>(SBB_SIDEBAR_CONTAINER);\n  private _router = inject(Router, { optional: true });\n\n  _labelCloseSidebar: string = $localize`:Button label to close the sidebar@@sbbSidebarCloseSidebar:Close Sidebar`;\n\n  /** Whether the sidebar is in mobile mode. */\n  _mobile: boolean = false;\n\n  /** Whether the sidebar is collapsible. */\n  @Input({ transform: booleanAttribute })\n  set collapsible(value: boolean) {\n    this._collapsible = value;\n    this.mode = value || this._mobile ? 'over' : 'side';\n\n    if (!this._collapsible && !this.opened) {\n      this.open();\n    }\n  }\n  get collapsible(): boolean {\n    return this._collapsible;\n  }\n  _collapsible: boolean = false;\n\n  /** Optional title to display in the sidebar header next to the close icon if sidebar is collapsible. */\n  @Input() collapsibleTitle?: string | null;\n\n  /** Mode of the sidebar; one of 'over', or 'side'. */\n  get mode(): SbbSidebarMode {\n    return this._mode;\n  }\n  set mode(value: SbbSidebarMode) {\n    this._mode = value;\n    this._updateFocusTrapState();\n    this._modeChanged.next();\n  }\n\n  /**\n   * Whether the collapsible sidebar is opened.\n   */\n  @Input()\n  get opened(): boolean {\n    return this._opened();\n  }\n  set opened(value: BooleanInput) {\n    this._openedViaInput = true;\n    this.toggle(coerceBooleanProperty(value));\n  }\n  private _opened = signal(true);\n\n  /**\n   * Whether the `opened` state was set via the @Input.\n   * If true, the sidebar will not be toggled automatically if the mobile state changes.\n   */\n  private _openedViaInput = false;\n\n  /** Emits whenever the sidebar has started animating. */\n  readonly _animationStarted = new Subject<TransitionEvent | void>();\n\n  /** Emits whenever the sidebar is done animating. */\n  readonly _animationEnd = new Subject<TransitionEvent | void>();\n\n  /**\n   * Name of the svg icon for the trigger on mobile devices.\n   */\n  @Input() set triggerSvgIcon(value: string) {\n    this._triggerSvgIconSubject.next(value);\n  }\n  get triggerSvgIcon(): string | null {\n    return this._triggerSvgIconSubject.value;\n  }\n  private _triggerSvgIconSubject = new BehaviorSubject<string | null>(null);\n\n  /** Event emitted when the sidebar has started opening. */\n  @Output()\n  readonly openedStart: Observable<void> = this._animationStarted.pipe(\n    filter(() => this.opened),\n    mapTo(undefined),\n  );\n\n  /** Event emitted when the sidebar has started closing. */\n  @Output()\n  readonly closedStart: Observable<void> = this._animationStarted.pipe(\n    filter(() => !this.opened),\n    mapTo(undefined),\n  );\n\n  private _focusTrap: FocusTrap;\n  private _elementFocusedBeforeSidebarWasOpened: HTMLElement | null = null;\n  private _eventCleanups: (() => void)[];\n\n  private _mode: SbbSidebarMode = 'side';\n\n  /** How the sidebar was opened (keypress, mouse click etc.) */\n  private _openedVia: FocusOrigin | null;\n\n  /** Event emitted when the sidebar open state is changed. */\n  @Output() readonly openedChange: EventEmitter<boolean> =\n    // Note this has to be async in order to avoid some issues with two-bindings (see #8872).\n    new EventEmitter<boolean>(/* isAsync */ true);\n\n  /** Event emitted when the sidebar has been opened. */\n  // tslint:disable-next-line:no-output-rename\n  @Output('opened')\n  readonly _openedStream: Observable<void> = this.openedChange.pipe(\n    filter((o) => o),\n    mapTo(undefined),\n  );\n\n  /** Event emitted when the sidebar has been closed. */\n  // tslint:disable-next-line:no-output-rename\n  @Output('closed')\n  readonly _closedStream: Observable<void> = this.openedChange.pipe(\n    filter((o) => !o),\n    mapTo(undefined),\n  );\n\n  /** Emits when the component is destroyed. */\n  private readonly _destroyed = new Subject<void>();\n\n  /**\n   * An observable that emits when the sidebar mode changes. This is used by the sidebar container to\n   * to know when to when the mode changes so it can adapt the margins on the content.\n   */\n  readonly _modeChanged = new Subject<void>();\n\n  readonly _svgIcon: Observable<string> = combineLatest([\n    this._triggerSvgIconSubject,\n    this.onPositionChanged.pipe(startWith(null)),\n  ]).pipe(\n    takeUntil(this._destroyed),\n    map(([icon]) =>\n      icon ? icon : this._position === 'start' ? 'hamburger-menu-small' : 'controls-small',\n    ),\n  );\n\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n\n  private _injector = inject(Injector);\n\n  constructor(...args: unknown[]);\n  constructor() {\n    super();\n\n    this.openedChange.pipe(takeUntil(this._destroyed)).subscribe((opened: boolean) => {\n      if (opened) {\n        if (this._doc) {\n          this._elementFocusedBeforeSidebarWasOpened = this._doc.activeElement as HTMLElement;\n        }\n        this._takeFocus();\n      } else if (this._isFocusWithinSidebar()) {\n        this._restoreFocus(this._openedVia || 'program');\n      }\n    });\n\n    this.onPositionChanged.pipe(takeUntil(this._destroyed));\n\n    /**\n     * Listen to `keydown` events outside the zone so that change detection is not run every\n     * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed.\n     * Additionally listen to router navigation start events to close the sidebar.\n     */\n    this._ngZone.runOutsideAngular(() => {\n      const element = this._elementRef.nativeElement;\n      merge(\n        (fromEvent(element, 'keydown') as Observable<KeyboardEvent>).pipe(\n          filter((event) => {\n            return event.keyCode === ESCAPE && !hasModifierKey(event);\n          }),\n        ),\n        this._router\n          ? this._router.events.pipe(\n              filter((e) => e instanceof NavigationStart),\n              mapTo(null),\n            )\n          : NEVER,\n      )\n        .pipe(takeUntil(this._destroyed))\n        .subscribe((event: KeyboardEvent | null) =>\n          this._ngZone.run(() => {\n            if (this.mode === 'side') {\n              return;\n            }\n            this.close();\n            if (!event) {\n              return;\n            }\n            event.stopPropagation();\n            event.preventDefault();\n          }),\n        );\n\n      this._eventCleanups = [\n        this._renderer.listen(element, 'transitionrun', this._handleTransitionEvent),\n        this._renderer.listen(element, 'transitionend', this._handleTransitionEvent),\n        this._renderer.listen(element, 'transitioncancel', this._handleTransitionEvent),\n      ];\n    });\n\n    this._animationEnd.subscribe(() => {\n      this.openedChange.emit(this.opened);\n    });\n  }\n\n  /**\n   * Moves focus into the sidebar. Note that this works even if\n   * the focus trap is disabled in `side` mode.\n   */\n  private _takeFocus() {\n    if (this.mode === 'side' || !this._focusTrap) {\n      return;\n    }\n\n    const element = this._elementRef.nativeElement;\n\n    afterNextRender(\n      () => {\n        const hasMovedFocus = this._focusTrap!.focusInitialElement();\n        if (!hasMovedFocus && typeof element.focus === 'function') {\n          element.focus();\n        }\n      },\n      { injector: this._injector },\n    );\n  }\n\n  /**\n   * Restores focus to the element that was originally focused when the sidebar opened.\n   * If no element was focused at that time, the focus will be restored to the sidebar.\n   */\n  private _restoreFocus(focusOrigin: Exclude<FocusOrigin, null>) {\n    if (this.mode === 'side') {\n      return;\n    }\n\n    if (this._elementFocusedBeforeSidebarWasOpened) {\n      this._focusMonitor.focusVia(this._elementFocusedBeforeSidebarWasOpened, focusOrigin);\n    } else {\n      this._elementRef.nativeElement.blur();\n    }\n\n    this._elementFocusedBeforeSidebarWasOpened = null;\n  }\n\n  /** Whether focus is currently within the sidebar. */\n  private _isFocusWithinSidebar(): boolean {\n    const activeEl = this._doc?.activeElement;\n    return !!activeEl && this._elementRef.nativeElement.contains(activeEl);\n  }\n\n  ngAfterContentInit() {\n    this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n    this._updateFocusTrapState();\n  }\n\n  override ngOnDestroy() {\n    this._eventCleanups.forEach((cleanup) => cleanup());\n    super.ngOnDestroy();\n    if (this._focusTrap) {\n      this._focusTrap.destroy();\n    }\n\n    this._animationStarted.complete();\n    this._animationEnd.complete();\n    this._modeChanged.complete();\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  /**\n   * Open the sidebar.\n   * @param openedVia Whether the sidebar was opened by a key press, mouse click or programmatically.\n   * Used for focus management after the sidebar is closed.\n   */\n  open(openedVia?: FocusOrigin): Promise<SbbSidebarToggleResult> {\n    return this.toggle(true, openedVia);\n  }\n\n  /** Close the sidebar. */\n  close(): Promise<SbbSidebarToggleResult> {\n    return this.toggle(false);\n  }\n\n  /** Closes the sidebar with context that the backdrop was clicked. */\n  _closeViaBackdropClick(): Promise<SbbSidebarToggleResult> {\n    // If the sidebar is closed upon a backdrop click, we always want to restore focus. We\n    // don't need to check whether focus is currently in the sidebar, as clicking on the\n    // backdrop causes blurs the active element.\n    return this._setOpen(/* isOpen */ false, /* restoreFocus */ true, 'mouse');\n  }\n\n  /**\n   * Toggle this sidebar.\n   * @param isOpen Whether the sidebar should be open.\n   * @param openedVia Whether the sidebar was opened by a key press, mouse click or programmatically.\n   * Used for focus management after the sidebar is closed.\n   */\n  toggle(isOpen: boolean = !this.opened, openedVia?: FocusOrigin): Promise<SbbSidebarToggleResult> {\n    // If the focus is currently inside the sidebar content and we are closing the sidebar,\n    // restore the focus to the initially focused element (when the sidebar opened).\n    if (isOpen && openedVia) {\n      this._openedVia = openedVia;\n    }\n\n    const result = this._setOpen(\n      isOpen,\n      /* restoreFocus */ !isOpen && this._isFocusWithinSidebar(),\n      this._openedVia || 'program',\n    );\n\n    if (!isOpen) {\n      this._openedVia = null;\n    }\n\n    return result;\n  }\n\n  /**\n   * Toggles the opened state of the sidebar.\n   * @param isOpen Whether the sidebar should open or close.\n   * @param restoreFocus Whether focus should be restored on close.\n   * @param focusOrigin Origin to use when restoring focus.\n   */\n  private _setOpen(\n    isOpen: boolean,\n    restoreFocus: boolean,\n    focusOrigin: Exclude<FocusOrigin, null>,\n  ): Promise<SbbSidebarToggleResult> {\n    if (isOpen === this.opened) {\n      return Promise.resolve(isOpen ? 'open' : 'close');\n    }\n\n    this._opened.set(isOpen);\n\n    if (this._container?._transitionsEnabled) {\n      // Note: it's importatnt to set this as early as possible,\n      // otherwise the animation can look glitchy in some cases.\n      this._setIsAnimating(true);\n    } else {\n      // Simulate the animation events if animations are disabled.\n      setTimeout(() => {\n        this._animationStarted.next();\n        this._animationEnd.next();\n      });\n    }\n\n    this._elementRef.nativeElement.classList.toggle('sbb-sidebar-opened', isOpen);\n\n    if (!isOpen && restoreFocus) {\n      this._restoreFocus(focusOrigin);\n    }\n\n    // Needed to ensure that the closing sequence fires off correctly.\n    this._changeDetectorRef.markForCheck();\n    this._updateFocusTrapState();\n\n    return new Promise<SbbSidebarToggleResult>((resolve) => {\n      this.openedChange.pipe(take(1)).subscribe((open) => resolve(open ? 'open' : 'close'));\n    });\n  }\n\n  /** Toggles whether the drawer is currently animating. */\n  private _setIsAnimating(isAnimating: boolean) {\n    this._elementRef.nativeElement.classList.toggle('sbb-sidebar-animating', isAnimating);\n  }\n\n  _getWidth(): number {\n    return this._elementRef.nativeElement.offsetWidth || 0;\n  }\n\n  /** Updates the enabled state of the focus trap. */\n  private _updateFocusTrapState() {\n    if (this._focusTrap) {\n      // The focus trap is only enabled when the sidebar is open in any mode other than side.\n      this._focusTrap.enabled = this.opened && this.mode !== 'side';\n    }\n  }\n\n  _mobileChanged(mobile: boolean): void {\n    this._mobile = mobile;\n    Promise.resolve().then(() => {\n      const wereTransitionsEnabled = this._container._transitionsEnabled;\n\n      // temporary disabled animations when changing mode\n      this._container._transitionsEnabled = false;\n      this.mode = this.collapsible || mobile ? 'over' : 'side';\n\n      if (!this._openedViaInput) {\n        this.toggle(!mobile);\n      } else {\n        this._changeDetectorRef.markForCheck();\n      }\n      this._container._transitionsEnabled = wereTransitionsEnabled;\n    });\n  }\n\n  /** Event handler for animation events. */\n  private _handleTransitionEvent = (event: TransitionEvent) => {\n    const element = this._elementRef.nativeElement;\n\n    if (event.target === element) {\n      this._ngZone.run(() => {\n        if (event.type === 'transitionrun') {\n          this._animationStarted.next(event);\n        } else {\n          // Don't toggle the animating state on `transitioncancel` since another animation should\n          // start afterwards. This prevents the drawer from blinking if an animation is interrupted.\n          if (event.type === 'transitionend') {\n            this._setIsAnimating(false);\n          }\n\n          this._animationEnd.next(event);\n        }\n      });\n    }\n  };\n}\n\n@Component({\n  selector: 'sbb-sidebar-container',\n  exportAs: 'sbbSidebarContainer',\n  templateUrl: './sidebar-container.html',\n  styleUrls: ['./sidebar.css'],\n  host: {\n    class: 'sbb-sidebar-container',\n    '[class.sbb-sidebar-container-mobile]': '_mobile',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: SBB_SIDEBAR_CONTAINER,\n      useExisting: SbbSidebarContainer,\n    },\n  ],\n  imports: [SbbIcon, SbbSidebarContent, AsyncPipe],\n})\nexport class SbbSidebarContainer\n  extends SbbSidebarContainerBase<SbbSidebar>\n  implements AfterContentInit, SbbSidebarMobileCapableContainer, OnDestroy\n{\n  private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _animationMode = inject(ANIMATION_MODULE_TYPE, { optional: true });\n\n  _transitionsEnabled: boolean = false;\n  _labelOpenSidebar: string = $localize`:Button label to open the sidebar@@sbbSidebarOpenSidebar:Open Sidebar`;\n\n  /** The sidebar child at the start/end position. */\n  override get start(): SbbSidebar | null {\n    return this._start;\n  }\n  override get end(): SbbSidebar | null {\n    return this._start;\n  }\n\n  /** Whether the sidebar container should have a backdrop while one of the sidebars is open. */\n  get hasBackdrop() {\n    return !this.start || this.start.mode !== 'side' || !this.end || this.end.mode !== 'side';\n  }\n\n  constructor(...args: unknown[]);\n  constructor() {\n    const platform = inject(Platform);\n    const viewportRuler = inject(ViewportRuler);\n\n    super();\n\n    // Since the minimum width of the sidebar depends on the viewport width,\n    // we need to recompute the margins if the viewport changes.\n    viewportRuler\n      .change()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this.updateContentMargins());\n\n    if (this._animationMode !== 'NoopAnimations' && platform.isBrowser) {\n      this._ngZone.runOutsideAngular(() => {\n        // Enable the animations after a delay in order to skip\n        // the initial transition if a sidebar is open by default.\n        setTimeout(() => {\n          this._element.nativeElement.classList.add('sbb-sidebar-transition');\n          this._transitionsEnabled = true;\n        }, 300);\n      });\n    }\n  }\n\n  /** All sidebars in the container. Includes sidebars from inside nested containers. */\n  @ContentChildren(SbbSidebar, {\n    // We need to use `descendants: true`, because Ivy will no longer match\n    // indirect descendants if it's left as false.\n    descendants: true,\n  })\n  // We need an initializer here to avoid a TS error.\n  override _allSidebars: QueryList<SbbSidebar> = undefined!;\n\n  // We need an initializer here to avoid a TS error.\n  @ContentChild(SbbSidebarContent) override _content: SbbSidebarContent = undefined!;\n  @ViewChild(SbbSidebarContent) override _userContent: SbbSidebarContent = undefined!;\n\n  /** Event emitted when the sidebar backdrop is clicked. */\n  @Output() readonly backdropClick: EventEmitter<void> = new EventEmitter<void>();\n\n  /**\n   * Margins to be applied to the content. These are used to shrink the sidebar content when a\n   * sidebar is open. We use margin rather than transform because transform breaks\n   * fixed position elements inside of the transformed element.\n   */\n  _contentMargins: { left: number | null; right: number | null } = { left: null, right: null };\n\n  readonly _contentMarginChanges = new Subject<{ left: number | null }>();\n\n  override ngAfterContentInit() {\n    super.ngAfterContentInit();\n\n    this._sidebars.changes.pipe(startWith(null)).subscribe(() => {\n      this._validateSidebars();\n\n      this._sidebars.forEach((sidebar: SbbSidebar) => {\n        this._watchSidebarToggle(sidebar);\n        this._watchSidebarMode(sidebar);\n        this._watchSidebarPosition(sidebar);\n      });\n\n      if (\n        !this._sidebars.length ||\n        this._isSidebarOpen(this._start) ||\n        this._isSidebarOpen(this._end)\n      ) {\n        this.updateContentMargins();\n      }\n\n      this._changeDetectorRef.markForCheck();\n    });\n\n    // Has to be called at last (needs sidebar to be set)\n    this._watchBreakpointObserver();\n  }\n\n  /** Calls `open` of both start and end sidebars */\n  open(): void {\n    this._sidebars.forEach((sidebar) => sidebar.open());\n  }\n\n  /** Calls `close` of both start and end sidebars */\n  close(): void {\n    this._sidebars.forEach((sidebar) => sidebar.close());\n  }\n\n  /**\n   * Recalculates and updates the inline styles for the content. Note that this should be used\n   * sparingly, because it causes a reflow.\n   */\n  updateContentMargins() {\n    // 1. For sidebars in `over` mode, they don't affect the content.\n    // 2. For sidebars in `side` mode they should shrink the content. We do this by adding to the\n    //    left margin (for left sidebar).\n    let left = 0;\n    let right = 0;\n\n    if (this._start && this._start.opened && this._start.mode === 'side') {\n      left += this._start._getWidth();\n    }\n\n    if (this._end && this._end.opened && this._end.mode === 'side') {\n      right += this._end._getWidth();\n    }\n\n    // If `left` is zero, don't set a style to the element. This\n    // allows users to specify a custom size via CSS class in SSR scenarios where the\n    // measured widths will always be zero. Note that we reset to `null` here, rather\n    // than below, in order to ensure that the types in the `if` below are consistent.\n    left = left || null!;\n    right = right || null!;\n\n    if (left !== this._contentMargins.left) {\n      this._contentMargins = { left, right };\n\n      // Pull back into the NgZone since in some cases we could be outside. We need to be careful\n      // to do it only when something changed, otherwise we can end up hitting the zone too often.\n      this._ngZone.run(() => this._contentMarginChanges.next(this._contentMargins));\n    }\n  }\n\n  /**\n   * Subscribes to sidebar events in order to set a class on the main container element when the\n   * sidebar is open and the backdrop is visible. This ensures any overflow on the container element\n   * is properly hidden.\n   */\n  private _watchSidebarToggle(sidebar: SbbSidebar): void {\n    sidebar._animationStarted.pipe(takeUntil(this._sidebars.changes)).subscribe(() => {\n      this.updateContentMargins();\n      this._changeDetectorRef.markForCheck();\n    });\n\n    sidebar.openedChange\n      .pipe(takeUntil(this._sidebars.changes))\n      .subscribe(() => this._setContainerClass(sidebar.opened));\n  }\n\n  /** Subscribes to changes in sidebar mode so we can run change detection. */\n  private _watchSidebarMode(sidebar: SbbSidebar): void {\n    if (sidebar) {\n      sidebar._modeChanged\n        .pipe(takeUntil(merge(this._sidebars.changes, this._destroyed)))\n        .subscribe(() => {\n          this.updateContentMargins();\n          this._changeDetectorRef.markForCheck();\n        });\n    }\n  }\n\n  /**\n   * Subscribes to sidebar onPositionChanged event in order to\n   * re-validate sidebars when the position changes.\n   */\n  private _watchSidebarPosition(sidebar: SbbSidebar) {\n    if (!sidebar) {\n      return;\n    }\n\n    sidebar.onPositionChanged.pipe(takeUntil(this._sidebars.changes)).subscribe(() => {\n      this._validateSidebars();\n      this.updateContentMargins();\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n\n  /** Toggles the 'sbb-sidebar-opened' class on the main 'sbb-sidebar-container' element. */\n  private _setContainerClass(isAdd: boolean): void {\n    const classList = this._element.nativeElement.classList;\n    const className = 'sbb-sidebar-container-has-open';\n\n    if (isAdd) {\n      classList.add(className);\n    } else {\n      classList.remove(className);\n    }\n  }\n\n  _onBackdropClicked() {\n    this.backdropClick.emit();\n    this._closeModalSidebarsViaBackdrop();\n  }\n\n  _closeModalSidebarsViaBackdrop() {\n    // Close open sidebar where closing is not disabled and the mode is not `side`.\n    [this._start, this._end]\n      .filter((sidebar) => sidebar && this._canHaveBackdrop(sidebar))\n      .forEach((sidebar) => sidebar!._closeViaBackdropClick());\n  }\n\n  _isShowingBackdrop(): boolean {\n    return (\n      (this._isSidebarOpen(this._start) && this._canHaveBackdrop(this._start)) ||\n      (this._isSidebarOpen(this._end) && this._canHaveBackdrop(this._end))\n    );\n  }\n\n  private _canHaveBackdrop(sidebar: SbbSidebar): boolean {\n    return sidebar.mode !== 'side';\n  }\n\n  private _isSidebarOpen(sidebar: SbbSidebar | null): sidebar is SbbSidebar {\n    return sidebar != null && sidebar.opened;\n  }\n\n  toggleSidebar(position: 'start' | 'end') {\n    if (position === 'start') {\n      this._start?.toggle();\n    } else {\n      this._end?.toggle();\n    }\n  }\n\n  override ngOnDestroy() {\n    super.ngOnDestroy();\n    this._contentMarginChanges.complete();\n  }\n}\n","<div class=\"sbb-sidebar-inner-container sbb-scrollbar sbb-scrollbar-opaque\" cdkScrollable>\n  @if (mode === 'over') {\n    <div class=\"sbb-sidebar-menu-bar-wrapper\">\n      <span class=\"sbb-sidebar-menu-bar-title\">{{ collapsibleTitle }}</span>\n      <button\n        type=\"button\"\n        class=\"sbb-button-reset-frameless sbb-sidebar-menu-bar-close sbb-icon-scaled\"\n        (click)=\"toggle()\"\n        [attr.aria-label]=\"_labelCloseSidebar\"\n      >\n        <sbb-icon svgIcon=\"cross-small\"></sbb-icon>\n      </button>\n    </div>\n  }\n  <ng-content select=\"sbb-expansion-panel, fieldset\"></ng-content>\n</div>\n","@if (_mobile) {\n  <div class=\"sbb-sidebar-mobile-menu-bar\">\n    @if (_start) {\n      <button\n        type=\"button\"\n        class=\"sbb-button-reset-frameless sbb-sidebar-mobile-menu-bar-trigger sbb-icon-scaled\"\n        (click)=\"toggleSidebar('start')\"\n        [attr.aria-label]=\"_labelOpenSidebar\"\n      >\n        <sbb-icon [svgIcon]=\"(_start._svgIcon | async)!\"></sbb-icon>\n      </button>\n    }\n    <span></span>\n    @if (_end) {\n      <button\n        type=\"button\"\n        class=\"sbb-button-reset-frameless sbb-sidebar-mobile-menu-bar-trigger sbb-icon-scaled\"\n        (click)=\"toggleSidebar('end')\"\n        [attr.aria-label]=\"_labelOpenSidebar\"\n      >\n        <sbb-icon [svgIcon]=\"(_end._svgIcon | async)!\"></sbb-icon>\n      </button>\n    }\n  </div>\n}\n\n@if (hasBackdrop) {\n  <div\n    class=\"sbb-sidebar-backdrop\"\n    (click)=\"_onBackdropClicked()\"\n    [class.sbb-sidebar-shown]=\"_isShowingBackdrop()\"\n  ></div>\n}\n\n<ng-content select=\"sbb-sidebar\"></ng-content>\n\n<ng-content select=\"sbb-sidebar-content\"> </ng-content>\n@if (!_content) {\n  <sbb-sidebar-content>\n    <ng-content></ng-content>\n  </sbb-sidebar-content>\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { SbbIcon } from '@sbb-esta/angular/icon';\n\n@Component({\n  selector: 'a[sbbSidebarLink]',\n  templateUrl: './sidebar-link.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'sbb-sidebar-link',\n  },\n  imports: [SbbIcon],\n})\nexport class SbbSidebarLink {}\n","<span class=\"sbb-sidebar-link-label\">\n  <ng-content></ng-content>\n</span>\n<sbb-icon\n  svgIcon=\"arrow-right-small\"\n  class=\"sbb-sidebar-link-arrow sbb-icon-scaled\"\n  aria-hidden=\"true\"\n></sbb-icon>\n","import { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { NgModule } from '@angular/core';\nimport { SbbCommonModule } from '@sbb-esta/angular/core';\nimport { SbbIconModule } from '@sbb-esta/angular/icon';\n\nimport {\n  SbbIconSidebar,\n  SbbIconSidebarContainer,\n  SbbIconSidebarContent,\n} from './icon-sidebar/icon-sidebar';\nimport { SbbIconSidebarItem } from './icon-sidebar/icon-sidebar-item';\nimport { SbbSidebar, SbbSidebarContainer, SbbSidebarContent } from './sidebar/sidebar';\nimport { SbbSidebarLink } from './sidebar/sidebar-link';\n\n@NgModule({\n  imports: [\n    CdkScrollableModule,\n    SbbCommonModule,\n    SbbIconModule,\n    SbbSidebar,\n    SbbSidebarContainer,\n    SbbSidebarContent,\n    SbbSidebarLink,\n    SbbIconSidebar,\n    SbbIconSidebarContainer,\n    SbbIconSidebarContent,\n    SbbIconSidebarItem,\n  ],\n  exports: [\n    CdkScrollableModule,\n    SbbSidebar,\n    SbbSidebarContainer,\n    SbbSidebarContent,\n    SbbSidebarLink,\n    SbbIconSidebar,\n    SbbIconSidebarContainer,\n    SbbIconSidebarContent,\n    SbbIconSidebarItem,\n  ],\n})\nexport class SbbSidebarModule {}\n"],"names":["throwSbbDuplicatedSidebarError","position","Error","SBB_SIDEBAR_CONTAINER","InjectionToken","SbbSidebarContentBase","CdkScrollable","_elementRef","inject","ElementRef","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","usesInheritance","ngImport","decorators","SbbSidebarBase","_doc","DOCUMENT","_isAttached","_anchor","value","_position","_updatePositionInParent","onPositionChanged","emit","EventEmitter","constructor","newPosition","element","nativeElement","parent","parentNode","createComment","insertBefore","appendChild","ngAfterViewInit","ngOnDestroy","remove","inputs","outputs","host","properties","args","Input","Output","SbbSidebarContainerBase","_ngZone","NgZone","_changeDetectorRef","ChangeDetectorRef","_breakpointObserver","BreakpointObserver","_mobile","sidebar","_start","_end","start","end","scrollable","_userContent","_content","_allSidebars","_sidebars","QueryList","_destroyed","Subject","ngAfterContentInit","changes","pipe","startWith","takeUntil","subscribe","allSidebars","reset","filter","_container","notifyOnChanges","_watchBreakpointObserver","observe","Breakpoints","Mobile","map","r","matches","distinctUntilChanged","newMobile","_updateMobileState","currentMobile","_mobileChanged","markForCheck","destroy","next","complete","_validateSidebars","forEach","ngDevMode","throwSbbDuplicatedIconSidebarError","SbbIconSidebarContent","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","selector","classAttribute","providers","provide","useExisting","template","isInline","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","class","SbbIconSidebar","_labelCollapse","$localize","_labelExpand","expanded","_expanded","toggleExpanded","signal","expandedChange","set","mobile","querySelector","scrollLeft","booleanAttribute","attributes","exportAs","dependencies","kind","SbbIcon","tabIndex","role","imports","transform","SbbIconSidebarContainer","undefined","length","queries","propertyName","first","predicate","descendants","viewQueries","styles","ContentChildren","ContentChild","ViewChild","SbbIconSidebarItem","label","SbbSidebarContent","SbbSidebarContainer","_contentMarginChanges","SbbSidebar","_focusTrapFactory","ConfigurableFocusTrapFactory","_focusMonitor","FocusMonitor","_renderer","Renderer2","_router","Router","optional","_labelCloseSidebar","collapsible","_collapsible","mode","opened","open","collapsibleTitle","_mode","_updateFocusTrapState","_modeChanged","_opened","_openedViaInput","toggle","coerceBooleanProperty","_animationStarted","_animationEnd","triggerSvgIcon","_triggerSvgIconSubject","BehaviorSubject","openedStart","mapTo","closedStart","_focusTrap","_elementFocusedBeforeSidebarWasOpened","_eventCleanups","_openedVia","openedChange","_openedStream","o","_closedStream","_svgIcon","combineLatest","icon","_injector","Injector","activeElement","_takeFocus","_isFocusWithinSidebar","_restoreFocus","runOutsideAngular","merge","fromEvent","event","keyCode","ESCAPE","hasModifierKey","events","e","NavigationStart","NEVER","run","close","stopPropagation","preventDefault","listen","_handleTransitionEvent","afterNextRender","hasMovedFocus","focusInitialElement","focus","injector","focusOrigin","focusVia","blur","activeEl","contains","create","cleanup","openedVia","_closeViaBackdropClick","_setOpen","isOpen","result","restoreFocus","Promise","resolve","_transitionsEnabled","_setIsAnimating","setTimeout","classList","take","isAnimating","_getWidth","offsetWidth","enabled","then","wereTransitionsEnabled","_element","_animationMode","ANIMATION_MODULE_TYPE","_labelOpenSidebar","hasBackdrop","platform","Platform","viewportRuler","ViewportRuler","change","updateContentMargins","isBrowser","add","backdropClick","_contentMargins","left","right","_watchSidebarToggle","_watchSidebarMode","_watchSidebarPosition","_isSidebarOpen","_setContainerClass","isAdd","className","_onBackdropClicked","_closeModalSidebarsViaBackdrop","_canHaveBackdrop","_isShowingBackdrop","toggleSidebar","AsyncPipe","name","SbbSidebarLink","SbbSidebarModule","NgModule","ɵmod","ɵɵngDeclareNgModule","CdkScrollableModule","SbbCommonModule","SbbIconModule","ɵinj","ɵɵngDeclareInjector","exports"],"mappings":"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"}