{"version":3,"file":"header-lean.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-token.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/app-chooser-section.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/app-chooser-section.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-animations.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-menu-trigger.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-menu-trigger.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-directives.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-menu-item.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-menu.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header-menu.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/header-lean/header.module.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport type { SbbHeaderLean } from './header';\n\nexport const SBB_HEADER = new InjectionToken<SbbHeaderLean>('SBB_HEADER');\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  HostListener,\n  inject,\n  Input,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { TypeRef } from '@sbb-esta/angular/core';\n\nimport type { SbbHeaderLean } from './header';\nimport { SBB_HEADER } from './header-token';\n\n@Component({\n  selector: 'sbb-app-chooser-section',\n  templateUrl: './app-chooser-section.html',\n  styleUrls: ['./app-chooser-section.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'sbb-app-chooser',\n  },\n})\nexport class SbbAppChooserSection {\n  private _header = inject<TypeRef<SbbHeaderLean>>(SBB_HEADER);\n\n  @Input() label: string;\n\n  constructor(...args: unknown[]);\n  constructor() {}\n\n  /** Close the header menu when any a or button child element is clicked. */\n  @HostListener('click', ['$event'])\n  _handleChildClick(event: TypeRef<Event>) {\n    const target = event.target as HTMLElement;\n    if (target && target.tagName && (target.tagName === 'A' || target.tagName === 'BUTTON')) {\n      this._header.opened = false;\n    }\n  }\n}\n","<strong class=\"sbb-app-chooser-label\">{{ label }}</strong> <ng-content></ng-content>\n","import {\n  animate,\n  AnimationTriggerMetadata,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\n\n/** Animations used by the header. */\nexport const sbbHeaderAnimations: {\n  readonly menu: AnimationTriggerMetadata;\n} = {\n  menu: trigger('menu', [\n    state(\n      'open',\n      style({\n        left: 0,\n      }),\n    ),\n    state(\n      'void',\n      style({\n        left: -305,\n        visibility: 'hidden',\n      }),\n    ),\n    transition('open => void, void => open', [animate('0.3s ease-in-out')]),\n  ]),\n};\n","import { FocusMonitor, FocusOrigin, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport {\n  FlexibleConnectedPositionStrategy,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  inject,\n  InjectionToken,\n  Input,\n  OnDestroy,\n  Output,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { TypeRef } from '@sbb-esta/angular/core';\nimport { SbbIconModule } from '@sbb-esta/angular/icon';\nimport { merge, NEVER, Subject, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { SbbHeaderLean } from './header';\nimport type { SbbHeaderMenu } from './header-menu';\nimport { SBB_HEADER } from './header-token';\n\n/** Injection token that determines the scroll handling while the menu is open. */\nexport const SBB_HEADER_MENU_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n  'sbb-header-menu-scroll-strategy',\n);\n\n/** @docs-private */\nexport function SBB_HEADER_MENU_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const SBB_HEADER_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: SBB_HEADER_MENU_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: SBB_HEADER_MENU_SCROLL_STRATEGY_FACTORY,\n};\n\n/** Options for binding a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });\n\n@Component({\n  selector: 'button[sbbHeaderMenu]',\n  templateUrl: './header-menu-trigger.html',\n  styleUrls: ['./header-menu-trigger.css'],\n  // We use the default change detection here, since it is unclear\n  // whether OnPush works in all use cases.\n  // TODO: Check if OnPush can be enabled.\n  changeDetection: ChangeDetectionStrategy.Default,\n  exportAs: 'sbbHeaderMenu',\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'sbb-header-menu-trigger',\n    type: 'button',\n    'aria-haspopup': 'menu',\n    '[attr.aria-expanded]': 'this.menuOpen || null',\n  },\n  imports: [SbbIconModule],\n})\nexport class SbbHeaderMenuTrigger implements AfterContentInit, OnDestroy {\n  private _overlay = inject(Overlay);\n  private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _focusMonitor = inject(FocusMonitor);\n  private _router = inject(Router, { optional: true });\n  private _header = inject<TypeRef<SbbHeaderLean>>(SBB_HEADER);\n\n  // Tracking input type is necessary so it's possible to only auto-focus\n  // the first item of the list when the menu is opened via the keyboard\n  _openedBy: 'mouse' | 'touch' | null = null;\n\n  /** References the menu instance that the trigger is associated with. */\n  @Input('sbbHeaderMenu')\n  get menu() {\n    return this._menu;\n  }\n  set menu(menu: SbbHeaderMenu) {\n    if (menu === this._menu) {\n      return;\n    }\n\n    this._menu = menu;\n    this._menuCloseSubscription.unsubscribe();\n\n    if (menu) {\n      this._menuCloseSubscription = menu.closed.asObservable().subscribe(() => {\n        this._destroyMenu();\n      });\n    }\n  }\n  private _menu: SbbHeaderMenu;\n\n  /**\n   * Whether focus should be restored when the menu is closed.\n   * Note that disabling this option can have accessibility implications\n   * and it's up to you to manage focus, if you decide to turn it off.\n   */\n  @Input('sbbHeaderMenuTriggerRestoreFocus') restoreFocus: boolean = true;\n\n  /** Event emitted when the associated menu is opened. */\n  @Output() readonly menuOpened: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Event emitted when the associated menu is closed. */\n  @Output() readonly menuClosed: EventEmitter<void> = new EventEmitter<void>();\n\n  @ViewChild('panelTarget', { static: true }) _panelTarget: ElementRef<HTMLElement>;\n\n  /** Whether the menu is open. */\n  get menuOpen(): boolean {\n    return this._menuOpen;\n  }\n\n  private _overlayRef: OverlayRef | null = null;\n  private _menuOpen: boolean = false;\n  private _closingActionsSubscription = Subscription.EMPTY;\n  private _menuCloseSubscription = Subscription.EMPTY;\n  private _destroyed = new Subject<void>();\n  private _scrollStrategy = inject(SBB_HEADER_MENU_SCROLL_STRATEGY);\n\n  /**\n   * Handles touch start events on the trigger.\n   * Needs to be an arrow function so we can easily use addEventListener and removeEventListener.\n   */\n  private _handleTouchStart = () => (this._openedBy = 'touch');\n\n  constructor(...args: unknown[]);\n  constructor() {\n    this._element.nativeElement.addEventListener(\n      'touchstart',\n      this._handleTouchStart,\n      passiveEventListenerOptions,\n    );\n  }\n\n  ngAfterContentInit() {\n    this._checkMenu();\n  }\n\n  ngOnDestroy() {\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._overlayRef = null;\n    }\n\n    this._element.nativeElement.removeEventListener(\n      'touchstart',\n      this._handleTouchStart,\n      passiveEventListenerOptions,\n    );\n\n    this._menuCloseSubscription.unsubscribe();\n    this._closingActionsSubscription.unsubscribe();\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  /** Toggles the menu between the open and closed states. */\n  toggleMenu(): void {\n    return this._menuOpen ? this.closeMenu() : this.openMenu();\n  }\n\n  /** Opens the menu. */\n  openMenu(): void {\n    if (this._menuOpen) {\n      return;\n    }\n\n    this._checkMenu();\n    if (this._header._menusCollapsed) {\n      this.menu._panelPortalOutlet.attachTemplatePortal(this.menu._panelPortal);\n    } else {\n      const overlayRef = this._createOverlay();\n      const overlayConfig = overlayRef.getConfig();\n\n      this._setPosition(overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy);\n      overlayConfig.hasBackdrop = true;\n      overlayRef.attach(this.menu._panelPortal);\n    }\n\n    this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu());\n    this._initMenu();\n  }\n\n  /** Closes the menu. */\n  closeMenu(): void {\n    if (this._menuOpen) {\n      this._panelTarget.nativeElement.style.removeProperty('width');\n      this.menu.open = false;\n    }\n  }\n\n  /**\n   * Focuses the menu trigger.\n   * @param origin Source of the menu trigger's focus.\n   */\n  focus(origin: FocusOrigin = 'program', options?: FocusOptions) {\n    if (this._focusMonitor) {\n      this._focusMonitor.focusVia(this._element, origin, options);\n    } else {\n      this._element.nativeElement.focus(options);\n    }\n  }\n\n  /** Handles mouse presses on the trigger. */\n  @HostListener('mousedown', ['$event'])\n  _handleMousedown(event: TypeRef<MouseEvent>): void {\n    if (!isFakeMousedownFromScreenReader(event)) {\n      // Since right or middle button clicks won't trigger the `click` event,\n      // we shouldn't consider the menu as opened by mouse in those cases.\n      this._openedBy = event.button === 0 ? 'mouse' : null;\n    }\n  }\n\n  /** Handles click events on the trigger. */\n  @HostListener('click')\n  _handleClick(): void {\n    this.toggleMenu();\n  }\n\n  /** Closes the menu and does the necessary cleanup. */\n  private _destroyMenu() {\n    if ((!this._overlayRef && !this.menu._panelPortalOutlet) || !this.menuOpen) {\n      return;\n    }\n\n    this._closingActionsSubscription.unsubscribe();\n    if (this._overlayRef) {\n      this._overlayRef.detach();\n    }\n    this.menu._panelPortalOutlet.detach();\n    this._setIsMenuOpen(false);\n    this._restoreFocus();\n  }\n\n  /**\n   * This method sets the menu state to open and focuses the first item if\n   * the menu was opened via the keyboard.\n   */\n  private _initMenu(): void {\n    this.menu.open = true;\n    this._setIsMenuOpen(true);\n\n    // TODO: Figure out hot to properly handle click and keyboard variants.\n    // this.menu.focusFirstItem(this._openedBy || 'program');\n  }\n\n  /** Restores focus to the element that was focused before the menu was open. */\n  private _restoreFocus() {\n    // We should reset focus if the user is navigating using a keyboard or\n    // if we have a top-level trigger which might cause focus to be lost\n    // when clicking on the backdrop.\n    if (this.restoreFocus) {\n      if (!this._openedBy) {\n        // Note that the focus style will show up both for `program` and\n        // `keyboard` so we don't have to specify which one it is.\n        this.focus();\n      } else {\n        this.focus(this._openedBy);\n      }\n    }\n\n    this._openedBy = null;\n  }\n\n  // set state rather than toggle to support triggers sharing a menu\n  private _setIsMenuOpen(isOpen: boolean): void {\n    this._menuOpen = isOpen;\n    this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();\n  }\n\n  /**\n   * This method checks that a valid instance of HeaderMenu has been passed into\n   * sbbHeaderMenu. If not, an exception is thrown.\n   */\n  private _checkMenu() {\n    if (!this.menu) {\n      throw Error(`sbbHeaderMenu: must pass in an sbb-header-menu instance.\n\n      Example:\n        <sbb-header-menu #menu=\"sbbHeaderMenu\"></sbb-header-menu>\n        <button [sbbHeaderMenu]=\"menu\"></button>`);\n    }\n  }\n\n  /**\n   * This method creates the overlay from the provided menu's template and saves its\n   * OverlayRef so that it can be attached to the DOM when openMenu is called.\n   */\n  private _createOverlay(): OverlayRef {\n    if (!this._overlayRef) {\n      const config = this._getOverlayConfig();\n      this._overlayRef = this._overlay.create(config);\n\n      // Consume the `keydownEvents` in order to prevent them from going to another overlay.\n      // Ideally we'd also have our keyboard event logic in here, however doing so will\n      // break anybody that may have implemented the `HeaderMenuPanel` themselves.\n      this._overlayRef.keydownEvents().subscribe();\n    }\n\n    return this._overlayRef;\n  }\n\n  /**\n   * This method builds the configuration object needed to create the overlay, the OverlayState.\n   * @returns OverlayConfig\n   */\n  private _getOverlayConfig(): OverlayConfig {\n    return new OverlayConfig({\n      positionStrategy: this._overlay\n        .position()\n        .flexibleConnectedTo(this._panelTarget)\n        .withFlexibleDimensions(false)\n        .withGrowAfterOpen()\n        .withLockedPosition()\n        .withTransformOriginOn('.sbb-header-menu-panel'),\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n      scrollStrategy: this._scrollStrategy(),\n      minWidth: this._getHostWidth(),\n    });\n  }\n\n  /**\n   * Sets the appropriate positions on a position strategy\n   * so the overlay connects with the trigger correctly.\n   * @param positionStrategy Strategy whose position to update.\n   */\n  private _setPosition(positionStrategy: FlexibleConnectedPositionStrategy) {\n    positionStrategy.withPositions([\n      { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n    ]);\n  }\n\n  /** Returns the width of the input element, so the panel width can match it. */\n  protected _getHostWidth(): number {\n    return this._element.nativeElement.getBoundingClientRect().width;\n  }\n\n  /** Returns a stream that emits whenever an action that should close the menu occurs. */\n  private _menuClosingActions() {\n    const backdrop = this._overlayRef ? this._overlayRef.backdropClick() : NEVER;\n    const detachments = this._overlayRef ? this._overlayRef.detachments() : NEVER;\n    const dimensionChange = this._header._headerMenusCollapsed;\n    const routeChange = this._router\n      ? this._router.events.pipe(filter((e) => e instanceof NavigationStart))\n      : NEVER;\n    const itemClicks = this.menu._items.toArray().map((i) => i.click);\n    return merge(backdrop, detachments, dimensionChange, routeChange, ...itemClicks);\n  }\n}\n","<span class=\"sbb-header-menu-trigger-content\" #panelTarget>\n  <ng-content></ng-content>\n  <sbb-icon class=\"sbb-header-menu-trigger-indicator\" svgIcon=\"chevron-small-down-small\"></sbb-icon>\n</span>\n","// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/// <reference types=\"@angular/localize/init\" />\n\nimport { AnimationEvent } from '@angular/animations';\nimport {\n  ConfigurableFocusTrapFactory,\n  FocusMonitor,\n  FocusOrigin,\n  FocusTrap,\n} from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ENTER, ESCAPE, hasModifierKey, SPACE } from '@angular/cdk/keycodes';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { CdkPortal, CdkPortalOutlet } from '@angular/cdk/portal';\nimport { AsyncPipe, DOCUMENT } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { Breakpoints } from '@sbb-esta/angular/core';\nimport { SbbIconModule } from '@sbb-esta/angular/icon';\nimport { BehaviorSubject, fromEvent, merge, NEVER, Observable, Subject } from 'rxjs';\nimport {\n  distinctUntilChanged,\n  filter,\n  map,\n  shareReplay,\n  switchMap,\n  take,\n  takeUntil,\n} from 'rxjs/operators';\n\nimport { SbbAppChooserSection } from './app-chooser-section';\nimport { sbbHeaderAnimations } from './header-animations';\nimport { SbbHeaderMenuTrigger } from './header-menu-trigger';\nimport { SBB_HEADER } from './header-token';\n\n/** Result of the toggle promise that indicates the state of the header menu. */\nexport type SbbHeaderMenuToggleResult = 'open' | 'close';\n\nexport type SbbHeaderCollapseBreakpoint =\n  | 'mobile'\n  | 'tablet'\n  | 'desktop'\n  | 'desktopLarge'\n  | 'desktop2k'\n  | 'desktop4k'\n  | 'desktop5k';\n\nconst breakpointMapping = {\n  mobile: [Breakpoints.Mobile],\n  tablet: [Breakpoints.Mobile, Breakpoints.Tablet],\n  desktop: [Breakpoints.Mobile, Breakpoints.Tablet, Breakpoints.Desktop],\n  desktopLarge: [\n    Breakpoints.Mobile,\n    Breakpoints.Tablet,\n    Breakpoints.Desktop,\n    Breakpoints.DesktopLarge,\n  ],\n  desktop2k: [\n    Breakpoints.Mobile,\n    Breakpoints.Tablet,\n    Breakpoints.Desktop,\n    Breakpoints.DesktopLarge,\n    Breakpoints.Desktop2k,\n  ],\n  desktop4k: [\n    Breakpoints.Mobile,\n    Breakpoints.Tablet,\n    Breakpoints.Desktop,\n    Breakpoints.DesktopLarge,\n    Breakpoints.Desktop2k,\n    Breakpoints.Desktop4k,\n  ],\n  desktop5k: [\n    Breakpoints.Mobile,\n    Breakpoints.Tablet,\n    Breakpoints.Desktop,\n    Breakpoints.DesktopLarge,\n    Breakpoints.Desktop2k,\n    Breakpoints.Desktop4k,\n    Breakpoints.Desktop5k,\n  ],\n};\n\n@Component({\n  selector: 'sbb-header-lean',\n  templateUrl: './header.html',\n  styleUrls: ['./header.css'],\n  exportAs: 'sbbHeader',\n  animations: [sbbHeaderAnimations.menu],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [{ provide: SBB_HEADER, useExisting: SbbHeaderLean }],\n  host: {\n    class: 'sbb-header-lean',\n    '[class.sbb-header-lean-opened]': 'opened',\n    '[class.sbb-header-lean-app-chooser-available]': '_appChooserSections.length',\n  },\n  imports: [SbbIconModule, CdkPortalOutlet, CdkPortal, AsyncPipe],\n})\nexport class SbbHeaderLean implements OnChanges, AfterViewInit, OnDestroy {\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _focusTrapFactory = inject(ConfigurableFocusTrapFactory);\n  private _focusMonitor = inject(FocusMonitor);\n  private _ngZone = inject(NgZone);\n  private _breakpointObserver = inject(BreakpointObserver);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _router = inject(Router, { optional: true });\n  private _doc = inject(DOCUMENT, { optional: true });\n\n  _labelOpenMenu: string = $localize`:Button label to open the sidebar of the header@@sbbHeaderOpenMenu:Open Menu`;\n\n  _labelCloseMenu: string = $localize`:Button label to close the sidebar of the header@@sbbHeaderCloseMenu:Close Menu`;\n\n  /** Main title shown in the header. */\n  @Input() label?: string;\n\n  /** Subtitle shown below the main title, if present. */\n  @Input() subtitle?: string;\n\n  /**\n   * The breakpoint on which to collapse the header menus into the burger menu.\n   * Matching the given breakpoint or anything below, will collapse the menus.\n   * (e.g. 'tablet' will collapse the menu, if 'tablet' or 'mobile' is matched)\n   * See breakpoint documentation for specific values.\n   */\n  @Input() collapseBreakpoint: SbbHeaderCollapseBreakpoint = 'tablet';\n\n  /** Whether the header menu is open. */\n  get opened(): boolean {\n    return this._opened;\n  }\n  set opened(value: BooleanInput) {\n    this.toggleMenu(coerceBooleanProperty(value));\n  }\n  private _opened = false;\n\n  /** Emits whenever the header menu has started animating. */\n  _animationStarted: Subject<AnimationEvent> = new Subject<AnimationEvent>();\n\n  /** Emits whenever the header menu is done animating. */\n  _animationEnd: Subject<AnimationEvent> = new Subject<AnimationEvent>();\n\n  /** Current state of the menu animation. */\n  _animationState: 'open' | 'void' = 'void';\n\n  /** Observable of whether the menus are collapsed into the burger menu. */\n  _headerMenusCollapsed: Observable<boolean>;\n\n  /** Whether the menus are collapsed into the burger menu. */\n  _menusCollapsed: boolean = false;\n\n  /** Event emitted when the header menu 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 header menu has been opened. */\n  @Output('opened')\n  get _openedStream(): Observable<void> {\n    return this.openedChange.pipe(\n      filter((o) => o),\n      map(() => {}),\n    );\n  }\n\n  /** Event emitted when the header menu has started opening. */\n  @Output()\n  get openedStart(): Observable<void> {\n    return this._animationStarted.pipe(\n      filter((e) => e.fromState !== e.toState && e.toState.indexOf('open') === 0),\n      map(() => {}),\n    );\n  }\n\n  /** Event emitted when the header menu has been closed. */\n  @Output('closed')\n  get _closedStream(): Observable<void> {\n    return this.openedChange.pipe(\n      filter((o) => !o),\n      map(() => {}),\n    );\n  }\n\n  /** Event emitted when the header menu has started closing. */\n  @Output()\n  get closedStart(): Observable<void> {\n    return this._animationStarted.pipe(\n      filter((e) => e.fromState !== e.toState && e.toState === 'void'),\n      map(() => {}),\n    );\n  }\n\n  /** @docs-private */\n  @ViewChild('menu', { static: true }) _menuElement: ElementRef<HTMLElement>;\n\n  /**\n   * The provided app chooser sections.\n   * @docs-private\n   */\n  @ContentChildren(SbbAppChooserSection) _appChooserSections: QueryList<SbbAppChooserSection>;\n\n  /**\n   * Menu triggers used within the header.\n   * @docs-private\n   */\n  @ContentChildren(SbbHeaderMenuTrigger) _menuTriggers: QueryList<SbbHeaderMenuTrigger>;\n\n  /** How the sidenav was opened (keypress, mouse click etc.) */\n  private _openedVia: FocusOrigin | null;\n\n  /** Emits when the component is destroyed. */\n  private readonly _destroyed = new Subject<void>();\n\n  private readonly _collapseBreakpoint = new BehaviorSubject<SbbHeaderCollapseBreakpoint>(\n    this.collapseBreakpoint,\n  );\n\n  private _focusTrap: FocusTrap;\n  private _elementFocusedBeforeMenuWasOpened: HTMLElement | null = null;\n\n  constructor(...args: unknown[]);\n  constructor() {\n    this.openedChange.subscribe((opened: boolean) => {\n      if (opened) {\n        if (this._doc) {\n          this._elementFocusedBeforeMenuWasOpened = this._doc.activeElement as HTMLElement;\n        }\n\n        if (this.opened && this._focusTrap) {\n          this._trapFocus();\n        }\n        if (this._doc && this.opened) {\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           */\n          this._ngZone.runOutsideAngular(() => {\n            merge(\n              fromEvent<KeyboardEvent>(this._menuElement.nativeElement, 'keydown').pipe(\n                filter((event) => event.keyCode === ESCAPE && !hasModifierKey(event)),\n              ),\n              this._router\n                ? this._router.events.pipe(filter((e) => e instanceof NavigationStart))\n                : NEVER,\n            )\n              .pipe(takeUntil(this.openedChange))\n              .subscribe(() => this._ngZone.run(() => this.closeMenu()));\n          });\n        }\n      } else {\n        this._restoreFocus();\n      }\n    });\n\n    // We need a Subject with distinctUntilChanged, because the `done` event\n    // fires twice on some browsers. See https://github.com/angular/angular/issues/24084\n    this._animationEnd\n      .pipe(\n        distinctUntilChanged((x, y) => {\n          return x.fromState === y.fromState && x.toState === y.toState;\n        }),\n      )\n      .subscribe((event: AnimationEvent) => {\n        const { fromState, toState } = event;\n\n        if (\n          (toState.indexOf('open') === 0 && fromState === 'void') ||\n          (toState === 'void' && fromState.indexOf('open') === 0)\n        ) {\n          this.openedChange.emit(this._opened);\n        }\n      });\n\n    // Programmatically track the collapsed state of the header menus.\n    // This is required in order to attach/detach the menus to the main\n    // or side navigation.\n    this._headerMenusCollapsed = this._collapseBreakpoint.pipe(\n      switchMap((breakpoint) => this._breakpointObserver.observe(breakpointMapping[breakpoint])),\n      map((r) => r.matches),\n      distinctUntilChanged(),\n      shareReplay(),\n      takeUntil(this._destroyed),\n    );\n\n    // Close menus on collapsing/uncollapsing the header menus.\n    merge(this.closedStart, this._headerMenusCollapsed).subscribe(() => {\n      this._menuTriggers?.forEach((t) => t.closeMenu());\n    });\n\n    // Change property according to collapsed state.\n    this._headerMenusCollapsed.subscribe((isCollapsed) => {\n      Promise.resolve().then(() => (this._menusCollapsed = isCollapsed));\n    });\n    // Add or remove the sbb-header-lean-menus-collapsed css class, depending on\n    // collapsed state.\n    this._ngZone.runOutsideAngular(() => {\n      this._headerMenusCollapsed.subscribe((isCollapsed) => {\n        if (isCollapsed) {\n          this._elementRef.nativeElement.classList.add('sbb-header-lean-menus-collapsed');\n        } else {\n          this._elementRef.nativeElement.classList.remove('sbb-header-lean-menus-collapsed');\n        }\n      });\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (\n      changes['collapseBreakpoint'] &&\n      changes['collapseBreakpoint'].previousValue !== changes['collapseBreakpoint'].currentValue\n    ) {\n      this._collapseBreakpoint.next(this.collapseBreakpoint);\n    }\n  }\n\n  ngAfterViewInit() {\n    this._focusTrap = this._focusTrapFactory.create(this._menuElement.nativeElement);\n    this._updateFocusTrapState();\n  }\n\n  ngOnDestroy() {\n    if (this._focusTrap) {\n      this._focusTrap.destroy();\n    }\n\n    this._animationStarted.complete();\n    this._animationEnd.complete();\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  /** @docs-private */\n  _openOnKeydownTrigger(event: KeyboardEvent) {\n    if (event.keyCode === SPACE || event.keyCode === ENTER) {\n      this.openMenu('keyboard');\n    }\n  }\n\n  /**\n   * Open the header menu.\n   * @param openedVia Whether the header menu was opened by a key press, mouse click or programmatically.\n   * Used for focus management after the sidenav is closed.\n   */\n  openMenu(openedVia?: FocusOrigin): Promise<SbbHeaderMenuToggleResult> {\n    return this.toggleMenu(true, openedVia);\n  }\n\n  /** @docs-private */\n  _closeOnKeydownTrigger(event: KeyboardEvent) {\n    if (event.keyCode === SPACE || event.keyCode === ENTER) {\n      this.closeMenu();\n    }\n  }\n\n  /** @docs-private */\n  _onBackdropClicked() {\n    this.closeMenu();\n  }\n\n  /** Close the header menu. */\n  closeMenu(): Promise<SbbHeaderMenuToggleResult> {\n    return this.toggleMenu(false);\n  }\n\n  /**\n   * Toggle the header menu.\n   * @param isOpen Whether the header menu should be open.\n   * @param openedVia Whether the header menu was opened by a key press, mouse click or programmatically.\n   * Used for focus management after the sidenav is closed.\n   */\n  toggleMenu(\n    isOpen: boolean = !this.opened,\n    openedVia: FocusOrigin = 'program',\n  ): Promise<SbbHeaderMenuToggleResult> {\n    this._opened = isOpen;\n\n    if (isOpen) {\n      this._animationState = 'open';\n      this._openedVia = openedVia;\n    } else {\n      this._animationState = 'void';\n      this._changeDetectorRef.markForCheck();\n      this._restoreFocus();\n    }\n\n    this._updateFocusTrapState();\n\n    return new Promise<SbbHeaderMenuToggleResult>((resolve) => {\n      this.openedChange.pipe(take(1)).subscribe((open) => resolve(open ? 'open' : 'close'));\n    });\n  }\n\n  /** @docs-private */\n  _animationStartListener(event: AnimationEvent) {\n    this._animationStarted.next(event);\n  }\n\n  /** @docs-private */\n  _animationDoneListener(event: AnimationEvent) {\n    this._animationEnd.next(event);\n  }\n\n  /** Traps focus inside the header menu. */\n  private _trapFocus() {\n    this._focusTrap.focusInitialElementWhenReady().then((hasMovedFocus) => {\n      // If there were no focusable elements, focus the sidenav itself so the keyboard navigation\n      // still works. We need to check that `focus` is a function due to Universal.\n      if (!hasMovedFocus && typeof this._menuElement.nativeElement.focus === 'function') {\n        this._menuElement.nativeElement.focus();\n      }\n    });\n  }\n\n  /**\n   * If focus is currently inside the header menu, restores it to where it was before\n   * the header menu opened.\n   */\n  private _restoreFocus() {\n    const activeEl = this._doc && this._doc.activeElement;\n\n    if (activeEl && this._menuElement.nativeElement.contains(activeEl)) {\n      if (this._elementFocusedBeforeMenuWasOpened instanceof HTMLElement) {\n        this._focusMonitor.focusVia(this._elementFocusedBeforeMenuWasOpened, this._openedVia);\n      } else {\n        this._menuElement.nativeElement.blur();\n      }\n    }\n\n    this._elementFocusedBeforeMenuWasOpened = null;\n    this._openedVia = null;\n  }\n\n  /** Updates the enabled state of the focus trap. */\n  private _updateFocusTrapState() {\n    if (this._focusTrap) {\n      this._focusTrap.enabled = this.opened;\n    }\n  }\n}\n","<ng-content select=\"sbb-header-environment\"></ng-content>\n\n<button\n  type=\"button\"\n  class=\"sbb-header-lean-open-menu sbb-button-reset-frameless sbb-icon-fit\"\n  [class.sbb-header-lean-app-chooser-available]=\"_appChooserSections.length\"\n  (click)=\"openMenu('mouse')\"\n  (keydown)=\"_openOnKeydownTrigger($event)\"\n  [attr.aria-label]=\"_labelOpenMenu\"\n>\n  <sbb-icon\n    [svgIcon]=\"_appChooserSections.length ? 'nine-squares-small' : 'hamburger-menu-small'\"\n  ></sbb-icon>\n</button>\n\n<div class=\"sbb-header-lean-titlebox\">\n  <span class=\"sbb-header-lean-label\">{{ label }}</span>\n  @if (subtitle) {\n    <span class=\"sbb-header-lean-subtitle\">{{ subtitle }}</span>\n  }\n</div>\n\n<nav class=\"sbb-header-lean-main-menu\">\n  @if (!(_headerMenusCollapsed | async)) {\n    <ng-template [cdkPortalOutlet]=\"menuActions\"></ng-template>\n  }\n</nav>\n\n<div class=\"sbb-header-lean-container-end\">\n  <div class=\"sbb-header-lean-additional-content\">\n    <ng-content\n      select=\".additional-header-content,sbb-header-icon-actions,.sbb-header-icon-actions\"\n    ></ng-content>\n  </div>\n  <div class=\"sbb-header-lean-usermenu\">\n    <ng-content select=\"sbb-usermenu,.sbb-usermenu\"></ng-content>\n  </div>\n\n  <!-- If an icon is provided, use that, otherwise use the sbb logo -->\n  <div #iconContent class=\"sbb-header-lean-logo\" [hidden]=\"!iconContent.childElementCount\">\n    <ng-content select=\"[brand],.brand\"></ng-content>\n  </div>\n  @if (!iconContent.childElementCount) {\n    <div class=\"sbb-header-lean-logo\">\n      <svg class=\"sbb-header-lean-sbb-logo\" viewBox=\"0 0 80 21\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path d=\"M0 0h59.233v20.603H0V0z\" fill=\"#EC0000\"></path>\n        <path\n          d=\"M35.186 17.02h3.75l-5.047-5.163h6.265v5.163h2.96v-5.163h6.267l-5.05 5.163h3.752l6.427-6.708-6.426-6.73h-3.752l5.05 5.185h-6.266V3.583h-2.96v5.184h-6.267l5.047-5.184h-3.75l-6.43 6.73 6.43 6.707\"\n          fill=\"#FFF\"\n        ></path>\n      </svg>\n    </div>\n  }\n</div>\n\n<div class=\"sbb-header-lean-side-menu-backdrop\" (click)=\"_onBackdropClicked()\"></div>\n<div\n  [@menu]=\"_animationState\"\n  (@menu.start)=\"_animationStartListener($event)\"\n  (@menu.done)=\"_animationDoneListener($event)\"\n  class=\"sbb-header-lean-side-menu-container sbb-scrollbar\"\n  #menu\n>\n  <div class=\"sbb-header-lean-side-menu-title-section\">\n    <button\n      type=\"button\"\n      class=\"sbb-header-lean-close-menu sbb-button-reset-frameless\"\n      (click)=\"closeMenu()\"\n      (keydown)=\"_closeOnKeydownTrigger($event)\"\n      [attr.aria-label]=\"_labelCloseMenu\"\n    >\n      <sbb-icon svgIcon=\"cross-small\"></sbb-icon>\n    </button>\n\n    <div class=\"sbb-header-lean-titlebox\">\n      <span class=\"sbb-header-lean-label\">{{ label }}</span>\n      @if (subtitle) {\n        <span class=\"sbb-header-lean-subtitle\">{{ subtitle }}</span>\n      }\n    </div>\n  </div>\n\n  <nav class=\"sbb-header-lean-side-menu\">\n    @if (_headerMenusCollapsed | async) {\n      <ng-template [cdkPortalOutlet]=\"menuActions\"></ng-template>\n    }\n  </nav>\n\n  <ng-content select=\"sbb-app-chooser-section\"></ng-content>\n</div>\n<ng-content select=\"sbb-header-menu\"></ng-content>\n\n<!--\nThe outlet for links and buttons inside sbb-header-lean, which will be placed in the header bar or\nthe sidebar depending on state.\n-->\n<ng-template cdkPortal #menuActions=\"cdkPortal\">\n  <ng-content select=\"a,button\"></ng-content>\n</ng-template>\n","import { ContentObserver } from '@angular/cdk/observers';\nimport { Directive, ElementRef, inject, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\n/**\n * Optional component to indicate the environment of the app (e.g. dev, test, int, ...).\n * The component observes and extracts the text content of itself and appends\n * it (normalized) as a css class.\n *\n * e.g.:\n * <sbb-header-environment>dev</sbb-header-environment>\n * has the css class `sbb-header-environment-dev`\n */\n@Directive({\n  selector: 'sbb-header-environment',\n  exportAs: 'sbbHeaderEnvironment',\n  host: {\n    class: 'sbb-header-environment',\n  },\n})\nexport class SbbHeaderEnvironment implements OnDestroy {\n  private _destroyed = new Subject<void>();\n  private _previousClass: string | null = null;\n\n  constructor(...args: unknown[]);\n  constructor() {\n    const contentObserver = inject(ContentObserver);\n    const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    contentObserver\n      .observe(elementRef)\n      .pipe(\n        map(() => {\n          let text = elementRef.nativeElement.textContent;\n          if (text) {\n            text = text\n              .replace(/[^a-zA-Z0-9-_]+/g, '-')\n              .replace(/(^-+|-+$)/g, '')\n              .toLowerCase();\n            return `sbb-header-environment-${text}`;\n          }\n\n          return null;\n        }),\n        takeUntil(this._destroyed),\n      )\n      .subscribe((selector) => {\n        const classes = elementRef.nativeElement.classList;\n        if (this._previousClass) {\n          classes.remove(this._previousClass);\n        }\n        if (selector) {\n          classes.add(selector);\n        }\n        this._previousClass = selector;\n      });\n  }\n\n  ngOnDestroy(): void {\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n}\n\n/**\n * Optional component to display icon buttons next to the `<sbb-usermenu>` or the `[brand]`.\n *\n * e.g.:\n * ```\n * <sbb-header-icon-actions>\n *   <button sbb-frameless-button><sbb-icon svgIcon=\"magnifying-glass-small\"></sbb-icon></button>\n *   <button sbb-frameless-button><sbb-icon svgIcon=\"bell-small\"></sbb-icon></button>\n * </sbb-header-icon-actions>\n * ```\n */\n@Directive({\n  selector: 'sbb-header-icon-actions',\n  exportAs: 'sbbHeaderIconActions',\n  host: {\n    class: 'sbb-header-icon-actions',\n  },\n})\nexport class SbbHeaderIconActions {}\n","import { FocusableOption, FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  booleanAttribute,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  inject,\n  Input,\n  OnDestroy,\n  Output,\n} from '@angular/core';\nimport { TypeRef } from '@sbb-esta/angular/core';\n\n@Directive({\n  selector: '[sbbHeaderMenuItem]',\n  host: {\n    '[attr.role]': 'this.role',\n    class: 'sbb-header-menu-item sbb-menu-item',\n  },\n})\nexport class SbbHeaderMenuItem implements FocusableOption, OnDestroy {\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _focusMonitor = inject(FocusMonitor);\n\n  /** ARIA role for the menu item. */\n  @Input() role: 'menuitem' | 'menuitemradio' | 'menuitemcheckbox' = 'menuitem';\n\n  /** Whether the menu item is disabled. */\n  @Input({ transform: booleanAttribute }) disabled: boolean = false;\n\n  private _document = inject(DOCUMENT);\n\n  /** Whether the menu item is highlighted. */\n  _highlighted: boolean = false;\n\n  /** Whether the menu item acts as a trigger for a sub-menu. */\n  _triggersSubmenu: boolean = false;\n\n  /** Emits whenever a this item is clicked when enabled. */\n  @Output() click: EventEmitter<Event> = new EventEmitter<Event>();\n\n  constructor(...args: unknown[]);\n  constructor() {\n    if (this._focusMonitor) {\n      // Start monitoring the element so it gets the appropriate focused classes. We want\n      // to show the focus style for menu items only when the focus was not caused by a\n      // mouse or touch interaction.\n      this._focusMonitor.monitor(this._elementRef, false);\n    }\n  }\n\n  /** Focuses the menu item. */\n  focus(origin: FocusOrigin = 'program', options?: FocusOptions): void {\n    if (this._focusMonitor) {\n      this._focusMonitor.focusVia(this._getHostElement(), origin, options);\n    } else {\n      this._getHostElement().focus(options);\n    }\n  }\n\n  ngOnDestroy() {\n    if (this._focusMonitor) {\n      this._focusMonitor.stopMonitoring(this._elementRef);\n    }\n  }\n\n  /** Used to set the `tabindex`. */\n  _getTabIndex(): string {\n    return this.disabled ? '-1' : '0';\n  }\n\n  /** Returns the host DOM element. */\n  _getHostElement(): HTMLElement {\n    return this._elementRef.nativeElement;\n  }\n\n  /** Prevents the default element actions if it is disabled. */\n  @HostListener('click', ['$event'])\n  _checkDisabled(event: TypeRef<Event>): void {\n    if (this.disabled) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n  /** Gets the label to be used when determining whether the option should be focused. */\n  getLabel(): string {\n    const element: HTMLElement = this._elementRef.nativeElement;\n    const textNodeType = this._document ? this._document.TEXT_NODE : 3;\n    let output = '';\n\n    if (element.childNodes) {\n      const length = element.childNodes.length;\n\n      // Go through all the top-level text nodes and extract their text.\n      // We skip anything that's not a text node to prevent the text from\n      // being thrown off by something like an icon.\n      for (let i = 0; i < length; i++) {\n        if (element.childNodes[i].nodeType === textNodeType) {\n          output += element.childNodes[i].textContent;\n        }\n      }\n    }\n\n    return output.trim();\n  }\n}\n","// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/// <reference types=\"@angular/localize/init\" />\n\nimport { AnimationEvent } from '@angular/animations';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { FocusKeyManager, FocusOrigin, _IdGenerator } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, END, ESCAPE, hasModifierKey, HOME, UP_ARROW } from '@angular/cdk/keycodes';\nimport { CdkPortal, CdkPortalOutlet } from '@angular/cdk/portal';\nimport { NgClass } from '@angular/common';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  inject,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { TypeRef } from '@sbb-esta/angular/core';\nimport { SbbIconModule } from '@sbb-esta/angular/icon';\nimport { Observable, Subject } from 'rxjs';\nimport { map, startWith, takeUntil } from 'rxjs/operators';\n\nimport type { SbbHeaderLean } from './header';\nimport { SbbHeaderMenuItem } from './header-menu-item';\nimport { SBB_HEADER } from './header-token';\n\n@Component({\n  selector: 'sbb-header-menu',\n  templateUrl: './header-menu.html',\n  styleUrls: ['./header-menu.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  exportAs: 'sbbHeaderMenu',\n  animations: [\n    trigger('open', [\n      state('closed', style({ transform: 'translateX(-100vw)' })),\n      state('open-menu', style({ transform: 'translateX(0)' })),\n      transition('closed <=> open-menu', animate('0.3s cubic-bezier(0.785, 0.135, 0.15, 0.86)')),\n    ]),\n  ],\n  host: {\n    class: 'sbb-header-menu',\n    '[id]': 'this.id',\n    '[@open]': 'this._animationState',\n    '[class.sbb-header-menus-collapsed]': 'this._header._menusCollapsed',\n  },\n  imports: [SbbIconModule, CdkPortal, CdkPortalOutlet, NgClass],\n})\nexport class SbbHeaderMenu implements AfterContentInit, OnDestroy {\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  _header: SbbHeaderLean = inject<TypeRef<SbbHeaderLean>>(SBB_HEADER);\n  _backButton: string = $localize`:Go back to the app chooser navigation@@sbbHeaderMenuBack:Back`;\n\n  /** Unique ID to be used by menu trigger's \"aria-owns\" property. */\n  id: string = inject(_IdGenerator).getId('sbb-header-menu-');\n\n  /** Event emitted when the menu is closed. */\n  @Output() readonly closed: EventEmitter<void | 'click' | 'keydown' | 'tab'> = new EventEmitter<\n    void | 'click' | 'keydown' | 'tab'\n  >();\n\n  /** Reference to the menu items. */\n  @ContentChildren(SbbHeaderMenuItem) _items: QueryList<SbbHeaderMenuItem>;\n\n  /** @docs-private */\n  @ViewChild(CdkPortal) _panelPortal: CdkPortal;\n  /** @docs-private */\n  @ViewChild(CdkPortalOutlet, { static: true }) _panelPortalOutlet: CdkPortalOutlet;\n\n  /** Whether the menu panel is open. */\n  get open(): boolean {\n    return this._open && !!this.showPanel;\n  }\n  set open(value: boolean) {\n    if (value !== this._open) {\n      this._open = value;\n      if (!value) {\n        this._animationState = 'closed';\n      } else if (!this._header._menusCollapsed) {\n        this._animationState = 'open-panel';\n      } else {\n        this._animationState = 'open-menu';\n      }\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n  private _open = false;\n\n  /**\n   * This method takes classes set on the host sbb-header-menu element and applies them on the\n   * menu template that displays in the overlay container.  Otherwise, it's difficult\n   * to style the containing menu from outside the component.\n   * @param classes list of class names\n   */\n  @Input('class')\n  set panelClass(classes: string) {\n    const previousPanelClass = this._previousPanelClass;\n\n    if (previousPanelClass && previousPanelClass.length) {\n      previousPanelClass.split(' ').forEach((className: string) => {\n        this._classList[className] = false;\n      });\n    }\n\n    this._previousPanelClass = classes;\n\n    if (classes && classes.length) {\n      classes.split(' ').forEach((className: string) => {\n        this._classList[className] = true;\n      });\n\n      this._elementRef.nativeElement.className = '';\n    }\n  }\n  private _previousPanelClass: string;\n\n  /** Whether the autocomplete panel should be visible, depending on option length. */\n  showPanel: boolean = false;\n  /** Manages active item in item list based on key events. */\n  _keyManager: FocusKeyManager<SbbHeaderMenuItem>;\n  /** Class list for the panel. */\n  _classList: { [key: string]: boolean } = {};\n  /** @docs-private */\n  _panel: CdkPortal | null = null;\n  /** @docs-private */\n  _animationState: 'closed' | 'open-panel' | 'open-menu' = 'closed';\n\n  /** Subscription to tab events on the menu panel */\n  private _destroyed = new Subject<void>();\n\n  constructor(...args: unknown[]);\n  constructor() {\n    this.closed.pipe(takeUntil(this._destroyed)).subscribe(() => {\n      if (this._animationState !== 'closed') {\n        this._animationState = 'closed';\n      }\n    });\n  }\n\n  ngAfterContentInit() {\n    (this._items.changes as Observable<SbbHeaderMenuItem[]>)\n      .pipe(\n        startWith(this._items.toArray()),\n        map((i) => !!i.length),\n        takeUntil(this._destroyed),\n      )\n      .subscribe((s) => (this.showPanel = s));\n    this._keyManager = new FocusKeyManager(this._items).withWrap().withTypeAhead();\n    this._keyManager.tabOut.subscribe(() => this.closed.emit('tab'));\n  }\n\n  ngOnDestroy() {\n    this._keyManager?.destroy();\n    this.closed.complete();\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  /**\n   * Focus the first item in the menu.\n   * @param origin Action from which the focus originated. Used to set the correct styling.\n   */\n  focusFirstItem(origin: FocusOrigin = 'program'): void {\n    const manager = this._keyManager;\n    manager.setFocusOrigin(origin).setFirstItemActive();\n\n    // If there's no active item at this point, it means that all the items are disabled.\n    // Move focus to the menu panel so keyboard events like Escape still work. Also this will\n    // give _some_ feedback to screen readers.\n    if (!manager.activeItem && this._items.length) {\n      let element = this._items.first._getHostElement().parentElement;\n\n      // Because the `sbb-header-menu` is at the DOM insertion point, not inside the overlay, we don't\n      // have a nice way of getting a hold of the menu panel. We can't use a `ViewChild` either\n      // because the panel is inside an `ng-template`. We work around it by starting from one of\n      // the items and walking up the DOM.\n      while (element) {\n        if (element.getAttribute('role') === 'menu') {\n          element.focus();\n          break;\n        } else {\n          element = element.parentElement;\n        }\n      }\n    }\n  }\n\n  /**\n   * Resets the active item in the menu. This is used when the menu is opened, allowing\n   * the user to start from the first option when pressing the down arrow.\n   */\n  resetActiveItem() {\n    this._keyManager.setActiveItem(-1);\n  }\n\n  @HostListener('@open.done', ['$event'])\n  _onAnimationDone(event: AnimationEvent) {\n    if (event.toState === 'closed' && event.fromState !== 'void') {\n      this.closed.emit();\n    }\n  }\n\n  @HostListener('keydown', ['$event'])\n  _handleMenuKeydown(event: TypeRef<KeyboardEvent>) {\n    if (event.keyCode === ESCAPE) {\n      this.open = false;\n    }\n  }\n\n  /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n  _handlePanelKeydown(event: KeyboardEvent) {\n    const keyCode = event.keyCode;\n    const manager = this._keyManager;\n\n    switch (keyCode) {\n      case ESCAPE:\n        if (!hasModifierKey(event)) {\n          event.preventDefault();\n          this.closed.emit('keydown');\n        }\n        break;\n      case HOME:\n      case END:\n        if (!hasModifierKey(event)) {\n          keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n          event.preventDefault();\n        }\n        break;\n      default:\n        if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {\n          manager.setFocusOrigin('keyboard');\n        } else if (!this._header._menusCollapsed) {\n          manager.onKeydown(event);\n        }\n    }\n  }\n}\n","<button type=\"button\" class=\"sbb-header-menu-back\" (click)=\"open = false\">\n  <sbb-icon svgIcon=\"chevron-small-left-small\"></sbb-icon>\n  <span>{{ _backButton }}</span>\n</button>\n\n<div class=\"sbb-header-menu-title\">\n  <ng-content></ng-content>\n</div>\n\n<div class=\"sbb-header-menu-panel-container\">\n  <ng-template cdkPortal cdkPortalOutlet>\n    <div\n      class=\"sbb-header-menu-panel sbb-panel sbb-panel-padded sbb-scrollbar\"\n      role=\"listbox\"\n      [id]=\"id\"\n      [ngClass]=\"_classList\"\n      (keydown)=\"_handlePanelKeydown($event)\"\n      (click)=\"closed.emit('click')\"\n      tabindex=\"-1\"\n      role=\"menu\"\n    >\n      <ng-content select=\"a, button, hr\"></ng-content>\n    </div>\n  </ng-template>\n</div>\n","import { ObserversModule } from '@angular/cdk/observers';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { SbbCommonModule } from '@sbb-esta/angular/core';\nimport { SbbIconModule } from '@sbb-esta/angular/icon';\n\nimport { SbbAppChooserSection } from './app-chooser-section';\nimport { SbbHeaderLean } from './header';\nimport { SbbHeaderEnvironment, SbbHeaderIconActions } from './header-directives';\nimport { SbbHeaderMenu } from './header-menu';\nimport { SbbHeaderMenuItem } from './header-menu-item';\nimport {\n  SbbHeaderMenuTrigger,\n  SBB_HEADER_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './header-menu-trigger';\n\n@NgModule({\n  imports: [\n    ObserversModule,\n    OverlayModule,\n    PortalModule,\n    SbbCommonModule,\n    SbbIconModule,\n    SbbHeaderLean,\n    SbbAppChooserSection,\n    SbbHeaderEnvironment,\n    SbbHeaderIconActions,\n    SbbHeaderMenuItem,\n    SbbHeaderMenuTrigger,\n    SbbHeaderMenu,\n  ],\n  exports: [\n    SbbHeaderLean,\n    SbbAppChooserSection,\n    SbbHeaderEnvironment,\n    SbbHeaderIconActions,\n    SbbHeaderMenuItem,\n    SbbHeaderMenuTrigger,\n    SbbHeaderMenu,\n  ],\n  providers: [SBB_HEADER_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class SbbHeaderLeanModule {}\n"],"names":["SBB_HEADER","InjectionToken","SbbAppChooserSection","_header","inject","label","constructor","_handleChildClick","event","target","tagName","opened","deps","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","host","class","template","Input","HostListener","sbbHeaderAnimations","menu","trigger","state","style","left","visibility","transition","animate","SBB_HEADER_MENU_SCROLL_STRATEGY","SBB_HEADER_MENU_SCROLL_STRATEGY_FACTORY","overlay","scrollStrategies","reposition","SBB_HEADER_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER","provide","Overlay","useFactory","passiveEventListenerOptions","normalizePassiveListenerOptions","passive","SbbHeaderMenuTrigger","_overlay","_element","ElementRef","_focusMonitor","FocusMonitor","_router","Router","optional","_openedBy","_menu","_menuCloseSubscription","unsubscribe","closed","asObservable","subscribe","_destroyMenu","restoreFocus","menuOpened","EventEmitter","menuClosed","_panelTarget","menuOpen","_menuOpen","_overlayRef","_closingActionsSubscription","Subscription","EMPTY","_destroyed","Subject","_scrollStrategy","_handleTouchStart","nativeElement","addEventListener","ngAfterContentInit","_checkMenu","ngOnDestroy","dispose","removeEventListener","next","complete","toggleMenu","closeMenu","openMenu","_menusCollapsed","_panelPortalOutlet","attachTemplatePortal","_panelPortal","overlayRef","_createOverlay","overlayConfig","getConfig","_setPosition","positionStrategy","hasBackdrop","attach","_menuClosingActions","_initMenu","removeProperty","open","focus","origin","options","focusVia","_handleMousedown","isFakeMousedownFromScreenReader","button","_handleClick","detach","_setIsMenuOpen","_restoreFocus","isOpen","emit","Error","config","_getOverlayConfig","create","keydownEvents","OverlayConfig","position","flexibleConnectedTo","withFlexibleDimensions","withGrowAfterOpen","withLockedPosition","withTransformOriginOn","backdropClass","scrollStrategy","minWidth","_getHostWidth","withPositions","originX","originY","overlayX","overlayY","getBoundingClientRect","width","backdrop","backdropClick","NEVER","detachments","dimensionChange","_headerMenusCollapsed","routeChange","events","pipe","filter","e","NavigationStart","itemClicks","_items","toArray","map","i","click","merge","isStandalone","selector","inputs","outputs","attributes","listeners","properties","classAttribute","viewQueries","propertyName","first","predicate","descendants","static","exportAs","ngImport","dependencies","kind","SbbIconModule","i1","SbbIcon","Default","imports","Output","ViewChild","args","breakpointMapping","mobile","Breakpoints","Mobile","tablet","Tablet","desktop","Desktop","desktopLarge","DesktopLarge","desktop2k","Desktop2k","desktop4k","Desktop4k","desktop5k","Desktop5k","SbbHeaderLean","_elementRef","_focusTrapFactory","ConfigurableFocusTrapFactory","_ngZone","NgZone","_breakpointObserver","BreakpointObserver","_changeDetectorRef","ChangeDetectorRef","_doc","DOCUMENT","_labelOpenMenu","$localize","_labelCloseMenu","subtitle","collapseBreakpoint","_opened","value","coerceBooleanProperty","_animationStarted","_animationEnd","_animationState","openedChange","_openedStream","o","openedStart","fromState","toState","indexOf","_closedStream","closedStart","_menuElement","_appChooserSections","_menuTriggers","_openedVia","_collapseBreakpoint","BehaviorSubject","_focusTrap","_elementFocusedBeforeMenuWasOpened","activeElement","_trapFocus","runOutsideAngular","fromEvent","keyCode","ESCAPE","hasModifierKey","takeUntil","run","distinctUntilChanged","x","y","switchMap","breakpoint","observe","r","matches","shareReplay","forEach","t","isCollapsed","Promise","resolve","then","classList","add","remove","ngOnChanges","changes","previousValue","currentValue","ngAfterViewInit","_updateFocusTrapState","destroy","_openOnKeydownTrigger","SPACE","ENTER","openedVia","_closeOnKeydownTrigger","_onBackdropClicked","markForCheck","take","_animationStartListener","_animationDoneListener","focusInitialElementWhenReady","hasMovedFocus","activeEl","contains","HTMLElement","blur","enabled","providers","useExisting","usesOnChanges","CdkPortalOutlet","CdkPortal","AsyncPipe","name","animations","ContentChildren","SbbHeaderEnvironment","_previousClass","contentObserver","ContentObserver","elementRef","text","textContent","replace","toLowerCase","classes","Directive","SbbHeaderIconActions","SbbHeaderMenuItem","role","disabled","_document","_highlighted","_triggersSubmenu","monitor","_getHostElement","stopMonitoring","_getTabIndex","_checkDisabled","preventDefault","stopPropagation","getLabel","element","textNodeType","TEXT_NODE","output","childNodes","length","nodeType","trim","ɵdir","ɵɵngDeclareDirective","booleanAttribute","transform","SbbHeaderMenu","_backButton","id","_IdGenerator","getId","_open","showPanel","panelClass","previousPanelClass","_previousPanelClass","split","className","_classList","_keyManager","_panel","startWith","s","FocusKeyManager","withWrap","withTypeAhead","tabOut","focusFirstItem","manager","setFocusOrigin","setFirstItemActive","activeItem","parentElement","getAttribute","resetActiveItem","setActiveItem","_onAnimationDone","_handleMenuKeydown","_handlePanelKeydown","HOME","END","setLastItemActive","UP_ARROW","DOWN_ARROW","onKeydown","NgClass","SbbHeaderLeanModule","NgModule","ɵmod","ɵɵngDeclareNgModule","ObserversModule","OverlayModule","PortalModule","SbbCommonModule","ɵinj","ɵɵngDeclareInjector","exports"],"mappings":"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"}