@platform-mesh/portal-ui-lib 0.24.4 → 0.24.6

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.
@@ -306,6 +306,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
306
306
  args: [{ providedIn: 'root' }]
307
307
  }] });
308
308
 
309
+ function collectAccountNamesFromHierarchy(node) {
310
+ const accountNames = [];
311
+ let currentNode = node;
312
+ while (currentNode) {
313
+ const entity = currentNode.context?.entity;
314
+ if (entity?.metadata?.name && entity['__typename'] === 'Account') {
315
+ accountNames.unshift(entity.metadata.name);
316
+ }
317
+ currentNode = currentNode.parent;
318
+ }
319
+ return accountNames;
320
+ }
321
+ function getInitialAccountId(entityId, kind) {
322
+ return kind === 'Account' && entityId ? entityId : undefined;
323
+ }
324
+
325
+ class AccountPathResolverService {
326
+ resolveAccountHierarchy(entityNode, entityId, kind) {
327
+ if (entityNode.context?.accountPath) {
328
+ return entityNode.context.accountPath;
329
+ }
330
+ const accountNames = collectAccountNamesFromHierarchy(entityNode);
331
+ const initialId = getInitialAccountId(entityId, kind);
332
+ if (initialId) {
333
+ accountNames.push(initialId);
334
+ }
335
+ const path = accountNames.join(':');
336
+ entityNode.context.accountPath = path;
337
+ return path;
338
+ }
339
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AccountPathResolverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
340
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AccountPathResolverService, providedIn: 'root' }); }
341
+ }
342
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AccountPathResolverService, decorators: [{
343
+ type: Injectable,
344
+ args: [{ providedIn: 'root' }]
345
+ }] });
346
+
309
347
  class CrdGatewayKcpPatchResolver {
310
348
  constructor() {
311
349
  this.gatewayService = inject(GatewayService);
@@ -316,15 +354,12 @@ class CrdGatewayKcpPatchResolver {
316
354
  this.gatewayService.updateCrdGatewayUrlWithEntityPath(nextNode.context.kcpPath);
317
355
  return nextNode.context.kcpPath;
318
356
  }
319
- let entityKcpPath = kind !== 'Account' || !entityId ? '' : `:${entityId}`;
320
- let node = nextNode;
321
- do {
322
- const entity = node?.context?.entity;
323
- if (entity?.metadata?.name && entity['__typename'] === 'Account') {
324
- entityKcpPath = `:${entity.metadata.name}${entityKcpPath}`;
325
- }
326
- node = node?.parent;
327
- } while (node);
357
+ const accountNames = collectAccountNamesFromHierarchy(nextNode);
358
+ const initialId = getInitialAccountId(entityId, kind);
359
+ if (initialId) {
360
+ accountNames.push(initialId);
361
+ }
362
+ const entityKcpPath = accountNames.length > 0 ? `:${accountNames.join(':')}` : '';
328
363
  const org = (await this.envConfigService.getEnvConfig()).idpName;
329
364
  const kcpPath = `${kcpRootOrgsPath}:${org}${entityKcpPath}`;
330
365
  this.gatewayService.updateCrdGatewayUrlWithEntityPath(kcpPath);
@@ -345,6 +380,7 @@ class NodeChangeHookConfigServiceImpl {
345
380
  constructor() {
346
381
  this.luigiCoreService = inject(LuigiCoreService);
347
382
  this.crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);
383
+ this.accountPathResolverService = inject(AccountPathResolverService);
348
384
  }
349
385
  nodeChangeHook(prevNode, nextNode) {
350
386
  if (nextNode.initialRoute &&
@@ -353,6 +389,7 @@ class NodeChangeHookConfigServiceImpl {
353
389
  this.luigiCoreService.navigation().navigate(nextNode.initialRoute);
354
390
  }
355
391
  this.crdGatewayKcpPatchResolver.resolveCrdGatewayKcpPath(nextNode);
392
+ this.accountPathResolverService.resolveAccountHierarchy(nextNode);
356
393
  }
357
394
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NodeChangeHookConfigServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
358
395
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NodeChangeHookConfigServiceImpl, providedIn: 'root' }); }
@@ -366,6 +403,7 @@ class NodeContextProcessingServiceImpl {
366
403
  constructor() {
367
404
  this.resourceService = inject(ResourceService);
368
405
  this.crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);
406
+ this.accountPathResolver = inject(AccountPathResolverService);
369
407
  }
370
408
  async processNodeContext(entityId, entityNode, ctx) {
371
409
  const group = entityNode.defineEntity?.graphqlEntity?.group;
@@ -383,6 +421,7 @@ class NodeContextProcessingServiceImpl {
383
421
  if (namespaceId) {
384
422
  query = `query ($name: String!, $namespace: String!) { ${operation} { ${kind}(name: $name, namespace: $namespace) ${queryPart} }}`;
385
423
  }
424
+ const accountPath = this.accountPathResolver.resolveAccountHierarchy(entityNode, entityId, kind);
386
425
  try {
387
426
  const entity = await firstValueFrom(this.resourceService.read(entityId, operation, kind, query, {
388
427
  resourceDefinition: ctx.resourceDefinition,
@@ -396,12 +435,14 @@ class NodeContextProcessingServiceImpl {
396
435
  ctx.kcpPath = kcpPath;
397
436
  ctx.entity = entity;
398
437
  ctx.entityName = entityId;
438
+ ctx.accountPath = accountPath;
399
439
  ctx.entityId = `${entity.metadata?.annotations?.['kcp.io/cluster']}/${entityId}`;
400
440
  // update the node context of sa node to contain the entity for future context calculations
401
441
  entityNode.context.kcpPath = kcpPath;
402
442
  entityNode.context.entity = entity;
403
443
  entityNode.context.entityName = ctx.entityName;
404
444
  entityNode.context.entityId = ctx.entityId;
445
+ entityNode.context.accountPath = accountPath;
405
446
  }
406
447
  catch (e) {
407
448
  console.error(`Not able to read entity ${entityId} from ${operation}`);
@@ -1 +1 @@
1
- {"version":3,"file":"platform-mesh-portal-ui-lib-portal-options.mjs","sources":["../../projects/lib/portal-options/models/constants.ts","../../projects/lib/portal-options/services/custom-global-nodes.service.ts","../../projects/lib/portal-options/services/header-bar-renderers/namespace-selection-renderer.service.ts","../../projects/lib/portal-options/services/header-bar-renderers/breadcrumb-renderer.ts","../../projects/lib/portal-options/services/header-bar-config.service.ts","../../projects/lib/portal-options/services/luigi-extended-global-context-config.service.ts","../../projects/lib/portal-options/services/crd-gateway-kcp-patch-resolver.service.ts","../../projects/lib/portal-options/services/node-change-hook-config.service.ts","../../projects/lib/portal-options/services/node-context-processing.service.ts","../../projects/lib/portal-options/services/router-config.service.ts","../../projects/lib/portal-options/services/user-profile-config.service.ts","../../projects/lib/portal-options/platform-mesh-portal-ui-lib-portal-options.ts"],"sourcesContent":["export const kcpRootOrgsPath = 'root:orgs';\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { PortalNodeContext } from '../models/luigi-context';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { inject } from '@angular/core';\nimport {\n CustomGlobalNodesService,\n EntityType,\n I18nService,\n NodeContext,\n} from '@openmfp/portal-ui-lib';\n\nexport class CustomGlobalNodesServiceImpl implements CustomGlobalNodesService {\n private i18nService = inject(I18nService);\n\n async getCustomGlobalNodes(): Promise<PortalLuigiNode[]> {\n return [\n {\n label: 'PROFILE_ORGANIZATION_MANAGEMENT',\n pathSegment: 'organization-management',\n hideFromNav: true,\n hideSideNav: true,\n order: '1001',\n viewUrl:\n '/assets/platform-mesh-portal-ui-wc.js#organization-management',\n webcomponent: {\n selfRegistered: true,\n },\n context: {\n translationTable: this.i18nService.translationTable,\n kcpPath: kcpRootOrgsPath,\n } as PortalNodeContext,\n },\n {\n pathSegment: 'error',\n order: '1000',\n hideFromNav: true,\n context: {} as PortalNodeContext,\n children: [\n {\n pathSegment: ':id',\n entityType: EntityType.ENTITY_ERROR,\n hideFromNav: true,\n hideSideNav: true,\n viewUrl: '/assets/platform-mesh-portal-ui-wc.js#error-component',\n context: {\n id: ':id',\n translationTable: this.i18nService.translationTable,\n } as any as NodeContext,\n webcomponent: {\n selfRegistered: true,\n },\n },\n ],\n },\n {\n pathSegment: 'users',\n showBreadcrumbs: false,\n hideSideNav: true,\n hideFromNav: true,\n context: {} as PortalNodeContext,\n entityType: 'global',\n children: [\n {\n pathSegment: ':userId',\n hideSideNav: true,\n hideFromNav: true,\n defineEntity: {\n id: 'user',\n },\n context: {\n userId: ':userId',\n } as PortalNodeContext,\n children: [\n {\n pathSegment: 'overview',\n context: {} as PortalNodeContext,\n hideSideNav: true,\n hideFromNav: true,\n defineEntity: {\n id: 'overview',\n },\n compound: {\n children: [],\n },\n },\n ],\n },\n ],\n },\n ];\n }\n}\n","import { DestroyRef, Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AuthService,\n LuigiCoreService,\n LuigiNode,\n PortalConfig,\n} from '@openmfp/portal-ui-lib';\nimport { FieldDefinition, Resource } from '@platform-mesh/portal-ui-lib/models';\nimport {\n ResourceNodeContext,\n ResourceService,\n} from '@platform-mesh/portal-ui-lib/services';\nimport { generateGraphQLFields } from '@platform-mesh/portal-ui-lib/utils';\nimport '@ui5/webcomponents/dist/ComboBox.js';\nimport { Observable, of } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\n\nconst defaultColumns: FieldDefinition[] = [\n {\n label: 'Name',\n property: 'metadata.name',\n },\n];\n\n@Injectable({ providedIn: 'root' })\nexport class NamespaceSelectionRendererService {\n private namespaceResources$?: Observable<Resource[]>;\n\n private resourceService = inject(ResourceService);\n private authService = inject(AuthService);\n private luigiCoreService = inject(LuigiCoreService);\n private destroyRef = inject(DestroyRef);\n\n public create(portalConfig: PortalConfig) {\n return (containerElement: HTMLElement, nodeItems: any[], _clickHandler: any) => {\n containerElement.style.paddingBottom = '0.5rem';\n\n const lastNode = nodeItems.at(-1)?.node as LuigiNode | undefined;\n\n if (!this.isNamespacedNode(lastNode)) {\n return containerElement;\n }\n\n const ui5combobox = this.createCombobox(containerElement);\n const namespaceName = this.getNamespaceNodeName(lastNode);\n this.addComboboxItems(portalConfig, ui5combobox, namespaceName);\n\n ui5combobox.addEventListener('change', (event: any) => {\n const value = (event?.target as any)?.value ?? '';\n const selected = (value || '').trim();\n this.replacePathSegment(namespaceName, selected);\n });\n\n return ui5combobox as HTMLElement;\n };\n }\n\n private isNamespacedNode(node: LuigiNode | undefined) {\n return node?.context?.resourceDefinition?.scope === 'Namespaced';\n }\n\n private getNamespaceNodeName(node?: LuigiNode) {\n const namespacedNodeName = node?.navigationContext || '';\n const segments = window.location.pathname.split('/').filter(Boolean);\n const index = segments.indexOf(namespacedNodeName);\n\n return index > 0 ? segments[index - 1] : null;\n }\n\n private createCombobox(containerElement: HTMLElement) {\n const ui5combobox = document.createElement('ui5-combobox');\n ui5combobox.setAttribute('placeholder', 'Namespaces');\n containerElement.appendChild(ui5combobox);\n\n const allResourceOption = document.createElement('ui5-cb-item');\n allResourceOption.setAttribute('text', '-all-');\n ui5combobox.appendChild(allResourceOption);\n\n return ui5combobox;\n }\n\n private addComboboxItems(\n portalConfig: PortalConfig,\n ui5combobox: HTMLElement,\n namespaceName: string | null,\n ) {\n if (!this.namespaceResources$) {\n this.namespaceResources$ = this.getNamespaceResources(portalConfig).pipe(\n shareReplay(1),\n takeUntilDestroyed(this.destroyRef),\n );\n }\n\n this.namespaceResources$.subscribe((resources) => {\n resources.forEach((resource) => {\n const name = resource.metadata?.name;\n if (!name) {\n return;\n }\n const existingItem = Array.from(ui5combobox.children).find(\n (child) => (child as Element).getAttribute('text') === name,\n );\n\n if (existingItem) {\n return;\n }\n const resourceOption = document.createElement('ui5-cb-item');\n resourceOption.setAttribute('text', name);\n if (name === namespaceName) {\n ui5combobox.setAttribute('value', name);\n }\n ui5combobox.appendChild(resourceOption);\n });\n });\n }\n\n private getNamespaceResources(\n portalConfig: PortalConfig,\n ): Observable<Resource[]> {\n const operation = 'core_namespaces';\n const fields = generateGraphQLFields(defaultColumns);\n\n try {\n return this.resourceService.list(operation, fields, {\n portalContext: {\n crdGatewayApiUrl: portalConfig.portalContext['crdGatewayApiUrl'],\n },\n token: this.authService.getToken(),\n } as ResourceNodeContext);\n } catch (e) {\n console.error(`Failed to read entities from ${operation}`, e);\n return of([]);\n }\n }\n\n private replacePathSegment(name: string | null, newValue: string): void {\n if (!name || !newValue) {\n return;\n }\n const segments = window.location.pathname.split('/').filter(Boolean);\n const index = segments.indexOf(name);\n\n if (index !== -1) {\n segments[index] = newValue;\n const newPath = `/${segments.join('/')}`;\n\n this.luigiCoreService.navigation().navigate(newPath);\n } else {\n console.warn(`Segment \"${name}\" not found in path.`);\n }\n }\n}","import '@ui5/webcomponents/dist/Breadcrumbs.js';\nimport '@ui5/webcomponents/dist/BreadcrumbsItem.js';\n\nexport const breadcrumbRenderer = (\n containerElement: HTMLElement,\n nodeItems: any[],\n clickHandler: (item: any) => void,\n): HTMLElement => {\n containerElement.style.width = '100%';\n\n const ui5breadcrumbs = document.createElement('ui5-breadcrumbs');\n ui5breadcrumbs.setAttribute('separators', 'Slash');\n containerElement.appendChild(ui5breadcrumbs);\n\n nodeItems.forEach((item) => {\n if (item.node?.hideFromBreadcrumb) {\n return;\n }\n\n const itemCmp = document.createElement('ui5-breadcrumbs-item');\n itemCmp.textContent = item.label ?? '';\n (itemCmp as any)._item = item;\n ui5breadcrumbs.appendChild(itemCmp);\n });\n\n ui5breadcrumbs.addEventListener('item-click', (event: any) => {\n if (\n !(\n event.detail.ctrlKey ||\n event.detail.altKey ||\n event.detail.shiftKey ||\n event.detail.metaKey\n )\n ) {\n event.preventDefault();\n clickHandler(event.detail.item._item);\n }\n });\n\n return ui5breadcrumbs;\n};\n","import { Injectable, inject } from '@angular/core';\nimport {\n ConfigService,\n HeaderBarConfig,\n HeaderBarConfigService,\n} from '@openmfp/portal-ui-lib';\nimport { NamespaceSelectionRendererService } from './header-bar-renderers/namespace-selection-renderer.service';\nimport { breadcrumbRenderer } from './header-bar-renderers/breadcrumb-renderer';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HeaderBarConfigServiceImpl implements HeaderBarConfigService {\n private configService = inject(ConfigService);\n private namespaceSelectionRendererService = inject(NamespaceSelectionRendererService);\n\n public async getConfig(): Promise<HeaderBarConfig> {\n const portalConfig = await this.configService.getPortalConfig();\n\n return {\n pendingItemLabel: '...',\n omitRoot: false,\n clearBeforeRender: true,\n autoHide: true,\n leftRenderers: [breadcrumbRenderer],\n rightRenderers: [this.namespaceSelectionRendererService.create(portalConfig)],\n };\n }\n}\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { Injectable, inject } from '@angular/core';\nimport {\n AuthService,\n ConfigService,\n EnvConfigService,\n LuigiExtendedGlobalContextConfigService,\n} from '@openmfp/portal-ui-lib';\nimport { ResourceService } from '@platform-mesh/portal-ui-lib/services';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class LuigiExtendedGlobalContextConfigServiceImpl\n implements LuigiExtendedGlobalContextConfigService\n{\n private resourceService = inject(ResourceService);\n private envConfigService = inject(EnvConfigService);\n private configService = inject(ConfigService);\n private authService = inject(AuthService);\n\n async createLuigiExtendedGlobalContext(): Promise<Record<string, any>> {\n const portalConfig = await this.configService.getPortalConfig();\n const entityId = (await this.envConfigService.getEnvConfig()).idpName;\n const operation = 'core_platform_mesh_io';\n\n if (entityId === 'welcome') {\n return {};\n }\n\n try {\n const accountInfo = await firstValueFrom(\n this.resourceService.readAccountInfo({\n portalContext: {\n crdGatewayApiUrl: portalConfig.portalContext['crdGatewayApiUrl'],\n },\n token: this.authService.getToken(),\n accountId: entityId,\n }),\n );\n\n const organizationOriginClusterId =\n accountInfo?.spec?.organization?.originClusterId;\n if (!organizationOriginClusterId) {\n console.error(`AccountInfo organization id missing for: ${entityId}`);\n return {};\n }\n\n return {\n organization: entityId,\n organizationId: `${organizationOriginClusterId}/${entityId}`,\n kcpCA: btoa(accountInfo?.spec?.clusterInfo?.ca),\n kcpPath: `${kcpRootOrgsPath}:${entityId}`,\n entityId: `${organizationOriginClusterId}/${entityId}`, // if no entity selected the entityId is the same as the organizationId\n entityName: entityId,\n };\n } catch (e) {\n console.error(`Failed to read entity ${entityId} from ${operation}`, e);\n }\n return {};\n }\n}\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { Injectable, inject } from '@angular/core';\nimport { EnvConfigService } from '@openmfp/portal-ui-lib';\nimport { GatewayService } from '@platform-mesh/portal-ui-lib/services';\n\n@Injectable({ providedIn: 'root' })\nexport class CrdGatewayKcpPatchResolver {\n private gatewayService = inject(GatewayService);\n private envConfigService = inject(EnvConfigService);\n\n public async resolveCrdGatewayKcpPath(\n nextNode: PortalLuigiNode,\n entityId?: string,\n kind?: string,\n ) {\n if (nextNode.context?.kcpPath) {\n this.gatewayService.updateCrdGatewayUrlWithEntityPath(\n nextNode.context.kcpPath,\n );\n return nextNode.context.kcpPath;\n }\n\n let entityKcpPath = kind !== 'Account' || !entityId ? '' : `:${entityId}`;\n let node: PortalLuigiNode | undefined = nextNode;\n do {\n const entity = node?.context?.entity;\n if (entity?.metadata?.name && entity['__typename'] === 'Account') {\n entityKcpPath = `:${entity.metadata.name}${entityKcpPath}`;\n }\n node = node?.parent;\n } while (node);\n\n const org = (await this.envConfigService.getEnvConfig()).idpName;\n const kcpPath = `${kcpRootOrgsPath}:${org}${entityKcpPath}`;\n this.gatewayService.updateCrdGatewayUrlWithEntityPath(kcpPath);\n\n if (nextNode.context && !nextNode.context.kcpPath) {\n nextNode.context.kcpPath = kcpPath;\n }\n return kcpPath;\n }\n}\n","import { PortalLuigiNode } from '../models/luigi-node';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { Injectable, inject } from '@angular/core';\nimport {\n LuigiCoreService,\n NodeChangeHookConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class NodeChangeHookConfigServiceImpl\n implements NodeChangeHookConfigService\n{\n private luigiCoreService = inject(LuigiCoreService);\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\n\n nodeChangeHook(prevNode: PortalLuigiNode, nextNode: PortalLuigiNode) {\n if (\n nextNode.initialRoute &&\n nextNode.virtualTree &&\n !(nextNode as any)._virtualTree\n ) {\n this.luigiCoreService.navigation().navigate(nextNode.initialRoute);\n }\n\n this.crdGatewayKcpPatchResolver.resolveCrdGatewayKcpPath(nextNode);\n }\n}\n","import { PortalNodeContext } from '../models/luigi-context';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { Injectable, inject } from '@angular/core';\nimport { NodeContextProcessingService } from '@openmfp/portal-ui-lib';\nimport { ResourceService } from '@platform-mesh/portal-ui-lib/services';\nimport { replaceDotsAndHyphensWithUnderscores } from '@platform-mesh/portal-ui-lib/utils';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NodeContextProcessingServiceImpl\n implements NodeContextProcessingService\n{\n private resourceService = inject(ResourceService);\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\n\n public async processNodeContext(\n entityId: string,\n entityNode: PortalLuigiNode,\n ctx: PortalNodeContext,\n ) {\n const group = entityNode.defineEntity?.graphqlEntity?.group;\n const kind = entityNode.defineEntity?.graphqlEntity?.kind;\n const queryPart = entityNode.defineEntity?.graphqlEntity?.query;\n\n if (!entityId || !group || !kind || !queryPart) {\n return;\n }\n\n const kcpPath =\n await this.crdGatewayKcpPatchResolver.resolveCrdGatewayKcpPath(\n entityNode,\n entityId,\n kind,\n );\n\n const operation = replaceDotsAndHyphensWithUnderscores(group);\n const namespaceId =\n ctx.resourceDefinition?.scope === 'Namespaced'\n ? ctx.namespaceId\n : undefined;\n let query = `query ($name: String!) { ${operation} { ${kind}(name: $name) ${queryPart} }}`;\n if (namespaceId) {\n query = `query ($name: String!, $namespace: String!) { ${operation} { ${kind}(name: $name, namespace: $namespace) ${queryPart} }}`;\n }\n\n try {\n const entity = await firstValueFrom(\n this.resourceService.read(\n entityId,\n operation,\n kind,\n query,\n {\n resourceDefinition: ctx.resourceDefinition,\n portalContext: {\n crdGatewayApiUrl: ctx.portalContext.crdGatewayApiUrl,\n },\n token: ctx.token,\n namespaceId,\n },\n kind.toLowerCase() === 'account',\n ),\n );\n\n // update the current already calculated by Luigi context for a node\n ctx.kcpPath = kcpPath;\n ctx.entity = entity;\n ctx.entityName = entityId;\n ctx.entityId = `${entity.metadata?.annotations?.['kcp.io/cluster']}/${entityId}`;\n // update the node context of sa node to contain the entity for future context calculations\n entityNode.context.kcpPath = kcpPath;\n entityNode.context.entity = entity;\n entityNode.context.entityName = ctx.entityName;\n entityNode.context.entityId = ctx.entityId;\n } catch (e) {\n console.error(`Not able to read entity ${entityId} from ${operation}`);\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n ClientEnvironment,\n EnvConfigService,\n RoutingConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable()\nexport class CustomRoutingConfigServiceImpl implements RoutingConfigService {\n private envConfigService = inject(EnvConfigService);\n private envConfig: ClientEnvironment | null = null;\n\n constructor() {\n this.getEnvConfig();\n }\n\n async getEnvConfig(): Promise<void> {\n this.envConfig = await this.envConfigService.getEnvConfig();\n }\n\n getRoutingConfig(): any {\n return {\n pageNotFoundHandler: () => {\n if (!this.envConfig?.baseDomain) {\n return this.redirectTo('error/404');\n }\n\n if (window.location.hostname === this.envConfig.baseDomain) {\n return this.redirectTo('welcome');\n }\n\n return this.redirectTo('error/404');\n },\n };\n }\n\n public redirectTo(path: string): any {\n return {\n redirectTo: path,\n keepURL: true,\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n AuthService,\n UserProfile,\n UserProfileConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class UserProfileConfigServiceImpl implements UserProfileConfigService {\n private authService = inject(AuthService);\n async getProfile(): Promise<UserProfile> {\n const { userId } = this.authService.getUserInfo();\n\n return {\n items: [\n {\n label: 'PROFILE_PROFILE',\n icon: 'customer',\n link: `/users/${userId}/overview`,\n },\n {\n label: 'PROFILE_ORGANIZATION',\n icon: 'building',\n link: '/organization-management',\n openNodeInModal: {\n width: '360px',\n height: '260px',\n },\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform-mesh-portal-ui-lib-portal-options.mjs","sources":["../../projects/lib/portal-options/models/constants.ts","../../projects/lib/portal-options/services/custom-global-nodes.service.ts","../../projects/lib/portal-options/services/header-bar-renderers/namespace-selection-renderer.service.ts","../../projects/lib/portal-options/services/header-bar-renderers/breadcrumb-renderer.ts","../../projects/lib/portal-options/services/header-bar-config.service.ts","../../projects/lib/portal-options/services/luigi-extended-global-context-config.service.ts","../../projects/lib/portal-options/utils/account-hierarchy.util.ts","../../projects/lib/portal-options/services/account-path-resolver.service.ts","../../projects/lib/portal-options/services/crd-gateway-kcp-patch-resolver.service.ts","../../projects/lib/portal-options/services/node-change-hook-config.service.ts","../../projects/lib/portal-options/services/node-context-processing.service.ts","../../projects/lib/portal-options/services/router-config.service.ts","../../projects/lib/portal-options/services/user-profile-config.service.ts","../../projects/lib/portal-options/platform-mesh-portal-ui-lib-portal-options.ts"],"sourcesContent":["export const kcpRootOrgsPath = 'root:orgs';\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { PortalNodeContext } from '../models/luigi-context';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { inject } from '@angular/core';\nimport {\n CustomGlobalNodesService,\n EntityType,\n I18nService,\n NodeContext,\n} from '@openmfp/portal-ui-lib';\n\nexport class CustomGlobalNodesServiceImpl implements CustomGlobalNodesService {\n private i18nService = inject(I18nService);\n\n async getCustomGlobalNodes(): Promise<PortalLuigiNode[]> {\n return [\n {\n label: 'PROFILE_ORGANIZATION_MANAGEMENT',\n pathSegment: 'organization-management',\n hideFromNav: true,\n hideSideNav: true,\n order: '1001',\n viewUrl:\n '/assets/platform-mesh-portal-ui-wc.js#organization-management',\n webcomponent: {\n selfRegistered: true,\n },\n context: {\n translationTable: this.i18nService.translationTable,\n kcpPath: kcpRootOrgsPath,\n } as PortalNodeContext,\n },\n {\n pathSegment: 'error',\n order: '1000',\n hideFromNav: true,\n context: {} as PortalNodeContext,\n children: [\n {\n pathSegment: ':id',\n entityType: EntityType.ENTITY_ERROR,\n hideFromNav: true,\n hideSideNav: true,\n viewUrl: '/assets/platform-mesh-portal-ui-wc.js#error-component',\n context: {\n id: ':id',\n translationTable: this.i18nService.translationTable,\n } as any as NodeContext,\n webcomponent: {\n selfRegistered: true,\n },\n },\n ],\n },\n {\n pathSegment: 'users',\n showBreadcrumbs: false,\n hideSideNav: true,\n hideFromNav: true,\n context: {} as PortalNodeContext,\n entityType: 'global',\n children: [\n {\n pathSegment: ':userId',\n hideSideNav: true,\n hideFromNav: true,\n defineEntity: {\n id: 'user',\n },\n context: {\n userId: ':userId',\n } as PortalNodeContext,\n children: [\n {\n pathSegment: 'overview',\n context: {} as PortalNodeContext,\n hideSideNav: true,\n hideFromNav: true,\n defineEntity: {\n id: 'overview',\n },\n compound: {\n children: [],\n },\n },\n ],\n },\n ],\n },\n ];\n }\n}\n","import { DestroyRef, Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AuthService,\n LuigiCoreService,\n LuigiNode,\n PortalConfig,\n} from '@openmfp/portal-ui-lib';\nimport { FieldDefinition, Resource } from '@platform-mesh/portal-ui-lib/models';\nimport {\n ResourceNodeContext,\n ResourceService,\n} from '@platform-mesh/portal-ui-lib/services';\nimport { generateGraphQLFields } from '@platform-mesh/portal-ui-lib/utils';\nimport '@ui5/webcomponents/dist/ComboBox.js';\nimport { Observable, of } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\n\nconst defaultColumns: FieldDefinition[] = [\n {\n label: 'Name',\n property: 'metadata.name',\n },\n];\n\n@Injectable({ providedIn: 'root' })\nexport class NamespaceSelectionRendererService {\n private namespaceResources$?: Observable<Resource[]>;\n\n private resourceService = inject(ResourceService);\n private authService = inject(AuthService);\n private luigiCoreService = inject(LuigiCoreService);\n private destroyRef = inject(DestroyRef);\n\n public create(portalConfig: PortalConfig) {\n return (containerElement: HTMLElement, nodeItems: any[], _clickHandler: any) => {\n containerElement.style.paddingBottom = '0.5rem';\n\n const lastNode = nodeItems.at(-1)?.node as LuigiNode | undefined;\n\n if (!this.isNamespacedNode(lastNode)) {\n return containerElement;\n }\n\n const ui5combobox = this.createCombobox(containerElement);\n const namespaceName = this.getNamespaceNodeName(lastNode);\n this.addComboboxItems(portalConfig, ui5combobox, namespaceName);\n\n ui5combobox.addEventListener('change', (event: any) => {\n const value = (event?.target as any)?.value ?? '';\n const selected = (value || '').trim();\n this.replacePathSegment(namespaceName, selected);\n });\n\n return ui5combobox as HTMLElement;\n };\n }\n\n private isNamespacedNode(node: LuigiNode | undefined) {\n return node?.context?.resourceDefinition?.scope === 'Namespaced';\n }\n\n private getNamespaceNodeName(node?: LuigiNode) {\n const namespacedNodeName = node?.navigationContext || '';\n const segments = window.location.pathname.split('/').filter(Boolean);\n const index = segments.indexOf(namespacedNodeName);\n\n return index > 0 ? segments[index - 1] : null;\n }\n\n private createCombobox(containerElement: HTMLElement) {\n const ui5combobox = document.createElement('ui5-combobox');\n ui5combobox.setAttribute('placeholder', 'Namespaces');\n containerElement.appendChild(ui5combobox);\n\n const allResourceOption = document.createElement('ui5-cb-item');\n allResourceOption.setAttribute('text', '-all-');\n ui5combobox.appendChild(allResourceOption);\n\n return ui5combobox;\n }\n\n private addComboboxItems(\n portalConfig: PortalConfig,\n ui5combobox: HTMLElement,\n namespaceName: string | null,\n ) {\n if (!this.namespaceResources$) {\n this.namespaceResources$ = this.getNamespaceResources(portalConfig).pipe(\n shareReplay(1),\n takeUntilDestroyed(this.destroyRef),\n );\n }\n\n this.namespaceResources$.subscribe((resources) => {\n resources.forEach((resource) => {\n const name = resource.metadata?.name;\n if (!name) {\n return;\n }\n const existingItem = Array.from(ui5combobox.children).find(\n (child) => (child as Element).getAttribute('text') === name,\n );\n\n if (existingItem) {\n return;\n }\n const resourceOption = document.createElement('ui5-cb-item');\n resourceOption.setAttribute('text', name);\n if (name === namespaceName) {\n ui5combobox.setAttribute('value', name);\n }\n ui5combobox.appendChild(resourceOption);\n });\n });\n }\n\n private getNamespaceResources(\n portalConfig: PortalConfig,\n ): Observable<Resource[]> {\n const operation = 'core_namespaces';\n const fields = generateGraphQLFields(defaultColumns);\n\n try {\n return this.resourceService.list(operation, fields, {\n portalContext: {\n crdGatewayApiUrl: portalConfig.portalContext['crdGatewayApiUrl'],\n },\n token: this.authService.getToken(),\n } as ResourceNodeContext);\n } catch (e) {\n console.error(`Failed to read entities from ${operation}`, e);\n return of([]);\n }\n }\n\n private replacePathSegment(name: string | null, newValue: string): void {\n if (!name || !newValue) {\n return;\n }\n const segments = window.location.pathname.split('/').filter(Boolean);\n const index = segments.indexOf(name);\n\n if (index !== -1) {\n segments[index] = newValue;\n const newPath = `/${segments.join('/')}`;\n\n this.luigiCoreService.navigation().navigate(newPath);\n } else {\n console.warn(`Segment \"${name}\" not found in path.`);\n }\n }\n}","import '@ui5/webcomponents/dist/Breadcrumbs.js';\nimport '@ui5/webcomponents/dist/BreadcrumbsItem.js';\n\nexport const breadcrumbRenderer = (\n containerElement: HTMLElement,\n nodeItems: any[],\n clickHandler: (item: any) => void,\n): HTMLElement => {\n containerElement.style.width = '100%';\n\n const ui5breadcrumbs = document.createElement('ui5-breadcrumbs');\n ui5breadcrumbs.setAttribute('separators', 'Slash');\n containerElement.appendChild(ui5breadcrumbs);\n\n nodeItems.forEach((item) => {\n if (item.node?.hideFromBreadcrumb) {\n return;\n }\n\n const itemCmp = document.createElement('ui5-breadcrumbs-item');\n itemCmp.textContent = item.label ?? '';\n (itemCmp as any)._item = item;\n ui5breadcrumbs.appendChild(itemCmp);\n });\n\n ui5breadcrumbs.addEventListener('item-click', (event: any) => {\n if (\n !(\n event.detail.ctrlKey ||\n event.detail.altKey ||\n event.detail.shiftKey ||\n event.detail.metaKey\n )\n ) {\n event.preventDefault();\n clickHandler(event.detail.item._item);\n }\n });\n\n return ui5breadcrumbs;\n};\n","import { Injectable, inject } from '@angular/core';\nimport {\n ConfigService,\n HeaderBarConfig,\n HeaderBarConfigService,\n} from '@openmfp/portal-ui-lib';\nimport { NamespaceSelectionRendererService } from './header-bar-renderers/namespace-selection-renderer.service';\nimport { breadcrumbRenderer } from './header-bar-renderers/breadcrumb-renderer';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HeaderBarConfigServiceImpl implements HeaderBarConfigService {\n private configService = inject(ConfigService);\n private namespaceSelectionRendererService = inject(NamespaceSelectionRendererService);\n\n public async getConfig(): Promise<HeaderBarConfig> {\n const portalConfig = await this.configService.getPortalConfig();\n\n return {\n pendingItemLabel: '...',\n omitRoot: false,\n clearBeforeRender: true,\n autoHide: true,\n leftRenderers: [breadcrumbRenderer],\n rightRenderers: [this.namespaceSelectionRendererService.create(portalConfig)],\n };\n }\n}\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { Injectable, inject } from '@angular/core';\nimport {\n AuthService,\n ConfigService,\n EnvConfigService,\n LuigiExtendedGlobalContextConfigService,\n} from '@openmfp/portal-ui-lib';\nimport { ResourceService } from '@platform-mesh/portal-ui-lib/services';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class LuigiExtendedGlobalContextConfigServiceImpl\n implements LuigiExtendedGlobalContextConfigService\n{\n private resourceService = inject(ResourceService);\n private envConfigService = inject(EnvConfigService);\n private configService = inject(ConfigService);\n private authService = inject(AuthService);\n\n async createLuigiExtendedGlobalContext(): Promise<Record<string, any>> {\n const portalConfig = await this.configService.getPortalConfig();\n const entityId = (await this.envConfigService.getEnvConfig()).idpName;\n const operation = 'core_platform_mesh_io';\n\n if (entityId === 'welcome') {\n return {};\n }\n\n try {\n const accountInfo = await firstValueFrom(\n this.resourceService.readAccountInfo({\n portalContext: {\n crdGatewayApiUrl: portalConfig.portalContext['crdGatewayApiUrl'],\n },\n token: this.authService.getToken(),\n accountId: entityId,\n }),\n );\n\n const organizationOriginClusterId =\n accountInfo?.spec?.organization?.originClusterId;\n if (!organizationOriginClusterId) {\n console.error(`AccountInfo organization id missing for: ${entityId}`);\n return {};\n }\n\n return {\n organization: entityId,\n organizationId: `${organizationOriginClusterId}/${entityId}`,\n kcpCA: btoa(accountInfo?.spec?.clusterInfo?.ca),\n kcpPath: `${kcpRootOrgsPath}:${entityId}`,\n entityId: `${organizationOriginClusterId}/${entityId}`, // if no entity selected the entityId is the same as the organizationId\n entityName: entityId,\n };\n } catch (e) {\n console.error(`Failed to read entity ${entityId} from ${operation}`, e);\n }\n return {};\n }\n}\n","import { PortalLuigiNode } from '../models/luigi-node';\n\nexport function collectAccountNamesFromHierarchy(\n node: PortalLuigiNode | undefined,\n): string[] {\n const accountNames: string[] = [];\n let currentNode: PortalLuigiNode | undefined = node;\n\n while (currentNode) {\n const entity = currentNode.context?.entity;\n if (entity?.metadata?.name && entity['__typename'] === 'Account') {\n accountNames.unshift(entity.metadata.name);\n }\n currentNode = currentNode.parent;\n }\n\n return accountNames;\n}\n\nexport function getInitialAccountId(\n entityId?: string,\n kind?: string,\n): string | undefined {\n return kind === 'Account' && entityId ? entityId : undefined;\n}\n","import { PortalLuigiNode } from '../models/luigi-node';\nimport {\n collectAccountNamesFromHierarchy,\n getInitialAccountId,\n} from '../utils/account-hierarchy.util';\nimport { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class AccountPathResolverService {\n public resolveAccountHierarchy(\n entityNode: PortalLuigiNode,\n entityId?: string,\n kind?: string,\n ): string {\n if (entityNode.context?.accountPath) {\n return entityNode.context.accountPath;\n }\n\n const accountNames = collectAccountNamesFromHierarchy(entityNode);\n const initialId = getInitialAccountId(entityId, kind);\n\n if (initialId) {\n accountNames.push(initialId);\n }\n\n const path = accountNames.join(':');\n entityNode.context.accountPath = path;\n return path;\n }\n}\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport {\n collectAccountNamesFromHierarchy,\n getInitialAccountId,\n} from '../utils/account-hierarchy.util';\nimport { Injectable, inject } from '@angular/core';\nimport { EnvConfigService } from '@openmfp/portal-ui-lib';\nimport { GatewayService } from '@platform-mesh/portal-ui-lib/services';\n\n@Injectable({ providedIn: 'root' })\nexport class CrdGatewayKcpPatchResolver {\n private gatewayService = inject(GatewayService);\n private envConfigService = inject(EnvConfigService);\n\n public async resolveCrdGatewayKcpPath(\n nextNode: PortalLuigiNode,\n entityId?: string,\n kind?: string,\n ) {\n if (nextNode.context?.kcpPath) {\n this.gatewayService.updateCrdGatewayUrlWithEntityPath(\n nextNode.context.kcpPath,\n );\n return nextNode.context.kcpPath;\n }\n\n const accountNames = collectAccountNamesFromHierarchy(nextNode);\n const initialId = getInitialAccountId(entityId, kind);\n\n if (initialId) {\n accountNames.push(initialId);\n }\n\n const entityKcpPath =\n accountNames.length > 0 ? `:${accountNames.join(':')}` : '';\n\n const org = (await this.envConfigService.getEnvConfig()).idpName;\n const kcpPath = `${kcpRootOrgsPath}:${org}${entityKcpPath}`;\n this.gatewayService.updateCrdGatewayUrlWithEntityPath(kcpPath);\n\n if (nextNode.context && !nextNode.context.kcpPath) {\n nextNode.context.kcpPath = kcpPath;\n }\n return kcpPath;\n }\n}\n","import { PortalLuigiNode } from '../models/luigi-node';\nimport { AccountPathResolverService } from './account-path-resolver.service';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { Injectable, inject } from '@angular/core';\nimport {\n LuigiCoreService,\n NodeChangeHookConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class NodeChangeHookConfigServiceImpl implements NodeChangeHookConfigService {\n private luigiCoreService = inject(LuigiCoreService);\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\n private accountPathResolverService = inject(AccountPathResolverService);\n\n nodeChangeHook(prevNode: PortalLuigiNode, nextNode: PortalLuigiNode) {\n if (\n nextNode.initialRoute &&\n nextNode.virtualTree &&\n !(nextNode as any)._virtualTree\n ) {\n this.luigiCoreService.navigation().navigate(nextNode.initialRoute);\n }\n\n this.crdGatewayKcpPatchResolver.resolveCrdGatewayKcpPath(nextNode);\n this.accountPathResolverService.resolveAccountHierarchy(nextNode);\n }\n}\n","import { PortalNodeContext } from '../models/luigi-context';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { AccountPathResolverService } from './account-path-resolver.service';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { Injectable, inject } from '@angular/core';\nimport { NodeContextProcessingService } from '@openmfp/portal-ui-lib';\nimport { ResourceService } from '@platform-mesh/portal-ui-lib/services';\nimport { replaceDotsAndHyphensWithUnderscores } from '@platform-mesh/portal-ui-lib/utils';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NodeContextProcessingServiceImpl implements NodeContextProcessingService {\n private resourceService = inject(ResourceService);\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\n private accountPathResolver = inject(AccountPathResolverService);\n\n public async processNodeContext(\n entityId: string,\n entityNode: PortalLuigiNode,\n ctx: PortalNodeContext,\n ) {\n const group = entityNode.defineEntity?.graphqlEntity?.group;\n const kind = entityNode.defineEntity?.graphqlEntity?.kind;\n const queryPart = entityNode.defineEntity?.graphqlEntity?.query;\n\n if (!entityId || !group || !kind || !queryPart) {\n return;\n }\n\n const kcpPath =\n await this.crdGatewayKcpPatchResolver.resolveCrdGatewayKcpPath(\n entityNode,\n entityId,\n kind,\n );\n\n const operation = replaceDotsAndHyphensWithUnderscores(group);\n const namespaceId =\n ctx.resourceDefinition?.scope === 'Namespaced'\n ? ctx.namespaceId\n : undefined;\n let query = `query ($name: String!) { ${operation} { ${kind}(name: $name) ${queryPart} }}`;\n if (namespaceId) {\n query = `query ($name: String!, $namespace: String!) { ${operation} { ${kind}(name: $name, namespace: $namespace) ${queryPart} }}`;\n }\n\n const accountPath =\n this.accountPathResolver.resolveAccountHierarchy(\n entityNode,\n entityId,\n kind,\n );\n\n try {\n const entity = await firstValueFrom(\n this.resourceService.read(\n entityId,\n operation,\n kind,\n query,\n {\n resourceDefinition: ctx.resourceDefinition,\n portalContext: {\n crdGatewayApiUrl: ctx.portalContext.crdGatewayApiUrl,\n },\n token: ctx.token,\n namespaceId,\n },\n kind.toLowerCase() === 'account',\n ),\n );\n\n // update the current already calculated by Luigi context for a node\n ctx.kcpPath = kcpPath;\n ctx.entity = entity;\n ctx.entityName = entityId;\n ctx.accountPath = accountPath;\n ctx.entityId = `${entity.metadata?.annotations?.['kcp.io/cluster']}/${entityId}`;\n // update the node context of sa node to contain the entity for future context calculations\n entityNode.context.kcpPath = kcpPath;\n entityNode.context.entity = entity;\n entityNode.context.entityName = ctx.entityName;\n entityNode.context.entityId = ctx.entityId;\n entityNode.context.accountPath = accountPath;\n } catch (e) {\n console.error(`Not able to read entity ${entityId} from ${operation}`);\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n ClientEnvironment,\n EnvConfigService,\n RoutingConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable()\nexport class CustomRoutingConfigServiceImpl implements RoutingConfigService {\n private envConfigService = inject(EnvConfigService);\n private envConfig: ClientEnvironment | null = null;\n\n constructor() {\n this.getEnvConfig();\n }\n\n async getEnvConfig(): Promise<void> {\n this.envConfig = await this.envConfigService.getEnvConfig();\n }\n\n getRoutingConfig(): any {\n return {\n pageNotFoundHandler: () => {\n if (!this.envConfig?.baseDomain) {\n return this.redirectTo('error/404');\n }\n\n if (window.location.hostname === this.envConfig.baseDomain) {\n return this.redirectTo('welcome');\n }\n\n return this.redirectTo('error/404');\n },\n };\n }\n\n public redirectTo(path: string): any {\n return {\n redirectTo: path,\n keepURL: true,\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n AuthService,\n UserProfile,\n UserProfileConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class UserProfileConfigServiceImpl implements UserProfileConfigService {\n private authService = inject(AuthService);\n async getProfile(): Promise<UserProfile> {\n const { userId } = this.authService.getUserInfo();\n\n return {\n items: [\n {\n label: 'PROFILE_PROFILE',\n icon: 'customer',\n link: `/users/${userId}/overview`,\n },\n {\n label: 'PROFILE_ORGANIZATION',\n icon: 'building',\n link: '/organization-management',\n openNodeInModal: {\n width: '360px',\n height: '260px',\n },\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;AAAO,MAAM,eAAe,GAAG,WAAW;;MCW7B,4BAA4B,CAAA;AAAzC,IAAA,WAAA,GAAA;AACU,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IA+E3C;AA7EE,IAAA,MAAM,oBAAoB,GAAA;QACxB,OAAO;AACL,YAAA;AACE,gBAAA,KAAK,EAAE,iCAAiC;AACxC,gBAAA,WAAW,EAAE,yBAAyB;AACtC,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,OAAO,EACL,+DAA+D;AACjE,gBAAA,YAAY,EAAE;AACZ,oBAAA,cAAc,EAAE,IAAI;AACrB,iBAAA;AACD,gBAAA,OAAO,EAAE;AACP,oBAAA,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,gBAAgB;AACnD,oBAAA,OAAO,EAAE,eAAe;AACJ,iBAAA;AACvB,aAAA;AACD,YAAA;AACE,gBAAA,WAAW,EAAE,OAAO;AACpB,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,EAAuB;AAChC,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,WAAW,EAAE,KAAK;wBAClB,UAAU,EAAE,UAAU,CAAC,YAAY;AACnC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,OAAO,EAAE,uDAAuD;AAChE,wBAAA,OAAO,EAAE;AACP,4BAAA,EAAE,EAAE,KAAK;AACT,4BAAA,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,gBAAgB;AAC9B,yBAAA;AACvB,wBAAA,YAAY,EAAE;AACZ,4BAAA,cAAc,EAAE,IAAI;AACrB,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,WAAW,EAAE,OAAO;AACpB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,EAAuB;AAChC,gBAAA,UAAU,EAAE,QAAQ;AACpB,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,WAAW,EAAE,SAAS;AACtB,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,YAAY,EAAE;AACZ,4BAAA,EAAE,EAAE,MAAM;AACX,yBAAA;AACD,wBAAA,OAAO,EAAE;AACP,4BAAA,MAAM,EAAE,SAAS;AACG,yBAAA;AACtB,wBAAA,QAAQ,EAAE;AACR,4BAAA;AACE,gCAAA,WAAW,EAAE,UAAU;AACvB,gCAAA,OAAO,EAAE,EAAuB;AAChC,gCAAA,WAAW,EAAE,IAAI;AACjB,gCAAA,WAAW,EAAE,IAAI;AACjB,gCAAA,YAAY,EAAE;AACZ,oCAAA,EAAE,EAAE,UAAU;AACf,iCAAA;AACD,gCAAA,QAAQ,EAAE;AACR,oCAAA,QAAQ,EAAE,EAAE;AACb,iCAAA;AACF,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;IACH;AACD;;ACxED,MAAM,cAAc,GAAsB;AACxC,IAAA;AACE,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,QAAQ,EAAE,eAAe;AAC1B,KAAA;CACF;MAGY,iCAAiC,CAAA;AAD9C,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAwHxC,IAAA;AAtHQ,IAAA,MAAM,CAAC,YAA0B,EAAA;AACtC,QAAA,OAAO,CAAC,gBAA6B,EAAE,SAAgB,EAAE,aAAkB,KAAI;AAC7E,YAAA,gBAAgB,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ;YAE/C,MAAM,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAA6B;YAEhE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;AACpC,gBAAA,OAAO,gBAAgB;YACzB;YAEA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;YACzD,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YACzD,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,CAAC;YAE/D,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAU,KAAI;gBACpD,MAAM,KAAK,GAAI,KAAK,EAAE,MAAc,EAAE,KAAK,IAAI,EAAE;gBACjD,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE;AACrC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,QAAQ,CAAC;AAClD,YAAA,CAAC,CAAC;AAEF,YAAA,OAAO,WAA0B;AACnC,QAAA,CAAC;IACH;AAEQ,IAAA,gBAAgB,CAAC,IAA2B,EAAA;QAClD,OAAO,IAAI,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,KAAK,YAAY;IAClE;AAEQ,IAAA,oBAAoB,CAAC,IAAgB,EAAA;AAC3C,QAAA,MAAM,kBAAkB,GAAG,IAAI,EAAE,iBAAiB,IAAI,EAAE;AACxD,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAElD,QAAA,OAAO,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI;IAC/C;AAEQ,IAAA,cAAc,CAAC,gBAA6B,EAAA;QAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC;AAC1D,QAAA,WAAW,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC;AACrD,QAAA,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC;QAEzC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC;AAC/D,QAAA,iBAAiB,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;AAC/C,QAAA,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC;AAE1C,QAAA,OAAO,WAAW;IACpB;AAEQ,IAAA,gBAAgB,CACtB,YAA0B,EAC1B,WAAwB,EACxB,aAA4B,EAAA;AAE5B,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,IAAI,CACtE,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CACpC;QACH;QAEA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;AAC/C,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AAC7B,gBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI;gBACpC,IAAI,CAAC,IAAI,EAAE;oBACT;gBACF;gBACA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CACxD,CAAC,KAAK,KAAM,KAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,CAC5D;gBAED,IAAI,YAAY,EAAE;oBAChB;gBACF;gBACA,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC;AAC5D,gBAAA,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;AACzC,gBAAA,IAAI,IAAI,KAAK,aAAa,EAAE;AAC1B,oBAAA,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC;gBACzC;AACA,gBAAA,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC;AACzC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,qBAAqB,CAC3B,YAA0B,EAAA;QAE1B,MAAM,SAAS,GAAG,iBAAiB;AACnC,QAAA,MAAM,MAAM,GAAG,qBAAqB,CAAC,cAAc,CAAC;AAEpD,QAAA,IAAI;YACF,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;AAClD,gBAAA,aAAa,EAAE;AACb,oBAAA,gBAAgB,EAAE,YAAY,CAAC,aAAa,CAAC,kBAAkB,CAAC;AACjE,iBAAA;AACD,gBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AACZ,aAAA,CAAC;QAC3B;QAAE,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,CAAA,6BAAA,EAAgC,SAAS,CAAA,CAAE,EAAE,CAAC,CAAC;AAC7D,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC;QACf;IACF;IAEQ,kBAAkB,CAAC,IAAmB,EAAE,QAAgB,EAAA;AAC9D,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACtB;QACF;AACA,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AAEpC,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,YAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ;YAC1B,MAAM,OAAO,GAAG,CAAA,CAAA,EAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE;YAExC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtD;aAAO;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,CAAA,oBAAA,CAAsB,CAAC;QACtD;IACF;+GA7HW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iCAAiC,cADpB,MAAM,EAAA,CAAA,CAAA;;4FACnB,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACvB3B,MAAM,kBAAkB,GAAG,CAChC,gBAA6B,EAC7B,SAAgB,EAChB,YAAiC,KAClB;AACf,IAAA,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;IAErC,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC;AAChE,IAAA,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC;AAClD,IAAA,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC;AAE5C,IAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACzB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE;YACjC;QACF;QAEA,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC;QAC9D,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;AACrC,QAAA,OAAe,CAAC,KAAK,GAAG,IAAI;AAC7B,QAAA,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC;AACrC,IAAA,CAAC,CAAC;IAEF,cAAc,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,KAAU,KAAI;AAC3D,QAAA,IACE,EACE,KAAK,CAAC,MAAM,CAAC,OAAO;YACpB,KAAK,CAAC,MAAM,CAAC,MAAM;YACnB,KAAK,CAAC,MAAM,CAAC,QAAQ;AACrB,YAAA,KAAK,CAAC,MAAM,CAAC,OAAO,CACrB,EACD;YACA,KAAK,CAAC,cAAc,EAAE;YACtB,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACvC;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,cAAc;AACvB,CAAC;;MC5BY,0BAA0B,CAAA;AAHvC,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,iCAAiC,GAAG,MAAM,CAAC,iCAAiC,CAAC;AActF,IAAA;AAZQ,IAAA,MAAM,SAAS,GAAA;QACpB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE;QAE/D,OAAO;AACL,YAAA,gBAAgB,EAAE,KAAK;AACvB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,QAAQ,EAAE,IAAI;YACd,aAAa,EAAE,CAAC,kBAAkB,CAAC;YACnC,cAAc,EAAE,CAAC,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SAC9E;IACH;+GAfW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFzB,MAAM,EAAA,CAAA,CAAA;;4FAEP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCCY,2CAA2C,CAAA;AADxD,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AA0C1C,IAAA;AAxCC,IAAA,MAAM,gCAAgC,GAAA;QACpC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE;AAC/D,QAAA,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,OAAO;QACrE,MAAM,SAAS,GAAG,uBAAuB;AAEzC,QAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,IAAI;YACF,MAAM,WAAW,GAAG,MAAM,cAAc,CACtC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;AACnC,gBAAA,aAAa,EAAE;AACb,oBAAA,gBAAgB,EAAE,YAAY,CAAC,aAAa,CAAC,kBAAkB,CAAC;AACjE,iBAAA;AACD,gBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAClC,gBAAA,SAAS,EAAE,QAAQ;AACpB,aAAA,CAAC,CACH;YAED,MAAM,2BAA2B,GAC/B,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe;YAClD,IAAI,CAAC,2BAA2B,EAAE;AAChC,gBAAA,OAAO,CAAC,KAAK,CAAC,4CAA4C,QAAQ,CAAA,CAAE,CAAC;AACrE,gBAAA,OAAO,EAAE;YACX;YAEA,OAAO;AACL,gBAAA,YAAY,EAAE,QAAQ;AACtB,gBAAA,cAAc,EAAE,CAAA,EAAG,2BAA2B,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE;gBAC5D,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC;AAC/C,gBAAA,OAAO,EAAE,CAAA,EAAG,eAAe,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE;AACzC,gBAAA,QAAQ,EAAE,CAAA,EAAG,2BAA2B,IAAI,QAAQ,CAAA,CAAE;AACtD,gBAAA,UAAU,EAAE,QAAQ;aACrB;QACH;QAAE,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,CAAA,sBAAA,EAAyB,QAAQ,CAAA,MAAA,EAAS,SAAS,CAAA,CAAE,EAAE,CAAC,CAAC;QACzE;AACA,QAAA,OAAO,EAAE;IACX;+GA/CW,2CAA2C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3C,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2CAA2C,cAD9B,MAAM,EAAA,CAAA,CAAA;;4FACnB,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBADvD,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACT5B,SAAU,gCAAgC,CAC9C,IAAiC,EAAA;IAEjC,MAAM,YAAY,GAAa,EAAE;IACjC,IAAI,WAAW,GAAgC,IAAI;IAEnD,OAAO,WAAW,EAAE;AAClB,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM;AAC1C,QAAA,IAAI,MAAM,EAAE,QAAQ,EAAE,IAAI,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE;YAChE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC5C;AACA,QAAA,WAAW,GAAG,WAAW,CAAC,MAAM;IAClC;AAEA,IAAA,OAAO,YAAY;AACrB;AAEM,SAAU,mBAAmB,CACjC,QAAiB,EACjB,IAAa,EAAA;AAEb,IAAA,OAAO,IAAI,KAAK,SAAS,IAAI,QAAQ,GAAG,QAAQ,GAAG,SAAS;AAC9D;;MChBa,0BAA0B,CAAA;AAC9B,IAAA,uBAAuB,CAC5B,UAA2B,EAC3B,QAAiB,EACjB,IAAa,EAAA;AAEb,QAAA,IAAI,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE;AACnC,YAAA,OAAO,UAAU,CAAC,OAAO,CAAC,WAAW;QACvC;AAEA,QAAA,MAAM,YAAY,GAAG,gCAAgC,CAAC,UAAU,CAAC;QACjE,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC;QAErD,IAAI,SAAS,EAAE;AACb,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9B;QAEA,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC,QAAA,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI;AACrC,QAAA,OAAO,IAAI;IACb;+GApBW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cADb,MAAM,EAAA,CAAA,CAAA;;4FACnB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCIrB,0BAA0B,CAAA;AADvC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAiCpD,IAAA;AA/BQ,IAAA,MAAM,wBAAwB,CACnC,QAAyB,EACzB,QAAiB,EACjB,IAAa,EAAA;AAEb,QAAA,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,iCAAiC,CACnD,QAAQ,CAAC,OAAO,CAAC,OAAO,CACzB;AACD,YAAA,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO;QACjC;AAEA,QAAA,MAAM,YAAY,GAAG,gCAAgC,CAAC,QAAQ,CAAC;QAC/D,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC;QAErD,IAAI,SAAS,EAAE;AACb,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9B;QAEA,MAAM,aAAa,GACjB,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,CAAA,CAAA,EAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;AAE7D,QAAA,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,OAAO;QAChE,MAAM,OAAO,GAAG,CAAA,EAAG,eAAe,IAAI,GAAG,CAAA,EAAG,aAAa,CAAA,CAAE;AAC3D,QAAA,IAAI,CAAC,cAAc,CAAC,iCAAiC,CAAC,OAAO,CAAC;QAE9D,IAAI,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;AACjD,YAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO;QACpC;AACA,QAAA,OAAO,OAAO;IAChB;+GAlCW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cADb,MAAM,EAAA,CAAA,CAAA;;4FACnB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCArB,+BAA+B,CAAA;AAD5C,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,0BAA0B,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAC/D,QAAA,IAAA,CAAA,0BAA0B,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAcxE,IAAA;IAZC,cAAc,CAAC,QAAyB,EAAE,QAAyB,EAAA;QACjE,IACE,QAAQ,CAAC,YAAY;AACrB,YAAA,QAAQ,CAAC,WAAW;AACpB,YAAA,CAAE,QAAgB,CAAC,YAAY,EAC/B;AACA,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;QACpE;AAEA,QAAA,IAAI,CAAC,0BAA0B,CAAC,wBAAwB,CAAC,QAAQ,CAAC;AAClE,QAAA,IAAI,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,QAAQ,CAAC;IACnE;+GAhBW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,cADlB,MAAM,EAAA,CAAA,CAAA;;4FACnB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCIrB,gCAAgC,CAAA;AAH7C,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,0BAA0B,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAC/D,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,0BAA0B,CAAC;AA0EjE,IAAA;AAxEQ,IAAA,MAAM,kBAAkB,CAC7B,QAAgB,EAChB,UAA2B,EAC3B,GAAsB,EAAA;QAEtB,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK;QAC3D,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI;QACzD,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK;AAE/D,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;YAC9C;QACF;AAEA,QAAA,MAAM,OAAO,GACX,MAAM,IAAI,CAAC,0BAA0B,CAAC,wBAAwB,CAC5D,UAAU,EACV,QAAQ,EACR,IAAI,CACL;AAEH,QAAA,MAAM,SAAS,GAAG,oCAAoC,CAAC,KAAK,CAAC;QAC7D,MAAM,WAAW,GACf,GAAG,CAAC,kBAAkB,EAAE,KAAK,KAAK;cAC9B,GAAG,CAAC;cACJ,SAAS;QACf,IAAI,KAAK,GAAG,CAAA,yBAAA,EAA4B,SAAS,MAAM,IAAI,CAAA,cAAA,EAAiB,SAAS,CAAA,GAAA,CAAK;QAC1F,IAAI,WAAW,EAAE;YACf,KAAK,GAAG,iDAAiD,SAAS,CAAA,GAAA,EAAM,IAAI,CAAA,qCAAA,EAAwC,SAAS,KAAK;QACpI;AAEA,QAAA,MAAM,WAAW,GACf,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAC9C,UAAU,EACV,QAAQ,EACR,IAAI,CACL;AAEH,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,KAAK,EACL;gBACE,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;AAC1C,gBAAA,aAAa,EAAE;AACb,oBAAA,gBAAgB,EAAE,GAAG,CAAC,aAAa,CAAC,gBAAgB;AACrD,iBAAA;gBACD,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,WAAW;aACZ,EACD,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CACjC,CACF;;AAGD,YAAA,GAAG,CAAC,OAAO,GAAG,OAAO;AACrB,YAAA,GAAG,CAAC,MAAM,GAAG,MAAM;AACnB,YAAA,GAAG,CAAC,UAAU,GAAG,QAAQ;AACzB,YAAA,GAAG,CAAC,WAAW,GAAG,WAAW;AAC7B,YAAA,GAAG,CAAC,QAAQ,GAAG,CAAA,EAAG,MAAM,CAAC,QAAQ,EAAE,WAAW,GAAG,gBAAgB,CAAC,CAAA,CAAA,EAAI,QAAQ,EAAE;;AAEhF,YAAA,UAAU,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO;AACpC,YAAA,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM;YAClC,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;YAC9C,UAAU,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ;AAC1C,YAAA,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW;QAC9C;QAAE,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,CAAA,wBAAA,EAA2B,QAAQ,CAAA,MAAA,EAAS,SAAS,CAAA,CAAE,CAAC;QACxE;IACF;+GA5EW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,cAF/B,MAAM,EAAA,CAAA,CAAA;;4FAEP,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAH5C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCJY,8BAA8B,CAAA;AAIzC,IAAA,WAAA,GAAA;AAHQ,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC3C,IAAA,CAAA,SAAS,GAA6B,IAAI;QAGhD,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA,IAAA,MAAM,YAAY,GAAA;QAChB,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;IAC7D;IAEA,gBAAgB,GAAA;QACd,OAAO;YACL,mBAAmB,EAAE,MAAK;AACxB,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;AAC/B,oBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;gBACrC;AAEA,gBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAC1D,oBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBACnC;AAEA,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YACrC,CAAC;SACF;IACH;AAEO,IAAA,UAAU,CAAC,IAAY,EAAA;QAC5B,OAAO;AACL,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,OAAO,EAAE,IAAI;SACd;IACH;+GAjCW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAA9B,8BAA8B,EAAA,CAAA,CAAA;;4FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C;;;MCCY,4BAA4B,CAAA;AADzC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAuB1C,IAAA;AAtBC,IAAA,MAAM,UAAU,GAAA;QACd,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;QAEjD,OAAO;AACL,YAAA,KAAK,EAAE;AACL,gBAAA;AACE,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,CAAA,OAAA,EAAU,MAAM,CAAA,SAAA,CAAW;AAClC,iBAAA;AACD,gBAAA;AACE,oBAAA,KAAK,EAAE,sBAAsB;AAC7B,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,IAAI,EAAE,0BAA0B;AAChC,oBAAA,eAAe,EAAE;AACf,wBAAA,KAAK,EAAE,OAAO;AACd,wBAAA,MAAM,EAAE,OAAO;AAChB,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;IACH;+GAvBW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,cADf,MAAM,EAAA,CAAA,CAAA;;4FACnB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACPlC;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platform-mesh/portal-ui-lib",
3
- "version": "0.24.4",
3
+ "version": "0.24.6",
4
4
  "repository": {
5
5
  "url": "git+https://github.com/platform-mesh/portal-ui-lib.git"
6
6
  },
@@ -11,7 +11,7 @@
11
11
  "tslib": "2.8.1"
12
12
  },
13
13
  "peerDependencies": {
14
- "@openmfp/portal-ui-lib": "0.184.23"
14
+ "@openmfp/portal-ui-lib": "0.185.0"
15
15
  },
16
16
  "module": "fesm2022/platform-mesh-portal-ui-lib.mjs",
17
17
  "typings": "index.d.ts",
@@ -52,6 +52,7 @@ declare class LuigiExtendedGlobalContextConfigServiceImpl implements LuigiExtend
52
52
  declare class NodeChangeHookConfigServiceImpl implements NodeChangeHookConfigService {
53
53
  private luigiCoreService;
54
54
  private crdGatewayKcpPatchResolver;
55
+ private accountPathResolverService;
55
56
  nodeChangeHook(prevNode: PortalLuigiNode, nextNode: PortalLuigiNode): void;
56
57
  static ɵfac: i0.ɵɵFactoryDeclaration<NodeChangeHookConfigServiceImpl, never>;
57
58
  static ɵprov: i0.ɵɵInjectableDeclaration<NodeChangeHookConfigServiceImpl>;
@@ -60,6 +61,7 @@ declare class NodeChangeHookConfigServiceImpl implements NodeChangeHookConfigSer
60
61
  declare class NodeContextProcessingServiceImpl implements NodeContextProcessingService {
61
62
  private resourceService;
62
63
  private crdGatewayKcpPatchResolver;
64
+ private accountPathResolver;
63
65
  processNodeContext(entityId: string, entityNode: PortalLuigiNode, ctx: PortalNodeContext): Promise<void>;
64
66
  static ɵfac: i0.ɵɵFactoryDeclaration<NodeContextProcessingServiceImpl, never>;
65
67
  static ɵprov: i0.ɵɵInjectableDeclaration<NodeContextProcessingServiceImpl>;