@platform-mesh/portal-ui-lib 0.52.0 → 0.52.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"platform-mesh-portal-ui-lib-models.mjs","sources":["../../projects/lib/models/constants/constants.ts","../../projects/lib/models/models/resource.ts","../../projects/lib/models/platform-mesh-portal-ui-lib-models.ts"],"sourcesContent":["export const ALL_NAMESPACE = '-all-';\nexport const kcpRootOrgsPath = 'root:orgs';\n","import { PlatformMeshFieldDefinition, UIDefinition } from './ui-definition';\nimport { GenericResource } from '@openmfp/ngx';\nimport { Condition, ObjectMeta } from 'kubernetes-types/meta/v1';\n\nexport interface ResourceStatus {\n conditions: Condition[];\n}\n\nexport interface ResourceSpec extends Record<string, any> {\n type: string;\n description?: string;\n displayName?: string;\n}\n\nexport interface ResourceMeta extends ObjectMeta {\n name: string;\n}\n\nexport interface Resource extends GenericResource {\n metadata: ResourceMeta;\n spec?: ResourceSpec;\n status?: ResourceStatus;\n __typename?: string;\n data?: Record<string, any>;\n ready?: boolean;\n isAvailable?: boolean;\n accessibleName?: string;\n}\n\nexport interface ResourceDefinition {\n apiGroup?: string;\n version: string;\n entityCollection: string;\n entity: string;\n name?: string;\n scope?: KubernetesScope;\n namespace?: string;\n readyCondition?: PlatformMeshFieldDefinition;\n ui?: UIDefinition;\n}\n\nexport const ResourceOperationTypeMap = {\n ADDED: 'ADDED',\n MODIFIED: 'MODIFIED',\n DELETED: 'DELETED',\n} as const;\n\nexport type ResourceOperationType =\n (typeof ResourceOperationTypeMap)[keyof typeof ResourceOperationTypeMap];\n\nexport interface ResourceSubscriptionResult {\n type: ResourceOperationType;\n object: Resource;\n}\n\nexport interface ResourcePagination {\n limit: number | undefined;\n continue: string | undefined;\n}\n\nexport interface ResourceListResult {\n resourceVersion: string;\n items: Resource[];\n continue: string | undefined;\n remainingItemCount?: number;\n}\n\nexport type KubernetesScope = 'Cluster' | 'Namespaced';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAO,MAAM,aAAa,GAAG;AACtB,MAAM,eAAe,GAAG;;ACwCxB,MAAM,wBAAwB,GAAG;AACtC,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,OAAO,EAAE,SAAS;;;AC5CpB;;AAEG;;;;"}
1
+ {"version":3,"file":"platform-mesh-portal-ui-lib-models.mjs","sources":["../../projects/lib/models/constants/constants.ts","../../projects/lib/models/models/resource.ts","../../projects/lib/models/platform-mesh-portal-ui-lib-models.ts"],"sourcesContent":["export const ALL_NAMESPACE = '-all-';\nexport const kcpRootOrgsPath = 'root:orgs';\n","import { PlatformMeshFieldDefinition, UIDefinition } from './ui-definition';\nimport { GenericResource } from '@openmfp/ngx';\nimport { Condition, ObjectMeta } from 'kubernetes-types/meta/v1';\n\nexport interface ResourceStatus {\n conditions: Condition[];\n}\n\nexport interface ResourceSpec extends Record<string, any> {\n type: string;\n description?: string;\n displayName?: string;\n}\n\nexport interface ResourceMeta extends ObjectMeta {\n name: string;\n}\n\nexport interface Resource extends GenericResource {\n metadata: ResourceMeta;\n spec?: ResourceSpec;\n status?: ResourceStatus;\n __typename?: string;\n data?: Record<string, any>;\n ready?: boolean;\n isAvailable?: boolean;\n accessibleName?: string;\n}\n\nexport interface PermissionsDefinition {\n group: string;\n resource: string;\n entityActions: string[];\n resourceActions: string[];\n entityContextKey: string;\n}\n\nexport interface ResourceDefinition {\n apiGroup?: string;\n version: string;\n entityCollection: string;\n entity: string;\n name?: string;\n scope?: KubernetesScope;\n namespace?: string;\n readyCondition?: PlatformMeshFieldDefinition;\n ui?: UIDefinition;\n permissionsDefinition?: PermissionsDefinition;\n}\n\nexport const ResourceOperationTypeMap = {\n ADDED: 'ADDED',\n MODIFIED: 'MODIFIED',\n DELETED: 'DELETED',\n} as const;\n\nexport type ResourceOperationType =\n (typeof ResourceOperationTypeMap)[keyof typeof ResourceOperationTypeMap];\n\nexport interface ResourceSubscriptionResult {\n type: ResourceOperationType;\n object: Resource;\n}\n\nexport interface ResourcePagination {\n limit: number | undefined;\n continue: string | undefined;\n}\n\nexport interface ResourceListResult {\n resourceVersion: string;\n items: Resource[];\n continue: string | undefined;\n remainingItemCount?: number;\n}\n\nexport type KubernetesScope = 'Cluster' | 'Namespaced';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAO,MAAM,aAAa,GAAG;AACtB,MAAM,eAAe,GAAG;;ACiDxB,MAAM,wBAAwB,GAAG;AACtC,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,OAAO,EAAE,SAAS;;;ACrDpB;;AAEG;;;;"}
@@ -5,8 +5,8 @@ import '@ui5/webcomponents/dist/Breadcrumbs.js';
5
5
  import '@ui5/webcomponents/dist/BreadcrumbsItem.js';
6
6
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
7
  import { ALL_NAMESPACE, kcpRootOrgsPath } from '@platform-mesh/portal-ui-lib/models';
8
- import { ResourceService, GatewayService, AccountInfoService, OrganizationReadyService, ErrorHandlerService } from '@platform-mesh/portal-ui-lib/services';
9
- import { isNamespacedResource, generateGraphQLFields, mergeListWithSubscriptionResult } from '@platform-mesh/portal-ui-lib/utils';
8
+ import { ResourceService, GatewayService, AccountInfoService, InstancePermissionsService, OrganizationReadyService, ErrorHandlerService } from '@platform-mesh/portal-ui-lib/services';
9
+ import { isNamespacedResource, generateGraphQLFields, mergeListWithSubscriptionResult, permissionKey } from '@platform-mesh/portal-ui-lib/utils';
10
10
  import '@ui5/webcomponents/dist/ComboBox.js';
11
11
  import { Subject, defer, of, firstValueFrom } from 'rxjs';
12
12
  import { shareReplay, retry, takeUntil, switchMap, startWith, scan, tap, catchError } from 'rxjs/operators';
@@ -79,10 +79,10 @@ class CustomGlobalNodesServiceImpl {
79
79
  },
80
80
  ];
81
81
  }
82
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CustomGlobalNodesServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
83
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CustomGlobalNodesServiceImpl, providedIn: 'root' }); }
82
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: CustomGlobalNodesServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
83
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: CustomGlobalNodesServiceImpl, providedIn: 'root' }); }
84
84
  }
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CustomGlobalNodesServiceImpl, decorators: [{
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: CustomGlobalNodesServiceImpl, decorators: [{
86
86
  type: Injectable,
87
87
  args: [{ providedIn: 'root' }]
88
88
  }] });
@@ -256,10 +256,10 @@ class NamespaceSelectionRendererService {
256
256
  }
257
257
  this.luigiCoreService.routing().addSearchParams({ namespace: value });
258
258
  }
259
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NamespaceSelectionRendererService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
260
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NamespaceSelectionRendererService, providedIn: 'root' }); }
259
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: NamespaceSelectionRendererService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
260
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: NamespaceSelectionRendererService, providedIn: 'root' }); }
261
261
  }
262
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NamespaceSelectionRendererService, decorators: [{
262
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: NamespaceSelectionRendererService, decorators: [{
263
263
  type: Injectable,
264
264
  args: [{ providedIn: 'root' }]
265
265
  }] });
@@ -282,10 +282,10 @@ class HeaderBarConfigServiceImpl {
282
282
  ],
283
283
  };
284
284
  }
285
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: HeaderBarConfigServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
286
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: HeaderBarConfigServiceImpl, providedIn: 'root' }); }
285
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: HeaderBarConfigServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
286
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: HeaderBarConfigServiceImpl, providedIn: 'root' }); }
287
287
  }
288
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: HeaderBarConfigServiceImpl, decorators: [{
288
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: HeaderBarConfigServiceImpl, decorators: [{
289
289
  type: Injectable,
290
290
  args: [{
291
291
  providedIn: 'root',
@@ -307,10 +307,10 @@ class LuigiExtendedGlobalContextConfigServiceImpl {
307
307
  entityName: idpName,
308
308
  };
309
309
  }
310
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: LuigiExtendedGlobalContextConfigServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
311
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: LuigiExtendedGlobalContextConfigServiceImpl, providedIn: 'root' }); }
310
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: LuigiExtendedGlobalContextConfigServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
311
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: LuigiExtendedGlobalContextConfigServiceImpl, providedIn: 'root' }); }
312
312
  }
313
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: LuigiExtendedGlobalContextConfigServiceImpl, decorators: [{
313
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: LuigiExtendedGlobalContextConfigServiceImpl, decorators: [{
314
314
  type: Injectable,
315
315
  args: [{ providedIn: 'root' }]
316
316
  }] });
@@ -328,10 +328,10 @@ class NavigationRedirectStrategyServiceImpl {
328
328
  clearRedirectUrl() {
329
329
  localStorage.removeItem(LocalStorageKeys.LAST_NAVIGATION_URL);
330
330
  }
331
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NavigationRedirectStrategyServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
332
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NavigationRedirectStrategyServiceImpl, providedIn: 'root' }); }
331
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: NavigationRedirectStrategyServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
332
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: NavigationRedirectStrategyServiceImpl, providedIn: 'root' }); }
333
333
  }
334
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NavigationRedirectStrategyServiceImpl, decorators: [{
334
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: NavigationRedirectStrategyServiceImpl, decorators: [{
335
335
  type: Injectable,
336
336
  args: [{ providedIn: 'root' }]
337
337
  }] });
@@ -928,10 +928,10 @@ class PersistentPanelComponent {
928
928
  isMobileViewport() {
929
929
  return window.innerWidth <= 600;
930
930
  }
931
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PersistentPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
932
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: PersistentPanelComponent, isStandalone: true, selector: "pm-persistent-panel", viewQueries: [{ propertyName: "panelFrame", first: true, predicate: ["panelFrame"], descendants: true }, { propertyName: "reopenButton", first: true, predicate: ["reopenButton"], descendants: true }], ngImport: i0, template: "<section\n class=\"persistent-panel fd-dialog__content\"\n role=\"complementary\"\n aria-labelledby=\"persistent-panel-title\"\n [attr.aria-hidden]=\"state() === 'hidden'\"\n [class.maximized]=\"state() === 'maximized'\"\n [class.open]=\"state() !== 'hidden'\"\n [class.resizing]=\"resizing()\"\n [style.--pm-panel-width]=\"panelWidth() + 'px'\"\n>\n <div\n class=\"persistent-panel-resizer\"\n role=\"separator\"\n aria-label=\"Resize provider panel\"\n aria-orientation=\"vertical\"\n aria-controls=\"persistent-panel-content\"\n [attr.aria-valuemin]=\"minPanelWidth()\"\n [attr.aria-valuemax]=\"maxPanelWidth()\"\n [attr.aria-valuenow]=\"panelWidth()\"\n tabindex=\"0\"\n (pointerdown)=\"beginResize($event)\"\n (pointermove)=\"resize($event)\"\n (pointerup)=\"finishResize($event)\"\n (pointercancel)=\"finishResize($event)\"\n (lostpointercapture)=\"finishResize($event)\"\n (keydown)=\"resizeWithKeyboard($event)\"\n ></div>\n <header\n class=\"persistent-panel-header fd-dialog__header fd-bar fd-bar--header\"\n >\n <div class=\"fd-bar__left persistent-panel-title-area\">\n <div class=\"fd-bar__element persistent-panel-title-element\">\n <h2\n id=\"persistent-panel-title\"\n class=\"fd-title fd-title--h5 persistent-panel-title\"\n >\n {{ title() }}\n </h2>\n </div>\n </div>\n <div class=\"fd-bar__right persistent-panel-actions\">\n <div class=\"fd-bar__element\">\n <button\n class=\"fd-button fd-button--transparent fd-button--compact\"\n aria-label=\"Toggle panel size\"\n [attr.aria-pressed]=\"state() === 'maximized'\"\n title=\"Toggle panel size\"\n type=\"button\"\n (click)=\"toggleSize()\"\n >\n <i\n class=\"sap-icon\"\n [class.sap-icon--exitfullscreen]=\"state() === 'maximized'\"\n [class.sap-icon--full-screen]=\"state() !== 'maximized'\"\n aria-hidden=\"true\"\n ></i>\n </button>\n </div>\n <div class=\"fd-bar__element\">\n <button\n class=\"fd-button fd-button--transparent fd-button--compact\"\n aria-label=\"Collapse panel\"\n title=\"Collapse panel\"\n type=\"button\"\n (click)=\"collapse()\"\n >\n <i class=\"sap-icon sap-icon--collapse\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <div class=\"fd-bar__element\">\n <button\n class=\"fd-button fd-button--transparent fd-button--compact\"\n aria-label=\"Close panel\"\n title=\"Close panel\"\n type=\"button\"\n (click)=\"close()\"\n >\n <i class=\"sap-icon sap-icon--decline\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </header>\n <div class=\"persistent-panel-body fd-dialog__body\">\n @if (closeError()) {\n <p class=\"persistent-panel-error\" role=\"alert\">{{ closeError() }}</p>\n } @if (source()) {\n <iframe\n #panelFrame\n id=\"persistent-panel-content\"\n class=\"persistent-panel-frame\"\n referrerpolicy=\"no-referrer\"\n sandbox=\"allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts\"\n [src]=\"source()\"\n [title]=\"title()\"\n (load)=\"frameLoaded()\"\n ></iframe>\n }\n </div>\n</section>\n\n@if (state() === 'hidden' && source() && !closing()) {\n<button\n #reopenButton\n class=\"persistent-panel-reopen fd-button fd-button--emphasized fd-button--compact\"\n [attr.aria-label]=\"'Open ' + title()\"\n type=\"button\"\n (click)=\"expand()\"\n>\n {{ title() }}\n</button>\n}\n", styles: [":host{font-family:var(--sapFontFamily, \"72\", Arial, sans-serif)}.persistent-panel{position:fixed;top:var(--luigi__shellbar--height, 3.25rem);right:0;bottom:0;z-index:1000;display:none;box-sizing:border-box;min-width:0;max-width:none;min-height:0;max-height:none;width:var(--pm-panel-width, min(34rem, 100vw));background:var(--sapGroup_ContentBackground, #fff);border-radius:var(--sapElement_BorderCornerRadius, .75rem) 0 0 var(--sapElement_BorderCornerRadius, .75rem);box-shadow:var(--sapContent_Shadow3, 0 0 0 .0625rem rgba(34, 53, 72, .48), 0 1.25rem 5rem rgba(34, 53, 72, .3))}:host-context(.lui-breadcrumb) .persistent-panel{top:calc(var(--luigi__shellbar--height, 3.25rem) + var(--luigi__breadcrumb--height, 2.75rem))}.persistent-panel.open{display:grid;grid-template-rows:auto minmax(0,1fr)}.persistent-panel-resizer{position:absolute;top:0;bottom:0;left:-.375rem;z-index:1;width:.75rem;cursor:col-resize;touch-action:none}.persistent-panel-resizer:after{position:absolute;top:50%;left:50%;width:.125rem;height:3rem;background:var(--sapContent_FocusColor, #0064d9);border-radius:.125rem;content:\"\";opacity:0;pointer-events:none;transform:translate(-50%,-50%);transition:opacity .12s ease-in-out}.persistent-panel-resizer:hover:after,.persistent-panel-resizer:focus-visible:after,.persistent-panel.resizing .persistent-panel-resizer:after{opacity:1}.persistent-panel-resizer:focus-visible{outline:0}.persistent-panel-resizer:focus-visible:after{outline:var(--sapContent_FocusWidth, .125rem) solid var(--sapContent_FocusColor, #0032a5);outline-offset:.125rem}.persistent-panel.maximized .persistent-panel-resizer{display:none}.persistent-panel-header{min-width:0;border-radius:var(--sapElement_BorderCornerRadius, .75rem) 0 0}.persistent-panel-title-area,.persistent-panel-title-element{min-width:0}.persistent-panel-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.persistent-panel-body{display:flex;min-width:0;min-height:0;flex-direction:column;padding:0;overflow:hidden}.persistent-panel-error{flex:none;margin:0;padding:.5rem 1rem;color:var(--sapNegativeTextColor, #aa0808);background:var(--sapErrorBackground, #ffeaf4);font-size:var(--sapFontSmallSize, .75rem)}.persistent-panel-frame{min-height:0;flex:1;width:100%;border:0;border-bottom-left-radius:var(--sapElement_BorderCornerRadius, .75rem)}.persistent-panel.resizing,.persistent-panel.resizing .persistent-panel-resizer{cursor:col-resize}.persistent-panel.resizing .persistent-panel-frame{pointer-events:none;-webkit-user-select:none;user-select:none}.persistent-panel-reopen{position:fixed;right:1rem;bottom:1rem;z-index:1000;overflow:hidden;max-width:calc(100vw - 2rem);text-overflow:ellipsis;white-space:nowrap}@media(max-width:600px){.persistent-panel,.persistent-panel.maximized{left:0;width:100vw;border-radius:0;box-shadow:none}.persistent-panel-resizer{display:none}.persistent-panel-header,.persistent-panel-body,.persistent-panel-frame{border-radius:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
931
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: PersistentPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
932
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.20", type: PersistentPanelComponent, isStandalone: true, selector: "pm-persistent-panel", viewQueries: [{ propertyName: "panelFrame", first: true, predicate: ["panelFrame"], descendants: true }, { propertyName: "reopenButton", first: true, predicate: ["reopenButton"], descendants: true }], ngImport: i0, template: "<section\n class=\"persistent-panel fd-dialog__content\"\n role=\"complementary\"\n aria-labelledby=\"persistent-panel-title\"\n [attr.aria-hidden]=\"state() === 'hidden'\"\n [class.maximized]=\"state() === 'maximized'\"\n [class.open]=\"state() !== 'hidden'\"\n [class.resizing]=\"resizing()\"\n [style.--pm-panel-width]=\"panelWidth() + 'px'\"\n>\n <div\n class=\"persistent-panel-resizer\"\n role=\"separator\"\n aria-label=\"Resize provider panel\"\n aria-orientation=\"vertical\"\n aria-controls=\"persistent-panel-content\"\n [attr.aria-valuemin]=\"minPanelWidth()\"\n [attr.aria-valuemax]=\"maxPanelWidth()\"\n [attr.aria-valuenow]=\"panelWidth()\"\n tabindex=\"0\"\n (pointerdown)=\"beginResize($event)\"\n (pointermove)=\"resize($event)\"\n (pointerup)=\"finishResize($event)\"\n (pointercancel)=\"finishResize($event)\"\n (lostpointercapture)=\"finishResize($event)\"\n (keydown)=\"resizeWithKeyboard($event)\"\n ></div>\n <header\n class=\"persistent-panel-header fd-dialog__header fd-bar fd-bar--header\"\n >\n <div class=\"fd-bar__left persistent-panel-title-area\">\n <div class=\"fd-bar__element persistent-panel-title-element\">\n <h2\n id=\"persistent-panel-title\"\n class=\"fd-title fd-title--h5 persistent-panel-title\"\n >\n {{ title() }}\n </h2>\n </div>\n </div>\n <div class=\"fd-bar__right persistent-panel-actions\">\n <div class=\"fd-bar__element\">\n <button\n class=\"fd-button fd-button--transparent fd-button--compact\"\n aria-label=\"Toggle panel size\"\n [attr.aria-pressed]=\"state() === 'maximized'\"\n title=\"Toggle panel size\"\n type=\"button\"\n (click)=\"toggleSize()\"\n >\n <i\n class=\"sap-icon\"\n [class.sap-icon--exitfullscreen]=\"state() === 'maximized'\"\n [class.sap-icon--full-screen]=\"state() !== 'maximized'\"\n aria-hidden=\"true\"\n ></i>\n </button>\n </div>\n <div class=\"fd-bar__element\">\n <button\n class=\"fd-button fd-button--transparent fd-button--compact\"\n aria-label=\"Collapse panel\"\n title=\"Collapse panel\"\n type=\"button\"\n (click)=\"collapse()\"\n >\n <i class=\"sap-icon sap-icon--collapse\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <div class=\"fd-bar__element\">\n <button\n class=\"fd-button fd-button--transparent fd-button--compact\"\n aria-label=\"Close panel\"\n title=\"Close panel\"\n type=\"button\"\n (click)=\"close()\"\n >\n <i class=\"sap-icon sap-icon--decline\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </header>\n <div class=\"persistent-panel-body fd-dialog__body\">\n @if (closeError()) {\n <p class=\"persistent-panel-error\" role=\"alert\">{{ closeError() }}</p>\n } @if (source()) {\n <iframe\n #panelFrame\n id=\"persistent-panel-content\"\n class=\"persistent-panel-frame\"\n referrerpolicy=\"no-referrer\"\n sandbox=\"allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts\"\n [src]=\"source()\"\n [title]=\"title()\"\n (load)=\"frameLoaded()\"\n ></iframe>\n }\n </div>\n</section>\n\n@if (state() === 'hidden' && source() && !closing()) {\n<button\n #reopenButton\n class=\"persistent-panel-reopen fd-button fd-button--emphasized fd-button--compact\"\n [attr.aria-label]=\"'Open ' + title()\"\n type=\"button\"\n (click)=\"expand()\"\n>\n {{ title() }}\n</button>\n}\n", styles: [":host{font-family:var(--sapFontFamily, \"72\", Arial, sans-serif)}.persistent-panel{position:fixed;top:var(--luigi__shellbar--height, 3.25rem);right:0;bottom:0;z-index:1000;display:none;box-sizing:border-box;min-width:0;max-width:none;min-height:0;max-height:none;width:var(--pm-panel-width, min(34rem, 100vw));background:var(--sapGroup_ContentBackground, #fff);border-radius:var(--sapElement_BorderCornerRadius, .75rem) 0 0 var(--sapElement_BorderCornerRadius, .75rem);box-shadow:var(--sapContent_Shadow3, 0 0 0 .0625rem rgba(34, 53, 72, .48), 0 1.25rem 5rem rgba(34, 53, 72, .3))}:host-context(.lui-breadcrumb) .persistent-panel{top:calc(var(--luigi__shellbar--height, 3.25rem) + var(--luigi__breadcrumb--height, 2.75rem))}.persistent-panel.open{display:grid;grid-template-rows:auto minmax(0,1fr)}.persistent-panel-resizer{position:absolute;top:0;bottom:0;left:-.375rem;z-index:1;width:.75rem;cursor:col-resize;touch-action:none}.persistent-panel-resizer:after{position:absolute;top:50%;left:50%;width:.125rem;height:3rem;background:var(--sapContent_FocusColor, #0064d9);border-radius:.125rem;content:\"\";opacity:0;pointer-events:none;transform:translate(-50%,-50%);transition:opacity .12s ease-in-out}.persistent-panel-resizer:hover:after,.persistent-panel-resizer:focus-visible:after,.persistent-panel.resizing .persistent-panel-resizer:after{opacity:1}.persistent-panel-resizer:focus-visible{outline:0}.persistent-panel-resizer:focus-visible:after{outline:var(--sapContent_FocusWidth, .125rem) solid var(--sapContent_FocusColor, #0032a5);outline-offset:.125rem}.persistent-panel.maximized .persistent-panel-resizer{display:none}.persistent-panel-header{min-width:0;border-radius:var(--sapElement_BorderCornerRadius, .75rem) 0 0}.persistent-panel-title-area,.persistent-panel-title-element{min-width:0}.persistent-panel-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.persistent-panel-body{display:flex;min-width:0;min-height:0;flex-direction:column;padding:0;overflow:hidden}.persistent-panel-error{flex:none;margin:0;padding:.5rem 1rem;color:var(--sapNegativeTextColor, #aa0808);background:var(--sapErrorBackground, #ffeaf4);font-size:var(--sapFontSmallSize, .75rem)}.persistent-panel-frame{min-height:0;flex:1;width:100%;border:0;border-bottom-left-radius:var(--sapElement_BorderCornerRadius, .75rem)}.persistent-panel.resizing,.persistent-panel.resizing .persistent-panel-resizer{cursor:col-resize}.persistent-panel.resizing .persistent-panel-frame{pointer-events:none;-webkit-user-select:none;user-select:none}.persistent-panel-reopen{position:fixed;right:1rem;bottom:1rem;z-index:1000;overflow:hidden;max-width:calc(100vw - 2rem);text-overflow:ellipsis;white-space:nowrap}@media(max-width:600px){.persistent-panel,.persistent-panel.maximized{left:0;width:100vw;border-radius:0;box-shadow:none}.persistent-panel-resizer{display:none}.persistent-panel-header,.persistent-panel-body,.persistent-panel-frame{border-radius:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
933
933
  }
934
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PersistentPanelComponent, decorators: [{
934
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: PersistentPanelComponent, decorators: [{
935
935
  type: Component,
936
936
  args: [{ selector: 'pm-persistent-panel', imports: [CommonModule], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<section\n class=\"persistent-panel fd-dialog__content\"\n role=\"complementary\"\n aria-labelledby=\"persistent-panel-title\"\n [attr.aria-hidden]=\"state() === 'hidden'\"\n [class.maximized]=\"state() === 'maximized'\"\n [class.open]=\"state() !== 'hidden'\"\n [class.resizing]=\"resizing()\"\n [style.--pm-panel-width]=\"panelWidth() + 'px'\"\n>\n <div\n class=\"persistent-panel-resizer\"\n role=\"separator\"\n aria-label=\"Resize provider panel\"\n aria-orientation=\"vertical\"\n aria-controls=\"persistent-panel-content\"\n [attr.aria-valuemin]=\"minPanelWidth()\"\n [attr.aria-valuemax]=\"maxPanelWidth()\"\n [attr.aria-valuenow]=\"panelWidth()\"\n tabindex=\"0\"\n (pointerdown)=\"beginResize($event)\"\n (pointermove)=\"resize($event)\"\n (pointerup)=\"finishResize($event)\"\n (pointercancel)=\"finishResize($event)\"\n (lostpointercapture)=\"finishResize($event)\"\n (keydown)=\"resizeWithKeyboard($event)\"\n ></div>\n <header\n class=\"persistent-panel-header fd-dialog__header fd-bar fd-bar--header\"\n >\n <div class=\"fd-bar__left persistent-panel-title-area\">\n <div class=\"fd-bar__element persistent-panel-title-element\">\n <h2\n id=\"persistent-panel-title\"\n class=\"fd-title fd-title--h5 persistent-panel-title\"\n >\n {{ title() }}\n </h2>\n </div>\n </div>\n <div class=\"fd-bar__right persistent-panel-actions\">\n <div class=\"fd-bar__element\">\n <button\n class=\"fd-button fd-button--transparent fd-button--compact\"\n aria-label=\"Toggle panel size\"\n [attr.aria-pressed]=\"state() === 'maximized'\"\n title=\"Toggle panel size\"\n type=\"button\"\n (click)=\"toggleSize()\"\n >\n <i\n class=\"sap-icon\"\n [class.sap-icon--exitfullscreen]=\"state() === 'maximized'\"\n [class.sap-icon--full-screen]=\"state() !== 'maximized'\"\n aria-hidden=\"true\"\n ></i>\n </button>\n </div>\n <div class=\"fd-bar__element\">\n <button\n class=\"fd-button fd-button--transparent fd-button--compact\"\n aria-label=\"Collapse panel\"\n title=\"Collapse panel\"\n type=\"button\"\n (click)=\"collapse()\"\n >\n <i class=\"sap-icon sap-icon--collapse\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <div class=\"fd-bar__element\">\n <button\n class=\"fd-button fd-button--transparent fd-button--compact\"\n aria-label=\"Close panel\"\n title=\"Close panel\"\n type=\"button\"\n (click)=\"close()\"\n >\n <i class=\"sap-icon sap-icon--decline\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </header>\n <div class=\"persistent-panel-body fd-dialog__body\">\n @if (closeError()) {\n <p class=\"persistent-panel-error\" role=\"alert\">{{ closeError() }}</p>\n } @if (source()) {\n <iframe\n #panelFrame\n id=\"persistent-panel-content\"\n class=\"persistent-panel-frame\"\n referrerpolicy=\"no-referrer\"\n sandbox=\"allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts\"\n [src]=\"source()\"\n [title]=\"title()\"\n (load)=\"frameLoaded()\"\n ></iframe>\n }\n </div>\n</section>\n\n@if (state() === 'hidden' && source() && !closing()) {\n<button\n #reopenButton\n class=\"persistent-panel-reopen fd-button fd-button--emphasized fd-button--compact\"\n [attr.aria-label]=\"'Open ' + title()\"\n type=\"button\"\n (click)=\"expand()\"\n>\n {{ title() }}\n</button>\n}\n", styles: [":host{font-family:var(--sapFontFamily, \"72\", Arial, sans-serif)}.persistent-panel{position:fixed;top:var(--luigi__shellbar--height, 3.25rem);right:0;bottom:0;z-index:1000;display:none;box-sizing:border-box;min-width:0;max-width:none;min-height:0;max-height:none;width:var(--pm-panel-width, min(34rem, 100vw));background:var(--sapGroup_ContentBackground, #fff);border-radius:var(--sapElement_BorderCornerRadius, .75rem) 0 0 var(--sapElement_BorderCornerRadius, .75rem);box-shadow:var(--sapContent_Shadow3, 0 0 0 .0625rem rgba(34, 53, 72, .48), 0 1.25rem 5rem rgba(34, 53, 72, .3))}:host-context(.lui-breadcrumb) .persistent-panel{top:calc(var(--luigi__shellbar--height, 3.25rem) + var(--luigi__breadcrumb--height, 2.75rem))}.persistent-panel.open{display:grid;grid-template-rows:auto minmax(0,1fr)}.persistent-panel-resizer{position:absolute;top:0;bottom:0;left:-.375rem;z-index:1;width:.75rem;cursor:col-resize;touch-action:none}.persistent-panel-resizer:after{position:absolute;top:50%;left:50%;width:.125rem;height:3rem;background:var(--sapContent_FocusColor, #0064d9);border-radius:.125rem;content:\"\";opacity:0;pointer-events:none;transform:translate(-50%,-50%);transition:opacity .12s ease-in-out}.persistent-panel-resizer:hover:after,.persistent-panel-resizer:focus-visible:after,.persistent-panel.resizing .persistent-panel-resizer:after{opacity:1}.persistent-panel-resizer:focus-visible{outline:0}.persistent-panel-resizer:focus-visible:after{outline:var(--sapContent_FocusWidth, .125rem) solid var(--sapContent_FocusColor, #0032a5);outline-offset:.125rem}.persistent-panel.maximized .persistent-panel-resizer{display:none}.persistent-panel-header{min-width:0;border-radius:var(--sapElement_BorderCornerRadius, .75rem) 0 0}.persistent-panel-title-area,.persistent-panel-title-element{min-width:0}.persistent-panel-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.persistent-panel-body{display:flex;min-width:0;min-height:0;flex-direction:column;padding:0;overflow:hidden}.persistent-panel-error{flex:none;margin:0;padding:.5rem 1rem;color:var(--sapNegativeTextColor, #aa0808);background:var(--sapErrorBackground, #ffeaf4);font-size:var(--sapFontSmallSize, .75rem)}.persistent-panel-frame{min-height:0;flex:1;width:100%;border:0;border-bottom-left-radius:var(--sapElement_BorderCornerRadius, .75rem)}.persistent-panel.resizing,.persistent-panel.resizing .persistent-panel-resizer{cursor:col-resize}.persistent-panel.resizing .persistent-panel-frame{pointer-events:none;-webkit-user-select:none;user-select:none}.persistent-panel-reopen{position:fixed;right:1rem;bottom:1rem;z-index:1000;overflow:hidden;max-width:calc(100vw - 2rem);text-overflow:ellipsis;white-space:nowrap}@media(max-width:600px){.persistent-panel,.persistent-panel.maximized{left:0;width:100vw;border-radius:0;box-shadow:none}.persistent-panel-resizer{display:none}.persistent-panel-header,.persistent-panel-body,.persistent-panel-frame{border-radius:0}}\n"] }]
937
937
  }], ctorParameters: () => [], propDecorators: { panelFrame: [{
@@ -1008,10 +1008,10 @@ class PersistentPanelService {
1008
1008
  ngOnDestroy() {
1009
1009
  this.destroy();
1010
1010
  }
1011
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PersistentPanelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1012
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PersistentPanelService, providedIn: 'root' }); }
1011
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: PersistentPanelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1012
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: PersistentPanelService, providedIn: 'root' }); }
1013
1013
  }
1014
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PersistentPanelService, decorators: [{
1014
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: PersistentPanelService, decorators: [{
1015
1015
  type: Injectable,
1016
1016
  args: [{ providedIn: 'root' }]
1017
1017
  }] });
@@ -1070,10 +1070,10 @@ class CrdGatewayKcpPatchResolver {
1070
1070
  }
1071
1071
  return { kcpPath, accountPath };
1072
1072
  }
1073
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CrdGatewayKcpPatchResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1074
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CrdGatewayKcpPatchResolver, providedIn: 'root' }); }
1073
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: CrdGatewayKcpPatchResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1074
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: CrdGatewayKcpPatchResolver, providedIn: 'root' }); }
1075
1075
  }
1076
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CrdGatewayKcpPatchResolver, decorators: [{
1076
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: CrdGatewayKcpPatchResolver, decorators: [{
1077
1077
  type: Injectable,
1078
1078
  args: [{ providedIn: 'root' }]
1079
1079
  }] });
@@ -1110,10 +1110,10 @@ class NodeChangeHookConfigServiceImpl {
1110
1110
  nextNode.context.portalPermissions = portalPermissions;
1111
1111
  }
1112
1112
  }
1113
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NodeChangeHookConfigServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1114
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NodeChangeHookConfigServiceImpl, providedIn: 'root' }); }
1113
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: NodeChangeHookConfigServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1114
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: NodeChangeHookConfigServiceImpl, providedIn: 'root' }); }
1115
1115
  }
1116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NodeChangeHookConfigServiceImpl, decorators: [{
1116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: NodeChangeHookConfigServiceImpl, decorators: [{
1117
1117
  type: Injectable,
1118
1118
  args: [{ providedIn: 'root' }]
1119
1119
  }] });
@@ -1122,8 +1122,10 @@ class NodeContextProcessingServiceImpl {
1122
1122
  constructor() {
1123
1123
  this.crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);
1124
1124
  this.accountInfoService = inject(AccountInfoService);
1125
+ this.instancePermissionsService = inject(InstancePermissionsService);
1125
1126
  this.organizationReadyService = inject(OrganizationReadyService);
1126
1127
  this.errorHandlerService = inject(ErrorHandlerService);
1128
+ this.luigiCoreService = inject(LuigiCoreService);
1127
1129
  }
1128
1130
  async processNodeContext(dynamicEntityId, entityNode, ctx) {
1129
1131
  const kind = entityNode.defineEntity?.type;
@@ -1137,6 +1139,7 @@ class NodeContextProcessingServiceImpl {
1137
1139
  // update the node context of sa node to contain the entity for future context calculations
1138
1140
  this.addFieldsToContext(entityNode.context, entityId, kcpPath, accountPath, kind);
1139
1141
  this.accamulatePortalPermissions(ctx);
1142
+ this.getEntityPermissions(ctx);
1140
1143
  try {
1141
1144
  const accountInfo = await firstValueFrom(this.accountInfoService.read({
1142
1145
  portalContext: {
@@ -1172,6 +1175,32 @@ class NodeContextProcessingServiceImpl {
1172
1175
  ctx.entityId = `${accountOriginClusterId}/${entityId}`;
1173
1176
  ctx.kcpCA = btoa(accountInfo.spec.clusterInfo.ca);
1174
1177
  }
1178
+ getEntityPermissions(ctx) {
1179
+ const resourceDefinition = ctx.resourceDefinition;
1180
+ if (!resourceDefinition || !resourceDefinition?.permissionsDefinition) {
1181
+ return;
1182
+ }
1183
+ const name = ctx[resourceDefinition.permissionsDefinition.entityContextKey];
1184
+ if (!name) {
1185
+ return;
1186
+ }
1187
+ const namespace = this.luigiCoreService
1188
+ .routing()
1189
+ .getSearchParams().namespace;
1190
+ return this.instancePermissionsService
1191
+ .checkInstance(ctx, resourceDefinition.permissionsDefinition, {
1192
+ name,
1193
+ namespace,
1194
+ })
1195
+ .subscribe((result) => {
1196
+ const portalPermissions = ctx.portalPermissions ?? {};
1197
+ result.forEach((permission) => {
1198
+ portalPermissions[`${permissionKey(permission)}`] =
1199
+ permission.actions;
1200
+ });
1201
+ ctx.portalPermissions = portalPermissions;
1202
+ });
1203
+ }
1175
1204
  accamulatePortalPermissions(ctx) {
1176
1205
  const portalPermissions = ctx.portalPermissions ?? {};
1177
1206
  ctx.nodesPermissions?.forEach((permission) => {
@@ -1179,10 +1208,10 @@ class NodeContextProcessingServiceImpl {
1179
1208
  });
1180
1209
  ctx.portalPermissions = portalPermissions;
1181
1210
  }
1182
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NodeContextProcessingServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1183
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NodeContextProcessingServiceImpl, providedIn: 'root' }); }
1211
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: NodeContextProcessingServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1212
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: NodeContextProcessingServiceImpl, providedIn: 'root' }); }
1184
1213
  }
1185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NodeContextProcessingServiceImpl, decorators: [{
1214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: NodeContextProcessingServiceImpl, decorators: [{
1186
1215
  type: Injectable,
1187
1216
  args: [{
1188
1217
  providedIn: 'root',
@@ -1218,10 +1247,10 @@ class CustomRoutingConfigServiceImpl {
1218
1247
  keepURL,
1219
1248
  };
1220
1249
  }
1221
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CustomRoutingConfigServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1222
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CustomRoutingConfigServiceImpl }); }
1250
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: CustomRoutingConfigServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1251
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: CustomRoutingConfigServiceImpl }); }
1223
1252
  }
1224
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CustomRoutingConfigServiceImpl, decorators: [{
1253
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: CustomRoutingConfigServiceImpl, decorators: [{
1225
1254
  type: Injectable
1226
1255
  }], ctorParameters: () => [] });
1227
1256
 
@@ -1241,10 +1270,10 @@ class UserProfileConfigServiceImpl {
1241
1270
  ],
1242
1271
  };
1243
1272
  }
1244
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: UserProfileConfigServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1245
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: UserProfileConfigServiceImpl, providedIn: 'root' }); }
1273
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: UserProfileConfigServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1274
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: UserProfileConfigServiceImpl, providedIn: 'root' }); }
1246
1275
  }
1247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: UserProfileConfigServiceImpl, decorators: [{
1276
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: UserProfileConfigServiceImpl, decorators: [{
1248
1277
  type: Injectable,
1249
1278
  args: [{ providedIn: 'root' }]
1250
1279
  }] });
@@ -1262,10 +1291,10 @@ class OpenPersistentPanelListener {
1262
1291
  const target = mergePersistentPanelTargets(this.persistentPanelService.currentTarget(), persistentPanelTarget(this.luigiCoreService.getGlobalContext(), microFrontendNode?.context));
1263
1292
  this.persistentPanelService.open(config, target);
1264
1293
  }
1265
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: OpenPersistentPanelListener, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1266
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: OpenPersistentPanelListener, providedIn: 'root' }); }
1294
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: OpenPersistentPanelListener, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1295
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: OpenPersistentPanelListener, providedIn: 'root' }); }
1267
1296
  }
1268
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: OpenPersistentPanelListener, decorators: [{
1297
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.20", ngImport: i0, type: OpenPersistentPanelListener, decorators: [{
1269
1298
  type: Injectable,
1270
1299
  args: [{ providedIn: 'root' }]
1271
1300
  }] });