@platform-mesh/portal-ui-lib 0.21.14 → 0.21.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/platform-mesh-portal-ui-wc.js +33 -33
- package/fesm2022/platform-mesh-portal-ui-lib-portal-options.mjs +25 -3
- package/fesm2022/platform-mesh-portal-ui-lib-portal-options.mjs.map +1 -1
- package/fesm2022/platform-mesh-portal-ui-lib-utils.mjs +2 -1
- package/fesm2022/platform-mesh-portal-ui-lib-utils.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, DestroyRef, Injectable } from '@angular/core';
|
|
3
|
-
import { I18nService, AuthService, LuigiCoreService, ConfigService, EnvConfigService } from '@openmfp/portal-ui-lib';
|
|
3
|
+
import { I18nService, EntityType, AuthService, LuigiCoreService, ConfigService, EnvConfigService } from '@openmfp/portal-ui-lib';
|
|
4
4
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
5
|
import { ResourceService, GatewayService } from '@platform-mesh/portal-ui-lib/services';
|
|
6
6
|
import { generateGraphQLFields, replaceDotsAndHyphensWithUnderscores } from '@platform-mesh/portal-ui-lib/utils';
|
|
@@ -33,6 +33,28 @@ class CustomGlobalNodesServiceImpl {
|
|
|
33
33
|
kcpPath: kcpRootOrgsPath,
|
|
34
34
|
},
|
|
35
35
|
},
|
|
36
|
+
{
|
|
37
|
+
pathSegment: 'error',
|
|
38
|
+
order: '1000',
|
|
39
|
+
hideFromNav: true,
|
|
40
|
+
context: {},
|
|
41
|
+
children: [
|
|
42
|
+
{
|
|
43
|
+
pathSegment: ':id',
|
|
44
|
+
entityType: EntityType.ENTITY_ERROR,
|
|
45
|
+
hideFromNav: true,
|
|
46
|
+
hideSideNav: true,
|
|
47
|
+
viewUrl: '/assets/platform-mesh-portal-ui-wc.js#error-component',
|
|
48
|
+
context: {
|
|
49
|
+
id: ':id',
|
|
50
|
+
translationTable: this.i18nService.translationTable,
|
|
51
|
+
},
|
|
52
|
+
webcomponent: {
|
|
53
|
+
selfRegistered: true,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
},
|
|
36
58
|
{
|
|
37
59
|
pathSegment: 'users',
|
|
38
60
|
showBreadcrumbs: false,
|
|
@@ -404,11 +426,11 @@ class CustomRoutingConfigServiceImpl {
|
|
|
404
426
|
}
|
|
405
427
|
getRoutingConfig() {
|
|
406
428
|
return {
|
|
407
|
-
pageNotFoundHandler:
|
|
429
|
+
pageNotFoundHandler: () => {
|
|
408
430
|
if (!this.envConfig?.baseDomain) {
|
|
409
431
|
return this.redirectTo('error/404');
|
|
410
432
|
}
|
|
411
|
-
if (window.location.hostname
|
|
433
|
+
if (window.location.hostname === this.envConfig.baseDomain) {
|
|
412
434
|
return this.redirectTo('welcome');
|
|
413
435
|
}
|
|
414
436
|
return this.redirectTo('error/404');
|
|
@@ -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 { CustomGlobalNodesService, I18nService } 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: '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: {} 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.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: async () => {\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;;MCM7B,4BAA4B,CAAA;AAAzC,IAAA,WAAA,GAAA;AACU,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAuD3C;AArDE,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,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,EAAuB;AAChC,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;;AC3CD,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;;;MCJrB,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,IAAI,aAAa,GAAG,IAAI,KAAK,SAAS,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAA,CAAA,EAAI,QAAQ,EAAE;QACzE,IAAI,IAAI,GAAgC,QAAQ;AAChD,QAAA,GAAG;AACD,YAAA,MAAM,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM;AACpC,YAAA,IAAI,MAAM,EAAE,QAAQ,EAAE,IAAI,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE;gBAChE,aAAa,GAAG,CAAA,CAAA,EAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA,EAAG,aAAa,CAAA,CAAE;YAC5D;AACA,YAAA,IAAI,GAAG,IAAI,EAAE,MAAM;QACrB,CAAC,QAAQ,IAAI;AAEb,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;AAE9D,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;AAC7B,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;;;MCGrB,+BAA+B,CAAA;AAD5C,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,0BAA0B,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAaxE,IAAA;IAXC,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;IACpE;+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;AAMU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,0BAA0B,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAiExE,IAAA;AA/DQ,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,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,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;QAC5C;QAAE,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,CAAA,wBAAA,EAA2B,QAAQ,CAAA,MAAA,EAAS,SAAS,CAAA,CAAE,CAAC;QACxE;IACF;+GApEW,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;;;MCHY,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,YAAW;AAC9B,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;;;;"}
|
|
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: {} 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.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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"}
|
|
@@ -38,7 +38,8 @@ const getResourceValueByJsonPath = (resource, field) => {
|
|
|
38
38
|
console.error(`Property defined as an array: ${JSON.stringify(property)}, provide "jsonPathExpression" field to properly ready resource value`);
|
|
39
39
|
return undefined;
|
|
40
40
|
}
|
|
41
|
-
const
|
|
41
|
+
const prefix = property.startsWith('$.') ? '' : '$.';
|
|
42
|
+
const queryResult = jsonpath.query(resource, `${prefix}${property}`);
|
|
42
43
|
const value = queryResult.length ? queryResult[0] : undefined;
|
|
43
44
|
if (value && field.propertyField) {
|
|
44
45
|
return executeTransform(value[field.propertyField.key], field.propertyField.transform);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-mesh-portal-ui-lib-utils.mjs","sources":["../../projects/lib/utils/utils/columns-to-gql-fields.ts","../../projects/lib/utils/utils/resource-field-by-path.ts","../../projects/lib/utils/utils/get-value-by-path.ts","../../projects/lib/utils/utils/group-name-sanitizer.ts","../../projects/lib/utils/utils/is-local-setup.ts","../../projects/lib/utils/utils/resource-sanitizer.ts","../../projects/lib/utils/platform-mesh-portal-ui-lib-utils.ts"],"sourcesContent":["import { FieldDefinition } from '@platform-mesh/portal-ui-lib/models';\n\nexport const generateGraphQLFields = (uiFields: FieldDefinition[]): any[] => {\n const graphQLFields = [];\n uiFields.map((field) => {\n if (field.property instanceof Array) {\n field.property.map((property) => generate(property, graphQLFields));\n } else {\n generate(field.property, graphQLFields);\n }\n });\n return graphQLFields;\n};\n\nconst generate = (root: string, fields: any = []) => {\n if (!root) {\n return [];\n }\n\n const paths = root.split('.');\n\n for (const part of paths) {\n if (paths.length === 1) {\n fields.push(part);\n return fields;\n }\n\n fields.push({\n [part]: [...generate(paths.splice(1).join('.'))],\n });\n\n return fields;\n }\n};\n","import {\n PropertyField,\n Resource,\n TransformType,\n} from '@platform-mesh/portal-ui-lib/models';\nimport jsonpath from 'jsonpath';\n\nexport const getResourceValueByJsonPath = (\n resource: Resource,\n field: {\n jsonPathExpression?: string;\n property?: string | string[];\n propertyField?: PropertyField;\n },\n) => {\n const property = field.jsonPathExpression || field.property;\n if (!property) {\n return undefined;\n }\n\n if (property instanceof Array) {\n console.error(\n `Property defined as an array: ${JSON.stringify(property)}, provide \"jsonPathExpression\" field to properly ready resource value`,\n );\n return undefined;\n }\n\n const queryResult = jsonpath.query(resource,
|
|
1
|
+
{"version":3,"file":"platform-mesh-portal-ui-lib-utils.mjs","sources":["../../projects/lib/utils/utils/columns-to-gql-fields.ts","../../projects/lib/utils/utils/resource-field-by-path.ts","../../projects/lib/utils/utils/get-value-by-path.ts","../../projects/lib/utils/utils/group-name-sanitizer.ts","../../projects/lib/utils/utils/is-local-setup.ts","../../projects/lib/utils/utils/resource-sanitizer.ts","../../projects/lib/utils/platform-mesh-portal-ui-lib-utils.ts"],"sourcesContent":["import { FieldDefinition } from '@platform-mesh/portal-ui-lib/models';\n\nexport const generateGraphQLFields = (uiFields: FieldDefinition[]): any[] => {\n const graphQLFields = [];\n uiFields.map((field) => {\n if (field.property instanceof Array) {\n field.property.map((property) => generate(property, graphQLFields));\n } else {\n generate(field.property, graphQLFields);\n }\n });\n return graphQLFields;\n};\n\nconst generate = (root: string, fields: any = []) => {\n if (!root) {\n return [];\n }\n\n const paths = root.split('.');\n\n for (const part of paths) {\n if (paths.length === 1) {\n fields.push(part);\n return fields;\n }\n\n fields.push({\n [part]: [...generate(paths.splice(1).join('.'))],\n });\n\n return fields;\n }\n};\n","import {\n PropertyField,\n Resource,\n TransformType,\n} from '@platform-mesh/portal-ui-lib/models';\nimport jsonpath from 'jsonpath';\n\nexport const getResourceValueByJsonPath = (\n resource: Resource,\n field: {\n jsonPathExpression?: string;\n property?: string | string[];\n propertyField?: PropertyField;\n },\n) => {\n const property = field.jsonPathExpression || field.property;\n if (!property) {\n return undefined;\n }\n\n if (property instanceof Array) {\n console.error(\n `Property defined as an array: ${JSON.stringify(property)}, provide \"jsonPathExpression\" field to properly ready resource value`,\n );\n return undefined;\n }\n\n const prefix = property.startsWith('$.') ? '' : '$.';\n const queryResult = jsonpath.query(resource, `${prefix}${property}`);\n const value = queryResult.length ? queryResult[0] : undefined;\n\n if (value && field.propertyField) {\n return executeTransform(\n value[field.propertyField.key],\n field.propertyField.transform,\n );\n }\n\n return value;\n};\n\nconst executeTransform = (\n value: string | undefined,\n transform: TransformType[] | undefined,\n): string | undefined => {\n if (value == null || transform == null || !transform.length) return value;\n\n return transform.reduce((acc, t) => {\n if (acc == null) return acc;\n\n switch (t) {\n case 'uppercase':\n return acc.toUpperCase();\n case 'lowercase':\n return acc.toLowerCase();\n case 'capitalize': {\n const str = String(acc);\n return str.length ? str.charAt(0).toUpperCase() + str.slice(1) : str;\n }\n case 'decode': {\n try {\n return decodeBase64(acc);\n } catch {\n return acc;\n }\n }\n case 'encode': {\n try {\n return encodeBase64(acc);\n } catch {\n return acc;\n }\n }\n default:\n return acc;\n }\n }, value);\n};\n\nexport const encodeBase64 = (str: string): string => {\n try {\n const utf8Bytes = new TextEncoder().encode(str);\n const binaryString = Array.from(utf8Bytes, (byte) =>\n String.fromCharCode(byte),\n ).join('');\n return btoa(binaryString);\n } catch (error) {\n console.error('Base64 encoding failed:', error);\n throw new Error('Failed to encode string to Base64');\n }\n};\n\nexport const decodeBase64 = (base64: string): string => {\n try {\n const binaryString = atob(base64);\n const bytes = Uint8Array.from(binaryString, (char) => char.charCodeAt(0));\n return new TextDecoder().decode(bytes);\n } catch (error) {\n console.error('Base64 decoding failed:', error);\n throw new Error('Failed to decode Base64 string');\n }\n};\n","import { getResourceValueByJsonPath } from './resource-field-by-path';\nimport { Resource } from '@platform-mesh/portal-ui-lib/models';\n\nexport const getValueByPath = <T extends object, R = unknown>(\n obj: T,\n path: string,\n): R | undefined => {\n return getResourceValueByJsonPath(obj as Resource, {\n jsonPathExpression: path,\n });\n};\n","/**\n * Utility function to replace all occurrences of dots (.) and hyphens (-) with underscores (_)\n * @param input - The input string to process\n * @returns The processed string with dots and hyphens replaced by underscores\n */\nexport function replaceDotsAndHyphensWithUnderscores(input: string): string {\n if (!input) {\n return input;\n }\n\n return input.replace(/[.-]/g, '_');\n}\n","export const isLocalSetup = () => {\n return window.location.hostname.includes('localhost') || window.location.hostname.includes('portal.dev.local');\n};\n","export function stripTypename<T>(value: T): T {\n if (Array.isArray(value)) {\n return (value as unknown as any[]).map((v) => stripTypename(v)) as T;\n }\n if (value && typeof value === 'object') {\n const { __typename, ...rest } = value as Record<string, unknown> & {\n __typename?: string;\n };\n for (const k of Object.keys(rest)) {\n // @ts-ignore - rest is an indexable object\n rest[k] = stripTypename((rest as any)[k]);\n }\n return rest as T;\n }\n return value;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|