@rxap/layout 19.1.1-dev.6 → 19.2.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/compodoc/changelog.html +7 -0
- package/compodoc/dependencies.html +5 -5
- package/compodoc/injectables/NavigationService.html +12 -1
- package/compodoc/js/search/search_index.js +2 -2
- package/compodoc/miscellaneous/functions.html +4 -4
- package/compodoc/properties.html +1 -1
- package/docs/documentation.json +373 -373
- package/docs/html/classes/AppsButtonComponent.html +4 -4
- package/docs/html/classes/BaseLayoutComponent.html +2 -2
- package/docs/html/classes/DefaultHeaderComponent.html +2 -2
- package/docs/html/classes/DefaultHeaderService.html +5 -5
- package/docs/html/classes/ExternalAppsService.html +2 -2
- package/docs/html/classes/FooterComponent.html +2 -2
- package/docs/html/classes/FooterDirective.html +3 -3
- package/docs/html/classes/FooterService.html +5 -5
- package/docs/html/classes/HeaderComponent.html +2 -2
- package/docs/html/classes/HeaderDirective.html +3 -3
- package/docs/html/classes/HeaderService.html +5 -5
- package/docs/html/classes/LayoutComponent.html +2 -2
- package/docs/html/classes/LayoutService.html +2 -2
- package/docs/html/classes/LogoService.html +2 -2
- package/docs/html/classes/MinimalLayoutComponent.html +2 -2
- package/docs/html/classes/NavigationComponent.html +3 -3
- package/docs/html/classes/NavigationItemComponent.html +5 -5
- package/docs/html/classes/NavigationProgressBarComponent.html +2 -2
- package/docs/html/classes/NavigationService.html +3 -3
- package/docs/html/classes/ReleaseInfoComponent.html +2 -2
- package/docs/html/classes/SettingsButtonComponent.html +2 -2
- package/docs/html/classes/SidenavComponent.html +3 -3
- package/docs/html/classes/SidenavFooterDirective.html +2 -2
- package/docs/html/classes/SidenavHeaderDirective.html +2 -2
- package/docs/html/classes/SidenavToggleButtonComponent.html +2 -2
- package/docs/html/classes/UserProfileIconComponent.html +2 -2
- package/docs/html/functions/IsNavigationDividerItem.html +1 -1
- package/docs/html/functions/IsNavigationInsertItem.html +1 -1
- package/docs/html/functions/IsNavigationItem.html +1 -1
- package/docs/html/functions/provideExternalApps.html +1 -1
- package/docs/html/functions/provideLayout.html +1 -1
- package/docs/html/functions/withDefaultHeaderComponent.html +1 -1
- package/docs/html/functions/withDefaultHeaderItems.html +1 -1
- package/docs/html/functions/withFooterComponents.html +1 -1
- package/docs/html/functions/withHeaderComponents.html +1 -1
- package/docs/html/functions/withNavigationConfig.html +1 -1
- package/docs/html/functions/withNavigationInserts.html +1 -1
- package/docs/html/functions/withReleaseInfoModules.html +1 -1
- package/docs/html/functions/withSettingsMenuItems.html +1 -1
- package/docs/html/functions/withUserProfileDataSource.html +1 -1
- package/docs/html/index.html +2 -2
- package/docs/html/interfaces/NavigationDividerItem.html +2 -2
- package/docs/html/interfaces/NavigationInsertItem.html +2 -2
- package/docs/html/interfaces/NavigationItem.html +2 -2
- package/docs/html/interfaces/NavigationStatus.html +2 -2
- package/docs/html/interfaces/ReleaseInfoModule.html +2 -2
- package/docs/html/interfaces/SettingsMenuItem.html +2 -2
- package/docs/html/modules.html +1 -1
- package/docs/html/types/DefaultHeaderItemComponent.html +1 -1
- package/docs/html/types/ExternalApp.html +1 -1
- package/docs/html/types/ExtractUsernameFromProfileFn.html +1 -1
- package/docs/html/types/Navigation.html +1 -1
- package/docs/html/types/NavigationWithInserts.html +1 -1
- package/docs/html/types/SettingsMenuItemComponent.html +1 -1
- package/docs/html/variables/EXTRACT_USERNAME_FROM_PROFILE.html +1 -1
- package/docs/html/variables/RXAP_DEFAULT_HEADER_ITEM_COMPONENT.html +1 -1
- package/docs/html/variables/RXAP_EXTERNAL_APP.html +1 -1
- package/docs/html/variables/RXAP_EXTERNAL_APP_FILTER.html +1 -1
- package/docs/html/variables/RXAP_FOOTER_COMPONENT.html +1 -1
- package/docs/html/variables/RXAP_HEADER_COMPONENT.html +1 -1
- package/docs/html/variables/RXAP_LAYOUT_APPS_GRID.html +1 -1
- package/docs/html/variables/RXAP_LOGO_CONFIG.html +1 -1
- package/docs/html/variables/RXAP_LOGO_CONFIG_DEFAULTS.html +1 -1
- package/docs/html/variables/RXAP_NAVIGATION_CONFIG.html +1 -1
- package/docs/html/variables/RXAP_NAVIGATION_CONFIG_INSERTS.html +1 -1
- package/docs/html/variables/RXAP_NAVIGATION_LAYOUT_CONFIG_DEFAULTS.html +1 -1
- package/docs/html/variables/RXAP_RELEASE_INFO_MODULE.html +1 -1
- package/docs/html/variables/RXAP_SETTINGS_MENU_ITEM.html +1 -1
- package/docs/html/variables/RXAP_SETTINGS_MENU_ITEM_COMPONENT.html +1 -1
- package/docs/html/variables/RXAP_USER_PROFILE_DATA_SOURCE.html +1 -1
- package/docs/markdown/README.md +1 -1
- package/docs/markdown/classes/AppsButtonComponent.md +8 -8
- package/docs/markdown/classes/BaseLayoutComponent.md +2 -2
- package/docs/markdown/classes/DefaultHeaderComponent.md +10 -10
- package/docs/markdown/classes/DefaultHeaderService.md +6 -6
- package/docs/markdown/classes/ExternalAppsService.md +18 -18
- package/docs/markdown/classes/FooterComponent.md +5 -5
- package/docs/markdown/classes/FooterDirective.md +4 -4
- package/docs/markdown/classes/FooterService.md +6 -6
- package/docs/markdown/classes/HeaderComponent.md +6 -6
- package/docs/markdown/classes/HeaderDirective.md +4 -4
- package/docs/markdown/classes/HeaderService.md +6 -6
- package/docs/markdown/classes/LayoutComponent.md +6 -6
- package/docs/markdown/classes/LayoutService.md +17 -17
- package/docs/markdown/classes/LogoService.md +6 -6
- package/docs/markdown/classes/MinimalLayoutComponent.md +2 -2
- package/docs/markdown/classes/NavigationComponent.md +14 -14
- package/docs/markdown/classes/NavigationItemComponent.md +20 -20
- package/docs/markdown/classes/NavigationProgressBarComponent.md +4 -4
- package/docs/markdown/classes/NavigationService.md +12 -12
- package/docs/markdown/classes/ReleaseInfoComponent.md +6 -6
- package/docs/markdown/classes/SettingsButtonComponent.md +19 -19
- package/docs/markdown/classes/SidenavComponent.md +18 -18
- package/docs/markdown/classes/SidenavFooterDirective.md +4 -4
- package/docs/markdown/classes/SidenavHeaderDirective.md +4 -4
- package/docs/markdown/classes/SidenavToggleButtonComponent.md +5 -5
- package/docs/markdown/classes/UserProfileIconComponent.md +7 -7
- package/docs/markdown/functions/IsNavigationDividerItem.md +2 -2
- package/docs/markdown/functions/IsNavigationInsertItem.md +2 -2
- package/docs/markdown/functions/IsNavigationItem.md +2 -2
- package/docs/markdown/functions/provideExternalApps.md +2 -2
- package/docs/markdown/functions/provideLayout.md +2 -2
- package/docs/markdown/functions/withDefaultHeaderComponent.md +2 -2
- package/docs/markdown/functions/withDefaultHeaderItems.md +2 -2
- package/docs/markdown/functions/withFooterComponents.md +2 -2
- package/docs/markdown/functions/withHeaderComponents.md +2 -2
- package/docs/markdown/functions/withNavigationConfig.md +2 -2
- package/docs/markdown/functions/withNavigationInserts.md +2 -2
- package/docs/markdown/functions/withReleaseInfoModules.md +2 -2
- package/docs/markdown/functions/withSettingsMenuItems.md +2 -2
- package/docs/markdown/functions/withUserProfileDataSource.md +2 -2
- package/docs/markdown/globals.md +2 -2
- package/docs/markdown/interfaces/NavigationDividerItem.md +4 -4
- package/docs/markdown/interfaces/NavigationInsertItem.md +3 -3
- package/docs/markdown/interfaces/NavigationItem.md +8 -8
- package/docs/markdown/interfaces/NavigationStatus.md +3 -3
- package/docs/markdown/interfaces/ReleaseInfoModule.md +5 -5
- package/docs/markdown/interfaces/SettingsMenuItem.md +5 -5
- package/docs/markdown/type-aliases/DefaultHeaderItemComponent.md +2 -2
- package/docs/markdown/type-aliases/ExternalApp.md +2 -2
- package/docs/markdown/type-aliases/ExtractUsernameFromProfileFn.md +2 -2
- package/docs/markdown/type-aliases/Navigation.md +2 -2
- package/docs/markdown/type-aliases/NavigationWithInserts.md +2 -2
- package/docs/markdown/type-aliases/SettingsMenuItemComponent.md +2 -2
- package/docs/markdown/variables/EXTRACT_USERNAME_FROM_PROFILE.md +2 -2
- package/docs/markdown/variables/RXAP_DEFAULT_HEADER_ITEM_COMPONENT.md +2 -2
- package/docs/markdown/variables/RXAP_EXTERNAL_APP.md +2 -2
- package/docs/markdown/variables/RXAP_EXTERNAL_APP_FILTER.md +2 -2
- package/docs/markdown/variables/RXAP_FOOTER_COMPONENT.md +2 -2
- package/docs/markdown/variables/RXAP_HEADER_COMPONENT.md +2 -2
- package/docs/markdown/variables/RXAP_LAYOUT_APPS_GRID.md +2 -2
- package/docs/markdown/variables/RXAP_LOGO_CONFIG.md +2 -2
- package/docs/markdown/variables/RXAP_LOGO_CONFIG_DEFAULTS.md +2 -2
- package/docs/markdown/variables/RXAP_NAVIGATION_CONFIG.md +2 -2
- package/docs/markdown/variables/RXAP_NAVIGATION_CONFIG_INSERTS.md +2 -2
- package/docs/markdown/variables/RXAP_NAVIGATION_LAYOUT_CONFIG_DEFAULTS.md +2 -2
- package/docs/markdown/variables/RXAP_RELEASE_INFO_MODULE.md +2 -2
- package/docs/markdown/variables/RXAP_SETTINGS_MENU_ITEM.md +2 -2
- package/docs/markdown/variables/RXAP_SETTINGS_MENU_ITEM_COMPONENT.md +2 -2
- package/docs/markdown/variables/RXAP_USER_PROFILE_DATA_SOURCE.md +2 -2
- package/docs/wiki/Class.AppsButtonComponent.md +7 -7
- package/docs/wiki/Class.BaseLayoutComponent.md +1 -1
- package/docs/wiki/Class.DefaultHeaderComponent.md +9 -9
- package/docs/wiki/Class.DefaultHeaderService.md +5 -5
- package/docs/wiki/Class.ExternalAppsService.md +17 -17
- package/docs/wiki/Class.FooterComponent.md +4 -4
- package/docs/wiki/Class.FooterDirective.md +3 -3
- package/docs/wiki/Class.FooterService.md +5 -5
- package/docs/wiki/Class.HeaderComponent.md +5 -5
- package/docs/wiki/Class.HeaderDirective.md +3 -3
- package/docs/wiki/Class.HeaderService.md +5 -5
- package/docs/wiki/Class.LayoutComponent.md +5 -5
- package/docs/wiki/Class.LayoutService.md +16 -16
- package/docs/wiki/Class.LogoService.md +5 -5
- package/docs/wiki/Class.MinimalLayoutComponent.md +1 -1
- package/docs/wiki/Class.NavigationComponent.md +13 -13
- package/docs/wiki/Class.NavigationItemComponent.md +19 -19
- package/docs/wiki/Class.NavigationProgressBarComponent.md +3 -3
- package/docs/wiki/Class.NavigationService.md +11 -11
- package/docs/wiki/Class.ReleaseInfoComponent.md +5 -5
- package/docs/wiki/Class.SettingsButtonComponent.md +18 -18
- package/docs/wiki/Class.SidenavComponent.md +17 -17
- package/docs/wiki/Class.SidenavFooterDirective.md +3 -3
- package/docs/wiki/Class.SidenavHeaderDirective.md +3 -3
- package/docs/wiki/Class.SidenavToggleButtonComponent.md +4 -4
- package/docs/wiki/Class.UserProfileIconComponent.md +6 -6
- package/docs/wiki/Function.IsNavigationDividerItem.md +1 -1
- package/docs/wiki/Function.IsNavigationInsertItem.md +1 -1
- package/docs/wiki/Function.IsNavigationItem.md +1 -1
- package/docs/wiki/Function.provideExternalApps.md +1 -1
- package/docs/wiki/Function.provideLayout.md +1 -1
- package/docs/wiki/Function.withDefaultHeaderComponent.md +1 -1
- package/docs/wiki/Function.withDefaultHeaderItems.md +1 -1
- package/docs/wiki/Function.withFooterComponents.md +1 -1
- package/docs/wiki/Function.withHeaderComponents.md +1 -1
- package/docs/wiki/Function.withNavigationConfig.md +1 -1
- package/docs/wiki/Function.withNavigationInserts.md +1 -1
- package/docs/wiki/Function.withReleaseInfoModules.md +1 -1
- package/docs/wiki/Function.withSettingsMenuItems.md +1 -1
- package/docs/wiki/Function.withUserProfileDataSource.md +1 -1
- package/docs/wiki/Interface.NavigationDividerItem.md +3 -3
- package/docs/wiki/Interface.NavigationInsertItem.md +2 -2
- package/docs/wiki/Interface.NavigationItem.md +7 -7
- package/docs/wiki/Interface.NavigationStatus.md +2 -2
- package/docs/wiki/Interface.ReleaseInfoModule.md +4 -4
- package/docs/wiki/Interface.SettingsMenuItem.md +4 -4
- package/docs/wiki/TypeAlias.DefaultHeaderItemComponent.md +1 -1
- package/docs/wiki/TypeAlias.ExternalApp.md +1 -1
- package/docs/wiki/TypeAlias.ExtractUsernameFromProfileFn.md +1 -1
- package/docs/wiki/TypeAlias.Navigation.md +1 -1
- package/docs/wiki/TypeAlias.NavigationWithInserts.md +1 -1
- package/docs/wiki/TypeAlias.SettingsMenuItemComponent.md +1 -1
- package/docs/wiki/Variable.EXTRACT_USERNAME_FROM_PROFILE.md +1 -1
- package/docs/wiki/Variable.RXAP_DEFAULT_HEADER_ITEM_COMPONENT.md +1 -1
- package/docs/wiki/Variable.RXAP_EXTERNAL_APP.md +1 -1
- package/docs/wiki/Variable.RXAP_EXTERNAL_APP_FILTER.md +1 -1
- package/docs/wiki/Variable.RXAP_FOOTER_COMPONENT.md +1 -1
- package/docs/wiki/Variable.RXAP_HEADER_COMPONENT.md +1 -1
- package/docs/wiki/Variable.RXAP_LAYOUT_APPS_GRID.md +1 -1
- package/docs/wiki/Variable.RXAP_LOGO_CONFIG.md +1 -1
- package/docs/wiki/Variable.RXAP_LOGO_CONFIG_DEFAULTS.md +1 -1
- package/docs/wiki/Variable.RXAP_NAVIGATION_CONFIG.md +1 -1
- package/docs/wiki/Variable.RXAP_NAVIGATION_CONFIG_INSERTS.md +1 -1
- package/docs/wiki/Variable.RXAP_NAVIGATION_LAYOUT_CONFIG_DEFAULTS.md +1 -1
- package/docs/wiki/Variable.RXAP_RELEASE_INFO_MODULE.md +1 -1
- package/docs/wiki/Variable.RXAP_SETTINGS_MENU_ITEM.md +1 -1
- package/docs/wiki/Variable.RXAP_SETTINGS_MENU_ITEM_COMPONENT.md +1 -1
- package/docs/wiki/Variable.RXAP_USER_PROFILE_DATA_SOURCE.md +1 -1
- package/docs/wiki/globals.md +1 -1
- package/fesm2022/rxap-layout.mjs +89 -80
- package/fesm2022/rxap-layout.mjs.map +1 -1
- package/lib/default-header/default-header.component.d.ts +1 -1
- package/lib/footer/footer.component.d.ts +1 -1
- package/lib/header/header.component.d.ts +1 -1
- package/package.json +17 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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) || !navigationItem.status) {\n return of(navigationItem);\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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"}
|
|
1
|
+
{"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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"}
|