{"version":3,"file":"rxap-layout.mjs","sources":["../../../../../packages/angular/layout/src/lib/sidenav/sidenav-footer.directive.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav-header.directive.ts","../../../../../packages/angular/layout/src/lib/tokens.ts","../../../../../packages/angular/layout/src/lib/footer.service.ts","../../../../../packages/angular/layout/src/lib/header.service.ts","../../../../../packages/angular/layout/src/lib/layout.service.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item.ts","../../../../../packages/angular/layout/src/lib/navigation.service.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item/navigation-item.component.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item/navigation-item.component.html","../../../../../packages/angular/layout/src/lib/navigation/navigation.component.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation.component.html","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.html","../../../../../packages/angular/layout/src/lib/release-info/release-info.component.ts","../../../../../packages/angular/layout/src/lib/release-info/release-info.component.html","../../../../../packages/angular/layout/src/lib/navigation-progress-bar/navigation-progress-bar.component.ts","../../../../../packages/angular/layout/src/lib/navigation-progress-bar/navigation-progress-bar.component.html","../../../../../packages/angular/layout/src/lib/footer/footer.component.ts","../../../../../packages/angular/layout/src/lib/footer/footer.component.html","../../../../../packages/angular/layout/src/lib/header/header.component.ts","../../../../../packages/angular/layout/src/lib/header/header.component.html","../../../../../packages/angular/layout/src/lib/base-layout/base-layout.component.ts","../../../../../packages/angular/layout/src/lib/base-layout/base-layout.component.html","../../../../../packages/angular/layout/src/lib/minimal-layout/minimal-layout.component.ts","../../../../../packages/angular/layout/src/lib/minimal-layout/minimal-layout.component.html","../../../../../packages/angular/layout/src/lib/logo.service.ts","../../../../../packages/angular/layout/src/lib/layout/layout.component.ts","../../../../../packages/angular/layout/src/lib/layout/layout.component.html","../../../../../packages/angular/layout/src/lib/header/header.directive.ts","../../../../../packages/angular/layout/src/lib/footer/footer.directive.ts","../../../../../packages/angular/layout/src/lib/default-header/user-profile-icon/user-profile-icon.component.ts","../../../../../packages/angular/layout/src/lib/default-header/user-profile-icon/user-profile-icon.component.html","../../../../../packages/angular/layout/src/lib/default-header/sidenav-toggle-button/sidenav-toggle-button.component.ts","../../../../../packages/angular/layout/src/lib/default-header/sidenav-toggle-button/sidenav-toggle-button.component.html","../../../../../packages/angular/layout/src/lib/default-header/settings-button/settings-button.component.ts","../../../../../packages/angular/layout/src/lib/default-header/settings-button/settings-button.component.html","../../../../../packages/angular/layout/src/lib/external-apps.service.ts","../../../../../packages/angular/layout/src/lib/default-header/apps-button/apps-button.component.ts","../../../../../packages/angular/layout/src/lib/default-header/apps-button/apps-button.component.html","../../../../../packages/angular/layout/src/lib/default-header/default-header.service.ts","../../../../../packages/angular/layout/src/lib/default-header/default-header.component.ts","../../../../../packages/angular/layout/src/lib/default-header/default-header.component.html","../../../../../packages/angular/layout/src/lib/provide.ts","../../../../../packages/angular/layout/src/index.ts","../../../../../packages/angular/layout/src/rxap-layout.ts"],"sourcesContent":["import {\n  Directive,\n  Inject,\n  TemplateRef,\n} from '@angular/core';\n\n@Directive({\n  selector: '[rxapSidenavFooter]',\n  standalone: true,\n})\nexport class SidenavFooterDirective {\n  constructor(\n    @Inject(TemplateRef)\n    public readonly template: TemplateRef<void>,\n  ) {\n  }\n}\n","import {\n  Directive,\n  Inject,\n  TemplateRef,\n} from '@angular/core';\n\n@Directive({\n  selector: '[rxapSidenavHeader]',\n  standalone: true,\n})\nexport class SidenavHeaderDirective {\n  constructor(\n    @Inject(TemplateRef)\n    public readonly template: TemplateRef<void>,\n  ) {\n  }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { InjectionToken } from '@angular/core';\nimport {\n  LogoConfig,\n  NavigationConfig,\n} from '@rxap/config';\nimport { staticDataSource } from '@rxap/data-source';\nimport {\n  DataSource,\n  MethodWithParameters,\n} from '@rxap/pattern';\nimport { NavigationWithInserts } from './navigation/navigation-item';\nimport {\n  DefaultHeaderItemComponent,\n  ExternalApp,\n  ExtractUsernameFromProfileFn,\n  ReleaseInfoModule,\n  SettingsMenuItem,\n  SettingsMenuItemComponent,\n} from './types';\n\nexport const RXAP_NAVIGATION_CONFIG = new InjectionToken<NavigationWithInserts | (() => NavigationWithInserts)>(\n  'rxap/layout/navigation-config');\nexport const RXAP_NAVIGATION_CONFIG_INSERTS = new InjectionToken<Record<string, NavigationWithInserts>>(\n  'rxap/layout/navigation-config-inserts');\n\nexport const RXAP_FOOTER_COMPONENT = new InjectionToken<ComponentType<unknown>>('rxap/layout/footer-component');\nexport const RXAP_HEADER_COMPONENT = new InjectionToken<ComponentType<unknown>>('rxap/layout/header-component');\nexport const RXAP_LOGO_CONFIG = new InjectionToken<LogoConfig>('rxap/layout/logo-config');\nexport const RXAP_LAYOUT_APPS_GRID = new InjectionToken('rxap/layout/apps-grid');\n\nexport const RXAP_EXTERNAL_APP_FILTER = new InjectionToken<MethodWithParameters<ExternalApp[], ExternalApp[]>>('rxap/layout/app-config-filter');\nexport const EXTRACT_USERNAME_FROM_PROFILE = new InjectionToken<ExtractUsernameFromProfileFn>(\n  'extract-username-from-profile',\n  {\n    providedIn: 'root',\n    factory: () => (profile: any) => (\n                                       profile ? profile.displayName || profile.username || profile.email || profile.name : null\n                                     ) || null,\n  },\n);\n\nexport const RXAP_USER_PROFILE_DATA_SOURCE = new InjectionToken<DataSource>('rxap/layout/user-profile-data-source', {\n  providedIn: 'root',\n  factory: () => staticDataSource(null),\n});\n\nexport const RXAP_EXTERNAL_APP = new InjectionToken<ExternalApp>('rxap/layout/external-app');\n\nexport const RXAP_RELEASE_INFO_MODULE = new InjectionToken<ReleaseInfoModule>('rxap/layout/release-info-module');\n\nexport const RXAP_SETTINGS_MENU_ITEM_COMPONENT = new InjectionToken<Array<SettingsMenuItemComponent | (() => Promise<SettingsMenuItemComponent>)>>('rxap/layout/settings-menu-item-component');\n\nexport const RXAP_DEFAULT_HEADER_ITEM_COMPONENT = new InjectionToken<Array<DefaultHeaderItemComponent | (() => Promise<DefaultHeaderItemComponent>)>>('rxap/layout/default-header-item-component');\n\nexport const RXAP_SETTINGS_MENU_ITEM = new InjectionToken<SettingsMenuItem>('rxap/layout/settings-menu-item');\n\nexport const RXAP_NAVIGATION_LAYOUT_CONFIG_DEFAULTS = new InjectionToken<Omit<NavigationConfig, 'apps'>>('rxap/layout/navigation-config/defaults');\n\nexport const RXAP_LOGO_CONFIG_DEFAULTS = new InjectionToken<LogoConfig>('rxap/layout/logo-config/defaults');\n","import {\n  ComponentPortal,\n  Portal,\n} from '@angular/cdk/portal';\nimport {\n  computed,\n  inject,\n  Injectable,\n  isDevMode,\n  signal,\n} from '@angular/core';\nimport { RXAP_FOOTER_COMPONENT } from './tokens';\nimport { coerceArray } from '@rxap/utilities';\n\n@Injectable()\nexport class FooterService {\n\n  private readonly components = coerceArray(inject(RXAP_FOOTER_COMPONENT, { optional: true }));\n\n  /**\n   * Represents an array of `Portal` objects with unknown type.\n   */\n  public readonly portals = signal<Array<Portal<unknown>>>(this.components.map(component => new ComponentPortal(component)));\n\n\n  /**\n   * Computes the count of portals.\n   *\n   * @returns {number} The count of portals.\n   */\n  public readonly portalCount = computed(() => this.portals().length);\n\n  /**\n   * Adds a portal to the list of portals.\n   *\n   * @param {Portal<unknown>} portal - The portal to be added.\n   *\n   * @return {void}\n   */\n  public pushPortal(portal: Portal<unknown>) {\n    if (!this.portals().includes(portal)) {\n      this.portals.update(portals => [ ...portals, portal ]);\n    } else {\n      if (isDevMode()) {\n        console.warn('Can not add the same portal multiple times');\n      }\n    }\n  }\n\n  /**\n   * Removes a portal from the list of portals.\n   *\n   * @param {Portal<unknown>} portal - The portal to be removed.\n   * @return {void}\n   */\n  public removePortal(portal: Portal<unknown>) {\n    const index = this.portals().indexOf(portal);\n    if (index !== -1) {\n      this.portals.update(portals => {\n        portals.splice(index, 1);\n        return portals.slice();\n      });\n    }\n  }\n\n}\n","import {\n  ComponentPortal,\n  Portal,\n} from '@angular/cdk/portal';\nimport {\n  computed,\n  inject,\n  Injectable,\n  isDevMode,\n  signal,\n} from '@angular/core';\nimport { RXAP_HEADER_COMPONENT } from './tokens';\nimport { coerceArray } from '@rxap/utilities';\n\n@Injectable()\nexport class HeaderService {\n\n  private readonly components = coerceArray(inject(RXAP_HEADER_COMPONENT, { optional: true }));\n\n  /**\n   * Represents an array of `Portal` objects with unknown type.\n   *\n   * @typedef {Array<Portal<unknown>>} SignalPortals\n   */\n  public readonly portals = signal<Array<Portal<unknown>>>(this.components.map(component => new ComponentPortal(component)));\n\n\n  /**\n   * Computes the count of portals.\n   *\n   * @returns {number} The count of portals.\n   */\n  public readonly portalCount = computed(() => this.portals().length);\n\n\n  /**\n   * Adds a portal to the list of portals.\n   *\n   * @param {Portal<unknown>} portal - The portal to be added.\n   *\n   * @return {void}\n   */\n  public pushPortal(portal: Portal<unknown>) {\n    if (!this.portals().includes(portal)) {\n      this.portals.update(portals => [ ...portals, portal ]);\n    } else {\n      if (isDevMode()) {\n        console.warn('Can not add the same portal multiple times');\n      }\n    }\n  }\n\n  /**\n   * Removes a portal from the list of portals.\n   *\n   * @param {Portal<unknown>} portal - The portal to be removed.\n   * @return {void}\n   */\n  public removePortal(portal: Portal<unknown>) {\n    const index = this.portals().indexOf(portal);\n    if (index !== -1) {\n      this.portals.update(portals => {\n        portals.splice(index, 1);\n        return portals.slice();\n      });\n    }\n  }\n\n}\n","import { MediaMatcher } from '@angular/cdk/layout';\nimport {\n  computed,\n  effect,\n  Inject,\n  inject,\n  Injectable,\n  isDevMode,\n  Optional,\n  signal,\n  Signal,\n  WritableSignal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatDrawerMode } from '@angular/material/sidenav';\nimport {\n  ConfigService,\n  NavigationConfig,\n} from '@rxap/config';\nimport { ObserveCurrentThemeDensity } from '@rxap/ngx-theme';\nimport { Observable } from 'rxjs';\nimport { FooterService } from './footer.service';\nimport { HeaderService } from './header.service';\nimport { RXAP_NAVIGATION_LAYOUT_CONFIG_DEFAULTS } from './tokens';\n\n@Injectable()\nexport class LayoutService {\n\n  public readonly opened: WritableSignal<boolean>;\n  public readonly mode: WritableSignal<MatDrawerMode>;\n  public readonly pinned: WritableSignal<boolean>;\n  public readonly collapsable: WritableSignal<boolean>;\n  public readonly fixedBottomGap: Signal<number>;\n  public readonly fixedTopGap: Signal<number>;\n  public readonly currentThemeDensity = toSignal(ObserveCurrentThemeDensity());\n  public readonly isMobile: Signal<boolean>;\n  public readonly fixedInViewport: WritableSignal<boolean>;\n  public readonly collapsed: Signal<boolean>;\n\n  private readonly footerService = inject(FooterService);\n  private readonly headerService = inject(HeaderService);\n  private readonly config = inject(ConfigService);\n  private readonly mediaMatcher = inject(MediaMatcher);\n\n  constructor(\n    @Inject(RXAP_NAVIGATION_LAYOUT_CONFIG_DEFAULTS)\n    @Optional()\n    navigationConfigDefaults: Omit<NavigationConfig, 'apps'> | null = null,\n  ) {\n    const mobileQuery = this.mediaMatcher.matchMedia(navigationConfigDefaults?.mobileQuery ?? '(max-width: 959px)');\n    this.isMobile = toSignal(new Observable<boolean>(subscriber => {\n      mobileQuery.addEventListener('change', (event) => {\n        subscriber.next(event.matches);\n      });\n    }), { initialValue: mobileQuery.matches });\n\n    const initialCollapsable = this.config.get('navigation.collapsable', navigationConfigDefaults?.collapsable ?? true);\n    const collapsable = initialCollapsable && !this.isMobile();\n    const pinned = this.config.get('navigation.pinned', navigationConfigDefaults?.pinned ?? false);\n    const mode = this.config.get('navigation.mode', navigationConfigDefaults?.mode ?? (pinned || !collapsable ? 'side' : 'over'));\n    const opened = this.config.get('navigation.opened', (navigationConfigDefaults?.opened ?? (!collapsable || pinned)) && !this.isMobile());\n    const fixedInViewport = this.config.get('navigation.fixedInViewport', navigationConfigDefaults?.fixedInViewport ?? true);\n\n    if (isDevMode()) {\n      console.log({\n        initialCollapsable,\n        collapsable,\n        pinned,\n        mode,\n        opened,\n        fixedInViewport,\n      });\n    }\n\n    this.opened = signal(opened);\n    this.mode = signal(mode);\n    this.pinned = signal(pinned);\n    this.collapsable = signal(collapsable);\n    this.fixedInViewport = signal(fixedInViewport);\n    this.collapsed = computed(() => this.collapsable() && !this.opened() && !this.pinned());\n\n    this.fixedBottomGap = computed(() => {\n      const footerPortalCount = this.footerService.portalCount();\n      const currentThemeDensity = this.currentThemeDensity() ?? 0;\n      return footerPortalCount * (currentThemeDensity * 4 + 64);\n    });\n\n    this.fixedTopGap = computed(() => {\n      const headerPortalCount = this.headerService.portalCount();\n      const currentThemeDensity = this.currentThemeDensity() ?? 0;\n      return headerPortalCount * (currentThemeDensity * 4 + 64);\n    });\n\n    if (initialCollapsable) {\n      effect(() => {\n        const isMobile = this.isMobile();\n        this.collapsable.set(!isMobile);\n        if (!isMobile && !this.pinned()) {\n          this.opened.set(false);\n        }\n      });\n    }\n    effect(() => {\n      if (this.pinned()) {\n        this.mode.set('side');\n        this.opened.set(true);\n      } else {\n        this.mode.set('over');\n        this.opened.set(false);\n      }\n    });\n  }\n\n  public toggleOpened() {\n    this.opened.update(opened => !opened);\n  }\n\n  public togglePinned() {\n    this.pinned.update(pinned => !pinned);\n  }\n\n  openSidenav() {\n    this.opened.set(true);\n  }\n\n  closeSidenav() {\n    this.opened.set(false);\n  }\n}\n","import { IconConfig } from '@rxap/utilities';\nimport {\n  AbstractType,\n  InjectionToken,\n  Type,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport type Navigation = Array<NavigationItem | NavigationDividerItem>;\n\nexport type NavigationWithInserts = Array<\n  | NavigationItem<NavigationWithInserts>\n  | NavigationDividerItem\n  | NavigationInsertItem\n>;\n\nexport interface NavigationDividerItem {\n  divider: boolean;\n  title?: string;\n}\n\nexport function IsNavigationDividerItem(\n  item: any,\n): item is NavigationDividerItem {\n  return !!item && !!item['divider'];\n}\n\nexport interface NavigationInsertItem {\n  insert: string;\n}\n\nexport function IsNavigationInsertItem(\n  item: any,\n): item is NavigationInsertItem {\n  return !!item && !!item['insert'];\n}\n\nexport interface NavigationStatus {\n  isVisible(\n    navigationItem: NavigationItem,\n  ): Observable<boolean> | Promise<boolean> | boolean;\n}\n\nexport interface NavigationItem<Children = Navigation> extends Record<string, unknown> {\n  routerLink: string[] | string;\n  label: string;\n  children?: Children;\n  icon?: IconConfig;\n  status?: Array<\n    | Type<NavigationStatus>\n    | InjectionToken<NavigationStatus>\n    | AbstractType<NavigationStatus>\n  >;\n}\n\nexport function IsNavigationItem(item: any): item is NavigationItem {\n  return (\n    !!item && !!item['routerLink'] && !!item['label']\n  );\n}\n","import {\n  inject,\n  Inject,\n  Injectable,\n  Injector,\n  INJECTOR,\n  Optional,\n} from '@angular/core';\nimport {\n  combineLatest,\n  from,\n  Observable,\n  of,\n  ReplaySubject,\n} from 'rxjs';\nimport {\n  catchError,\n  map,\n  switchMap,\n} from 'rxjs/operators';\nimport {\n  IsNavigationDividerItem,\n  IsNavigationInsertItem,\n  IsNavigationItem,\n  Navigation,\n  NavigationDividerItem,\n  NavigationItem,\n  NavigationWithInserts,\n} from './navigation/navigation-item';\nimport {\n  RXAP_NAVIGATION_CONFIG,\n  RXAP_NAVIGATION_CONFIG_INSERTS,\n} from './tokens';\n\n@Injectable()\nexport class NavigationService {\n  public readonly config$: Observable<Navigation>;\n\n  private inserts = new Map<string, NavigationWithInserts>();\n\n  private readonly navigation: NavigationWithInserts;\n\n  private readonly navigation$ = new ReplaySubject<Navigation>(1);\n\n  private readonly injector: Injector = inject(INJECTOR);\n\n  constructor(\n    @Inject(RXAP_NAVIGATION_CONFIG)\n      navigation: any,\n    @Optional()\n    @Inject(RXAP_NAVIGATION_CONFIG_INSERTS)\n      inserts: any | null = null,\n  ) {\n    if (typeof navigation === 'function') {\n      this.navigation = navigation();\n    } else {\n      this.navigation = navigation;\n    }\n    if (inserts) {\n      Object.entries(inserts).forEach(([ id, insert ]: [ string, any ]) =>\n        this.insert(id, insert, false),\n      );\n    }\n    this.updateNavigation();\n    this.config$ = this.navigation$.pipe(\n      switchMap((navigationWithoutStatusCheck) =>\n        this.checkNavigationStatusProviders(navigationWithoutStatusCheck),\n      ),\n    );\n  }\n\n  /**\n   * @deprecated use add instead\n   * @param id\n   * @param value\n   * @param update\n   */\n  public insert(\n    id: string,\n    value: NavigationWithInserts,\n    update = true,\n  ): void {\n    this.add(id, value, update);\n  }\n\n  public add(\n    id: string,\n    value: NavigationWithInserts,\n    update = true,\n  ): void {\n    this.inserts.set(id, value);\n    if (update) {\n      this.updateNavigation();\n    }\n  }\n\n  public has(id: string): boolean {\n    return this.inserts.has(id);\n  }\n\n  public get(id: string): NavigationWithInserts | undefined {\n    return this.inserts.get(id);\n  }\n\n  public remove(id: string, update = true): void {\n    this.inserts.delete(id);\n    if (update) {\n      this.updateNavigation();\n    }\n  }\n\n  public updateNavigation(): void {\n    this.navigation$.next(this.replaceInserts(this.navigation));\n  }\n\n  /**\n   * @internal\n   * @param navigationItem\n   */\n  public checkNavigationItemStatusProviders(\n    navigationItem: NavigationItem | NavigationDividerItem,\n  ): Observable<NavigationItem | NavigationDividerItem | null> {\n    if (IsNavigationDividerItem(navigationItem)) {\n      return of(navigationItem);\n    }\n    if (!navigationItem.status) {\n      if (!navigationItem.children?.length) {\n        return of(navigationItem);\n      }\n      return this.checkNavigationStatusProviders(navigationItem.children).pipe(\n        map((children) => ({\n          ...navigationItem,\n          children,\n        })),\n      );\n    }\n    const isVisibleArray$: Array<Observable<boolean>> = navigationItem\n      .status\n      .map((statusToken) => this.injector.get(\n        statusToken))\n      .map((status) => {\n        const isVisible = status.isVisible(\n          navigationItem);\n        if (typeof isVisible === 'boolean') {\n          return of(isVisible);\n        } else {\n          return from(isVisible);\n        }\n      })\n      .map(isVisible$ => isVisible$.pipe(catchError(e => {\n        console.error(`isVisible method failed: ${ e.message }`);\n        return of(false);\n      })));\n    // TODO : dont wait for all status services to complete, but cancel waiting if one returns false\n    return combineLatest(isVisibleArray$).pipe(\n      map((isVisibleArray) =>\n        isVisibleArray.reduce((acc, isVisible) => acc && isVisible, true),\n      ),\n      map((isVisible) => (isVisible ? navigationItem : null)),\n      switchMap((navigationItemOrNull) => {\n        if (navigationItemOrNull) {\n          if (navigationItemOrNull.children?.length) {\n            return this.checkNavigationStatusProviders(\n              navigationItemOrNull.children,\n            ).pipe(\n              map((children) => ({\n                ...navigationItemOrNull,\n                children,\n              })),\n            );\n          }\n          return of(navigationItemOrNull);\n        }\n        return of(null);\n      }),\n    );\n  }\n\n  /**\n   * @internal\n   * @param navigationItem\n   */\n  public checkNavigationStatusProviders(\n    navigation: Navigation,\n  ): Observable<Navigation> {\n    return combineLatest(\n      navigation.map((navigationItem) =>\n        this.checkNavigationItemStatusProviders(navigationItem),\n      ),\n    ).pipe(\n      map((navigationWithNullItems) => {\n        const cleanNavigation: Navigation = [];\n\n        for (const navigationItem of navigationWithNullItems) {\n          if (navigationItem !== null) {\n            cleanNavigation.push(navigationItem);\n          }\n        }\n\n        return cleanNavigation;\n      }),\n    );\n  }\n\n  private replaceInserts(\n    navigationWithInserts: NavigationWithInserts,\n  ): Navigation {\n    const navigation: Navigation = [];\n\n    for (const navigationItem of navigationWithInserts) {\n      if (IsNavigationInsertItem(navigationItem)) {\n        if (this.inserts.has(navigationItem.insert)) {\n          navigation.push(\n            ...this.replaceInserts(this.inserts.get(navigationItem.insert)!),\n          );\n        }\n      } else if (IsNavigationItem(navigationItem)) {\n        navigation.push({\n          ...navigationItem,\n          children: this.replaceInserts(navigationItem.children ?? []),\n        });\n      } else if (IsNavigationDividerItem(navigationItem)) {\n        navigation.push(navigationItem);\n      }\n    }\n\n    return navigation;\n  }\n}\n","import {\n  animate,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\nimport {\n  NgClass,\n  NgIf,\n} from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  ElementRef,\n  forwardRef,\n  inject,\n  input,\n  OnChanges,\n  OnDestroy,\n  Renderer2,\n  signal,\n  SimpleChanges,\n  viewChild,\n  ViewEncapsulation, AfterViewInit,\n} from '@angular/core';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n  NavigationEnd,\n  Router,\n  RouterLink,\n  RouterLinkActive,\n} from '@angular/router';\nimport { IconDirective } from '@rxap/material-directives/icon';\nimport { coerceArray } from '@rxap/utilities';\nimport {\n  debounceTime,\n  Subscription,\n} from 'rxjs';\nimport {\n  filter,\n  startWith,\n  tap,\n} from 'rxjs/operators';\nimport { LayoutService } from '../../layout.service';\nimport {\n  Navigation,\n  NavigationDividerItem,\n  NavigationItem,\n} from '../navigation-item';\nimport { NavigationComponent } from '../navigation.component';\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'li[rxap-navigation-item]',\n    templateUrl: './navigation-item.component.html',\n    styleUrls: ['./navigation-item.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    animations: [\n        trigger('sub-nav', [\n            transition(':enter', [\n                style({\n                    display: 'block',\n                    height: '0',\n                    overflow: 'hidden',\n                }),\n                animate(150, style({ height: '*' })),\n            ]),\n            transition(':leave', [\n                style({ overflow: 'hidden' }),\n                animate(300, style({ height: '0' })),\n                style({ display: 'none' }),\n            ]),\n        ]),\n    ],\n    imports: [\n        RouterLinkActive,\n        RouterLink,\n        NgIf,\n        MatRippleModule,\n        MatIconModule,\n        IconDirective,\n        MatDividerModule,\n        forwardRef(() => NavigationComponent),\n        NgClass,\n    ]\n})\nexport class NavigationItemComponent\n  implements OnChanges, OnDestroy, AfterViewInit {\n\n  public readonly level = input(0);\n\n  public children: Navigation | null = null;\n\n  public readonly item = input.required<NavigationItem>();\n  public readonly active = signal(false);\n\n  public readonly itemClasses = computed(() => {\n    let classes = `level-${ this.level() * 4 }`;\n    if (this.collapsed()) {\n      classes += ' invisible';\n    }\n    return classes;\n  });\n\n  protected readonly layoutService = inject(LayoutService);\n\n  public readonly collapsed = computed(() => this.layoutService.collapsed());\n\n  protected readonly _subscription = new Subscription();\n\n  protected readonly router = inject(Router);\n  protected readonly elementRef = inject(ElementRef);\n  protected readonly renderer = inject(Renderer2);\n\n  onClick() {\n    if (this.layoutService.isMobile() || this.layoutService.collapsed()) {\n      this.layoutService.opened.set(false);\n    }\n  }\n\n  public ngOnChanges(changes: SimpleChanges) {\n    if (changes['item']) {\n      const item: NavigationItem = changes['item'].currentValue;\n      this.children =\n        item.children && item.children.length ? item.children : null;\n    }\n  }\n\n  public ngAfterViewInit() {\n    this._subscription.add(\n      this.router.events\n        .pipe(\n          filter((event) => event instanceof NavigationEnd),\n          debounceTime(100),\n          startWith(true),\n          tap(() => {\n            let isActive = true;\n            const urlParts = this.router.url.split('/');\n            if (urlParts[0] === '') {\n              urlParts[0] = '/';\n            }\n            const routerLink = coerceArray(this.item().routerLink).map(fragment => fragment === '/' ? ['/'] : fragment.split('/')).flat();\n            if (routerLink[0] === '') {\n              routerLink[0] = '/';\n            }\n            for (let i = 0; i < routerLink.length; i++) {\n              if (urlParts[i] !== routerLink[i]) {\n                isActive = false;\n                break;\n              }\n            }\n            this.active.set(isActive);\n            if (isActive) {\n              this.renderer.addClass(this.elementRef.nativeElement, 'active');\n            } else {\n              this.renderer.removeClass(this.elementRef.nativeElement, 'active');\n            }\n          }),\n        )\n        .subscribe(),\n    );\n  }\n\n  public ngOnDestroy() {\n    this._subscription?.unsubscribe();\n  }\n\n  // region type save item property\n\n  // required to check the type of the item property in the ngFor loop\n\n  public isNavigationDividerItem(\n    item: NavigationItem | NavigationDividerItem,\n  ): item is NavigationDividerItem {\n    return (item as any)['divider'];\n  }\n\n  public isNavigationItem(\n    item: NavigationItem | NavigationDividerItem,\n  ): item is NavigationItem {\n    return !this.isNavigationDividerItem(item);\n  }\n\n  public asNavigationItem(\n    item: NavigationItem | NavigationDividerItem,\n  ): NavigationItem {\n    if (!this.isNavigationItem(item)) {\n      throw new Error('The item is not a NavigationItem');\n    }\n    return item;\n  }\n\n  // endregion\n}\n","<div [ngClass]=\"{\n     'border-l-4 text-accent-400 border-accent-600': active(),\n     }\">\n  <a [routerLink]=\"item().routerLink\"\n     class=\"h-12 pl-4 pr-5 flex flex-row justify-between items-center gap-x-4 text-black\"\n     matRipple\n     routerLinkActive\n     (click)=\"onClick()\"\n  >\n    <span\n      [ngClass]=\"itemClasses()\"\n      class=\"grow whitespace-nowrap\"\n    >\n      {{ item().label }}\n    </span>\n    @if (item().icon; as icon) {\n      <mat-icon [rxapIcon]=\"icon\"></mat-icon>\n    }\n  </a>\n\n  @if (item().children?.length && active()) {\n    <mat-divider></mat-divider>\n\n    <ul [@sub-nav]\n        [items]=\"children ?? []\"\n        [level]=\"level() + 1\"\n        rxap-navigation\n    >\n    </ul>\n\n    <mat-divider></mat-divider>\n  }\n</div>\n","import {\n  AsyncPipe,\n  NgFor,\n  NgIf,\n} from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  forwardRef,\n  inject,\n  INJECTOR,\n  input,\n  OnInit,\n  runInInjectionContext,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { LayoutService } from '../layout.service';\nimport { NavigationService } from '../navigation.service';\nimport {\n  Navigation,\n  NavigationDividerItem,\n  NavigationItem,\n} from './navigation-item';\nimport { NavigationItemComponent } from './navigation-item/navigation-item.component';\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'ul[rxap-navigation]',\n    templateUrl: './navigation.component.html',\n    styleUrls: ['./navigation.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n\n    host: {\n        class: 'list-none dark:text-neutral-400 text-neutral-700',\n    },\n    imports: [\n        NgFor,\n        NgIf,\n        MatDividerModule,\n        forwardRef(() => NavigationItemComponent),\n        AsyncPipe,\n    ]\n})\nexport class NavigationComponent implements OnInit {\n\n  public items = input<Navigation>();\n\n  public level = input(0);\n\n  protected readonly navigationService = inject(NavigationService);\n\n  protected readonly layoutService = inject(LayoutService);\n\n  public readonly collapsed = computed(() => this.layoutService.collapsed());\n\n  public navigationItems = computed(() => this.items() ?? []);\n\n  public readonly root = input(false);\n\n  protected readonly injector = inject(INJECTOR);\n\n  public ngOnInit(): void {\n    if (this.root()) {\n      runInInjectionContext(this.injector, () => {\n        this.navigationItems = toSignal(this.navigationService.config$, { initialValue: [] });\n      });\n    }\n  }\n  // region type save item property\n\n  // required to check the type of the item property in the ngFor loop\n\n  public isNavigationDividerItem(\n    item: NavigationItem | NavigationDividerItem,\n  ): item is NavigationDividerItem {\n    return (item as any)['divider'];\n  }\n\n  public isNavigationItem(\n    item: NavigationItem | NavigationDividerItem,\n  ): item is NavigationItem {\n    return !this.isNavigationDividerItem(item);\n  }\n\n  public asNavigationItem(\n    item: NavigationItem | NavigationDividerItem,\n  ): NavigationItem {\n    if (!this.isNavigationItem(item)) {\n      throw new Error('The item is not a NavigationItem');\n    }\n    return item;\n  }\n\n  // endregion\n}\n","@for (item of navigationItems(); track item) {\n\n  @if (isNavigationDividerItem(item)) {\n    <mat-divider></mat-divider>\n    <div *ngIf=\"!collapsed() && item.title\" class=\"pl-5 h-6\">\n      {{item.title}}\n    </div>\n  } @else if (isNavigationItem(item)) {\n    <li [item]=\"asNavigationItem(item)\"\n        [level]=\"level()\"\n        rxap-navigation-item>\n    </li>\n  }\n\n}\n","import {\n  NgClass,\n  NgIf,\n  NgStyle,\n  NgTemplateOutlet,\n} from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  contentChild,\n  inject,\n  Signal,\n  viewChild,\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatIcon } from '@angular/material/icon';\nimport {\n  MatDrawerMode,\n  MatSidenav,\n  MatSidenavContainer,\n  MatSidenavContent,\n} from '@angular/material/sidenav';\nimport { LayoutService } from '../layout.service';\nimport { NavigationComponent } from '../navigation/navigation.component';\nimport { SidenavFooterDirective } from './sidenav-footer.directive';\nimport { SidenavHeaderDirective } from './sidenav-header.directive';\n\n@Component({\n  selector: 'rxap-sidenav',\n  templateUrl: './sidenav.component.html',\n  styleUrls: ['./sidenav.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    MatIcon,\n    MatIconButton,\n    MatSidenav,\n    MatSidenavContainer,\n    MatSidenavContent,\n    NavigationComponent,\n    NgIf,\n    NgClass,\n    NgStyle,\n    MatDivider,\n    NgTemplateOutlet,\n  ],\n})\nexport class SidenavComponent {\n\n  protected readonly layoutService = inject(LayoutService);\n\n  protected readonly sidenav = viewChild(MatSidenav);\n\n  public readonly sidenavMode: Signal<MatDrawerMode> = computed(() => this.layoutService.mode());\n  public readonly fixedBottomGap: Signal<number> = computed(() => this.layoutService.fixedBottomGap());\n  public readonly fixedTopGap: Signal<number> = computed(() => this.layoutService.fixedTopGap());\n  public readonly fixedInViewport: Signal<boolean> = computed(() => this.layoutService.fixedInViewport());\n  public readonly pinned: Signal<boolean> = computed(() => this.layoutService.pinned());\n  public readonly collapsed: Signal<boolean> = computed(() => this.layoutService.collapsed());\n  public readonly collapsable: Signal<boolean> = computed(() => this.layoutService.collapsable());\n  public readonly opened: Signal<boolean> = computed(() => this.layoutService.opened());\n  public readonly sidenavFooterDirective = contentChild(SidenavFooterDirective);\n  public readonly sidenavHeaderDirective = contentChild(SidenavHeaderDirective);\n\n  togglePinned() {\n    this.layoutService.togglePinned();\n  }\n\n  /**\n   * To ensure the open state is in sync with the component. If the sidenav is closed, e.g. clicking outside the sidenav,\n   * it is required to manually update the state in the LayoutService.\n   * @param opened\n   */\n  onOpenedChanged(opened: boolean) {\n    if (!opened) {\n      this.layoutService.closeSidenav();\n    }\n  }\n\n  async openSidenav() {\n    await this.sidenav()?.open();\n    this.layoutService.openSidenav();\n  }\n\n  async closeSidenav() {\n    await this.sidenav()?.close();\n    this.layoutService.closeSidenav();\n  }\n\n}\n","<mat-sidenav-container [ngStyle]=\"{\n    'padding-top.px': fixedTopGap(),\n    'padding-bottom.px': fixedBottomGap(),\n  }\" class=\"h-full\">\n  <mat-sidenav\n    [fixedBottomGap]=\"fixedBottomGap()\"\n    [fixedInViewport]=\"fixedInViewport()\"\n    [fixedTopGap]=\"fixedTopGap()\"\n    [mode]=\"sidenavMode()\"\n    [ngClass]=\"{ collapsable: collapsable() }\"\n    [opened]=\"opened()\"\n    (openedChange)=\"onOpenedChanged($event)\"\n  >\n    <div (mouseleave)=\"collapsable() && !pinned() && closeSidenav()\"\n         class=\"h-full py-2 flex flex-col items-center gap-y-5 justify-items-stretch\">\n\n      <div (click)=\"togglePinned()\" *ngIf=\"collapsable()\"\n           class=\"pl-2 self-stretch grow-0 flex flex-row justify-between items-center\">\n        <span class=\"text-lg\" i18n>Navigation</span>\n        <div class=\"flex flex-row items-center justify-center\" style=\"width: 64px\">\n          <button mat-icon-button>\n            <mat-icon *ngIf=\"!pinned()\">radio_button_unchecked</mat-icon>\n            <mat-icon *ngIf=\"pinned()\">radio_button_checked</mat-icon>\n          </button>\n        </div>\n      </div>\n\n      @if (sidenavHeaderDirective()?.template; as template) {\n        <div [ngClass]=\"{ hidden: collapsed() }\" class=\"header grow-0\">\n          <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n        </div>\n        <mat-divider [ngClass]=\"{ hidden: collapsed() }\" class=\"grow-0\"></mat-divider>\n      }\n\n      <ul\n        (mouseenter)=\"collapsable() && !pinned() && openSidenav()\"\n        class=\"grow self-stretch\"\n        [root]=\"true\"\n        rxap-navigation\n      >\n      </ul>\n\n      @if (sidenavFooterDirective()?.template; as template) {\n        <mat-divider [ngClass]=\"{ hidden: collapsed() }\" class=\"grow-0\"></mat-divider>\n        <div [ngClass]=\"{ hidden: collapsed() }\" class=\"footer grow-0\">\n          <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n        </div>\n      }\n    </div>\n  </mat-sidenav>\n  <mat-sidenav-content [ngClass]=\"{ 'ml-16': collapsable() }\" class=\"p-4\">\n    <ng-content></ng-content>\n  </mat-sidenav-content>\n</mat-sidenav-container>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  inject,\n} from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport {\n  DetermineReleaseName,\n  EnvironmentComponent,\n  RXAP_ENVIRONMENT,\n} from '@rxap/environment';\nimport { RXAP_RELEASE_INFO_MODULE } from '../tokens';\nimport { coerceArray } from '@rxap/utilities';\n\n@Component({\n    selector: 'rxap-release-info',\n    imports: [\n        MatButton,\n    ],\n    templateUrl: './release-info.component.html',\n    styleUrl: './release-info.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ReleaseInfoComponent {\n\n  public readonly modules = coerceArray(inject(RXAP_RELEASE_INFO_MODULE, { optional: true }));\n  public readonly release = DetermineReleaseName(inject(RXAP_ENVIRONMENT));\n\n  protected readonly dialog = inject(MatDialog);\n\n  openEnvironmentInfo() {\n    this.dialog.open(EnvironmentComponent, {\n      closeOnNavigation: true,\n    });\n  }\n\n}\n","<div class=\"flex flex-col gap-2 w-full justify-center\">\n  <button (click)=\"openEnvironmentInfo()\" mat-button>{{ release }}</button>\n  @if (modules.length) {\n    <table class=\"table-auto border-separate border-spacing-2 bg-white dark:bg-slate-800 text-sm shadow-sm\">\n      <thead class=\"bg-slate-50 dark:bg-slate-700\">\n      <th class=\"text-sm border-slate-300 dark:border-slate-600 text-slate-900 dark:text-slate-200 border p-2\">Module</th>\n      <th class=\"text-sm border-slate-300 dark:border-slate-600 text-slate-900 dark:text-slate-200 border p-2\">Version</th>\n      <th class=\"text-sm border-slate-300 dark:border-slate-600 text-slate-900 dark:text-slate-200 border p-2\">Hash</th>\n      </thead>\n      <tbody>\n        @for (module of modules; track module.name) {\n          <tr>\n            <th class=\"text-sm border border-slate-300 dark:border-slate-700 text-slate-500 dark:text-slate-400 py-2 px-4\">{{ module.name }}</th>\n            <td class=\"text-sm border border-slate-300 dark:border-slate-700 text-slate-500 dark:text-slate-400 p-2\">{{ module.version }}</td>\n            <td class=\"text-sm border border-slate-300 dark:border-slate-700 text-slate-500 dark:text-slate-400 p-2\">{{ module.hash }}</td>\n          </tr>\n        }\n      </tbody>\n    </table>\n  }\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  inject,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport {\n  NavigationCancel,\n  NavigationEnd,\n  NavigationStart,\n  Router,\n} from '@angular/router';\nimport {\n  filter,\n  map,\n} from 'rxjs/operators';\n\n@Component({\n    selector: 'rxap-navigation-progress-bar',\n    templateUrl: './navigation-progress-bar.component.html',\n    styleUrls: ['./navigation-progress-bar.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        MatProgressBar,\n    ]\n})\nexport class NavigationProgressBarComponent {\n\n  public readonly router = inject(Router);\n\n  public readonly navigating = toSignal(this.router.events.pipe(\n    filter(\n      event =>\n        event instanceof NavigationStart ||\n        event instanceof NavigationEnd ||\n        event instanceof NavigationCancel,\n    ),\n    map(event => event instanceof NavigationStart),\n  ), { initialValue: true });\n\n}\n","@if (navigating()) {\n<mat-progress-bar color=\"accent\" mode=\"indeterminate\"></mat-progress-bar>\n}\n","import { PortalModule } from '@angular/cdk/portal';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  inject,\n} from '@angular/core';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { FooterService } from '../footer.service';\n\n@Component({\n    selector: 'rxap-footer',\n    templateUrl: './footer.component.html',\n    styleUrls: ['./footer.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [MatToolbarModule, PortalModule]\n})\nexport class FooterComponent {\n\n  protected readonly footerService = inject(FooterService);\n\n  public readonly portals = computed(() => this.footerService.portals());\n  public readonly hasPortals = computed(() => this.portals().length > 0);\n\n}\n","@if (hasPortals()) {\n  <mat-toolbar class=\"mat-elevation-z1\">\n    @for (portal of portals(); track portal) {\n      <mat-toolbar-row>\n        <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\n      </mat-toolbar-row>\n    }\n  </mat-toolbar>\n}\n","import { CdkPortalOutlet } from '@angular/cdk/portal';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  inject,\n  input,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport {\n  MatToolbar,\n  MatToolbarRow,\n} from '@angular/material/toolbar';\nimport { HeaderService } from '../header.service';\n\n@Component({\n    selector: 'rxap-header',\n    templateUrl: './header.component.html',\n    styleUrls: ['./header.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        MatToolbar,\n        MatToolbarRow,\n        CdkPortalOutlet,\n    ]\n})\nexport class HeaderComponent {\n\n  public readonly color = input<ThemePalette>();\n\n  protected readonly headerService = inject(HeaderService);\n\n  public readonly portals = computed(() => this.headerService.portals());\n  public readonly hasPortals = computed(() => this.portals().length > 0);\n\n}\n","@if (hasPortals()) {\n  <mat-toolbar [color]=\"color()\" class=\"mat-elevation-z1\">\n    @for (portal of portals(); track portal) {\n      <mat-toolbar-row>\n        <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\n      </mat-toolbar-row>\n    }\n  </mat-toolbar>\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n} from '@angular/core';\nimport { FooterComponent } from '../footer/footer.component';\nimport { HeaderComponent } from '../header/header.component';\n\n@Component({\n    selector: 'rxap-base-layout',\n    imports: [\n        HeaderComponent,\n        FooterComponent,\n    ],\n    templateUrl: './base-layout.component.html',\n    styleUrl: './base-layout.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BaseLayoutComponent {}\n","<rxap-header class=\"z-10 w-full fixed top-0\"></rxap-header>\n<ng-content></ng-content>\n<rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n} from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport { BaseLayoutComponent } from '../base-layout/base-layout.component';\nimport { FooterComponent } from '../footer/footer.component';\nimport { HeaderComponent } from '../header/header.component';\nimport { NavigationProgressBarComponent } from '../navigation-progress-bar/navigation-progress-bar.component';\n\n@Component({\n    selector: 'rxap-minimal-layout',\n    imports: [RouterOutlet, BaseLayoutComponent, NavigationProgressBarComponent, HeaderComponent, FooterComponent],\n    templateUrl: './minimal-layout.component.html',\n    styleUrl: './minimal-layout.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MinimalLayoutComponent {}\n","<rxap-header class=\"z-10 w-full fixed top-0\"></rxap-header>\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n<router-outlet></router-outlet>\n<rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n","import {\n  computed,\n  inject,\n  Injectable,\n  signal,\n} from '@angular/core';\nimport { ConfigService } from '@rxap/config';\nimport {\n  RXAP_LOGO_CONFIG,\n  RXAP_LOGO_CONFIG_DEFAULTS,\n} from './tokens';\n\n@Injectable({ providedIn: 'root' })\nexport class LogoService {\n\n  private readonly config = inject(ConfigService);\n  public readonly logo = signal(\n    inject(RXAP_LOGO_CONFIG, { optional: true }) ??\n    this.config.get('logo', inject(RXAP_LOGO_CONFIG_DEFAULTS, { optional: true }) ?? {\n      src: 'logo.png',\n      width: 192,\n    }),\n  );\n\n  public readonly src = computed(() => this.logo().src);\n  public readonly width = computed(() => this.logo().width);\n  public readonly height = computed(() => this.logo().height);\n\n}\n","import {\n  AsyncPipe,\n  NgClass,\n  NgIf,\n  NgOptimizedImage,\n  NgStyle,\n} from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  inject,\n  Signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport {\n  RouterLink,\n  RouterOutlet,\n} from '@angular/router';\nimport { FooterComponent } from '../footer/footer.component';\nimport { HeaderComponent } from '../header/header.component';\nimport { LogoService } from '../logo.service';\nimport { NavigationProgressBarComponent } from '../navigation-progress-bar/navigation-progress-bar.component';\nimport { NavigationComponent } from '../navigation/navigation.component';\nimport { ReleaseInfoComponent } from '../release-info/release-info.component';\nimport { SidenavFooterDirective } from '../sidenav/sidenav-footer.directive';\nimport { SidenavComponent } from '../sidenav/sidenav.component';\n\n\n@Component({\n    selector: 'rxap-layout',\n    templateUrl: './layout.component.html',\n    styleUrls: ['./layout.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        HeaderComponent,\n        MatSidenavModule,\n        AsyncPipe,\n        MatIconModule,\n        MatButtonModule,\n        RouterLink,\n        NgIf,\n        FooterComponent,\n        MatMenuModule,\n        NgOptimizedImage,\n        NavigationComponent,\n        RouterOutlet,\n        NgStyle,\n        NgClass,\n        SidenavComponent,\n        ReleaseInfoComponent,\n        SidenavFooterDirective,\n        NavigationProgressBarComponent,\n    ]\n})\nexport class LayoutComponent {\n\n  protected readonly logoService = inject(LogoService);\n  public readonly logoSrc: Signal<string> = computed(() => this.logoService.src());\n  public readonly logoWidth: Signal<number> = computed(() => this.logoService.width());\n  public readonly logoHeight: Signal<number> = computed(() => this.logoService.height());\n\n}\n","<rxap-header class=\"z-10 w-full fixed top-0\"></rxap-header>\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n<rxap-sidenav>\n  <router-outlet></router-outlet>\n  <ng-template rxapSidenavFooter>\n    <img\n      [src]=\"logoSrc()\"\n      [routerLink]=\"['/']\"\n      [width]=\"logoWidth()\"\n      [height]=\"logoHeight()\"\n      alt=\"logo\"\n      class=\"grow-0 mx-16 cursor-pointer\"\n    />\n    <div class=\"grow-0 px-16 mt-4\">\n      <rxap-release-info></rxap-release-info>\n    </div>\n  </ng-template>\n</rxap-sidenav>\n<rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n","import { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  Directive,\n  inject,\n  OnDestroy,\n  OnInit,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { HeaderService } from '../header.service';\n\n@Directive({\n  selector: '[rxapHeader]',\n  standalone: true,\n})\nexport class HeaderDirective implements OnInit, OnDestroy {\n  private _portal?: TemplatePortal<void>;\n\n  private readonly headerService = inject(HeaderService);\n  private readonly template: TemplateRef<void> = inject(TemplateRef);\n  private readonly viewContainerRef = inject(ViewContainerRef);\n\n  public ngOnInit() {\n    this._portal = new TemplatePortal<void>(\n      this.template,\n      this.viewContainerRef,\n    );\n    this.headerService.pushPortal(this._portal);\n  }\n\n  public ngOnDestroy() {\n    if (this._portal) {\n      this.headerService.removePortal(this._portal);\n    }\n  }\n}\n\n\n","import { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  Directive,\n  inject,\n  OnDestroy,\n  OnInit,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { FooterService } from '../footer.service';\n\n@Directive({\n  selector: '[rxapFooter]',\n  standalone: true,\n})\nexport class FooterDirective implements OnInit, OnDestroy {\n  private _portal?: TemplatePortal<void>;\n\n  private readonly footerService = inject(FooterService);\n  private readonly template: TemplateRef<void> = inject(TemplateRef);\n  private readonly viewContainerRef = inject(ViewContainerRef);\n\n  public ngOnInit() {\n    this._portal = new TemplatePortal<void>(\n      this.template,\n      this.viewContainerRef,\n    );\n    this.footerService.pushPortal(this._portal);\n  }\n\n  public ngOnDestroy() {\n    if (this._portal) {\n      this.footerService.removePortal(this._portal);\n    }\n  }\n}\n\n\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  inject,\n  input,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport {\n  PubSubService,\n  RXAP_TOPICS,\n} from '@rxap/ngx-pub-sub';\nimport { EXTRACT_USERNAME_FROM_PROFILE } from '../../tokens';\nimport { ExtractUsernameFromProfileFn } from '../../types';\n\n@Component({\n    selector: 'rxap-user-profile-icon',\n    templateUrl: './user-profile-icon.component.html',\n    styleUrls: ['./user-profile-icon.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        MatMenuModule,\n        MatIconModule,\n    ]\n})\nexport class UserProfileIconComponent {\n\n  protected readonly extractUsernameFromProfile: ExtractUsernameFromProfileFn = inject(EXTRACT_USERNAME_FROM_PROFILE);\n  protected readonly pubSubService = inject(PubSubService);\n\n  public readonly profile = input.required();\n\n  public readonly username = computed(() => {\n    const profile = this.profile();\n    if (profile) {\n      return this.extractUsernameFromProfile(profile);\n    }\n    return null;\n  });\n\n  public logout() {\n    this.pubSubService.publish(RXAP_TOPICS.authentication.logout);\n  }\n\n\n}\n","<button [matMenuTriggerFor]=\"menu\"\n        class=\"rounded-full cursor-pointer outline-none overflow-hidden h-8 w-8 bg-center bg-no-repeat bg-cover flex flex-row justify-center items-center\">\n  <mat-icon class=\"h-8 w-8 text-[32px]\" svgIcon=\"account-circle\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\" [yPosition]=\"'below'\" class=\"!max-w-none\">\n  @if (this.username(); as username) {\n  <button mat-menu-item>\n    <span class=\"flex flex-row gap-2\">\n      <mat-icon svgIcon=\"account\"></mat-icon>\n      <span>{{username}}</span>\n    </span>\n  </button>\n  }\n  <button (click)=\"logout()\" mat-menu-item>\n    <span class=\"flex flex-row gap-2\">\n      <mat-icon svgIcon=\"logout\"></mat-icon>\n      <span i18n>Logout</span>\n    </span>\n  </button>\n</mat-menu>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  inject,\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { LayoutService } from '../../layout.service';\n\n@Component({\n    selector: 'rxap-sidenav-toggle-button',\n    templateUrl: './sidenav-toggle-button.component.html',\n    styleUrls: ['./sidenav-toggle-button.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        MatIcon,\n        MatIconButton,\n    ]\n})\nexport class SidenavToggleButtonComponent {\n\n  protected readonly layoutComponentService = inject(LayoutService);\n\n  public readonly opened = computed(() => this.layoutComponentService.opened());\n\n  public toggle() {\n    this.layoutComponentService.toggleOpened();\n  }\n\n}\n","<button (click)=\"toggle()\" mat-icon-button>\n  @if (opened()) {\n    <mat-icon>menu_open</mat-icon>\n  } @else {\n    <mat-icon>menu</mat-icon>\n  }\n</button>\n","import {\n  CdkPortalOutlet,\n  ComponentPortal,\n} from '@angular/cdk/portal';\nimport { NgIf } from '@angular/common';\nimport {\n  Component,\n  inject,\n  Injector,\n  isDevMode,\n  runInInjectionContext,\n  Signal,\n  signal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport {\n  MatMenu,\n  MatMenuItem,\n  MatMenuTrigger,\n} from '@angular/material/menu';\nimport { IconDirective } from '@rxap/material-directives/icon';\nimport {\n  ThemeService,\n} from '@rxap/ngx-theme';\nimport {\n  coerceArray,\n  IsFunction,\n  ThemeDensity,\n} from '@rxap/utilities';\nimport { from } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n  RXAP_SETTINGS_MENU_ITEM,\n  RXAP_SETTINGS_MENU_ITEM_COMPONENT,\n} from '../../tokens';\nimport { SettingsMenuItem } from '../../types';\n\n@Component({\n    selector: 'rxap-settings-button',\n    templateUrl: './settings-button.component.html',\n    styleUrls: ['./settings-button.component.scss'],\n    imports: [\n        MatIconButton,\n        MatIcon,\n        MatMenu,\n        MatMenuTrigger,\n        MatMenuItem,\n        CdkPortalOutlet,\n        IconDirective,\n        NgIf,\n    ]\n})\nexport class SettingsButtonComponent {\n\n  public isDevMode = isDevMode();\n\n  public readonly theme = inject(ThemeService);\n  protected readonly injector = inject(Injector);\n\n  customItemComponents: Signal<ComponentPortal<unknown>[]> = toSignal(from(Promise.all(\n    coerceArray(inject(RXAP_SETTINGS_MENU_ITEM_COMPONENT, { optional: true }))\n      .map(item => IsFunction(item) ? item() : item),\n  )).pipe(map(items => items.map(item => new ComponentPortal(item, null, this.injector)))), { initialValue: [] });\n\n  customItems = signal(coerceArray(inject(RXAP_SETTINGS_MENU_ITEM, { optional: true })));\n\n  private savePreviewDensityValue = false;\n  private currentDensityValue: ThemeDensity | null = null;\n\n  private savePreviewTypographyValue = false;\n  private currentTypographyValue: string | null = null;\n\n  public readonly availableTypographies = this.theme.getAvailableTypographies();\n  private savePreviewThemeValue = false;\n\n  public readonly availableThemes = this.theme.getAvailableThemes();\n  private currentThemeValue: string | null = null;\n\n  previewDensity(density: ThemeDensity) {\n    this.theme.applyDensity(density);\n  }\n\n  restoreDensity() {\n    this.theme.applyDensity(this.theme.density());\n  }\n\n  setDensity(density: ThemeDensity) {\n    this.theme.setDensity(density);\n  }\n\n  previewTypography(typography: string) {\n    this.theme.applyTypography(typography);\n  }\n\n  restoreTypography() {\n    this.theme.applyTypography(this.theme.typography());\n  }\n\n  setTypography(typography: string) {\n    this.theme.setTypography(typography);\n  }\n\n  previewTheme(theme: string) {\n    this.theme.applyTheme(theme);\n  }\n\n  restoreTheme() {\n    this.theme.applyTheme(this.theme.themeName());\n  }\n\n  setTheme(theme: string) {\n    this.theme.setTheme(theme);\n  }\n\n  clickItem(item: SettingsMenuItem) {\n    runInInjectionContext(this.injector, () => item.action());\n  }\n}\n","<button [matMenuTriggerFor]=\"menu\" mat-icon-button>\n  <mat-icon svgIcon=\"cog\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\">\n  <button (click)=\"theme.toggleDarkTheme()\" mat-menu-item>\n    @if (theme.darkMode()) {\n      <mat-icon svgIcon=\"brightness-2\"></mat-icon>\n    } @else {\n      <mat-icon svgIcon=\"brightness-5\"></mat-icon>\n    }\n    <span i18n>Mode</span>\n  </button>\n  <button [matMenuTriggerFor]=\"themeMenu\" mat-menu-item>\n    <mat-icon svgIcon=\"compare\"></mat-icon>\n    <span i18n>Theme</span>\n  </button>\n  @for (item of customItems(); track item.label) {\n    <button (click)=\"clickItem(item)\" mat-menu-item>\n      <mat-icon *ngIf=\"item.icon as icon\" [rxapIcon]=\"icon\"></mat-icon>\n      <span>{{ item.label }}</span>\n    </button>\n  }\n  @for (item of customItemComponents(); track item) {\n    <ng-template [cdkPortalOutlet]=\"item\"></ng-template>\n  }\n</mat-menu>\n\n<mat-menu #themeMenu=\"matMenu\" xPosition=\"before\">\n  <button [matMenuTriggerFor]=\"themeDensityMenu\" mat-menu-item>\n    <mat-icon svgIcon=\"move-resize\"></mat-icon>\n    <span i18n>Density</span>\n  </button>\n  @if (availableTypographies?.length) {\n    <button [matMenuTriggerFor]=\"themeFontMenu\" mat-menu-item>\n      <mat-icon svgIcon=\"format-font\"></mat-icon>\n      <span i18n>Font</span>\n    </button>\n  }\n  @if (availableThemes?.length) {\n    <button [matMenuTriggerFor]=\"themePresetMenu\" mat-menu-item>\n      <mat-icon svgIcon=\"shape-outline\"></mat-icon>\n      <span i18n>Preset</span>\n    </button>\n  }\n</mat-menu>\n\n<mat-menu #themeDensityMenu=\"matMenu\" xPosition=\"before\">\n  <button (click)=\"setDensity(0)\" (mouseenter)=\"previewDensity(0)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n    <mat-icon svgIcon=\"size-l\"></mat-icon>\n    <span i18n>Normal</span>\n  </button>\n  <button (click)=\"setDensity(-1)\" (mouseenter)=\"previewDensity(-1)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n    <mat-icon svgIcon=\"size-m\"></mat-icon>\n    <span i18n>Dense</span>\n  </button>\n  <button (click)=\"setDensity(-2)\" (mouseenter)=\"previewDensity(-2)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n    <mat-icon svgIcon=\"size-s\"></mat-icon>\n    <span i18n>Very Dense</span>\n  </button>\n  <button (click)=\"setDensity(-3)\" (mouseenter)=\"previewDensity(-3)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n    <mat-icon svgIcon=\"size-xs\"></mat-icon>\n    <span i18n>Extreme Dense</span>\n  </button>\n</mat-menu>\n<mat-menu #themeFontMenu=\"matMenu\" xPosition=\"before\">\n  @for (typographyName of availableTypographies ?? []; track typographyName) {\n    <button (click)=\"setTypography(typographyName)\"\n            (mouseenter)=\"previewTypography(typographyName)\"\n            (mouseleave)=\"restoreTypography()\"\n            mat-menu-item>\n      {{ typographyName }}\n    </button>\n  }\n</mat-menu>\n\n<mat-menu #themePresetMenu=\"matMenu\" xPosition=\"before\">\n  @for (themeName of availableThemes ?? []; track themeName) {\n    <button (click)=\"setTheme(themeName)\"\n            (mouseenter)=\"previewTheme(themeName)\"\n            (mouseleave)=\"restoreTheme()\"\n            mat-menu-item>\n      {{ themeName }}\n    </button>\n  }\n</mat-menu>\n","import {\n  inject,\n  Injectable,\n  LOCALE_ID,\n  signal,\n} from '@angular/core';\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { ClickOnLink } from '@rxap/browser-utilities';\nimport { ConfigService } from '@rxap/config';\nimport { RXAP_ENVIRONMENT } from '@rxap/environment';\nimport {\n  clone,\n  coerceArray,\n  JoinPath,\n} from '@rxap/utilities';\nimport {\n  RXAP_EXTERNAL_APP,\n  RXAP_EXTERNAL_APP_FILTER,\n} from './tokens';\nimport { ExternalApp } from './types';\n\n@Injectable()\nexport class ExternalAppsService {\n\n  protected readonly appFilterList = coerceArray(inject(RXAP_EXTERNAL_APP_FILTER, { optional: true }));\n  protected readonly config = inject(ConfigService);\n  protected readonly localeId = inject(LOCALE_ID);\n  protected readonly environment = inject(RXAP_ENVIRONMENT);\n  protected readonly apps: Array<ExternalApp> = this.config.get('navigation.apps', []);\n  protected readonly externalApps = coerceArray(inject(RXAP_EXTERNAL_APP, { optional: true }));\n\n  /**\n   * The list of active apps that is processed by the getAppList method\n   */\n  public readonly activeAppList = signal<Array<ExternalApp>>([]);\n\n  public hasApp(appId: string): boolean {\n    return this.apps.some(app => app.id === appId);\n  }\n\n  public getApp(appId: string): ExternalApp | null {\n    if (!this.hasApp(appId)) {\n      return null;\n    }\n    const app = this.apps.find(app => app.id === appId);\n    if (!app) {\n      throw new Error(`FATAL: App with id \"${ appId }\" not found!`);\n    }\n    return clone(app);\n  }\n\n  public getAppUrl(appId: string, path: string, infix: string | null = this.getPathPrefix()): string | null {\n\n    const app = this.getApp(appId);\n\n    if (!app || !app.href) {\n      return null;\n    }\n\n    return JoinPath(app.href, infix, path);\n\n  }\n\n  public getAppRouterLink(appId: string, path: string): string[] | null {\n\n    const app = this.getApp(appId);\n\n    if (!app || !app.routerLink) {\n      return null;\n    }\n\n    return [ ...app.routerLink, path ];\n  }\n\n  public getAppUrlOrThrow(appId: string, path: string): string {\n    const url = this.getAppUrl(appId, path);\n    if (url) {\n      return url;\n    }\n    throw new Error(`Could not find url for app with id \"${ appId }\"`);\n  }\n\n  public getAppRouterLinkOrThrow(appId: string, path: string): string[] {\n    const routerLink = this.getAppRouterLink(appId, path);\n    if (routerLink) {\n      return routerLink;\n    }\n    throw new Error(`Could not find router link for app with id \"${ appId }\"`);\n  }\n\n  public navigate(appId: string, path: string): void {\n\n    const url = this.getAppUrl(appId, path);\n\n    if (url) {\n      ClickOnLink(url);\n    }\n\n  }\n\n  public async getAppList(): Promise<Array<ExternalApp>> {\n    let appList: ExternalApp[] = [\n      ...this.externalApps,\n      ...this.apps,\n    ].filter(app => !app.hidden)\n      .map(app => clone(app));\n\n    appList.forEach(app => {\n      if (app.href) {\n        app.href = JoinPath(app.href, this.getPathPrefix());\n      }\n    });\n\n    for (const appFilter of this.appFilterList) {\n      appList = await appFilter.call(clone(appList));\n    }\n\n    appList = clone(appList);\n    this.activeAppList.set(appList);\n    return appList;\n  }\n\n  protected getPathPrefix(): string {\n    if (this.environment.production && this.localeId) {\n      return this.localeId.replace(/-.+$/, '');\n    }\n    return '';\n  }\n\n}\n","import { NgOptimizedImage } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  inject,\n  OnInit,\n  signal,\n} from '@angular/core';\nimport {\n  MatAnchor,\n  MatButton,\n  MatIconButton,\n} from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { RouterLink } from '@angular/router';\nimport { IconDirective } from '@rxap/material-directives/icon';\nimport { ExternalAppsService } from '../../external-apps.service';\n\n@Component({\n    selector: 'rxap-apps-button',\n    templateUrl: './apps-button.component.html',\n    styleUrls: ['./apps-button.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NgOptimizedImage,\n        MatButton,\n        RouterLink,\n        MatAnchor,\n        MatIconButton,\n        MatIcon,\n        IconDirective,\n    ]\n})\nexport class AppsButtonComponent implements OnInit {\n  /**\n   * The signal that indicates if the app list is open\n   */\n  public readonly isOpen = signal(false);\n\n  protected readonly externalAppsService = inject(ExternalAppsService);\n  public readonly appList = computed(() => this.externalAppsService.activeAppList());\n  public readonly hasApps = computed(() => this.appList().length > 0);\n\n  public toggle(): void {\n    this.isOpen.update(isOpen => !isOpen);\n  }\n\n  public ngOnInit(): void {\n    this.externalAppsService.getAppList();\n  }\n\n}\n","@if (hasApps()) {\n  <div class=\"flex flex-row items-center gap-8\">\n\n    @if (isOpen()) {\n      <div class=\"flex flex-row items-center gap-6 h-10\">\n\n        @for (app of appList(); track app.label) {\n          @if (app.href) {\n            <a [href]=\"app.href\" [target]=\"app.target ?? '_self'\" mat-stroked-button>\n              <span class=\"flex flex-row items-center gap-4\">\n                @if (app.icon) {\n                  <mat-icon [rxapIcon]=\"app.icon\"></mat-icon>\n                }\n                @if (app.image) {\n                  <img [alt]=\"app.label\" [ngSrc]=\"app.image\" height=\"40\" width=\"40\">\n                }\n                <span class=\"label grow-0\">{{ app.label }}</span>\n              </span>\n            </a>\n          } @else if (app.routerLink) {\n            <a mat-stroked-button [routerLink]=\"app.routerLink\">\n              <span class=\"flex flex-row items-center gap-4\">\n                @if (app.icon) {\n                  <mat-icon [rxapIcon]=\"app.icon\"></mat-icon>\n                }\n                @if (app.image) {\n                  <img [alt]=\"app.label\" [ngSrc]=\"app.image\" height=\"40\" width=\"40\">\n                }\n                <span class=\"label grow-0\">{{ app.label }}</span>\n              </span>\n            </a>\n          } @else {\n            <button mat-stroked-button [disabled]=\"true\">\n              <span class=\"flex flex-row items-center gap-4\">\n                @if (app.icon) {\n                  <mat-icon [rxapIcon]=\"app.icon\"></mat-icon>\n                }\n                @if (app.image) {\n                  <img [alt]=\"app.label\" [ngSrc]=\"app.image\" height=\"40\" width=\"40\">\n                }\n                <span class=\"label grow-0\">{{ app.label }}</span>\n              </span>\n            </button>\n          }\n        }\n\n      </div>\n    }\n\n    <button (click)=\"toggle()\" mat-icon-button>\n      <mat-icon svgIcon=\"apps\"></mat-icon>\n    </button>\n\n  </div>\n}\n","import {\n  ComponentPortal,\n  Portal,\n} from '@angular/cdk/portal';\nimport {\n  computed,\n  inject,\n  Injectable,\n  isDevMode,\n  signal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { from } from 'rxjs';\nimport { RXAP_DEFAULT_HEADER_ITEM_COMPONENT } from '../tokens';\nimport {\n  coerceArray,\n  IsFunction,\n} from '@rxap/utilities';\n\n@Injectable()\nexport class DefaultHeaderService {\n\n  private readonly components = toSignal(from(Promise.all(coerceArray(inject(RXAP_DEFAULT_HEADER_ITEM_COMPONENT, { optional: true }))\n    .map(item => IsFunction(item) ? item() : item))), { initialValue: [] });\n\n  private readonly injectedPortals = computed(() => this.components().map(component => new ComponentPortal(component)));\n  private readonly methodPortals = signal<Portal<unknown>[]>([]);\n\n  /**\n   * Represents an array of `Portal` objects with unknown type.\n   *\n   * @typedef {Array<Portal<unknown>>} SignalPortals\n   */\n  public readonly portals = computed(() => [ ...this.injectedPortals(), ...this.methodPortals() ]);\n\n\n  /**\n   * Computes the count of portals.\n   *\n   * @returns {number} The count of portals.\n   */\n  public readonly portalCount = computed(() => this.portals().length);\n\n\n  /**\n   * Adds a portal to the list of portals.\n   *\n   * @param {Portal<unknown>} portal - The portal to be added.\n   *\n   * @return {void}\n   */\n  public pushPortal(portal: Portal<unknown>) {\n    if (!this.methodPortals().includes(portal)) {\n      this.methodPortals.update(portals => [ ...portals, portal ]);\n    } else {\n      if (isDevMode()) {\n        console.warn('Can not add the same portal multiple times');\n      }\n    }\n  }\n\n  /**\n   * Removes a portal from the list of portals.\n   *\n   * @param {Portal<unknown>} portal - The portal to be removed.\n   * @return {void}\n   */\n  public removePortal(portal: Portal<unknown>) {\n    const index = this.methodPortals().indexOf(portal);\n    if (index !== -1) {\n      this.methodPortals.update(portals => {\n        portals.splice(index, 1);\n        return portals.slice();\n      });\n    }\n  }\n\n}\n","import { CdkPortalOutlet } from '@angular/cdk/portal';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  inject,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatToolbarRow } from '@angular/material/toolbar';\nimport { HeaderService } from '../header.service';\nimport { LayoutService } from '../layout.service';\nimport { RXAP_USER_PROFILE_DATA_SOURCE } from '../tokens';\nimport { AppsButtonComponent } from './apps-button/apps-button.component';\nimport { DefaultHeaderService } from './default-header.service';\nimport { SettingsButtonComponent } from './settings-button/settings-button.component';\nimport { SidenavToggleButtonComponent } from './sidenav-toggle-button/sidenav-toggle-button.component';\nimport { UserProfileIconComponent } from './user-profile-icon/user-profile-icon.component';\n\n@Component({\n    selector: 'rxap-default-header',\n    imports: [\n        AppsButtonComponent,\n        SettingsButtonComponent,\n        SidenavToggleButtonComponent,\n        UserProfileIconComponent,\n        MatToolbarRow,\n        CdkPortalOutlet,\n    ],\n    host: {\n        'class': 'grow',\n    },\n    templateUrl: './default-header.component.html',\n    styleUrl: './default-header.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DefaultHeaderComponent {\n\n  protected readonly layoutComponentService = inject(LayoutService);\n\n  public readonly collapsed = computed(() => this.layoutComponentService.collapsed());\n  public readonly isMobile = computed(() => this.layoutComponentService.isMobile());\n  public readonly opened = computed(() => this.layoutComponentService.opened());\n  public readonly profile = toSignal(inject(RXAP_USER_PROFILE_DATA_SOURCE).connect('user-profile'), { initialValue: null });\n\n  protected readonly defaultHeaderService = inject(DefaultHeaderService);\n\n  public readonly portals = computed(() => this.defaultHeaderService.portals());\n  public readonly hasPortals = computed(() => this.portals().length > 0);\n\n}\n","<div class=\"w-full flex flex-row gap-x-4 justify-between items-center\">\n  @if (collapsed() || isMobile()) {\n    <rxap-sidenav-toggle-button></rxap-sidenav-toggle-button>\n  }\n  <div class=\"grow flex flex-row gap-x-4 items-center\">\n    @for (portal of portals(); track portal) {\n      <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\n    }\n    <ng-content></ng-content>\n  </div>\n  <rxap-apps-button class=\"grow-0\"></rxap-apps-button>\n  <rxap-settings-button class=\"grow-0\"></rxap-settings-button>\n  @if (profile(); as profile) {\n    <rxap-user-profile-icon [profile]=\"profile\" class=\"grow-0\"></rxap-user-profile-icon>\n  }\n</div>\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Provider } from '@angular/core';\nimport { DataSource } from '@rxap/pattern';\nimport { Constructor } from '@rxap/utilities';\nimport { DefaultHeaderComponent } from './default-header/default-header.component';\nimport { DefaultHeaderService } from './default-header/default-header.service';\nimport { ExternalAppsService } from './external-apps.service';\nimport { FooterService } from './footer.service';\nimport { HeaderService } from './header.service';\nimport { LayoutService } from './layout.service';\nimport { NavigationService } from './navigation.service';\nimport { NavigationWithInserts } from './navigation/navigation-item';\nimport {\n  RXAP_DEFAULT_HEADER_ITEM_COMPONENT,\n  RXAP_EXTERNAL_APP,\n  RXAP_FOOTER_COMPONENT,\n  RXAP_HEADER_COMPONENT,\n  RXAP_NAVIGATION_CONFIG,\n  RXAP_NAVIGATION_CONFIG_INSERTS,\n  RXAP_RELEASE_INFO_MODULE,\n  RXAP_SETTINGS_MENU_ITEM,\n  RXAP_SETTINGS_MENU_ITEM_COMPONENT,\n  RXAP_USER_PROFILE_DATA_SOURCE,\n} from './tokens';\nimport {\n  DefaultHeaderItemComponent,\n  ExternalApp,\n  ReleaseInfoModule,\n  SettingsMenuItem,\n  SettingsMenuItemComponent,\n} from './types';\n\nexport function provideLayout(...additionalProviders: Provider[]): Provider[] {\n  return [\n    LayoutService,\n    HeaderService,\n    FooterService,\n    DefaultHeaderService,\n    ...additionalProviders,\n  ];\n}\n\nexport function provideExternalApps(...apps: ExternalApp[]): Provider[] {\n  return [\n    ExternalAppsService,\n    ...apps.map(app => (\n      {\n        provide: RXAP_EXTERNAL_APP,\n        useValue: app,\n        multi: true,\n      }\n    ))\n  ];\n}\n\nexport function withNavigationConfig(\n  config: NavigationWithInserts | (() => NavigationWithInserts),\n): Provider[] {\n  return [\n    NavigationService,\n    {\n      provide: RXAP_NAVIGATION_CONFIG,\n      useValue: config,\n    },\n  ];\n}\n\nexport function withNavigationInserts(inserts: Record<string, NavigationWithInserts>): Provider[] {\n  return [{\n    provide: RXAP_NAVIGATION_CONFIG_INSERTS,\n    useValue: inserts,\n  }];\n}\n\nexport function withSettingsMenuItems(...items: Array<SettingsMenuItemComponent | (() => Promise<SettingsMenuItemComponent> | SettingsMenuItemComponent) | SettingsMenuItem>): Provider[] {\n  return [\n    ...items.filter((item): item is SettingsMenuItemComponent => typeof item === 'function').map(component => (\n      {\n        provide: RXAP_SETTINGS_MENU_ITEM_COMPONENT,\n        useValue: component,\n        multi: true,\n      }\n    )),\n    ...items.filter((item): item is SettingsMenuItem => typeof item !== 'function').map(item => (\n      {\n        provide: RXAP_SETTINGS_MENU_ITEM,\n        useValue: item,\n        multi: true,\n      }\n    )),\n  ];\n}\n\nexport function withDefaultHeaderItems(...items: Array<DefaultHeaderItemComponent | (() => Promise<DefaultHeaderItemComponent> | DefaultHeaderItemComponent)>): Provider[] {\n  return items.map(component => ({\n    provide: RXAP_DEFAULT_HEADER_ITEM_COMPONENT,\n    useValue: component,\n    multi: true,\n  }));\n}\n\nexport function withReleaseInfoModules(...module: ReleaseInfoModule[]): Provider[] {\n  return module.map(item => (\n    {\n      provide: RXAP_RELEASE_INFO_MODULE,\n      useValue: item,\n      multi: true,\n    }\n  ));\n}\n\nexport function withHeaderComponents(components: Array<ComponentType<unknown>>): Provider[] {\n  return components.map(component => (\n    {\n      provide: RXAP_HEADER_COMPONENT,\n      useValue: component,\n      multi: true,\n    }\n  ));\n}\n\nexport function withFooterComponents(components: Array<ComponentType<unknown>>): Provider[] {\n  return components.map(component => (\n    {\n      provide: RXAP_FOOTER_COMPONENT,\n      useValue: component,\n    }\n  ));\n}\n\nexport function withDefaultHeaderComponent(): Provider {\n  return {\n    provide: RXAP_HEADER_COMPONENT,\n    useValue: DefaultHeaderComponent,\n    multi: true,\n  };\n}\n\nexport function withUserProfileDataSource(dataSource: Constructor<DataSource>, useClass = false): Provider {\n  if (useClass) {\n    return {\n      provide: RXAP_USER_PROFILE_DATA_SOURCE,\n      useClass: dataSource\n    };\n  } else {\n    return {\n      provide: RXAP_USER_PROFILE_DATA_SOURCE,\n      useExisting: dataSource\n    };\n  }\n}\n","// region sidenav\nexport * from './lib/sidenav/sidenav-footer.directive';\nexport * from './lib/sidenav/sidenav-header.directive';\nexport * from './lib/sidenav/sidenav.component';\n// endregion\n\n// region release-info\nexport * from './lib/release-info/release-info.component';\n// endregion\n\n// region navigation navigation-item\nexport * from './lib/navigation/navigation-item/navigation-item.component';\n// endregion\n\n// region navigation-progress-bar\nexport * from './lib/navigation-progress-bar/navigation-progress-bar.component';\n// endregion\n\n// region navigation\nexport * from './lib/navigation/navigation-item';\nexport * from './lib/navigation/navigation.component';\n// endregion\n\n// region minimal-layout\nexport * from './lib/minimal-layout/minimal-layout.component';\n// endregion\n\n// region layout\nexport * from './lib/layout/layout.component';\n// endregion\n\n// region header\nexport * from './lib/header/header.component';\nexport * from './lib/header/header.directive';\n// endregion\n\n// region footer\nexport * from './lib/footer/footer.component';\nexport * from './lib/footer/footer.directive';\n// endregion\n\n// region default-header user-profile-icon\nexport * from './lib/default-header/user-profile-icon/user-profile-icon.component';\n// endregion\n\n// region default-header sidenav-toggle-button\nexport * from './lib/default-header/sidenav-toggle-button/sidenav-toggle-button.component';\n// endregion\n\n// region default-header settings-button\nexport * from './lib/default-header/settings-button/settings-button.component';\n// endregion\n\n// region default-header apps-button\nexport * from './lib/default-header/apps-button/apps-button.component';\n// endregion\n\n// region default-header\nexport * from './lib/default-header/default-header.component';\nexport * from './lib/default-header/default-header.service';\n// endregion\n\n// region base-layout\nexport * from './lib/base-layout/base-layout.component';\n// endregion\n\n// region \nexport * from './lib/external-apps.service';\nexport * from './lib/footer.service';\nexport * from './lib/header.service';\nexport * from './lib/layout.service';\nexport * from './lib/logo.service';\nexport * from './lib/navigation.service';\nexport * from './lib/provide';\nexport * from './lib/tokens';\nexport * from './lib/types';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2"],"mappings":"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"}