@openmfp/portal-ui-lib 0.184.23 → 0.185.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.
@@ -2017,6 +2017,11 @@ const computeDynamicFetchContext = (entityNode, ctx) => {
2017
2017
  if (node.defineEntity?.contextKey && node.defineEntity?.dynamicFetchId) {
2018
2018
  contextForEntityConfig.set(node.defineEntity.dynamicFetchId, {});
2019
2019
  addToAll(node.defineEntity.dynamicFetchId, ctx[node.defineEntity.contextKey]);
2020
+ if (node.defineEntity?.additionalContextKeys) {
2021
+ node.defineEntity.additionalContextKeys.forEach((key) => {
2022
+ addToAll(key, ctx[key]);
2023
+ });
2024
+ }
2020
2025
  }
2021
2026
  node = node.parent;
2022
2027
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openmfp-portal-ui-lib.mjs","sources":["../../projects/lib/src/lib/services/luigi-core.service.ts","../../projects/lib/src/lib/models/auth.ts","../../projects/lib/src/lib/models/entity.ts","../../projects/lib/src/lib/models/luigi.ts","../../projects/lib/src/lib/services/request-headers.service.ts","../../projects/lib/src/lib/services/portal/config.service.ts","../../projects/lib/src/lib/services/portal/auth.service.ts","../../projects/lib/src/lib/services/portal/env-config.service.ts","../../projects/lib/src/lib/services/portal/local-nodes.service.ts","../../projects/lib/src/lib/injection-tokens.ts","../../projects/lib/src/lib/services/luigi-config/global-context-config.service.ts","../../projects/lib/src/lib/services/auth/session-refresh.service.ts","../../projects/lib/src/lib/services/i18n.service.ts","../../projects/lib/src/lib/services/login-event.service.ts","../../projects/lib/src/lib/services/storage-service.ts","../../projects/lib/src/lib/services/luigi-config/iframe.service.ts","../../projects/lib/src/lib/services/luigi-config/static-settings-config.service.ts","../../projects/lib/src/lib/services/luigi-config/custom-message-listeners/reload-luigi-config.listener.ts","../../projects/lib/src/lib/services/luigi-config/custom-message-listeners.service.ts","../../projects/lib/src/lib/services/dependencies-versions.service.ts","../../projects/lib/src/lib/services/luigi-config/user-settings-config.service.ts","../../projects/lib/src/lib/services/luigi-nodes/node-utils.service.ts","../../projects/lib/src/lib/services/luigi-config/app-switcher-config.service.ts","../../projects/lib/src/lib/services/luigi-config/user-profile-config.service.ts","../../projects/lib/src/lib/services/luigi-config/luigi-breadcrumb-config.service.ts","../../projects/lib/src/lib/services/luigi-config/auth-config.service.ts","../../projects/lib/src/lib/services/luigi-nodes/local-configuration.service.ts","../../projects/lib/src/lib/services/luigi-nodes/luigi-nodes.service.ts","../../projects/lib/src/lib/services/luigi-nodes/node-context-processing.service.ts","../../projects/lib/src/lib/services/luigi-config/routing-config.service.ts","../../projects/lib/src/lib/initializers/portal-bootstrap.initializer.ts","../../projects/lib/src/lib/initializers/session-refresh.initializer.ts","../../projects/lib/src/lib/services/navigation.service.ts","../../projects/lib/src/lib/initializers/navigation-tracker.initializer.ts","../../projects/lib/src/lib/initializers/language.initializer.ts","../../projects/lib/src/lib/components/logout/logout.component.ts","../../projects/lib/src/lib/components/logout/logout.component.html","../../projects/lib/src/lib/services/luigi-nodes/intent-navigation.service.ts","../../projects/lib/src/lib/utilities/jmespath.ts","../../projects/lib/src/lib/utilities/context.ts","../../projects/lib/src/lib/services/luigi-nodes/node-sorting.service.ts","../../projects/lib/src/lib/services/luigi-nodes/children-nodes.service.ts","../../projects/lib/src/lib/services/luigi-nodes/nodes-processing.service.ts","../../projects/lib/src/lib/services/luigi-config/navigation-config.service.ts","../../projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.ts","../../projects/lib/src/lib/components/luigi/luigi.component.ts","../../projects/lib/src/lib/components/portal/portal.component.ts","../../projects/lib/src/lib/components/portal/portal.component.html","../../projects/lib/src/lib/portal-routing.ts","../../projects/lib/src/lib/utilities/custom-reuse-strategy.ts","../../projects/lib/src/lib/portal-providers.ts","../../projects/lib/src/public-api.ts","../../projects/lib/src/openmfp-portal-ui-lib.ts"],"sourcesContent":["import {\n AuthData,\n LuigiConfig,\n LuigiCustomMessage,\n LuigiGlobalContext,\n} from '../models';\nimport { Injectable } from '@angular/core';\n\nconst luigi = (globalThis as any).Luigi;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LuigiCoreService {\n setConfig(config: LuigiConfig) {\n return luigi.setConfig(config);\n }\n\n get config(): LuigiConfig {\n return luigi.getConfig();\n }\n\n getConfigValue(key: string) {\n return luigi.getConfigValue(key);\n }\n\n unloadConfig() {\n return luigi.unload();\n }\n\n sendCustomMessage(customMessage: LuigiCustomMessage) {\n return luigi.sendCustomMessage(customMessage);\n }\n\n configChanged(scope?: string) {\n luigi.configChanged(scope);\n }\n\n customMessages() {\n return luigi.customMessages();\n }\n\n navigation() {\n return luigi.navigation();\n }\n\n resetLuigi() {\n luigi.reset();\n }\n\n clearNavigationCache() {\n if (luigi.clearNavigationCache) {\n luigi.clearNavigationCache();\n }\n }\n\n showAlert(alert: any) {\n return luigi.showAlert(alert);\n }\n\n ux() {\n return luigi.ux();\n }\n\n theming() {\n return luigi.theming();\n }\n\n i18n() {\n return luigi.i18n();\n }\n\n globalSearch() {\n return luigi.globalSearch();\n }\n\n getGlobalContext(): LuigiGlobalContext {\n return luigi.getGlobalContext();\n }\n\n getWcExtendedContext(): Record<string, any> {\n return (\n document\n .querySelector('.wcContainer')\n ?.querySelector('[lui_web_component]') as any\n )?.extendedContext?.context;\n }\n\n getWcModalExtendedContext(): Record<string, any> {\n return (\n document\n .querySelector('.iframeModalCtn')\n ?.querySelector('[lui_web_component]') as any\n )?.extendedContext?.context;\n }\n\n setGlobalContext(\n globalContext: Record<string, any>,\n preventUpdate: boolean = false,\n ) {\n luigi.setGlobalContext(globalContext, preventUpdate);\n }\n\n setInGlobalContext(\n context: Record<string, any>,\n preventUpdate: boolean = false,\n ) {\n luigi.setGlobalContext(\n { ...this.getGlobalContext(), ...context },\n preventUpdate,\n );\n }\n\n routing() {\n return luigi.routing();\n }\n\n setFeatureToggle(featureToggleName: string) {\n luigi.featureToggles().setFeatureToggle(featureToggleName);\n }\n\n unsetFeatureToggle(featureToggleName: string) {\n luigi.featureToggles().unsetFeatureToggle(featureToggleName);\n }\n\n unsetAllFeatureToggles() {\n luigi\n .featureToggles()\n .getActiveFeatureToggleList()\n .forEach((ft: string) => {\n this.unsetFeatureToggle(ft);\n });\n }\n\n setFeatureToggles(featureToggles: Record<string, boolean>) {\n if (!featureToggles) {\n return;\n }\n\n for (const featureToggleName of Object.keys(featureToggles)) {\n if (featureToggles[featureToggleName]) {\n this.setFeatureToggle(featureToggleName);\n }\n }\n }\n\n isFeatureToggleActive(ft: string): boolean {\n return luigi.featureToggles().getActiveFeatureToggleList().includes(ft);\n }\n\n getActiveFeatureToggleList(): string[] {\n return luigi.featureToggles().getActiveFeatureToggleList();\n }\n\n setAuthData(authData: AuthData) {\n luigi.auth().store.setAuthData(authData);\n luigi.auth().store.setNewlyAuthorized();\n }\n\n removeAuthData() {\n luigi.auth().store.removeAuthData();\n }\n\n getAuthData(): AuthData | undefined {\n return luigi.auth().store.getAuthData();\n }\n\n setCurrentLocale(language: string) {\n luigi.i18n().setCurrentLocale(language);\n }\n}\n","export enum AuthEvent {\n AUTH_SUCCESSFUL = 'AuthSuccessful',\n AUTH_ERROR = 'AuthError',\n AUTH_EXPIRED = 'AuthExpired',\n AUTH_REFRESHED = 'AuthRefreshed',\n AUTH_EXPIRE_SOON = 'AuthExpireSoon',\n AUTH_CONFIG_ERROR = 'AuthConfigError',\n LOGOUT = 'Logout',\n}\n","export enum EntityType {\n GLOBAL = 'global',\n GLOBAL_TOPNAV = 'global.topnav',\n ENTITY_ERROR = 'entity.error',\n}\n","import { NodeContext } from './luigi-context';\n\n\nexport interface LuigiNavigationConfig {\n nodes?: LuigiNode[];\n viewGroupSettings?: any;\n appSwitcher?: any;\n globalContext?: any;\n profile?: any;\n addNavHrefs?: boolean;\n contextSwitcher?: any;\n nodeAccessibilityResolver?: any;\n validWebcomponentUrls?: string;\n intentMapping?: any;\n nodeChangeHook?: any;\n breadcrumbs?: any;\n}\n\nexport interface LuigiStaticSettings extends Record<string, any> {\n header: {\n title: string;\n logo: string;\n favicon?: string;\n };\n btpToolLayout?: boolean;\n experimental?: {\n webcomponents?: boolean;\n globalNav?: boolean;\n profileMenuFiori3?: boolean;\n navHeader?: boolean;\n breadcrumbs?: boolean;\n globalSearchCentered?: boolean;\n btpToolLayout?: boolean;\n };\n links?: {\n title: string;\n link: string;\n }[];\n}\n\nexport interface LuigiConfig {\n auth?: any;\n routing?: any;\n settings?: LuigiStaticSettings;\n lifecycleHooks?: any;\n navigation?: LuigiNavigationConfig;\n userSettings?: any;\n communication?: any;\n globalSearch?: any;\n}\n\nexport interface LuigiCustomMessage extends Record<string, any> {\n id: string;\n}\n\nexport interface EntityDefinition {\n id: string;\n dynamicFetchId?: string;\n contextKey?: string;\n useBack?: boolean;\n label?: string;\n pluralLabel?: string;\n notFoundConfig?: {\n entityListNavigationContext: string;\n sapIllusSVG: string;\n };\n graphqlEntity?: {\n group: 'string';\n kind: 'string';\n query: 'string';\n };\n}\n\nexport interface LuigiStatusBadge {\n label: string;\n type: string;\n}\n\nexport interface LuigiUserSetting {\n type: string;\n label?: string;\n style?: string;\n description?: string;\n options?: string[];\n isEditable?: boolean;\n}\n\nexport interface LuigiUserSettingsGroup {\n label?: string;\n sublabel?: string;\n title?: string;\n icon?: string;\n viewUrl?: string;\n settings?: Record<string, LuigiUserSetting>;\n}\n\nexport interface LuigiUserSettings {\n groups: Record<string, LuigiUserSettingsGroup>;\n}\n\nexport interface LuigiNodeIFramePermissions {\n allow?: string[];\n sandbox?: string[];\n}\n\nexport interface PortalLuigiNodeExtensions {\n _userSettingsConfig?: LuigiUserSettings;\n _preloadUrl?: string;\n _requiredIFramePermissionsForViewGroup?: LuigiNodeIFramePermissions;\n // internal navigation ordering\n _portalDirectChildren?: LuigiNode[];\n _intentMappings?: LuigiIntent[];\n _entityRelativePaths?: Record<string, any>;\n _entityRootChild?: boolean;\n hideFromBreadcrumb?: boolean;\n breadcrumbBadge?: BreadcrumbBadge;\n entityType?: string;\n requiredPolicies?: string[];\n visibleForEntityContext?: Record<string, any>; // experimental/deprecated\n visibleForContext?: string; // experimental\n visibleForPlugin?: boolean; // experimental\n configurationMissing?: string; // experimental\n networkVisibility?: NetworkVisibility; //experimental\n isMissingMandatoryData?: boolean; // experimental\n extensionClassName?: string;\n defineEntity?: EntityDefinition;\n order?: string;\n dxpOrder?: string;\n navSlot?: string;\n defineSlot?: string;\n configurationHint?: string; // experimental\n configurationLink?: string; // experimental\n requiredIFramePermissions?: LuigiNodeIFramePermissions;\n}\n\nexport interface LuigiNodeCategory {\n label: string;\n collapsible?: boolean;\n order?: number;\n id?: string;\n icon?: string;\n}\n\nexport interface HelpContext {\n displayName?: string;\n issueTracker?: {\n url: string;\n };\n feedbackTracker?: {\n url: string;\n };\n stackSearch?: {\n tags: string[];\n };\n documentation?: {\n url: string;\n };\n}\n\nexport interface LuigiIntent {\n baseEntityId?: string;\n relativePath?: string;\n semanticObject: string;\n action: string;\n pathSegment?: string;\n}\n\nexport interface LuigiBadgeCounter {\n label: string;\n count: () => Promise<number | string> | number | string;\n}\n\nexport interface LuigiNode extends PortalLuigiNodeExtensions {\n testId?: string;\n pathSegment?: string;\n viewUrl?: string;\n viewGroup?: string;\n label?: string;\n icon?: string;\n link?: string;\n urlSuffix?: string;\n navHeader?: any;\n hideFromNav?: boolean;\n hideSideNav?: boolean;\n virtualTree?: boolean;\n initialRoute?: any;\n openNodeInModal?: any;\n navigationContext?: string;\n showBreadcrumbs?: boolean;\n loadingIndicator?: { enabled: boolean };\n target?: IntentSpecification;\n compound?: any;\n badgeCounter?: LuigiBadgeCounter;\n category?: LuigiNodeCategory | string;\n context: NodeContext;\n visibleForFeatureToggles?: string[];\n statusBadge?: LuigiStatusBadge;\n onNodeActivation?: (node: LuigiNode) => boolean;\n isolateView?: boolean;\n webcomponent?: {\n selfRegistered: boolean;\n };\n children?:\n | LuigiNode[]\n | { (context?: any): Promise<LuigiNode[]> }\n | { (context?: any): LuigiNode[] };\n titleResolver?: any;\n globalNav?: boolean;\n parent?: LuigiNode;\n}\n\nexport interface IntentSpecification {\n type: string;\n inboundId: string;\n resolvedIntent?: LuigiIntent;\n}\n\nexport enum NetworkVisibility {\n INTERNAL = 'internal',\n INTERNET = 'internet',\n}\n\nexport interface BreadcrumbBadge {\n text: string;\n colorSchema?: BreadcrumbBadgeColorSchema;\n hint?: string;\n}\n\nexport type BreadcrumbBadgeColorSchema =\n | '1'\n | '2'\n | '3'\n | '4'\n | '5'\n | '6'\n | '7'\n | '8'\n | '9'\n | '10';","import { LuigiCoreService } from './luigi-core.service';\nimport { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RequestHeadersService {\n constructor(\n private luigiCoreService: LuigiCoreService,\n private route: ActivatedRoute,\n ) {}\n\n public createOptionsWithAuthHeader() {\n let language = this.luigiCoreService.i18n().getCurrentLocale();\n const authData = this.luigiCoreService.getAuthData();\n\n this.route.queryParams.subscribe((params) => {\n if (params['language']) {\n language = params['language'];\n }\n });\n\n const headers = new HttpHeaders({\n 'Accept-Language': language || '',\n });\n\n if (!authData?.idToken) {\n return {\n headers,\n };\n }\n\n return {\n headers: headers.append('authorization', 'Bearer ' + authData.idToken),\n };\n }\n}\n","import { EntityConfig, PortalConfig } from '../../models';\nimport { RequestHeadersService } from '../request-headers.service';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigService {\n private portalConfigCachePromise: Promise<PortalConfig> | undefined;\n\n private entityConfigCache: Record<\n string /* entity */,\n Record<string /* ctx */, Promise<EntityConfig>>\n > = {};\n\n constructor(\n private http: HttpClient,\n private requestHeadersService: RequestHeadersService,\n ) {}\n\n async getPortalConfig(): Promise<PortalConfig> {\n if (this.portalConfigCachePromise) {\n return this.portalConfigCachePromise;\n }\n\n const options = this.requestHeadersService.createOptionsWithAuthHeader();\n this.portalConfigCachePromise = firstValueFrom(\n this.http.get<PortalConfig>('/rest/config', options),\n ).catch((e) => {\n if (e instanceof HttpErrorResponse && e.status === 403) {\n window.location.assign('/logout?error=invalidToken');\n }\n throw e;\n });\n\n return this.portalConfigCachePromise;\n }\n\n async reloadConfig(\n entity: string,\n context?: Record<string, string>,\n ): Promise<void> {\n if (!entity) {\n this.portalConfigCachePromise = undefined;\n await this.getPortalConfig();\n } else {\n try {\n const entityCacheKey = JSON.stringify(context);\n delete this.entityConfigCache[entity][entityCacheKey];\n } catch (e) {\n console.debug(\n `Error deleting entity config cache for entity: ${entity}, context: ${JSON.stringify(context)}, cache: ${JSON.stringify(this.entityConfigCache)}`,\n e,\n );\n }\n\n await this.getEntityConfig(entity, context);\n }\n }\n\n async getEntityConfig(\n entity: string,\n context?: Record<string, string>,\n ): Promise<EntityConfig> {\n if (!this.entityConfigCache[entity]) {\n this.entityConfigCache[entity] = {};\n }\n\n const entityCacheKey = JSON.stringify(context);\n const cachedConfig = this.entityConfigCache[entity][entityCacheKey];\n if (cachedConfig) {\n return cachedConfig;\n }\n\n const options = this.requestHeadersService.createOptionsWithAuthHeader();\n const entityConfig = firstValueFrom(\n this.http.get<EntityConfig>(`/rest/config/${entity}`, {\n ...options,\n ...{ params: context },\n }),\n );\n\n this.entityConfigCache[entity][entityCacheKey] = entityConfig;\n return entityConfig;\n }\n\n clearEntityConfigCache(): void {\n this.entityConfigCache = {};\n }\n}\n","import {\n AuthData,\n AuthEvent,\n AuthTokenData,\n UserData,\n UserTokenData,\n} from '../../models';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { jwtDecode } from 'jwt-decode';\nimport { Observable, Subject, lastValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n private authEventSubject = new Subject<AuthEvent>();\n private authData!: AuthData;\n\n constructor(private http: HttpClient) {}\n\n get authEvents(): Observable<AuthEvent> {\n return this.authEventSubject.asObservable();\n }\n\n public authEvent(event: AuthEvent) {\n this.authEventSubject.next(event);\n }\n\n public async refresh(): Promise<AuthTokenData | undefined> {\n const response = await lastValueFrom(\n this.http.post<AuthTokenData | undefined>('/rest/auth/refresh', {}),\n );\n\n this.setAuthData(response);\n return response;\n }\n\n private setAuthData(authTokenData: AuthTokenData | undefined): void {\n if (!authTokenData) {\n return;\n }\n\n this.authData = {\n accessTokenExpirationDate: this.processExpDate(authTokenData.expires_in),\n idToken: authTokenData.id_token,\n };\n }\n\n public getAuthData(): AuthData {\n return this.authData;\n }\n\n private parseJwt = (token: string): any => {\n try {\n return jwtDecode(token);\n } catch (Error) {\n return null;\n }\n };\n\n getToken = (): any => {\n const auth = this.getAuthData();\n if (auth) {\n return auth.idToken;\n }\n return {};\n };\n\n private getUser(): UserTokenData {\n const auth = this.getAuthData();\n if (auth) {\n return this.parseJwt(auth.idToken);\n }\n return {} as UserTokenData;\n }\n\n getUserInfo(): UserData {\n const user = this.getUser() || ({} as UserTokenData);\n\n const firstName = user.first_name || user.given_name || '';\n const lastName = user.last_name || user.family_name || '';\n const initialsFirstName: string = firstName[0] || '';\n const initialsLastName: string = lastName[0] || '';\n\n return {\n name: `${firstName} ${lastName}`,\n email: user.mail || user.email || '',\n description: user.mail || user.email || '',\n picture: '',\n icon: false,\n initials: initialsFirstName + initialsLastName,\n userId: user.sub || '',\n };\n }\n\n private processExpDate(expiresInSeconds: string): number {\n const expiresIn = Number(expiresInSeconds);\n return new Date().getTime() + expiresIn * 1000;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { ClientEnvironment } from '../../models';\nimport { lastValueFrom, tap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EnvConfigService {\n private http = inject(HttpClient);\n private envConfigCache: ClientEnvironment;\n\n public async getEnvConfig(): Promise<ClientEnvironment> {\n if (this.envConfigCache) {\n return this.envConfigCache;\n }\n\n await lastValueFrom(\n this.http\n .get<ClientEnvironment>('/rest/envconfig')\n .pipe(tap((result) => (this.envConfigCache = result)))\n );\n\n return this.envConfigCache;\n }\n}\n","import { ContentConfiguration } from '../../models';\nimport { TransformResult } from '../../models/node-transform';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { lastValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalNodesService {\n private http = inject(HttpClient);\n private luigiCoreService = inject(LuigiCoreService);\n\n async getLuigiNodesFromConfigurations(\n contentConfigurations: ContentConfiguration[],\n ): Promise<TransformResult | null> {\n if (contentConfigurations.length === 0) {\n return null;\n }\n\n const language = this.luigiCoreService.i18n().getCurrentLocale();\n return await lastValueFrom(\n this.http.post<TransformResult>(`/rest/localnodes`, {\n language,\n contentConfigurations,\n }),\n );\n }\n}\n","export const ERROR_COMPONENT_CONFIG = 'OPENMFP_ERROR_COMPONENT_CONFIG';\n\nexport const THEMING_SERVICE = 'OPENMFP_THEMING_SERVICE';\n\nexport const LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_STATIC_SETTINGS_CONFIG_SERVICE';\nexport const LUIGI_CUSTOM_MESSAGE_LISTENERS_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_CUSTOM_MESSAGE_LISTENERS';\nexport const LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE';\nexport const LUIGI_APP_SWITCHER_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_APP_SWITCHER_CONFIG_SERVICE';\nexport const LUIGI_USER_PROFILE_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_USER_PROFILE_CONFIG_SERVICE';\nexport const LUIGI_BREADCRUMB_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_BREADCRUMB_CONFIG_SERVICE';\nexport const LUIGI_NODE_CHANGE_HOOK_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_NODE_CHANGE_HOOK_CONFIG_SERVICE';\nexport const LUIGI_EXTENDED_GLOBAL_CONTEXT_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_NODES_EXTENDED_CONTEXT_SERVICE';\n\nexport const LOCAL_CONFIGURATION_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LOCAL_CONFIGURATION_SERVICE';\nexport const LUIGI_NODES_CUSTOM_GLOBAL_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_NODES_CUSTOM_GLOBAL_SERVICE';\nexport const LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_CUSTOM_NODE_PROCESSING_SERVICE';\nexport const LUIGI_CUSTOM_NODE_CONTEXT_PROCESSING_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_CUSTOM_NODE_CONTEXT_PROCESSING_SERVICE';\n\nexport const LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE';\n\nexport const HEADER_BAR_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_HEADER_BAR_CONFIG_SERVICE';\n\nexport const LUIGI_ROUTING_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_ROUTING_CONFIG_SERVICE';\n","import { LUIGI_EXTENDED_GLOBAL_CONTEXT_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { LuigiGlobalContext } from '../../models';\nimport { LuigiExtendedGlobalContextConfigService } from '../luigi-nodes/luigi-extended-global-context-config.service';\nimport { AuthService, ConfigService } from '../portal';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class GlobalContextConfigService {\n private authService = inject(AuthService);\n private configService = inject(ConfigService);\n private luigiExtendedGlobalContextConfigService =\n inject<LuigiExtendedGlobalContextConfigService>(\n LUIGI_EXTENDED_GLOBAL_CONTEXT_CONFIG_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n\n async getGlobalContext(): Promise<LuigiGlobalContext> {\n const portalConfig = await this.configService.getPortalConfig();\n const userInfo = this.authService.getUserInfo();\n return {\n ...(await this.luigiExtendedGlobalContextConfigService?.createLuigiExtendedGlobalContext()),\n portalBaseUrl: window.location.origin,\n portalContext: portalConfig.portalContext,\n userId: userInfo.userId,\n userEmail: userInfo.email,\n token: this.authService.getToken(),\n };\n }\n}\n","import { AuthEvent } from '../../models';\nimport { GlobalContextConfigService } from '../luigi-config/global-context-config.service';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { AuthService } from '../portal';\nimport { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class SessionRefreshService {\n constructor(\n private authService: AuthService,\n private luigiCoreService: LuigiCoreService,\n private navigationGlobalContextConfigService: GlobalContextConfigService,\n ) {}\n\n async refresh() {\n const isRefreshed = await this.authService.refresh();\n\n if (!isRefreshed) {\n return;\n }\n\n this.authService.authEvent(AuthEvent.AUTH_REFRESHED);\n this.luigiCoreService.setAuthData(this.authService.getAuthData());\n this.luigiCoreService.setGlobalContext(\n await this.navigationGlobalContextConfigService.getGlobalContext(),\n true,\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { LuigiCoreService } from './luigi-core.service';\nimport { EnvConfigService } from './portal';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class I18nService {\n private envConfigService = inject(EnvConfigService);\n private luigiCoreService = inject(LuigiCoreService);\n\n fallbackLanguage: string = 'en';\n translationTable: any = {};\n currentLanguage: string = '';\n\n afterInit() {\n this.currentLanguage = this.luigiCoreService.i18n().getCurrentLocale();\n this.luigiCoreService\n .i18n()\n .addCurrentLocaleChangeListener((locale: string) => {\n this.currentLanguage = locale;\n });\n }\n\n /**\n * get translation synchronously. If nothing is found for current locale try to get tranlsation for fallback language\n *\n * @param key search key\n * @param interpolations in translation table\n * @param locale\n * @returns returns translated search key or search key, if nothing matched\n */\n getTranslation(\n key: string,\n interpolations?: Record<string, string>,\n locale?: string\n ) {\n let result = this.getInternalTranslation(key, interpolations, locale);\n // fallback language\n if (!result) {\n result = this.findTranslation(\n key,\n this.translationTable,\n this.fallbackLanguage,\n interpolations\n );\n }\n return result ? result : key;\n }\n\n /**\n * Get translation asynchronously (especially for logout and theming translation in user settings dialog).\n * If nothing is found for current locale try to get translation for fallback language\n *\n * @param key search key\n * @param interpolations in translation table\n * @param locale\n * @returns returns translated search key or search key, if nothing matched\n */\n async getTranslationAsync(\n key: string,\n interpolations?: Record<string, string>,\n locale?: string\n ): Promise<string> {\n return new Promise((res) => {\n let result = this.getInternalTranslation(key, interpolations, locale);\n // fallback language\n if (!result) {\n if (\n this.translationTable &&\n !this.translationTable[this.fallbackLanguage]\n ) {\n this.fetchTranslationFile(this.fallbackLanguage).then(() => {\n result = this.findTranslation(\n key,\n this.translationTable,\n this.fallbackLanguage,\n interpolations\n );\n res(result ? result : key);\n });\n } else {\n result = this.findTranslation(\n key,\n this.translationTable,\n this.fallbackLanguage,\n interpolations\n );\n res(result ? result : key);\n }\n } else {\n res(result ? result : key);\n }\n });\n }\n\n /**\n * Finds the translated value based on given key.\n *\n * @param key key to be translated\n * @param translationTable translation table\n * @param locale current language\n * @param interpolations in translation table\n * @returns translation value\n */\n findTranslation(\n key: string,\n translationTable: any,\n locale: string,\n interpolations?: Record<string, string>\n ) {\n if (translationTable[locale]) {\n const translation =\n typeof translationTable[locale][key] === 'object'\n ? translationTable[locale][key].join('<br>')\n : translationTable[locale][key];\n if (interpolations) {\n return this.findInterpolations(translation, interpolations);\n }\n return translation;\n }\n }\n\n /**\n * Replaces values that are defined in translation strings\n *\n * @param value to be translated\n * @param interpolations in translation table\n * @returns interpolation\n * @example\n * findInterpolations('Environment {num}', {num: 1})\n */\n findInterpolations(value: string, interpolations: Record<string, string>) {\n if (value) {\n Object.keys(interpolations).forEach((item) => {\n value = value.replace(\n new RegExp('{' + item + '}', 'gi'),\n interpolations[item]\n );\n });\n return value;\n }\n return undefined;\n }\n\n /**\n * wraps fetched translation table to a specific locale\n *\n * @param locale current language\n * @param data translation json object for specific locale\n */\n addTranslationFile(locale: string, data: Record<string, string>) {\n if (data && locale) {\n this.translationTable[locale] = data;\n }\n }\n\n /**\n * fetch generated translation json files\n *\n * @param locale current language\n * @returns translationTable for a specific language\n */\n async fetchTranslationFile(locale: string) {\n return new Promise((res) => {\n fetch(`/assets/translation-files/${locale}.json`)\n .then((response) => {\n return response.json();\n })\n .then((data) => {\n this.addTranslationFile(locale, data);\n res(true);\n })\n .catch((error) => {\n console.error('Error:', error);\n this.addTranslationFile(locale, {});\n res(false);\n });\n });\n }\n\n /**\n *\n * @param key search key\n * @param interpolations in translation table\n * @param locale\n * @returns tranlsated search key or search key, if nothing matched\n */\n private getInternalTranslation(\n key: string,\n interpolations?: Record<string, string>,\n locale?: string\n ): string {\n if (!key) return '';\n this.currentLanguage =\n locale ||\n this.currentLanguage ||\n this.luigiCoreService.i18n().getCurrentLocale();\n return this.findTranslation(\n key,\n this.translationTable,\n this.currentLanguage,\n interpolations\n );\n }\n\n async getValidLanguages(): Promise<{ value: string; label: string }[]> {\n const languages = [\n { value: 'en', label: 'USERSETTINGSDIALOG_LANGUAGE_EN' },\n ];\n\n try {\n const { developmentInstance } =\n await this.envConfigService.getEnvConfig();\n\n if (developmentInstance) {\n languages.push({\n value: 'de',\n label: 'USERSETTINGSDIALOG_LANGUAGE_DE',\n });\n }\n } finally {\n return languages;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport enum LoginEventType {\n LOGIN_TRIGGERED = 'LoginTriggered',\n LOGOUT_TRIGGERED = 'LogoutTriggered',\n}\n\nexport interface LoginEvent {\n type: LoginEventType;\n queryParams?: Record<string, any>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LoginEventService {\n private events: Subject<LoginEvent> = new Subject<LoginEvent>();\n\n get loginEvents(): Observable<LoginEvent> {\n return this.events.asObservable();\n }\n\n loginEvent(event: LoginEvent) {\n this.events.next(event);\n }\n}\n","import { LocalDevelopmentSettings, UserData } from '../models';\nimport { UserSettingsValues } from './luigi-config/user-settings-config.service';\n\nexport enum LocalStorageKeys {\n LAST_NAVIGATION_URL = 'openmfp.navigation.lastUrl',\n USER_SETTINGS = 'openmfp.settings.userSettings',\n LOCAL_DEVELOPMENT_SETTINGS = 'openmfp.settings.localDevelopmentSettings',\n FEATURE_TOGGLE_SETTINGS = 'openmfp.settings.featureToggleSettings',\n // deprecated to be removed\n DEVELOPMENT_MODE_CONFIG = 'dev-mode-settings',\n}\n\nexport const localDevelopmentSettingsLocalStorage = {\n read: (localStorageKey?: string): LocalDevelopmentSettings | null => {\n let localDevelopmentSettingsFromLocalStore: string | null;\n try {\n localDevelopmentSettingsFromLocalStore = localStorage.getItem(\n localStorageKey || LocalStorageKeys.LOCAL_DEVELOPMENT_SETTINGS,\n );\n localStorageKey && localStorage.removeItem(localStorageKey);\n } catch (e) {\n console.warn('localStorage is not available:', e);\n return null;\n }\n\n try {\n if (!localDevelopmentSettingsFromLocalStore) {\n return null;\n }\n\n return JSON.parse(localDevelopmentSettingsFromLocalStore);\n } catch (e) {\n console.error(\n 'Failed to parse the local development settings in your localstorage.',\n e,\n );\n }\n return null;\n },\n\n store: (localDevelopmentSetting: LocalDevelopmentSettings) => {\n try {\n localStorage.setItem(\n LocalStorageKeys.LOCAL_DEVELOPMENT_SETTINGS,\n JSON.stringify(localDevelopmentSetting),\n );\n } catch (e) {\n console.error(\n 'Failed to stringify the local development settings setting into your localstorage.',\n e,\n );\n }\n },\n};\n\nexport const userSettingsLocalStorage = {\n read: (userInfo: UserData): Promise<UserSettingsValues> => {\n const transientSettings = {\n frame_userAccount: {\n name: userInfo.name || '',\n email: userInfo.email || '',\n },\n };\n\n return new Promise((resolve, reject) => {\n try {\n const storedSettings = localStorage.getItem(\n LocalStorageKeys.USER_SETTINGS,\n );\n const settings = storedSettings ? JSON.parse(storedSettings) : {};\n\n const resultingSettings = { ...settings, ...transientSettings };\n if (settings.frame_userAccount && transientSettings.frame_userAccount) {\n resultingSettings.frame_userAccount = {\n ...settings.frame_userAccount,\n ...transientSettings.frame_userAccount,\n };\n }\n if (resultingSettings.frame_userAccount?.language === undefined) {\n resultingSettings.frame_userAccount.language = 'en';\n }\n\n resolve(resultingSettings);\n } catch (e) {\n console.error('Error reading user settings', e);\n reject({\n closeDialog: true,\n message: 'Could not read userSettings from storage...',\n });\n }\n });\n },\n\n store: async (settings: UserSettingsValues): Promise<UserSettingsValues> => {\n if (settings.frame_userAccount && settings.frame_userAccount.language) {\n delete settings.frame_userAccount.name;\n delete settings.frame_userAccount.email;\n } else {\n delete settings.frame_userAccount;\n }\n\n return new Promise((resolve, reject) => {\n try {\n localStorage.setItem(\n LocalStorageKeys.USER_SETTINGS,\n JSON.stringify(settings),\n );\n resolve(settings);\n } catch (e) {\n console.error('Error storing user settings', e);\n reject({\n closeDialog: true,\n message: 'Could not write userSettings to storage...',\n });\n }\n });\n },\n};\n\nexport const featureToggleLocalStorage = {\n read: (): Record<string, boolean> => {\n try {\n const storedSettings = localStorage.getItem(\n LocalStorageKeys.FEATURE_TOGGLE_SETTINGS,\n );\n return storedSettings ? JSON.parse(storedSettings) : {};\n } catch (e) {\n console.error('Error reading feature toggle settings', e);\n return {};\n }\n },\n\n store: (featureToggleSettings: Record<string, boolean>) => {\n try {\n localStorage.setItem(\n LocalStorageKeys.FEATURE_TOGGLE_SETTINGS,\n JSON.stringify(featureToggleSettings),\n );\n } catch (e) {\n console.error('Error storing feature toggle settings', e);\n }\n },\n};\n","import { inject, Injectable } from '@angular/core';\nimport { LuigiNode } from '../../models';\nimport { LuigiCoreService } from '../luigi-core.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IframeService {\n private luigiCoreService = inject(LuigiCoreService);\n\n private isIFrameFeaturePolicyAllowed(policy: string, iframeURL: string) {\n // should be connected to a still to be developed permission management logic\n return true;\n }\n\n private isIFrameSandboxPermissionAllowed(policy: string, iframeURL: string) {\n // should be connected to a still to be developed permission management logic\n return true;\n }\n\n public iFrameCreationInterceptor() {\n return (iframe, viewGroup: string, navigationNode, microFrontendType) => {\n this.applyIframePermissions(iframe, navigationNode, viewGroup);\n };\n }\n\n private applyIframePermissions(\n iframe: Element,\n node: LuigiNode,\n viewGroup: string\n ): void {\n let permissions = node?.requiredIFramePermissions;\n\n if (!permissions && viewGroup) {\n const viewGroupSettings = this.luigiCoreService.getConfigValue(\n 'navigation.viewGroupSettings'\n );\n const viewGroupConfig =\n (viewGroupSettings && viewGroupSettings[viewGroup]) || {};\n permissions = viewGroupConfig.requiredIFramePermissions;\n }\n\n if (!permissions) {\n return;\n }\n\n if (permissions.allow) {\n let allow = (iframe.getAttribute('allow') || '').trim();\n if (allow.length > 0 && !allow.endsWith(';')) {\n allow += ';';\n }\n permissions.allow.forEach((policy) => {\n if (\n this.isIFrameFeaturePolicyAllowed(policy, this.getIframeSrc(iframe))\n ) {\n // feature policies are separated by semicolon\n allow += ` ${policy};`;\n }\n });\n iframe.setAttribute('allow', allow.trim());\n }\n\n if (permissions.sandbox) {\n let sandbox = (iframe.getAttribute('sandbox') || '').trim();\n permissions.sandbox.forEach((permission) => {\n if (\n this.isIFrameSandboxPermissionAllowed(\n permission,\n this.getIframeSrc(iframe)\n )\n ) {\n // sandbox permission are separated by whitespace\n sandbox += ' ' + permission;\n }\n });\n iframe.setAttribute('sandbox', sandbox.trim());\n }\n }\n\n private getIframeSrc(iframe: Element): string {\n const src = iframe.getAttribute('src');\n if (!src) {\n this.luigiCoreService.showAlert({\n text: 'Iframe source not found',\n type: 'error',\n });\n\n throw new Error('Iframe source not found');\n }\n\n return src;\n }\n}\n","import { LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { LuigiStaticSettings } from '../../models';\nimport { I18nService } from '../i18n.service';\nimport { IframeService } from './iframe.service';\nimport { Injectable, inject } from '@angular/core';\n\nexport interface StaticSettingsConfigService {\n getStaticSettingsConfig(): Promise<LuigiStaticSettings>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StaticSettingsConfigServiceImpl\n implements StaticSettingsConfigService\n{\n private customStaticSettingsConfigService =\n inject<StaticSettingsConfigService>(\n LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN as any,\n {\n optional: true,\n },\n );\n private i18nService = inject(I18nService);\n private iframeService = inject(IframeService);\n\n async getStaticSettingsConfig(): Promise<LuigiStaticSettings> {\n const logo = 'assets/images/logo.png';\n const favicon = 'assets/images/favicon.ico';\n\n return {\n header: {\n title: 'OpenMFP Portal',\n logo,\n favicon,\n },\n globalSideNavigation: true,\n experimental: {\n btpToolLayout: true,\n globalNav: true,\n },\n btpToolLayout: true,\n responsiveNavigation: 'Fiori3',\n featureToggles: {\n queryStringParam: 'ft',\n },\n appLoadingIndicator: {\n hideAutomatically: true,\n },\n iframeCreationInterceptor: this.iframeService.iFrameCreationInterceptor(),\n customTranslationImplementation: this.i18nService,\n ...(await this.customStaticSettingsConfigService?.getStaticSettingsConfig()),\n };\n }\n}\n","import { LuigiCoreService } from '../../luigi-core.service';\nimport { ConfigService } from '../../portal';\nimport { CustomMessageListener } from '../custom-message-listener';\nimport { Injectable, inject } from '@angular/core';\n\ninterface ReloadLuigiConfigMessage {\n origin: string;\n action: string;\n id: string;\n entity: string;\n context: Record<string, any>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReloadLuigiConfigListener implements CustomMessageListener {\n private configService = inject(ConfigService);\n private luigiCoreService = inject(LuigiCoreService);\n\n messageId(): string {\n return 'openmfp.reload-luigi-config';\n }\n\n async onCustomMessageReceived(\n customMessage: ReloadLuigiConfigMessage,\n mfObject: any,\n mfNodesObject: any,\n ): Promise<void> {\n console.debug(\n `Reloading Luigi config from ${customMessage.origin}, action: ${customMessage.action}\n for entity: ${customMessage.entity ?? 'global'} \n with context: ${JSON.stringify(customMessage.context)}`,\n );\n await this.configService.reloadConfig(\n customMessage.entity,\n customMessage.context,\n );\n this.luigiCoreService.resetLuigi();\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { LUIGI_CUSTOM_MESSAGE_LISTENERS_INJECTION_TOKEN } from '../../injection-tokens';\nimport { CustomMessageListener } from './custom-message-listener';\nimport { ReloadLuigiConfigListener } from './custom-message-listeners/reload-luigi-config.listener';\n\nexport interface MessageListener {\n (msg: any, mf: any, mfNodes: any): void;\n}\n\nexport interface MessageListeners {\n customMessagesListeners: Record<string, MessageListener>;\n}\n\n/**\n * This class holds the customMessageListeners for custom messages used by the application portal.\n * See also {@link https://docs.luigi-project.io/docs/communication/?section=luigi-core-to-luigi-client}\n * See also {@link https://docs.luigi-project.io/docs/luigi-core-api/?section=custommessages}\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class CustomMessageListenersService {\n private readonly listeners: CustomMessageListener[];\n\n constructor(\n private messageListeners: ReloadLuigiConfigListener,\n @Optional()\n @Inject(LUIGI_CUSTOM_MESSAGE_LISTENERS_INJECTION_TOKEN)\n private customMessageListeners: CustomMessageListener[]\n ) {\n this.listeners = [this.messageListeners, ...(this.customMessageListeners || []).filter((l) => !!l)];\n }\n\n /**\n * An object containing the property 'listeners' in which the message-id and listener assignments are made.\n * See also {@link https://docs.luigi-project.io/docs/communication/?section=luigi-core-to-luigi-client}\n */\n public getMessageListeners(): MessageListeners {\n const result: MessageListeners = { customMessagesListeners: {} };\n for (const listener of this.listeners) {\n const obj = {\n [listener.messageId()]: (msg, mf, mfNodes) => {\n listener.onCustomMessageReceived(msg, mf, mfNodes);\n },\n };\n Object.assign(result.customMessagesListeners, obj);\n }\n return result;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class DependenciesVersionsService {\n private httpClient = inject(HttpClient);\n\n read(): Promise<Record<string, string>> {\n return firstValueFrom(\n this.httpClient.get<Record<string, string>>(\n '/assets/dependencies-versions.json'\n )\n );\n }\n\n transformVersionsConfig(\n versionsConfig: Record<string, string>\n ): Record<string, any> {\n return Object.entries(versionsConfig).reduce(\n (acc, [key, value]) => {\n const label = key\n .replace(/([A-Z])/g, ' $1')\n .replace(/^./, (char) => char.toUpperCase());\n\n acc[key] = {\n type: 'string',\n label,\n value,\n isEditable: false,\n };\n\n return acc;\n },\n {} as Record<string, any>\n );\n }\n}\n","import { THEMING_SERVICE } from '../../injection-tokens';\nimport {\n LocalDevelopmentSettings,\n LuigiNode,\n LuigiUserSettings,\n} from '../../models';\nimport { DependenciesVersionsService } from '../dependencies-versions.service';\nimport { I18nService } from '../i18n.service';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { AuthService, EnvConfigService } from '../portal';\nimport {\n featureToggleLocalStorage,\n localDevelopmentSettingsLocalStorage,\n userSettingsLocalStorage,\n} from '../storage-service';\nimport { ThemingService } from '../theming.service';\nimport { Injectable, inject } from '@angular/core';\nimport { isEqual } from 'lodash';\n\nexport interface UserSettings {\n frame_userAccount?: any;\n frame_appearance?: any;\n frame_development?: any;\n frame_versions?: any;\n frame_featureToggle?: any;\n}\n\nexport interface UserSettingsValues {\n frame_userAccount?: {\n name?: string;\n email?: string;\n language: string;\n };\n frame_appearance?: {\n selectedTheme: string;\n };\n frame_development?: {\n localDevelopmentSettings: LocalDevelopmentSettings;\n };\n frame_versions?: any;\n frame_featureToggle?: {\n featureToggleSettings: Record<string, boolean>;\n };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class UserSettingsConfigService {\n private luigiThemingService = inject<ThemingService>(THEMING_SERVICE as any, {\n optional: true,\n });\n private authService = inject(AuthService);\n private i18nService = inject(I18nService);\n private luigiCoreService = inject(LuigiCoreService);\n private dependenciesVersionsService = inject(DependenciesVersionsService);\n private envConfigService = inject(EnvConfigService);\n private versionsConfig: Record<string, string> = {};\n\n async getUserSettings(childrenByEntity: Record<string, LuigiNode[]>) {\n const userSettingsConfig = this.extractUserSettings(childrenByEntity);\n const groupsFromNodes = this.getGroupsFromUserSettings(userSettingsConfig);\n this.versionsConfig = await this.readDependenciesVersions();\n const envConfig = await this.envConfigService.getEnvConfig();\n\n let coreGroups = await this.getCoreUserSettingsGroups();\n\n return {\n userSettingsProfileMenuEntry: {\n label: 'USERSETTINGSPROFILEMENUENTRY_SETTINGS',\n },\n userSettingsDialog: {\n dismissBtn: 'USERSETTINGSDIALOG_CANCEL',\n saveBtn: 'USERSETTINGSDIALOG_SAVE',\n dialogHeader: 'USERSETTINGSDIALOG_HEADER',\n },\n userSettingGroups: { ...coreGroups, ...groupsFromNodes },\n\n readUserSettings: () => {\n return userSettingsLocalStorage\n .read(this.authService.getUserInfo())\n .then((setting: any) => {\n return {\n ...(setting || {}),\n frame_versions: this.versionsConfig,\n };\n });\n },\n\n storeUserSettings: (\n settings: UserSettingsValues,\n previous: UserSettingsValues,\n ) => {\n userSettingsLocalStorage.store(settings);\n this.applyNewTheme(settings, previous);\n this.changeToSelectedLanguage(settings, previous);\n this.saveLocalDevelopmentSettings(settings, previous);\n if (envConfig.uiOptions?.includes('enableFeatureToggleSetting')) {\n this.saveFeatureToggleSettings(settings);\n }\n },\n };\n }\n\n private async getCoreUserSettingsGroups() {\n const envConfig = await this.envConfigService.getEnvConfig();\n const settings: UserSettings = {};\n\n await this.addUserSettings(settings);\n await this.addThemingSettings(settings);\n this.addLocalDevelopmentSettings(settings);\n if (envConfig.uiOptions?.includes('enableFeatureToggleSetting')) {\n this.addFeatureToggleSettings(settings);\n }\n this.addInfoSettings(settings);\n\n return settings;\n }\n\n private saveFeatureToggleSettings(settings: UserSettingsValues) {\n const currentFeatureToggleSettings =\n settings?.frame_featureToggle?.featureToggleSettings;\n\n if (currentFeatureToggleSettings) {\n featureToggleLocalStorage.store(currentFeatureToggleSettings);\n this.luigiCoreService.unsetAllFeatureToggles();\n this.luigiCoreService.setFeatureToggles(currentFeatureToggleSettings);\n globalThis.location.reload();\n }\n }\n\n private saveLocalDevelopmentSettings(\n settings: UserSettingsValues,\n previous: UserSettingsValues,\n ) {\n const currentLocalDevelopmentSettings =\n settings?.frame_development?.localDevelopmentSettings;\n const previousLocalDevelopmentSettings =\n previous?.frame_development?.localDevelopmentSettings;\n if (\n currentLocalDevelopmentSettings &&\n (!localDevelopmentSettingsLocalStorage.read() ||\n !isEqual(\n currentLocalDevelopmentSettings,\n previousLocalDevelopmentSettings,\n ))\n ) {\n localDevelopmentSettingsLocalStorage.store(\n currentLocalDevelopmentSettings,\n );\n\n globalThis.location.reload();\n }\n }\n\n private extractUserSettings(\n childrenByEntity: Record<string, LuigiNode[]>,\n ): LuigiUserSettings[] {\n const userSettings = Object.values(childrenByEntity)\n .reduce((accumulator, value) => accumulator.concat(value), [])\n .reduce((accu, n) => {\n if (n._userSettingsConfig) {\n accu.push(n._userSettingsConfig);\n }\n return accu;\n }, [] as LuigiUserSettings[]);\n\n return userSettings;\n }\n\n private changeToSelectedLanguage(\n settings: UserSettingsValues,\n previous: UserSettingsValues,\n ) {\n if (\n settings?.frame_userAccount?.language &&\n previous?.frame_userAccount?.language !==\n settings?.frame_userAccount?.language\n ) {\n globalThis.location.reload();\n }\n }\n\n private applyNewTheme(\n settings: UserSettingsValues,\n previous: UserSettingsValues,\n ) {\n if (\n settings?.frame_appearance?.selectedTheme &&\n previous?.frame_appearance?.selectedTheme !==\n settings?.frame_appearance?.selectedTheme\n ) {\n this.luigiThemingService?.applyTheme(\n settings.frame_appearance.selectedTheme,\n );\n }\n }\n\n private getGroupsFromUserSettings(luigiUserSettings: LuigiUserSettings[]) {\n const settingsGroups = {};\n luigiUserSettings.forEach((userConfig) => {\n if (userConfig?.groups) {\n Object.keys(userConfig.groups).forEach((groupId) => {\n const groupConfig = userConfig.groups[groupId];\n settingsGroups[groupId] = groupConfig;\n });\n }\n });\n\n return settingsGroups;\n }\n\n private async getSelectedThemeDisplayName(): Promise<string> {\n const user = this.authService.getUserInfo();\n const userSettings = await userSettingsLocalStorage.read(user);\n const selectedTheme =\n userSettings?.frame_appearance?.selectedTheme ||\n this.luigiThemingService?.getDefaultThemeId();\n return (\n this.luigiThemingService\n ?.getAvailableThemes()\n ?.find((t) => t.id === selectedTheme)?.name || ''\n );\n }\n\n private async addThemingSettings(settings: UserSettings) {\n if (this.luigiThemingService) {\n settings.frame_appearance = {\n label: 'USERSETTINGSDIALOG__APPEARANCE',\n sublabel: await this.getSelectedThemeDisplayName(),\n icon: 'palette',\n title: 'USERSETTINGSDIALOG__APPEARANCE',\n viewUrl: '/settings-theming#disable_loading_indicator',\n settings: {},\n };\n }\n }\n\n private addLocalDevelopmentSettings(settings: UserSettings) {\n settings.frame_development = {\n label: 'LOCAL_DEVELOPMENT_SETTINGS_DIALOG_LABEL',\n sublabel: 'LOCAL_DEVELOPMENT_SETTINGS_DIALOG_SUBLABEL',\n icon: 'developer-settings',\n iconClassAttribute: localDevelopmentSettingsLocalStorage.read()?.isActive\n ? 'settings-icon-active'\n : '',\n title: 'LOCAL_DEVELOPMENT_SETTINGS_DIALOG_TITLE',\n viewUrl: '/assets/openmfp-portal-ui-wc.js#development-settings',\n webcomponent: {\n selfRegistered: true,\n },\n context: {\n translationTable: this.i18nService.translationTable,\n },\n };\n }\n\n private async addUserSettings(settings: UserSettings) {\n const userInfo = this.authService.getUserInfo();\n const { userAvatarUrl } = await this.envConfigService.getEnvConfig();\n const imageUrl = userAvatarUrl?.replace('${userId}', userInfo.userId);\n\n if (userInfo.email || userInfo.userId) {\n settings.frame_userAccount = {\n label: 'USERSETTINGSDIALOG_USER_ACCOUNT',\n sublabel: userInfo.name,\n icon: imageUrl || 'person-placeholder',\n title: userInfo.name,\n initials: userInfo.initials,\n iconClassAttribute:\n 'fd-avatar fd-avatar--s fd-avatar--circle fd-avatar--thumbnail lui-avatar-space',\n settings: {\n name: {\n type: 'string',\n label: 'USERSETTINGSDIALOG_NAME',\n isEditable: false,\n },\n email: {\n type: 'string',\n label: 'USERSETTINGSDIALOG_EMAIL',\n isEditable: false,\n },\n },\n };\n\n const validLanguages = await this.i18nService.getValidLanguages();\n if (validLanguages.length > 1) {\n settings.frame_userAccount.settings['language'] = {\n type: 'enum',\n label: 'USERSETTINGSDIALOG_LANGUAGE',\n options: validLanguages,\n };\n }\n }\n }\n\n private addInfoSettings(settings: UserSettings) {\n const settingsTransformed =\n this.dependenciesVersionsService.transformVersionsConfig(\n this.versionsConfig,\n );\n\n settings.frame_versions = {\n label: 'INFO_SETTINGS_DIALOG_LABEL',\n sublabel: 'INFO_SETTINGS_DIALOG_SUBLABEL',\n title: 'INFO_SETTINGS_DIALOG_TITLE',\n icon: 'message-information',\n settings: settingsTransformed,\n };\n }\n\n private addFeatureToggleSettings(settings: UserSettings) {\n const isActive =\n this.luigiCoreService.getActiveFeatureToggleList().length > 0;\n\n settings.frame_featureToggle = {\n label: 'FEATURE_TOGGLE_SETTINGS_DIALOG_LABEL',\n sublabel: 'FEATURE_TOGGLE_SETTINGS_DIALOG_SUBLABEL',\n title: 'FEATURE_TOGGLE_SETTINGS_DIALOG_TITLE',\n icon: 'activate',\n iconClassAttribute: isActive ? 'settings-icon-active' : '',\n viewUrl: '/assets/openmfp-portal-ui-wc.js#feature-toggle',\n webcomponent: {\n selfRegistered: true,\n },\n context: {\n translationTable: this.i18nService.translationTable,\n },\n };\n }\n\n private async readDependenciesVersions(): Promise<Record<string, string>> {\n const versions = { browser: navigator.userAgent };\n try {\n return {\n ...(await this.dependenciesVersionsService.read()),\n ...versions,\n };\n } catch (error) {}\n return versions;\n }\n}\n","import { LuigiNode } from '../../models';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class NodeUtilsService {\n constructor(private luigiCoreService: LuigiCoreService) {}\n\n retrieveGlobalHelpContext() {\n return (node: LuigiNode) => {\n const ctx = this.luigiCoreService.getGlobalContext();\n node.context.helpContext = ctx.helpContext;\n return true;\n };\n }\n\n isVisible(node: LuigiNode): boolean {\n if (!node.visibleForFeatureToggles) {\n return true;\n }\n return node.visibleForFeatureToggles.every((ft) => {\n if (ft.startsWith('!')) {\n return !this.luigiCoreService.isFeatureToggleActive(ft.slice(1));\n }\n return this.luigiCoreService.isFeatureToggleActive(ft);\n });\n }\n}\n","import { EntityType, LuigiNode } from '../../models';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { NodeUtilsService } from '../luigi-nodes/node-utils.service';\nimport { Injectable, inject } from '@angular/core';\n\nexport interface AppSwitcherConfigService {\n getAppSwitcher(luigiNodes: LuigiNode[]);\n}\n\ninterface NodeConfig {\n title: string;\n icon: string;\n link: string;\n selectionConditions?: {\n route: string;\n contextCriteria: {\n key: string;\n value: string;\n }[];\n };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AppSwitcherConfigServiceImpl implements AppSwitcherConfigService {\n private luigiCoreService = inject(LuigiCoreService);\n private nodeUtilsService = inject(NodeUtilsService);\n\n getAppSwitcher(luigiNodes: LuigiNode[]) {\n return {\n keepMainTitle: true,\n showSubTitle: false,\n itemRenderer: (item: any, slot: HTMLElement, appSwitcherApiObj) => {\n const a = document.createElement('a');\n a.setAttribute('class', 'fd-menu__link');\n a.addEventListener('click', (e) => {\n this.luigiCoreService.navigation().navigate(item.link);\n appSwitcherApiObj.closeDropDown();\n e.stopPropagation();\n });\n\n const span = document.createElement('span');\n span.setAttribute('class', 'fd-menu__addon-before');\n const i = document.createElement('i');\n i.setAttribute('class', 'sap-icon--' + item.icon);\n span.appendChild(i);\n\n const spanText: HTMLElement = document.createElement('span');\n spanText.setAttribute('class', 'fd-menu__title');\n spanText.innerText = item.title;\n a.appendChild(span);\n a.appendChild(spanText);\n slot.innerHTML = '';\n slot.appendChild(a);\n },\n items: this.getNodeItems(luigiNodes),\n };\n }\n\n private getNodeItems(luigiNodes: LuigiNode[]) {\n const items = (luigiNodes || [])\n .filter((node: LuigiNode) => {\n return (\n !node.hideFromNav &&\n node.entityType === EntityType.GLOBAL &&\n this.nodeUtilsService.isVisible(node)\n );\n })\n .map((node) => {\n const nodeConfig: NodeConfig = {\n title: node.label || '',\n icon: node.icon || '',\n link: '/' + node.pathSegment,\n };\n return nodeConfig;\n });\n\n return items?.length === 1 ? [] : items;\n }\n}\n","export interface ExternalLink {\n sameWindow: boolean;\n URL: string;\n}\n\nexport interface OpenNodeInModal {\n title?: string;\n size?: 's' | 'm' | 'l';\n width?: string;\n height?: string;\n}\n\nexport interface UserProfileItem {\n label?: string;\n icon?: string;\n link?: string;\n openNodeInModal?: boolean | OpenNodeInModal;\n externalLink?: ExternalLink;\n}\n\nexport interface UserProfile {\n logout?: UserProfileItem;\n items: UserProfileItem[];\n}\n\nexport interface UserProfileConfigService {\n getProfile(): Promise<UserProfile>;\n}\n\nexport class DefaultUserProfileConfigService\n implements UserProfileConfigService\n{\n async getProfile(): Promise<UserProfile> {\n return {\n items: [],\n };\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { HEADER_BAR_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { LuigiNode } from '../../models';\n\nexport interface NodeItem extends LuigiNode {\n node?: LuigiNode;\n route?: string;\n}\n\nexport interface LuigiBreadcrumb {\n pendingItemLabel: string;\n omitRoot: boolean;\n autoHide: boolean;\n clearBeforeRender?: boolean;\n renderer: (\n containerElement: HTMLElement,\n nodeItems: NodeItem[],\n clickHandler: (item: NodeItem) => void,\n ) => HTMLElement;\n}\n\nexport type RendererFn = LuigiBreadcrumb['renderer']\n\nexport interface HeaderBarConfig extends Omit<LuigiBreadcrumb, 'renderer'> {\n rightRenderers: RendererFn[];\n leftRenderers: RendererFn[];\n}\n\nexport interface HeaderBarConfigService {\n getConfig(): Promise<HeaderBarConfig>;\n}\n\n@Injectable({providedIn: 'root'})\nexport class HeaderBarService {\n constructor(@Optional() @Inject(HEADER_BAR_CONFIG_SERVICE_INJECTION_TOKEN) private headerBarConfig: HeaderBarConfigService) {\n }\n\n public async getConfig(): Promise<LuigiBreadcrumb | undefined> {\n if (!this.headerBarConfig) {\n return undefined\n }\n\n const { leftRenderers, rightRenderers, ...rest } = await this.headerBarConfig.getConfig();\n return {\n ...rest,\n renderer: (containerElement, nodeItems, clickHandler) => {\n containerElement.style.display = 'flex';\n containerElement.style.position = 'static';\n containerElement.style.height = 'min-content';\n\n const parrent = containerElement.parentElement;\n if(parrent) {\n this.setParrentStyles(parrent);\n }\n\n const {rightContainer, leftContainer} = this.createRendererContainers()\n\n containerElement.appendChild(leftContainer);\n containerElement.appendChild(rightContainer);\n\n this.executeRenderes(leftContainer, leftRenderers, [nodeItems, clickHandler])\n this.executeRenderes(rightContainer, rightRenderers, [nodeItems, clickHandler])\n\n return containerElement\n },\n };\n };\n\n private setParrentStyles(parrent: HTMLElement): void {\n parrent.style.display = 'flex';\n parrent.style.flexDirection = 'column';\n parrent.style.height = '100%';\n parrent.style.marginTop = '0';\n }\n\n private executeRenderes(rootContainer: HTMLElement, renderers: RendererFn[], params: [NodeItem[], (item: NodeItem) => void]): void {\n renderers.forEach((renderer) => {\n const rendererContainer = document.createElement('div');\n rootContainer.appendChild(rendererContainer);\n\n renderer(rendererContainer, ...params)\n })\n }\n\n private createRendererContainers(): {rightContainer: HTMLDivElement, leftContainer: HTMLDivElement} {\n const rightContainer = document.createElement('div');\n const leftContainer = document.createElement('div');\n\n rightContainer.style.display = 'flex';\n rightContainer.style.justifyContent = 'flex-end';\n rightContainer.style.gap = '1em';\n\n leftContainer.style.display = 'flex';\n leftContainer.style.justifyContent = 'flex-start';\n leftContainer.style.gap = '1em';\n leftContainer.style.flexGrow = '1';\n\n return {rightContainer, leftContainer}\n }\n}\n","import { LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { AuthEvent } from '../../models';\nimport { AuthService, EnvConfigService } from '../portal';\nimport { LuigiAuthEventsCallbacksService } from './luigi-auth-events-callbacks.service';\nimport { Injectable, inject } from '@angular/core';\nimport oAuth2 from '@luigi-project/plugin-auth-oauth2';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthConfigService {\n private authService = inject(AuthService);\n private envConfigService = inject(EnvConfigService);\n private luigiAuthEventsCallbacksService =\n inject<LuigiAuthEventsCallbacksService>(\n LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n\n public async getAuthConfig() {\n const { oauthServerUrl, clientId } =\n await this.envConfigService.getEnvConfig();\n\n if (!oauthServerUrl || !clientId) {\n return undefined;\n }\n\n return {\n use: 'oAuth2AuthCode',\n storage: 'none',\n oAuth2AuthCode: {\n idpProvider: oAuth2,\n authorizeUrl: oauthServerUrl,\n logoutUrl: '/rest/logout',\n post_logout_redirect_uri: '/logout',\n oAuthData: {\n client_id: clientId,\n scope: 'openid',\n redirect_uri: '/callback',\n response_type: 'code',\n },\n accessTokenExpiringNotificationTime: 60,\n expirationCheckInterval: 5,\n userInfoFn: () => {\n const userInfo = this.authService.getUserInfo();\n\n return new Promise((resolve) => {\n fetch(userInfo.picture, {\n method: 'HEAD',\n mode: 'no-cors',\n })\n .then(() => {\n resolve(userInfo);\n })\n .catch(() => {\n userInfo.picture = '';\n resolve(userInfo);\n });\n });\n },\n },\n disableAutoLogin: false,\n events: {\n onAuthSuccessful: (settings, authData) => {\n this.authService.authEvent(AuthEvent.AUTH_SUCCESSFUL);\n this.luigiAuthEventsCallbacksService?.onAuthSuccessful(\n settings,\n authData,\n );\n },\n onAuthError: (settings, err) => {\n this.authService.authEvent(AuthEvent.AUTH_ERROR);\n this.luigiAuthEventsCallbacksService?.onAuthError(settings, err);\n },\n onAuthExpired: (settings) => {\n this.authService.authEvent(AuthEvent.AUTH_EXPIRED);\n this.luigiAuthEventsCallbacksService?.onAuthExpired(settings);\n },\n onLogout: (settings) => {\n this.authService.authEvent(AuthEvent.LOGOUT);\n this.luigiAuthEventsCallbacksService?.onLogout(settings);\n },\n onAuthExpireSoon: (settings) => {\n this.authService.authEvent(AuthEvent.AUTH_EXPIRE_SOON);\n this.luigiAuthEventsCallbacksService?.onAuthExpireSoon(settings);\n },\n onAuthConfigError: (settings, err) => {\n this.authService.authEvent(AuthEvent.AUTH_CONFIG_ERROR);\n this.luigiAuthEventsCallbacksService?.onAuthConfigError(\n settings,\n err,\n );\n },\n },\n };\n }\n}\n","import { LOCAL_CONFIGURATION_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport {\n ContentConfiguration,\n LocalDevelopmentSettings,\n LuigiNode,\n} from '../../models';\nimport { ValidationResult } from '../../models/node-transform';\nimport { I18nService } from '../i18n.service';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { LocalNodesService } from '../portal';\nimport { localDevelopmentSettingsLocalStorage } from '../storage-service';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { lastValueFrom } from 'rxjs';\n\nexport interface LocalConfigurationService {\n getLocalNodes(): Promise<LuigiNode[]>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalConfigurationServiceImpl {\n private http = inject(HttpClient);\n private luigiConfigService = inject(LocalNodesService);\n private i18nService = inject(I18nService);\n private luigiCoreService = inject(LuigiCoreService);\n private customLocalConfigurationService = inject<LocalConfigurationService>(\n LOCAL_CONFIGURATION_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n private cachedLocalNodes: LuigiNode[];\n\n public async getLocalNodes(): Promise<LuigiNode[]> {\n const localDevelopmentSettings =\n localDevelopmentSettingsLocalStorage.read();\n\n if (!localDevelopmentSettings?.isActive) {\n return (\n (await this.customLocalConfigurationService?.getLocalNodes()) || []\n );\n }\n\n this.addLocalDevelopmentModeOnIndicator();\n\n if (this.cachedLocalNodes?.length) {\n return this.cachedLocalNodes;\n }\n\n try {\n const configurations = await this.getLocalConfigurations(\n localDevelopmentSettings,\n );\n const result =\n (await this.luigiConfigService.getLuigiNodesFromConfigurations(\n configurations,\n )) || {};\n\n if (result.errors) {\n this.alertErrors(result.errors);\n }\n\n (result.nodes || []).forEach((node) => {\n node.context = {\n ...node.context,\n serviceProviderConfig: {\n ...node.context?.serviceProviderConfig,\n ...localDevelopmentSettings.serviceProviderConfig,\n },\n };\n });\n\n return (this.cachedLocalNodes = result.nodes || []);\n } catch (e) {\n console.warn(`Failed to retrieve local luigi config.`, e);\n return [];\n }\n }\n\n addLocalDevelopmentModeOnIndicator() {\n const popoverControl = document.querySelector('#profilePopover');\n\n if (popoverControl && popoverControl.parentNode) {\n const newSpan = document.createElement('span');\n newSpan.classList.add(\n 'sap-icon--developer-settings',\n 'local-development-settings-indication',\n );\n newSpan.title = this.i18nService.getTranslation(\n 'LOCAL_DEVELOPMENT_SETTINGS_ACTIVE_INDICATOR',\n );\n popoverControl.parentNode.appendChild(newSpan);\n }\n }\n\n private alertErrors(errors: ValidationResult[]) {\n const message = errors\n .map((e) => {\n return `For configuration with url:\n ${e.url} <br/><br/>\n ${(e.validationErrors || [])\n .map((v) => v.message)\n .filter((v) => !v.includes('The document is not valid'))\n .join('<br/>')}`;\n })\n .join('<br/><br/><br/>');\n this.luigiCoreService.showAlert({\n text: `\n Your local development configuration contains error(s).\n You will not be able to see your local changes and local development results unless you correct the data and reload the page.\n Please see below the detailed information: <br/><br/>\n\n ${message}\n `,\n type: 'error',\n });\n }\n\n public async replaceServerNodesWithLocalOnes(\n serverLuigiNodes: LuigiNode[],\n currentEntities: string[],\n ): Promise<LuigiNode[]> {\n const localNodes = await this.getLocalNodes();\n console.debug(\n `Processing local nodes for currentEntities: ${currentEntities}`,\n );\n if (!localNodes || localNodes.length == 0) {\n console.debug('No local nodes found');\n return serverLuigiNodes;\n }\n this.logNodesState(serverLuigiNodes, localNodes);\n\n const localReplacingNodes: LuigiNode[] = [];\n const filteredServerNodes = serverLuigiNodes.filter((serverNode) => {\n const index = localNodes.findIndex((localNode) => {\n return this.localNodeMatchesServerNode(localNode, serverNode);\n });\n if (index !== -1) {\n const [localFoundNode] = localNodes.splice(index, 1);\n localReplacingNodes.push(localFoundNode);\n\n localFoundNode.context = {\n ...serverNode.context,\n ...localFoundNode.context,\n };\n }\n return index === -1;\n });\n\n const localNewNodes = localNodes.filter((n) => {\n const entity = n.entityType?.includes('::compound')\n ? 'global'\n : n.entityType || 'home';\n return currentEntities.includes(entity);\n });\n\n console.debug(\n `${filteredServerNodes.length} server nodes have no matching local nodes.\n Found ${localReplacingNodes.length} matching local nodes.\n Adding ${localNewNodes.length} new local nodes.`,\n );\n\n return filteredServerNodes\n .concat(localReplacingNodes)\n .concat(localNewNodes);\n }\n\n private logNodesState(\n serverLuigiNodes: LuigiNode[],\n localNodes: LuigiNode[],\n ) {\n const serverEntityTypes = [\n ...new Set(serverLuigiNodes.map((n) => n.entityType)),\n ]\n .filter(Boolean)\n .join(',');\n\n const localEntityTypes = [...new Set(localNodes.map((n) => n.entityType))]\n .filter(Boolean)\n .join(',');\n console.debug(\n `Found '${serverLuigiNodes.length}' server nodes.\n Found '${localNodes.length}' local luigi nodes.\n The entities of the server node are: [${serverEntityTypes}]\n The entities of local nodes are: [${localEntityTypes}]`,\n );\n }\n\n private localNodeMatchesServerNode(\n localNode: LuigiNode,\n node: LuigiNode,\n ): boolean {\n return (\n localNode.pathSegment === node.pathSegment &&\n localNode.entityType === node.entityType\n );\n }\n\n private async getLocalConfigurations(\n localDevelopmentSettings: LocalDevelopmentSettings,\n ): Promise<ContentConfiguration[]> {\n const initialConfigurations: ContentConfiguration[] =\n localDevelopmentSettings.configs\n .filter(\n (config): config is { data: ContentConfiguration } => !!config.data,\n )\n .map((config) => config.data);\n\n const configurations = (\n await Promise.allSettled(\n localDevelopmentSettings.configs\n .filter((config): config is { url: string } => !!config.url)\n .map((config) =>\n lastValueFrom(this.http.get<ContentConfiguration>(config.url)).then(\n (contentConfiguration: ContentConfiguration) =>\n ({\n ...contentConfiguration,\n url: config.url,\n }) as ContentConfiguration,\n ),\n ),\n )\n )\n .filter(\n (result): result is PromiseFulfilledResult<ContentConfiguration> =>\n result.status === 'fulfilled',\n )\n .map((result) => result.value)\n .concat(initialConfigurations);\n\n return configurations;\n }\n}\n","import { ERROR_COMPONENT_CONFIG } from '../../injection-tokens';\nimport {\n EntityConfig,\n EntityDefinition,\n ErrorComponentConfig,\n LuigiNode,\n} from '../../models';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { ConfigService } from '../portal';\nimport { LocalConfigurationServiceImpl } from './local-configuration.service';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LuigiNodesService {\n private configService = inject(ConfigService);\n private luigiCoreService = inject(LuigiCoreService);\n private localConfigurationService = inject(LocalConfigurationServiceImpl);\n private errorComponentConfig = inject<ErrorComponentConfig>(\n ERROR_COMPONENT_CONFIG as any,\n {\n optional: true,\n },\n );\n\n private getChildrenByEntity(\n allChildren: LuigiNode[],\n ): Record<string, LuigiNode[]> {\n const childrenByEntity = {\n home: [],\n };\n for (const child of allChildren) {\n // default to home to stay backward compatible\n const entityType = child.entityType || 'home';\n\n if (!childrenByEntity[entityType]) {\n childrenByEntity[entityType] = [];\n }\n\n childrenByEntity[entityType].push(child);\n }\n\n return childrenByEntity;\n }\n\n async retrieveChildrenByEntity(): Promise<Record<string, LuigiNode[]>> {\n try {\n const portalConfig = await this.configService.getPortalConfig();\n const serverLuigiNodes: LuigiNode[] = portalConfig.providers.flatMap(\n (p) => p.nodes,\n );\n const luigiNodes =\n await this.localConfigurationService.replaceServerNodesWithLocalOnes(\n serverLuigiNodes,\n ['global', 'main', 'home'],\n );\n return this.getChildrenByEntity(luigiNodes);\n } catch (e) {\n console.warn('Could not retrieve nodes, error: ', e);\n throw e;\n }\n }\n\n async retrieveEntityChildren(\n entityDefinition: EntityDefinition,\n additionalContext?: Record<string, string>,\n ): Promise<LuigiNode[]> {\n let errorCode = 0;\n let configsForEntity: EntityConfig;\n const entityType = entityDefinition.dynamicFetchId;\n\n try {\n if (!entityType) {\n throw new Error('Entity type is required');\n }\n\n configsForEntity = await this.configService.getEntityConfig(\n entityType,\n additionalContext,\n );\n\n return configsForEntity.providers.flatMap((p) => p.nodes);\n } catch (e) {\n errorCode = e.status || 500;\n console.warn(\n `Could not retrieve nodes for entity: ${entityType}, error: `,\n e,\n );\n\n return this.handleEntityRetrievalError(\n entityDefinition,\n errorCode,\n additionalContext,\n );\n }\n }\n\n private handleEntityRetrievalError(\n entityDefinition: EntityDefinition,\n errorCode: number,\n additionalContext?: Record<string, string>,\n ): LuigiNode[] {\n if (this.errorComponentConfig?.handleEntityRetrievalError) {\n return this.errorComponentConfig.handleEntityRetrievalError(\n entityDefinition,\n errorCode,\n additionalContext,\n );\n }\n\n this.luigiCoreService.showAlert({\n text: `Could not retrieve nodes for entity: ${entityDefinition.dynamicFetchId}`,\n type: 'error',\n });\n return [];\n }\n\n nodePolicyResolver(nodeToCheckPermissionFor): boolean {\n const mockPermissions = ['projectMember'];\n const permissions = nodeToCheckPermissionFor.requiredPolicies;\n return (\n !permissions ||\n permissions.every((item) => mockPermissions.includes(item))\n );\n }\n\n clearNodeCache(): void {\n this.configService.clearEntityConfigCache();\n }\n}\n","import { LUIGI_CUSTOM_NODE_CONTEXT_PROCESSING_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { LuigiNode, NodeContext } from '../../models';\nimport { Injectable, inject } from '@angular/core';\n\nexport interface NodeContextProcessingService {\n processNodeContext(\n entityId: string | undefined,\n entityNode: LuigiNode,\n ctx: NodeContext,\n ): Promise<void>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NodeContextProcessingServiceImpl\n implements NodeContextProcessingService\n{\n private customNodeContextProcessingService =\n inject<NodeContextProcessingService>(\n LUIGI_CUSTOM_NODE_CONTEXT_PROCESSING_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n\n async processNodeContext(\n entityId: string | undefined,\n entityNode: LuigiNode,\n ctx: NodeContext,\n ): Promise<void> {\n await this.defaultProcessNodeContext(entityId, entityNode, ctx);\n await this.customNodeContextProcessingService?.processNodeContext(\n entityId,\n entityNode,\n ctx,\n );\n }\n\n private async defaultProcessNodeContext(\n entityId: string | undefined,\n entityNode: LuigiNode,\n ctx: NodeContext,\n ): Promise<void> {\n entityNode.context.entityType = entityNode.defineEntity?.id;\n }\n}\n","import { LUIGI_ROUTING_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { Injectable, inject } from '@angular/core';\n\nexport interface RoutingConfigService {\n getInitialRoutingConfig?(): object;\n getRoutingConfig?(): object;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class RoutingConfigServiceImpl implements RoutingConfigService {\n private customRoutingConfigService = inject<RoutingConfigService>(\n LUIGI_ROUTING_CONFIG_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n\n getInitialRoutingConfig(): any {\n return {\n useHashRouting: false,\n showModalPathInUrl: false,\n modalPathParam: 'modalPathParamDisabled',\n skipRoutingForUrlPatterns: [/.*/],\n pageNotFoundHandler: () => {},\n ...(this.customRoutingConfigService?.getInitialRoutingConfig?.() || {}),\n };\n }\n\n getRoutingConfig(): any {\n return {\n useHashRouting: false,\n showModalPathInUrl: true,\n modalPathParam: 'modal',\n pageNotFoundHandler: () => {},\n ...(this.customRoutingConfigService?.getRoutingConfig?.() || {}),\n };\n }\n}\n","import { AuthService, EnvConfigService } from '../services';\nimport { inject, provideAppInitializer } from '@angular/core';\n\nexport async function bootstrap() {\n const authService = inject(AuthService);\n const envConfigService = inject(EnvConfigService);\n\n try {\n const { oauthServerUrl, clientId } = await envConfigService.getEnvConfig();\n\n if (!oauthServerUrl || !clientId) {\n return;\n }\n\n await authService.refresh();\n } catch (error) {\n console.error('Error bootstrapping the app:', error);\n }\n}\n\nexport const provideBootstrap = () => provideAppInitializer(() => bootstrap());\n","import { AuthEvent } from '../models';\nimport {\n AuthService,\n LuigiCoreService,\n SessionRefreshService,\n} from '../services';\nimport { inject, provideAppInitializer } from '@angular/core';\nimport { filter } from 'rxjs';\n\nexport async function initializeAutomaticSessionRefresh(\n sessionRefreshService: SessionRefreshService,\n authService: AuthService,\n luigiCoreService: LuigiCoreService,\n) {\n authService.authEvents\n .pipe(\n filter((event: AuthEvent) => event === AuthEvent.AUTH_EXPIRE_SOON),\n filter(() =>\n luigiCoreService.isFeatureToggleActive('enableSessionAutoRefresh'),\n ),\n )\n .subscribe({\n next: async () => {\n try {\n await sessionRefreshService.refresh();\n } catch (error) {\n console.error('Error executing session refresh: ', error);\n }\n },\n });\n}\n\nexport const provideSessionRefresh = () =>\n provideAppInitializer(() =>\n initializeAutomaticSessionRefresh(\n inject(SessionRefreshService),\n inject(AuthService),\n inject(LuigiCoreService),\n ),\n );\n","import { AuthEvent } from '../models';\nimport { LoginEventService, LoginEventType } from './login-event.service';\nimport { AuthService } from './portal';\nimport { LocalStorageKeys } from './storage-service';\nimport { Injectable } from '@angular/core';\nimport { NavigationEnd, NavigationStart, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NavigationService {\n private currentUrl: string;\n private previousUrl: string;\n\n constructor(\n private router: Router,\n private authService: AuthService,\n private loginEventService: LoginEventService,\n ) {}\n\n track() {\n this.router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe((event: NavigationEnd) => {\n this.currentUrl = event.url;\n });\n\n this.router.events\n .pipe(filter((event) => event instanceof NavigationStart))\n .subscribe((event: NavigationStart) => {\n this.previousUrl = event.url;\n });\n\n this.authService.authEvents\n .pipe(filter((event) => event === AuthEvent.AUTH_EXPIRED))\n .subscribe({ next: () => this.saveCurrentUrl() });\n\n this.authService.authEvents\n .pipe(filter((event) => event === AuthEvent.LOGOUT))\n .subscribe({\n next: () => {\n this.saveLastNavigationUrl();\n },\n });\n\n this.loginEventService.loginEvents\n .pipe(filter((event) => event.type === LoginEventType.LOGIN_TRIGGERED))\n .subscribe({\n next: (event) => {\n this.router.navigate([this.getRedirectUrl()], {\n queryParams: event.queryParams,\n });\n this.clearCurrentUrl();\n },\n });\n }\n\n private clearCurrentUrl() {\n localStorage.setItem(LocalStorageKeys.LAST_NAVIGATION_URL, '');\n }\n\n private saveCurrentUrl(): void {\n localStorage.setItem(LocalStorageKeys.LAST_NAVIGATION_URL, this.currentUrl);\n }\n\n private saveLastNavigationUrl(): void {\n localStorage.setItem(\n LocalStorageKeys.LAST_NAVIGATION_URL,\n this.previousUrl,\n );\n }\n\n private getRedirectUrl(): string {\n return localStorage.getItem(LocalStorageKeys.LAST_NAVIGATION_URL) || '/';\n }\n}\n","import { NavigationService } from '../services/navigation.service';\nimport { inject, provideAppInitializer } from '@angular/core';\n\nexport async function track(navigationService: NavigationService) {\n navigationService.track();\n}\n\nexport const provideNavigationTracker = () =>\n provideAppInitializer(() => {\n track(inject(NavigationService));\n });\n","import {\n AuthService,\n I18nService,\n LuigiCoreService,\n userSettingsLocalStorage,\n} from '../services';\nimport { inject, provideAppInitializer } from '@angular/core';\n\nexport async function initLanguage(\n i18nService: I18nService,\n authService: AuthService,\n luigiCoreService: LuigiCoreService,\n) {\n const userSettings = await userSettingsLocalStorage.read(\n authService.getUserInfo(),\n );\n const storedLanguage = userSettings?.frame_userAccount?.language;\n\n const validLanguages = (await i18nService.getValidLanguages()).map(\n (l) => l.value,\n );\n\n let language = i18nService.fallbackLanguage;\n if (storedLanguage && validLanguages.includes(storedLanguage)) {\n language = storedLanguage;\n }\n\n luigiCoreService.setCurrentLocale(language);\n await i18nService.fetchTranslationFile(language);\n}\n\nexport const provideLanguageServices = () =>\n provideAppInitializer(() =>\n initLanguage(\n inject(I18nService),\n inject(AuthService),\n inject(LuigiCoreService),\n ),\n );\n","import {\n I18nService,\n LoginEventService,\n LoginEventType,\n LuigiCoreService,\n} from '../../services';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n signal,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n templateUrl: './logout.component.html',\n styleUrls: ['./logout.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LogoutComponent implements OnInit {\n headline = signal<string>('');\n hint = signal<string>('');\n btnText = signal<string>('');\n\n constructor(\n private route: ActivatedRoute,\n private luigiCoreService: LuigiCoreService,\n private i18nService: I18nService,\n private loginEventService: LoginEventService,\n ) {}\n\n async ngOnInit(): Promise<void> {\n this.luigiCoreService.ux().hideAppLoadingIndicator();\n const error = this.route.snapshot.queryParams['error'];\n\n const translations = await this.getTranslations();\n this.headline.set(translations.headlineSuccessfullyLoggedOut);\n this.hint.set(translations.hintSignIn);\n this.btnText.set(translations.btnTextLoginAgain);\n\n switch (error) {\n case 'tokenExpired':\n this.headline.set(translations.headlineSessionExpired);\n break;\n case 'loginError':\n this.headline.set(translations.headlineSigInError);\n this.hint.set(translations.hintSignInError);\n break;\n case 'invalidToken':\n this.luigiCoreService.removeAuthData();\n this.headline.set(translations.headlineInvalidTokenError);\n this.hint.set(translations.hintInvalidTokenError);\n break;\n default:\n break;\n }\n }\n\n login() {\n this.loginEventService.loginEvent({ type: LoginEventType.LOGIN_TRIGGERED });\n }\n\n private async getTranslations() {\n return {\n headlineSuccessfullyLoggedOut: await this.i18nService.getTranslationAsync(\n 'SUCCESSFULLY_LOGGED_OUT',\n ),\n hintSignIn: await this.i18nService.getTranslationAsync('SIGN_IN_HINT'),\n btnTextLoginAgain:\n await this.i18nService.getTranslationAsync('LOGIN_AGAIN'),\n headlineSessionExpired:\n await this.i18nService.getTranslationAsync('SESSION_EXPIRED'),\n\n headlineSigInError:\n await this.i18nService.getTranslationAsync('SIGN_IN_ERROR'),\n hintSignInError:\n await this.i18nService.getTranslationAsync('SIGN_IN_ERROR_HINT'),\n\n headlineInvalidTokenError: await this.i18nService.getTranslationAsync(\n 'INVALID_TOKEN_ERROR',\n ),\n hintInvalidTokenError: await this.i18nService.getTranslationAsync(\n 'INVALID_TOKEN_ERROR_HINT',\n ),\n };\n }\n}\n","<div class=\"fd-page\">\n <link rel=\"stylesheet\" href=\"/fundamental-styles/fundamental-styles.css\" />\n <div class=\"fd-page__content\">\n <div class=\"fd-container fd-container--centered\">\n <div class=\"content\">\n <span class=\"sap-icon--log\"></span>\n\n <div class=\"info\" data-e2e=\"logout-headline\">{{ headline() }}</div>\n <div class=\"hint\" data-e2e=\"logout-message\">{{ hint() }}</div>\n\n <p class=\"fd-has-text-align-center\">\n <button\n class=\"fd-button fd-button--action-bar fd-button--l\"\n (click)=\"login()\"\n >\n {{ btnText() }}\n </button>\n </p>\n </div>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { LuigiIntent, LuigiNode } from '../../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IntentNavigationService {\n constructor() {}\n\n /**\n * This function builds the Luigi based intent mapping configuration from the pre-built intent target knowledge\n * It iterates existing intentMappings and constructs pathSegment from the relative path of the defined entity and the target\n * that uses the entity as a reference\n *\n * @param nodes the nodes to fetch intentMapping initial configuration from\n * @returns a list of luigi intent objects\n */\n buildIntentMappings(nodes: LuigiNode[]): LuigiIntent[] {\n let intentMappings: LuigiIntent[] = [];\n let entityRelativePaths: Record<string, any> = {};\n // find mapping on config from node[0] --> not 0 anymore need to traverse fully\n for (const item of nodes) {\n if (item._intentMappings) {\n intentMappings = [...intentMappings, ...item._intentMappings];\n }\n if (item._entityRelativePaths) {\n entityRelativePaths = {\n ...entityRelativePaths,\n ...item._entityRelativePaths,\n };\n }\n }\n\n for (const intentElement of intentMappings) {\n if (entityRelativePaths && intentElement.baseEntityId) {\n let entityPath = '';\n intentElement.baseEntityId.split('.').forEach((entity) => {\n if (\n entityRelativePaths[entity] &&\n entityRelativePaths[entity].pathSegment\n ) {\n entityPath += '/' + entityRelativePaths[entity].pathSegment;\n }\n });\n intentElement.pathSegment = this.removeDuplicateSlash(\n entityPath + '/' + intentElement.relativePath\n );\n }\n }\n return intentMappings;\n }\n\n /**\n * Removes duplicate slashes if exist\n *\n * @param url the url string to modify\n * @returns\n */\n removeDuplicateSlash(url: string) {\n return url.replace(/\\/+/g, '/');\n }\n}\n","import { search } from 'jmespath';\n\n/**\n * Evaluates the JMESPath expression on the context and returns true if the result is true, otherwise false\n * @param context The context to evaluate\n * @param jmesPathExpression The JMESPath expression to evaluate\n * @returns true if the result of the JMESPath expression is true, otherwise (or if there was an exception while matching with JMESPath) false\n * */\nexport function matchesJMESPath(\n context: object,\n jmesPathExpression: string\n): boolean {\n if (!jmesPathExpression) {\n return true;\n }\n\n try {\n return search(context, jmesPathExpression) === true;\n } catch (e) {\n logJMESException(context, jmesPathExpression, e);\n return false;\n }\n}\n\nfunction logJMESException(\n context: object,\n jmesPathExpression: string,\n error: unknown\n): void {\n console.warn(\n 'Error while evaluating JMESPath expression.',\n 'Please check your visibleForContext or configurationMissing key in your Configuration.',\n '\\n',\n '\\n',\n 'Context:',\n '\\n',\n context,\n '\\n',\n '\\n',\n 'JMESPath expression:',\n '\\n',\n jmesPathExpression,\n '\\n',\n '\\n',\n 'Exception: ',\n '\\n',\n error\n );\n}\n","import { LuigiNode } from '../models';\nimport { matchesJMESPath } from './jmespath';\nimport { isMatch } from 'lodash';\n\nexport const visibleForContext = (ctx: any, node: LuigiNode): boolean => {\n // visibleForEntityContext is deprecated\n if (!isMatch(ctx?.entityContext, node.visibleForEntityContext)) {\n return false;\n }\n\n return matchesJMESPath(ctx, node.visibleForContext ?? '');\n};\n\nexport const computeDynamicFetchContext = (\n entityNode: LuigiNode,\n ctx: any,\n): Map<string, Record<string, string>> => {\n const contextForEntityConfig: Map<string, Record<string, string>> = new Map();\n\n function addToAll(key: string, value: string) {\n contextForEntityConfig.forEach((record) => {\n record[key] = value;\n });\n }\n\n let node = entityNode as any;\n while (node) {\n if (node.defineEntity?.contextKey && node.defineEntity?.dynamicFetchId) {\n contextForEntityConfig.set(node.defineEntity.dynamicFetchId, {});\n addToAll(\n node.defineEntity.dynamicFetchId,\n ctx[node.defineEntity.contextKey],\n );\n }\n node = node.parent;\n }\n\n addToAll('user', ctx.userId || ctx.userid);\n return contextForEntityConfig;\n};\n","import { LuigiNode, LuigiNodeCategory } from '../../models';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NodeSortingService {\n constructor() {}\n\n markEntityRootChildren(nodes: LuigiNode[]) {\n nodes.forEach((child) => {\n child._entityRootChild = true;\n });\n }\n\n nodeComparison(a: LuigiNode, b: LuigiNode) {\n // set default order to the end if not defined\n a.order = a.dxpOrder || a.order || '999';\n b.order = b.dxpOrder || b.order || '999';\n\n const orderA = isNaN(parseFloat(a?.order)) ? 999 : parseFloat(a.order);\n const orderB = isNaN(parseFloat(b?.order)) ? 999 : parseFloat(b.order);\n\n if (orderA < orderB) {\n return -1;\n } else if (orderA > orderB) {\n return 1;\n }\n\n // if orders are equal -> sort alphabetically by label\n if (!a.label && !b.label) {\n return 0; // both undefined, keep original order\n } else if (!a.label) {\n return 1; // a has no label, goes after b\n } else if (!b.label) {\n return -1; // b has no label, a goes before b\n }\n\n return a.label.localeCompare(b.label);\n }\n\n appendChildrenToSlot(\n nodes: LuigiNode[],\n slotNode: LuigiNode,\n children: LuigiNode[],\n ) {\n const slotIndex = nodes.indexOf(slotNode);\n\n if (slotNode.category) {\n const cat =\n (slotNode.category as LuigiNodeCategory).id ||\n (slotNode.category as LuigiNodeCategory).label ||\n ((slotNode.category as string).length > 0\n ? slotNode.category\n : undefined);\n if (cat) {\n children.forEach((node) => {\n node.category = cat;\n });\n }\n }\n\n nodes.splice(slotIndex + 1, 0, ...children);\n }\n\n sortNodes(nodes: LuigiNode[]): LuigiNode[] {\n const entityRootNodes: LuigiNode[] = [];\n const slottedChildrenMap = {};\n const otherChildren: LuigiNode[] = [];\n const slotNodes: LuigiNode[] = [];\n let defaultSlot;\n\n nodes.forEach((node) => {\n if (node._entityRootChild) {\n entityRootNodes.push(node);\n if (node.defineSlot) {\n slotNodes.push(node);\n } else if (node.defineSlot === '') {\n defaultSlot = node;\n }\n } else if (node.navSlot) {\n if (!slottedChildrenMap[node.navSlot]) {\n slottedChildrenMap[node.navSlot] = [];\n }\n slottedChildrenMap[node.navSlot].push(node);\n } else {\n otherChildren.push(node);\n }\n });\n\n const sortedNodes = [...entityRootNodes];\n\n const sortedOther = otherChildren.sort(this.nodeComparison);\n\n if (slotNodes.length > 0) {\n slotNodes.forEach((slotNode) => {\n if (!slotNode.defineSlot) {\n return;\n }\n\n if (slottedChildrenMap[slotNode.defineSlot]) {\n this.appendChildrenToSlot(\n sortedNodes,\n slotNode,\n slottedChildrenMap[slotNode.defineSlot].sort(this.nodeComparison),\n );\n delete slottedChildrenMap[slotNode.defineSlot];\n }\n });\n }\n\n // collect unassigned slotted nodes and add to default slot\n for (const slotId in slottedChildrenMap) {\n if (Object.prototype.hasOwnProperty.call(slottedChildrenMap, slotId)) {\n const unassignedSlotChildren = slottedChildrenMap[slotId];\n sortedOther.push(...unassignedSlotChildren.sort(this.nodeComparison));\n }\n }\n\n if (defaultSlot) {\n this.appendChildrenToSlot(sortedNodes, defaultSlot, sortedOther);\n } else {\n sortedNodes.push(...sortedOther);\n }\n\n // move nodes without categories to top\n const singleNodes: LuigiNode[] = [];\n const catNodes: LuigiNode[] = [];\n sortedNodes.forEach((node) => {\n (node.category ? catNodes : singleNodes).push(node);\n });\n\n return [...singleNodes, ...catNodes];\n }\n}\n","import { LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { LuigiNode } from '../../models';\nimport {\n computeDynamicFetchContext,\n visibleForContext,\n} from '../../utilities/context';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { ConfigService } from '../portal';\nimport { CustomNodeProcessingService } from './custom-node-processing.service';\nimport { NodeSortingService } from './node-sorting.service';\nimport { NodeUtilsService } from './node-utils.service';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ChildrenNodesService {\n private luigiCoreService = inject(LuigiCoreService);\n private configService = inject(ConfigService);\n private nodeUtilsService = inject(NodeUtilsService);\n private nodeSortingService = inject(NodeSortingService);\n private customNodeProcessingService = inject<CustomNodeProcessingService>(\n LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n\n async processChildrenForEntity(\n entityNode: LuigiNode,\n childrenNodes: LuigiNode[],\n ctx: any,\n ): Promise<LuigiNode[]> {\n if (\n entityNode.defineEntity?.useBack &&\n this.luigiCoreService.isFeatureToggleActive('navheader-up') &&\n entityNode.navHeader\n ) {\n entityNode.navHeader.showUpLink = true;\n }\n\n this.addNavigationHeader(entityNode);\n\n if (!childrenNodes) {\n return [];\n }\n\n const entityContext = {};\n\n const fetchContext = computeDynamicFetchContext(entityNode, ctx);\n await Promise.all(\n Array.from(fetchContext.entries()).map(\n async ([dynamicFetchId, context]) => {\n try {\n entityContext[dynamicFetchId] = (\n await this.configService.getEntityConfig(dynamicFetchId, context)\n ).entityContext;\n } catch (error) {\n console.error(\n entityNode.defineEntity?.id,\n 'does not exist',\n context,\n );\n }\n },\n ),\n );\n\n childrenNodes.forEach((child) => {\n child.context = { ...child.context, entityContext };\n child.onNodeActivation =\n this.nodeUtilsService.retrieveGlobalHelpContext();\n });\n\n const nodes = await Promise.all(\n childrenNodes\n .filter((child) => visibleForContext(child.context, child))\n .map(\n (child) =>\n this.customNodeProcessingService?.processNode(\n child.context,\n child,\n ) || child,\n ),\n );\n return this.nodeSortingService.sortNodes(nodes);\n }\n\n addNavigationHeader(entityNode: LuigiNode) {\n if (entityNode.defineEntity) {\n if (!entityNode.navHeader) {\n entityNode.navHeader = {};\n }\n\n entityNode.navHeader.renderer = (\n containerElement: HTMLElement,\n nodeItem: LuigiNode,\n clickHandler: Function,\n navHeader: any,\n ) => {\n if (!containerElement || !navHeader?.label) {\n return;\n }\n\n const label = this.sanitizeString(navHeader.label);\n const type = this.getSideNavigationHeaderType(\n navHeader.context,\n nodeItem,\n );\n containerElement.classList.add('entity-nav-header');\n\n containerElement.innerHTML = `\n <ui5-text class=\"entity-nav-header-type\">${type}</ui5-text>\n <ui5-title class=\"entity-nav-header-label\" level=\"H6\" size=\"H6\">${label}</ui5-title>\n `;\n };\n }\n }\n\n private getSideNavigationHeaderType(\n nodeContext: Record<string, any> = {},\n nodeItem: LuigiNode,\n ): string {\n const dynamicFetchId = nodeItem.defineEntity?.dynamicFetchId || '';\n let type = (nodeContext.entityContext?.[dynamicFetchId] || {}).type;\n if (!type || typeof type !== 'string') {\n type = nodeItem.defineEntity?.label || dynamicFetchId || 'Extension';\n }\n type = type.replace(/Id/i, '');\n return type.at(0).toUpperCase() + type.slice(1);\n }\n\n private sanitizeString(inputString: string): string {\n // Prevent XSS attacks by removing any tags\n const tempSpan = document.createElement('span');\n tempSpan.textContent = inputString;\n return tempSpan.innerHTML;\n }\n}\n","import {\n LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN,\n LUIGI_NODES_CUSTOM_GLOBAL_SERVICE_INJECTION_TOKEN,\n} from '../../injection-tokens';\nimport { LuigiNode } from '../../models';\nimport { EntityType } from '../../models/entity';\nimport {\n computeDynamicFetchContext,\n visibleForContext,\n} from '../../utilities/context';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { ChildrenNodesService } from './children-nodes.service';\nimport { CustomGlobalNodesService } from './custom-global-nodes.service';\nimport { CustomNodeProcessingService } from './custom-node-processing.service';\nimport { LocalConfigurationServiceImpl } from './local-configuration.service';\nimport { LuigiNodesService } from './luigi-nodes.service';\nimport { NodeContextProcessingServiceImpl } from './node-context-processing.service';\nimport { NodeSortingService } from './node-sorting.service';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class NodesProcessingService {\n private nodeContextProcessingService = inject(\n NodeContextProcessingServiceImpl,\n );\n private luigiCoreService = inject(LuigiCoreService);\n private luigiNodesService = inject(LuigiNodesService);\n private localConfigurationService = inject(LocalConfigurationServiceImpl);\n private nodeSortingService = inject(NodeSortingService);\n private childrenNodesService = inject(ChildrenNodesService);\n private customNodeProcessingService = inject<CustomNodeProcessingService>(\n LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n private customGlobalNodesService = inject<CustomGlobalNodesService>(\n LUIGI_NODES_CUSTOM_GLOBAL_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n\n async processNodes(childrenByEntity: Record<string, LuigiNode[]>) {\n const globalNodes = [\n ...(childrenByEntity[EntityType.GLOBAL] || []),\n ...(childrenByEntity[EntityType.GLOBAL_TOPNAV] || []),\n ...((await this.customGlobalNodesService?.getCustomGlobalNodes()) || []),\n ];\n\n globalNodes.forEach((node) => {\n node.context = { ...node.context };\n node.globalNav = this.isGlobalNavNode(node);\n this.applyEntityChildrenRecursively(node, childrenByEntity, '');\n });\n\n globalNodes.sort(this.nodeSortingService.nodeComparison);\n return globalNodes;\n }\n\n private isGlobalNavNode(node: LuigiNode) {\n return !node.hideFromNav && node.entityType === EntityType.GLOBAL;\n }\n\n applyEntityChildrenRecursively(\n node: LuigiNode,\n childrenByEntity: Record<string, LuigiNode[]>,\n parentEntityPath: string,\n ) {\n if (Array.isArray(node.children)) {\n this.nodeSortingService.markEntityRootChildren(node.children);\n node._portalDirectChildren = node.children;\n }\n const directChildren = node._portalDirectChildren || [];\n\n if (node.defineEntity) {\n this.processNodeDefineEntity(\n node,\n childrenByEntity,\n parentEntityPath,\n directChildren,\n );\n } else {\n directChildren.forEach((child) => {\n this.applyEntityChildrenRecursively(\n child,\n childrenByEntity,\n parentEntityPath,\n );\n });\n node.children = (ctx: any) =>\n Promise.all(\n directChildren\n .filter((child) => visibleForContext(ctx, child))\n .map(\n (child) =>\n this.customNodeProcessingService?.processNode(ctx, child) ||\n child,\n ),\n );\n }\n\n if (node.virtualTree) {\n node.children = undefined;\n }\n }\n\n private processNodeDefineEntity(\n node: LuigiNode,\n childrenByEntity: Record<string, LuigiNode[]>,\n parentEntityPath: string,\n directChildren: LuigiNode[],\n ) {\n if (!node.defineEntity) {\n this.luigiCoreService.showAlert({\n text: 'Node defineEntity is missing',\n type: 'error',\n });\n\n throw new Error('Node defineEntity is missing');\n }\n\n let newEntityPath = parentEntityPath;\n if (parentEntityPath?.length > 0) {\n newEntityPath = parentEntityPath + '.' + node.defineEntity.id;\n } else {\n newEntityPath = node.defineEntity.id;\n }\n\n node.children = (ctx: any) => {\n return this.entityChildrenProvider(\n node,\n ctx,\n childrenByEntity,\n directChildren,\n newEntityPath,\n );\n };\n\n this.processCompoundNode(node, childrenByEntity, newEntityPath);\n }\n\n processCompoundNode(\n node: LuigiNode,\n childrenByEntity: Record<string, LuigiNode[]>,\n newEntityPath: string,\n ) {\n if (node.compound) {\n if (!node.compound._staticChildren) {\n node.compound._staticChildren = node.compound.children || [];\n }\n const additionalChildren =\n childrenByEntity[newEntityPath + '::compound'] || [];\n let children = [\n ...node.compound._staticChildren,\n ...additionalChildren,\n ].sort(this.nodeSortingService.nodeComparison);\n\n Object.defineProperty(node.compound, 'children', {\n set: (newValue) => (children = newValue),\n get: () => {\n children.forEach((child) => {\n child.context.entityContext = {\n ...child.context.entityContext,\n ...node.context?.entityContext,\n };\n });\n return children.filter((child) =>\n visibleForContext(child.context, child),\n );\n },\n configurable: true,\n });\n }\n }\n\n entityChildrenProvider(\n entityNode: LuigiNode,\n ctx: any,\n childrenByEntity: Record<string, LuigiNode[]>,\n directChildren: LuigiNode[],\n entityPath: string,\n ) {\n return new Promise<LuigiNode[]>(async (resolve, reject) => {\n const entityTypeId = entityPath || entityNode?.defineEntity?.id;\n const contextKey = entityNode?.defineEntity?.contextKey;\n const entityId = contextKey ? ctx[contextKey] : undefined;\n\n const staticChildren = [\n ...(directChildren || []),\n ...(childrenByEntity[entityTypeId ?? ''] || []),\n ];\n\n await this.nodeContextProcessingService?.processNodeContext(\n entityId,\n entityNode,\n ctx,\n );\n\n if (!entityTypeId || !entityNode.defineEntity?.dynamicFetchId) {\n const serverAndLocalNodes =\n await this.localConfigurationService.replaceServerNodesWithLocalOnes(\n staticChildren,\n [entityPath],\n );\n const childrenList = await this.createChildrenList(\n entityNode,\n ctx,\n childrenByEntity,\n entityPath,\n serverAndLocalNodes,\n );\n resolve(childrenList);\n return;\n }\n\n let dynamicRetrievedChildren: LuigiNode[],\n staticRetrievedChildren: LuigiNode[] | undefined;\n\n try {\n const fetchContext = computeDynamicFetchContext(entityNode, ctx);\n const dynamicFetchId = entityNode.defineEntity.dynamicFetchId;\n dynamicRetrievedChildren =\n await this.luigiNodesService.retrieveEntityChildren(\n entityNode.defineEntity,\n fetchContext.get(dynamicFetchId),\n );\n const serverAndLocalNodes =\n await this.localConfigurationService.replaceServerNodesWithLocalOnes(\n dynamicRetrievedChildren,\n [entityPath],\n );\n dynamicRetrievedChildren = [...staticChildren, ...serverAndLocalNodes];\n staticRetrievedChildren = staticChildren;\n } catch (error) {\n dynamicRetrievedChildren = staticChildren;\n staticRetrievedChildren = undefined;\n }\n\n const childrenList = await this.createChildrenList(\n entityNode,\n ctx,\n childrenByEntity,\n entityPath,\n dynamicRetrievedChildren,\n staticRetrievedChildren,\n );\n resolve(childrenList);\n });\n }\n\n private createChildrenList(\n entityNode: LuigiNode,\n ctx: any,\n childrenByEntity: Record<string, LuigiNode[]>,\n entityPath: string,\n children: LuigiNode[],\n staticChildren?: LuigiNode[],\n ) {\n const entityRootChildren = staticChildren ? [] : children;\n let mergedChildrenByEntity = childrenByEntity;\n if (staticChildren) {\n const entityChildrenByEntity: Record<string, LuigiNode[]> = {};\n\n children?.forEach((child) => {\n if (\n child.entityType === entityPath ||\n child.entityType === EntityType.ENTITY_ERROR ||\n staticChildren.includes(child)\n ) {\n entityRootChildren.push(child);\n } else if (child.entityType) {\n if (!entityChildrenByEntity[child.entityType]) {\n entityChildrenByEntity[child.entityType] = [];\n }\n entityChildrenByEntity[child.entityType].push(child);\n } else {\n console.warn('Ignored entity child, no entity type defined', child);\n }\n });\n mergedChildrenByEntity = { ...childrenByEntity };\n Object.keys(entityChildrenByEntity).forEach((key) => {\n const existingNodes = mergedChildrenByEntity[key];\n mergedChildrenByEntity[key] = existingNodes\n ? [...existingNodes, ...entityChildrenByEntity[key]]\n : entityChildrenByEntity[key];\n });\n }\n\n entityRootChildren.forEach((child) => {\n this.applyEntityChildrenRecursively(\n child,\n mergedChildrenByEntity,\n entityPath,\n );\n });\n return this.childrenNodesService.processChildrenForEntity(\n entityNode,\n entityRootChildren,\n ctx,\n );\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport {\n LUIGI_APP_SWITCHER_CONFIG_SERVICE_INJECTION_TOKEN,\n LUIGI_NODE_CHANGE_HOOK_SERVICE_INJECTION_TOKEN,\n LUIGI_USER_PROFILE_CONFIG_SERVICE_INJECTION_TOKEN\n} from '../../injection-tokens';\nimport { ClientEnvironment, LuigiNode } from '../../models';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { IntentNavigationService } from '../luigi-nodes/intent-navigation.service';\nimport { LuigiNodesService } from '../luigi-nodes/luigi-nodes.service';\nimport { NodesProcessingService } from '../luigi-nodes/nodes-processing.service';\nimport { ConfigService } from '../portal';\nimport { featureToggleLocalStorage } from '../storage-service';\nimport { AppSwitcherConfigService } from './app-switcher-config.service';\nimport { HeaderBarService } from './luigi-breadcrumb-config.service';\nimport { GlobalContextConfigService } from './global-context-config.service';\nimport { NodeChangeHookConfigService } from './node-change-hook-config.service';\nimport { UserProfileConfigService } from './user-profile-config.service';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationConfigService {\n constructor(\n private configService: ConfigService,\n private luigiCoreService: LuigiCoreService,\n private luigiNodesService: LuigiNodesService,\n private intentNavigationService: IntentNavigationService,\n private navigationGlobalContextConfigService: GlobalContextConfigService,\n @Optional()\n @Inject(LUIGI_USER_PROFILE_CONFIG_SERVICE_INJECTION_TOKEN)\n private userProfileConfigService: UserProfileConfigService,\n @Optional()\n @Inject(LUIGI_APP_SWITCHER_CONFIG_SERVICE_INJECTION_TOKEN)\n private appSwitcherConfigService: AppSwitcherConfigService,\n @Optional()\n @Inject(LUIGI_NODE_CHANGE_HOOK_SERVICE_INJECTION_TOKEN)\n private nodeChangeHookConfigService: NodeChangeHookConfigService,\n private nodesProcessingService: NodesProcessingService,\n private headerBarService: HeaderBarService,\n ) {\n }\n\n async getNavigationConfig(\n childrenByEntity: Record<string, LuigiNode[]>,\n envConfig: ClientEnvironment\n ) {\n const allNodes = Object.values(childrenByEntity).reduce(\n (accumulator, value) => accumulator.concat(value),\n []\n );\n\n const portalConfig = await this.configService.getPortalConfig();\n this.initFeatureToggles(portalConfig.featureToggles, envConfig);\n const context = await this.navigationGlobalContextConfigService.getGlobalContext();\n const luigiNodes =\n await this.nodesProcessingService.processNodes(childrenByEntity);\n\n return {\n nodes: luigiNodes,\n viewGroupSettings: this.buildViewGroups(allNodes),\n appSwitcher: this.appSwitcherConfigService?.getAppSwitcher(luigiNodes),\n globalContext: context,\n profile: await this.userProfileConfigService?.getProfile(),\n addNavHrefs: true,\n contextSwitcher: undefined,\n nodeAccessibilityResolver: this.luigiNodesService.nodePolicyResolver,\n validWebcomponentUrls: envConfig.validWebcomponentUrls,\n intentMapping: this.intentNavigationService.buildIntentMappings(allNodes),\n nodeChangeHook: function (prevNode, nextNode) {\n this.nodeChangeHookConfigService?.nodeChangeHook(prevNode, nextNode);\n }.bind(this),\n breadcrumbs:\n await this.headerBarService.getConfig(),\n };\n }\n\n private initFeatureToggles(configFeatureToggles: Record<string, boolean>, envConfig: ClientEnvironment) {\n if (envConfig.uiOptions?.includes('enableFeatureToggleSetting')) {\n const featureToggleSettings = featureToggleLocalStorage.read();\n this.luigiCoreService.setFeatureToggles({\n ...configFeatureToggles,\n ...featureToggleSettings,\n });\n return;\n }\n\n this.luigiCoreService.setFeatureToggles(configFeatureToggles);\n }\n\n private buildViewGroups(nodes: LuigiNode[]) {\n const viewGroups = {};\n nodes.forEach((node) => {\n if (node.viewGroup && node._preloadUrl) {\n viewGroups[node.viewGroup] = {\n preloadUrl: node._preloadUrl,\n requiredIFramePermissions:\n node._requiredIFramePermissionsForViewGroup,\n };\n }\n });\n\n return viewGroups;\n }\n}\n","import { LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { LuigiNode } from '../../models';\nimport { I18nService } from '../i18n.service';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { LuigiNodesService } from '../luigi-nodes/luigi-nodes.service';\nimport { EnvConfigService } from '../portal';\nimport { AuthConfigService } from './auth-config.service';\nimport { CustomMessageListenersService } from './custom-message-listeners.service';\nimport { GlobalSearchConfigService } from './global-search-config.service';\nimport { NavigationConfigService } from './navigation-config.service';\nimport { RoutingConfigServiceImpl } from './routing-config.service';\nimport { StaticSettingsConfigServiceImpl } from './static-settings-config.service';\nimport { UserSettingsConfigService } from './user-settings-config.service';\nimport { Injectable, inject } from '@angular/core';\nimport { $localize } from '@angular/localize/init';\n\n@Injectable({ providedIn: 'root' })\nexport class LifecycleHooksConfigService {\n private authConfigService = inject(AuthConfigService);\n private customMessageListenersService = inject(CustomMessageListenersService);\n private envConfigService = inject(EnvConfigService);\n private i18nService = inject(I18nService);\n private luigiNodesService = inject(LuigiNodesService);\n private luigiCoreService = inject(LuigiCoreService);\n private routingConfigService = inject(RoutingConfigServiceImpl);\n private navigationConfigService = inject(NavigationConfigService);\n private userSettingsConfigService = inject(UserSettingsConfigService);\n private staticSettingsConfigService = inject(StaticSettingsConfigServiceImpl);\n private globalSearchConfigService = inject<GlobalSearchConfigService>(\n LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n\n getLifecycleHooksConfig() {\n return {\n luigiAfterInit: () => {\n return this.constructLuigiConfiguration();\n },\n };\n }\n\n private async constructLuigiConfiguration() {\n this.i18nService.afterInit();\n const envConfig = await this.envConfigService.getEnvConfig();\n\n let childrenByEntity: Record<string, LuigiNode[]>;\n try {\n childrenByEntity =\n await this.luigiNodesService.retrieveChildrenByEntity();\n } catch (e) {\n console.error('Error retrieving Luigi navigation nodes', e);\n this.openErrorDialog();\n return;\n }\n\n const config = {\n auth: await this.authConfigService.getAuthConfig(),\n settings:\n await this.staticSettingsConfigService.getStaticSettingsConfig(),\n communication: this.customMessageListenersService.getMessageListeners(),\n navigation: await this.navigationConfigService.getNavigationConfig(\n childrenByEntity,\n envConfig,\n ),\n routing: this.routingConfigService.getRoutingConfig(),\n userSettings:\n await this.userSettingsConfigService.getUserSettings(childrenByEntity),\n globalSearch: this.globalSearchConfigService?.getGlobalSearchConfig(),\n };\n\n this.luigiCoreService.setConfig(config);\n this.luigiCoreService.ux().hideAppLoadingIndicator();\n }\n\n private openErrorDialog() {\n const appTitle = this.luigiCoreService.config?.settings?.header?.title;\n this.luigiCoreService.showAlert({\n text: $localize`There was an error loading the ${appTitle}`,\n type: 'error',\n });\n }\n}\n","import {\n AuthConfigService,\n AuthService,\n LuigiCoreService,\n StaticSettingsConfigServiceImpl,\n} from '../../services';\nimport { LifecycleHooksConfigService } from '../../services/luigi-config/lifecycle-hooks-config.service';\nimport { RoutingConfigServiceImpl } from '../../services/luigi-config/routing-config.service';\nimport { Component, OnInit, inject } from '@angular/core';\n\n@Component({\n template: '',\n standalone: true,\n})\nexport class LuigiComponent implements OnInit {\n private lifecycleHooksConfigService = inject(LifecycleHooksConfigService);\n private luigiCoreService = inject(LuigiCoreService);\n private authService = inject(AuthService);\n private routingConfigService = inject(RoutingConfigServiceImpl);\n private authConfigService = inject(AuthConfigService);\n private staticSettingsConfigService = inject(StaticSettingsConfigServiceImpl);\n\n async ngOnInit(): Promise<void> {\n try {\n this.luigiCoreService.setConfig({\n auth: await this.authConfigService.getAuthConfig(),\n routing: this.routingConfigService.getInitialRoutingConfig(),\n lifecycleHooks:\n this.lifecycleHooksConfigService.getLifecycleHooksConfig(),\n settings:\n await this.staticSettingsConfigService.getStaticSettingsConfig(),\n });\n this.luigiCoreService.setAuthData(this.authService.getAuthData());\n } catch (e) {\n console.error(`Luigi Component init failed: ${e.toString()}`);\n }\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\ndocument.body.classList.add('ui5-content-density-compact');\n\n@Component({\n selector: 'app-portal',\n standalone: true,\n imports: [RouterOutlet],\n templateUrl: './portal.component.html',\n styleUrls: ['./portal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PortalComponent {}\n","<div class=\"fd-page__content\">\n <router-outlet></router-outlet>\n</div>\n","import { LogoutComponent, LuigiComponent } from './components';\nimport { Routes } from '@angular/router';\n\nexport const portalRouts: Routes = [\n { path: 'logout', component: LogoutComponent },\n { path: '', component: LuigiComponent },\n { path: '**', component: LuigiComponent },\n];\n","import {\n ActivatedRouteSnapshot,\n DetachedRouteHandle,\n RouteReuseStrategy,\n} from '@angular/router';\n\nexport class CustomReuseStrategy implements RouteReuseStrategy {\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\n // Optionally, you can customize which routes should be detached (stored)\n return false; // Not detaching any routes for now\n }\n\n store(\n route: ActivatedRouteSnapshot,\n handle: DetachedRouteHandle | null\n ): void {\n // Optional: Store the detached route here if needed\n }\n\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\n // Optional: Specify which routes to reattach\n return false; // Not attaching any routes for now\n }\n\n retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\n // Optional: Retrieve the stored route if needed\n return null; // Returning null means no route is retrieved\n }\n\n shouldReuseRoute(\n future: ActivatedRouteSnapshot,\n curr: ActivatedRouteSnapshot\n ): boolean {\n return (\n future.routeConfig === curr.routeConfig ||\n future.routeConfig?.component === curr.routeConfig?.component\n );\n }\n}\n","import {\n provideBootstrap,\n provideLanguageServices,\n provideNavigationTracker,\n provideSessionRefresh,\n} from './initializers';\nimport {\n ERROR_COMPONENT_CONFIG,\n HEADER_BAR_CONFIG_SERVICE_INJECTION_TOKEN,\n LOCAL_CONFIGURATION_SERVICE_INJECTION_TOKEN,\n LUIGI_APP_SWITCHER_CONFIG_SERVICE_INJECTION_TOKEN,\n LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE_INJECTION_TOKEN,\n LUIGI_CUSTOM_MESSAGE_LISTENERS_INJECTION_TOKEN,\n LUIGI_CUSTOM_NODE_CONTEXT_PROCESSING_SERVICE_INJECTION_TOKEN,\n LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN,\n LUIGI_EXTENDED_GLOBAL_CONTEXT_CONFIG_SERVICE_INJECTION_TOKEN,\n LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN,\n LUIGI_NODES_CUSTOM_GLOBAL_SERVICE_INJECTION_TOKEN,\n LUIGI_NODE_CHANGE_HOOK_SERVICE_INJECTION_TOKEN,\n LUIGI_ROUTING_CONFIG_SERVICE_INJECTION_TOKEN,\n LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN,\n LUIGI_USER_PROFILE_CONFIG_SERVICE_INJECTION_TOKEN,\n THEMING_SERVICE,\n} from './injection-tokens';\nimport { ErrorComponentConfig } from './models';\nimport { portalRouts } from './portal-routing';\nimport {\n AppSwitcherConfigService,\n AppSwitcherConfigServiceImpl,\n CustomGlobalNodesService,\n CustomMessageListener,\n CustomNodeProcessingService,\n DefaultUserProfileConfigService,\n GlobalSearchConfigService,\n HeaderBarConfigService,\n LocalConfigurationService,\n LuigiAuthEventsCallbacksService,\n LuigiExtendedGlobalContextConfigService,\n NodeChangeHookConfigService,\n NodeContextProcessingService,\n RoutingConfigService,\n StaticSettingsConfigService,\n ThemingService,\n UserProfileConfigService,\n UserSettingsConfigService,\n} from './services';\nimport { CustomReuseStrategy } from './utilities';\nimport { provideHttpClient } from '@angular/common/http';\nimport {\n EnvironmentProviders,\n Provider,\n Type,\n makeEnvironmentProviders,\n} from '@angular/core';\nimport { RouteReuseStrategy, provideRouter } from '@angular/router';\n\nexport interface PortalOptions {\n /** Service containing and providing the luigi settings configuration **/\n staticSettingsConfigService?: Type<StaticSettingsConfigService>;\n\n /** A set of class representing custom listeners **/\n customMessageListeners?: Type<CustomMessageListener>[];\n\n /** Service providing local configuration services **/\n localConfigurationService?: Type<LocalConfigurationService>;\n\n /** Service providing user setting specific configuration **/\n userSettingsConfigService?: Type<UserSettingsConfigService>;\n\n /** Service providing global search configuration **/\n globalSearchConfigService?: Type<GlobalSearchConfigService>;\n\n /** Service providing luigi app switcher configuration **/\n appSwitcherConfigService?: Type<AppSwitcherConfigService>;\n\n /** Service providing luigi node extended context configuration **/\n luigiExtendedGlobalContextConfigService?: Type<LuigiExtendedGlobalContextConfigService>;\n\n /** Service providing custom global level nodes **/\n customGlobalNodesService?: Type<CustomGlobalNodesService>;\n\n /** Service providing custom global level nodes **/\n nodeContextProcessingService?: Type<NodeContextProcessingService>;\n\n /** Service providing luigi user profile configuration **/\n userProfileConfigService?: Type<UserProfileConfigService>;\n\n /** Provide a config that contains renderers for Nav Bar */\n headerBarConfigService?: Type<HeaderBarConfigService>;\n\n /** Service providing custom global level nodes **/\n nodeChangeHookConfigService?: Type<NodeChangeHookConfigService>;\n\n /** Service handling every node access policies **/\n customNodeProcessingService?: Type<CustomNodeProcessingService>;\n\n /** Service handling luigi authentication events **/\n luigiAuthEventsCallbacksService?: Type<LuigiAuthEventsCallbacksService>;\n\n /** Provide a error configuration for error component to override the default values **/\n errorComponentConfig?: ErrorComponentConfig;\n\n /** Provide a error configuration for error component to override the default values **/\n themingService?: Type<ThemingService>;\n\n /** Service providing luigi routing configuration **/\n routingConfigService?: Type<RoutingConfigService>;\n}\n\nexport function providePortal(\n options: PortalOptions = {},\n): EnvironmentProviders {\n const providers: (Provider | EnvironmentProviders)[] = [\n provideHttpClient(),\n provideBootstrap(),\n provideSessionRefresh(),\n provideNavigationTracker(),\n provideLanguageServices(),\n provideRouter(portalRouts),\n { provide: RouteReuseStrategy, useClass: CustomReuseStrategy },\n ...addOptionalProviders(options),\n ];\n\n return makeEnvironmentProviders(providers);\n}\n\nconst addOptionalProviders = (\n options: PortalOptions,\n): (Provider | EnvironmentProviders)[] => {\n const providers: (Provider | EnvironmentProviders)[] = [];\n (options.customMessageListeners || []).forEach((customMessageListenerClass) =>\n providers.push({\n provide: LUIGI_CUSTOM_MESSAGE_LISTENERS_INJECTION_TOKEN,\n multi: true,\n useClass: customMessageListenerClass,\n }),\n );\n\n providers.push({\n provide: LUIGI_APP_SWITCHER_CONFIG_SERVICE_INJECTION_TOKEN,\n useClass: options.appSwitcherConfigService || AppSwitcherConfigServiceImpl,\n });\n\n providers.push({\n provide: LUIGI_USER_PROFILE_CONFIG_SERVICE_INJECTION_TOKEN,\n useClass:\n options.userProfileConfigService || DefaultUserProfileConfigService,\n });\n\n if (options.luigiExtendedGlobalContextConfigService) {\n providers.push({\n provide: LUIGI_EXTENDED_GLOBAL_CONTEXT_CONFIG_SERVICE_INJECTION_TOKEN,\n useClass: options.luigiExtendedGlobalContextConfigService,\n });\n }\n\n if (options.nodeChangeHookConfigService) {\n providers.push({\n provide: LUIGI_NODE_CHANGE_HOOK_SERVICE_INJECTION_TOKEN,\n useClass: options.nodeChangeHookConfigService,\n });\n }\n\n if (options.nodeContextProcessingService) {\n providers.push({\n provide: LUIGI_CUSTOM_NODE_CONTEXT_PROCESSING_SERVICE_INJECTION_TOKEN,\n useClass: options.nodeContextProcessingService,\n });\n }\n\n if (options.localConfigurationService) {\n providers.push({\n provide: LOCAL_CONFIGURATION_SERVICE_INJECTION_TOKEN,\n useClass: options.localConfigurationService,\n });\n }\n\n if (options.staticSettingsConfigService) {\n providers.push({\n provide: LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN,\n useClass: options.staticSettingsConfigService,\n });\n }\n\n if (options.luigiAuthEventsCallbacksService) {\n providers.push({\n provide: LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE_INJECTION_TOKEN,\n useClass: options.luigiAuthEventsCallbacksService,\n });\n }\n\n if (options.customNodeProcessingService) {\n providers.push({\n provide: LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN,\n useClass: options.customNodeProcessingService,\n });\n }\n\n if (options.customGlobalNodesService) {\n providers.push({\n provide: LUIGI_NODES_CUSTOM_GLOBAL_SERVICE_INJECTION_TOKEN,\n useClass: options.customGlobalNodesService,\n });\n }\n\n if (options.themingService) {\n providers.push({\n provide: THEMING_SERVICE,\n useClass: options.themingService,\n });\n }\n\n if (options.globalSearchConfigService) {\n providers.push({\n provide: LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN,\n useClass: options.globalSearchConfigService,\n });\n }\n\n if (options.errorComponentConfig) {\n providers.push({\n provide: ERROR_COMPONENT_CONFIG,\n useValue: options.errorComponentConfig,\n });\n }\n\n if (options.headerBarConfigService) {\n providers.push({\n provide: HEADER_BAR_CONFIG_SERVICE_INJECTION_TOKEN,\n useClass: options.headerBarConfigService,\n });\n }\n\n if (options.routingConfigService) {\n providers.push({\n provide: LUIGI_ROUTING_CONFIG_SERVICE_INJECTION_TOKEN,\n useClass: options.routingConfigService,\n });\n }\n\n return providers;\n};\n","/*\n * Public API Surface of lib\n */\n\nexport * from './lib/portal-providers';\nexport * from './lib/injection-tokens';\nexport * from './lib/components/portal/portal.component';\n\nexport * from './lib/models';\nexport * from './lib/services';\nexport * from './lib/utilities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LuigiCoreService","i2","i1","i2.RequestHeadersService","i1.AuthService","i2.LuigiCoreService","i3.GlobalContextConfigService","filter","i2.AuthService","i3.LoginEventService","i2.I18nService","i2.LoginEventService","i1.ConfigService","i3.LuigiNodesService","i4.IntentNavigationService","i5.GlobalContextConfigService","i6.NodesProcessingService","i7.HeaderBarService"],"mappings":"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"}
1
+ {"version":3,"file":"openmfp-portal-ui-lib.mjs","sources":["../../projects/lib/src/lib/services/luigi-core.service.ts","../../projects/lib/src/lib/models/auth.ts","../../projects/lib/src/lib/models/entity.ts","../../projects/lib/src/lib/models/luigi.ts","../../projects/lib/src/lib/services/request-headers.service.ts","../../projects/lib/src/lib/services/portal/config.service.ts","../../projects/lib/src/lib/services/portal/auth.service.ts","../../projects/lib/src/lib/services/portal/env-config.service.ts","../../projects/lib/src/lib/services/portal/local-nodes.service.ts","../../projects/lib/src/lib/injection-tokens.ts","../../projects/lib/src/lib/services/luigi-config/global-context-config.service.ts","../../projects/lib/src/lib/services/auth/session-refresh.service.ts","../../projects/lib/src/lib/services/i18n.service.ts","../../projects/lib/src/lib/services/login-event.service.ts","../../projects/lib/src/lib/services/storage-service.ts","../../projects/lib/src/lib/services/luigi-config/iframe.service.ts","../../projects/lib/src/lib/services/luigi-config/static-settings-config.service.ts","../../projects/lib/src/lib/services/luigi-config/custom-message-listeners/reload-luigi-config.listener.ts","../../projects/lib/src/lib/services/luigi-config/custom-message-listeners.service.ts","../../projects/lib/src/lib/services/dependencies-versions.service.ts","../../projects/lib/src/lib/services/luigi-config/user-settings-config.service.ts","../../projects/lib/src/lib/services/luigi-nodes/node-utils.service.ts","../../projects/lib/src/lib/services/luigi-config/app-switcher-config.service.ts","../../projects/lib/src/lib/services/luigi-config/user-profile-config.service.ts","../../projects/lib/src/lib/services/luigi-config/luigi-breadcrumb-config.service.ts","../../projects/lib/src/lib/services/luigi-config/auth-config.service.ts","../../projects/lib/src/lib/services/luigi-nodes/local-configuration.service.ts","../../projects/lib/src/lib/services/luigi-nodes/luigi-nodes.service.ts","../../projects/lib/src/lib/services/luigi-nodes/node-context-processing.service.ts","../../projects/lib/src/lib/services/luigi-config/routing-config.service.ts","../../projects/lib/src/lib/initializers/portal-bootstrap.initializer.ts","../../projects/lib/src/lib/initializers/session-refresh.initializer.ts","../../projects/lib/src/lib/services/navigation.service.ts","../../projects/lib/src/lib/initializers/navigation-tracker.initializer.ts","../../projects/lib/src/lib/initializers/language.initializer.ts","../../projects/lib/src/lib/components/logout/logout.component.ts","../../projects/lib/src/lib/components/logout/logout.component.html","../../projects/lib/src/lib/services/luigi-nodes/intent-navigation.service.ts","../../projects/lib/src/lib/utilities/jmespath.ts","../../projects/lib/src/lib/utilities/context.ts","../../projects/lib/src/lib/services/luigi-nodes/node-sorting.service.ts","../../projects/lib/src/lib/services/luigi-nodes/children-nodes.service.ts","../../projects/lib/src/lib/services/luigi-nodes/nodes-processing.service.ts","../../projects/lib/src/lib/services/luigi-config/navigation-config.service.ts","../../projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.ts","../../projects/lib/src/lib/components/luigi/luigi.component.ts","../../projects/lib/src/lib/components/portal/portal.component.ts","../../projects/lib/src/lib/components/portal/portal.component.html","../../projects/lib/src/lib/portal-routing.ts","../../projects/lib/src/lib/utilities/custom-reuse-strategy.ts","../../projects/lib/src/lib/portal-providers.ts","../../projects/lib/src/public-api.ts","../../projects/lib/src/openmfp-portal-ui-lib.ts"],"sourcesContent":["import {\n AuthData,\n LuigiConfig,\n LuigiCustomMessage,\n LuigiGlobalContext,\n} from '../models';\nimport { Injectable } from '@angular/core';\n\nconst luigi = (globalThis as any).Luigi;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LuigiCoreService {\n setConfig(config: LuigiConfig) {\n return luigi.setConfig(config);\n }\n\n get config(): LuigiConfig {\n return luigi.getConfig();\n }\n\n getConfigValue(key: string) {\n return luigi.getConfigValue(key);\n }\n\n unloadConfig() {\n return luigi.unload();\n }\n\n sendCustomMessage(customMessage: LuigiCustomMessage) {\n return luigi.sendCustomMessage(customMessage);\n }\n\n configChanged(scope?: string) {\n luigi.configChanged(scope);\n }\n\n customMessages() {\n return luigi.customMessages();\n }\n\n navigation() {\n return luigi.navigation();\n }\n\n resetLuigi() {\n luigi.reset();\n }\n\n clearNavigationCache() {\n if (luigi.clearNavigationCache) {\n luigi.clearNavigationCache();\n }\n }\n\n showAlert(alert: any) {\n return luigi.showAlert(alert);\n }\n\n ux() {\n return luigi.ux();\n }\n\n theming() {\n return luigi.theming();\n }\n\n i18n() {\n return luigi.i18n();\n }\n\n globalSearch() {\n return luigi.globalSearch();\n }\n\n getGlobalContext(): LuigiGlobalContext {\n return luigi.getGlobalContext();\n }\n\n getWcExtendedContext(): Record<string, any> {\n return (\n document\n .querySelector('.wcContainer')\n ?.querySelector('[lui_web_component]') as any\n )?.extendedContext?.context;\n }\n\n getWcModalExtendedContext(): Record<string, any> {\n return (\n document\n .querySelector('.iframeModalCtn')\n ?.querySelector('[lui_web_component]') as any\n )?.extendedContext?.context;\n }\n\n setGlobalContext(\n globalContext: Record<string, any>,\n preventUpdate: boolean = false,\n ) {\n luigi.setGlobalContext(globalContext, preventUpdate);\n }\n\n setInGlobalContext(\n context: Record<string, any>,\n preventUpdate: boolean = false,\n ) {\n luigi.setGlobalContext(\n { ...this.getGlobalContext(), ...context },\n preventUpdate,\n );\n }\n\n routing() {\n return luigi.routing();\n }\n\n setFeatureToggle(featureToggleName: string) {\n luigi.featureToggles().setFeatureToggle(featureToggleName);\n }\n\n unsetFeatureToggle(featureToggleName: string) {\n luigi.featureToggles().unsetFeatureToggle(featureToggleName);\n }\n\n unsetAllFeatureToggles() {\n luigi\n .featureToggles()\n .getActiveFeatureToggleList()\n .forEach((ft: string) => {\n this.unsetFeatureToggle(ft);\n });\n }\n\n setFeatureToggles(featureToggles: Record<string, boolean>) {\n if (!featureToggles) {\n return;\n }\n\n for (const featureToggleName of Object.keys(featureToggles)) {\n if (featureToggles[featureToggleName]) {\n this.setFeatureToggle(featureToggleName);\n }\n }\n }\n\n isFeatureToggleActive(ft: string): boolean {\n return luigi.featureToggles().getActiveFeatureToggleList().includes(ft);\n }\n\n getActiveFeatureToggleList(): string[] {\n return luigi.featureToggles().getActiveFeatureToggleList();\n }\n\n setAuthData(authData: AuthData) {\n luigi.auth().store.setAuthData(authData);\n luigi.auth().store.setNewlyAuthorized();\n }\n\n removeAuthData() {\n luigi.auth().store.removeAuthData();\n }\n\n getAuthData(): AuthData | undefined {\n return luigi.auth().store.getAuthData();\n }\n\n setCurrentLocale(language: string) {\n luigi.i18n().setCurrentLocale(language);\n }\n}\n","export enum AuthEvent {\n AUTH_SUCCESSFUL = 'AuthSuccessful',\n AUTH_ERROR = 'AuthError',\n AUTH_EXPIRED = 'AuthExpired',\n AUTH_REFRESHED = 'AuthRefreshed',\n AUTH_EXPIRE_SOON = 'AuthExpireSoon',\n AUTH_CONFIG_ERROR = 'AuthConfigError',\n LOGOUT = 'Logout',\n}\n","export enum EntityType {\n GLOBAL = 'global',\n GLOBAL_TOPNAV = 'global.topnav',\n ENTITY_ERROR = 'entity.error',\n}\n","import { NodeContext } from './luigi-context';\n\nexport interface LuigiNavigationConfig {\n nodes?: LuigiNode[];\n viewGroupSettings?: any;\n appSwitcher?: any;\n globalContext?: any;\n profile?: any;\n addNavHrefs?: boolean;\n contextSwitcher?: any;\n nodeAccessibilityResolver?: any;\n validWebcomponentUrls?: string;\n intentMapping?: any;\n nodeChangeHook?: any;\n breadcrumbs?: any;\n}\n\nexport interface LuigiStaticSettings extends Record<string, any> {\n header: {\n title: string;\n logo: string;\n favicon?: string;\n };\n btpToolLayout?: boolean;\n experimental?: {\n webcomponents?: boolean;\n globalNav?: boolean;\n profileMenuFiori3?: boolean;\n navHeader?: boolean;\n breadcrumbs?: boolean;\n globalSearchCentered?: boolean;\n btpToolLayout?: boolean;\n };\n links?: {\n title: string;\n link: string;\n }[];\n}\n\nexport interface LuigiConfig {\n auth?: any;\n routing?: any;\n settings?: LuigiStaticSettings;\n lifecycleHooks?: any;\n navigation?: LuigiNavigationConfig;\n userSettings?: any;\n communication?: any;\n globalSearch?: any;\n}\n\nexport interface LuigiCustomMessage extends Record<string, any> {\n id: string;\n}\n\nexport interface EntityDefinition {\n id: string;\n dynamicFetchId?: string;\n contextKey?: string;\n additionalContextKeys?: string[];\n useBack?: boolean;\n label?: string;\n pluralLabel?: string;\n notFoundConfig?: {\n entityListNavigationContext: string;\n sapIllusSVG: string;\n };\n graphqlEntity?: {\n group: 'string';\n kind: 'string';\n query: 'string';\n };\n}\n\nexport interface LuigiStatusBadge {\n label: string;\n type: string;\n}\n\nexport interface LuigiUserSetting {\n type: string;\n label?: string;\n style?: string;\n description?: string;\n options?: string[];\n isEditable?: boolean;\n}\n\nexport interface LuigiUserSettingsGroup {\n label?: string;\n sublabel?: string;\n title?: string;\n icon?: string;\n viewUrl?: string;\n settings?: Record<string, LuigiUserSetting>;\n}\n\nexport interface LuigiUserSettings {\n groups: Record<string, LuigiUserSettingsGroup>;\n}\n\nexport interface LuigiNodeIFramePermissions {\n allow?: string[];\n sandbox?: string[];\n}\n\nexport interface PortalLuigiNodeExtensions {\n _userSettingsConfig?: LuigiUserSettings;\n _preloadUrl?: string;\n _requiredIFramePermissionsForViewGroup?: LuigiNodeIFramePermissions;\n // internal navigation ordering\n _portalDirectChildren?: LuigiNode[];\n _intentMappings?: LuigiIntent[];\n _entityRelativePaths?: Record<string, any>;\n _entityRootChild?: boolean;\n hideFromBreadcrumb?: boolean;\n breadcrumbBadge?: BreadcrumbBadge;\n entityType?: string;\n requiredPolicies?: string[];\n visibleForEntityContext?: Record<string, any>; // experimental/deprecated\n visibleForContext?: string; // experimental\n visibleForPlugin?: boolean; // experimental\n configurationMissing?: string; // experimental\n networkVisibility?: NetworkVisibility; //experimental\n isMissingMandatoryData?: boolean; // experimental\n extensionClassName?: string;\n defineEntity?: EntityDefinition;\n order?: string;\n dxpOrder?: string;\n navSlot?: string;\n defineSlot?: string;\n configurationHint?: string; // experimental\n configurationLink?: string; // experimental\n requiredIFramePermissions?: LuigiNodeIFramePermissions;\n}\n\nexport interface LuigiNodeCategory {\n label: string;\n collapsible?: boolean;\n order?: number;\n id?: string;\n icon?: string;\n}\n\nexport interface HelpContext {\n displayName?: string;\n issueTracker?: {\n url: string;\n };\n feedbackTracker?: {\n url: string;\n };\n stackSearch?: {\n tags: string[];\n };\n documentation?: {\n url: string;\n };\n}\n\nexport interface LuigiIntent {\n baseEntityId?: string;\n relativePath?: string;\n semanticObject: string;\n action: string;\n pathSegment?: string;\n}\n\nexport interface LuigiBadgeCounter {\n label: string;\n count: () => Promise<number | string> | number | string;\n}\n\nexport interface LuigiNode extends PortalLuigiNodeExtensions {\n testId?: string;\n pathSegment?: string;\n viewUrl?: string;\n viewGroup?: string;\n label?: string;\n icon?: string;\n link?: string;\n urlSuffix?: string;\n navHeader?: any;\n hideFromNav?: boolean;\n hideSideNav?: boolean;\n virtualTree?: boolean;\n initialRoute?: any;\n openNodeInModal?: any;\n navigationContext?: string;\n showBreadcrumbs?: boolean;\n loadingIndicator?: { enabled: boolean };\n target?: IntentSpecification;\n compound?: any;\n badgeCounter?: LuigiBadgeCounter;\n category?: LuigiNodeCategory | string;\n context: NodeContext;\n visibleForFeatureToggles?: string[];\n statusBadge?: LuigiStatusBadge;\n onNodeActivation?: (node: LuigiNode) => boolean;\n isolateView?: boolean;\n webcomponent?: {\n selfRegistered: boolean;\n };\n children?:\n | LuigiNode[]\n | { (context?: any): Promise<LuigiNode[]> }\n | { (context?: any): LuigiNode[] };\n titleResolver?: any;\n globalNav?: boolean;\n parent?: LuigiNode;\n}\n\nexport interface IntentSpecification {\n type: string;\n inboundId: string;\n resolvedIntent?: LuigiIntent;\n}\n\nexport enum NetworkVisibility {\n INTERNAL = 'internal',\n INTERNET = 'internet',\n}\n\nexport interface BreadcrumbBadge {\n text: string;\n colorSchema?: BreadcrumbBadgeColorSchema;\n hint?: string;\n}\n\nexport type BreadcrumbBadgeColorSchema =\n | '1'\n | '2'\n | '3'\n | '4'\n | '5'\n | '6'\n | '7'\n | '8'\n | '9'\n | '10';\n","import { LuigiCoreService } from './luigi-core.service';\nimport { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RequestHeadersService {\n constructor(\n private luigiCoreService: LuigiCoreService,\n private route: ActivatedRoute,\n ) {}\n\n public createOptionsWithAuthHeader() {\n let language = this.luigiCoreService.i18n().getCurrentLocale();\n const authData = this.luigiCoreService.getAuthData();\n\n this.route.queryParams.subscribe((params) => {\n if (params['language']) {\n language = params['language'];\n }\n });\n\n const headers = new HttpHeaders({\n 'Accept-Language': language || '',\n });\n\n if (!authData?.idToken) {\n return {\n headers,\n };\n }\n\n return {\n headers: headers.append('authorization', 'Bearer ' + authData.idToken),\n };\n }\n}\n","import { EntityConfig, PortalConfig } from '../../models';\nimport { RequestHeadersService } from '../request-headers.service';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigService {\n private portalConfigCachePromise: Promise<PortalConfig> | undefined;\n\n private entityConfigCache: Record<\n string /* entity */,\n Record<string /* ctx */, Promise<EntityConfig>>\n > = {};\n\n constructor(\n private http: HttpClient,\n private requestHeadersService: RequestHeadersService,\n ) {}\n\n async getPortalConfig(): Promise<PortalConfig> {\n if (this.portalConfigCachePromise) {\n return this.portalConfigCachePromise;\n }\n\n const options = this.requestHeadersService.createOptionsWithAuthHeader();\n this.portalConfigCachePromise = firstValueFrom(\n this.http.get<PortalConfig>('/rest/config', options),\n ).catch((e) => {\n if (e instanceof HttpErrorResponse && e.status === 403) {\n window.location.assign('/logout?error=invalidToken');\n }\n throw e;\n });\n\n return this.portalConfigCachePromise;\n }\n\n async reloadConfig(\n entity: string,\n context?: Record<string, string>,\n ): Promise<void> {\n if (!entity) {\n this.portalConfigCachePromise = undefined;\n await this.getPortalConfig();\n } else {\n try {\n const entityCacheKey = JSON.stringify(context);\n delete this.entityConfigCache[entity][entityCacheKey];\n } catch (e) {\n console.debug(\n `Error deleting entity config cache for entity: ${entity}, context: ${JSON.stringify(context)}, cache: ${JSON.stringify(this.entityConfigCache)}`,\n e,\n );\n }\n\n await this.getEntityConfig(entity, context);\n }\n }\n\n async getEntityConfig(\n entity: string,\n context?: Record<string, string>,\n ): Promise<EntityConfig> {\n if (!this.entityConfigCache[entity]) {\n this.entityConfigCache[entity] = {};\n }\n\n const entityCacheKey = JSON.stringify(context);\n const cachedConfig = this.entityConfigCache[entity][entityCacheKey];\n if (cachedConfig) {\n return cachedConfig;\n }\n\n const options = this.requestHeadersService.createOptionsWithAuthHeader();\n const entityConfig = firstValueFrom(\n this.http.get<EntityConfig>(`/rest/config/${entity}`, {\n ...options,\n ...{ params: context },\n }),\n );\n\n this.entityConfigCache[entity][entityCacheKey] = entityConfig;\n return entityConfig;\n }\n\n clearEntityConfigCache(): void {\n this.entityConfigCache = {};\n }\n}\n","import {\n AuthData,\n AuthEvent,\n AuthTokenData,\n UserData,\n UserTokenData,\n} from '../../models';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { jwtDecode } from 'jwt-decode';\nimport { Observable, Subject, lastValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n private authEventSubject = new Subject<AuthEvent>();\n private authData!: AuthData;\n\n constructor(private http: HttpClient) {}\n\n get authEvents(): Observable<AuthEvent> {\n return this.authEventSubject.asObservable();\n }\n\n public authEvent(event: AuthEvent) {\n this.authEventSubject.next(event);\n }\n\n public async refresh(): Promise<AuthTokenData | undefined> {\n const response = await lastValueFrom(\n this.http.post<AuthTokenData | undefined>('/rest/auth/refresh', {}),\n );\n\n this.setAuthData(response);\n return response;\n }\n\n private setAuthData(authTokenData: AuthTokenData | undefined): void {\n if (!authTokenData) {\n return;\n }\n\n this.authData = {\n accessTokenExpirationDate: this.processExpDate(authTokenData.expires_in),\n idToken: authTokenData.id_token,\n };\n }\n\n public getAuthData(): AuthData {\n return this.authData;\n }\n\n private parseJwt = (token: string): any => {\n try {\n return jwtDecode(token);\n } catch (Error) {\n return null;\n }\n };\n\n getToken = (): any => {\n const auth = this.getAuthData();\n if (auth) {\n return auth.idToken;\n }\n return {};\n };\n\n private getUser(): UserTokenData {\n const auth = this.getAuthData();\n if (auth) {\n return this.parseJwt(auth.idToken);\n }\n return {} as UserTokenData;\n }\n\n getUserInfo(): UserData {\n const user = this.getUser() || ({} as UserTokenData);\n\n const firstName = user.first_name || user.given_name || '';\n const lastName = user.last_name || user.family_name || '';\n const initialsFirstName: string = firstName[0] || '';\n const initialsLastName: string = lastName[0] || '';\n\n return {\n name: `${firstName} ${lastName}`,\n email: user.mail || user.email || '',\n description: user.mail || user.email || '',\n picture: '',\n icon: false,\n initials: initialsFirstName + initialsLastName,\n userId: user.sub || '',\n };\n }\n\n private processExpDate(expiresInSeconds: string): number {\n const expiresIn = Number(expiresInSeconds);\n return new Date().getTime() + expiresIn * 1000;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { ClientEnvironment } from '../../models';\nimport { lastValueFrom, tap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EnvConfigService {\n private http = inject(HttpClient);\n private envConfigCache: ClientEnvironment;\n\n public async getEnvConfig(): Promise<ClientEnvironment> {\n if (this.envConfigCache) {\n return this.envConfigCache;\n }\n\n await lastValueFrom(\n this.http\n .get<ClientEnvironment>('/rest/envconfig')\n .pipe(tap((result) => (this.envConfigCache = result)))\n );\n\n return this.envConfigCache;\n }\n}\n","import { ContentConfiguration } from '../../models';\nimport { TransformResult } from '../../models/node-transform';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { lastValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalNodesService {\n private http = inject(HttpClient);\n private luigiCoreService = inject(LuigiCoreService);\n\n async getLuigiNodesFromConfigurations(\n contentConfigurations: ContentConfiguration[],\n ): Promise<TransformResult | null> {\n if (contentConfigurations.length === 0) {\n return null;\n }\n\n const language = this.luigiCoreService.i18n().getCurrentLocale();\n return await lastValueFrom(\n this.http.post<TransformResult>(`/rest/localnodes`, {\n language,\n contentConfigurations,\n }),\n );\n }\n}\n","export const ERROR_COMPONENT_CONFIG = 'OPENMFP_ERROR_COMPONENT_CONFIG';\n\nexport const THEMING_SERVICE = 'OPENMFP_THEMING_SERVICE';\n\nexport const LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_STATIC_SETTINGS_CONFIG_SERVICE';\nexport const LUIGI_CUSTOM_MESSAGE_LISTENERS_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_CUSTOM_MESSAGE_LISTENERS';\nexport const LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE';\nexport const LUIGI_APP_SWITCHER_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_APP_SWITCHER_CONFIG_SERVICE';\nexport const LUIGI_USER_PROFILE_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_USER_PROFILE_CONFIG_SERVICE';\nexport const LUIGI_BREADCRUMB_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_BREADCRUMB_CONFIG_SERVICE';\nexport const LUIGI_NODE_CHANGE_HOOK_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_NODE_CHANGE_HOOK_CONFIG_SERVICE';\nexport const LUIGI_EXTENDED_GLOBAL_CONTEXT_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_NODES_EXTENDED_CONTEXT_SERVICE';\n\nexport const LOCAL_CONFIGURATION_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LOCAL_CONFIGURATION_SERVICE';\nexport const LUIGI_NODES_CUSTOM_GLOBAL_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_NODES_CUSTOM_GLOBAL_SERVICE';\nexport const LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_CUSTOM_NODE_PROCESSING_SERVICE';\nexport const LUIGI_CUSTOM_NODE_CONTEXT_PROCESSING_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_CUSTOM_NODE_CONTEXT_PROCESSING_SERVICE';\n\nexport const LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE';\n\nexport const HEADER_BAR_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_HEADER_BAR_CONFIG_SERVICE';\n\nexport const LUIGI_ROUTING_CONFIG_SERVICE_INJECTION_TOKEN =\n 'OPENMFP_LUIGI_ROUTING_CONFIG_SERVICE';\n","import { LUIGI_EXTENDED_GLOBAL_CONTEXT_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { LuigiGlobalContext } from '../../models';\nimport { LuigiExtendedGlobalContextConfigService } from '../luigi-nodes/luigi-extended-global-context-config.service';\nimport { AuthService, ConfigService } from '../portal';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class GlobalContextConfigService {\n private authService = inject(AuthService);\n private configService = inject(ConfigService);\n private luigiExtendedGlobalContextConfigService =\n inject<LuigiExtendedGlobalContextConfigService>(\n LUIGI_EXTENDED_GLOBAL_CONTEXT_CONFIG_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n\n async getGlobalContext(): Promise<LuigiGlobalContext> {\n const portalConfig = await this.configService.getPortalConfig();\n const userInfo = this.authService.getUserInfo();\n return {\n ...(await this.luigiExtendedGlobalContextConfigService?.createLuigiExtendedGlobalContext()),\n portalBaseUrl: window.location.origin,\n portalContext: portalConfig.portalContext,\n userId: userInfo.userId,\n userEmail: userInfo.email,\n token: this.authService.getToken(),\n };\n }\n}\n","import { AuthEvent } from '../../models';\nimport { GlobalContextConfigService } from '../luigi-config/global-context-config.service';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { AuthService } from '../portal';\nimport { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class SessionRefreshService {\n constructor(\n private authService: AuthService,\n private luigiCoreService: LuigiCoreService,\n private navigationGlobalContextConfigService: GlobalContextConfigService,\n ) {}\n\n async refresh() {\n const isRefreshed = await this.authService.refresh();\n\n if (!isRefreshed) {\n return;\n }\n\n this.authService.authEvent(AuthEvent.AUTH_REFRESHED);\n this.luigiCoreService.setAuthData(this.authService.getAuthData());\n this.luigiCoreService.setGlobalContext(\n await this.navigationGlobalContextConfigService.getGlobalContext(),\n true,\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { LuigiCoreService } from './luigi-core.service';\nimport { EnvConfigService } from './portal';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class I18nService {\n private envConfigService = inject(EnvConfigService);\n private luigiCoreService = inject(LuigiCoreService);\n\n fallbackLanguage: string = 'en';\n translationTable: any = {};\n currentLanguage: string = '';\n\n afterInit() {\n this.currentLanguage = this.luigiCoreService.i18n().getCurrentLocale();\n this.luigiCoreService\n .i18n()\n .addCurrentLocaleChangeListener((locale: string) => {\n this.currentLanguage = locale;\n });\n }\n\n /**\n * get translation synchronously. If nothing is found for current locale try to get tranlsation for fallback language\n *\n * @param key search key\n * @param interpolations in translation table\n * @param locale\n * @returns returns translated search key or search key, if nothing matched\n */\n getTranslation(\n key: string,\n interpolations?: Record<string, string>,\n locale?: string\n ) {\n let result = this.getInternalTranslation(key, interpolations, locale);\n // fallback language\n if (!result) {\n result = this.findTranslation(\n key,\n this.translationTable,\n this.fallbackLanguage,\n interpolations\n );\n }\n return result ? result : key;\n }\n\n /**\n * Get translation asynchronously (especially for logout and theming translation in user settings dialog).\n * If nothing is found for current locale try to get translation for fallback language\n *\n * @param key search key\n * @param interpolations in translation table\n * @param locale\n * @returns returns translated search key or search key, if nothing matched\n */\n async getTranslationAsync(\n key: string,\n interpolations?: Record<string, string>,\n locale?: string\n ): Promise<string> {\n return new Promise((res) => {\n let result = this.getInternalTranslation(key, interpolations, locale);\n // fallback language\n if (!result) {\n if (\n this.translationTable &&\n !this.translationTable[this.fallbackLanguage]\n ) {\n this.fetchTranslationFile(this.fallbackLanguage).then(() => {\n result = this.findTranslation(\n key,\n this.translationTable,\n this.fallbackLanguage,\n interpolations\n );\n res(result ? result : key);\n });\n } else {\n result = this.findTranslation(\n key,\n this.translationTable,\n this.fallbackLanguage,\n interpolations\n );\n res(result ? result : key);\n }\n } else {\n res(result ? result : key);\n }\n });\n }\n\n /**\n * Finds the translated value based on given key.\n *\n * @param key key to be translated\n * @param translationTable translation table\n * @param locale current language\n * @param interpolations in translation table\n * @returns translation value\n */\n findTranslation(\n key: string,\n translationTable: any,\n locale: string,\n interpolations?: Record<string, string>\n ) {\n if (translationTable[locale]) {\n const translation =\n typeof translationTable[locale][key] === 'object'\n ? translationTable[locale][key].join('<br>')\n : translationTable[locale][key];\n if (interpolations) {\n return this.findInterpolations(translation, interpolations);\n }\n return translation;\n }\n }\n\n /**\n * Replaces values that are defined in translation strings\n *\n * @param value to be translated\n * @param interpolations in translation table\n * @returns interpolation\n * @example\n * findInterpolations('Environment {num}', {num: 1})\n */\n findInterpolations(value: string, interpolations: Record<string, string>) {\n if (value) {\n Object.keys(interpolations).forEach((item) => {\n value = value.replace(\n new RegExp('{' + item + '}', 'gi'),\n interpolations[item]\n );\n });\n return value;\n }\n return undefined;\n }\n\n /**\n * wraps fetched translation table to a specific locale\n *\n * @param locale current language\n * @param data translation json object for specific locale\n */\n addTranslationFile(locale: string, data: Record<string, string>) {\n if (data && locale) {\n this.translationTable[locale] = data;\n }\n }\n\n /**\n * fetch generated translation json files\n *\n * @param locale current language\n * @returns translationTable for a specific language\n */\n async fetchTranslationFile(locale: string) {\n return new Promise((res) => {\n fetch(`/assets/translation-files/${locale}.json`)\n .then((response) => {\n return response.json();\n })\n .then((data) => {\n this.addTranslationFile(locale, data);\n res(true);\n })\n .catch((error) => {\n console.error('Error:', error);\n this.addTranslationFile(locale, {});\n res(false);\n });\n });\n }\n\n /**\n *\n * @param key search key\n * @param interpolations in translation table\n * @param locale\n * @returns tranlsated search key or search key, if nothing matched\n */\n private getInternalTranslation(\n key: string,\n interpolations?: Record<string, string>,\n locale?: string\n ): string {\n if (!key) return '';\n this.currentLanguage =\n locale ||\n this.currentLanguage ||\n this.luigiCoreService.i18n().getCurrentLocale();\n return this.findTranslation(\n key,\n this.translationTable,\n this.currentLanguage,\n interpolations\n );\n }\n\n async getValidLanguages(): Promise<{ value: string; label: string }[]> {\n const languages = [\n { value: 'en', label: 'USERSETTINGSDIALOG_LANGUAGE_EN' },\n ];\n\n try {\n const { developmentInstance } =\n await this.envConfigService.getEnvConfig();\n\n if (developmentInstance) {\n languages.push({\n value: 'de',\n label: 'USERSETTINGSDIALOG_LANGUAGE_DE',\n });\n }\n } finally {\n return languages;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport enum LoginEventType {\n LOGIN_TRIGGERED = 'LoginTriggered',\n LOGOUT_TRIGGERED = 'LogoutTriggered',\n}\n\nexport interface LoginEvent {\n type: LoginEventType;\n queryParams?: Record<string, any>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LoginEventService {\n private events: Subject<LoginEvent> = new Subject<LoginEvent>();\n\n get loginEvents(): Observable<LoginEvent> {\n return this.events.asObservable();\n }\n\n loginEvent(event: LoginEvent) {\n this.events.next(event);\n }\n}\n","import { LocalDevelopmentSettings, UserData } from '../models';\nimport { UserSettingsValues } from './luigi-config/user-settings-config.service';\n\nexport enum LocalStorageKeys {\n LAST_NAVIGATION_URL = 'openmfp.navigation.lastUrl',\n USER_SETTINGS = 'openmfp.settings.userSettings',\n LOCAL_DEVELOPMENT_SETTINGS = 'openmfp.settings.localDevelopmentSettings',\n FEATURE_TOGGLE_SETTINGS = 'openmfp.settings.featureToggleSettings',\n // deprecated to be removed\n DEVELOPMENT_MODE_CONFIG = 'dev-mode-settings',\n}\n\nexport const localDevelopmentSettingsLocalStorage = {\n read: (localStorageKey?: string): LocalDevelopmentSettings | null => {\n let localDevelopmentSettingsFromLocalStore: string | null;\n try {\n localDevelopmentSettingsFromLocalStore = localStorage.getItem(\n localStorageKey || LocalStorageKeys.LOCAL_DEVELOPMENT_SETTINGS,\n );\n localStorageKey && localStorage.removeItem(localStorageKey);\n } catch (e) {\n console.warn('localStorage is not available:', e);\n return null;\n }\n\n try {\n if (!localDevelopmentSettingsFromLocalStore) {\n return null;\n }\n\n return JSON.parse(localDevelopmentSettingsFromLocalStore);\n } catch (e) {\n console.error(\n 'Failed to parse the local development settings in your localstorage.',\n e,\n );\n }\n return null;\n },\n\n store: (localDevelopmentSetting: LocalDevelopmentSettings) => {\n try {\n localStorage.setItem(\n LocalStorageKeys.LOCAL_DEVELOPMENT_SETTINGS,\n JSON.stringify(localDevelopmentSetting),\n );\n } catch (e) {\n console.error(\n 'Failed to stringify the local development settings setting into your localstorage.',\n e,\n );\n }\n },\n};\n\nexport const userSettingsLocalStorage = {\n read: (userInfo: UserData): Promise<UserSettingsValues> => {\n const transientSettings = {\n frame_userAccount: {\n name: userInfo.name || '',\n email: userInfo.email || '',\n },\n };\n\n return new Promise((resolve, reject) => {\n try {\n const storedSettings = localStorage.getItem(\n LocalStorageKeys.USER_SETTINGS,\n );\n const settings = storedSettings ? JSON.parse(storedSettings) : {};\n\n const resultingSettings = { ...settings, ...transientSettings };\n if (settings.frame_userAccount && transientSettings.frame_userAccount) {\n resultingSettings.frame_userAccount = {\n ...settings.frame_userAccount,\n ...transientSettings.frame_userAccount,\n };\n }\n if (resultingSettings.frame_userAccount?.language === undefined) {\n resultingSettings.frame_userAccount.language = 'en';\n }\n\n resolve(resultingSettings);\n } catch (e) {\n console.error('Error reading user settings', e);\n reject({\n closeDialog: true,\n message: 'Could not read userSettings from storage...',\n });\n }\n });\n },\n\n store: async (settings: UserSettingsValues): Promise<UserSettingsValues> => {\n if (settings.frame_userAccount && settings.frame_userAccount.language) {\n delete settings.frame_userAccount.name;\n delete settings.frame_userAccount.email;\n } else {\n delete settings.frame_userAccount;\n }\n\n return new Promise((resolve, reject) => {\n try {\n localStorage.setItem(\n LocalStorageKeys.USER_SETTINGS,\n JSON.stringify(settings),\n );\n resolve(settings);\n } catch (e) {\n console.error('Error storing user settings', e);\n reject({\n closeDialog: true,\n message: 'Could not write userSettings to storage...',\n });\n }\n });\n },\n};\n\nexport const featureToggleLocalStorage = {\n read: (): Record<string, boolean> => {\n try {\n const storedSettings = localStorage.getItem(\n LocalStorageKeys.FEATURE_TOGGLE_SETTINGS,\n );\n return storedSettings ? JSON.parse(storedSettings) : {};\n } catch (e) {\n console.error('Error reading feature toggle settings', e);\n return {};\n }\n },\n\n store: (featureToggleSettings: Record<string, boolean>) => {\n try {\n localStorage.setItem(\n LocalStorageKeys.FEATURE_TOGGLE_SETTINGS,\n JSON.stringify(featureToggleSettings),\n );\n } catch (e) {\n console.error('Error storing feature toggle settings', e);\n }\n },\n};\n","import { inject, Injectable } from '@angular/core';\nimport { LuigiNode } from '../../models';\nimport { LuigiCoreService } from '../luigi-core.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IframeService {\n private luigiCoreService = inject(LuigiCoreService);\n\n private isIFrameFeaturePolicyAllowed(policy: string, iframeURL: string) {\n // should be connected to a still to be developed permission management logic\n return true;\n }\n\n private isIFrameSandboxPermissionAllowed(policy: string, iframeURL: string) {\n // should be connected to a still to be developed permission management logic\n return true;\n }\n\n public iFrameCreationInterceptor() {\n return (iframe, viewGroup: string, navigationNode, microFrontendType) => {\n this.applyIframePermissions(iframe, navigationNode, viewGroup);\n };\n }\n\n private applyIframePermissions(\n iframe: Element,\n node: LuigiNode,\n viewGroup: string\n ): void {\n let permissions = node?.requiredIFramePermissions;\n\n if (!permissions && viewGroup) {\n const viewGroupSettings = this.luigiCoreService.getConfigValue(\n 'navigation.viewGroupSettings'\n );\n const viewGroupConfig =\n (viewGroupSettings && viewGroupSettings[viewGroup]) || {};\n permissions = viewGroupConfig.requiredIFramePermissions;\n }\n\n if (!permissions) {\n return;\n }\n\n if (permissions.allow) {\n let allow = (iframe.getAttribute('allow') || '').trim();\n if (allow.length > 0 && !allow.endsWith(';')) {\n allow += ';';\n }\n permissions.allow.forEach((policy) => {\n if (\n this.isIFrameFeaturePolicyAllowed(policy, this.getIframeSrc(iframe))\n ) {\n // feature policies are separated by semicolon\n allow += ` ${policy};`;\n }\n });\n iframe.setAttribute('allow', allow.trim());\n }\n\n if (permissions.sandbox) {\n let sandbox = (iframe.getAttribute('sandbox') || '').trim();\n permissions.sandbox.forEach((permission) => {\n if (\n this.isIFrameSandboxPermissionAllowed(\n permission,\n this.getIframeSrc(iframe)\n )\n ) {\n // sandbox permission are separated by whitespace\n sandbox += ' ' + permission;\n }\n });\n iframe.setAttribute('sandbox', sandbox.trim());\n }\n }\n\n private getIframeSrc(iframe: Element): string {\n const src = iframe.getAttribute('src');\n if (!src) {\n this.luigiCoreService.showAlert({\n text: 'Iframe source not found',\n type: 'error',\n });\n\n throw new Error('Iframe source not found');\n }\n\n return src;\n }\n}\n","import { LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { LuigiStaticSettings } from '../../models';\nimport { I18nService } from '../i18n.service';\nimport { IframeService } from './iframe.service';\nimport { Injectable, inject } from '@angular/core';\n\nexport interface StaticSettingsConfigService {\n getStaticSettingsConfig(): Promise<LuigiStaticSettings>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StaticSettingsConfigServiceImpl\n implements StaticSettingsConfigService\n{\n private customStaticSettingsConfigService =\n inject<StaticSettingsConfigService>(\n LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN as any,\n {\n optional: true,\n },\n );\n private i18nService = inject(I18nService);\n private iframeService = inject(IframeService);\n\n async getStaticSettingsConfig(): Promise<LuigiStaticSettings> {\n const logo = 'assets/images/logo.png';\n const favicon = 'assets/images/favicon.ico';\n\n return {\n header: {\n title: 'OpenMFP Portal',\n logo,\n favicon,\n },\n globalSideNavigation: true,\n experimental: {\n btpToolLayout: true,\n globalNav: true,\n },\n btpToolLayout: true,\n responsiveNavigation: 'Fiori3',\n featureToggles: {\n queryStringParam: 'ft',\n },\n appLoadingIndicator: {\n hideAutomatically: true,\n },\n iframeCreationInterceptor: this.iframeService.iFrameCreationInterceptor(),\n customTranslationImplementation: this.i18nService,\n ...(await this.customStaticSettingsConfigService?.getStaticSettingsConfig()),\n };\n }\n}\n","import { LuigiCoreService } from '../../luigi-core.service';\nimport { ConfigService } from '../../portal';\nimport { CustomMessageListener } from '../custom-message-listener';\nimport { Injectable, inject } from '@angular/core';\n\ninterface ReloadLuigiConfigMessage {\n origin: string;\n action: string;\n id: string;\n entity: string;\n context: Record<string, any>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReloadLuigiConfigListener implements CustomMessageListener {\n private configService = inject(ConfigService);\n private luigiCoreService = inject(LuigiCoreService);\n\n messageId(): string {\n return 'openmfp.reload-luigi-config';\n }\n\n async onCustomMessageReceived(\n customMessage: ReloadLuigiConfigMessage,\n mfObject: any,\n mfNodesObject: any,\n ): Promise<void> {\n console.debug(\n `Reloading Luigi config from ${customMessage.origin}, action: ${customMessage.action}\n for entity: ${customMessage.entity ?? 'global'} \n with context: ${JSON.stringify(customMessage.context)}`,\n );\n await this.configService.reloadConfig(\n customMessage.entity,\n customMessage.context,\n );\n this.luigiCoreService.resetLuigi();\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { LUIGI_CUSTOM_MESSAGE_LISTENERS_INJECTION_TOKEN } from '../../injection-tokens';\nimport { CustomMessageListener } from './custom-message-listener';\nimport { ReloadLuigiConfigListener } from './custom-message-listeners/reload-luigi-config.listener';\n\nexport interface MessageListener {\n (msg: any, mf: any, mfNodes: any): void;\n}\n\nexport interface MessageListeners {\n customMessagesListeners: Record<string, MessageListener>;\n}\n\n/**\n * This class holds the customMessageListeners for custom messages used by the application portal.\n * See also {@link https://docs.luigi-project.io/docs/communication/?section=luigi-core-to-luigi-client}\n * See also {@link https://docs.luigi-project.io/docs/luigi-core-api/?section=custommessages}\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class CustomMessageListenersService {\n private readonly listeners: CustomMessageListener[];\n\n constructor(\n private messageListeners: ReloadLuigiConfigListener,\n @Optional()\n @Inject(LUIGI_CUSTOM_MESSAGE_LISTENERS_INJECTION_TOKEN)\n private customMessageListeners: CustomMessageListener[]\n ) {\n this.listeners = [this.messageListeners, ...(this.customMessageListeners || []).filter((l) => !!l)];\n }\n\n /**\n * An object containing the property 'listeners' in which the message-id and listener assignments are made.\n * See also {@link https://docs.luigi-project.io/docs/communication/?section=luigi-core-to-luigi-client}\n */\n public getMessageListeners(): MessageListeners {\n const result: MessageListeners = { customMessagesListeners: {} };\n for (const listener of this.listeners) {\n const obj = {\n [listener.messageId()]: (msg, mf, mfNodes) => {\n listener.onCustomMessageReceived(msg, mf, mfNodes);\n },\n };\n Object.assign(result.customMessagesListeners, obj);\n }\n return result;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class DependenciesVersionsService {\n private httpClient = inject(HttpClient);\n\n read(): Promise<Record<string, string>> {\n return firstValueFrom(\n this.httpClient.get<Record<string, string>>(\n '/assets/dependencies-versions.json'\n )\n );\n }\n\n transformVersionsConfig(\n versionsConfig: Record<string, string>\n ): Record<string, any> {\n return Object.entries(versionsConfig).reduce(\n (acc, [key, value]) => {\n const label = key\n .replace(/([A-Z])/g, ' $1')\n .replace(/^./, (char) => char.toUpperCase());\n\n acc[key] = {\n type: 'string',\n label,\n value,\n isEditable: false,\n };\n\n return acc;\n },\n {} as Record<string, any>\n );\n }\n}\n","import { THEMING_SERVICE } from '../../injection-tokens';\nimport {\n LocalDevelopmentSettings,\n LuigiNode,\n LuigiUserSettings,\n} from '../../models';\nimport { DependenciesVersionsService } from '../dependencies-versions.service';\nimport { I18nService } from '../i18n.service';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { AuthService, EnvConfigService } from '../portal';\nimport {\n featureToggleLocalStorage,\n localDevelopmentSettingsLocalStorage,\n userSettingsLocalStorage,\n} from '../storage-service';\nimport { ThemingService } from '../theming.service';\nimport { Injectable, inject } from '@angular/core';\nimport { isEqual } from 'lodash';\n\nexport interface UserSettings {\n frame_userAccount?: any;\n frame_appearance?: any;\n frame_development?: any;\n frame_versions?: any;\n frame_featureToggle?: any;\n}\n\nexport interface UserSettingsValues {\n frame_userAccount?: {\n name?: string;\n email?: string;\n language: string;\n };\n frame_appearance?: {\n selectedTheme: string;\n };\n frame_development?: {\n localDevelopmentSettings: LocalDevelopmentSettings;\n };\n frame_versions?: any;\n frame_featureToggle?: {\n featureToggleSettings: Record<string, boolean>;\n };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class UserSettingsConfigService {\n private luigiThemingService = inject<ThemingService>(THEMING_SERVICE as any, {\n optional: true,\n });\n private authService = inject(AuthService);\n private i18nService = inject(I18nService);\n private luigiCoreService = inject(LuigiCoreService);\n private dependenciesVersionsService = inject(DependenciesVersionsService);\n private envConfigService = inject(EnvConfigService);\n private versionsConfig: Record<string, string> = {};\n\n async getUserSettings(childrenByEntity: Record<string, LuigiNode[]>) {\n const userSettingsConfig = this.extractUserSettings(childrenByEntity);\n const groupsFromNodes = this.getGroupsFromUserSettings(userSettingsConfig);\n this.versionsConfig = await this.readDependenciesVersions();\n const envConfig = await this.envConfigService.getEnvConfig();\n\n let coreGroups = await this.getCoreUserSettingsGroups();\n\n return {\n userSettingsProfileMenuEntry: {\n label: 'USERSETTINGSPROFILEMENUENTRY_SETTINGS',\n },\n userSettingsDialog: {\n dismissBtn: 'USERSETTINGSDIALOG_CANCEL',\n saveBtn: 'USERSETTINGSDIALOG_SAVE',\n dialogHeader: 'USERSETTINGSDIALOG_HEADER',\n },\n userSettingGroups: { ...coreGroups, ...groupsFromNodes },\n\n readUserSettings: () => {\n return userSettingsLocalStorage\n .read(this.authService.getUserInfo())\n .then((setting: any) => {\n return {\n ...(setting || {}),\n frame_versions: this.versionsConfig,\n };\n });\n },\n\n storeUserSettings: (\n settings: UserSettingsValues,\n previous: UserSettingsValues,\n ) => {\n userSettingsLocalStorage.store(settings);\n this.applyNewTheme(settings, previous);\n this.changeToSelectedLanguage(settings, previous);\n this.saveLocalDevelopmentSettings(settings, previous);\n if (envConfig.uiOptions?.includes('enableFeatureToggleSetting')) {\n this.saveFeatureToggleSettings(settings);\n }\n },\n };\n }\n\n private async getCoreUserSettingsGroups() {\n const envConfig = await this.envConfigService.getEnvConfig();\n const settings: UserSettings = {};\n\n await this.addUserSettings(settings);\n await this.addThemingSettings(settings);\n this.addLocalDevelopmentSettings(settings);\n if (envConfig.uiOptions?.includes('enableFeatureToggleSetting')) {\n this.addFeatureToggleSettings(settings);\n }\n this.addInfoSettings(settings);\n\n return settings;\n }\n\n private saveFeatureToggleSettings(settings: UserSettingsValues) {\n const currentFeatureToggleSettings =\n settings?.frame_featureToggle?.featureToggleSettings;\n\n if (currentFeatureToggleSettings) {\n featureToggleLocalStorage.store(currentFeatureToggleSettings);\n this.luigiCoreService.unsetAllFeatureToggles();\n this.luigiCoreService.setFeatureToggles(currentFeatureToggleSettings);\n globalThis.location.reload();\n }\n }\n\n private saveLocalDevelopmentSettings(\n settings: UserSettingsValues,\n previous: UserSettingsValues,\n ) {\n const currentLocalDevelopmentSettings =\n settings?.frame_development?.localDevelopmentSettings;\n const previousLocalDevelopmentSettings =\n previous?.frame_development?.localDevelopmentSettings;\n if (\n currentLocalDevelopmentSettings &&\n (!localDevelopmentSettingsLocalStorage.read() ||\n !isEqual(\n currentLocalDevelopmentSettings,\n previousLocalDevelopmentSettings,\n ))\n ) {\n localDevelopmentSettingsLocalStorage.store(\n currentLocalDevelopmentSettings,\n );\n\n globalThis.location.reload();\n }\n }\n\n private extractUserSettings(\n childrenByEntity: Record<string, LuigiNode[]>,\n ): LuigiUserSettings[] {\n const userSettings = Object.values(childrenByEntity)\n .reduce((accumulator, value) => accumulator.concat(value), [])\n .reduce((accu, n) => {\n if (n._userSettingsConfig) {\n accu.push(n._userSettingsConfig);\n }\n return accu;\n }, [] as LuigiUserSettings[]);\n\n return userSettings;\n }\n\n private changeToSelectedLanguage(\n settings: UserSettingsValues,\n previous: UserSettingsValues,\n ) {\n if (\n settings?.frame_userAccount?.language &&\n previous?.frame_userAccount?.language !==\n settings?.frame_userAccount?.language\n ) {\n globalThis.location.reload();\n }\n }\n\n private applyNewTheme(\n settings: UserSettingsValues,\n previous: UserSettingsValues,\n ) {\n if (\n settings?.frame_appearance?.selectedTheme &&\n previous?.frame_appearance?.selectedTheme !==\n settings?.frame_appearance?.selectedTheme\n ) {\n this.luigiThemingService?.applyTheme(\n settings.frame_appearance.selectedTheme,\n );\n }\n }\n\n private getGroupsFromUserSettings(luigiUserSettings: LuigiUserSettings[]) {\n const settingsGroups = {};\n luigiUserSettings.forEach((userConfig) => {\n if (userConfig?.groups) {\n Object.keys(userConfig.groups).forEach((groupId) => {\n const groupConfig = userConfig.groups[groupId];\n settingsGroups[groupId] = groupConfig;\n });\n }\n });\n\n return settingsGroups;\n }\n\n private async getSelectedThemeDisplayName(): Promise<string> {\n const user = this.authService.getUserInfo();\n const userSettings = await userSettingsLocalStorage.read(user);\n const selectedTheme =\n userSettings?.frame_appearance?.selectedTheme ||\n this.luigiThemingService?.getDefaultThemeId();\n return (\n this.luigiThemingService\n ?.getAvailableThemes()\n ?.find((t) => t.id === selectedTheme)?.name || ''\n );\n }\n\n private async addThemingSettings(settings: UserSettings) {\n if (this.luigiThemingService) {\n settings.frame_appearance = {\n label: 'USERSETTINGSDIALOG__APPEARANCE',\n sublabel: await this.getSelectedThemeDisplayName(),\n icon: 'palette',\n title: 'USERSETTINGSDIALOG__APPEARANCE',\n viewUrl: '/settings-theming#disable_loading_indicator',\n settings: {},\n };\n }\n }\n\n private addLocalDevelopmentSettings(settings: UserSettings) {\n settings.frame_development = {\n label: 'LOCAL_DEVELOPMENT_SETTINGS_DIALOG_LABEL',\n sublabel: 'LOCAL_DEVELOPMENT_SETTINGS_DIALOG_SUBLABEL',\n icon: 'developer-settings',\n iconClassAttribute: localDevelopmentSettingsLocalStorage.read()?.isActive\n ? 'settings-icon-active'\n : '',\n title: 'LOCAL_DEVELOPMENT_SETTINGS_DIALOG_TITLE',\n viewUrl: '/assets/openmfp-portal-ui-wc.js#development-settings',\n webcomponent: {\n selfRegistered: true,\n },\n context: {\n translationTable: this.i18nService.translationTable,\n },\n };\n }\n\n private async addUserSettings(settings: UserSettings) {\n const userInfo = this.authService.getUserInfo();\n const { userAvatarUrl } = await this.envConfigService.getEnvConfig();\n const imageUrl = userAvatarUrl?.replace('${userId}', userInfo.userId);\n\n if (userInfo.email || userInfo.userId) {\n settings.frame_userAccount = {\n label: 'USERSETTINGSDIALOG_USER_ACCOUNT',\n sublabel: userInfo.name,\n icon: imageUrl || 'person-placeholder',\n title: userInfo.name,\n initials: userInfo.initials,\n iconClassAttribute:\n 'fd-avatar fd-avatar--s fd-avatar--circle fd-avatar--thumbnail lui-avatar-space',\n settings: {\n name: {\n type: 'string',\n label: 'USERSETTINGSDIALOG_NAME',\n isEditable: false,\n },\n email: {\n type: 'string',\n label: 'USERSETTINGSDIALOG_EMAIL',\n isEditable: false,\n },\n },\n };\n\n const validLanguages = await this.i18nService.getValidLanguages();\n if (validLanguages.length > 1) {\n settings.frame_userAccount.settings['language'] = {\n type: 'enum',\n label: 'USERSETTINGSDIALOG_LANGUAGE',\n options: validLanguages,\n };\n }\n }\n }\n\n private addInfoSettings(settings: UserSettings) {\n const settingsTransformed =\n this.dependenciesVersionsService.transformVersionsConfig(\n this.versionsConfig,\n );\n\n settings.frame_versions = {\n label: 'INFO_SETTINGS_DIALOG_LABEL',\n sublabel: 'INFO_SETTINGS_DIALOG_SUBLABEL',\n title: 'INFO_SETTINGS_DIALOG_TITLE',\n icon: 'message-information',\n settings: settingsTransformed,\n };\n }\n\n private addFeatureToggleSettings(settings: UserSettings) {\n const isActive =\n this.luigiCoreService.getActiveFeatureToggleList().length > 0;\n\n settings.frame_featureToggle = {\n label: 'FEATURE_TOGGLE_SETTINGS_DIALOG_LABEL',\n sublabel: 'FEATURE_TOGGLE_SETTINGS_DIALOG_SUBLABEL',\n title: 'FEATURE_TOGGLE_SETTINGS_DIALOG_TITLE',\n icon: 'activate',\n iconClassAttribute: isActive ? 'settings-icon-active' : '',\n viewUrl: '/assets/openmfp-portal-ui-wc.js#feature-toggle',\n webcomponent: {\n selfRegistered: true,\n },\n context: {\n translationTable: this.i18nService.translationTable,\n },\n };\n }\n\n private async readDependenciesVersions(): Promise<Record<string, string>> {\n const versions = { browser: navigator.userAgent };\n try {\n return {\n ...(await this.dependenciesVersionsService.read()),\n ...versions,\n };\n } catch (error) {}\n return versions;\n }\n}\n","import { LuigiNode } from '../../models';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class NodeUtilsService {\n constructor(private luigiCoreService: LuigiCoreService) {}\n\n retrieveGlobalHelpContext() {\n return (node: LuigiNode) => {\n const ctx = this.luigiCoreService.getGlobalContext();\n node.context.helpContext = ctx.helpContext;\n return true;\n };\n }\n\n isVisible(node: LuigiNode): boolean {\n if (!node.visibleForFeatureToggles) {\n return true;\n }\n return node.visibleForFeatureToggles.every((ft) => {\n if (ft.startsWith('!')) {\n return !this.luigiCoreService.isFeatureToggleActive(ft.slice(1));\n }\n return this.luigiCoreService.isFeatureToggleActive(ft);\n });\n }\n}\n","import { EntityType, LuigiNode } from '../../models';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { NodeUtilsService } from '../luigi-nodes/node-utils.service';\nimport { Injectable, inject } from '@angular/core';\n\nexport interface AppSwitcherConfigService {\n getAppSwitcher(luigiNodes: LuigiNode[]);\n}\n\ninterface NodeConfig {\n title: string;\n icon: string;\n link: string;\n selectionConditions?: {\n route: string;\n contextCriteria: {\n key: string;\n value: string;\n }[];\n };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AppSwitcherConfigServiceImpl implements AppSwitcherConfigService {\n private luigiCoreService = inject(LuigiCoreService);\n private nodeUtilsService = inject(NodeUtilsService);\n\n getAppSwitcher(luigiNodes: LuigiNode[]) {\n return {\n keepMainTitle: true,\n showSubTitle: false,\n itemRenderer: (item: any, slot: HTMLElement, appSwitcherApiObj) => {\n const a = document.createElement('a');\n a.setAttribute('class', 'fd-menu__link');\n a.addEventListener('click', (e) => {\n this.luigiCoreService.navigation().navigate(item.link);\n appSwitcherApiObj.closeDropDown();\n e.stopPropagation();\n });\n\n const span = document.createElement('span');\n span.setAttribute('class', 'fd-menu__addon-before');\n const i = document.createElement('i');\n i.setAttribute('class', 'sap-icon--' + item.icon);\n span.appendChild(i);\n\n const spanText: HTMLElement = document.createElement('span');\n spanText.setAttribute('class', 'fd-menu__title');\n spanText.innerText = item.title;\n a.appendChild(span);\n a.appendChild(spanText);\n slot.innerHTML = '';\n slot.appendChild(a);\n },\n items: this.getNodeItems(luigiNodes),\n };\n }\n\n private getNodeItems(luigiNodes: LuigiNode[]) {\n const items = (luigiNodes || [])\n .filter((node: LuigiNode) => {\n return (\n !node.hideFromNav &&\n node.entityType === EntityType.GLOBAL &&\n this.nodeUtilsService.isVisible(node)\n );\n })\n .map((node) => {\n const nodeConfig: NodeConfig = {\n title: node.label || '',\n icon: node.icon || '',\n link: '/' + node.pathSegment,\n };\n return nodeConfig;\n });\n\n return items?.length === 1 ? [] : items;\n }\n}\n","export interface ExternalLink {\n sameWindow: boolean;\n URL: string;\n}\n\nexport interface OpenNodeInModal {\n title?: string;\n size?: 's' | 'm' | 'l';\n width?: string;\n height?: string;\n}\n\nexport interface UserProfileItem {\n label?: string;\n icon?: string;\n link?: string;\n openNodeInModal?: boolean | OpenNodeInModal;\n externalLink?: ExternalLink;\n}\n\nexport interface UserProfile {\n logout?: UserProfileItem;\n items: UserProfileItem[];\n}\n\nexport interface UserProfileConfigService {\n getProfile(): Promise<UserProfile>;\n}\n\nexport class DefaultUserProfileConfigService\n implements UserProfileConfigService\n{\n async getProfile(): Promise<UserProfile> {\n return {\n items: [],\n };\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { HEADER_BAR_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { LuigiNode } from '../../models';\n\nexport interface NodeItem extends LuigiNode {\n node?: LuigiNode;\n route?: string;\n}\n\nexport interface LuigiBreadcrumb {\n pendingItemLabel: string;\n omitRoot: boolean;\n autoHide: boolean;\n clearBeforeRender?: boolean;\n renderer: (\n containerElement: HTMLElement,\n nodeItems: NodeItem[],\n clickHandler: (item: NodeItem) => void,\n ) => HTMLElement;\n}\n\nexport type RendererFn = LuigiBreadcrumb['renderer']\n\nexport interface HeaderBarConfig extends Omit<LuigiBreadcrumb, 'renderer'> {\n rightRenderers: RendererFn[];\n leftRenderers: RendererFn[];\n}\n\nexport interface HeaderBarConfigService {\n getConfig(): Promise<HeaderBarConfig>;\n}\n\n@Injectable({providedIn: 'root'})\nexport class HeaderBarService {\n constructor(@Optional() @Inject(HEADER_BAR_CONFIG_SERVICE_INJECTION_TOKEN) private headerBarConfig: HeaderBarConfigService) {\n }\n\n public async getConfig(): Promise<LuigiBreadcrumb | undefined> {\n if (!this.headerBarConfig) {\n return undefined\n }\n\n const { leftRenderers, rightRenderers, ...rest } = await this.headerBarConfig.getConfig();\n return {\n ...rest,\n renderer: (containerElement, nodeItems, clickHandler) => {\n containerElement.style.display = 'flex';\n containerElement.style.position = 'static';\n containerElement.style.height = 'min-content';\n\n const parrent = containerElement.parentElement;\n if(parrent) {\n this.setParrentStyles(parrent);\n }\n\n const {rightContainer, leftContainer} = this.createRendererContainers()\n\n containerElement.appendChild(leftContainer);\n containerElement.appendChild(rightContainer);\n\n this.executeRenderes(leftContainer, leftRenderers, [nodeItems, clickHandler])\n this.executeRenderes(rightContainer, rightRenderers, [nodeItems, clickHandler])\n\n return containerElement\n },\n };\n };\n\n private setParrentStyles(parrent: HTMLElement): void {\n parrent.style.display = 'flex';\n parrent.style.flexDirection = 'column';\n parrent.style.height = '100%';\n parrent.style.marginTop = '0';\n }\n\n private executeRenderes(rootContainer: HTMLElement, renderers: RendererFn[], params: [NodeItem[], (item: NodeItem) => void]): void {\n renderers.forEach((renderer) => {\n const rendererContainer = document.createElement('div');\n rootContainer.appendChild(rendererContainer);\n\n renderer(rendererContainer, ...params)\n })\n }\n\n private createRendererContainers(): {rightContainer: HTMLDivElement, leftContainer: HTMLDivElement} {\n const rightContainer = document.createElement('div');\n const leftContainer = document.createElement('div');\n\n rightContainer.style.display = 'flex';\n rightContainer.style.justifyContent = 'flex-end';\n rightContainer.style.gap = '1em';\n\n leftContainer.style.display = 'flex';\n leftContainer.style.justifyContent = 'flex-start';\n leftContainer.style.gap = '1em';\n leftContainer.style.flexGrow = '1';\n\n return {rightContainer, leftContainer}\n }\n}\n","import { LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { AuthEvent } from '../../models';\nimport { AuthService, EnvConfigService } from '../portal';\nimport { LuigiAuthEventsCallbacksService } from './luigi-auth-events-callbacks.service';\nimport { Injectable, inject } from '@angular/core';\nimport oAuth2 from '@luigi-project/plugin-auth-oauth2';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthConfigService {\n private authService = inject(AuthService);\n private envConfigService = inject(EnvConfigService);\n private luigiAuthEventsCallbacksService =\n inject<LuigiAuthEventsCallbacksService>(\n LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n\n public async getAuthConfig() {\n const { oauthServerUrl, clientId } =\n await this.envConfigService.getEnvConfig();\n\n if (!oauthServerUrl || !clientId) {\n return undefined;\n }\n\n return {\n use: 'oAuth2AuthCode',\n storage: 'none',\n oAuth2AuthCode: {\n idpProvider: oAuth2,\n authorizeUrl: oauthServerUrl,\n logoutUrl: '/rest/logout',\n post_logout_redirect_uri: '/logout',\n oAuthData: {\n client_id: clientId,\n scope: 'openid',\n redirect_uri: '/callback',\n response_type: 'code',\n },\n accessTokenExpiringNotificationTime: 60,\n expirationCheckInterval: 5,\n userInfoFn: () => {\n const userInfo = this.authService.getUserInfo();\n\n return new Promise((resolve) => {\n fetch(userInfo.picture, {\n method: 'HEAD',\n mode: 'no-cors',\n })\n .then(() => {\n resolve(userInfo);\n })\n .catch(() => {\n userInfo.picture = '';\n resolve(userInfo);\n });\n });\n },\n },\n disableAutoLogin: false,\n events: {\n onAuthSuccessful: (settings, authData) => {\n this.authService.authEvent(AuthEvent.AUTH_SUCCESSFUL);\n this.luigiAuthEventsCallbacksService?.onAuthSuccessful(\n settings,\n authData,\n );\n },\n onAuthError: (settings, err) => {\n this.authService.authEvent(AuthEvent.AUTH_ERROR);\n this.luigiAuthEventsCallbacksService?.onAuthError(settings, err);\n },\n onAuthExpired: (settings) => {\n this.authService.authEvent(AuthEvent.AUTH_EXPIRED);\n this.luigiAuthEventsCallbacksService?.onAuthExpired(settings);\n },\n onLogout: (settings) => {\n this.authService.authEvent(AuthEvent.LOGOUT);\n this.luigiAuthEventsCallbacksService?.onLogout(settings);\n },\n onAuthExpireSoon: (settings) => {\n this.authService.authEvent(AuthEvent.AUTH_EXPIRE_SOON);\n this.luigiAuthEventsCallbacksService?.onAuthExpireSoon(settings);\n },\n onAuthConfigError: (settings, err) => {\n this.authService.authEvent(AuthEvent.AUTH_CONFIG_ERROR);\n this.luigiAuthEventsCallbacksService?.onAuthConfigError(\n settings,\n err,\n );\n },\n },\n };\n }\n}\n","import { LOCAL_CONFIGURATION_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport {\n ContentConfiguration,\n LocalDevelopmentSettings,\n LuigiNode,\n} from '../../models';\nimport { ValidationResult } from '../../models/node-transform';\nimport { I18nService } from '../i18n.service';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { LocalNodesService } from '../portal';\nimport { localDevelopmentSettingsLocalStorage } from '../storage-service';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { lastValueFrom } from 'rxjs';\n\nexport interface LocalConfigurationService {\n getLocalNodes(): Promise<LuigiNode[]>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalConfigurationServiceImpl {\n private http = inject(HttpClient);\n private luigiConfigService = inject(LocalNodesService);\n private i18nService = inject(I18nService);\n private luigiCoreService = inject(LuigiCoreService);\n private customLocalConfigurationService = inject<LocalConfigurationService>(\n LOCAL_CONFIGURATION_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n private cachedLocalNodes: LuigiNode[];\n\n public async getLocalNodes(): Promise<LuigiNode[]> {\n const localDevelopmentSettings =\n localDevelopmentSettingsLocalStorage.read();\n\n if (!localDevelopmentSettings?.isActive) {\n return (\n (await this.customLocalConfigurationService?.getLocalNodes()) || []\n );\n }\n\n this.addLocalDevelopmentModeOnIndicator();\n\n if (this.cachedLocalNodes?.length) {\n return this.cachedLocalNodes;\n }\n\n try {\n const configurations = await this.getLocalConfigurations(\n localDevelopmentSettings,\n );\n const result =\n (await this.luigiConfigService.getLuigiNodesFromConfigurations(\n configurations,\n )) || {};\n\n if (result.errors) {\n this.alertErrors(result.errors);\n }\n\n (result.nodes || []).forEach((node) => {\n node.context = {\n ...node.context,\n serviceProviderConfig: {\n ...node.context?.serviceProviderConfig,\n ...localDevelopmentSettings.serviceProviderConfig,\n },\n };\n });\n\n return (this.cachedLocalNodes = result.nodes || []);\n } catch (e) {\n console.warn(`Failed to retrieve local luigi config.`, e);\n return [];\n }\n }\n\n addLocalDevelopmentModeOnIndicator() {\n const popoverControl = document.querySelector('#profilePopover');\n\n if (popoverControl && popoverControl.parentNode) {\n const newSpan = document.createElement('span');\n newSpan.classList.add(\n 'sap-icon--developer-settings',\n 'local-development-settings-indication',\n );\n newSpan.title = this.i18nService.getTranslation(\n 'LOCAL_DEVELOPMENT_SETTINGS_ACTIVE_INDICATOR',\n );\n popoverControl.parentNode.appendChild(newSpan);\n }\n }\n\n private alertErrors(errors: ValidationResult[]) {\n const message = errors\n .map((e) => {\n return `For configuration with url:\n ${e.url} <br/><br/>\n ${(e.validationErrors || [])\n .map((v) => v.message)\n .filter((v) => !v.includes('The document is not valid'))\n .join('<br/>')}`;\n })\n .join('<br/><br/><br/>');\n this.luigiCoreService.showAlert({\n text: `\n Your local development configuration contains error(s).\n You will not be able to see your local changes and local development results unless you correct the data and reload the page.\n Please see below the detailed information: <br/><br/>\n\n ${message}\n `,\n type: 'error',\n });\n }\n\n public async replaceServerNodesWithLocalOnes(\n serverLuigiNodes: LuigiNode[],\n currentEntities: string[],\n ): Promise<LuigiNode[]> {\n const localNodes = await this.getLocalNodes();\n console.debug(\n `Processing local nodes for currentEntities: ${currentEntities}`,\n );\n if (!localNodes || localNodes.length == 0) {\n console.debug('No local nodes found');\n return serverLuigiNodes;\n }\n this.logNodesState(serverLuigiNodes, localNodes);\n\n const localReplacingNodes: LuigiNode[] = [];\n const filteredServerNodes = serverLuigiNodes.filter((serverNode) => {\n const index = localNodes.findIndex((localNode) => {\n return this.localNodeMatchesServerNode(localNode, serverNode);\n });\n if (index !== -1) {\n const [localFoundNode] = localNodes.splice(index, 1);\n localReplacingNodes.push(localFoundNode);\n\n localFoundNode.context = {\n ...serverNode.context,\n ...localFoundNode.context,\n };\n }\n return index === -1;\n });\n\n const localNewNodes = localNodes.filter((n) => {\n const entity = n.entityType?.includes('::compound')\n ? 'global'\n : n.entityType || 'home';\n return currentEntities.includes(entity);\n });\n\n console.debug(\n `${filteredServerNodes.length} server nodes have no matching local nodes.\n Found ${localReplacingNodes.length} matching local nodes.\n Adding ${localNewNodes.length} new local nodes.`,\n );\n\n return filteredServerNodes\n .concat(localReplacingNodes)\n .concat(localNewNodes);\n }\n\n private logNodesState(\n serverLuigiNodes: LuigiNode[],\n localNodes: LuigiNode[],\n ) {\n const serverEntityTypes = [\n ...new Set(serverLuigiNodes.map((n) => n.entityType)),\n ]\n .filter(Boolean)\n .join(',');\n\n const localEntityTypes = [...new Set(localNodes.map((n) => n.entityType))]\n .filter(Boolean)\n .join(',');\n console.debug(\n `Found '${serverLuigiNodes.length}' server nodes.\n Found '${localNodes.length}' local luigi nodes.\n The entities of the server node are: [${serverEntityTypes}]\n The entities of local nodes are: [${localEntityTypes}]`,\n );\n }\n\n private localNodeMatchesServerNode(\n localNode: LuigiNode,\n node: LuigiNode,\n ): boolean {\n return (\n localNode.pathSegment === node.pathSegment &&\n localNode.entityType === node.entityType\n );\n }\n\n private async getLocalConfigurations(\n localDevelopmentSettings: LocalDevelopmentSettings,\n ): Promise<ContentConfiguration[]> {\n const initialConfigurations: ContentConfiguration[] =\n localDevelopmentSettings.configs\n .filter(\n (config): config is { data: ContentConfiguration } => !!config.data,\n )\n .map((config) => config.data);\n\n const configurations = (\n await Promise.allSettled(\n localDevelopmentSettings.configs\n .filter((config): config is { url: string } => !!config.url)\n .map((config) =>\n lastValueFrom(this.http.get<ContentConfiguration>(config.url)).then(\n (contentConfiguration: ContentConfiguration) =>\n ({\n ...contentConfiguration,\n url: config.url,\n }) as ContentConfiguration,\n ),\n ),\n )\n )\n .filter(\n (result): result is PromiseFulfilledResult<ContentConfiguration> =>\n result.status === 'fulfilled',\n )\n .map((result) => result.value)\n .concat(initialConfigurations);\n\n return configurations;\n }\n}\n","import { ERROR_COMPONENT_CONFIG } from '../../injection-tokens';\nimport {\n EntityConfig,\n EntityDefinition,\n ErrorComponentConfig,\n LuigiNode,\n} from '../../models';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { ConfigService } from '../portal';\nimport { LocalConfigurationServiceImpl } from './local-configuration.service';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LuigiNodesService {\n private configService = inject(ConfigService);\n private luigiCoreService = inject(LuigiCoreService);\n private localConfigurationService = inject(LocalConfigurationServiceImpl);\n private errorComponentConfig = inject<ErrorComponentConfig>(\n ERROR_COMPONENT_CONFIG as any,\n {\n optional: true,\n },\n );\n\n private getChildrenByEntity(\n allChildren: LuigiNode[],\n ): Record<string, LuigiNode[]> {\n const childrenByEntity = {\n home: [],\n };\n for (const child of allChildren) {\n // default to home to stay backward compatible\n const entityType = child.entityType || 'home';\n\n if (!childrenByEntity[entityType]) {\n childrenByEntity[entityType] = [];\n }\n\n childrenByEntity[entityType].push(child);\n }\n\n return childrenByEntity;\n }\n\n async retrieveChildrenByEntity(): Promise<Record<string, LuigiNode[]>> {\n try {\n const portalConfig = await this.configService.getPortalConfig();\n const serverLuigiNodes: LuigiNode[] = portalConfig.providers.flatMap(\n (p) => p.nodes,\n );\n const luigiNodes =\n await this.localConfigurationService.replaceServerNodesWithLocalOnes(\n serverLuigiNodes,\n ['global', 'main', 'home'],\n );\n return this.getChildrenByEntity(luigiNodes);\n } catch (e) {\n console.warn('Could not retrieve nodes, error: ', e);\n throw e;\n }\n }\n\n async retrieveEntityChildren(\n entityDefinition: EntityDefinition,\n additionalContext?: Record<string, string>,\n ): Promise<LuigiNode[]> {\n let errorCode = 0;\n let configsForEntity: EntityConfig;\n const entityType = entityDefinition.dynamicFetchId;\n\n try {\n if (!entityType) {\n throw new Error('Entity type is required');\n }\n\n configsForEntity = await this.configService.getEntityConfig(\n entityType,\n additionalContext,\n );\n\n return configsForEntity.providers.flatMap((p) => p.nodes);\n } catch (e) {\n errorCode = e.status || 500;\n console.warn(\n `Could not retrieve nodes for entity: ${entityType}, error: `,\n e,\n );\n\n return this.handleEntityRetrievalError(\n entityDefinition,\n errorCode,\n additionalContext,\n );\n }\n }\n\n private handleEntityRetrievalError(\n entityDefinition: EntityDefinition,\n errorCode: number,\n additionalContext?: Record<string, string>,\n ): LuigiNode[] {\n if (this.errorComponentConfig?.handleEntityRetrievalError) {\n return this.errorComponentConfig.handleEntityRetrievalError(\n entityDefinition,\n errorCode,\n additionalContext,\n );\n }\n\n this.luigiCoreService.showAlert({\n text: `Could not retrieve nodes for entity: ${entityDefinition.dynamicFetchId}`,\n type: 'error',\n });\n return [];\n }\n\n nodePolicyResolver(nodeToCheckPermissionFor): boolean {\n const mockPermissions = ['projectMember'];\n const permissions = nodeToCheckPermissionFor.requiredPolicies;\n return (\n !permissions ||\n permissions.every((item) => mockPermissions.includes(item))\n );\n }\n\n clearNodeCache(): void {\n this.configService.clearEntityConfigCache();\n }\n}\n","import { LUIGI_CUSTOM_NODE_CONTEXT_PROCESSING_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { LuigiNode, NodeContext } from '../../models';\nimport { Injectable, inject } from '@angular/core';\n\nexport interface NodeContextProcessingService {\n processNodeContext(\n entityId: string | undefined,\n entityNode: LuigiNode,\n ctx: NodeContext,\n ): Promise<void>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NodeContextProcessingServiceImpl\n implements NodeContextProcessingService\n{\n private customNodeContextProcessingService =\n inject<NodeContextProcessingService>(\n LUIGI_CUSTOM_NODE_CONTEXT_PROCESSING_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n\n async processNodeContext(\n entityId: string | undefined,\n entityNode: LuigiNode,\n ctx: NodeContext,\n ): Promise<void> {\n await this.defaultProcessNodeContext(entityId, entityNode, ctx);\n await this.customNodeContextProcessingService?.processNodeContext(\n entityId,\n entityNode,\n ctx,\n );\n }\n\n private async defaultProcessNodeContext(\n entityId: string | undefined,\n entityNode: LuigiNode,\n ctx: NodeContext,\n ): Promise<void> {\n entityNode.context.entityType = entityNode.defineEntity?.id;\n }\n}\n","import { LUIGI_ROUTING_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { Injectable, inject } from '@angular/core';\n\nexport interface RoutingConfigService {\n getInitialRoutingConfig?(): object;\n getRoutingConfig?(): object;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class RoutingConfigServiceImpl implements RoutingConfigService {\n private customRoutingConfigService = inject<RoutingConfigService>(\n LUIGI_ROUTING_CONFIG_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n\n getInitialRoutingConfig(): any {\n return {\n useHashRouting: false,\n showModalPathInUrl: false,\n modalPathParam: 'modalPathParamDisabled',\n skipRoutingForUrlPatterns: [/.*/],\n pageNotFoundHandler: () => {},\n ...(this.customRoutingConfigService?.getInitialRoutingConfig?.() || {}),\n };\n }\n\n getRoutingConfig(): any {\n return {\n useHashRouting: false,\n showModalPathInUrl: true,\n modalPathParam: 'modal',\n pageNotFoundHandler: () => {},\n ...(this.customRoutingConfigService?.getRoutingConfig?.() || {}),\n };\n }\n}\n","import { AuthService, EnvConfigService } from '../services';\nimport { inject, provideAppInitializer } from '@angular/core';\n\nexport async function bootstrap() {\n const authService = inject(AuthService);\n const envConfigService = inject(EnvConfigService);\n\n try {\n const { oauthServerUrl, clientId } = await envConfigService.getEnvConfig();\n\n if (!oauthServerUrl || !clientId) {\n return;\n }\n\n await authService.refresh();\n } catch (error) {\n console.error('Error bootstrapping the app:', error);\n }\n}\n\nexport const provideBootstrap = () => provideAppInitializer(() => bootstrap());\n","import { AuthEvent } from '../models';\nimport {\n AuthService,\n LuigiCoreService,\n SessionRefreshService,\n} from '../services';\nimport { inject, provideAppInitializer } from '@angular/core';\nimport { filter } from 'rxjs';\n\nexport async function initializeAutomaticSessionRefresh(\n sessionRefreshService: SessionRefreshService,\n authService: AuthService,\n luigiCoreService: LuigiCoreService,\n) {\n authService.authEvents\n .pipe(\n filter((event: AuthEvent) => event === AuthEvent.AUTH_EXPIRE_SOON),\n filter(() =>\n luigiCoreService.isFeatureToggleActive('enableSessionAutoRefresh'),\n ),\n )\n .subscribe({\n next: async () => {\n try {\n await sessionRefreshService.refresh();\n } catch (error) {\n console.error('Error executing session refresh: ', error);\n }\n },\n });\n}\n\nexport const provideSessionRefresh = () =>\n provideAppInitializer(() =>\n initializeAutomaticSessionRefresh(\n inject(SessionRefreshService),\n inject(AuthService),\n inject(LuigiCoreService),\n ),\n );\n","import { AuthEvent } from '../models';\nimport { LoginEventService, LoginEventType } from './login-event.service';\nimport { AuthService } from './portal';\nimport { LocalStorageKeys } from './storage-service';\nimport { Injectable } from '@angular/core';\nimport { NavigationEnd, NavigationStart, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NavigationService {\n private currentUrl: string;\n private previousUrl: string;\n\n constructor(\n private router: Router,\n private authService: AuthService,\n private loginEventService: LoginEventService,\n ) {}\n\n track() {\n this.router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe((event: NavigationEnd) => {\n this.currentUrl = event.url;\n });\n\n this.router.events\n .pipe(filter((event) => event instanceof NavigationStart))\n .subscribe((event: NavigationStart) => {\n this.previousUrl = event.url;\n });\n\n this.authService.authEvents\n .pipe(filter((event) => event === AuthEvent.AUTH_EXPIRED))\n .subscribe({ next: () => this.saveCurrentUrl() });\n\n this.authService.authEvents\n .pipe(filter((event) => event === AuthEvent.LOGOUT))\n .subscribe({\n next: () => {\n this.saveLastNavigationUrl();\n },\n });\n\n this.loginEventService.loginEvents\n .pipe(filter((event) => event.type === LoginEventType.LOGIN_TRIGGERED))\n .subscribe({\n next: (event) => {\n this.router.navigate([this.getRedirectUrl()], {\n queryParams: event.queryParams,\n });\n this.clearCurrentUrl();\n },\n });\n }\n\n private clearCurrentUrl() {\n localStorage.setItem(LocalStorageKeys.LAST_NAVIGATION_URL, '');\n }\n\n private saveCurrentUrl(): void {\n localStorage.setItem(LocalStorageKeys.LAST_NAVIGATION_URL, this.currentUrl);\n }\n\n private saveLastNavigationUrl(): void {\n localStorage.setItem(\n LocalStorageKeys.LAST_NAVIGATION_URL,\n this.previousUrl,\n );\n }\n\n private getRedirectUrl(): string {\n return localStorage.getItem(LocalStorageKeys.LAST_NAVIGATION_URL) || '/';\n }\n}\n","import { NavigationService } from '../services/navigation.service';\nimport { inject, provideAppInitializer } from '@angular/core';\n\nexport async function track(navigationService: NavigationService) {\n navigationService.track();\n}\n\nexport const provideNavigationTracker = () =>\n provideAppInitializer(() => {\n track(inject(NavigationService));\n });\n","import {\n AuthService,\n I18nService,\n LuigiCoreService,\n userSettingsLocalStorage,\n} from '../services';\nimport { inject, provideAppInitializer } from '@angular/core';\n\nexport async function initLanguage(\n i18nService: I18nService,\n authService: AuthService,\n luigiCoreService: LuigiCoreService,\n) {\n const userSettings = await userSettingsLocalStorage.read(\n authService.getUserInfo(),\n );\n const storedLanguage = userSettings?.frame_userAccount?.language;\n\n const validLanguages = (await i18nService.getValidLanguages()).map(\n (l) => l.value,\n );\n\n let language = i18nService.fallbackLanguage;\n if (storedLanguage && validLanguages.includes(storedLanguage)) {\n language = storedLanguage;\n }\n\n luigiCoreService.setCurrentLocale(language);\n await i18nService.fetchTranslationFile(language);\n}\n\nexport const provideLanguageServices = () =>\n provideAppInitializer(() =>\n initLanguage(\n inject(I18nService),\n inject(AuthService),\n inject(LuigiCoreService),\n ),\n );\n","import {\n I18nService,\n LoginEventService,\n LoginEventType,\n LuigiCoreService,\n} from '../../services';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n signal,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n templateUrl: './logout.component.html',\n styleUrls: ['./logout.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LogoutComponent implements OnInit {\n headline = signal<string>('');\n hint = signal<string>('');\n btnText = signal<string>('');\n\n constructor(\n private route: ActivatedRoute,\n private luigiCoreService: LuigiCoreService,\n private i18nService: I18nService,\n private loginEventService: LoginEventService,\n ) {}\n\n async ngOnInit(): Promise<void> {\n this.luigiCoreService.ux().hideAppLoadingIndicator();\n const error = this.route.snapshot.queryParams['error'];\n\n const translations = await this.getTranslations();\n this.headline.set(translations.headlineSuccessfullyLoggedOut);\n this.hint.set(translations.hintSignIn);\n this.btnText.set(translations.btnTextLoginAgain);\n\n switch (error) {\n case 'tokenExpired':\n this.headline.set(translations.headlineSessionExpired);\n break;\n case 'loginError':\n this.headline.set(translations.headlineSigInError);\n this.hint.set(translations.hintSignInError);\n break;\n case 'invalidToken':\n this.luigiCoreService.removeAuthData();\n this.headline.set(translations.headlineInvalidTokenError);\n this.hint.set(translations.hintInvalidTokenError);\n break;\n default:\n break;\n }\n }\n\n login() {\n this.loginEventService.loginEvent({ type: LoginEventType.LOGIN_TRIGGERED });\n }\n\n private async getTranslations() {\n return {\n headlineSuccessfullyLoggedOut: await this.i18nService.getTranslationAsync(\n 'SUCCESSFULLY_LOGGED_OUT',\n ),\n hintSignIn: await this.i18nService.getTranslationAsync('SIGN_IN_HINT'),\n btnTextLoginAgain:\n await this.i18nService.getTranslationAsync('LOGIN_AGAIN'),\n headlineSessionExpired:\n await this.i18nService.getTranslationAsync('SESSION_EXPIRED'),\n\n headlineSigInError:\n await this.i18nService.getTranslationAsync('SIGN_IN_ERROR'),\n hintSignInError:\n await this.i18nService.getTranslationAsync('SIGN_IN_ERROR_HINT'),\n\n headlineInvalidTokenError: await this.i18nService.getTranslationAsync(\n 'INVALID_TOKEN_ERROR',\n ),\n hintInvalidTokenError: await this.i18nService.getTranslationAsync(\n 'INVALID_TOKEN_ERROR_HINT',\n ),\n };\n }\n}\n","<div class=\"fd-page\">\n <link rel=\"stylesheet\" href=\"/fundamental-styles/fundamental-styles.css\" />\n <div class=\"fd-page__content\">\n <div class=\"fd-container fd-container--centered\">\n <div class=\"content\">\n <span class=\"sap-icon--log\"></span>\n\n <div class=\"info\" data-e2e=\"logout-headline\">{{ headline() }}</div>\n <div class=\"hint\" data-e2e=\"logout-message\">{{ hint() }}</div>\n\n <p class=\"fd-has-text-align-center\">\n <button\n class=\"fd-button fd-button--action-bar fd-button--l\"\n (click)=\"login()\"\n >\n {{ btnText() }}\n </button>\n </p>\n </div>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { LuigiIntent, LuigiNode } from '../../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IntentNavigationService {\n constructor() {}\n\n /**\n * This function builds the Luigi based intent mapping configuration from the pre-built intent target knowledge\n * It iterates existing intentMappings and constructs pathSegment from the relative path of the defined entity and the target\n * that uses the entity as a reference\n *\n * @param nodes the nodes to fetch intentMapping initial configuration from\n * @returns a list of luigi intent objects\n */\n buildIntentMappings(nodes: LuigiNode[]): LuigiIntent[] {\n let intentMappings: LuigiIntent[] = [];\n let entityRelativePaths: Record<string, any> = {};\n // find mapping on config from node[0] --> not 0 anymore need to traverse fully\n for (const item of nodes) {\n if (item._intentMappings) {\n intentMappings = [...intentMappings, ...item._intentMappings];\n }\n if (item._entityRelativePaths) {\n entityRelativePaths = {\n ...entityRelativePaths,\n ...item._entityRelativePaths,\n };\n }\n }\n\n for (const intentElement of intentMappings) {\n if (entityRelativePaths && intentElement.baseEntityId) {\n let entityPath = '';\n intentElement.baseEntityId.split('.').forEach((entity) => {\n if (\n entityRelativePaths[entity] &&\n entityRelativePaths[entity].pathSegment\n ) {\n entityPath += '/' + entityRelativePaths[entity].pathSegment;\n }\n });\n intentElement.pathSegment = this.removeDuplicateSlash(\n entityPath + '/' + intentElement.relativePath\n );\n }\n }\n return intentMappings;\n }\n\n /**\n * Removes duplicate slashes if exist\n *\n * @param url the url string to modify\n * @returns\n */\n removeDuplicateSlash(url: string) {\n return url.replace(/\\/+/g, '/');\n }\n}\n","import { search } from 'jmespath';\n\n/**\n * Evaluates the JMESPath expression on the context and returns true if the result is true, otherwise false\n * @param context The context to evaluate\n * @param jmesPathExpression The JMESPath expression to evaluate\n * @returns true if the result of the JMESPath expression is true, otherwise (or if there was an exception while matching with JMESPath) false\n * */\nexport function matchesJMESPath(\n context: object,\n jmesPathExpression: string\n): boolean {\n if (!jmesPathExpression) {\n return true;\n }\n\n try {\n return search(context, jmesPathExpression) === true;\n } catch (e) {\n logJMESException(context, jmesPathExpression, e);\n return false;\n }\n}\n\nfunction logJMESException(\n context: object,\n jmesPathExpression: string,\n error: unknown\n): void {\n console.warn(\n 'Error while evaluating JMESPath expression.',\n 'Please check your visibleForContext or configurationMissing key in your Configuration.',\n '\\n',\n '\\n',\n 'Context:',\n '\\n',\n context,\n '\\n',\n '\\n',\n 'JMESPath expression:',\n '\\n',\n jmesPathExpression,\n '\\n',\n '\\n',\n 'Exception: ',\n '\\n',\n error\n );\n}\n","import { LuigiNode } from '../models';\nimport { matchesJMESPath } from './jmespath';\nimport { isMatch } from 'lodash';\n\nexport const visibleForContext = (ctx: any, node: LuigiNode): boolean => {\n // visibleForEntityContext is deprecated\n if (!isMatch(ctx?.entityContext, node.visibleForEntityContext)) {\n return false;\n }\n\n return matchesJMESPath(ctx, node.visibleForContext ?? '');\n};\n\nexport const computeDynamicFetchContext = (\n entityNode: LuigiNode,\n ctx: any,\n): Map<string, Record<string, string>> => {\n const contextForEntityConfig: Map<string, Record<string, string>> = new Map();\n\n function addToAll(key: string, value: string) {\n contextForEntityConfig.forEach((record) => {\n record[key] = value;\n });\n }\n\n let node = entityNode as any;\n while (node) {\n if (node.defineEntity?.contextKey && node.defineEntity?.dynamicFetchId) {\n contextForEntityConfig.set(node.defineEntity.dynamicFetchId, {});\n addToAll(\n node.defineEntity.dynamicFetchId,\n ctx[node.defineEntity.contextKey],\n );\n\n if (node.defineEntity?.additionalContextKeys) {\n node.defineEntity.additionalContextKeys.forEach((key: string) => {\n addToAll(key, ctx[key]);\n });\n }\n }\n node = node.parent;\n }\n\n addToAll('user', ctx.userId || ctx.userid);\n return contextForEntityConfig;\n};\n","import { LuigiNode, LuigiNodeCategory } from '../../models';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NodeSortingService {\n constructor() {}\n\n markEntityRootChildren(nodes: LuigiNode[]) {\n nodes.forEach((child) => {\n child._entityRootChild = true;\n });\n }\n\n nodeComparison(a: LuigiNode, b: LuigiNode) {\n // set default order to the end if not defined\n a.order = a.dxpOrder || a.order || '999';\n b.order = b.dxpOrder || b.order || '999';\n\n const orderA = isNaN(parseFloat(a?.order)) ? 999 : parseFloat(a.order);\n const orderB = isNaN(parseFloat(b?.order)) ? 999 : parseFloat(b.order);\n\n if (orderA < orderB) {\n return -1;\n } else if (orderA > orderB) {\n return 1;\n }\n\n // if orders are equal -> sort alphabetically by label\n if (!a.label && !b.label) {\n return 0; // both undefined, keep original order\n } else if (!a.label) {\n return 1; // a has no label, goes after b\n } else if (!b.label) {\n return -1; // b has no label, a goes before b\n }\n\n return a.label.localeCompare(b.label);\n }\n\n appendChildrenToSlot(\n nodes: LuigiNode[],\n slotNode: LuigiNode,\n children: LuigiNode[],\n ) {\n const slotIndex = nodes.indexOf(slotNode);\n\n if (slotNode.category) {\n const cat =\n (slotNode.category as LuigiNodeCategory).id ||\n (slotNode.category as LuigiNodeCategory).label ||\n ((slotNode.category as string).length > 0\n ? slotNode.category\n : undefined);\n if (cat) {\n children.forEach((node) => {\n node.category = cat;\n });\n }\n }\n\n nodes.splice(slotIndex + 1, 0, ...children);\n }\n\n sortNodes(nodes: LuigiNode[]): LuigiNode[] {\n const entityRootNodes: LuigiNode[] = [];\n const slottedChildrenMap = {};\n const otherChildren: LuigiNode[] = [];\n const slotNodes: LuigiNode[] = [];\n let defaultSlot;\n\n nodes.forEach((node) => {\n if (node._entityRootChild) {\n entityRootNodes.push(node);\n if (node.defineSlot) {\n slotNodes.push(node);\n } else if (node.defineSlot === '') {\n defaultSlot = node;\n }\n } else if (node.navSlot) {\n if (!slottedChildrenMap[node.navSlot]) {\n slottedChildrenMap[node.navSlot] = [];\n }\n slottedChildrenMap[node.navSlot].push(node);\n } else {\n otherChildren.push(node);\n }\n });\n\n const sortedNodes = [...entityRootNodes];\n\n const sortedOther = otherChildren.sort(this.nodeComparison);\n\n if (slotNodes.length > 0) {\n slotNodes.forEach((slotNode) => {\n if (!slotNode.defineSlot) {\n return;\n }\n\n if (slottedChildrenMap[slotNode.defineSlot]) {\n this.appendChildrenToSlot(\n sortedNodes,\n slotNode,\n slottedChildrenMap[slotNode.defineSlot].sort(this.nodeComparison),\n );\n delete slottedChildrenMap[slotNode.defineSlot];\n }\n });\n }\n\n // collect unassigned slotted nodes and add to default slot\n for (const slotId in slottedChildrenMap) {\n if (Object.prototype.hasOwnProperty.call(slottedChildrenMap, slotId)) {\n const unassignedSlotChildren = slottedChildrenMap[slotId];\n sortedOther.push(...unassignedSlotChildren.sort(this.nodeComparison));\n }\n }\n\n if (defaultSlot) {\n this.appendChildrenToSlot(sortedNodes, defaultSlot, sortedOther);\n } else {\n sortedNodes.push(...sortedOther);\n }\n\n // move nodes without categories to top\n const singleNodes: LuigiNode[] = [];\n const catNodes: LuigiNode[] = [];\n sortedNodes.forEach((node) => {\n (node.category ? catNodes : singleNodes).push(node);\n });\n\n return [...singleNodes, ...catNodes];\n }\n}\n","import { LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { LuigiNode } from '../../models';\nimport {\n computeDynamicFetchContext,\n visibleForContext,\n} from '../../utilities/context';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { ConfigService } from '../portal';\nimport { CustomNodeProcessingService } from './custom-node-processing.service';\nimport { NodeSortingService } from './node-sorting.service';\nimport { NodeUtilsService } from './node-utils.service';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ChildrenNodesService {\n private luigiCoreService = inject(LuigiCoreService);\n private configService = inject(ConfigService);\n private nodeUtilsService = inject(NodeUtilsService);\n private nodeSortingService = inject(NodeSortingService);\n private customNodeProcessingService = inject<CustomNodeProcessingService>(\n LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n\n async processChildrenForEntity(\n entityNode: LuigiNode,\n childrenNodes: LuigiNode[],\n ctx: any,\n ): Promise<LuigiNode[]> {\n if (\n entityNode.defineEntity?.useBack &&\n this.luigiCoreService.isFeatureToggleActive('navheader-up') &&\n entityNode.navHeader\n ) {\n entityNode.navHeader.showUpLink = true;\n }\n\n this.addNavigationHeader(entityNode);\n\n if (!childrenNodes) {\n return [];\n }\n\n const entityContext = {};\n\n const fetchContext = computeDynamicFetchContext(entityNode, ctx);\n await Promise.all(\n Array.from(fetchContext.entries()).map(\n async ([dynamicFetchId, context]) => {\n try {\n entityContext[dynamicFetchId] = (\n await this.configService.getEntityConfig(dynamicFetchId, context)\n ).entityContext;\n } catch (error) {\n console.error(\n entityNode.defineEntity?.id,\n 'does not exist',\n context,\n );\n }\n },\n ),\n );\n\n childrenNodes.forEach((child) => {\n child.context = { ...child.context, entityContext };\n child.onNodeActivation =\n this.nodeUtilsService.retrieveGlobalHelpContext();\n });\n\n const nodes = await Promise.all(\n childrenNodes\n .filter((child) => visibleForContext(child.context, child))\n .map(\n (child) =>\n this.customNodeProcessingService?.processNode(\n child.context,\n child,\n ) || child,\n ),\n );\n return this.nodeSortingService.sortNodes(nodes);\n }\n\n addNavigationHeader(entityNode: LuigiNode) {\n if (entityNode.defineEntity) {\n if (!entityNode.navHeader) {\n entityNode.navHeader = {};\n }\n\n entityNode.navHeader.renderer = (\n containerElement: HTMLElement,\n nodeItem: LuigiNode,\n clickHandler: Function,\n navHeader: any,\n ) => {\n if (!containerElement || !navHeader?.label) {\n return;\n }\n\n const label = this.sanitizeString(navHeader.label);\n const type = this.getSideNavigationHeaderType(\n navHeader.context,\n nodeItem,\n );\n containerElement.classList.add('entity-nav-header');\n\n containerElement.innerHTML = `\n <ui5-text class=\"entity-nav-header-type\">${type}</ui5-text>\n <ui5-title class=\"entity-nav-header-label\" level=\"H6\" size=\"H6\">${label}</ui5-title>\n `;\n };\n }\n }\n\n private getSideNavigationHeaderType(\n nodeContext: Record<string, any> = {},\n nodeItem: LuigiNode,\n ): string {\n const dynamicFetchId = nodeItem.defineEntity?.dynamicFetchId || '';\n let type = (nodeContext.entityContext?.[dynamicFetchId] || {}).type;\n if (!type || typeof type !== 'string') {\n type = nodeItem.defineEntity?.label || dynamicFetchId || 'Extension';\n }\n type = type.replace(/Id/i, '');\n return type.at(0).toUpperCase() + type.slice(1);\n }\n\n private sanitizeString(inputString: string): string {\n // Prevent XSS attacks by removing any tags\n const tempSpan = document.createElement('span');\n tempSpan.textContent = inputString;\n return tempSpan.innerHTML;\n }\n}\n","import {\n LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN,\n LUIGI_NODES_CUSTOM_GLOBAL_SERVICE_INJECTION_TOKEN,\n} from '../../injection-tokens';\nimport { LuigiNode } from '../../models';\nimport { EntityType } from '../../models/entity';\nimport {\n computeDynamicFetchContext,\n visibleForContext,\n} from '../../utilities/context';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { ChildrenNodesService } from './children-nodes.service';\nimport { CustomGlobalNodesService } from './custom-global-nodes.service';\nimport { CustomNodeProcessingService } from './custom-node-processing.service';\nimport { LocalConfigurationServiceImpl } from './local-configuration.service';\nimport { LuigiNodesService } from './luigi-nodes.service';\nimport { NodeContextProcessingServiceImpl } from './node-context-processing.service';\nimport { NodeSortingService } from './node-sorting.service';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class NodesProcessingService {\n private nodeContextProcessingService = inject(\n NodeContextProcessingServiceImpl,\n );\n private luigiCoreService = inject(LuigiCoreService);\n private luigiNodesService = inject(LuigiNodesService);\n private localConfigurationService = inject(LocalConfigurationServiceImpl);\n private nodeSortingService = inject(NodeSortingService);\n private childrenNodesService = inject(ChildrenNodesService);\n private customNodeProcessingService = inject<CustomNodeProcessingService>(\n LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n private customGlobalNodesService = inject<CustomGlobalNodesService>(\n LUIGI_NODES_CUSTOM_GLOBAL_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n\n async processNodes(childrenByEntity: Record<string, LuigiNode[]>) {\n const globalNodes = [\n ...(childrenByEntity[EntityType.GLOBAL] || []),\n ...(childrenByEntity[EntityType.GLOBAL_TOPNAV] || []),\n ...((await this.customGlobalNodesService?.getCustomGlobalNodes()) || []),\n ];\n\n globalNodes.forEach((node) => {\n node.context = { ...node.context };\n node.globalNav = this.isGlobalNavNode(node);\n this.applyEntityChildrenRecursively(node, childrenByEntity, '');\n });\n\n globalNodes.sort(this.nodeSortingService.nodeComparison);\n return globalNodes;\n }\n\n private isGlobalNavNode(node: LuigiNode) {\n return !node.hideFromNav && node.entityType === EntityType.GLOBAL;\n }\n\n applyEntityChildrenRecursively(\n node: LuigiNode,\n childrenByEntity: Record<string, LuigiNode[]>,\n parentEntityPath: string,\n ) {\n if (Array.isArray(node.children)) {\n this.nodeSortingService.markEntityRootChildren(node.children);\n node._portalDirectChildren = node.children;\n }\n const directChildren = node._portalDirectChildren || [];\n\n if (node.defineEntity) {\n this.processNodeDefineEntity(\n node,\n childrenByEntity,\n parentEntityPath,\n directChildren,\n );\n } else {\n directChildren.forEach((child) => {\n this.applyEntityChildrenRecursively(\n child,\n childrenByEntity,\n parentEntityPath,\n );\n });\n node.children = (ctx: any) =>\n Promise.all(\n directChildren\n .filter((child) => visibleForContext(ctx, child))\n .map(\n (child) =>\n this.customNodeProcessingService?.processNode(ctx, child) ||\n child,\n ),\n );\n }\n\n if (node.virtualTree) {\n node.children = undefined;\n }\n }\n\n private processNodeDefineEntity(\n node: LuigiNode,\n childrenByEntity: Record<string, LuigiNode[]>,\n parentEntityPath: string,\n directChildren: LuigiNode[],\n ) {\n if (!node.defineEntity) {\n this.luigiCoreService.showAlert({\n text: 'Node defineEntity is missing',\n type: 'error',\n });\n\n throw new Error('Node defineEntity is missing');\n }\n\n let newEntityPath = parentEntityPath;\n if (parentEntityPath?.length > 0) {\n newEntityPath = parentEntityPath + '.' + node.defineEntity.id;\n } else {\n newEntityPath = node.defineEntity.id;\n }\n\n node.children = (ctx: any) => {\n return this.entityChildrenProvider(\n node,\n ctx,\n childrenByEntity,\n directChildren,\n newEntityPath,\n );\n };\n\n this.processCompoundNode(node, childrenByEntity, newEntityPath);\n }\n\n processCompoundNode(\n node: LuigiNode,\n childrenByEntity: Record<string, LuigiNode[]>,\n newEntityPath: string,\n ) {\n if (node.compound) {\n if (!node.compound._staticChildren) {\n node.compound._staticChildren = node.compound.children || [];\n }\n const additionalChildren =\n childrenByEntity[newEntityPath + '::compound'] || [];\n let children = [\n ...node.compound._staticChildren,\n ...additionalChildren,\n ].sort(this.nodeSortingService.nodeComparison);\n\n Object.defineProperty(node.compound, 'children', {\n set: (newValue) => (children = newValue),\n get: () => {\n children.forEach((child) => {\n child.context.entityContext = {\n ...child.context.entityContext,\n ...node.context?.entityContext,\n };\n });\n return children.filter((child) =>\n visibleForContext(child.context, child),\n );\n },\n configurable: true,\n });\n }\n }\n\n entityChildrenProvider(\n entityNode: LuigiNode,\n ctx: any,\n childrenByEntity: Record<string, LuigiNode[]>,\n directChildren: LuigiNode[],\n entityPath: string,\n ) {\n return new Promise<LuigiNode[]>(async (resolve, reject) => {\n const entityTypeId = entityPath || entityNode?.defineEntity?.id;\n const contextKey = entityNode?.defineEntity?.contextKey;\n const entityId = contextKey ? ctx[contextKey] : undefined;\n\n const staticChildren = [\n ...(directChildren || []),\n ...(childrenByEntity[entityTypeId ?? ''] || []),\n ];\n\n await this.nodeContextProcessingService?.processNodeContext(\n entityId,\n entityNode,\n ctx,\n );\n\n if (!entityTypeId || !entityNode.defineEntity?.dynamicFetchId) {\n const serverAndLocalNodes =\n await this.localConfigurationService.replaceServerNodesWithLocalOnes(\n staticChildren,\n [entityPath],\n );\n const childrenList = await this.createChildrenList(\n entityNode,\n ctx,\n childrenByEntity,\n entityPath,\n serverAndLocalNodes,\n );\n resolve(childrenList);\n return;\n }\n\n let dynamicRetrievedChildren: LuigiNode[],\n staticRetrievedChildren: LuigiNode[] | undefined;\n\n try {\n const fetchContext = computeDynamicFetchContext(entityNode, ctx);\n const dynamicFetchId = entityNode.defineEntity.dynamicFetchId;\n dynamicRetrievedChildren =\n await this.luigiNodesService.retrieveEntityChildren(\n entityNode.defineEntity,\n fetchContext.get(dynamicFetchId),\n );\n const serverAndLocalNodes =\n await this.localConfigurationService.replaceServerNodesWithLocalOnes(\n dynamicRetrievedChildren,\n [entityPath],\n );\n dynamicRetrievedChildren = [...staticChildren, ...serverAndLocalNodes];\n staticRetrievedChildren = staticChildren;\n } catch (error) {\n dynamicRetrievedChildren = staticChildren;\n staticRetrievedChildren = undefined;\n }\n\n const childrenList = await this.createChildrenList(\n entityNode,\n ctx,\n childrenByEntity,\n entityPath,\n dynamicRetrievedChildren,\n staticRetrievedChildren,\n );\n resolve(childrenList);\n });\n }\n\n private createChildrenList(\n entityNode: LuigiNode,\n ctx: any,\n childrenByEntity: Record<string, LuigiNode[]>,\n entityPath: string,\n children: LuigiNode[],\n staticChildren?: LuigiNode[],\n ) {\n const entityRootChildren = staticChildren ? [] : children;\n let mergedChildrenByEntity = childrenByEntity;\n if (staticChildren) {\n const entityChildrenByEntity: Record<string, LuigiNode[]> = {};\n\n children?.forEach((child) => {\n if (\n child.entityType === entityPath ||\n child.entityType === EntityType.ENTITY_ERROR ||\n staticChildren.includes(child)\n ) {\n entityRootChildren.push(child);\n } else if (child.entityType) {\n if (!entityChildrenByEntity[child.entityType]) {\n entityChildrenByEntity[child.entityType] = [];\n }\n entityChildrenByEntity[child.entityType].push(child);\n } else {\n console.warn('Ignored entity child, no entity type defined', child);\n }\n });\n mergedChildrenByEntity = { ...childrenByEntity };\n Object.keys(entityChildrenByEntity).forEach((key) => {\n const existingNodes = mergedChildrenByEntity[key];\n mergedChildrenByEntity[key] = existingNodes\n ? [...existingNodes, ...entityChildrenByEntity[key]]\n : entityChildrenByEntity[key];\n });\n }\n\n entityRootChildren.forEach((child) => {\n this.applyEntityChildrenRecursively(\n child,\n mergedChildrenByEntity,\n entityPath,\n );\n });\n return this.childrenNodesService.processChildrenForEntity(\n entityNode,\n entityRootChildren,\n ctx,\n );\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport {\n LUIGI_APP_SWITCHER_CONFIG_SERVICE_INJECTION_TOKEN,\n LUIGI_NODE_CHANGE_HOOK_SERVICE_INJECTION_TOKEN,\n LUIGI_USER_PROFILE_CONFIG_SERVICE_INJECTION_TOKEN\n} from '../../injection-tokens';\nimport { ClientEnvironment, LuigiNode } from '../../models';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { IntentNavigationService } from '../luigi-nodes/intent-navigation.service';\nimport { LuigiNodesService } from '../luigi-nodes/luigi-nodes.service';\nimport { NodesProcessingService } from '../luigi-nodes/nodes-processing.service';\nimport { ConfigService } from '../portal';\nimport { featureToggleLocalStorage } from '../storage-service';\nimport { AppSwitcherConfigService } from './app-switcher-config.service';\nimport { HeaderBarService } from './luigi-breadcrumb-config.service';\nimport { GlobalContextConfigService } from './global-context-config.service';\nimport { NodeChangeHookConfigService } from './node-change-hook-config.service';\nimport { UserProfileConfigService } from './user-profile-config.service';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationConfigService {\n constructor(\n private configService: ConfigService,\n private luigiCoreService: LuigiCoreService,\n private luigiNodesService: LuigiNodesService,\n private intentNavigationService: IntentNavigationService,\n private navigationGlobalContextConfigService: GlobalContextConfigService,\n @Optional()\n @Inject(LUIGI_USER_PROFILE_CONFIG_SERVICE_INJECTION_TOKEN)\n private userProfileConfigService: UserProfileConfigService,\n @Optional()\n @Inject(LUIGI_APP_SWITCHER_CONFIG_SERVICE_INJECTION_TOKEN)\n private appSwitcherConfigService: AppSwitcherConfigService,\n @Optional()\n @Inject(LUIGI_NODE_CHANGE_HOOK_SERVICE_INJECTION_TOKEN)\n private nodeChangeHookConfigService: NodeChangeHookConfigService,\n private nodesProcessingService: NodesProcessingService,\n private headerBarService: HeaderBarService,\n ) {\n }\n\n async getNavigationConfig(\n childrenByEntity: Record<string, LuigiNode[]>,\n envConfig: ClientEnvironment\n ) {\n const allNodes = Object.values(childrenByEntity).reduce(\n (accumulator, value) => accumulator.concat(value),\n []\n );\n\n const portalConfig = await this.configService.getPortalConfig();\n this.initFeatureToggles(portalConfig.featureToggles, envConfig);\n const context = await this.navigationGlobalContextConfigService.getGlobalContext();\n const luigiNodes =\n await this.nodesProcessingService.processNodes(childrenByEntity);\n\n return {\n nodes: luigiNodes,\n viewGroupSettings: this.buildViewGroups(allNodes),\n appSwitcher: this.appSwitcherConfigService?.getAppSwitcher(luigiNodes),\n globalContext: context,\n profile: await this.userProfileConfigService?.getProfile(),\n addNavHrefs: true,\n contextSwitcher: undefined,\n nodeAccessibilityResolver: this.luigiNodesService.nodePolicyResolver,\n validWebcomponentUrls: envConfig.validWebcomponentUrls,\n intentMapping: this.intentNavigationService.buildIntentMappings(allNodes),\n nodeChangeHook: function (prevNode, nextNode) {\n this.nodeChangeHookConfigService?.nodeChangeHook(prevNode, nextNode);\n }.bind(this),\n breadcrumbs:\n await this.headerBarService.getConfig(),\n };\n }\n\n private initFeatureToggles(configFeatureToggles: Record<string, boolean>, envConfig: ClientEnvironment) {\n if (envConfig.uiOptions?.includes('enableFeatureToggleSetting')) {\n const featureToggleSettings = featureToggleLocalStorage.read();\n this.luigiCoreService.setFeatureToggles({\n ...configFeatureToggles,\n ...featureToggleSettings,\n });\n return;\n }\n\n this.luigiCoreService.setFeatureToggles(configFeatureToggles);\n }\n\n private buildViewGroups(nodes: LuigiNode[]) {\n const viewGroups = {};\n nodes.forEach((node) => {\n if (node.viewGroup && node._preloadUrl) {\n viewGroups[node.viewGroup] = {\n preloadUrl: node._preloadUrl,\n requiredIFramePermissions:\n node._requiredIFramePermissionsForViewGroup,\n };\n }\n });\n\n return viewGroups;\n }\n}\n","import { LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';\nimport { LuigiNode } from '../../models';\nimport { I18nService } from '../i18n.service';\nimport { LuigiCoreService } from '../luigi-core.service';\nimport { LuigiNodesService } from '../luigi-nodes/luigi-nodes.service';\nimport { EnvConfigService } from '../portal';\nimport { AuthConfigService } from './auth-config.service';\nimport { CustomMessageListenersService } from './custom-message-listeners.service';\nimport { GlobalSearchConfigService } from './global-search-config.service';\nimport { NavigationConfigService } from './navigation-config.service';\nimport { RoutingConfigServiceImpl } from './routing-config.service';\nimport { StaticSettingsConfigServiceImpl } from './static-settings-config.service';\nimport { UserSettingsConfigService } from './user-settings-config.service';\nimport { Injectable, inject } from '@angular/core';\nimport { $localize } from '@angular/localize/init';\n\n@Injectable({ providedIn: 'root' })\nexport class LifecycleHooksConfigService {\n private authConfigService = inject(AuthConfigService);\n private customMessageListenersService = inject(CustomMessageListenersService);\n private envConfigService = inject(EnvConfigService);\n private i18nService = inject(I18nService);\n private luigiNodesService = inject(LuigiNodesService);\n private luigiCoreService = inject(LuigiCoreService);\n private routingConfigService = inject(RoutingConfigServiceImpl);\n private navigationConfigService = inject(NavigationConfigService);\n private userSettingsConfigService = inject(UserSettingsConfigService);\n private staticSettingsConfigService = inject(StaticSettingsConfigServiceImpl);\n private globalSearchConfigService = inject<GlobalSearchConfigService>(\n LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN as any,\n { optional: true },\n );\n\n getLifecycleHooksConfig() {\n return {\n luigiAfterInit: () => {\n return this.constructLuigiConfiguration();\n },\n };\n }\n\n private async constructLuigiConfiguration() {\n this.i18nService.afterInit();\n const envConfig = await this.envConfigService.getEnvConfig();\n\n let childrenByEntity: Record<string, LuigiNode[]>;\n try {\n childrenByEntity =\n await this.luigiNodesService.retrieveChildrenByEntity();\n } catch (e) {\n console.error('Error retrieving Luigi navigation nodes', e);\n this.openErrorDialog();\n return;\n }\n\n const config = {\n auth: await this.authConfigService.getAuthConfig(),\n settings:\n await this.staticSettingsConfigService.getStaticSettingsConfig(),\n communication: this.customMessageListenersService.getMessageListeners(),\n navigation: await this.navigationConfigService.getNavigationConfig(\n childrenByEntity,\n envConfig,\n ),\n routing: this.routingConfigService.getRoutingConfig(),\n userSettings:\n await this.userSettingsConfigService.getUserSettings(childrenByEntity),\n globalSearch: this.globalSearchConfigService?.getGlobalSearchConfig(),\n };\n\n this.luigiCoreService.setConfig(config);\n this.luigiCoreService.ux().hideAppLoadingIndicator();\n }\n\n private openErrorDialog() {\n const appTitle = this.luigiCoreService.config?.settings?.header?.title;\n this.luigiCoreService.showAlert({\n text: $localize`There was an error loading the ${appTitle}`,\n type: 'error',\n });\n }\n}\n","import {\n AuthConfigService,\n AuthService,\n LuigiCoreService,\n StaticSettingsConfigServiceImpl,\n} from '../../services';\nimport { LifecycleHooksConfigService } from '../../services/luigi-config/lifecycle-hooks-config.service';\nimport { RoutingConfigServiceImpl } from '../../services/luigi-config/routing-config.service';\nimport { Component, OnInit, inject } from '@angular/core';\n\n@Component({\n template: '',\n standalone: true,\n})\nexport class LuigiComponent implements OnInit {\n private lifecycleHooksConfigService = inject(LifecycleHooksConfigService);\n private luigiCoreService = inject(LuigiCoreService);\n private authService = inject(AuthService);\n private routingConfigService = inject(RoutingConfigServiceImpl);\n private authConfigService = inject(AuthConfigService);\n private staticSettingsConfigService = inject(StaticSettingsConfigServiceImpl);\n\n async ngOnInit(): Promise<void> {\n try {\n this.luigiCoreService.setConfig({\n auth: await this.authConfigService.getAuthConfig(),\n routing: this.routingConfigService.getInitialRoutingConfig(),\n lifecycleHooks:\n this.lifecycleHooksConfigService.getLifecycleHooksConfig(),\n settings:\n await this.staticSettingsConfigService.getStaticSettingsConfig(),\n });\n this.luigiCoreService.setAuthData(this.authService.getAuthData());\n } catch (e) {\n console.error(`Luigi Component init failed: ${e.toString()}`);\n }\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\ndocument.body.classList.add('ui5-content-density-compact');\n\n@Component({\n selector: 'app-portal',\n standalone: true,\n imports: [RouterOutlet],\n templateUrl: './portal.component.html',\n styleUrls: ['./portal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PortalComponent {}\n","<div class=\"fd-page__content\">\n <router-outlet></router-outlet>\n</div>\n","import { LogoutComponent, LuigiComponent } from './components';\nimport { Routes } from '@angular/router';\n\nexport const portalRouts: Routes = [\n { path: 'logout', component: LogoutComponent },\n { path: '', component: LuigiComponent },\n { path: '**', component: LuigiComponent },\n];\n","import {\n ActivatedRouteSnapshot,\n DetachedRouteHandle,\n RouteReuseStrategy,\n} from '@angular/router';\n\nexport class CustomReuseStrategy implements RouteReuseStrategy {\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\n // Optionally, you can customize which routes should be detached (stored)\n return false; // Not detaching any routes for now\n }\n\n store(\n route: ActivatedRouteSnapshot,\n handle: DetachedRouteHandle | null\n ): void {\n // Optional: Store the detached route here if needed\n }\n\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\n // Optional: Specify which routes to reattach\n return false; // Not attaching any routes for now\n }\n\n retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\n // Optional: Retrieve the stored route if needed\n return null; // Returning null means no route is retrieved\n }\n\n shouldReuseRoute(\n future: ActivatedRouteSnapshot,\n curr: ActivatedRouteSnapshot\n ): boolean {\n return (\n future.routeConfig === curr.routeConfig ||\n future.routeConfig?.component === curr.routeConfig?.component\n );\n }\n}\n","import {\n provideBootstrap,\n provideLanguageServices,\n provideNavigationTracker,\n provideSessionRefresh,\n} from './initializers';\nimport {\n ERROR_COMPONENT_CONFIG,\n HEADER_BAR_CONFIG_SERVICE_INJECTION_TOKEN,\n LOCAL_CONFIGURATION_SERVICE_INJECTION_TOKEN,\n LUIGI_APP_SWITCHER_CONFIG_SERVICE_INJECTION_TOKEN,\n LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE_INJECTION_TOKEN,\n LUIGI_CUSTOM_MESSAGE_LISTENERS_INJECTION_TOKEN,\n LUIGI_CUSTOM_NODE_CONTEXT_PROCESSING_SERVICE_INJECTION_TOKEN,\n LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN,\n LUIGI_EXTENDED_GLOBAL_CONTEXT_CONFIG_SERVICE_INJECTION_TOKEN,\n LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN,\n LUIGI_NODES_CUSTOM_GLOBAL_SERVICE_INJECTION_TOKEN,\n LUIGI_NODE_CHANGE_HOOK_SERVICE_INJECTION_TOKEN,\n LUIGI_ROUTING_CONFIG_SERVICE_INJECTION_TOKEN,\n LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN,\n LUIGI_USER_PROFILE_CONFIG_SERVICE_INJECTION_TOKEN,\n THEMING_SERVICE,\n} from './injection-tokens';\nimport { ErrorComponentConfig } from './models';\nimport { portalRouts } from './portal-routing';\nimport {\n AppSwitcherConfigService,\n AppSwitcherConfigServiceImpl,\n CustomGlobalNodesService,\n CustomMessageListener,\n CustomNodeProcessingService,\n DefaultUserProfileConfigService,\n GlobalSearchConfigService,\n HeaderBarConfigService,\n LocalConfigurationService,\n LuigiAuthEventsCallbacksService,\n LuigiExtendedGlobalContextConfigService,\n NodeChangeHookConfigService,\n NodeContextProcessingService,\n RoutingConfigService,\n StaticSettingsConfigService,\n ThemingService,\n UserProfileConfigService,\n UserSettingsConfigService,\n} from './services';\nimport { CustomReuseStrategy } from './utilities';\nimport { provideHttpClient } from '@angular/common/http';\nimport {\n EnvironmentProviders,\n Provider,\n Type,\n makeEnvironmentProviders,\n} from '@angular/core';\nimport { RouteReuseStrategy, provideRouter } from '@angular/router';\n\nexport interface PortalOptions {\n /** Service containing and providing the luigi settings configuration **/\n staticSettingsConfigService?: Type<StaticSettingsConfigService>;\n\n /** A set of class representing custom listeners **/\n customMessageListeners?: Type<CustomMessageListener>[];\n\n /** Service providing local configuration services **/\n localConfigurationService?: Type<LocalConfigurationService>;\n\n /** Service providing user setting specific configuration **/\n userSettingsConfigService?: Type<UserSettingsConfigService>;\n\n /** Service providing global search configuration **/\n globalSearchConfigService?: Type<GlobalSearchConfigService>;\n\n /** Service providing luigi app switcher configuration **/\n appSwitcherConfigService?: Type<AppSwitcherConfigService>;\n\n /** Service providing luigi node extended context configuration **/\n luigiExtendedGlobalContextConfigService?: Type<LuigiExtendedGlobalContextConfigService>;\n\n /** Service providing custom global level nodes **/\n customGlobalNodesService?: Type<CustomGlobalNodesService>;\n\n /** Service providing custom global level nodes **/\n nodeContextProcessingService?: Type<NodeContextProcessingService>;\n\n /** Service providing luigi user profile configuration **/\n userProfileConfigService?: Type<UserProfileConfigService>;\n\n /** Provide a config that contains renderers for Nav Bar */\n headerBarConfigService?: Type<HeaderBarConfigService>;\n\n /** Service providing custom global level nodes **/\n nodeChangeHookConfigService?: Type<NodeChangeHookConfigService>;\n\n /** Service handling every node access policies **/\n customNodeProcessingService?: Type<CustomNodeProcessingService>;\n\n /** Service handling luigi authentication events **/\n luigiAuthEventsCallbacksService?: Type<LuigiAuthEventsCallbacksService>;\n\n /** Provide a error configuration for error component to override the default values **/\n errorComponentConfig?: ErrorComponentConfig;\n\n /** Provide a error configuration for error component to override the default values **/\n themingService?: Type<ThemingService>;\n\n /** Service providing luigi routing configuration **/\n routingConfigService?: Type<RoutingConfigService>;\n}\n\nexport function providePortal(\n options: PortalOptions = {},\n): EnvironmentProviders {\n const providers: (Provider | EnvironmentProviders)[] = [\n provideHttpClient(),\n provideBootstrap(),\n provideSessionRefresh(),\n provideNavigationTracker(),\n provideLanguageServices(),\n provideRouter(portalRouts),\n { provide: RouteReuseStrategy, useClass: CustomReuseStrategy },\n ...addOptionalProviders(options),\n ];\n\n return makeEnvironmentProviders(providers);\n}\n\nconst addOptionalProviders = (\n options: PortalOptions,\n): (Provider | EnvironmentProviders)[] => {\n const providers: (Provider | EnvironmentProviders)[] = [];\n (options.customMessageListeners || []).forEach((customMessageListenerClass) =>\n providers.push({\n provide: LUIGI_CUSTOM_MESSAGE_LISTENERS_INJECTION_TOKEN,\n multi: true,\n useClass: customMessageListenerClass,\n }),\n );\n\n providers.push({\n provide: LUIGI_APP_SWITCHER_CONFIG_SERVICE_INJECTION_TOKEN,\n useClass: options.appSwitcherConfigService || AppSwitcherConfigServiceImpl,\n });\n\n providers.push({\n provide: LUIGI_USER_PROFILE_CONFIG_SERVICE_INJECTION_TOKEN,\n useClass:\n options.userProfileConfigService || DefaultUserProfileConfigService,\n });\n\n if (options.luigiExtendedGlobalContextConfigService) {\n providers.push({\n provide: LUIGI_EXTENDED_GLOBAL_CONTEXT_CONFIG_SERVICE_INJECTION_TOKEN,\n useClass: options.luigiExtendedGlobalContextConfigService,\n });\n }\n\n if (options.nodeChangeHookConfigService) {\n providers.push({\n provide: LUIGI_NODE_CHANGE_HOOK_SERVICE_INJECTION_TOKEN,\n useClass: options.nodeChangeHookConfigService,\n });\n }\n\n if (options.nodeContextProcessingService) {\n providers.push({\n provide: LUIGI_CUSTOM_NODE_CONTEXT_PROCESSING_SERVICE_INJECTION_TOKEN,\n useClass: options.nodeContextProcessingService,\n });\n }\n\n if (options.localConfigurationService) {\n providers.push({\n provide: LOCAL_CONFIGURATION_SERVICE_INJECTION_TOKEN,\n useClass: options.localConfigurationService,\n });\n }\n\n if (options.staticSettingsConfigService) {\n providers.push({\n provide: LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN,\n useClass: options.staticSettingsConfigService,\n });\n }\n\n if (options.luigiAuthEventsCallbacksService) {\n providers.push({\n provide: LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE_INJECTION_TOKEN,\n useClass: options.luigiAuthEventsCallbacksService,\n });\n }\n\n if (options.customNodeProcessingService) {\n providers.push({\n provide: LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN,\n useClass: options.customNodeProcessingService,\n });\n }\n\n if (options.customGlobalNodesService) {\n providers.push({\n provide: LUIGI_NODES_CUSTOM_GLOBAL_SERVICE_INJECTION_TOKEN,\n useClass: options.customGlobalNodesService,\n });\n }\n\n if (options.themingService) {\n providers.push({\n provide: THEMING_SERVICE,\n useClass: options.themingService,\n });\n }\n\n if (options.globalSearchConfigService) {\n providers.push({\n provide: LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN,\n useClass: options.globalSearchConfigService,\n });\n }\n\n if (options.errorComponentConfig) {\n providers.push({\n provide: ERROR_COMPONENT_CONFIG,\n useValue: options.errorComponentConfig,\n });\n }\n\n if (options.headerBarConfigService) {\n providers.push({\n provide: HEADER_BAR_CONFIG_SERVICE_INJECTION_TOKEN,\n useClass: options.headerBarConfigService,\n });\n }\n\n if (options.routingConfigService) {\n providers.push({\n provide: LUIGI_ROUTING_CONFIG_SERVICE_INJECTION_TOKEN,\n useClass: options.routingConfigService,\n });\n }\n\n return providers;\n};\n","/*\n * Public API Surface of lib\n */\n\nexport * from './lib/portal-providers';\nexport * from './lib/injection-tokens';\nexport * from './lib/components/portal/portal.component';\n\nexport * from './lib/models';\nexport * from './lib/services';\nexport * from './lib/utilities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LuigiCoreService","i2","i1","i2.RequestHeadersService","i1.AuthService","i2.LuigiCoreService","i3.GlobalContextConfigService","filter","i2.AuthService","i3.LoginEventService","i2.I18nService","i2.LoginEventService","i1.ConfigService","i3.LuigiNodesService","i4.IntentNavigationService","i5.GlobalContextConfigService","i6.NodesProcessingService","i7.HeaderBarService"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -91,6 +91,7 @@ interface EntityDefinition {
91
91
  id: string;
92
92
  dynamicFetchId?: string;
93
93
  contextKey?: string;
94
+ additionalContextKeys?: string[];
94
95
  useBack?: boolean;
95
96
  label?: string;
96
97
  pluralLabel?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openmfp/portal-ui-lib",
3
- "version": "0.184.23",
3
+ "version": "0.185.1",
4
4
  "repository": {
5
5
  "url": "git+https://github.com/openmfp/portal-ui-lib.git"
6
6
  },