@scion/workbench 17.0.0-beta.8 → 18.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/activation-instant.provider.mjs +3 -3
- package/esm2022/lib/common/asserts.util.mjs +1 -1
- package/esm2022/lib/common/coerce-observable.pipe.mjs +3 -3
- package/esm2022/lib/common/dom.util.mjs +1 -1
- package/esm2022/lib/common/filter-by-predicate.pipe.mjs +3 -3
- package/esm2022/lib/common/filter-by-text.pipe.mjs +3 -3
- package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +4 -4
- package/esm2022/lib/common/instanceof.pipe.mjs +3 -3
- package/esm2022/lib/common/map-coerce.pipe.mjs +3 -3
- package/esm2022/lib/common/null-if-empty.pipe.mjs +4 -4
- package/esm2022/lib/common/observables.mjs +1 -1
- package/esm2022/lib/common/stringify-error.util.mjs +1 -1
- package/esm2022/lib/common/typeof.pipe.mjs +3 -3
- package/esm2022/lib/common//311/265destroy-ref.mjs +1 -1
- package/esm2022/lib/content-projection/content-as-overlay.component.mjs +3 -3
- package/esm2022/lib/content-projection/content-projection.directive.mjs +4 -4
- package/esm2022/lib/content-projection/view-container.reference.mjs +1 -1
- package/esm2022/lib/dialog/dialog-footer/dialog-action-filter.pipe.mjs +3 -3
- package/esm2022/lib/dialog/dialog-footer/dialog-footer.component.mjs +3 -3
- package/esm2022/lib/dialog/dialog-footer/workbench-dialog-action.directive.mjs +9 -6
- package/esm2022/lib/dialog/dialog-footer/workbench-dialog-footer.directive.mjs +9 -6
- package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +3 -3
- package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +9 -6
- package/esm2022/lib/dialog/movable.directive.mjs +4 -4
- package/esm2022/lib/dialog/resizable.directive.mjs +4 -4
- package/esm2022/lib/dialog/workbench-dialog.component.mjs +53 -24
- package/esm2022/lib/dialog/workbench-dialog.registry.mjs +4 -4
- package/esm2022/lib/dialog/workbench-dialog.service.mjs +3 -3
- package/esm2022/lib/dialog//311/265workbench-dialog.mjs +2 -2
- package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +4 -4
- package/esm2022/lib/executor/single-task-executor.mjs +26 -7
- package/esm2022/lib/filter-field/filter-field.component.mjs +4 -4
- package/esm2022/lib/glass-pane/glass-pane.directive.mjs +15 -7
- package/esm2022/lib/layout/grid-element/grid-element.component.mjs +4 -4
- package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +3 -3
- package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +4 -4
- package/esm2022/lib/layout/migration/workbench-layout-migration-v4.service.mjs +4 -4
- package/esm2022/lib/layout/workbench-layout.component.mjs +3 -3
- package/esm2022/lib/layout/workbench-layout.factory.mjs +3 -3
- package/esm2022/lib/layout/workbench-layout.service.mjs +3 -3
- package/esm2022/lib/layout/workbench-layouts.util.mjs +1 -1
- package/esm2022/lib/layout/workench-layout-serializer.service.mjs +4 -6
- package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +3 -3
- package/esm2022/lib/layout//311/265workbench-layout.mjs +7 -7
- package/esm2022/lib/logging/console-appender.service.mjs +4 -4
- package/esm2022/lib/logging/logger.mjs +3 -3
- package/esm2022/lib/logging/logging.model.mjs +3 -3
- package/esm2022/lib/logging//311/265logger.mjs +4 -4
- package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +4 -4
- package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +3 -3
- package/esm2022/lib/message-box/workbench-message-box.component.mjs +15 -6
- package/esm2022/lib/message-box/workbench-message-box.service.mjs +3 -3
- package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +4 -4
- package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +1 -1
- package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +26 -13
- package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +25 -13
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +4 -4
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +11 -11
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +5 -5
- package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +9 -7
- package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +112 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +43 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +11 -9
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +34 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.mjs +88 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.mjs +32 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +121 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-notification/microfrontend-notification-intent-handler.service.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-platform-config-loader.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +4 -4
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +9 -6
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +9 -15
- package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +4 -4
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +16 -9
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +4 -4
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +4 -4
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +4 -4
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +1 -1
- package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +43 -14
- package/esm2022/lib/migration/workbench-migrator.mjs +1 -1
- package/esm2022/lib/notification/notification-css-classes.pipe.mjs +3 -3
- package/esm2022/lib/notification/notification-list.component.mjs +3 -3
- package/esm2022/lib/notification/notification.component.mjs +4 -4
- package/esm2022/lib/notification/notification.service.mjs +4 -4
- package/esm2022/lib/notification/text-notification.component.mjs +3 -3
- package/esm2022/lib/notification//311/265notification.mjs +1 -1
- package/esm2022/lib/page-not-found/format-url.pipe.mjs +3 -3
- package/esm2022/lib/page-not-found/page-not-found.component.mjs +3 -3
- package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +3 -3
- package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +3 -3
- package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +4 -4
- package/esm2022/lib/part/part-bar/part-bar.component.mjs +4 -4
- package/esm2022/lib/part/part-portal.pipe.mjs +4 -4
- package/esm2022/lib/part/part.component.mjs +3 -3
- package/esm2022/lib/part/view-context-menu/accelerator-format.pipe.mjs +4 -4
- package/esm2022/lib/part/view-context-menu/text.component.mjs +3 -3
- package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +4 -4
- package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +4 -4
- package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +4 -4
- package/esm2022/lib/part/view-list/view-list.component.mjs +3 -3
- package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +4 -4
- package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +3 -3
- package/esm2022/lib/part/view-tab/view-tab.component.mjs +4 -4
- package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +3 -3
- package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +3 -3
- package/esm2022/lib/part/workbench-part-action.registry.mjs +3 -3
- package/esm2022/lib/part/workbench-part.registry.mjs +3 -3
- package/esm2022/lib/part//311/265workbench-part.model.mjs +1 -1
- package/esm2022/lib/perspective/migration/workbench-perspective-migration-v2.service.mjs +4 -4
- package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +4 -4
- package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +4 -4
- package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +4 -4
- package/esm2022/lib/perspective/workbench-perspective.registry.mjs +3 -3
- package/esm2022/lib/perspective/workbench-perspective.service.mjs +4 -4
- package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +4 -4
- package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +1 -1
- package/esm2022/lib/popup/popup.component.mjs +22 -10
- package/esm2022/lib/popup/popup.config.mjs +3 -1
- package/esm2022/lib/popup/popup.service.mjs +4 -4
- package/esm2022/lib/portal/wb-component-portal.mjs +1 -1
- package/esm2022/lib/portal/workbench-portal-outlet.directive.mjs +4 -4
- package/esm2022/lib/registry/workbench-object-registry.mjs +1 -1
- package/esm2022/lib/routing/empty-outlet/empty-outlet.component.mjs +3 -3
- package/esm2022/lib/routing/router.util.mjs +8 -2
- package/esm2022/lib/routing/routing.model.mjs +1 -1
- package/esm2022/lib/routing/url-segment-matcher.mjs +1 -1
- package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +4 -4
- package/esm2022/lib/routing/workbench-dialog-differ.mjs +5 -5
- package/esm2022/lib/routing/workbench-layout-differ.mjs +3 -3
- package/esm2022/lib/routing/workbench-message-box-differ.mjs +51 -0
- package/esm2022/lib/routing/workbench-popup-differ.mjs +3 -3
- package/esm2022/lib/routing/workbench-router-link.directive.mjs +5 -5
- package/esm2022/lib/routing/workbench-router.service.mjs +3 -3
- package/esm2022/lib/routing/workbench-url-observer.service.mjs +52 -69
- package/esm2022/lib/routing//311/265location.mjs +3 -3
- package/esm2022/lib/routing//311/265workbench-router.service.mjs +9 -12
- package/esm2022/lib/startup/splash/splash.component.mjs +3 -3
- package/esm2022/lib/startup/workbench-initializer.mjs +1 -1
- package/esm2022/lib/startup/workbench-launcher.service.mjs +7 -7
- package/esm2022/lib/storage/workbench-storage.mjs +3 -3
- package/esm2022/lib/testing/workbench-testing.module.mjs +4 -4
- package/esm2022/lib/testing/workbench.provider.mjs +3 -3
- package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +4 -4
- package/esm2022/lib/view/view-move-handler.service.mjs +4 -4
- package/esm2022/lib/view/view-portal.pipe.mjs +4 -4
- package/esm2022/lib/view/view.component.mjs +17 -10
- package/esm2022/lib/view/workbench-view-route-guards.mjs +1 -1
- package/esm2022/lib/view/workbench-view.registry.mjs +3 -3
- package/esm2022/lib/view//311/265workbench-view.model.mjs +1 -1
- package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +1 -1
- package/esm2022/lib/view-dnd/requires-drop-zone.pipe.mjs +4 -4
- package/esm2022/lib/view-dnd/view-drag.service.mjs +4 -4
- package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +3 -3
- package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +4 -4
- package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +5 -5
- package/esm2022/lib/workbench.component.mjs +10 -6
- package/esm2022/lib/workbench.constants.mjs +5 -1
- package/esm2022/lib/workbench.module.mjs +4 -4
- package/esm2022/lib/workbench.provider.mjs +1 -1
- package/esm2022/lib/workbench.service.mjs +3 -3
- package/esm2022/lib//311/265workbench.service.mjs +3 -3
- package/fesm2022/scion-workbench.mjs +1179 -714
- package/fesm2022/scion-workbench.mjs.map +1 -1
- package/lib/common/objects.util.d.ts +2 -2
- package/lib/dialog/workbench-dialog.component.d.ts +16 -7
- package/lib/executor/single-task-executor.d.ts +6 -1
- package/lib/glass-pane/glass-pane.directive.d.ts +21 -0
- package/lib/message-box/workbench-message-box.component.d.ts +3 -0
- package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +7 -1
- package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +1 -0
- package/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.d.ts +39 -0
- package/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.d.ts +25 -0
- package/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.d.ts +3 -2
- package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.d.ts +10 -0
- package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.d.ts +28 -0
- package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.d.ts +11 -0
- package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.d.ts +48 -0
- package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +3 -7
- package/lib/microfrontend-platform/workbench-microfrontend-support.d.ts +1 -1
- package/lib/popup/popup.component.d.ts +1 -0
- package/lib/routing/router.util.d.ts +4 -0
- package/lib/routing/workbench-message-box-differ.d.ts +25 -0
- package/lib/routing/workbench-url-observer.service.d.ts +7 -25
- package/lib/routing//311/265workbench-router.service.d.ts +3 -4
- package/lib/workbench.constants.d.ts +4 -0
- package/package.json +10 -10
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v1.model.mjs +0 -11
- package/esm2022/lib/layout/migration/workbench-layout-migration-v2.service.mjs +0 -59
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.service.mjs +0 -46
- package/lib/layout/migration/model/workbench-layout-migration-v1.model.d.ts +0 -16
- package/lib/layout/migration/workbench-layout-migration-v2.service.d.ts +0 -13
- package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.service.d.ts +0 -17
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Component, ChangeDetectionStrategy, Injectable, Inject, Optional, makeEnvironmentProviders, Pipe, NgZone, inject, runInInjectionContext, HostBinding, Input, EventEmitter, Directive, Output, Injector, HostListener, ElementRef, isDevMode, EnvironmentInjector, ApplicationInitStatus, APP_INITIALIZER, ViewContainerRef, ViewChild, createComponent, forwardRef, ViewChildren, booleanAttribute,
|
|
3
|
-
import { BehaviorSubject, Subject, merge, fromEvent, Observable, EMPTY, zip, of, skip, audit, concat, AsyncSubject, lastValueFrom, firstValueFrom,
|
|
2
|
+
import { InjectionToken, Component, ChangeDetectionStrategy, Injectable, Inject, Optional, makeEnvironmentProviders, Pipe, NgZone, inject, DestroyRef, runInInjectionContext, HostBinding, Input, EventEmitter, Directive, Output, Injector, HostListener, ElementRef, isDevMode, EnvironmentInjector, ApplicationInitStatus, APP_INITIALIZER, ViewContainerRef, ViewChild, createComponent, forwardRef, ViewChildren, booleanAttribute, CUSTOM_ELEMENTS_SCHEMA, ApplicationRef, ENVIRONMENT_INITIALIZER, NgModule } from '@angular/core';
|
|
3
|
+
import { BehaviorSubject, Subject, merge, fromEvent, Observable, EMPTY, zip, of, skip, audit, concat, noop, asapScheduler, AsyncSubject, lastValueFrom, firstValueFrom, timer, combineLatest, mergeWith, identity, share, ReplaySubject, switchMap as switchMap$1, race, map as map$1, concatWith, delay, animationFrameScheduler, combineLatestWith, pairwise, withLatestFrom, interval, from, mergeMap as mergeMap$1 } from 'rxjs';
|
|
4
4
|
import { SciThrobberComponent } from '@scion/components/throbber';
|
|
5
5
|
import * as i2 from '@angular/router';
|
|
6
6
|
import { NavigationStart, Router, PRIMARY_OUTLET, RouterOutlet, NavigationEnd, UrlSegment, ChildrenOutletContexts, ActivationStart, RouterEvent, NavigationCancel, NavigationError, GuardsCheckEnd, ROUTES } from '@angular/router';
|
|
7
|
-
import { startWith, filter, map, take, mergeMap, catchError, takeUntil, switchMap, distinctUntilChanged, first,
|
|
7
|
+
import { startWith, filter, map, take, mergeMap, observeOn, catchError, takeUntil, switchMap, distinctUntilChanged, first, shareReplay, expand, debounceTime } from 'rxjs/operators';
|
|
8
8
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
9
9
|
import * as i3$1 from '@angular/common';
|
|
10
10
|
import { NgIf, NgFor, AsyncPipe, DOCUMENT, NgClass, NgComponentOutlet, NgTemplateOutlet, KeyValuePipe, Location, LocationStrategy } from '@angular/common';
|
|
@@ -29,7 +29,8 @@ import { FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/fo
|
|
|
29
29
|
import * as i2$3 from '@scion/microfrontend-platform';
|
|
30
30
|
import { MessageHeaders, MessageClient, ResponseStatusCodes, MicrofrontendPlatformConfig, APP_IDENTITY, mapToBody, HostManifestInterceptor, ObservableDecorator, IntentInterceptor, CapabilityInterceptor, MicrofrontendPlatformHost, MicrofrontendPlatform, IntentClient, OutletRouter, ManifestService, PlatformPropertyService } from '@scion/microfrontend-platform';
|
|
31
31
|
import { Beans } from '@scion/toolkit/bean-manager';
|
|
32
|
-
import
|
|
32
|
+
import * as i1$1 from '@scion/workbench-client';
|
|
33
|
+
import { eMESSAGE_BOX_MESSAGE_PARAM, WorkbenchCapabilities, ɵMicrofrontendRouteParams as _MicrofrontendRouteParams, ɵTHEME_CONTEXT_KEY as _THEME_CONTEXT_KEY, ɵWorkbenchCommands as _WorkbenchCommands, ɵWorkbenchPopupMessageHeaders as _WorkbenchPopupMessageHeaders, ɵPOPUP_CONTEXT as _POPUP_CONTEXT, WorkbenchPopup, ɵDIALOG_CONTEXT as _DIALOG_CONTEXT, ɵWorkbenchDialogMessageHeaders as _WorkbenchDialogMessageHeaders, WorkbenchDialog as WorkbenchDialog$1, WorkbenchMessageBox, ɵMESSAGE_BOX_CONTEXT as _MESSAGE_BOX_CONTEXT, WorkbenchRouter as WorkbenchRouter$1, WorkbenchPopupService, WorkbenchMessageBoxService as WorkbenchMessageBoxService$1, ɵWorkbenchMessageBoxService as _WorkbenchMessageBoxService, WorkbenchDialogService as WorkbenchDialogService$1, ɵWorkbenchDialogService as _WorkbenchDialogService, WorkbenchNotificationService, ɵVIEW_ID_CONTEXT_KEY as _VIEW_ID_CONTEXT_KEY } from '@scion/workbench-client';
|
|
33
34
|
import { Crypto } from '@scion/toolkit/crypto';
|
|
34
35
|
import { provideNoopAnimations } from '@angular/platform-browser/animations';
|
|
35
36
|
import { ComponentFixtureAutoDetect } from '@angular/core/testing';
|
|
@@ -128,10 +129,10 @@ const WORKBENCH_ELEMENT_REF = new InjectionToken('WORKBENCH_ELEMENT_REF', {
|
|
|
128
129
|
* Default splash displayed while starting the workbench.
|
|
129
130
|
*/
|
|
130
131
|
class SplashComponent {
|
|
131
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
132
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
132
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SplashComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
133
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: SplashComponent, isStandalone: true, selector: "wb-splash", ngImport: i0, template: "<sci-throbber type=\"ellipsis\"></sci-throbber>\n", styles: [":host{display:grid;justify-content:center;margin-top:3em}:host>sci-throbber{--sci-throbber-size: 80px}\n"], dependencies: [{ kind: "component", type: SciThrobberComponent, selector: "sci-throbber", inputs: ["type"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
133
134
|
}
|
|
134
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SplashComponent, decorators: [{
|
|
135
136
|
type: Component,
|
|
136
137
|
args: [{ selector: 'wb-splash', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [SciThrobberComponent], template: "<sci-throbber type=\"ellipsis\"></sci-throbber>\n", styles: [":host{display:grid;justify-content:center;margin-top:3em}:host>sci-throbber{--sci-throbber-size: 80px}\n"] }]
|
|
137
138
|
}] });
|
|
@@ -159,10 +160,10 @@ var LogLevel;
|
|
|
159
160
|
* Delivers log events to a destination, e.g., writing logs to the console.
|
|
160
161
|
*/
|
|
161
162
|
class LogAppender {
|
|
162
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
163
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
163
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: LogAppender, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
164
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: LogAppender }); }
|
|
164
165
|
}
|
|
165
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: LogAppender, decorators: [{
|
|
166
167
|
type: Injectable
|
|
167
168
|
}] });
|
|
168
169
|
/**
|
|
@@ -215,10 +216,10 @@ class ConsoleAppender {
|
|
|
215
216
|
hasConsole(severity) {
|
|
216
217
|
return console && typeof console[severity] === 'function';
|
|
217
218
|
}
|
|
218
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
219
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
219
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ConsoleAppender, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
220
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ConsoleAppender }); }
|
|
220
221
|
}
|
|
221
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
222
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ConsoleAppender, decorators: [{
|
|
222
223
|
type: Injectable
|
|
223
224
|
}] });
|
|
224
225
|
|
|
@@ -265,10 +266,10 @@ class ɵLogger {
|
|
|
265
266
|
return router.events
|
|
266
267
|
.pipe(startWith(router.url), filter((event) => event instanceof NavigationStart), map(routerEvent => router.parseUrl(routerEvent.url).queryParamMap), map(queryParamMap => queryParamMap.get('loglevel')?.toUpperCase()), map(logLevelString => logLevelString ? LogLevel[logLevelString] : undefined));
|
|
267
268
|
}
|
|
268
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
269
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
269
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵLogger, deps: [{ token: LogAppender, optional: true }, { token: i2.Router }, { token: LogLevel }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
270
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵLogger }); }
|
|
270
271
|
}
|
|
271
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
272
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵLogger, decorators: [{
|
|
272
273
|
type: Injectable
|
|
273
274
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
274
275
|
type: Inject,
|
|
@@ -312,10 +313,10 @@ function coerceLogEvent(level, message, args) {
|
|
|
312
313
|
* @see {@link LogAppender}
|
|
313
314
|
*/
|
|
314
315
|
class Logger {
|
|
315
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
316
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
316
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: Logger, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
317
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: Logger, providedIn: 'root', useClass: ɵLogger }); }
|
|
317
318
|
}
|
|
318
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
319
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: Logger, decorators: [{
|
|
319
320
|
type: Injectable,
|
|
320
321
|
args: [{ providedIn: 'root', useClass: ɵLogger }]
|
|
321
322
|
}] });
|
|
@@ -496,10 +497,10 @@ class InstanceofPipe {
|
|
|
496
497
|
transform(object, type) {
|
|
497
498
|
return object instanceof type ? object : null;
|
|
498
499
|
}
|
|
499
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
500
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
500
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: InstanceofPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
501
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: InstanceofPipe, isStandalone: true, name: "wbInstanceof" }); }
|
|
501
502
|
}
|
|
502
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
503
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: InstanceofPipe, decorators: [{
|
|
503
504
|
type: Pipe,
|
|
504
505
|
args: [{ name: 'wbInstanceof', standalone: true }]
|
|
505
506
|
}] });
|
|
@@ -814,10 +815,10 @@ class ViewDragService {
|
|
|
814
815
|
this._viewDragStartBroadcastChannel.destroy();
|
|
815
816
|
this._viewDragEndBroadcastChannel.destroy();
|
|
816
817
|
}
|
|
817
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
818
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
818
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewDragService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
819
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewDragService, providedIn: 'root' }); }
|
|
819
820
|
}
|
|
820
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
821
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewDragService, decorators: [{
|
|
821
822
|
type: Injectable,
|
|
822
823
|
args: [{ providedIn: 'root' }]
|
|
823
824
|
}], ctorParameters: () => [{ type: i0.NgZone }] });
|
|
@@ -877,10 +878,10 @@ class WorkbenchLayoutService {
|
|
|
877
878
|
get layout() {
|
|
878
879
|
return this._layout$.value;
|
|
879
880
|
}
|
|
880
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
881
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
881
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutService, deps: [{ token: ViewDragService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
882
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutService, providedIn: 'root' }); }
|
|
882
883
|
}
|
|
883
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
884
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutService, decorators: [{
|
|
884
885
|
type: Injectable,
|
|
885
886
|
args: [{ providedIn: 'root' }]
|
|
886
887
|
}], ctorParameters: () => [{ type: ViewDragService }] });
|
|
@@ -962,10 +963,10 @@ class WorkbenchPartRegistry {
|
|
|
962
963
|
this._registry.objects.forEach(part => part.destroy());
|
|
963
964
|
this._registry.clear();
|
|
964
965
|
}
|
|
965
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
966
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
966
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPartRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
967
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPartRegistry, providedIn: 'root' }); }
|
|
967
968
|
}
|
|
968
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
969
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPartRegistry, decorators: [{
|
|
969
970
|
type: Injectable,
|
|
970
971
|
args: [{ providedIn: 'root' }]
|
|
971
972
|
}] });
|
|
@@ -994,10 +995,10 @@ class PartPortalPipe {
|
|
|
994
995
|
}
|
|
995
996
|
return this._partRegistry.get(partId).createPortalFromInjectionContext(this._injector);
|
|
996
997
|
}
|
|
997
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
998
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
998
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartPortalPipe, deps: [{ token: WorkbenchPartRegistry }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
999
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: PartPortalPipe, isStandalone: true, name: "wbPartPortal" }); }
|
|
999
1000
|
}
|
|
1000
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1001
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartPortalPipe, decorators: [{
|
|
1001
1002
|
type: Pipe,
|
|
1002
1003
|
args: [{ name: 'wbPartPortal', standalone: true }]
|
|
1003
1004
|
}], ctorParameters: () => [{ type: WorkbenchPartRegistry }, { type: i0.Injector }] });
|
|
@@ -1041,6 +1042,10 @@ const POPUP_ID_PREFIX = 'popup.';
|
|
|
1041
1042
|
* Represents the id prefix of dialogs.
|
|
1042
1043
|
*/
|
|
1043
1044
|
const DIALOG_ID_PREFIX = 'dialog.';
|
|
1045
|
+
/**
|
|
1046
|
+
* Represents the id prefix of message boxes.
|
|
1047
|
+
*/
|
|
1048
|
+
const MESSAGE_BOX_ID_PREFIX = 'messagebox.';
|
|
1044
1049
|
/**
|
|
1045
1050
|
* Name of the query parameter that contains the layout of the main area.
|
|
1046
1051
|
*/
|
|
@@ -1122,7 +1127,42 @@ const WorkbenchLayouts = {
|
|
|
1122
1127
|
};
|
|
1123
1128
|
|
|
1124
1129
|
/*
|
|
1125
|
-
* Copyright (c) 2018-
|
|
1130
|
+
* Copyright (c) 2018-2023 Swiss Federal Railways
|
|
1131
|
+
*
|
|
1132
|
+
* This program and the accompanying materials are made
|
|
1133
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
1134
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
1135
|
+
*
|
|
1136
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
1137
|
+
*/
|
|
1138
|
+
/**
|
|
1139
|
+
* Implementation of {@link DestroyRef} that can be used in non-Angular managed workbench objects such as handles.
|
|
1140
|
+
*/
|
|
1141
|
+
class ɵDestroyRef {
|
|
1142
|
+
constructor() {
|
|
1143
|
+
this._callbacks = new Set();
|
|
1144
|
+
this._destroyed = false;
|
|
1145
|
+
}
|
|
1146
|
+
onDestroy(callback) {
|
|
1147
|
+
if (this._destroyed) {
|
|
1148
|
+
callback();
|
|
1149
|
+
return noop;
|
|
1150
|
+
}
|
|
1151
|
+
this._callbacks.add(callback);
|
|
1152
|
+
return () => this._callbacks.delete(callback);
|
|
1153
|
+
}
|
|
1154
|
+
destroy() {
|
|
1155
|
+
this._callbacks.forEach(callback => callback());
|
|
1156
|
+
this._callbacks.clear();
|
|
1157
|
+
this._destroyed = true;
|
|
1158
|
+
}
|
|
1159
|
+
get destroyed() {
|
|
1160
|
+
return this._destroyed;
|
|
1161
|
+
}
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
/*
|
|
1165
|
+
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
1126
1166
|
*
|
|
1127
1167
|
* This program and the accompanying materials are made
|
|
1128
1168
|
* available under the terms of the Eclipse Public License 2.0
|
|
@@ -1130,6 +1170,17 @@ const WorkbenchLayouts = {
|
|
|
1130
1170
|
*
|
|
1131
1171
|
* SPDX-License-Identifier: EPL-2.0
|
|
1132
1172
|
*/
|
|
1173
|
+
/**
|
|
1174
|
+
* Serializes navigation requests to the Angular Router to prevent cancelling of parallel navigations or race conditions when modifying the currently active workbench layout.
|
|
1175
|
+
*/
|
|
1176
|
+
const SINGLE_NAVIGATION_EXECUTOR = new InjectionToken('SINGLE_NAVIGATION_EXECUTOR', {
|
|
1177
|
+
providedIn: 'root',
|
|
1178
|
+
factory: () => {
|
|
1179
|
+
const executor = new SingleTaskExecutor();
|
|
1180
|
+
inject(DestroyRef).onDestroy(() => executor.destroy());
|
|
1181
|
+
return executor;
|
|
1182
|
+
},
|
|
1183
|
+
});
|
|
1133
1184
|
/**
|
|
1134
1185
|
* Allows the serial execution of tasks.
|
|
1135
1186
|
*
|
|
@@ -1139,9 +1190,14 @@ const WorkbenchLayouts = {
|
|
|
1139
1190
|
class SingleTaskExecutor {
|
|
1140
1191
|
constructor() {
|
|
1141
1192
|
this._task$ = new Subject();
|
|
1142
|
-
this.
|
|
1193
|
+
this._destroyRef = new ɵDestroyRef();
|
|
1143
1194
|
this._task$
|
|
1144
|
-
.pipe(
|
|
1195
|
+
.pipe(
|
|
1196
|
+
// Schedule the task asynchronously so that it is not executed if the executor is destroyed in the same "call stack",
|
|
1197
|
+
// happening, for example, when destroying the Testbed in unit tests. Angular destroys contexts from the bottom up,
|
|
1198
|
+
// i.e., child contexts are destroyed before parent contexts. If a task is scheduled in a destroy lifecycle hook of
|
|
1199
|
+
// a child context, the task would still be executed because the executor is not destroyed yet.
|
|
1200
|
+
observeOn(asapScheduler), serializeExecution(task => task.execute()), catchError((error, caught) => caught), takeUntilDestroyed(this._destroyRef))
|
|
1145
1201
|
.subscribe();
|
|
1146
1202
|
}
|
|
1147
1203
|
/**
|
|
@@ -1158,7 +1214,7 @@ class SingleTaskExecutor {
|
|
|
1158
1214
|
* Destroys this executor.
|
|
1159
1215
|
*/
|
|
1160
1216
|
destroy() {
|
|
1161
|
-
this.
|
|
1217
|
+
this._destroyRef.destroy();
|
|
1162
1218
|
}
|
|
1163
1219
|
}
|
|
1164
1220
|
class Task {
|
|
@@ -1308,6 +1364,12 @@ const RouterUtils = {
|
|
|
1308
1364
|
isDialogOutlet: (outlet) => {
|
|
1309
1365
|
return outlet?.startsWith(DIALOG_ID_PREFIX) ?? false;
|
|
1310
1366
|
},
|
|
1367
|
+
/**
|
|
1368
|
+
* Tests if the given outlet matches the format of a message box outlet.
|
|
1369
|
+
*/
|
|
1370
|
+
isMessageBoxOutlet: (outlet) => {
|
|
1371
|
+
return outlet?.startsWith(MESSAGE_BOX_ID_PREFIX) ?? false;
|
|
1372
|
+
},
|
|
1311
1373
|
/**
|
|
1312
1374
|
* Reads view outlets from given URL.
|
|
1313
1375
|
*
|
|
@@ -1451,10 +1513,10 @@ class WorkbenchViewRegistry {
|
|
|
1451
1513
|
this._registry.objects.forEach(view => view.destroy());
|
|
1452
1514
|
this._registry.clear();
|
|
1453
1515
|
}
|
|
1454
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1455
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1516
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchViewRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1517
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchViewRegistry, providedIn: 'root' }); }
|
|
1456
1518
|
}
|
|
1457
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1519
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchViewRegistry, decorators: [{
|
|
1458
1520
|
type: Injectable,
|
|
1459
1521
|
args: [{ providedIn: 'root' }]
|
|
1460
1522
|
}] });
|
|
@@ -1468,7 +1530,7 @@ class ɵWorkbenchRouter {
|
|
|
1468
1530
|
this._injector = _injector;
|
|
1469
1531
|
this._logger = _logger;
|
|
1470
1532
|
this._zone = _zone;
|
|
1471
|
-
this.
|
|
1533
|
+
this._singleNavigationExecutor = inject(SINGLE_NAVIGATION_EXECUTOR);
|
|
1472
1534
|
/**
|
|
1473
1535
|
* Holds the current navigational context during a workbench navigation, or `null` if no navigation is in progress.
|
|
1474
1536
|
*/
|
|
@@ -1488,7 +1550,7 @@ class ɵWorkbenchRouter {
|
|
|
1488
1550
|
}
|
|
1489
1551
|
const navigateFn = typeof commandsOrNavigateFn === 'function' ? commandsOrNavigateFn : createNavigationFromCommands(commandsOrNavigateFn, extras ?? {});
|
|
1490
1552
|
// Serialize navigation requests to prevent race conditions when modifying the currently active workbench layout.
|
|
1491
|
-
return this.
|
|
1553
|
+
return this._singleNavigationExecutor.submit(async () => {
|
|
1492
1554
|
// Wait until the initial layout is available, i.e., after completion of Angular's initial navigation.
|
|
1493
1555
|
// Otherwise, this navigation would override the initial layout as given in the URL.
|
|
1494
1556
|
if (!this._workbenchLayoutService.layout) {
|
|
@@ -1543,7 +1605,7 @@ class ɵWorkbenchRouter {
|
|
|
1543
1605
|
if (!NgZone.isInAngularZone()) {
|
|
1544
1606
|
return this._zone.run(() => this.createUrlTree(onNavigate, extras));
|
|
1545
1607
|
}
|
|
1546
|
-
return this.
|
|
1608
|
+
return this._singleNavigationExecutor.submit(async () => {
|
|
1547
1609
|
// Wait until the initial layout is available, i.e., after completion of Angular's initial navigation.
|
|
1548
1610
|
// Otherwise, would override the initial layout as given in the URL.
|
|
1549
1611
|
if (!this._workbenchLayoutService.layout) {
|
|
@@ -1611,13 +1673,10 @@ class ɵWorkbenchRouter {
|
|
|
1611
1673
|
async waitForInitialLayout() {
|
|
1612
1674
|
await firstValueFrom(this._workbenchLayoutService.layout$);
|
|
1613
1675
|
}
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
}
|
|
1617
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ɵWorkbenchRouter, deps: [{ token: i2.Router }, { token: WorkbenchLayoutService }, { token: WorkbenchViewRegistry }, { token: i0.Injector }, { token: Logger }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1618
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ɵWorkbenchRouter, providedIn: 'root' }); }
|
|
1676
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchRouter, deps: [{ token: i2.Router }, { token: WorkbenchLayoutService }, { token: WorkbenchViewRegistry }, { token: i0.Injector }, { token: Logger }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1677
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchRouter, providedIn: 'root' }); }
|
|
1619
1678
|
}
|
|
1620
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1679
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchRouter, decorators: [{
|
|
1621
1680
|
type: Injectable,
|
|
1622
1681
|
args: [{ providedIn: 'root' }]
|
|
1623
1682
|
}], ctorParameters: () => [{ type: i2.Router }, { type: WorkbenchLayoutService }, { type: WorkbenchViewRegistry }, { type: i0.Injector }, { type: Logger }, { type: i0.NgZone }] });
|
|
@@ -1830,10 +1889,10 @@ class GridElementComponent {
|
|
|
1830
1889
|
}
|
|
1831
1890
|
return [];
|
|
1832
1891
|
}
|
|
1833
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1834
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1892
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: GridElementComponent, deps: [{ token: ɵWorkbenchRouter }, { token: WorkbenchLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1893
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: GridElementComponent, isStandalone: true, selector: "wb-grid-element", inputs: { element: "element" }, host: { properties: { "attr.data-parentnodeid": "this.parentNodeId", "attr.data-nodeid": "this.nodeId", "attr.data-partid": "this.partId" } }, usesOnChanges: true, ngImport: i0, template: "<!-- MPart (leaf) -->\n<ng-container *ngIf=\"element | wbInstanceof:MPart as part\" [cdkPortalOutlet]=\"part.id | wbPartPortal\"></ng-container>\n\n<!-- MTreeNode -->\n<ng-container *ngIf=\"element | wbInstanceof:MTreeNode as treeNode\">\n <!-- Node with a single visible child. -->\n <wb-grid-element *ngIf=\"children.length === 1\" [element]=\"children[0].element\"></wb-grid-element>\n\n <!-- Node with multiple visible children. -->\n <sci-sashbox *ngIf=\"children.length > 1\"\n [direction]=\"treeNode.direction\"\n [attr.data-nodeid]=\"treeNode.nodeId\"\n (sashStart)=\"onSashStart()\"\n (sashEnd)=\"onSashEnd(treeNode, $event)\">\n <ng-template *ngFor=\"let child of children; index as i; trackBy: indexTrackByFn\" sciSash [size]=\"child.size\">\n <wb-grid-element [element]=\"child.element\" [class]=\"'sash-' + (i + 1)\"></wb-grid-element>\n </ng-template>\n </sci-sashbox>\n</ng-container>\n", styles: [":host{display:grid}:host>sci-sashbox{z-index:auto;--sci-sashbox-gap: 0;--sci-sashbox-splitter-background-color: var(--sci-workbench-part-divider-color);--sci-sashbox-splitter-background-color-hover: var(--sci-workbench-part-divider-color-hover);--sci-sashbox-splitter-size: var(--sci-workbench-part-divider-size);--sci-sashbox-splitter-size-hover: var(--sci-workbench-part-divider-size-hover);--sci-sashbox-splitter-touch-target-size: var(--sci-workbench-part-divider-touch-target-size);--sci-sashbox-splitter-border-radius: 0;--sci-sashbox-splitter-opacity-active: var(--sci-workbench-part-divider-opacity-active);--sci-sashbox-splitter-opacity-hover: var(--sci-workbench-part-divider-opacity-hover)}\n"], dependencies: [{ kind: "component", type: GridElementComponent, selector: "wb-grid-element", inputs: ["element"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: InstanceofPipe, name: "wbInstanceof" }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "pipe", type: PartPortalPipe, name: "wbPartPortal" }, { kind: "component", type: SciSashboxComponent, selector: "sci-sashbox", inputs: ["direction"], outputs: ["sashStart", "sashEnd"] }, { kind: "directive", type: SciSashDirective, selector: "ng-template[sciSash]", inputs: ["size", "minSize"], exportAs: ["sciSash"] }] }); }
|
|
1835
1894
|
}
|
|
1836
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1895
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: GridElementComponent, decorators: [{
|
|
1837
1896
|
type: Component,
|
|
1838
1897
|
args: [{ selector: 'wb-grid-element', standalone: true, imports: [
|
|
1839
1898
|
NgIf,
|
|
@@ -1889,10 +1948,10 @@ class RequiresDropZonePipe {
|
|
|
1889
1948
|
transform(element, region) {
|
|
1890
1949
|
return requiresDropZone(element, region);
|
|
1891
1950
|
}
|
|
1892
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1893
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
1951
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: RequiresDropZonePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1952
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: RequiresDropZonePipe, isStandalone: true, name: "wbRequiresDropZone" }); }
|
|
1894
1953
|
}
|
|
1895
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1954
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: RequiresDropZonePipe, decorators: [{
|
|
1896
1955
|
type: Pipe,
|
|
1897
1956
|
args: [{ name: 'wbRequiresDropZone', standalone: true }]
|
|
1898
1957
|
}] });
|
|
@@ -2094,10 +2153,10 @@ class ViewDropPlaceholderRenderer {
|
|
|
2094
2153
|
this._dropPlaceholder = null;
|
|
2095
2154
|
});
|
|
2096
2155
|
}
|
|
2097
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2098
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
2156
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewDropPlaceholderRenderer, deps: [{ token: ViewDragService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2157
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewDropPlaceholderRenderer, providedIn: 'root' }); }
|
|
2099
2158
|
}
|
|
2100
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewDropPlaceholderRenderer, decorators: [{
|
|
2101
2160
|
type: Injectable,
|
|
2102
2161
|
args: [{ providedIn: 'root' }]
|
|
2103
2162
|
}], ctorParameters: () => [{ type: ViewDragService }, { type: i0.NgZone }] });
|
|
@@ -2244,10 +2303,10 @@ class ViewDropZoneDirective {
|
|
|
2244
2303
|
setStyle(this._host, { 'position': 'relative' });
|
|
2245
2304
|
}
|
|
2246
2305
|
}
|
|
2247
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2248
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
2306
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewDropZoneDirective, deps: [{ token: i0.ElementRef }, { token: ViewDragService }, { token: ViewDropPlaceholderRenderer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2307
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: ViewDropZoneDirective, isStandalone: true, selector: "[wbViewDropZone]", inputs: { regions: ["wbViewDropZoneRegions", "regions"], cssClass: ["wbViewDropZoneCssClass", "cssClass"], dropZoneSize: ["wbViewDropZoneSize", "dropZoneSize"], dropPlaceholderSize: ["wbViewDropZonePlaceholderSize", "dropPlaceholderSize"] }, outputs: { viewDrop: "wbViewDropZoneDrop" }, ngImport: i0 }); }
|
|
2249
2308
|
}
|
|
2250
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2309
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewDropZoneDirective, decorators: [{
|
|
2251
2310
|
type: Directive,
|
|
2252
2311
|
args: [{ selector: '[wbViewDropZone]', standalone: true }]
|
|
2253
2312
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: ViewDragService }, { type: ViewDropPlaceholderRenderer }, { type: i0.NgZone }], propDecorators: { regions: [{
|
|
@@ -2296,10 +2355,10 @@ class GridElementIfVisiblePipe {
|
|
|
2296
2355
|
}
|
|
2297
2356
|
return null;
|
|
2298
2357
|
}
|
|
2299
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2300
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
2358
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: GridElementIfVisiblePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2359
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: GridElementIfVisiblePipe, isStandalone: true, name: "wbGridElementIfVisible" }); }
|
|
2301
2360
|
}
|
|
2302
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2361
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: GridElementIfVisiblePipe, decorators: [{
|
|
2303
2362
|
type: Pipe,
|
|
2304
2363
|
args: [{ name: 'wbGridElementIfVisible', standalone: true }]
|
|
2305
2364
|
}] });
|
|
@@ -2448,10 +2507,10 @@ class WorkbenchLayoutComponent {
|
|
|
2448
2507
|
}),
|
|
2449
2508
|
});
|
|
2450
2509
|
}
|
|
2451
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2452
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2510
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutComponent, deps: [{ token: WORKBENCH_ID }, { token: ViewDragService }, { token: WorkbenchLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2511
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: WorkbenchLayoutComponent, isStandalone: true, selector: "wb-workbench-layout", ngImport: i0, template: "@if (grid?.root | wbGridElementIfVisible; as root) {\n <wb-grid-element [element]=\"root\"\n wbViewDropZone\n [wbViewDropZoneSize]=\"50\"\n [wbViewDropZonePlaceholderSize]=\"50\"\n [wbViewDropZoneRegions]=\"{\n north: false,\n south: root | wbRequiresDropZone:'south',\n west: root | wbRequiresDropZone:'west',\n east: root | wbRequiresDropZone:'east',\n center: false,\n }\"\n [wbViewDropZoneCssClass]=\"'e2e-workbench-grid'\"\n (wbViewDropZoneDrop)=\"onViewDrop($event)\">\n </wb-grid-element>\n}\n@else {\n <sci-viewport class=\"start-page\"\n wbViewDropZone\n [wbViewDropZoneSize]=\"1\"\n [wbViewDropZoneRegions]=\"{center: true, north: false, south: false, west: false, east: false}\"\n [wbViewDropZoneCssClass]=\"'e2e-workbench-grid'\"\n (wbViewDropZoneDrop)=\"onViewDrop($event)\">\n <router-outlet/>\n </sci-viewport>\n}\n", styles: [":host{display:flex;flex-direction:column}:host>wb-grid-element,:host>sci-viewport.start-page{flex:1 1 0}:host>sci-viewport.start-page>router-outlet{position:absolute}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: GridElementComponent, selector: "wb-grid-element", inputs: ["element"] }, { kind: "pipe", type: GridElementIfVisiblePipe, name: "wbGridElementIfVisible" }, { kind: "directive", type: ViewDropZoneDirective, selector: "[wbViewDropZone]", inputs: ["wbViewDropZoneRegions", "wbViewDropZoneCssClass", "wbViewDropZoneSize", "wbViewDropZonePlaceholderSize"], outputs: ["wbViewDropZoneDrop"] }, { kind: "pipe", type: RequiresDropZonePipe, name: "wbRequiresDropZone" }, { kind: "component", type: SciViewportComponent, selector: "sci-viewport", inputs: ["scrollbarStyle"], outputs: ["scroll"] }] }); }
|
|
2453
2512
|
}
|
|
2454
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2513
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutComponent, decorators: [{
|
|
2455
2514
|
type: Component,
|
|
2456
2515
|
args: [{ selector: 'wb-workbench-layout', standalone: true, imports: [
|
|
2457
2516
|
NgIf,
|
|
@@ -2503,10 +2562,10 @@ class CoerceObservablePipe {
|
|
|
2503
2562
|
transform(value) {
|
|
2504
2563
|
return Observables.coerce(value);
|
|
2505
2564
|
}
|
|
2506
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2507
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
2565
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: CoerceObservablePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2566
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: CoerceObservablePipe, isStandalone: true, name: "wbCoerceObservable$" }); }
|
|
2508
2567
|
}
|
|
2509
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2568
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: CoerceObservablePipe, decorators: [{
|
|
2510
2569
|
type: Pipe,
|
|
2511
2570
|
args: [{ name: 'wbCoerceObservable$', standalone: true }]
|
|
2512
2571
|
}] });
|
|
@@ -2586,10 +2645,10 @@ class NotificationComponent {
|
|
|
2586
2645
|
this.closeNotification.emit();
|
|
2587
2646
|
});
|
|
2588
2647
|
}
|
|
2589
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2590
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
2648
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NotificationComponent, deps: [{ token: i0.Injector }, { token: i0.DestroyRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2649
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: NotificationComponent, isStandalone: true, selector: "wb-notification", inputs: { notification: "notification" }, outputs: { closeNotification: "closeNotification" }, host: { listeners: { "mousedown": "onMousedown($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"outline\">\n <header *ngIf=\"notification.title$ | async | wbCoerceObservable$ | async as title\" class=\"e2e-title\">{{title}}</header>\n <ng-container *cdkPortalOutlet=\"portal\"></ng-container>\n</div>\n<button class=\"close scion-workbench-icons e2e-close\" (click)=\"onClose()\">close</button>\n", styles: [":host{display:grid;background-color:var(--sci-color-background-elevation);color:var(--sci-color-text);font-size:1rem;border-radius:var(--sci-corner);box-shadow:var(--sci-elevation) var(--sci-static-color-black);width:var(--sci-workbench-notification-width);border-left:var(--sci-workbench-notification-severity-indicator-size) solid transparent;position:relative}:host.info{border-left-color:var(--sci-color-accent)}:host.warn{border-left-color:var(--sci-color-notice)}:host.error{border-left-color:var(--sci-color-negative)}:host>div.outline{border:1px solid var(--sci-color-border);border-left:none;padding:1em 1.5em;border-top-right-radius:var(--sci-corner);border-bottom-right-radius:var(--sci-corner);font-size:.9em;white-space:pre-line;overflow-wrap:break-word;overflow:hidden}:host>div.outline>header{font-weight:700;margin-bottom:.75em}:host>button.close{all:unset;position:absolute;align-self:start;justify-self:end;cursor:pointer;padding:.5em .5em 0 0;font-size:1.1em}:host>button.close:hover{font-weight:700}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "pipe", type: CoerceObservablePipe, name: "wbCoerceObservable$" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2591
2650
|
}
|
|
2592
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2651
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NotificationComponent, decorators: [{
|
|
2593
2652
|
type: Component,
|
|
2594
2653
|
args: [{ selector: 'wb-notification', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2595
2654
|
NgIf,
|
|
@@ -2623,10 +2682,10 @@ class NotificationCssClassesPipe {
|
|
|
2623
2682
|
.concat(severity)
|
|
2624
2683
|
.concat(`e2e-severity-${severity}`)));
|
|
2625
2684
|
}
|
|
2626
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2627
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
2685
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NotificationCssClassesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2686
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: NotificationCssClassesPipe, isStandalone: true, name: "wbNotificationCssClasses$" }); }
|
|
2628
2687
|
}
|
|
2629
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2688
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NotificationCssClassesPipe, decorators: [{
|
|
2630
2689
|
type: Pipe,
|
|
2631
2690
|
args: [{ name: 'wbNotificationCssClasses$', standalone: true }]
|
|
2632
2691
|
}] });
|
|
@@ -2638,10 +2697,10 @@ class TextNotificationComponent {
|
|
|
2638
2697
|
constructor(notification) {
|
|
2639
2698
|
this.text = notification.input;
|
|
2640
2699
|
}
|
|
2641
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2642
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
2700
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: TextNotificationComponent, deps: [{ token: Notification }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2701
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: TextNotificationComponent, isStandalone: true, selector: "wb-text-notification", ngImport: i0, template: `{{text ?? ''}}`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2643
2702
|
}
|
|
2644
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2703
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: TextNotificationComponent, decorators: [{
|
|
2645
2704
|
type: Component,
|
|
2646
2705
|
args: [{
|
|
2647
2706
|
selector: 'wb-text-notification',
|
|
@@ -2803,10 +2862,10 @@ class NotificationService {
|
|
|
2803
2862
|
this.closeNotification(lastNotification);
|
|
2804
2863
|
});
|
|
2805
2864
|
}
|
|
2806
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2807
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
2865
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NotificationService, deps: [{ token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2866
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NotificationService, providedIn: 'root' }); }
|
|
2808
2867
|
}
|
|
2809
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2868
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NotificationService, decorators: [{
|
|
2810
2869
|
type: Injectable,
|
|
2811
2870
|
args: [{ providedIn: 'root' }]
|
|
2812
2871
|
}], ctorParameters: () => [{ type: i0.NgZone }, { type: Document, decorators: [{
|
|
@@ -2848,10 +2907,10 @@ class NotificationListComponent {
|
|
|
2848
2907
|
]),
|
|
2849
2908
|
];
|
|
2850
2909
|
}
|
|
2851
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2852
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
2910
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NotificationListComponent, deps: [{ token: NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2911
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: NotificationListComponent, isStandalone: true, selector: "wb-notification-list", ngImport: i0, template: "<wb-notification *ngFor=\"let notification of notifications$ | async; trackBy: trackByFn\"\n [notification]=\"notification\"\n [ngClass]=\"notification | wbNotificationCssClasses$ | async\"\n (closeNotification)=\"onNotificationClose(notification)\"\n @notification-enter-or-leave>\n</wb-notification>\n", styles: [":host{display:flex;flex-flow:column wrap-reverse;gap:.5em;max-height:100%;align-items:flex-start;align-content:flex-start;pointer-events:none;padding:.5em}:host>wb-notification{position:relative;pointer-events:auto;max-width:calc(100% - 1em)}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: NotificationComponent, selector: "wb-notification", inputs: ["notification"], outputs: ["closeNotification"] }, { kind: "pipe", type: NotificationCssClassesPipe, name: "wbNotificationCssClasses$" }], animations: [trigger('notification-enter-or-leave', NotificationListComponent.provideAnimation())], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2853
2912
|
}
|
|
2854
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2913
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NotificationListComponent, decorators: [{
|
|
2855
2914
|
type: Component,
|
|
2856
2915
|
args: [{ selector: 'wb-notification-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2857
2916
|
NgFor,
|
|
@@ -2862,41 +2921,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
2862
2921
|
], animations: [trigger('notification-enter-or-leave', NotificationListComponent.provideAnimation())], template: "<wb-notification *ngFor=\"let notification of notifications$ | async; trackBy: trackByFn\"\n [notification]=\"notification\"\n [ngClass]=\"notification | wbNotificationCssClasses$ | async\"\n (closeNotification)=\"onNotificationClose(notification)\"\n @notification-enter-or-leave>\n</wb-notification>\n", styles: [":host{display:flex;flex-flow:column wrap-reverse;gap:.5em;max-height:100%;align-items:flex-start;align-content:flex-start;pointer-events:none;padding:.5em}:host>wb-notification{position:relative;pointer-events:auto;max-width:calc(100% - 1em)}\n"] }]
|
|
2863
2922
|
}], ctorParameters: () => [{ type: NotificationService }] });
|
|
2864
2923
|
|
|
2865
|
-
/*
|
|
2866
|
-
* Copyright (c) 2018-2023 Swiss Federal Railways
|
|
2867
|
-
*
|
|
2868
|
-
* This program and the accompanying materials are made
|
|
2869
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
2870
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
2871
|
-
*
|
|
2872
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
2873
|
-
*/
|
|
2874
|
-
/**
|
|
2875
|
-
* Implementation of {@link DestroyRef} that can be used in non-Angular managed workbench objects such as handles.
|
|
2876
|
-
*/
|
|
2877
|
-
class ɵDestroyRef {
|
|
2878
|
-
constructor() {
|
|
2879
|
-
this._callbacks = new Set();
|
|
2880
|
-
this._destroyed = false;
|
|
2881
|
-
}
|
|
2882
|
-
onDestroy(callback) {
|
|
2883
|
-
if (this._destroyed) {
|
|
2884
|
-
callback();
|
|
2885
|
-
return noop;
|
|
2886
|
-
}
|
|
2887
|
-
this._callbacks.add(callback);
|
|
2888
|
-
return () => this._callbacks.delete(callback);
|
|
2889
|
-
}
|
|
2890
|
-
destroy() {
|
|
2891
|
-
this._callbacks.forEach(callback => callback());
|
|
2892
|
-
this._callbacks.clear();
|
|
2893
|
-
this._destroyed = true;
|
|
2894
|
-
}
|
|
2895
|
-
get destroyed() {
|
|
2896
|
-
return this._destroyed;
|
|
2897
|
-
}
|
|
2898
|
-
}
|
|
2899
|
-
|
|
2900
2924
|
/*
|
|
2901
2925
|
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
2902
2926
|
*
|
|
@@ -2912,11 +2936,13 @@ class ɵDestroyRef {
|
|
|
2912
2936
|
* Configure this direktive via the following DI tokens. These tokens must be provided at the component level.
|
|
2913
2937
|
* - {@link GLASS_PANE_BLOCKABLE}: Represents the object to be blocked.
|
|
2914
2938
|
* - {@link GLASS_PANE_TARGET_ELEMENT}: Controls the HTML element to block. Defaults to the directive's host element if not set.
|
|
2939
|
+
* - {@link GLASS_PANE_OPTIONS}: Configures the glass pane.
|
|
2915
2940
|
*/
|
|
2916
2941
|
class GlassPaneDirective {
|
|
2917
2942
|
constructor(_injector) {
|
|
2918
2943
|
this._injector = _injector;
|
|
2919
2944
|
this._glassPane = null;
|
|
2945
|
+
this._options = inject(GLASS_PANE_OPTIONS, { optional: true, host: true }) ?? undefined;
|
|
2920
2946
|
this._targetElement = coerceElement(inject(GLASS_PANE_TARGET_ELEMENT, { optional: true, host: true }) ?? inject(ElementRef));
|
|
2921
2947
|
this.ensureHostElementPositioned();
|
|
2922
2948
|
}
|
|
@@ -2931,7 +2957,7 @@ class GlassPaneDirective {
|
|
|
2931
2957
|
.pipe(takeUntilDestroyed())
|
|
2932
2958
|
.subscribe((blockedBy) => {
|
|
2933
2959
|
this._glassPane?.dispose();
|
|
2934
|
-
this._glassPane = blockedBy ? new GlassPane(this._targetElement, blockedBy) : null;
|
|
2960
|
+
this._glassPane = blockedBy ? new GlassPane(this._targetElement, blockedBy, this._options) : null;
|
|
2935
2961
|
});
|
|
2936
2962
|
}
|
|
2937
2963
|
ensureHostElementPositioned() {
|
|
@@ -2942,10 +2968,10 @@ class GlassPaneDirective {
|
|
|
2942
2968
|
ngOnDestroy() {
|
|
2943
2969
|
this._glassPane?.dispose();
|
|
2944
2970
|
}
|
|
2945
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2946
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
2971
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: GlassPaneDirective, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2972
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: GlassPaneDirective, isStandalone: true, selector: "[wbGlassPane]", ngImport: i0 }); }
|
|
2947
2973
|
}
|
|
2948
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2974
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: GlassPaneDirective, decorators: [{
|
|
2949
2975
|
type: Directive,
|
|
2950
2976
|
args: [{ selector: '[wbGlassPane]', standalone: true }]
|
|
2951
2977
|
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
@@ -2953,13 +2979,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
2953
2979
|
* Represents the glass pane added to the target element.
|
|
2954
2980
|
*/
|
|
2955
2981
|
class GlassPane {
|
|
2956
|
-
constructor(targetElement, blockedBy) {
|
|
2982
|
+
constructor(targetElement, blockedBy, options) {
|
|
2957
2983
|
this._destroyRef = new ɵDestroyRef();
|
|
2958
2984
|
const glassPaneElement = createElement('div', {
|
|
2959
2985
|
parent: targetElement,
|
|
2960
|
-
cssClass: ['glasspane', 'e2e-glasspane'],
|
|
2986
|
+
cssClass: ['glasspane', 'e2e-glasspane', ...Arrays.coerce(options?.cssClass)],
|
|
2961
2987
|
attributes: {
|
|
2962
2988
|
'data-owner': blockedBy.id,
|
|
2989
|
+
...options?.attributes,
|
|
2963
2990
|
},
|
|
2964
2991
|
style: {
|
|
2965
2992
|
position: 'absolute',
|
|
@@ -3001,6 +3028,10 @@ const GLASS_PANE_BLOCKABLE = new InjectionToken('GLASS_PANE_BLOCKABLE');
|
|
|
3001
3028
|
* Defaults to the host element of the {@link GlassPaneDirective} if not specified.
|
|
3002
3029
|
*/
|
|
3003
3030
|
const GLASS_PANE_TARGET_ELEMENT = new InjectionToken('GLASS_PANE_TARGET_ELEMENT');
|
|
3031
|
+
/**
|
|
3032
|
+
* DI token to configure the {@link GlassPaneDirective}.
|
|
3033
|
+
*/
|
|
3034
|
+
const GLASS_PANE_OPTIONS = new InjectionToken('GLASS_PANE_OPTIONS');
|
|
3004
3035
|
|
|
3005
3036
|
/*
|
|
3006
3037
|
* Copyright (c) 2018-2023 Swiss Federal Railways
|
|
@@ -3063,10 +3094,10 @@ class WorkbenchDialogRegistry {
|
|
|
3063
3094
|
this._dialogs$.value.forEach(dialog => dialog.destroy());
|
|
3064
3095
|
this._dialogs$.next([]);
|
|
3065
3096
|
}
|
|
3066
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3067
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3097
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3098
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogRegistry, providedIn: 'root' }); }
|
|
3068
3099
|
}
|
|
3069
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogRegistry, decorators: [{
|
|
3070
3101
|
type: Injectable,
|
|
3071
3102
|
args: [{ providedIn: 'root' }]
|
|
3072
3103
|
}] });
|
|
@@ -3099,10 +3130,10 @@ class FormatUrlPipe {
|
|
|
3099
3130
|
transform(url) {
|
|
3100
3131
|
return url.map(segment => segment.path).join('/');
|
|
3101
3132
|
}
|
|
3102
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3103
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
3133
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormatUrlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
3134
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: FormatUrlPipe, isStandalone: true, name: "appFormatUrl" }); }
|
|
3104
3135
|
}
|
|
3105
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormatUrlPipe, decorators: [{
|
|
3106
3137
|
type: Pipe,
|
|
3107
3138
|
args: [{ name: 'appFormatUrl', standalone: true }]
|
|
3108
3139
|
}] });
|
|
@@ -3121,10 +3152,10 @@ class PageNotFoundComponent {
|
|
|
3121
3152
|
this.isDevMode = isDevMode();
|
|
3122
3153
|
this.view = inject(WorkbenchView);
|
|
3123
3154
|
}
|
|
3124
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3125
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
3155
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PageNotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3156
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: PageNotFoundComponent, isStandalone: true, selector: "wb-page-not-found", ngImport: i0, template: "<header>Page Not Found</header>\n\n<section class=\"message\">\n The requested page <span class=\"url\">{{view.urlSegments | appFormatUrl}}</span> was not found.\n <br>\n The URL may have changed. Try to open the view again.\n</section>\n\n<button (click)=\"view.close()\">Close</button>\n\n@if (isDevMode) {\n <section class=\"developer-hint\">\n You can create a custom \"Page Not Found\" component and register it in the workbench configuration to personalize this page.\n </section>\n}\n", styles: [":host{display:flex;flex-direction:column;gap:2em;padding:1em;align-items:center}:host>header{font-weight:700;font-size:1.3rem}:host>section.message{text-align:center;line-height:1.75}:host>section.message>span.url{font-weight:700}:host>section.developer-hint{border:1px solid var(--sci-color-accent);border-radius:var(--sci-corner);padding:1em;max-width:550px;color:var(--sci-color-accent);font-family:monospace;text-align:center}:host>button{all:unset;cursor:pointer;padding:.5em 1.5em;color:var(--sci-color-accent-inverse);background-color:var(--sci-color-accent);background-clip:padding-box;border:1px solid var(--sci-color-accent);border-radius:var(--sci-corner);text-align:center}:host>button:focus,:host>button:active{border-color:transparent;outline:1px solid var(--sci-color-accent);color:var(--sci-color-accent-inverse)}\n"], dependencies: [{ kind: "pipe", type: FormatUrlPipe, name: "appFormatUrl" }] }); }
|
|
3126
3157
|
}
|
|
3127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PageNotFoundComponent, decorators: [{
|
|
3128
3159
|
type: Component,
|
|
3129
3160
|
args: [{ selector: 'wb-page-not-found', standalone: true, imports: [
|
|
3130
3161
|
FormatUrlPipe,
|
|
@@ -3190,10 +3221,10 @@ const WorkbenchRouteData = {
|
|
|
3190
3221
|
* For more information, see the `standardizeConfig` function in Angular.
|
|
3191
3222
|
*/
|
|
3192
3223
|
class ɵEmptyOutletComponent {
|
|
3193
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3194
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
3224
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3225
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ɵEmptyOutletComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<router-outlet/>\n", styles: [":host{display:grid}:host>router-outlet{position:absolute}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
|
|
3195
3226
|
}
|
|
3196
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3227
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
|
|
3197
3228
|
type: Component,
|
|
3198
3229
|
args: [{ standalone: true, imports: [RouterOutlet], template: "<router-outlet/>\n", styles: [":host{display:grid}:host>router-outlet{position:absolute}\n"] }]
|
|
3199
3230
|
}] });
|
|
@@ -3270,10 +3301,10 @@ class WorkbenchAuxiliaryRoutesRegistrator {
|
|
|
3270
3301
|
const newRoutes = [...config];
|
|
3271
3302
|
this._router.config.splice(0, this._router.config.length, ...newRoutes);
|
|
3272
3303
|
}
|
|
3273
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3274
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3304
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchAuxiliaryRoutesRegistrator, deps: [{ token: WorkbenchConfig }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3305
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchAuxiliaryRoutesRegistrator, providedIn: 'root' }); }
|
|
3275
3306
|
}
|
|
3276
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3307
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchAuxiliaryRoutesRegistrator, decorators: [{
|
|
3277
3308
|
type: Injectable,
|
|
3278
3309
|
args: [{ providedIn: 'root' }]
|
|
3279
3310
|
}], ctorParameters: () => [{ type: WorkbenchConfig }, { type: i2.Router }] });
|
|
@@ -3478,10 +3509,10 @@ class WorkbenchLauncher {
|
|
|
3478
3509
|
}
|
|
3479
3510
|
}
|
|
3480
3511
|
}
|
|
3481
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3482
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3512
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLauncher, deps: [{ token: WorkbenchStartup }, { token: Logger }, { token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3513
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLauncher, providedIn: 'root' }); }
|
|
3483
3514
|
}
|
|
3484
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3515
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLauncher, decorators: [{
|
|
3485
3516
|
type: Injectable,
|
|
3486
3517
|
args: [{ providedIn: 'root' }]
|
|
3487
3518
|
}], ctorParameters: () => [{ type: WorkbenchStartup }, { type: Logger }, { type: i0.NgZone }, { type: i0.Injector }] });
|
|
@@ -3511,10 +3542,10 @@ class WorkbenchStartup {
|
|
|
3511
3542
|
isStarted() {
|
|
3512
3543
|
return this._started;
|
|
3513
3544
|
}
|
|
3514
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3515
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3545
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchStartup, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3546
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchStartup, providedIn: 'root' }); }
|
|
3516
3547
|
}
|
|
3517
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3548
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchStartup, decorators: [{
|
|
3518
3549
|
type: Injectable,
|
|
3519
3550
|
args: [{ providedIn: 'root' }]
|
|
3520
3551
|
}] });
|
|
@@ -3600,12 +3631,12 @@ class WorkbenchComponent {
|
|
|
3600
3631
|
ngOnDestroy() {
|
|
3601
3632
|
this.unsetViewContainerReferences();
|
|
3602
3633
|
}
|
|
3603
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3604
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
3634
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchComponent, deps: [{ token: WorkbenchConfig }, { token: WorkbenchLauncher }, { token: Logger }, { token: WorkbenchStartup }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3635
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: WorkbenchComponent, isStandalone: true, selector: "wb-workbench", viewQueries: [{ propertyName: "injectIframeHost", first: true, predicate: ["iframe_host"], descendants: true, read: ViewContainerRef }, { propertyName: "injectViewDropPlaceholderHost", first: true, predicate: ["view_drop_placeholder_host"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "@if (workbenchStartup.whenStarted | async) {\n <div class=\"stacking-context-barrier\" wbGlassPane>\n @if (whenViewContainersInjected | async) {\n <wb-workbench-layout/>\n }\n <!-- Achor to attach iframes of embedded microfrontends -->\n <ng-container #iframe_host/>\n </div>\n\n <!-- Anchor to attach the visual placeholder when dragging a view over a valid drop zone -->\n <div #view_drop_placeholder_host class=\"view-drop-placeholder-host\"></div>\n\n <!-- Notifications -->\n <wb-notification-list/>\n} @else {\n <ng-container *ngComponentOutlet=\"splash\"/>\n}\n", styles: [":host{display:grid;position:relative;overflow:hidden;color:var(--sci-color-text);background-color:var(--sci-color-background-primary)}:host>div.stacking-context-barrier{display:flex;isolation:isolate}:host>div.stacking-context-barrier>wb-workbench-layout{flex:auto}:host>div.view-drop-placeholder-host{position:absolute}:host>wb-notification-list{position:absolute;inset:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: WorkbenchLayoutComponent, selector: "wb-workbench-layout" }, { kind: "component", type: NotificationListComponent, selector: "wb-notification-list" }, { kind: "directive", type: GlassPaneDirective, selector: "[wbGlassPane]" }], viewProviders: [
|
|
3605
3636
|
configureWorkbenchGlassPane(),
|
|
3606
3637
|
] }); }
|
|
3607
3638
|
}
|
|
3608
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3639
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchComponent, decorators: [{
|
|
3609
3640
|
type: Component,
|
|
3610
3641
|
args: [{ selector: 'wb-workbench', standalone: true, imports: [
|
|
3611
3642
|
AsyncPipe,
|
|
@@ -3615,7 +3646,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
3615
3646
|
GlassPaneDirective,
|
|
3616
3647
|
], viewProviders: [
|
|
3617
3648
|
configureWorkbenchGlassPane(),
|
|
3618
|
-
], template: "@if (workbenchStartup.whenStarted | async) {\n <div class=\"stacking-context-barrier\" wbGlassPane>\n @if (whenViewContainersInjected | async) {\n <wb-workbench-layout/>\n }\n <!-- Achor to attach iframes of embedded microfrontends -->\n <ng-container #iframe_host/>\n </div>\n\n <!-- Anchor to attach the visual placeholder when dragging a view over a valid drop zone -->\n <div #view_drop_placeholder_host class=\"view-drop-placeholder-host\"></div>\n\n <!-- Notifications -->\n <wb-notification-list/>\n}
|
|
3649
|
+
], template: "@if (workbenchStartup.whenStarted | async) {\n <div class=\"stacking-context-barrier\" wbGlassPane>\n @if (whenViewContainersInjected | async) {\n <wb-workbench-layout/>\n }\n <!-- Achor to attach iframes of embedded microfrontends -->\n <ng-container #iframe_host/>\n </div>\n\n <!-- Anchor to attach the visual placeholder when dragging a view over a valid drop zone -->\n <div #view_drop_placeholder_host class=\"view-drop-placeholder-host\"></div>\n\n <!-- Notifications -->\n <wb-notification-list/>\n} @else {\n <ng-container *ngComponentOutlet=\"splash\"/>\n}\n", styles: [":host{display:grid;position:relative;overflow:hidden;color:var(--sci-color-text);background-color:var(--sci-color-background-primary)}:host>div.stacking-context-barrier{display:flex;isolation:isolate}:host>div.stacking-context-barrier>wb-workbench-layout{flex:auto}:host>div.view-drop-placeholder-host{position:absolute}:host>wb-notification-list{position:absolute;inset:0}\n"] }]
|
|
3619
3650
|
}], ctorParameters: () => [{ type: WorkbenchConfig }, { type: WorkbenchLauncher }, { type: Logger }, { type: WorkbenchStartup }], propDecorators: { injectIframeHost: [{
|
|
3620
3651
|
type: ViewChild,
|
|
3621
3652
|
args: ['iframe_host', { read: ViewContainerRef }]
|
|
@@ -3645,6 +3676,10 @@ function configureWorkbenchGlassPane() {
|
|
|
3645
3676
|
}
|
|
3646
3677
|
},
|
|
3647
3678
|
},
|
|
3679
|
+
{
|
|
3680
|
+
provide: GLASS_PANE_OPTIONS,
|
|
3681
|
+
useValue: { cssClass: 'e2e-workbench' },
|
|
3682
|
+
},
|
|
3648
3683
|
];
|
|
3649
3684
|
}
|
|
3650
3685
|
|
|
@@ -3656,10 +3691,10 @@ function configureWorkbenchGlassPane() {
|
|
|
3656
3691
|
* A view can inject `ActivatedRoute` to obtain parameters passed to the navigation and/or read data associated with the route.
|
|
3657
3692
|
*/
|
|
3658
3693
|
class WorkbenchRouter {
|
|
3659
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3660
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3694
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchRouter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3695
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchRouter, providedIn: 'root', useExisting: ɵWorkbenchRouter }); }
|
|
3661
3696
|
}
|
|
3662
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3697
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchRouter, decorators: [{
|
|
3663
3698
|
type: Injectable,
|
|
3664
3699
|
args: [{ providedIn: 'root', useExisting: ɵWorkbenchRouter }]
|
|
3665
3700
|
}] });
|
|
@@ -3734,7 +3769,7 @@ class WorkbenchRouterLinkDirective {
|
|
|
3734
3769
|
const controlPressed = ctrlKey || metaKey;
|
|
3735
3770
|
return {
|
|
3736
3771
|
...this._extras,
|
|
3737
|
-
relativeTo: Defined.orElse(this._extras.relativeTo, this._route),
|
|
3772
|
+
relativeTo: Defined.orElse(this._extras.relativeTo, this._route), // `null` is a valid `relativeTo` for absolute navigation
|
|
3738
3773
|
target: controlPressed ? 'blank' : this._extras.target ?? this._view?.id,
|
|
3739
3774
|
activate: this._extras.activate ?? !controlPressed, // by default, the view is not activated if CTRL or META modifier key is pressed (same behavior as for browser links)
|
|
3740
3775
|
};
|
|
@@ -3757,10 +3792,10 @@ class WorkbenchRouterLinkDirective {
|
|
|
3757
3792
|
ngOnDestroy() {
|
|
3758
3793
|
this._ngOnDestroy$.next();
|
|
3759
3794
|
}
|
|
3760
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3761
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
3795
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchRouterLinkDirective, deps: [{ token: WorkbenchRouter }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3$1.LocationStrategy }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: WorkbenchView, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
3796
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: WorkbenchRouterLinkDirective, isStandalone: true, selector: "[wbRouterLink]", inputs: { wbRouterLink: "wbRouterLink", extras: ["wbRouterLinkExtras", "extras"] }, host: { listeners: { "click": "onClick($event.button,$event.ctrlKey,$event.metaKey)" }, properties: { "attr.href": "this.href" } }, usesOnChanges: true, ngImport: i0 }); }
|
|
3762
3797
|
}
|
|
3763
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3798
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchRouterLinkDirective, decorators: [{
|
|
3764
3799
|
type: Directive,
|
|
3765
3800
|
args: [{ selector: '[wbRouterLink]', standalone: true }]
|
|
3766
3801
|
}], ctorParameters: () => [{ type: WorkbenchRouter }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3$1.LocationStrategy }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: WorkbenchView, decorators: [{
|
|
@@ -3838,10 +3873,10 @@ class WorkbenchPerspectiveRegistry {
|
|
|
3838
3873
|
this._registry.objects.forEach(perspective => perspective.destroy());
|
|
3839
3874
|
this._registry.clear();
|
|
3840
3875
|
}
|
|
3841
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3842
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3876
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3877
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveRegistry, providedIn: 'root' }); }
|
|
3843
3878
|
}
|
|
3844
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3879
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveRegistry, decorators: [{
|
|
3845
3880
|
type: Injectable,
|
|
3846
3881
|
args: [{ providedIn: 'root' }]
|
|
3847
3882
|
}] });
|
|
@@ -3881,67 +3916,10 @@ class WorkbenchPartActionRegistry {
|
|
|
3881
3916
|
ngOnDestroy() {
|
|
3882
3917
|
this._registry.clear();
|
|
3883
3918
|
}
|
|
3884
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3885
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3886
|
-
}
|
|
3887
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPartActionRegistry, decorators: [{
|
|
3888
|
-
type: Injectable,
|
|
3889
|
-
args: [{ providedIn: 'root' }]
|
|
3890
|
-
}] });
|
|
3891
|
-
|
|
3892
|
-
/*
|
|
3893
|
-
* Copyright (c) 2018-2023 Swiss Federal Railways
|
|
3894
|
-
*
|
|
3895
|
-
* This program and the accompanying materials are made
|
|
3896
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
3897
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
3898
|
-
*
|
|
3899
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
3900
|
-
*/
|
|
3901
|
-
/**
|
|
3902
|
-
* Migrates the workbench layout from version 1 to version 2.
|
|
3903
|
-
*
|
|
3904
|
-
* TODO [Angular 20] Remove migrator.
|
|
3905
|
-
*/
|
|
3906
|
-
class WorkbenchLayoutMigrationV2 {
|
|
3907
|
-
migrate(json) {
|
|
3908
|
-
const partsLayoutV1 = JSON.parse(json);
|
|
3909
|
-
const partsGridV2 = {
|
|
3910
|
-
root: this.migrateGridElement(partsLayoutV1.root),
|
|
3911
|
-
activePartId: partsLayoutV1.activePartId,
|
|
3912
|
-
};
|
|
3913
|
-
return JSON.stringify(partsGridV2);
|
|
3914
|
-
}
|
|
3915
|
-
migrateGridElement(elementV1) {
|
|
3916
|
-
if (elementV1.hasOwnProperty('partId')) { // eslint-disable-line no-prototype-builtins
|
|
3917
|
-
const partV1 = elementV1;
|
|
3918
|
-
return {
|
|
3919
|
-
type: 'MPart',
|
|
3920
|
-
id: partV1.partId,
|
|
3921
|
-
views: partV1.viewIds.map(viewId => ({ id: viewId })),
|
|
3922
|
-
activeViewId: partV1.activeViewId,
|
|
3923
|
-
structural: false,
|
|
3924
|
-
};
|
|
3925
|
-
}
|
|
3926
|
-
else if (elementV1.hasOwnProperty('nodeId')) { // eslint-disable-line no-prototype-builtins
|
|
3927
|
-
const treeNodeV1 = elementV1;
|
|
3928
|
-
return {
|
|
3929
|
-
type: 'MTreeNode',
|
|
3930
|
-
nodeId: treeNodeV1.nodeId,
|
|
3931
|
-
child1: this.migrateGridElement(treeNodeV1.child1),
|
|
3932
|
-
child2: this.migrateGridElement(treeNodeV1.child2),
|
|
3933
|
-
ratio: treeNodeV1.ratio,
|
|
3934
|
-
direction: treeNodeV1.direction,
|
|
3935
|
-
};
|
|
3936
|
-
}
|
|
3937
|
-
else {
|
|
3938
|
-
throw Error(`[WorkbenchLayoutError] Unable to migrate to the latest version. Expected element to be of type 'MPart' or 'MTreeNode'. [version=1, element=${JSON.stringify(elementV1)}]`);
|
|
3939
|
-
}
|
|
3940
|
-
}
|
|
3941
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchLayoutMigrationV2, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3942
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchLayoutMigrationV2, providedIn: 'root' }); }
|
|
3919
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPartActionRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3920
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPartActionRegistry, providedIn: 'root' }); }
|
|
3943
3921
|
}
|
|
3944
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3922
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPartActionRegistry, decorators: [{
|
|
3945
3923
|
type: Injectable,
|
|
3946
3924
|
args: [{ providedIn: 'root' }]
|
|
3947
3925
|
}] });
|
|
@@ -4039,10 +4017,10 @@ class WorkbenchLayoutMigrationV3 {
|
|
|
4039
4017
|
getCurrentUrl() {
|
|
4040
4018
|
return this._router.getCurrentNavigation()?.initialUrl ?? this._router.parseUrl(this._router.url);
|
|
4041
4019
|
}
|
|
4042
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
4043
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
4020
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutMigrationV3, deps: [{ token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4021
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutMigrationV3, providedIn: 'root' }); }
|
|
4044
4022
|
}
|
|
4045
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
4023
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutMigrationV3, decorators: [{
|
|
4046
4024
|
type: Injectable,
|
|
4047
4025
|
args: [{ providedIn: 'root' }]
|
|
4048
4026
|
}], ctorParameters: () => [{ type: i2.Router }] });
|
|
@@ -4154,10 +4132,10 @@ class WorkbenchLayoutMigrationV4 {
|
|
|
4154
4132
|
return { ...viewV3, uid: undefined }; // `uid` is transient, i.e., set when deserializing the grid.
|
|
4155
4133
|
}
|
|
4156
4134
|
}
|
|
4157
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
4158
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
4135
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutMigrationV4, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4136
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutMigrationV4, providedIn: 'root' }); }
|
|
4159
4137
|
}
|
|
4160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
4138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutMigrationV4, decorators: [{
|
|
4161
4139
|
type: Injectable,
|
|
4162
4140
|
args: [{ providedIn: 'root' }]
|
|
4163
4141
|
}] });
|
|
@@ -4177,7 +4155,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
4177
4155
|
class WorkbenchLayoutSerializer {
|
|
4178
4156
|
constructor() {
|
|
4179
4157
|
this._workbenchLayoutMigrator = new WorkbenchMigrator()
|
|
4180
|
-
.registerMigration(1, inject(WorkbenchLayoutMigrationV2))
|
|
4181
4158
|
.registerMigration(2, inject(WorkbenchLayoutMigrationV3))
|
|
4182
4159
|
.registerMigration(3, inject(WorkbenchLayoutMigrationV4));
|
|
4183
4160
|
}
|
|
@@ -4247,10 +4224,10 @@ class WorkbenchLayoutSerializer {
|
|
|
4247
4224
|
return [viewId, segments.map(segment => new UrlSegment(segment.path, segment.parameters))];
|
|
4248
4225
|
}));
|
|
4249
4226
|
}
|
|
4250
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
4251
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
4227
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4228
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutSerializer, providedIn: 'root' }); }
|
|
4252
4229
|
}
|
|
4253
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
4230
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutSerializer, decorators: [{
|
|
4254
4231
|
type: Injectable,
|
|
4255
4232
|
args: [{ providedIn: 'root' }]
|
|
4256
4233
|
}] });
|
|
@@ -5074,10 +5051,10 @@ class PartActivationInstantProvider {
|
|
|
5074
5051
|
getActivationInstant(partId) {
|
|
5075
5052
|
return this._partRegistry.get(partId, { orElse: null })?.activationInstant ?? 0;
|
|
5076
5053
|
}
|
|
5077
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5078
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
5054
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartActivationInstantProvider, deps: [{ token: WorkbenchPartRegistry }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5055
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartActivationInstantProvider, providedIn: 'root' }); }
|
|
5079
5056
|
}
|
|
5080
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
5057
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartActivationInstantProvider, decorators: [{
|
|
5081
5058
|
type: Injectable,
|
|
5082
5059
|
args: [{ providedIn: 'root' }]
|
|
5083
5060
|
}], ctorParameters: () => [{ type: WorkbenchPartRegistry }] });
|
|
@@ -5099,10 +5076,10 @@ class ViewActivationInstantProvider {
|
|
|
5099
5076
|
getActivationInstant(viewId) {
|
|
5100
5077
|
return this._viewRegistry.get(viewId, { orElse: null })?.activationInstant ?? 0;
|
|
5101
5078
|
}
|
|
5102
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5103
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
5079
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewActivationInstantProvider, deps: [{ token: WorkbenchViewRegistry }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5080
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewActivationInstantProvider, providedIn: 'root' }); }
|
|
5104
5081
|
}
|
|
5105
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
5082
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewActivationInstantProvider, decorators: [{
|
|
5106
5083
|
type: Injectable,
|
|
5107
5084
|
args: [{ providedIn: 'root' }]
|
|
5108
5085
|
}], ctorParameters: () => [{ type: WorkbenchViewRegistry }] });
|
|
@@ -5165,10 +5142,10 @@ class ɵWorkbenchLayoutFactory {
|
|
|
5165
5142
|
viewStates: options?.viewStates,
|
|
5166
5143
|
}));
|
|
5167
5144
|
}
|
|
5168
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5169
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
5145
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchLayoutFactory, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5146
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchLayoutFactory, providedIn: 'root' }); }
|
|
5170
5147
|
}
|
|
5171
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
5148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchLayoutFactory, decorators: [{
|
|
5172
5149
|
type: Injectable,
|
|
5173
5150
|
args: [{ providedIn: 'root' }]
|
|
5174
5151
|
}], ctorParameters: () => [{ type: i0.EnvironmentInjector }] });
|
|
@@ -5202,10 +5179,10 @@ class WorkbenchGridMerger {
|
|
|
5202
5179
|
}
|
|
5203
5180
|
return grids.local;
|
|
5204
5181
|
}
|
|
5205
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5206
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
5182
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchGridMerger, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5183
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchGridMerger, providedIn: 'root' }); }
|
|
5207
5184
|
}
|
|
5208
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
5185
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchGridMerger, decorators: [{
|
|
5209
5186
|
type: Injectable,
|
|
5210
5187
|
args: [{ providedIn: 'root' }]
|
|
5211
5188
|
}] });
|
|
@@ -5238,10 +5215,10 @@ class DefaultWorkbenchStorage {
|
|
|
5238
5215
|
store(key, value) {
|
|
5239
5216
|
localStorage.setItem(key, value);
|
|
5240
5217
|
}
|
|
5241
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5242
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
5218
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DefaultWorkbenchStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5219
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DefaultWorkbenchStorage }); }
|
|
5243
5220
|
}
|
|
5244
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
5221
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DefaultWorkbenchStorage, decorators: [{
|
|
5245
5222
|
type: Injectable
|
|
5246
5223
|
}] });
|
|
5247
5224
|
|
|
@@ -5280,10 +5257,10 @@ class WorkbenchPerspectiveMigrationV2 {
|
|
|
5280
5257
|
return [viewId, commandsToSegments(commands)];
|
|
5281
5258
|
})));
|
|
5282
5259
|
}
|
|
5283
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5284
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
5260
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveMigrationV2, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5261
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveMigrationV2, providedIn: 'root' }); }
|
|
5285
5262
|
}
|
|
5286
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
5263
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveMigrationV2, decorators: [{
|
|
5287
5264
|
type: Injectable,
|
|
5288
5265
|
args: [{ providedIn: 'root' }]
|
|
5289
5266
|
}] });
|
|
@@ -5336,10 +5313,10 @@ class WorkbenchPerspectiveSerializer {
|
|
|
5336
5313
|
const migrated = this._workbenchPerspectiveMigrator.migrate(json, { from: serializedVersion, to: WORKBENCH_PERSPECTIVE_LAYOUT_VERSION });
|
|
5337
5314
|
return JSON.parse(migrated);
|
|
5338
5315
|
}
|
|
5339
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5340
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
5316
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5317
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveSerializer, providedIn: 'root' }); }
|
|
5341
5318
|
}
|
|
5342
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
5319
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveSerializer, decorators: [{
|
|
5343
5320
|
type: Injectable,
|
|
5344
5321
|
args: [{ providedIn: 'root' }]
|
|
5345
5322
|
}] });
|
|
@@ -5410,10 +5387,10 @@ class WorkbenchPerspectiveStorageService {
|
|
|
5410
5387
|
async storeActivePerspectiveId(perspectiveId) {
|
|
5411
5388
|
return this._storage.store(storageKeys.activePerspectiveId, perspectiveId);
|
|
5412
5389
|
}
|
|
5413
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5414
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
5390
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveStorageService, deps: [{ token: WorkbenchStorage }, { token: WorkbenchPerspectiveSerializer }, { token: Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5391
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveStorageService, providedIn: 'root' }); }
|
|
5415
5392
|
}
|
|
5416
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
5393
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveStorageService, decorators: [{
|
|
5417
5394
|
type: Injectable,
|
|
5418
5395
|
args: [{ providedIn: 'root' }]
|
|
5419
5396
|
}], ctorParameters: () => [{ type: WorkbenchStorage }, { type: WorkbenchPerspectiveSerializer }, { type: Logger }] });
|
|
@@ -5463,10 +5440,10 @@ class WorkbenchPerspectiveViewConflictResolver {
|
|
|
5463
5440
|
});
|
|
5464
5441
|
return perspectiveLayout;
|
|
5465
5442
|
}
|
|
5466
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5467
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
5443
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveViewConflictResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5444
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveViewConflictResolver, providedIn: 'root' }); }
|
|
5468
5445
|
}
|
|
5469
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
5446
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveViewConflictResolver, decorators: [{
|
|
5470
5447
|
type: Injectable,
|
|
5471
5448
|
args: [{ providedIn: 'root' }]
|
|
5472
5449
|
}] });
|
|
@@ -5786,10 +5763,10 @@ class WorkbenchPerspectiveService {
|
|
|
5786
5763
|
get activePerspective() {
|
|
5787
5764
|
return this._perspectiveRegistry.perspectives.find(perspective => perspective.active) ?? null;
|
|
5788
5765
|
}
|
|
5789
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5790
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
5766
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveService, deps: [{ token: WORKBENCH_LAYOUT_CONFIG }, { token: WorkbenchPerspectiveRegistry }, { token: i0.EnvironmentInjector }, { token: WorkbenchPerspectiveStorageService }, { token: WorkbenchStartup }, { token: Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5767
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveService, providedIn: 'root' }); }
|
|
5791
5768
|
}
|
|
5792
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
5769
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveService, decorators: [{
|
|
5793
5770
|
type: Injectable,
|
|
5794
5771
|
args: [{ providedIn: 'root' }]
|
|
5795
5772
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
@@ -5875,10 +5852,10 @@ class WorkbenchThemeSwitcher {
|
|
|
5875
5852
|
await this.switchTheme(theme);
|
|
5876
5853
|
}
|
|
5877
5854
|
}
|
|
5878
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5879
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
5855
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchThemeSwitcher, deps: [{ token: WorkbenchStorage }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5856
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchThemeSwitcher, providedIn: 'root' }); }
|
|
5880
5857
|
}
|
|
5881
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
5858
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchThemeSwitcher, decorators: [{
|
|
5882
5859
|
type: Injectable,
|
|
5883
5860
|
args: [{ providedIn: 'root' }]
|
|
5884
5861
|
}], ctorParameters: () => [{ type: WorkbenchStorage }] });
|
|
@@ -5969,10 +5946,10 @@ class ɵWorkbenchService {
|
|
|
5969
5946
|
switchTheme(theme) {
|
|
5970
5947
|
return this._workbenchThemeSwitcher.switchTheme(theme);
|
|
5971
5948
|
}
|
|
5972
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5973
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
5949
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchService, deps: [{ token: WorkbenchRouter }, { token: WorkbenchPerspectiveRegistry }, { token: WorkbenchPartRegistry }, { token: WorkbenchPartActionRegistry }, { token: WorkbenchViewRegistry }, { token: WorkbenchPerspectiveService }, { token: WorkbenchLayoutService }, { token: WorkbenchThemeSwitcher }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5950
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchService, providedIn: 'root' }); }
|
|
5974
5951
|
}
|
|
5975
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
5952
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchService, decorators: [{
|
|
5976
5953
|
type: Injectable,
|
|
5977
5954
|
args: [{ providedIn: 'root' }]
|
|
5978
5955
|
}], ctorParameters: () => [{ type: WorkbenchRouter }, { type: WorkbenchPerspectiveRegistry }, { type: WorkbenchPartRegistry }, { type: WorkbenchPartActionRegistry }, { type: WorkbenchViewRegistry }, { type: WorkbenchPerspectiveService }, { type: WorkbenchLayoutService }, { type: WorkbenchThemeSwitcher }] });
|
|
@@ -5995,10 +5972,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
5995
5972
|
* Perspectives share the same main area, if any.
|
|
5996
5973
|
*/
|
|
5997
5974
|
class WorkbenchService {
|
|
5998
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5999
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
5975
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5976
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchService, providedIn: 'root', useExisting: ɵWorkbenchService }); }
|
|
6000
5977
|
}
|
|
6001
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
5978
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchService, decorators: [{
|
|
6002
5979
|
type: Injectable,
|
|
6003
5980
|
args: [{ providedIn: 'root', useExisting: ɵWorkbenchService }]
|
|
6004
5981
|
}] });
|
|
@@ -6059,10 +6036,10 @@ class WorkbenchPartActionDirective {
|
|
|
6059
6036
|
ngOnDestroy() {
|
|
6060
6037
|
this._action?.dispose();
|
|
6061
6038
|
}
|
|
6062
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
6063
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
6039
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPartActionDirective, deps: [{ token: i0.TemplateRef }, { token: WorkbenchService }, { token: WorkbenchView, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6040
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: WorkbenchPartActionDirective, isStandalone: true, selector: "ng-template[wbPartAction]", inputs: { align: "align", canMatch: "canMatch", cssClass: "cssClass" }, ngImport: i0 }); }
|
|
6064
6041
|
}
|
|
6065
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
6042
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPartActionDirective, decorators: [{
|
|
6066
6043
|
type: Directive,
|
|
6067
6044
|
args: [{ selector: 'ng-template[wbPartAction]', standalone: true }]
|
|
6068
6045
|
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: WorkbenchService }, { type: WorkbenchView, decorators: [{
|
|
@@ -6126,10 +6103,10 @@ class WorkbenchViewMenuItemDirective {
|
|
|
6126
6103
|
ngOnDestroy() {
|
|
6127
6104
|
this._menuItemHandle.dispose();
|
|
6128
6105
|
}
|
|
6129
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
6130
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
6106
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchViewMenuItemDirective, deps: [{ token: i0.TemplateRef }, { token: WorkbenchService }, { token: WorkbenchView, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6107
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: WorkbenchViewMenuItemDirective, isStandalone: true, selector: "ng-template[wbViewMenuItem]", inputs: { accelerator: "accelerator", group: "group", disabled: "disabled", cssClass: "cssClass" }, outputs: { action: "action" }, ngImport: i0 }); }
|
|
6131
6108
|
}
|
|
6132
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
6109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchViewMenuItemDirective, decorators: [{
|
|
6133
6110
|
type: Directive,
|
|
6134
6111
|
args: [{ selector: 'ng-template[wbViewMenuItem]', standalone: true }]
|
|
6135
6112
|
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: WorkbenchService }, { type: WorkbenchView, decorators: [{
|
|
@@ -6175,10 +6152,10 @@ class ActivationInstantProvider {
|
|
|
6175
6152
|
now() {
|
|
6176
6153
|
return Date.now();
|
|
6177
6154
|
}
|
|
6178
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
6179
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
6155
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ActivationInstantProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6156
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ActivationInstantProvider, providedIn: 'root' }); }
|
|
6180
6157
|
}
|
|
6181
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
6158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ActivationInstantProvider, decorators: [{
|
|
6182
6159
|
type: Injectable,
|
|
6183
6160
|
args: [{ providedIn: 'root' }]
|
|
6184
6161
|
}] });
|
|
@@ -6610,10 +6587,10 @@ class MovableDirective {
|
|
|
6610
6587
|
}
|
|
6611
6588
|
});
|
|
6612
6589
|
}
|
|
6613
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
6614
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
6590
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MovableDirective, deps: [{ token: i0.ElementRef }, { token: i0.DestroyRef }, { token: WorkbenchLayoutService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6591
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: MovableDirective, isStandalone: true, selector: "[wbMovable]", inputs: { wbHandleElement: ["wbHandle", "wbHandleElement"] }, outputs: { wbMove: "wbMovableMove" }, ngImport: i0 }); }
|
|
6615
6592
|
}
|
|
6616
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
6593
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MovableDirective, decorators: [{
|
|
6617
6594
|
type: Directive,
|
|
6618
6595
|
args: [{ selector: '[wbMovable]', standalone: true }]
|
|
6619
6596
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.DestroyRef }, { type: WorkbenchLayoutService }], propDecorators: { wbHandleElement: [{
|
|
@@ -6922,10 +6899,10 @@ class ResizableDirective {
|
|
|
6922
6899
|
this.uninstallHandles();
|
|
6923
6900
|
}
|
|
6924
6901
|
}
|
|
6925
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
6926
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
6902
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ResizableDirective, deps: [{ token: i0.ElementRef }, { token: WorkbenchLayoutService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6903
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: ResizableDirective, isStandalone: true, selector: "[wbResizable]", inputs: { enabled: ["wbResizableEnabled", "enabled"] }, outputs: { wbResize: "wbResizableResize" }, usesOnChanges: true, ngImport: i0 }); }
|
|
6927
6904
|
}
|
|
6928
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
6905
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ResizableDirective, decorators: [{
|
|
6929
6906
|
type: Directive,
|
|
6930
6907
|
args: [{ selector: '[wbResizable]', standalone: true }]
|
|
6931
6908
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: WorkbenchLayoutService }], propDecorators: { enabled: [{
|
|
@@ -7041,10 +7018,10 @@ class DialogHeaderComponent {
|
|
|
7041
7018
|
onCloseMouseDown(event) {
|
|
7042
7019
|
event.stopPropagation(); // Prevent dragging the dialog with the close button.
|
|
7043
7020
|
}
|
|
7044
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7045
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
7021
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DialogHeaderComponent, deps: [{ token: ɵWorkbenchDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7022
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: DialogHeaderComponent, isStandalone: true, selector: "wb-dialog-header", ngImport: i0, template: "@if (dialog.title | wbCoerceObservable$ | async; as title) {\n <div class=\"title e2e-title\">\n <span>{{ title }}</span>\n </div>\n}\n\n@if (dialog.closable) {\n <button tabindex=\"-1\" class=\"close scion-workbench-icons e2e-close\"\n (mousedown)=\"onCloseMouseDown($event)\"\n (click)=\"onCloseClick()\">\n close\n </button>\n}\n", styles: [":host{display:flex;gap:var(--sci-workbench-dialog-padding);place-content:flex-end;padding-inline:var(--sci-workbench-dialog-padding);background-color:var(--sci-workbench-dialog-header-background-color);-webkit-user-select:none;user-select:none;height:var(--sci-workbench-dialog-header-height)}:host>div.title{flex:auto;display:flex;align-items:center;position:relative}:host>div.title>span{position:absolute;left:0;right:0;line-height:1.5;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-family:var(--sci-workbench-dialog-title-font-family);font-size:var(--sci-workbench-dialog-title-font-size);font-weight:var(--sci-workbench-dialog-title-font-weight);text-align:var(--sci-workbench-dialog-title-align)}:host>button.close{all:unset;flex:none;cursor:pointer;align-self:center}:host>button.close:not(:hover){opacity:.75}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: CoerceObservablePipe, name: "wbCoerceObservable$" }] }); }
|
|
7046
7023
|
}
|
|
7047
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7024
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DialogHeaderComponent, decorators: [{
|
|
7048
7025
|
type: Component,
|
|
7049
7026
|
args: [{ selector: 'wb-dialog-header', standalone: true, imports: [
|
|
7050
7027
|
AsyncPipe,
|
|
@@ -7080,10 +7057,10 @@ class NullIfEmptyPipe {
|
|
|
7080
7057
|
}
|
|
7081
7058
|
return value;
|
|
7082
7059
|
}
|
|
7083
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7084
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
7060
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NullIfEmptyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
7061
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: NullIfEmptyPipe, isStandalone: true, name: "wbNullIfEmpty" }); }
|
|
7085
7062
|
}
|
|
7086
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7063
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NullIfEmptyPipe, decorators: [{
|
|
7087
7064
|
type: Pipe,
|
|
7088
7065
|
args: [{ name: 'wbNullIfEmpty', standalone: true }]
|
|
7089
7066
|
}] });
|
|
@@ -7104,10 +7081,10 @@ class DialogActionFilterPipe {
|
|
|
7104
7081
|
transform(actions, align) {
|
|
7105
7082
|
return actions?.filter(action => action.align === align) ?? [];
|
|
7106
7083
|
}
|
|
7107
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7108
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
7084
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DialogActionFilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
7085
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: DialogActionFilterPipe, isStandalone: true, name: "wbDialogActionFilter" }); }
|
|
7109
7086
|
}
|
|
7110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7087
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DialogActionFilterPipe, decorators: [{
|
|
7111
7088
|
type: Pipe,
|
|
7112
7089
|
args: [{ name: 'wbDialogActionFilter', standalone: true }]
|
|
7113
7090
|
}] });
|
|
@@ -7128,10 +7105,10 @@ class DialogFooterComponent {
|
|
|
7128
7105
|
constructor(dialog) {
|
|
7129
7106
|
this.dialog = dialog;
|
|
7130
7107
|
}
|
|
7131
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7132
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
7108
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DialogFooterComponent, deps: [{ token: ɵWorkbenchDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7109
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: DialogFooterComponent, isStandalone: true, selector: "wb-dialog-footer", ngImport: i0, template: "<!-- Start Actions -->\n@if (dialog.actions | wbDialogActionFilter:'start' | wbNullIfEmpty; as actions) {\n <div class=\"actions start\">\n @for (action of actions; track action) {\n <ng-container *ngTemplateOutlet=\"action.template\"/>\n }\n </div>\n}\n\n<!-- End Actions -->\n@if (dialog.actions | wbDialogActionFilter:'end' | wbNullIfEmpty; as actions) {\n <div class=\"actions end\">\n @for (action of actions; track action) {\n <ng-container *ngTemplateOutlet=\"action.template\"/>\n }\n </div>\n}\n", styles: [":host{display:flex;padding:calc(.75 * var(--sci-workbench-dialog-padding)) var(--sci-workbench-dialog-padding);gap:calc(2 * var(--sci-workbench-dialog-padding))}:host>div.actions{flex:auto;display:flex;align-items:center;gap:calc(.5 * var(--sci-workbench-dialog-padding))}:host>div.actions.start{place-content:flex-start}:host>div.actions.end{place-content:flex-end}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: NullIfEmptyPipe, name: "wbNullIfEmpty" }, { kind: "pipe", type: DialogActionFilterPipe, name: "wbDialogActionFilter" }] }); }
|
|
7133
7110
|
}
|
|
7134
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DialogFooterComponent, decorators: [{
|
|
7135
7112
|
type: Component,
|
|
7136
7113
|
args: [{ selector: 'wb-dialog-footer', standalone: true, imports: [
|
|
7137
7114
|
NgTemplateOutlet,
|
|
@@ -7187,41 +7164,62 @@ class WorkbenchDialogComponent {
|
|
|
7187
7164
|
this.dialog = dialog;
|
|
7188
7165
|
this._zone = _zone;
|
|
7189
7166
|
this._destroyRef = _destroyRef;
|
|
7190
|
-
|
|
7167
|
+
/**
|
|
7168
|
+
* Element of the dialog that has or last had focus.
|
|
7169
|
+
*/
|
|
7170
|
+
this._activeElement$ = new BehaviorSubject(undefined);
|
|
7191
7171
|
this.transformTranslateX = 0;
|
|
7192
7172
|
this.transformTranslateY = 0;
|
|
7193
7173
|
this.setDialogOffset();
|
|
7194
7174
|
}
|
|
7195
7175
|
ngOnInit() {
|
|
7196
7176
|
this.trackFocus();
|
|
7177
|
+
this.autoFocus();
|
|
7197
7178
|
}
|
|
7198
|
-
|
|
7199
|
-
this.
|
|
7179
|
+
setDialogOffset() {
|
|
7180
|
+
const stackPosition = this.dialog.getPositionInDialogStack();
|
|
7181
|
+
this.transformTranslateX = stackPosition * 10;
|
|
7182
|
+
this.transformTranslateY = stackPosition * 10;
|
|
7200
7183
|
}
|
|
7201
7184
|
/**
|
|
7202
|
-
* Focuses
|
|
7185
|
+
* Focuses this dialog, restoring the focus to the last element that had the focus,
|
|
7186
|
+
* or otherwise focuses the first focusable element.
|
|
7203
7187
|
*/
|
|
7204
7188
|
focus() {
|
|
7205
|
-
|
|
7206
|
-
|
|
7189
|
+
const activeElement = this._activeElement$.getValue();
|
|
7190
|
+
if (activeElement) {
|
|
7191
|
+
activeElement.focus();
|
|
7207
7192
|
}
|
|
7208
7193
|
else if (!this._cdkTrapFocus.focusTrap.focusFirstTabbableElement()) {
|
|
7194
|
+
// Focus dialog element so that it can be closed via Escape keystroke.
|
|
7209
7195
|
this._dialogElement.nativeElement.focus();
|
|
7210
7196
|
}
|
|
7211
7197
|
}
|
|
7212
|
-
setDialogOffset() {
|
|
7213
|
-
const stackPosition = this.dialog.getPositionInDialogStack();
|
|
7214
|
-
this.transformTranslateX = stackPosition * 10;
|
|
7215
|
-
this.transformTranslateY = stackPosition * 10;
|
|
7216
|
-
}
|
|
7217
7198
|
/**
|
|
7218
7199
|
* Tracks the focus of the dialog.
|
|
7219
7200
|
*/
|
|
7220
7201
|
trackFocus() {
|
|
7221
7202
|
fromEvent(this._dialogElement.nativeElement, 'focusin')
|
|
7222
|
-
.pipe(
|
|
7203
|
+
.pipe(map(event => event.target instanceof HTMLElement ? event.target : undefined),
|
|
7204
|
+
// The dialog is focused if it has no focusable element, so the dialog can be closed via Escape.
|
|
7205
|
+
// However, in order not to cancel the autofocus, the dialog element must not be memoized as the
|
|
7206
|
+
// active element. Otherwise, delayed content would not be focused.
|
|
7207
|
+
filter(element => element !== this._dialogElement.nativeElement), subscribeInside(continueFn => this._zone.runOutsideAngular(continueFn)), takeUntilDestroyed(this._destroyRef))
|
|
7208
|
+
.subscribe(activeElement => {
|
|
7209
|
+
this._activeElement$.next(activeElement);
|
|
7210
|
+
});
|
|
7211
|
+
}
|
|
7212
|
+
/**
|
|
7213
|
+
* Focuses the first focusable element in the dialog. Has no effect if an element in the dialog already has the focus.
|
|
7214
|
+
*
|
|
7215
|
+
* If no focusable element can be found, the focusing will be repeated on the next DOM change until an element has the
|
|
7216
|
+
* focus, allowing delayed content to get focus.
|
|
7217
|
+
*/
|
|
7218
|
+
autoFocus() {
|
|
7219
|
+
fromMutation$(this._dialogElement.nativeElement, { subtree: true, childList: true })
|
|
7220
|
+
.pipe(startWith(undefined), takeUntil(this._activeElement$.pipe(filter(Boolean))), takeUntilDestroyed(this._destroyRef))
|
|
7223
7221
|
.subscribe(() => {
|
|
7224
|
-
this.
|
|
7222
|
+
this.focus();
|
|
7225
7223
|
});
|
|
7226
7224
|
}
|
|
7227
7225
|
onEscape(event) {
|
|
@@ -7251,14 +7249,14 @@ class WorkbenchDialogComponent {
|
|
|
7251
7249
|
onHeaderDimensionChange(dimension) {
|
|
7252
7250
|
this._headerHeight = `${dimension.offsetHeight}px`;
|
|
7253
7251
|
}
|
|
7254
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7255
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
7252
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogComponent, deps: [{ token: ɵWorkbenchDialog }, { token: i0.NgZone }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7253
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: WorkbenchDialogComponent, isStandalone: true, selector: "wb-dialog", host: { listeners: { "keydown.escape": "onEscape($event)" }, properties: { "style.--\u0275dialog-transform-translate-x": "this.transformTranslateX", "style.--\u0275dialog-transform-translate-y": "this.transformTranslateY", "style.--\u0275dialog-min-height": "this.minHeight", "style.--\u0275dialog-height": "this.height", "style.--\u0275dialog-max-height": "this.maxHeight", "style.--\u0275dialog-min-width": "this.minWidth", "style.--\u0275dialog-width": "this.width", "style.--\u0275dialog-max-width": "this.maxWidth", "class.justified": "this.justified", "attr.class": "this.cssClasses", "attr.data-dialogid": "this.id" } }, viewQueries: [{ propertyName: "_cdkTrapFocus", first: true, predicate: CdkTrapFocus, descendants: true, static: true }, { propertyName: "_dialogElement", first: true, predicate: ["dialog_element"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"dialog e2e-dialog\"\n [class.blinking]=\"dialog.blinking$ | async\"\n [tabindex]=\"-1\"\n wbMovable [wbHandle]=\"header\" (wbMovableMove)=\"onMove($event)\"\n wbResizable [wbResizableEnabled]=\"dialog.resizable\" (wbResizableResize)=\"onResize($event)\"\n @enter\n [@.disabled]=\"!dialog.animate\"\n wbGlassPane\n #dialog_element>\n <div class=\"dialog-box e2e-dialog-box\" cdkTrapFocus>\n <header #header\n class=\"e2e-dialog-header\"\n [class.divider]=\"dialog.header?.divider ?? true\"\n sciDimension (sciDimensionChange)=\"onHeaderDimensionChange($event)\">\n <ng-container *ngTemplateOutlet=\"dialog.header?.template ?? default_dialog_header\"/>\n </header>\n\n <sci-viewport class=\"content e2e-dialog-content\">\n <ng-container *ngComponentOutlet=\"dialog.component; inputs: dialog.inputs\"/>\n </sci-viewport>\n\n @if (dialog.footer || dialog.actions.length) {\n <footer class=\"e2e-dialog-footer\" [class.divider]=\"dialog.footer?.divider ?? true\">\n <ng-container *ngTemplateOutlet=\"dialog.footer?.template ?? default_dialog_footer\"/>\n </footer>\n }\n </div>\n</div>\n\n<ng-template #default_dialog_header>\n <wb-dialog-header/>\n</ng-template>\n\n<ng-template #default_dialog_footer>\n <wb-dialog-footer/>\n</ng-template>\n", styles: ["@charset \"UTF-8\";:host{--\\275 dialog-transform-translate-x: 0;--\\275 dialog-transform-translate-y: 0;--\\275 dialog-min-height: initial;--\\275 dialog-height: initial;--\\275 dialog-max-height: initial;--\\275 dialog-min-width: initial;--\\275 dialog-width: initial;--\\275 dialog-max-width: initial;--\\275 dialog-padding: var(--sci-workbench-dialog-padding);display:flex;flex-direction:column;align-items:center;position:relative}:host.justified{--\\275 dialog-padding: 0}:host>div.dialog{display:flex;flex-direction:column;position:absolute;top:3%;color:var(--sci-color-text);transform:translate(calc(1px * var(--\\275 dialog-transform-translate-x))) translateY(calc(1px * var(--\\275 dialog-transform-translate-y)));min-height:var(--\\275 dialog-min-height);height:var(--\\275 dialog-height);max-height:var(--\\275 dialog-max-height);min-width:var(--\\275 dialog-min-width);width:var(--\\275 dialog-width);max-width:var(--\\275 dialog-max-width);outline:none;pointer-events:auto}:host>div.dialog>div.dialog-box{flex:auto;display:flex;flex-direction:column;gap:calc(1.25 * var(--\\275 dialog-padding));border:1px solid var(--sci-color-border);border-radius:var(--sci-corner);background-color:var(--sci-color-background-elevation);box-shadow:var(--sci-elevation) var(--sci-static-color-black);overflow:hidden}:host>div.dialog>div.dialog-box>header{flex:none}:host>div.dialog>div.dialog-box>header.divider{border-bottom:1px solid var(--sci-color-border)}:host>div.dialog>div.dialog-box>sci-viewport{flex:auto}:host>div.dialog>div.dialog-box>sci-viewport::part(content){padding-inline:var(--\\275 dialog-padding)}:host>div.dialog>div.dialog-box>footer{flex:none}:host>div.dialog>div.dialog-box>footer.divider{border-top:1px solid var(--sci-color-border)}:host>div.dialog.blinking{animation-duration:50ms;animation-iteration-count:infinite;animation-name:blink-animation}@keyframes blink-animation{0%{transform:translate(calc(1px * var(--\\275 dialog-transform-translate-x) - 2px)) translateY(calc(1px * var(--\\275 dialog-transform-translate-y) - 1px))}to{transform:translate(calc(1px * var(--\\275 dialog-transform-translate-x) + 2px)) translateY(calc(1px * var(--\\275 dialog-transform-translate-y) + 1px))}}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: MovableDirective, selector: "[wbMovable]", inputs: ["wbHandle"], outputs: ["wbMovableMove"] }, { kind: "directive", type: ResizableDirective, selector: "[wbResizable]", inputs: ["wbResizableEnabled"], outputs: ["wbResizableResize"] }, { kind: "component", type: SciViewportComponent, selector: "sci-viewport", inputs: ["scrollbarStyle"], outputs: ["scroll"] }, { kind: "directive", type: SciDimensionDirective, selector: "[sciDimension]", inputs: ["emitOutsideAngular"], outputs: ["sciDimensionChange"], exportAs: ["sciDimension"] }, { kind: "component", type: DialogHeaderComponent, selector: "wb-dialog-header" }, { kind: "component", type: DialogFooterComponent, selector: "wb-dialog-footer" }, { kind: "directive", type: GlassPaneDirective, selector: "[wbGlassPane]" }], viewProviders: [
|
|
7256
7254
|
configureDialogGlassPane(),
|
|
7257
7255
|
], animations: [
|
|
7258
7256
|
trigger('enter', provideEnterAnimation()),
|
|
7259
7257
|
] }); }
|
|
7260
7258
|
}
|
|
7261
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7259
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogComponent, decorators: [{
|
|
7262
7260
|
type: Component,
|
|
7263
7261
|
args: [{ selector: 'wb-dialog', standalone: true, imports: [
|
|
7264
7262
|
NgComponentOutlet,
|
|
@@ -7335,10 +7333,16 @@ function provideEnterAnimation() {
|
|
|
7335
7333
|
* Blocks this dialog when other dialog(s) overlay it.
|
|
7336
7334
|
*/
|
|
7337
7335
|
function configureDialogGlassPane() {
|
|
7338
|
-
return
|
|
7339
|
-
|
|
7340
|
-
|
|
7341
|
-
|
|
7336
|
+
return [
|
|
7337
|
+
{
|
|
7338
|
+
provide: GLASS_PANE_BLOCKABLE,
|
|
7339
|
+
useExisting: forwardRef(() => ɵWorkbenchDialog), // resolve {@link ɵWorkbenchDialog} via forwardRef because not defined yet, i.e., {@link ɵWorkbenchDialog} constructs {@link WorkbenchDialogComponent} in its constructor.
|
|
7340
|
+
},
|
|
7341
|
+
{
|
|
7342
|
+
provide: GLASS_PANE_OPTIONS,
|
|
7343
|
+
useFactory: () => ({ attributes: { 'data-dialogid': inject(ɵWorkbenchDialog).id } }),
|
|
7344
|
+
},
|
|
7345
|
+
];
|
|
7342
7346
|
}
|
|
7343
7347
|
|
|
7344
7348
|
/*
|
|
@@ -7495,7 +7499,7 @@ class ɵWorkbenchDialog {
|
|
|
7495
7499
|
createOverlay() {
|
|
7496
7500
|
const overlay = inject(Overlay);
|
|
7497
7501
|
return overlay.create({
|
|
7498
|
-
disposeOnNavigation: true,
|
|
7502
|
+
disposeOnNavigation: true, // dispose dialog on browser back/forward navigation
|
|
7499
7503
|
panelClass: ['wb-dialog-modality-context'],
|
|
7500
7504
|
positionStrategy: overlay.position().global(),
|
|
7501
7505
|
scrollStrategy: overlay.scrollStrategies.noop(),
|
|
@@ -7669,10 +7673,10 @@ class ɵWorkbenchDialogService {
|
|
|
7669
7673
|
async waitUntilApplicationModalDialogsClosed() {
|
|
7670
7674
|
await firstValueFrom(this._dialogRegistry.top$().pipe(filter(top => !top)));
|
|
7671
7675
|
}
|
|
7672
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7673
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
7676
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchDialogService, deps: [{ token: WorkbenchViewRegistry }, { token: WorkbenchDialogRegistry }, { token: i0.NgZone }, { token: i0.Injector }, { token: ɵWorkbenchView, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
7677
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchDialogService, providedIn: 'root' }); }
|
|
7674
7678
|
}
|
|
7675
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7679
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchDialogService, decorators: [{
|
|
7676
7680
|
type: Injectable,
|
|
7677
7681
|
args: [{ providedIn: 'root' }]
|
|
7678
7682
|
}], ctorParameters: () => [{ type: WorkbenchViewRegistry }, { type: WorkbenchDialogRegistry }, { type: i0.NgZone }, { type: i0.Injector }, { type: ɵWorkbenchView, decorators: [{
|
|
@@ -7715,10 +7719,10 @@ class MessageBoxFooterComponent {
|
|
|
7715
7719
|
host.classList.remove('calculating-min-width');
|
|
7716
7720
|
}
|
|
7717
7721
|
}
|
|
7718
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7719
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
7722
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MessageBoxFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7723
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: MessageBoxFooterComponent, isStandalone: true, selector: "wb-message-box-footer", inputs: { actions: "actions", severity: "severity" }, outputs: { action: "action", preferredSizeChange: "preferredSizeChange" }, host: { properties: { "attr.data-severity": "this.severity" } }, viewQueries: [{ propertyName: "_actionButtons", predicate: ["action_button"], descendants: true }], ngImport: i0, template: "@for (action of actions | keyvalue:insertionSortOrderFn; track action.key) {\n <button #action_button\n (click)=\"onAction(action.key)\"\n (keydown.arrowLeft)=\"onArrowKey($index, 'left')\"\n (keydown.arrowRight)=\"onArrowKey($index, 'right')\"\n [attr.data-action]=\"action.key\"\n class=\"action e2e-action\">\n {{ action.value }}\n </button>\n\n @if (!$last) {\n <span class=\"divider\"></span>\n }\n}\n", styles: ["@charset \"UTF-8\";:host{--\\275message-box-severity-color: initial;display:flex;height:3em;background-color:var(--sci-color-background-secondary);color:var(--sci-color-text)}:host[data-severity=info]{--\\275message-box-severity-color: var(--sci-color-accent)}:host[data-severity=warn]{--\\275message-box-severity-color: var(--sci-color-notice)}:host[data-severity=error]{--\\275message-box-severity-color: var(--sci-color-negative)}:host.calculating-min-width{position:absolute}:host>button.action{all:unset;flex:1;margin:2px;border:1px solid transparent;border-radius:var(--sci-corner-small);transition:border-color ease-in-out .15s;cursor:pointer;-webkit-user-select:none;user-select:none;text-align:center;min-width:7.5em;padding-inline:.5em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}:host>button.action:focus,:host>button.action:active{outline:none;color:var(--\\275message-box-severity-color);border-color:var(--\\275message-box-severity-color)}:host>span.divider{width:1px;background-color:var(--sci-color-border)}\n"], dependencies: [{ kind: "pipe", type: KeyValuePipe, name: "keyvalue" }] }); }
|
|
7720
7724
|
}
|
|
7721
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7725
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MessageBoxFooterComponent, decorators: [{
|
|
7722
7726
|
type: Component,
|
|
7723
7727
|
args: [{ selector: 'wb-message-box-footer', standalone: true, imports: [
|
|
7724
7728
|
KeyValuePipe,
|
|
@@ -7765,15 +7769,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
7765
7769
|
class WorkbenchDialogFooterDirective {
|
|
7766
7770
|
constructor(template, dialog) {
|
|
7767
7771
|
this.template = template;
|
|
7768
|
-
|
|
7772
|
+
// Defer registering footer to avoid `ExpressionChangedAfterItHasBeenCheckedError`.
|
|
7773
|
+
asapScheduler.schedule(() => this._footer = dialog.registerFooter(this));
|
|
7769
7774
|
}
|
|
7770
7775
|
ngOnDestroy() {
|
|
7771
|
-
|
|
7776
|
+
// Defer disposing footer to avoid `ExpressionChangedAfterItHasBeenCheckedError`.
|
|
7777
|
+
asapScheduler.schedule(() => this._footer?.dispose());
|
|
7772
7778
|
}
|
|
7773
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7774
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "
|
|
7779
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogFooterDirective, deps: [{ token: i0.TemplateRef }, { token: ɵWorkbenchDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
7780
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.0.2", type: WorkbenchDialogFooterDirective, isStandalone: true, selector: "ng-template[wbDialogFooter]", inputs: { divider: ["divider", "divider", booleanAttribute] }, ngImport: i0 }); }
|
|
7775
7781
|
}
|
|
7776
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7782
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogFooterDirective, decorators: [{
|
|
7777
7783
|
type: Directive,
|
|
7778
7784
|
args: [{ selector: 'ng-template[wbDialogFooter]', standalone: true }]
|
|
7779
7785
|
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: ɵWorkbenchDialog }], propDecorators: { divider: [{
|
|
@@ -7805,15 +7811,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
7805
7811
|
class WorkbenchDialogHeaderDirective {
|
|
7806
7812
|
constructor(template, dialog) {
|
|
7807
7813
|
this.template = template;
|
|
7808
|
-
|
|
7814
|
+
// Defer registering header to avoid `ExpressionChangedAfterItHasBeenCheckedError`.
|
|
7815
|
+
asapScheduler.schedule(() => this._header = dialog.registerHeader(this));
|
|
7809
7816
|
}
|
|
7810
7817
|
ngOnDestroy() {
|
|
7811
|
-
|
|
7818
|
+
// Defer disposing header to avoid `ExpressionChangedAfterItHasBeenCheckedError`.
|
|
7819
|
+
asapScheduler.schedule(() => this._header?.dispose());
|
|
7812
7820
|
}
|
|
7813
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7814
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "
|
|
7821
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogHeaderDirective, deps: [{ token: i0.TemplateRef }, { token: ɵWorkbenchDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
7822
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.0.2", type: WorkbenchDialogHeaderDirective, isStandalone: true, selector: "ng-template[wbDialogHeader]", inputs: { divider: ["divider", "divider", booleanAttribute] }, ngImport: i0 }); }
|
|
7815
7823
|
}
|
|
7816
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7824
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogHeaderDirective, decorators: [{
|
|
7817
7825
|
type: Directive,
|
|
7818
7826
|
args: [{ selector: 'ng-template[wbDialogHeader]', standalone: true }]
|
|
7819
7827
|
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: ɵWorkbenchDialog }], propDecorators: { divider: [{
|
|
@@ -7831,10 +7839,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
7831
7839
|
* SPDX-License-Identifier: EPL-2.0
|
|
7832
7840
|
*/
|
|
7833
7841
|
class MessageBoxHeaderComponent {
|
|
7834
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7835
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
7842
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MessageBoxHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7843
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: MessageBoxHeaderComponent, isStandalone: true, selector: "wb-message-box-header", inputs: { title: "title", severity: "severity" }, host: { properties: { "attr.data-severity": "this.severity" } }, ngImport: i0, template: "@if (title) {\n <span class=\"title e2e-title\">{{ title }}</span>\n}\n", styles: ["@charset \"UTF-8\";:host{--\\275message-box-severity-color: initial;display:grid;border-top:var(--sci-workbench-messagebox-severity-indicator-size) solid var(--\\275message-box-severity-color);padding-inline:var(--sci-workbench-messagebox-padding);padding-top:var(--sci-workbench-messagebox-padding);-webkit-user-select:none;user-select:none}:host[data-severity=info]{--\\275message-box-severity-color: var(--sci-color-accent)}:host[data-severity=warn]{--\\275message-box-severity-color: var(--sci-color-notice)}:host[data-severity=error]{--\\275message-box-severity-color: var(--sci-color-negative)}:host>span.title{overflow-wrap:break-word;white-space:pre-line;font-family:var(--sci-workbench-messagebox-title-font-family);font-size:var(--sci-workbench-messagebox-title-font-size);font-weight:var(--sci-workbench-messagebox-title-font-weight);text-align:var(--sci-workbench-messagebox-title-align)}\n"] }); }
|
|
7836
7844
|
}
|
|
7837
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7845
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MessageBoxHeaderComponent, decorators: [{
|
|
7838
7846
|
type: Component,
|
|
7839
7847
|
args: [{ selector: 'wb-message-box-header', standalone: true, template: "@if (title) {\n <span class=\"title e2e-title\">{{ title }}</span>\n}\n", styles: ["@charset \"UTF-8\";:host{--\\275message-box-severity-color: initial;display:grid;border-top:var(--sci-workbench-messagebox-severity-indicator-size) solid var(--\\275message-box-severity-color);padding-inline:var(--sci-workbench-messagebox-padding);padding-top:var(--sci-workbench-messagebox-padding);-webkit-user-select:none;user-select:none}:host[data-severity=info]{--\\275message-box-severity-color: var(--sci-color-accent)}:host[data-severity=warn]{--\\275message-box-severity-color: var(--sci-color-notice)}:host[data-severity=error]{--\\275message-box-severity-color: var(--sci-color-negative)}:host>span.title{overflow-wrap:break-word;white-space:pre-line;font-family:var(--sci-workbench-messagebox-title-font-family);font-size:var(--sci-workbench-messagebox-title-font-size);font-weight:var(--sci-workbench-messagebox-title-font-weight);text-align:var(--sci-workbench-messagebox-title-align)}\n"] }]
|
|
7840
7848
|
}], propDecorators: { title: [{
|
|
@@ -7863,10 +7871,10 @@ class TypeofPipe {
|
|
|
7863
7871
|
transform(object, type) {
|
|
7864
7872
|
return typeof object === type;
|
|
7865
7873
|
}
|
|
7866
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7867
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
7874
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: TypeofPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
7875
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: TypeofPipe, isStandalone: true, name: "wbTypeof" }); }
|
|
7868
7876
|
}
|
|
7869
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7877
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: TypeofPipe, decorators: [{
|
|
7870
7878
|
type: Pipe,
|
|
7871
7879
|
args: [{ name: 'wbTypeof', standalone: true }]
|
|
7872
7880
|
}] });
|
|
@@ -7896,6 +7904,7 @@ class WorkbenchMessageBoxComponent {
|
|
|
7896
7904
|
this._dialog = _dialog;
|
|
7897
7905
|
// Ensure host element to be focusable in order to close the message box on Escape keystroke.
|
|
7898
7906
|
this.tabindex = -1;
|
|
7907
|
+
this.empty = false;
|
|
7899
7908
|
this._dialog.closable = false;
|
|
7900
7909
|
this._dialog.resizable = false;
|
|
7901
7910
|
this._dialog.padding = false;
|
|
@@ -7912,16 +7921,20 @@ class WorkbenchMessageBoxComponent {
|
|
|
7912
7921
|
onFooterPreferredSizeChange(preferredSize) {
|
|
7913
7922
|
this._dialog.size.minWidth = `${preferredSize}px`;
|
|
7914
7923
|
}
|
|
7915
|
-
|
|
7916
|
-
|
|
7924
|
+
onContentDimensionChange(dimension) {
|
|
7925
|
+
this.empty = !dimension.offsetHeight;
|
|
7926
|
+
}
|
|
7927
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchMessageBoxComponent, deps: [{ token: ɵWorkbenchDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7928
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: WorkbenchMessageBoxComponent, isStandalone: true, selector: "wb-message-box", inputs: { message: ["message", "message", nullIfEmptyMessage], options: "options" }, host: { listeners: { "keydown.escape": "onEscape()" }, properties: { "attr.tabindex": "this.tabindex", "class.empty": "this.empty", "class.content-selectable": "this.contentSelectable", "class.has-title": "this.hasTitle" } }, providers: [
|
|
7917
7929
|
// Prevent injecting the dialog handle in message box context.
|
|
7918
7930
|
{ provide: WorkbenchDialog, useFactory: () => throwError(`[NullInjectorError] No provider for 'WorkbenchDialog'`) }
|
|
7919
|
-
], ngImport: i0, template: "<ng-template wbDialogHeader [divider]=\"false\">\n <wb-message-box-header [title]=\"options?.title\" [severity]=\"options?.severity ?? 'info'\"/>\n</ng-template>\n\n@if (message | wbTypeof:'string') {\n
|
|
7931
|
+
], ngImport: i0, template: "<ng-template wbDialogHeader [divider]=\"false\">\n <wb-message-box-header [title]=\"options?.title\" [severity]=\"options?.severity ?? 'info'\"/>\n</ng-template>\n\n<div class=\"message e2e-message\" [class.text]=\"message | wbTypeof:'string'\" sciDimension (sciDimensionChange)=\"onContentDimensionChange($event)\">\n @if (message | wbTypeof:'string') {\n {{message}}\n } @else {\n <ng-container *ngComponentOutlet=\"message; inputs: options?.inputs\"/>\n }\n</div>\n\n<ng-template wbDialogFooter>\n <wb-message-box-footer [actions]=\"options?.actions ?? {ok: 'OK'}\"\n [severity]=\"options?.severity ?? 'info'\"\n (action)=\"onAction($event)\"\n (keydown.escape)=\"onEscape()\"\n (preferredSizeChange)=\"onFooterPreferredSizeChange($event)\"/>\n</ng-template>\n", styles: [":host{display:block;overflow:hidden;outline:none;padding-inline:var(--sci-workbench-messagebox-padding);padding-bottom:var(--sci-workbench-messagebox-padding)}:host.has-title:not(.empty){padding-top:var(--sci-workbench-messagebox-padding)}:host:not(.content-selectable){-webkit-user-select:none;user-select:none}:host>div.message.text{overflow-wrap:break-word;white-space:pre-line;text-align:var(--sci-workbench-messagebox-text-align)}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: SciDimensionDirective, selector: "[sciDimension]", inputs: ["emitOutsideAngular"], outputs: ["sciDimensionChange"], exportAs: ["sciDimension"] }, { kind: "directive", type: WorkbenchDialogHeaderDirective, selector: "ng-template[wbDialogHeader]", inputs: ["divider"] }, { kind: "directive", type: WorkbenchDialogFooterDirective, selector: "ng-template[wbDialogFooter]", inputs: ["divider"] }, { kind: "component", type: MessageBoxHeaderComponent, selector: "wb-message-box-header", inputs: ["title", "severity"] }, { kind: "component", type: MessageBoxFooterComponent, selector: "wb-message-box-footer", inputs: ["actions", "severity"], outputs: ["action", "preferredSizeChange"] }, { kind: "pipe", type: TypeofPipe, name: "wbTypeof" }] }); }
|
|
7920
7932
|
}
|
|
7921
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7933
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchMessageBoxComponent, decorators: [{
|
|
7922
7934
|
type: Component,
|
|
7923
7935
|
args: [{ selector: 'wb-message-box', standalone: true, imports: [
|
|
7924
7936
|
NgComponentOutlet,
|
|
7937
|
+
SciDimensionDirective,
|
|
7925
7938
|
WorkbenchDialogHeaderDirective,
|
|
7926
7939
|
WorkbenchDialogFooterDirective,
|
|
7927
7940
|
MessageBoxHeaderComponent,
|
|
@@ -7930,10 +7943,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
7930
7943
|
], providers: [
|
|
7931
7944
|
// Prevent injecting the dialog handle in message box context.
|
|
7932
7945
|
{ provide: WorkbenchDialog, useFactory: () => throwError(`[NullInjectorError] No provider for 'WorkbenchDialog'`) }
|
|
7933
|
-
], template: "<ng-template wbDialogHeader [divider]=\"false\">\n <wb-message-box-header [title]=\"options?.title\" [severity]=\"options?.severity ?? 'info'\"/>\n</ng-template>\n\n@if (message | wbTypeof:'string') {\n
|
|
7946
|
+
], template: "<ng-template wbDialogHeader [divider]=\"false\">\n <wb-message-box-header [title]=\"options?.title\" [severity]=\"options?.severity ?? 'info'\"/>\n</ng-template>\n\n<div class=\"message e2e-message\" [class.text]=\"message | wbTypeof:'string'\" sciDimension (sciDimensionChange)=\"onContentDimensionChange($event)\">\n @if (message | wbTypeof:'string') {\n {{message}}\n } @else {\n <ng-container *ngComponentOutlet=\"message; inputs: options?.inputs\"/>\n }\n</div>\n\n<ng-template wbDialogFooter>\n <wb-message-box-footer [actions]=\"options?.actions ?? {ok: 'OK'}\"\n [severity]=\"options?.severity ?? 'info'\"\n (action)=\"onAction($event)\"\n (keydown.escape)=\"onEscape()\"\n (preferredSizeChange)=\"onFooterPreferredSizeChange($event)\"/>\n</ng-template>\n", styles: [":host{display:block;overflow:hidden;outline:none;padding-inline:var(--sci-workbench-messagebox-padding);padding-bottom:var(--sci-workbench-messagebox-padding)}:host.has-title:not(.empty){padding-top:var(--sci-workbench-messagebox-padding)}:host:not(.content-selectable){-webkit-user-select:none;user-select:none}:host>div.message.text{overflow-wrap:break-word;white-space:pre-line;text-align:var(--sci-workbench-messagebox-text-align)}\n"] }]
|
|
7934
7947
|
}], ctorParameters: () => [{ type: ɵWorkbenchDialog }], propDecorators: { tabindex: [{
|
|
7935
7948
|
type: HostBinding,
|
|
7936
7949
|
args: ['attr.tabindex']
|
|
7950
|
+
}], empty: [{
|
|
7951
|
+
type: HostBinding,
|
|
7952
|
+
args: ['class.empty']
|
|
7937
7953
|
}], message: [{
|
|
7938
7954
|
type: Input,
|
|
7939
7955
|
args: [{ required: true, transform: nullIfEmptyMessage }]
|
|
@@ -8038,10 +8054,10 @@ function nullIfEmptyMessage(message) {
|
|
|
8038
8054
|
* - `--sci-workbench-dialog-title-align`
|
|
8039
8055
|
*/
|
|
8040
8056
|
class WorkbenchDialogService {
|
|
8041
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
8042
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
8057
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
8058
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogService, providedIn: 'root', useExisting: ɵWorkbenchDialogService }); }
|
|
8043
8059
|
}
|
|
8044
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
8060
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogService, decorators: [{
|
|
8045
8061
|
type: Injectable,
|
|
8046
8062
|
args: [{ providedIn: 'root', useExisting: ɵWorkbenchDialogService }]
|
|
8047
8063
|
}] });
|
|
@@ -8078,10 +8094,10 @@ class ɵWorkbenchMessageBoxService {
|
|
|
8078
8094
|
animate: true,
|
|
8079
8095
|
}));
|
|
8080
8096
|
}
|
|
8081
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
8082
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
8097
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchMessageBoxService, deps: [{ token: WorkbenchDialogService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
8098
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchMessageBoxService, providedIn: 'root' }); }
|
|
8083
8099
|
}
|
|
8084
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
8100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchMessageBoxService, decorators: [{
|
|
8085
8101
|
type: Injectable,
|
|
8086
8102
|
args: [{ providedIn: 'root' }]
|
|
8087
8103
|
}], ctorParameters: () => [{ type: WorkbenchDialogService }, { type: i0.NgZone }] });
|
|
@@ -8122,6 +8138,7 @@ class ɵPopup {
|
|
|
8122
8138
|
* Indicates whether this popup is blocked by dialog(s) that overlay it.
|
|
8123
8139
|
*/
|
|
8124
8140
|
this.blockedBy$ = new BehaviorSubject(null);
|
|
8141
|
+
this.id = this._config.id ?? randomUUID();
|
|
8125
8142
|
this.cssClasses = Arrays.coerce(this._config.cssClass);
|
|
8126
8143
|
this.blockWhenDialogOpened();
|
|
8127
8144
|
}
|
|
@@ -8212,6 +8229,9 @@ class PopupComponent {
|
|
|
8212
8229
|
get cssClasses() {
|
|
8213
8230
|
return this._popup.cssClasses.join(' ');
|
|
8214
8231
|
}
|
|
8232
|
+
get id() {
|
|
8233
|
+
return this._popup.id;
|
|
8234
|
+
}
|
|
8215
8235
|
constructor(_popup, injector) {
|
|
8216
8236
|
this._popup = _popup;
|
|
8217
8237
|
this.portal = new ComponentPortal(this._popup.component, this._popup.viewContainerRef, injector);
|
|
@@ -8224,12 +8244,12 @@ class PopupComponent {
|
|
|
8224
8244
|
// the popup loses focus by clicking on an element in a microfrontend.
|
|
8225
8245
|
this._cdkTrapFocus.focusTrap.focusInitialElementWhenReady().then(noop);
|
|
8226
8246
|
}
|
|
8227
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
8228
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
8247
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PopupComponent, deps: [{ token: ɵPopup }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8248
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: PopupComponent, isStandalone: true, selector: "wb-popup", host: { properties: { "style.width": "this.popupWidth", "style.min-width": "this.popupMinWidth", "style.max-width": "this.popupMaxWidth", "style.height": "this.popupHeight", "style.min-height": "this.popupMinHeight", "style.max-height": "this.popupMaxHeight", "attr.class": "this.cssClasses", "attr.data-popupid": "this.id" } }, providers: [
|
|
8229
8249
|
configurePopupGlassPane(),
|
|
8230
8250
|
], viewQueries: [{ propertyName: "_cdkTrapFocus", first: true, predicate: ["focus_trap"], descendants: true, read: CdkTrapFocus, static: true }], hostDirectives: [{ directive: GlassPaneDirective }], ngImport: i0, template: "<sci-viewport cdkTrapFocus class=\"e2e-popup-viewport\" #focus_trap>\n <ng-container *cdkPortalOutlet=\"portal\"></ng-container>\n</sci-viewport>\n", styles: [":host{display:grid;grid-template-columns:100%;grid-template-rows:100%;outline:none;border-radius:var(--sci-corner);overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: SciViewportComponent, selector: "sci-viewport", inputs: ["scrollbarStyle"], outputs: ["scroll"] }] }); }
|
|
8231
8251
|
}
|
|
8232
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
8252
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PopupComponent, decorators: [{
|
|
8233
8253
|
type: Component,
|
|
8234
8254
|
args: [{ selector: 'wb-popup', standalone: true, imports: [
|
|
8235
8255
|
A11yModule,
|
|
@@ -8264,15 +8284,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
8264
8284
|
}], cssClasses: [{
|
|
8265
8285
|
type: HostBinding,
|
|
8266
8286
|
args: ['attr.class']
|
|
8287
|
+
}], id: [{
|
|
8288
|
+
type: HostBinding,
|
|
8289
|
+
args: ['attr.data-popupid']
|
|
8267
8290
|
}] } });
|
|
8268
8291
|
/**
|
|
8269
8292
|
* Blocks this popup when dialog(s) overlay it.
|
|
8270
8293
|
*/
|
|
8271
8294
|
function configurePopupGlassPane() {
|
|
8272
|
-
return
|
|
8273
|
-
|
|
8274
|
-
|
|
8275
|
-
|
|
8295
|
+
return [
|
|
8296
|
+
{
|
|
8297
|
+
provide: GLASS_PANE_BLOCKABLE,
|
|
8298
|
+
useExisting: ɵPopup,
|
|
8299
|
+
},
|
|
8300
|
+
{
|
|
8301
|
+
provide: GLASS_PANE_OPTIONS,
|
|
8302
|
+
useFactory: () => ({ attributes: { 'data-popupid': inject(ɵPopup).id } }),
|
|
8303
|
+
},
|
|
8304
|
+
];
|
|
8276
8305
|
}
|
|
8277
8306
|
|
|
8278
8307
|
/*
|
|
@@ -8579,10 +8608,10 @@ class PopupService {
|
|
|
8579
8608
|
}
|
|
8580
8609
|
throw Error('[PopupOriginError] Illegal popup origin; must be "Point", "TopLeftPoint", "TopRightPoint", "BottomLeftPoint" or "BottomRightPoint".');
|
|
8581
8610
|
}
|
|
8582
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
8583
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
8611
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PopupService, deps: [{ token: i0.Injector }, { token: i1.Overlay }, { token: i2$1.FocusMonitor }, { token: WorkbenchViewRegistry }, { token: i0.NgZone }, { token: DOCUMENT }, { token: ɵWorkbenchView, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
8612
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PopupService, providedIn: 'root' }); }
|
|
8584
8613
|
}
|
|
8585
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
8614
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PopupService, decorators: [{
|
|
8586
8615
|
type: Injectable,
|
|
8587
8616
|
args: [{ providedIn: 'root' }]
|
|
8588
8617
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.Overlay }, { type: i2$1.FocusMonitor }, { type: WorkbenchViewRegistry }, { type: i0.NgZone }, { type: Document, decorators: [{
|
|
@@ -8626,10 +8655,10 @@ function startWithNullBoundsIf(condition) {
|
|
|
8626
8655
|
* - `--sci-workbench-messagebox-title-font-size`
|
|
8627
8656
|
*/
|
|
8628
8657
|
class WorkbenchMessageBoxService {
|
|
8629
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
8630
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
8658
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchMessageBoxService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
8659
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchMessageBoxService, providedIn: 'root', useExisting: ɵWorkbenchMessageBoxService }); }
|
|
8631
8660
|
}
|
|
8632
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
8661
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchMessageBoxService, decorators: [{
|
|
8633
8662
|
type: Injectable,
|
|
8634
8663
|
args: [{ providedIn: 'root', useExisting: ɵWorkbenchMessageBoxService }]
|
|
8635
8664
|
}] });
|
|
@@ -9057,10 +9086,10 @@ class WbFormatAcceleratorPipe {
|
|
|
9057
9086
|
.map(key => key[0].toUpperCase() + key.substring(1).toLowerCase())
|
|
9058
9087
|
.join('+');
|
|
9059
9088
|
}
|
|
9060
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9061
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
9089
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WbFormatAcceleratorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
9090
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: WbFormatAcceleratorPipe, isStandalone: true, name: "wbFormatAccelerator" }); }
|
|
9062
9091
|
}
|
|
9063
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9092
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WbFormatAcceleratorPipe, decorators: [{
|
|
9064
9093
|
type: Pipe,
|
|
9065
9094
|
args: [{ name: 'wbFormatAccelerator', standalone: true }]
|
|
9066
9095
|
}] });
|
|
@@ -9082,10 +9111,10 @@ class MapCoercePipe {
|
|
|
9082
9111
|
transform(mapLike) {
|
|
9083
9112
|
return Maps.coerce(mapLike);
|
|
9084
9113
|
}
|
|
9085
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9086
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
9114
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MapCoercePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
9115
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: MapCoercePipe, isStandalone: true, name: "wbCoerceMap" }); }
|
|
9087
9116
|
}
|
|
9088
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MapCoercePipe, decorators: [{
|
|
9089
9118
|
type: Pipe,
|
|
9090
9119
|
args: [{ name: 'wbCoerceMap', standalone: true }]
|
|
9091
9120
|
}] });
|
|
@@ -9128,10 +9157,10 @@ class ViewMenuComponent {
|
|
|
9128
9157
|
onDocumentCloseEvent() {
|
|
9129
9158
|
this._overlayRef.dispose();
|
|
9130
9159
|
}
|
|
9131
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9132
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
9160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewMenuComponent, deps: [{ token: i1.OverlayRef }, { token: ɵWorkbenchView }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9161
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ViewMenuComponent, isStandalone: true, selector: "wb-view-menu", host: { listeners: { "document:keydown.escape": "onEscape()", "mousedown": "onHostCloseEvent($event)", "sci-microfrontend-focusin": "onHostCloseEvent($event)", "document:mousedown": "onDocumentCloseEvent()", "document:sci-microfrontend-focusin": "onDocumentCloseEvent()" }, properties: { "attr.data-viewid": "this.viewId" } }, ngImport: i0, template: "<ng-container *ngFor=\"let menuItemGroup of menuItemGroups$ | async | wbCoerceMap | keyvalue; last as isLast\">\n <button *ngFor=\"let menuItem of menuItemGroup.value\"\n class=\"menu-item\"\n [ngClass]=\"menuItem.cssClass\"\n [disabled]=\"menuItem.isDisabled?.()\"\n (click)=\"onMenuItemClick(menuItem)\">\n <div class=\"text\">\n <ng-container *cdkPortalOutlet=\"menuItem.portal\"></ng-container>\n </div>\n <div class=\"accelerator\">{{menuItem.accelerator | wbFormatAccelerator}}</div>\n </button>\n <hr *ngIf=\"!isLast\">\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;gap:1px;width:var(--sci-workbench-contextmenu-width);border:1px solid var(--sci-color-border);color:var(--sci-color-text);background-color:var(--sci-color-background-elevation);border-radius:var(--sci-corner);overflow:hidden}:host>button.menu-item{all:unset;display:flex;flex-flow:row nowrap;padding:.6em 1.5em;font-size:smaller;position:relative;-webkit-user-select:none;user-select:none}:host>button.menu-item>div.text{flex:auto;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}:host>button.menu-item>div.accelerator{flex:none;margin-left:1em}:host>button.menu-item:hover{background-color:var(--sci-color-background-elevation-hover);box-shadow:0 0 0 1px var(--sci-color-border)}:host>button.menu-item:disabled{opacity:.5;pointer-events:none}:host>button.menu-item:has(+hr):after{position:absolute;left:0;right:0;bottom:-1px;height:1px;background-color:var(--sci-color-border);content:\"\"}:host>hr{display:none}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "pipe", type: WbFormatAcceleratorPipe, name: "wbFormatAccelerator" }, { kind: "pipe", type: MapCoercePipe, name: "wbCoerceMap" }] }); }
|
|
9133
9162
|
}
|
|
9134
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewMenuComponent, decorators: [{
|
|
9135
9164
|
type: Component,
|
|
9136
9165
|
args: [{ selector: 'wb-view-menu', standalone: true, imports: [
|
|
9137
9166
|
NgIf,
|
|
@@ -9188,10 +9217,10 @@ class TextComponent {
|
|
|
9188
9217
|
constructor(text) {
|
|
9189
9218
|
this.text = text;
|
|
9190
9219
|
}
|
|
9191
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9192
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
9220
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: TextComponent, deps: [{ token: TEXT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9221
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: TextComponent, isStandalone: true, selector: "wb-text", ngImport: i0, template: '{{text}}', isInline: true }); }
|
|
9193
9222
|
}
|
|
9194
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: TextComponent, decorators: [{
|
|
9195
9224
|
type: Component,
|
|
9196
9225
|
args: [{
|
|
9197
9226
|
selector: 'wb-text',
|
|
@@ -9501,10 +9530,10 @@ class ViewMenuService {
|
|
|
9501
9530
|
};
|
|
9502
9531
|
});
|
|
9503
9532
|
}
|
|
9504
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9505
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
9533
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewMenuService, deps: [{ token: i1.Overlay }, { token: i0.Injector }, { token: i0.NgZone }, { token: WorkbenchViewRegistry }, { token: WorkbenchService }, { token: WorkbenchConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9534
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewMenuService, providedIn: 'root' }); }
|
|
9506
9535
|
}
|
|
9507
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9536
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewMenuService, decorators: [{
|
|
9508
9537
|
type: Injectable,
|
|
9509
9538
|
args: [{ providedIn: 'root' }]
|
|
9510
9539
|
}], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.Injector }, { type: i0.NgZone }, { type: WorkbenchViewRegistry }, { type: WorkbenchService }, { type: WorkbenchConfig }] });
|
|
@@ -9582,12 +9611,12 @@ class ViewComponent {
|
|
|
9582
9611
|
ngOnDestroy() {
|
|
9583
9612
|
this._logger.debug(() => `Destroying ViewComponent [viewId=${this.viewId}]'`, LoggerNames.LIFECYCLE);
|
|
9584
9613
|
}
|
|
9585
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9586
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
9614
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewComponent, deps: [{ token: ɵWorkbenchView }, { token: Logger }, { token: i0.ElementRef }, { token: ViewDragService }, { token: ViewMenuService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9615
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ViewComponent, isStandalone: true, selector: "wb-view", host: { properties: { "attr.data-viewid": "this.viewId", "attr.class": "this.cssClasses", "class.view-drag": "this.isViewDragActive" } }, providers: [
|
|
9587
9616
|
configureViewGlassPane(),
|
|
9588
9617
|
], viewQueries: [{ propertyName: "setViewport", first: true, predicate: SciViewportComponent, descendants: true }], hostDirectives: [{ directive: GlassPaneDirective }], ngImport: i0, template: "<sci-viewport cdkTrapFocus>\n <router-outlet [name]=\"viewId\"/>\n</sci-viewport>\n", styles: [":host{display:flex;flex-direction:column;background-color:var(--sci-workbench-view-background-color);color:var(--sci-color-text)}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host{background-color:var(--sci-workbench-view-peripheral-background-color)}:host.view-drag{pointer-events:none}:host>sci-viewport{flex:1 1 0}:host>sci-viewport>router-outlet{position:absolute}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: SciViewportComponent, selector: "sci-viewport", inputs: ["scrollbarStyle"], outputs: ["scroll"] }] }); }
|
|
9589
9618
|
}
|
|
9590
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9619
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewComponent, decorators: [{
|
|
9591
9620
|
type: Component,
|
|
9592
9621
|
args: [{ selector: 'wb-view', standalone: true, imports: [
|
|
9593
9622
|
RouterOutlet,
|
|
@@ -9615,10 +9644,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
9615
9644
|
* Blocks this view when dialog(s) overlay it.
|
|
9616
9645
|
*/
|
|
9617
9646
|
function configureViewGlassPane() {
|
|
9618
|
-
return
|
|
9619
|
-
|
|
9620
|
-
|
|
9621
|
-
|
|
9647
|
+
return [
|
|
9648
|
+
{
|
|
9649
|
+
provide: GLASS_PANE_BLOCKABLE,
|
|
9650
|
+
useExisting: ɵWorkbenchView,
|
|
9651
|
+
},
|
|
9652
|
+
{
|
|
9653
|
+
provide: GLASS_PANE_OPTIONS,
|
|
9654
|
+
useFactory: () => ({ attributes: { 'data-viewid': inject(WorkbenchView).id } }),
|
|
9655
|
+
},
|
|
9656
|
+
];
|
|
9622
9657
|
}
|
|
9623
9658
|
|
|
9624
9659
|
/*
|
|
@@ -9686,10 +9721,10 @@ class MainAreaLayoutComponent {
|
|
|
9686
9721
|
}),
|
|
9687
9722
|
});
|
|
9688
9723
|
}
|
|
9689
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9690
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
9724
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MainAreaLayoutComponent, deps: [{ token: WORKBENCH_ID }, { token: ɵWorkbenchPart }, { token: WorkbenchLayoutService }, { token: ViewDragService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9725
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: MainAreaLayoutComponent, isStandalone: true, selector: "wb-main-area-layout", host: { properties: { "attr.data-partid": "this.partId" } }, ngImport: i0, template: "@if (mainAreaGrid.root | wbGridElementIfVisible; as root) {\n <wb-grid-element [element]=\"root\"\n wbViewDropZone\n [wbViewDropZoneSize]=\"100\"\n [wbViewDropZonePlaceholderSize]=\"100\"\n [wbViewDropZoneRegions]=\"{\n north: false,\n south: root | wbRequiresDropZone:'south',\n west: root | wbRequiresDropZone:'west',\n east: root | wbRequiresDropZone:'east',\n center: false,\n }\"\n [wbViewDropZoneCssClass]=\"'e2e-main-area-grid'\"\n (wbViewDropZoneDrop)=\"onViewDrop($event)\">\n </wb-grid-element>\n}\n@else {\n <sci-viewport class=\"start-page\"\n wbViewDropZone\n [wbViewDropZoneSize]=\"1\"\n [wbViewDropZoneRegions]=\"{center: true, north: false, south: false, west: false, east: false}\"\n [wbViewDropZoneCssClass]=\"'e2e-main-area-grid'\"\n (wbViewDropZoneDrop)=\"onViewDrop($event)\">\n <router-outlet/>\n </sci-viewport>\n}\n", styles: [":host{display:flex;flex-direction:column}:host>wb-grid-element,:host>sci-viewport.start-page{flex:1 1 0}:host>sci-viewport.start-page>router-outlet{position:absolute}\n"], dependencies: [{ kind: "component", type: GridElementComponent, selector: "wb-grid-element", inputs: ["element"] }, { kind: "directive", type: ViewDropZoneDirective, selector: "[wbViewDropZone]", inputs: ["wbViewDropZoneRegions", "wbViewDropZoneCssClass", "wbViewDropZoneSize", "wbViewDropZonePlaceholderSize"], outputs: ["wbViewDropZoneDrop"] }, { kind: "pipe", type: RequiresDropZonePipe, name: "wbRequiresDropZone" }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: SciViewportComponent, selector: "sci-viewport", inputs: ["scrollbarStyle"], outputs: ["scroll"] }, { kind: "pipe", type: GridElementIfVisiblePipe, name: "wbGridElementIfVisible" }] }); }
|
|
9691
9726
|
}
|
|
9692
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9727
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MainAreaLayoutComponent, decorators: [{
|
|
9693
9728
|
type: Component,
|
|
9694
9729
|
args: [{ selector: 'wb-main-area-layout', standalone: true, imports: [
|
|
9695
9730
|
NgIf,
|
|
@@ -9722,10 +9757,10 @@ class ViewTabContentComponent {
|
|
|
9722
9757
|
this.view = view;
|
|
9723
9758
|
this.context = inject(VIEW_TAB_RENDERING_CONTEXT);
|
|
9724
9759
|
}
|
|
9725
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9726
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
9760
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabContentComponent, deps: [{ token: WorkbenchView }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9761
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ViewTabContentComponent, isStandalone: true, selector: "wb-view-tab-content", host: { properties: { "attr.context": "this.context" } }, ngImport: i0, template: "<span class=\"title e2e-title\">\n <span *ngIf=\"view.dirty\" class=\"scion-workbench-icons dirty e2e-dirty\">dirty</span>\n {{view.title}}\n</span>\n\n<span class=\"heading e2e-heading\" *ngIf=\"view.heading\">\n {{view.heading}}\n</span>\n", styles: [":host{display:flex;flex-direction:column;gap:.25em;overflow:hidden}:host>span.title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-weight:400;font-size:1em}:host>span.title>span.dirty{padding-right:.2em}:host>span.heading{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:.9em;font-weight:300}:host[context=tab] span.title,:host[context=drag-image] span.title{margin-right:1em}@container viewtab (height < 3.5rem){:host>span.heading{display:none}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
9727
9762
|
}
|
|
9728
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9763
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabContentComponent, decorators: [{
|
|
9729
9764
|
type: Component,
|
|
9730
9765
|
args: [{ selector: 'wb-view-tab-content', standalone: true, imports: [NgIf], template: "<span class=\"title e2e-title\">\n <span *ngIf=\"view.dirty\" class=\"scion-workbench-icons dirty e2e-dirty\">dirty</span>\n {{view.title}}\n</span>\n\n<span class=\"heading e2e-heading\" *ngIf=\"view.heading\">\n {{view.heading}}\n</span>\n", styles: [":host{display:flex;flex-direction:column;gap:.25em;overflow:hidden}:host>span.title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-weight:400;font-size:1em}:host>span.title>span.dirty{padding-right:.2em}:host>span.heading{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:.9em;font-weight:300}:host[context=tab] span.title,:host[context=drag-image] span.title{margin-right:1em}@container viewtab (height < 3.5rem){:host>span.heading{display:none}}\n"] }]
|
|
9731
9766
|
}], ctorParameters: () => [{ type: WorkbenchView }], propDecorators: { context: [{
|
|
@@ -9886,10 +9921,10 @@ class ViewTabComponent {
|
|
|
9886
9921
|
],
|
|
9887
9922
|
}));
|
|
9888
9923
|
}
|
|
9889
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9890
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
9924
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabComponent, deps: [{ token: i0.ElementRef }, { token: WORKBENCH_ID }, { token: WorkbenchConfig }, { token: WorkbenchViewRegistry }, { token: ɵWorkbenchRouter }, { token: ViewDragService }, { token: i0.IterableDiffers }, { token: ViewMenuService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9925
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ViewTabComponent, isStandalone: true, selector: "wb-view-tab", inputs: { viewId: "viewId" }, host: { listeners: { "click": "onClick()", "mousedown": "onMousedown($event)", "contextmenu": "onContextmenu($event)", "dragstart": "onDragStart($event)", "dragend": "onDragEnd($event)" }, properties: { "attr.data-viewid": "this.viewId", "attr.draggable": "this.draggable", "attr.tabindex": "this.tabindex", "class.drag-over-tabbar": "this.isDragOverTabbar", "class.active": "this.active", "class.part-active": "this.partActive", "class.e2e-dirty": "this.dirty" } }, usesOnChanges: true, ngImport: i0, template: "<!-- IMPORTANT: THIS HTML FILE IS ALSO USED BY `ViewTabDragImageComponent` -->\n\n<div class=\"corner-radius start\" *ngIf=\"view.active\">\n <div class=\"circle\"></div>\n</div>\n\n<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal\"></ng-container>\n</div>\n\n<div class=\"corner-radius end\" *ngIf=\"view.active\">\n <div class=\"circle\"></div>\n</div>\n\n<button *ngIf=\"view.closable\"\n class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose($event)\">\n close\n</button>\n", styles: [":host{display:grid;align-items:center;padding-left:var(--sci-workbench-tab-padding-inline);padding-right:var(--sci-workbench-tab-padding-inline);position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;box-sizing:border-box;outline:none;border-top:1px solid transparent;border-left:1px solid transparent;border-right:1px solid transparent;border-top-left-radius:var(--sci-workbench-tab-border-radius);border-top-right-radius:var(--sci-workbench-tab-border-radius)}:host.active{cursor:default;color:var(--sci-workbench-tab-active-text-color);border-left-color:var(--sci-workbench-tab-border-color);border-right-color:var(--sci-workbench-tab-border-color);border-top-color:var(--sci-workbench-tab-border-color);background-color:var(--sci-workbench-view-background-color)}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host.active{background-color:var(--sci-workbench-view-peripheral-background-color)}:host.active.part-active>div.content{color:var(--sci-workbench-part-active-tab-active-text-color)}:host>div.content{min-width:var(--sci-workbench-tab-min-width);max-width:var(--sci-workbench-tab-max-width);isolation:isolate}:host>button.close{all:unset;position:absolute;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);right:.2em}:host>button.close:not(:hover){opacity:.75}:host.active>button.close,:host:hover:not(.drag-over-tabbar)>button.close{visibility:visible}:host.active>button.close:hover{background-color:var(--sci-workbench-tab-hover-background-color)}:host:hover:not(.active):not(.drag-over-tabbar):before{content:\"\";background-color:var(--sci-workbench-tab-hover-background-color);position:absolute;inset:0 0 .125em .125em;border-radius:var(--sci-workbench-tab-border-radius);pointer-events:none}:host>div.corner-radius{height:var(--sci-workbench-tab-border-radius);width:var(--sci-workbench-tab-border-radius);overflow:hidden;position:absolute;bottom:0}:host>div.corner-radius>div.circle{position:absolute;top:calc(-2 * var(--sci-workbench-tab-border-radius));width:calc(2 * var(--sci-workbench-tab-border-radius));height:calc(2 * var(--sci-workbench-tab-border-radius));border:var(--sci-workbench-tab-border-radius) solid var(--sci-workbench-view-background-color);border-radius:50%;box-shadow:inset 0 0 0 1px var(--sci-workbench-tab-border-color);box-sizing:content-box}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host>div.corner-radius>div.circle{border-color:var(--sci-workbench-view-peripheral-background-color)}:host>div.corner-radius.start{left:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.start>div.circle{left:calc(-2 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end{right:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end>div.circle{right:calc(-2 * var(--sci-workbench-tab-border-radius))}@container viewtab (height >= 3.5rem){:host>button.close{align-self:start;top:.125em;right:.125em}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] }); }
|
|
9891
9926
|
}
|
|
9892
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9927
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabComponent, decorators: [{
|
|
9893
9928
|
type: Component,
|
|
9894
9929
|
args: [{ selector: 'wb-view-tab', standalone: true, imports: [
|
|
9895
9930
|
NgIf,
|
|
@@ -9992,10 +10027,10 @@ class ViewTabDragImageComponent {
|
|
|
9992
10027
|
this.isDragOverPeripheralTabbar = partId !== null && documentRoot.querySelector(`wb-workbench:has(wb-main-area-layout) wb-part[data-partid="${partId}"]:not(.main-area)`) !== null;
|
|
9993
10028
|
});
|
|
9994
10029
|
}
|
|
9995
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9996
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
10030
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabDragImageComponent, deps: [{ token: WorkbenchView }, { token: WorkbenchConfig }, { token: ViewDragService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10031
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ViewTabDragImageComponent, isStandalone: true, selector: "wb-view-tab-drag-image", host: { properties: { "class.active": "this.active", "class.part-active": "this.partActive", "class.drag-over-tabbar": "this.isDragOverTabbar", "class.drag-over-peripheral-tabbar": "this.isDragOverPeripheralTabbar" } }, ngImport: i0, template: "<!-- IMPORTANT: THIS HTML FILE IS ALSO USED BY `ViewTabDragImageComponent` -->\n\n<div class=\"corner-radius start\" *ngIf=\"view.active\">\n <div class=\"circle\"></div>\n</div>\n\n<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal\"></ng-container>\n</div>\n\n<div class=\"corner-radius end\" *ngIf=\"view.active\">\n <div class=\"circle\"></div>\n</div>\n\n<button *ngIf=\"view.closable\"\n class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose($event)\">\n close\n</button>\n", styles: [":host{display:grid;align-items:center;padding-left:var(--sci-workbench-tab-padding-inline);padding-right:var(--sci-workbench-tab-padding-inline);position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;box-sizing:border-box;outline:none;border-top:1px solid transparent;border-left:1px solid transparent;border-right:1px solid transparent;border-top-left-radius:var(--sci-workbench-tab-border-radius);border-top-right-radius:var(--sci-workbench-tab-border-radius)}:host.active{cursor:default;color:var(--sci-workbench-tab-active-text-color);border-left-color:var(--sci-workbench-tab-border-color);border-right-color:var(--sci-workbench-tab-border-color);border-top-color:var(--sci-workbench-tab-border-color);background-color:var(--sci-workbench-view-background-color)}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host.active{background-color:var(--sci-workbench-view-peripheral-background-color)}:host.active.part-active>div.content{color:var(--sci-workbench-part-active-tab-active-text-color)}:host>div.content{min-width:var(--sci-workbench-tab-min-width);max-width:var(--sci-workbench-tab-max-width);isolation:isolate}:host>button.close{all:unset;position:absolute;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);right:.2em}:host>button.close:not(:hover){opacity:.75}:host.active>button.close,:host:hover:not(.drag-over-tabbar)>button.close{visibility:visible}:host.active>button.close:hover{background-color:var(--sci-workbench-tab-hover-background-color)}:host:hover:not(.active):not(.drag-over-tabbar):before{content:\"\";background-color:var(--sci-workbench-tab-hover-background-color);position:absolute;inset:0 0 .125em .125em;border-radius:var(--sci-workbench-tab-border-radius);pointer-events:none}:host>div.corner-radius{height:var(--sci-workbench-tab-border-radius);width:var(--sci-workbench-tab-border-radius);overflow:hidden;position:absolute;bottom:0}:host>div.corner-radius>div.circle{position:absolute;top:calc(-2 * var(--sci-workbench-tab-border-radius));width:calc(2 * var(--sci-workbench-tab-border-radius));height:calc(2 * var(--sci-workbench-tab-border-radius));border:var(--sci-workbench-tab-border-radius) solid var(--sci-workbench-view-background-color);border-radius:50%;box-shadow:inset 0 0 0 1px var(--sci-workbench-tab-border-color);box-sizing:content-box}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host>div.corner-radius>div.circle{border-color:var(--sci-workbench-view-peripheral-background-color)}:host>div.corner-radius.start{left:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.start>div.circle{left:calc(-2 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end{right:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end>div.circle{right:calc(-2 * var(--sci-workbench-tab-border-radius))}@container viewtab (height >= 3.5rem){:host>button.close{align-self:start;top:.125em;right:.125em}}\n", ":host.drag-over-peripheral-tabbar{background-color:var(--sci-workbench-view-peripheral-background-color)}:host:not(.drag-over-tabbar){border-radius:var(--sci-workbench-tab-border-radius);border:1px solid var(--sci-workbench-tab-drag-border-color)}:host:not(.drag-over-tabbar)>div.corner-radius{display:none}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] }); }
|
|
9997
10032
|
}
|
|
9998
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10033
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabDragImageComponent, decorators: [{
|
|
9999
10034
|
type: Component,
|
|
10000
10035
|
args: [{ selector: 'wb-view-tab-drag-image', standalone: true, imports: [
|
|
10001
10036
|
NgIf,
|
|
@@ -10032,7 +10067,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
10032
10067
|
*/
|
|
10033
10068
|
class ViewTabDragImageRenderer {
|
|
10034
10069
|
constructor(_viewDragService,
|
|
10035
|
-
// TODO [Angular
|
|
10070
|
+
// TODO [Angular 19][https://github.com/angular/components/issues/24334] Alternative constructor (ComponentFactoryResolver is deprecated)
|
|
10036
10071
|
_componentFactoryResolver, _applicationRef, _injector, _zone) {
|
|
10037
10072
|
this._viewDragService = _viewDragService;
|
|
10038
10073
|
this._componentFactoryResolver = _componentFactoryResolver;
|
|
@@ -10167,10 +10202,10 @@ class ViewTabDragImageRenderer {
|
|
|
10167
10202
|
}
|
|
10168
10203
|
});
|
|
10169
10204
|
}
|
|
10170
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10171
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
10205
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabDragImageRenderer, deps: [{ token: ViewDragService }, { token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
10206
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabDragImageRenderer, providedIn: 'root' }); }
|
|
10172
10207
|
}
|
|
10173
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10208
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabDragImageRenderer, decorators: [{
|
|
10174
10209
|
type: Injectable,
|
|
10175
10210
|
args: [{ providedIn: 'root' }]
|
|
10176
10211
|
}], ctorParameters: () => [{ type: ViewDragService }, { type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }, { type: i0.NgZone }] });
|
|
@@ -10242,10 +10277,10 @@ class PartActionFilterPipe {
|
|
|
10242
10277
|
transform(actions, align) {
|
|
10243
10278
|
return actions?.filter(action => (action.align ?? 'start') === align) ?? [];
|
|
10244
10279
|
}
|
|
10245
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10246
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
10280
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartActionFilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
10281
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: PartActionFilterPipe, isStandalone: true, name: "wbPartActionFilter" }); }
|
|
10247
10282
|
}
|
|
10248
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartActionFilterPipe, decorators: [{
|
|
10249
10284
|
type: Pipe,
|
|
10250
10285
|
args: [{ name: 'wbPartActionFilter', standalone: true }]
|
|
10251
10286
|
}] });
|
|
@@ -10263,10 +10298,10 @@ class PartActionBarComponent {
|
|
|
10263
10298
|
constructor(part) {
|
|
10264
10299
|
this.part = part;
|
|
10265
10300
|
}
|
|
10266
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10267
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
10301
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartActionBarComponent, deps: [{ token: WorkbenchPart }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10302
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: PartActionBarComponent, isStandalone: true, selector: "wb-part-action-bar", ngImport: i0, template: "<ul class=\"start\" *ngIf=\"part.actions$ | async | wbPartActionFilter:'start' | wbNullIfEmpty as startActions\">\n <li *ngFor=\"let startAction of startActions\" class=\"e2e-part-action\" [ngClass]=\"startAction.cssClass\">\n <ng-container *cdkPortalOutlet=\"startAction.portal\"></ng-container>\n </li>\n</ul>\n\n<ul class=\"end\" *ngIf=\"part.actions$ | async | wbPartActionFilter:'end' | wbNullIfEmpty as endActions\">\n <li *ngFor=\"let endAction of endActions\" class=\"e2e-part-action\" [ngClass]=\"endAction.cssClass\">\n <ng-container *cdkPortalOutlet=\"endAction.portal\"></ng-container>\n </li>\n</ul>\n", styles: [":host{display:flex;gap:.5em}:host>ul{all:unset;list-style:none;flex:auto;display:flex;gap:.5em;align-items:center}:host>ul.start{padding-left:var(--sci-workbench-part-bar-actions-padding-inline);place-content:flex-start}:host>ul.end{padding-right:var(--sci-workbench-part-bar-actions-padding-inline);place-content:flex-end}:host>ul>li{all:unset;flex:none}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "pipe", type: PartActionFilterPipe, name: "wbPartActionFilter" }, { kind: "pipe", type: NullIfEmptyPipe, name: "wbNullIfEmpty" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10268
10303
|
}
|
|
10269
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10304
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartActionBarComponent, decorators: [{
|
|
10270
10305
|
type: Component,
|
|
10271
10306
|
args: [{ selector: 'wb-part-action-bar', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
10272
10307
|
NgIf,
|
|
@@ -10368,12 +10403,12 @@ class FilterFieldComponent {
|
|
|
10368
10403
|
ngOnDestroy() {
|
|
10369
10404
|
this._focusManager.stopMonitoring(this._host.nativeElement);
|
|
10370
10405
|
}
|
|
10371
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10372
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
10406
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FilterFieldComponent, deps: [{ token: i0.ElementRef }, { token: i2$1.FocusMonitor }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10407
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: FilterFieldComponent, isStandalone: true, selector: "wb-filter-field", inputs: { tabindex: "tabindex", placeholder: "placeholder", disabled: "disabled" }, outputs: { filter: "filter" }, host: { listeners: { "focus": "focus()" }, properties: { "attr.tabindex": "this.componentTabindex", "class.empty": "this.empty" } }, providers: [
|
|
10373
10408
|
{ provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => FilterFieldComponent) },
|
|
10374
10409
|
], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: "<label [for]=\"id\" class=\"filter-icon scion-workbench-icons\">search</label>\n<input #input\n [attr.id]=\"id\"\n autocomplete=\"off\"\n [formControl]=\"formControl\"\n [tabindex]=\"tabindex ?? 0\"\n [placeholder]=\"placeholder ?? ''\">\n<button class=\"clear scion-workbench-icons\" tabindex=\"-1\" (click)=\"onClear()\">\n clear\n</button>\n", styles: [":host{display:inline-flex;flex-direction:row;gap:.5em;padding:.25em .5em}:host>label.filter-icon{flex:none;align-self:center;-webkit-user-select:none;user-select:none;font-size:1.5em}:host>input{all:unset;flex:auto;min-width:0}:host>button.clear{all:unset;flex:none;align-self:center;opacity:.75;cursor:pointer}:host>button.clear:hover{opacity:1}:host:not(:focus-within):not(:hover)>button.clear,:host:has(>input:disabled)>button.clear,:host.empty>button.clear{visibility:hidden}:host:has(>input:disabled)>label.filter-icon{color:var(--sci-color-text-subtlest)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10375
10410
|
}
|
|
10376
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10411
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FilterFieldComponent, decorators: [{
|
|
10377
10412
|
type: Component,
|
|
10378
10413
|
args: [{ selector: 'wb-filter-field', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ReactiveFormsModule], providers: [
|
|
10379
10414
|
{ provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => FilterFieldComponent) },
|
|
@@ -10416,10 +10451,10 @@ class FilterByPredicatePipe {
|
|
|
10416
10451
|
transform(items, predicate) {
|
|
10417
10452
|
return Arrays.coerce(items).filter(predicate);
|
|
10418
10453
|
}
|
|
10419
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10420
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
10454
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FilterByPredicatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
10455
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: FilterByPredicatePipe, isStandalone: true, name: "wbFilterByPredicate" }); }
|
|
10421
10456
|
}
|
|
10422
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10457
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FilterByPredicatePipe, decorators: [{
|
|
10423
10458
|
type: Pipe,
|
|
10424
10459
|
args: [{ name: 'wbFilterByPredicate', standalone: true }]
|
|
10425
10460
|
}] });
|
|
@@ -10441,10 +10476,10 @@ class FilterByTextPipe {
|
|
|
10441
10476
|
return of(Arrays.coerce(items))
|
|
10442
10477
|
.pipe(expand(it => filterControl.valueChanges.pipe(take(1), map(() => it))), filterArray(it => !filterControl.value || !!itemTextFn(it)?.match(toFilterRegExp(filterControl.value))));
|
|
10443
10478
|
}
|
|
10444
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10445
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
10479
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FilterByTextPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
10480
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: FilterByTextPipe, isStandalone: true, name: "wbFilterByText$" }); }
|
|
10446
10481
|
}
|
|
10447
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10482
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FilterByTextPipe, decorators: [{
|
|
10448
10483
|
type: Pipe,
|
|
10449
10484
|
args: [{ name: 'wbFilterByText$', standalone: true }]
|
|
10450
10485
|
}] });
|
|
@@ -10492,10 +10527,10 @@ class ViewListItemComponent {
|
|
|
10492
10527
|
],
|
|
10493
10528
|
}));
|
|
10494
10529
|
}
|
|
10495
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10496
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
10530
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListItemComponent, deps: [{ token: WorkbenchViewRegistry }, { token: WorkbenchConfig }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10531
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ViewListItemComponent, isStandalone: true, selector: "wb-view-list-item", inputs: { viewId: "viewId" }, host: { properties: { "class.active": "this.active" } }, ngImport: i0, template: "<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal\"></ng-container>\n</div>\n\n<button *ngIf=\"view.closable\"\n class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose()\">\n close\n</button>\n", styles: [":host{display:flex;align-items:center;padding:.6em 1em;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;gap:1em}:host.active{color:var(--sci-color-accent)}:host.active:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:3px;background-color:var(--sci-color-accent)}:host>div.content{flex:auto;display:grid;position:relative}:host>button.close{all:unset;flex:none;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);opacity:.75}:host>button.close:hover{opacity:1;background-color:var(--sci-color-background-elevation-hover)}:host:hover>button.close{visibility:visible}\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10497
10532
|
}
|
|
10498
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10533
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListItemComponent, decorators: [{
|
|
10499
10534
|
type: Component,
|
|
10500
10535
|
args: [{ selector: 'wb-view-list-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
10501
10536
|
PortalModule,
|
|
@@ -10572,10 +10607,10 @@ class ViewListComponent {
|
|
|
10572
10607
|
onDocumentCloseEvent() {
|
|
10573
10608
|
this._overlayRef.dispose();
|
|
10574
10609
|
}
|
|
10575
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10576
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
10610
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListComponent, deps: [{ token: WorkbenchPart }, { token: WorkbenchViewRegistry }, { token: i1.OverlayRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10611
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ViewListComponent, isStandalone: true, selector: "wb-view-list", inputs: { position: "position" }, host: { listeners: { "document:keydown.escape": "onEscape()", "mousedown": "onHostCloseEvent($event)", "sci-microfrontend-focusin": "onHostCloseEvent($event)", "document:mousedown": "onDocumentCloseEvent()", "document:sci-microfrontend-focusin": "onDocumentCloseEvent()" }, properties: { "class.south": "this.isSouthPosition", "attr.data-partid": "this.partId" } }, viewQueries: [{ propertyName: "_filterFieldComponent", first: true, predicate: FilterFieldComponent, descendants: true, static: true }], ngImport: i0, template: "<wb-filter-field [formControl]=\"filterFormControl\"/>\n<ng-container *ngIf=\"{\n scrolledOutOfView: views$ | async |\n wbFilterByPredicate:scrolledOutOfViewFilterFn |\n wbFilterByText$:filterFormControl:viewTextFn | async,\n scrolledIntoView: views$ | async |\n wbFilterByPredicate:scrolledIntoViewFilterFn |\n wbFilterByText$:filterFormControl:viewTextFn | async\n } as views\">\n <sci-viewport *ngIf=\"views.scrolledOutOfView?.length || views.scrolledIntoView?.length\">\n <wb-view-list-item *ngFor=\"let view of views.scrolledOutOfView\"\n [viewId]=\"view.id\"\n (click)=\"onActivateView(view)\">\n </wb-view-list-item>\n <hr *ngIf=\"views.scrolledOutOfView?.length && views.scrolledIntoView?.length\">\n <wb-view-list-item *ngFor=\"let view of views.scrolledIntoView\"\n [viewId]=\"view.id\"\n (click)=\"onActivateView(view)\">\n </wb-view-list-item>\n </sci-viewport>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;gap:.75em;width:var(--sci-workbench-contextmenu-width);border:1px solid var(--sci-color-border);color:var(--sci-color-text);background-color:var(--sci-color-background-elevation);border-radius:var(--sci-corner);overflow:hidden}:host.south{border-top:none}:host>wb-filter-field{flex:none;margin:.5em .25em}:host>sci-viewport{flex:auto;max-height:350px}:host>sci-viewport::part(content){display:flex;flex-direction:column;gap:1px;padding-top:1px}:host>sci-viewport>wb-view-list-item{position:relative}:host>sci-viewport>wb-view-list-item:hover{background-color:var(--sci-color-background-elevation-hover);box-shadow:0 0 0 1px var(--sci-color-border)}:host>sci-viewport>wb-view-list-item:has(+hr):after{position:absolute;left:0;right:0;bottom:-1px;height:1px;background-color:var(--sci-color-border);content:\"\"}:host>sci-viewport>hr{display:none}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: FilterFieldComponent, selector: "wb-filter-field", inputs: ["tabindex", "placeholder", "disabled"], outputs: ["filter"] }, { kind: "pipe", type: FilterByPredicatePipe, name: "wbFilterByPredicate" }, { kind: "pipe", type: FilterByTextPipe, name: "wbFilterByText$" }, { kind: "component", type: ViewListItemComponent, selector: "wb-view-list-item", inputs: ["viewId"] }, { kind: "component", type: SciViewportComponent, selector: "sci-viewport", inputs: ["scrollbarStyle"], outputs: ["scroll"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10577
10612
|
}
|
|
10578
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10613
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListComponent, decorators: [{
|
|
10579
10614
|
type: Component,
|
|
10580
10615
|
args: [{ selector: 'wb-view-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
10581
10616
|
NgIf,
|
|
@@ -10676,10 +10711,10 @@ class ViewListButtonComponent {
|
|
|
10676
10711
|
ngOnDestroy() {
|
|
10677
10712
|
this._overlayRef?.dispose();
|
|
10678
10713
|
}
|
|
10679
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10680
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
10714
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.Overlay }, { token: i0.Injector }, { token: i0.NgZone }, { token: WorkbenchPart }, { token: WorkbenchViewRegistry }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10715
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ViewListButtonComponent, isStandalone: true, selector: "wb-view-list-button", host: { listeners: { "click": "onClick()" } }, ngImport: i0, template: "<span class=\"chevron scion-workbench-icons\">\n chevron_down\n</span>\n<span class=\"count\" *ngIf=\"scrolledOutOfViewTabCount$ | async as count\">{{count}}</span>\n", styles: [":host{display:flex;flex-direction:column;cursor:pointer;padding:.5em;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}:host>span.chevron{flex:none}:host>span.count{flex:none;font-size:var(--sci-workbench-part-hidden-tab-count-size)}@container style(--sci-workbench-part-hidden-tab-count-size: 0){:host>span.count{display:none}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
10681
10716
|
}
|
|
10682
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10717
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListButtonComponent, decorators: [{
|
|
10683
10718
|
type: Component,
|
|
10684
10719
|
args: [{ selector: 'wb-view-list-button', standalone: true, imports: [
|
|
10685
10720
|
NgIf,
|
|
@@ -11083,10 +11118,10 @@ class PartBarComponent {
|
|
|
11083
11118
|
setCssVariable(this._host, { '--ɵpart-bar-indent-right': `${this._tabbarIndent.right}px` });
|
|
11084
11119
|
});
|
|
11085
11120
|
}
|
|
11086
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11087
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
11121
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartBarComponent, deps: [{ token: i0.ElementRef }, { token: WORKBENCH_ID }, { token: WorkbenchLayoutService }, { token: ɵWorkbenchRouter }, { token: ViewTabDragImageRenderer }, { token: ɵWorkbenchPart }, { token: ViewDragService }, { token: i0.DestroyRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11122
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: PartBarComponent, isStandalone: true, selector: "wb-part-bar", host: { listeners: { "dblclick": "onDoubleClick($event)", "dragstart": "onViewDragStart($event)", "dragend": "onViewDragEnd()" } }, viewQueries: [{ propertyName: "_viewportElement", first: true, predicate: SciViewportComponent, descendants: true, read: ElementRef, static: true }, { propertyName: "_viewportComponent", first: true, predicate: SciViewportComponent, descendants: true, static: true }, { propertyName: "_tabCornerRadiusElement", first: true, predicate: ["tab_corner_radius"], descendants: true, static: true }, { propertyName: "_paddingInlineElement", first: true, predicate: ["padding_inline"], descendants: true, static: true }, { propertyName: "injectViewTabs", predicate: ViewTabComponent, descendants: true }], ngImport: i0, template: "<sci-viewport class=\"tabbar\" scrollbarStyle=\"hidden\"\n [class.dragover]=\"dragover$ | async\"\n sciDimension (sciDimensionChange)=\"onTabbarViewportDimensionChange()\"\n (scroll)=\"onScroll()\">\n <ng-container *ngFor=\"let viewId of viewIds$ | async;\">\n <div class=\"divider\" *ngIf=\"viewtab === dropTargetViewTab\"></div>\n <wb-view-tab #viewtab\n [viewId]=\"viewId\"\n [class.drag-source]=\"viewtab === dragSourceViewTab\"\n [class.drop-target]=\"viewtab === dropTargetViewTab\">\n </wb-view-tab>\n <div class=\"divider\"></div>\n </ng-container>\n\n <!-- Placeholder element to grow the viewport to fit the drag image. -->\n <div class=\"drag-image-placeholder\"></div>\n</sci-viewport>\n<wb-part-action-bar/>\n<wb-view-list-button/>\n\n<!-- Element for injecting the corner radius into the component. -->\n<div class=\"tab-corner-radius\" #tab_corner_radius></div>\n<!-- Element for injecting the tabbar padding into the component. -->\n<div class=\"padding-inline\" #padding_inline></div>\n", styles: ["@charset \"UTF-8\";:host{--\\275part-bar-indent-left: 0;--\\275part-bar-indent-right: 0;--\\275part-bar-drag-source-width: 0;--\\275part-bar-drag-image-placeholder-width: 0;display:flex;color:var(--sci-workbench-tab-text-color);background-color:var(--sci-workbench-part-bar-background-color);border-top:var(--sci-workbench-part-bar-padding-top) solid transparent;background-clip:border-box;height:var(--sci-workbench-tab-height);box-sizing:content-box;position:relative;container-name:viewtab;container-type:size}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host{background-color:var(--sci-workbench-part-peripheral-bar-background-color)}:host>sci-viewport.tabbar{flex:initial}:host>sci-viewport.tabbar::part(content){display:flex;padding-left:var(--\\275part-bar-indent-left);padding-right:var(--\\275part-bar-indent-right)}:host>sci-viewport.tabbar:not(.dragover):not(:has(wb-view-tab:not(.drag-source)))::part(content){padding-right:0}:host>sci-viewport.tabbar>wb-view-tab{flex:none}:host>sci-viewport.tabbar>wb-view-tab.drag-source{display:none}:host>sci-viewport.tabbar>div.divider{flex:none;display:flex;position:relative;width:0}:host>sci-viewport.tabbar>div.divider:after{flex:none;align-self:center;content:\"\";position:absolute;width:1px;left:-1px;height:65%;background-color:var(--sci-workbench-part-bar-divider-color)}:host>sci-viewport.tabbar>div.drag-image-placeholder{flex:none;width:var(--\\275part-bar-drag-image-placeholder-width)}:host>sci-viewport.tabbar>wb-view-tab.drop-target,:host>sci-viewport.tabbar wb-view-tab.drop-target~:is(wb-view-tab,div.divider),:host>sci-viewport.tabbar>div.divider:has(+wb-view-tab.drop-target){transform:translate(var(--\\275part-bar-drag-source-width))}:host>sci-viewport.tabbar>wb-view-tab:is(.active,.drag-source)+div.divider{display:none}:host>sci-viewport.tabbar>div.divider:has(+wb-view-tab.active:not(.drag-source)){display:none}:host>sci-viewport.tabbar>div.divider:has(+wb-view-tab.drag-source:not(.active)){display:none}:host>wb-part-action-bar{flex:auto}:host>wb-view-list-button{flex:none}:host:before{content:\"\";position:absolute;bottom:0;left:0;right:0;height:1px;background-color:var(--sci-workbench-tab-border-color)}:host>div.tab-corner-radius{position:absolute;visibility:hidden;width:var(--sci-workbench-tab-border-radius)}:host>div.padding-inline{position:absolute;visibility:hidden;width:var(--sci-workbench-part-bar-padding-inline)}:host:not(.calculating-max-viewport-width).drag-enter wb-view-tab,:host:not(.calculating-max-viewport-width).drag-enter div.divider,:host:not(.calculating-max-viewport-width).drag-over wb-view-tab,:host:not(.calculating-max-viewport-width).drag-over div.divider,:host:not(.calculating-max-viewport-width).drag-leave wb-view-tab,:host:not(.calculating-max-viewport-width).drag-leave div.divider{transition:transform 175ms cubic-bezier(0,0,.2,1)}:host:not(.calculating-max-viewport-width).drag-enter div.drag-image-placeholder,:host:not(.calculating-max-viewport-width).drag-leave div.drag-image-placeholder{transition:width 175ms cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: SciViewportComponent, selector: "sci-viewport", inputs: ["scrollbarStyle"], outputs: ["scroll"] }, { kind: "ngmodule", type: SciDimensionModule }, { kind: "directive", type: i6.SciDimensionDirective, selector: "[sciDimension]", inputs: ["emitOutsideAngular"], outputs: ["sciDimensionChange"], exportAs: ["sciDimension"] }, { kind: "component", type: ViewTabComponent, selector: "wb-view-tab", inputs: ["viewId"] }, { kind: "component", type: PartActionBarComponent, selector: "wb-part-action-bar" }, { kind: "component", type: ViewListButtonComponent, selector: "wb-view-list-button" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
11088
11123
|
}
|
|
11089
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
11124
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartBarComponent, decorators: [{
|
|
11090
11125
|
type: Component,
|
|
11091
11126
|
args: [{ selector: 'wb-part-bar', standalone: true, imports: [
|
|
11092
11127
|
NgFor,
|
|
@@ -11182,10 +11217,10 @@ class WorkbenchPortalOutletDirective {
|
|
|
11182
11217
|
ngOnDestroy() {
|
|
11183
11218
|
this.detach();
|
|
11184
11219
|
}
|
|
11185
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11186
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
11220
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPortalOutletDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
11221
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: WorkbenchPortalOutletDirective, isStandalone: true, selector: "ng-template[wbPortalOutlet]", inputs: { portal: ["wbPortalOutlet", "portal"] }, ngImport: i0 }); }
|
|
11187
11222
|
}
|
|
11188
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
11223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPortalOutletDirective, decorators: [{
|
|
11189
11224
|
type: Directive,
|
|
11190
11225
|
args: [{ selector: 'ng-template[wbPortalOutlet]', standalone: true }]
|
|
11191
11226
|
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }], propDecorators: { portal: [{
|
|
@@ -11215,10 +11250,10 @@ class ViewPortalPipe {
|
|
|
11215
11250
|
}
|
|
11216
11251
|
return this._viewRegistry.get(viewId).portal;
|
|
11217
11252
|
}
|
|
11218
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11219
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
11253
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewPortalPipe, deps: [{ token: WorkbenchViewRegistry }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
11254
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: ViewPortalPipe, isStandalone: true, name: "wbViewPortal" }); }
|
|
11220
11255
|
}
|
|
11221
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
11256
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewPortalPipe, decorators: [{
|
|
11222
11257
|
type: Pipe,
|
|
11223
11258
|
args: [{ name: 'wbViewPortal', standalone: true }]
|
|
11224
11259
|
}], ctorParameters: () => [{ type: WorkbenchViewRegistry }] });
|
|
@@ -11317,10 +11352,10 @@ class PartComponent {
|
|
|
11317
11352
|
ngOnDestroy() {
|
|
11318
11353
|
this._logger.debug(() => `Destroying PartComponent [partId=${this.partId}]'`, LoggerNames.LIFECYCLE);
|
|
11319
11354
|
}
|
|
11320
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11321
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
11355
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartComponent, deps: [{ token: WORKBENCH_ID }, { token: WorkbenchViewRegistry }, { token: ViewDragService }, { token: i0.Injector }, { token: Logger }, { token: i0.ChangeDetectorRef }, { token: ɵWorkbenchPart }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11356
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: PartComponent, isStandalone: true, selector: "wb-part", host: { properties: { "attr.tabindex": "this.tabIndex", "attr.data-partid": "this.partId", "class.e2e-main-area": "this.isInMainArea", "class.main-area": "this.isMainArea", "class.active": "this.isActive" } }, ngImport: i0, template: "<wb-part-bar></wb-part-bar>\n\n<div wbViewDropZone\n [wbViewDropZoneSize]=\".3\"\n [wbViewDropZonePlaceholderSize]=\".5\"\n [wbViewDropZoneCssClass]=\"'e2e-part'\"\n (wbViewDropZoneDrop)=\"onViewDrop($event)\"\n class=\"active-view e2e-active-view\">\n <ng-container *wbPortalOutlet=\"part.activeViewId$ | async | wbViewPortal\"></ng-container>\n</div>\n", styles: [":host{display:flex;flex-direction:column;outline:none}:host>wb-part-bar{flex:none}:host>div.active-view{flex:auto;display:grid;position:relative}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: PartBarComponent, selector: "wb-part-bar" }, { kind: "directive", type: ViewDropZoneDirective, selector: "[wbViewDropZone]", inputs: ["wbViewDropZoneRegions", "wbViewDropZoneCssClass", "wbViewDropZoneSize", "wbViewDropZonePlaceholderSize"], outputs: ["wbViewDropZoneDrop"] }, { kind: "directive", type: WorkbenchPortalOutletDirective, selector: "ng-template[wbPortalOutlet]", inputs: ["wbPortalOutlet"] }, { kind: "pipe", type: ViewPortalPipe, name: "wbViewPortal" }] }); }
|
|
11322
11357
|
}
|
|
11323
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
11358
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartComponent, decorators: [{
|
|
11324
11359
|
type: Component,
|
|
11325
11360
|
args: [{ selector: 'wb-part', standalone: true, imports: [
|
|
11326
11361
|
AsyncPipe,
|
|
@@ -11427,10 +11462,10 @@ class WorkbenchLayoutDiffer {
|
|
|
11427
11462
|
views: this._viewsDiffer.diff(views),
|
|
11428
11463
|
});
|
|
11429
11464
|
}
|
|
11430
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11431
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
11465
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutDiffer, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
11466
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutDiffer, providedIn: 'root' }); }
|
|
11432
11467
|
}
|
|
11433
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
11468
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutDiffer, decorators: [{
|
|
11434
11469
|
type: Injectable,
|
|
11435
11470
|
args: [{ providedIn: 'root' }]
|
|
11436
11471
|
}], ctorParameters: () => [{ type: i0.IterableDiffers }] });
|
|
@@ -11481,10 +11516,10 @@ class WorkbenchPopupDiffer {
|
|
|
11481
11516
|
const popupOutlets = Object.keys(urlTree.root.children).filter(RouterUtils.isPopupOutlet);
|
|
11482
11517
|
return new WorkbenchPopupDiff(this._popupsDiffer.diff(popupOutlets));
|
|
11483
11518
|
}
|
|
11484
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11485
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
11519
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPopupDiffer, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
11520
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPopupDiffer, providedIn: 'root' }); }
|
|
11486
11521
|
}
|
|
11487
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
11522
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPopupDiffer, decorators: [{
|
|
11488
11523
|
type: Injectable,
|
|
11489
11524
|
args: [{ providedIn: 'root' }]
|
|
11490
11525
|
}], ctorParameters: () => [{ type: i0.IterableDiffers }] });
|
|
@@ -11526,13 +11561,13 @@ class WorkbenchDialogDiffer {
|
|
|
11526
11561
|
* Computes differences in the URL since last time {@link WorkbenchDialogDiffer#diff} was invoked.
|
|
11527
11562
|
*/
|
|
11528
11563
|
diff(urlTree) {
|
|
11529
|
-
const dialogOutlets = Object.keys(urlTree.root.children).filter(
|
|
11564
|
+
const dialogOutlets = Object.keys(urlTree.root.children).filter(RouterUtils.isDialogOutlet);
|
|
11530
11565
|
return new WorkbenchDialogDiff(this._dialogDiffer.diff(dialogOutlets));
|
|
11531
11566
|
}
|
|
11532
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11533
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
11567
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogDiffer, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
11568
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogDiffer, providedIn: 'root' }); }
|
|
11534
11569
|
}
|
|
11535
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
11570
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogDiffer, decorators: [{
|
|
11536
11571
|
type: Injectable,
|
|
11537
11572
|
args: [{ providedIn: 'root' }]
|
|
11538
11573
|
}], ctorParameters: () => [{ type: i0.IterableDiffers }] });
|
|
@@ -11554,6 +11589,54 @@ class WorkbenchDialogDiff {
|
|
|
11554
11589
|
}
|
|
11555
11590
|
}
|
|
11556
11591
|
|
|
11592
|
+
/*
|
|
11593
|
+
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
11594
|
+
*
|
|
11595
|
+
* This program and the accompanying materials are made
|
|
11596
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
11597
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
11598
|
+
*
|
|
11599
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
11600
|
+
*/
|
|
11601
|
+
/**
|
|
11602
|
+
* Stateful differ for finding added/removed message boxes.
|
|
11603
|
+
*/
|
|
11604
|
+
class WorkbenchMessageBoxDiffer {
|
|
11605
|
+
constructor(differs) {
|
|
11606
|
+
this._messageBoxDiffer = differs.find([]).create();
|
|
11607
|
+
}
|
|
11608
|
+
/**
|
|
11609
|
+
* Computes differences in the URL since last time {@link WorkbenchMessageBoxDiffer#diff} was invoked.
|
|
11610
|
+
*/
|
|
11611
|
+
diff(urlTree) {
|
|
11612
|
+
const messageBoxOutlets = Object.keys(urlTree.root.children).filter(RouterUtils.isMessageBoxOutlet);
|
|
11613
|
+
return new WorkbenchMessageBoxDiff(this._messageBoxDiffer.diff(messageBoxOutlets));
|
|
11614
|
+
}
|
|
11615
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchMessageBoxDiffer, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
11616
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchMessageBoxDiffer, providedIn: 'root' }); }
|
|
11617
|
+
}
|
|
11618
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchMessageBoxDiffer, decorators: [{
|
|
11619
|
+
type: Injectable,
|
|
11620
|
+
args: [{ providedIn: 'root' }]
|
|
11621
|
+
}], ctorParameters: () => [{ type: i0.IterableDiffers }] });
|
|
11622
|
+
/**
|
|
11623
|
+
* Lists the message boxes added/removed in the current navigation.
|
|
11624
|
+
*/
|
|
11625
|
+
class WorkbenchMessageBoxDiff {
|
|
11626
|
+
constructor(changes) {
|
|
11627
|
+
this.addedMessageBoxOutlets = new Array();
|
|
11628
|
+
this.removedMessageBoxOutlets = new Array();
|
|
11629
|
+
changes?.forEachAddedItem(({ item }) => this.addedMessageBoxOutlets.push(item));
|
|
11630
|
+
changes?.forEachRemovedItem(({ item }) => this.removedMessageBoxOutlets.push(item));
|
|
11631
|
+
}
|
|
11632
|
+
toString() {
|
|
11633
|
+
return `${new Array()
|
|
11634
|
+
.concat(this.addedMessageBoxOutlets.length ? `addedMessageBoxOutlets=[${this.addedMessageBoxOutlets}]` : [])
|
|
11635
|
+
.concat(this.removedMessageBoxOutlets.length ? `removedMessageBoxOutlets=[${this.removedMessageBoxOutlets}]` : [])
|
|
11636
|
+
.join(', ')}`;
|
|
11637
|
+
}
|
|
11638
|
+
}
|
|
11639
|
+
|
|
11557
11640
|
/*
|
|
11558
11641
|
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
11559
11642
|
*
|
|
@@ -11573,7 +11656,7 @@ class WorkbenchDialogDiff {
|
|
|
11573
11656
|
* - Parses the serialized layout and injects it into {@link WorkbenchLayoutService}.
|
|
11574
11657
|
*/
|
|
11575
11658
|
class WorkbenchUrlObserver {
|
|
11576
|
-
constructor(_router, _auxiliaryRoutesRegistrator, _viewRegistry, _partRegistry, _workbenchLayoutService, _environmentInjector, _workbenchRouter, _workbenchLayoutFactory, _workbenchLayoutDiffer, _workbenchPopupDiffer, _workbenchDialogDiffer, _logger) {
|
|
11659
|
+
constructor(_router, _auxiliaryRoutesRegistrator, _viewRegistry, _partRegistry, _workbenchLayoutService, _environmentInjector, _workbenchRouter, _workbenchLayoutFactory, _workbenchLayoutDiffer, _workbenchPopupDiffer, _workbenchDialogDiffer, _workbenchMessageBoxDiffer, _logger) {
|
|
11577
11660
|
this._router = _router;
|
|
11578
11661
|
this._auxiliaryRoutesRegistrator = _auxiliaryRoutesRegistrator;
|
|
11579
11662
|
this._viewRegistry = _viewRegistry;
|
|
@@ -11585,17 +11668,16 @@ class WorkbenchUrlObserver {
|
|
|
11585
11668
|
this._workbenchLayoutDiffer = _workbenchLayoutDiffer;
|
|
11586
11669
|
this._workbenchPopupDiffer = _workbenchPopupDiffer;
|
|
11587
11670
|
this._workbenchDialogDiffer = _workbenchDialogDiffer;
|
|
11671
|
+
this._workbenchMessageBoxDiffer = _workbenchMessageBoxDiffer;
|
|
11588
11672
|
this._logger = _logger;
|
|
11589
11673
|
this.installRouterEventListeners();
|
|
11590
11674
|
}
|
|
11591
11675
|
/** Invoked at the beginning of each navigation */
|
|
11592
11676
|
onNavigationStart(event) {
|
|
11593
11677
|
const context = this.createWorkbenchNavigationContext(event.url);
|
|
11594
|
-
this._logger.debug(() => 'onNavigationStart', LoggerNames.ROUTING, event, `NavigationContext [parts=${context.layout.parts().map(part => part.id)}, layoutDiff=${context.layoutDiff.toString()}, popupDiff=${context.popupDiff.toString()},
|
|
11678
|
+
this._logger.debug(() => 'onNavigationStart', LoggerNames.ROUTING, event, `NavigationContext [parts=${context.layout.parts().map(part => part.id)}, layoutDiff=${context.layoutDiff.toString()}, popupDiff=${context.popupDiff.toString()}, dialogDiff=${context.dialogDiff.toString()}, messageBoxDiff=${context.messageBoxDiff.toString()}]`);
|
|
11595
11679
|
this._workbenchRouter.setCurrentNavigationContext(context);
|
|
11596
|
-
this.
|
|
11597
|
-
this.registerAddedPopupAuxiliaryRoutes();
|
|
11598
|
-
this.registerAddedDialogAuxiliaryRoutes();
|
|
11680
|
+
this.registerAddedOutletAuxiliaryRoutes();
|
|
11599
11681
|
}
|
|
11600
11682
|
/** Invoked upon successful navigation */
|
|
11601
11683
|
onNavigationEnd(event) {
|
|
@@ -11610,18 +11692,14 @@ class WorkbenchUrlObserver {
|
|
|
11610
11692
|
onNavigationCancel(event) {
|
|
11611
11693
|
this._logger.debug(() => 'onNavigationCancel', LoggerNames.ROUTING, event);
|
|
11612
11694
|
this.undoAuxiliaryRoutesRegistration();
|
|
11613
|
-
this.
|
|
11614
|
-
this.undoWorkbenchPopupDiffer();
|
|
11615
|
-
this.undoWorkbenchDialogDiffer();
|
|
11695
|
+
this.undoWorkbenchDiffers();
|
|
11616
11696
|
this._workbenchRouter.setCurrentNavigationContext(null);
|
|
11617
11697
|
}
|
|
11618
11698
|
/** Invoked when the navigation failed */
|
|
11619
11699
|
onNavigationError(event) {
|
|
11620
11700
|
this._logger.debug(() => 'onNavigationError', LoggerNames.ROUTING, event);
|
|
11621
11701
|
this.undoAuxiliaryRoutesRegistration();
|
|
11622
|
-
this.
|
|
11623
|
-
this.undoWorkbenchPopupDiffer();
|
|
11624
|
-
this.undoWorkbenchDialogDiffer();
|
|
11702
|
+
this.undoWorkbenchDiffers();
|
|
11625
11703
|
this._workbenchRouter.setCurrentNavigationContext(null);
|
|
11626
11704
|
}
|
|
11627
11705
|
/** Invoked after checked guards for activation */
|
|
@@ -11637,7 +11715,7 @@ class WorkbenchUrlObserver {
|
|
|
11637
11715
|
const layout = this._workbenchLayoutFactory.create({
|
|
11638
11716
|
mainAreaGrid: (() => {
|
|
11639
11717
|
// Read the main area grid from the query parameter.
|
|
11640
|
-
const mainAreaGrid = urlTree.queryParamMap.get(MAIN_AREA_LAYOUT_QUERY_PARAM)
|
|
11718
|
+
const mainAreaGrid = urlTree.queryParamMap.get(MAIN_AREA_LAYOUT_QUERY_PARAM);
|
|
11641
11719
|
if (mainAreaGrid) {
|
|
11642
11720
|
return mainAreaGrid;
|
|
11643
11721
|
}
|
|
@@ -11664,70 +11742,51 @@ class WorkbenchUrlObserver {
|
|
|
11664
11742
|
layoutDiff: this._workbenchLayoutDiffer.diff(layout, urlTree),
|
|
11665
11743
|
popupDiff: this._workbenchPopupDiffer.diff(urlTree),
|
|
11666
11744
|
dialogDiff: this._workbenchDialogDiffer.diff(urlTree),
|
|
11745
|
+
messageBoxDiff: this._workbenchMessageBoxDiffer.diff(urlTree),
|
|
11667
11746
|
};
|
|
11668
11747
|
}
|
|
11669
11748
|
/**
|
|
11670
|
-
* For each added
|
|
11749
|
+
* For each added workbench outlet, registers auxiliary routes of all top-level routes.
|
|
11671
11750
|
*/
|
|
11672
|
-
|
|
11751
|
+
registerAddedOutletAuxiliaryRoutes() {
|
|
11673
11752
|
const navigationContext = this._workbenchRouter.getCurrentNavigationContext();
|
|
11753
|
+
// Register view auxiliary routes.
|
|
11674
11754
|
const addedViews = navigationContext.layoutDiff.addedViews;
|
|
11675
|
-
|
|
11676
|
-
canMatchNotFoundPage: [canMatchNotFoundPage]
|
|
11677
|
-
|
|
11678
|
-
if (registeredRoutes.length) {
|
|
11679
|
-
this._logger.debug(() => `Registered auxiliary routes for views: ${addedViews}`, LoggerNames.ROUTING, registeredRoutes);
|
|
11755
|
+
if (addedViews.length) {
|
|
11756
|
+
const auxiliaryRoutes = this._auxiliaryRoutesRegistrator.registerAuxiliaryRoutes(addedViews, { canMatchNotFoundPage: [canMatchNotFoundPage] });
|
|
11757
|
+
this._logger.debug(() => `Registered auxiliary routes for views: ${addedViews}`, LoggerNames.ROUTING, auxiliaryRoutes);
|
|
11680
11758
|
}
|
|
11681
|
-
|
|
11682
|
-
/**
|
|
11683
|
-
* For each added popup, registers auxiliary routes of all top-level routes.
|
|
11684
|
-
*/
|
|
11685
|
-
registerAddedPopupAuxiliaryRoutes() {
|
|
11686
|
-
const navigationContext = this._workbenchRouter.getCurrentNavigationContext();
|
|
11759
|
+
// Register popup auxiliary routes.
|
|
11687
11760
|
const addedPopupOutlets = navigationContext.popupDiff.addedPopupOutlets;
|
|
11688
|
-
|
|
11689
|
-
|
|
11690
|
-
this._logger.debug(() => `Registered auxiliary routes for popups: ${addedPopupOutlets}`, LoggerNames.ROUTING,
|
|
11761
|
+
if (addedPopupOutlets.length) {
|
|
11762
|
+
const auxiliaryRoutes = this._auxiliaryRoutesRegistrator.registerAuxiliaryRoutes(addedPopupOutlets);
|
|
11763
|
+
this._logger.debug(() => `Registered auxiliary routes for popups: ${addedPopupOutlets}`, LoggerNames.ROUTING, auxiliaryRoutes);
|
|
11691
11764
|
}
|
|
11692
|
-
|
|
11693
|
-
/**
|
|
11694
|
-
* For each added dialog, registers auxiliary routes of all top-level routes.
|
|
11695
|
-
*/
|
|
11696
|
-
registerAddedDialogAuxiliaryRoutes() {
|
|
11697
|
-
const navigationContext = this._workbenchRouter.getCurrentNavigationContext();
|
|
11765
|
+
// Register dialog auxiliary routes.
|
|
11698
11766
|
const addedDialogOutlets = navigationContext.dialogDiff.addedDialogOutlets;
|
|
11699
|
-
|
|
11700
|
-
|
|
11701
|
-
this._logger.debug(() => `Registered auxiliary routes for dialogs: ${addedDialogOutlets}`, LoggerNames.ROUTING,
|
|
11767
|
+
if (addedDialogOutlets.length) {
|
|
11768
|
+
const auxiliaryRoutes = this._auxiliaryRoutesRegistrator.registerAuxiliaryRoutes(addedDialogOutlets);
|
|
11769
|
+
this._logger.debug(() => `Registered auxiliary routes for dialogs: ${addedDialogOutlets}`, LoggerNames.ROUTING, auxiliaryRoutes);
|
|
11770
|
+
}
|
|
11771
|
+
// Register message box auxiliary routes.
|
|
11772
|
+
const addedMessageBoxOutlets = navigationContext.messageBoxDiff.addedMessageBoxOutlets;
|
|
11773
|
+
if (addedMessageBoxOutlets.length) {
|
|
11774
|
+
const auxiliaryRoutes = this._auxiliaryRoutesRegistrator.registerAuxiliaryRoutes(addedMessageBoxOutlets);
|
|
11775
|
+
this._logger.debug(() => `Registered auxiliary routes for message boxes: ${addedMessageBoxOutlets}`, LoggerNames.ROUTING, auxiliaryRoutes);
|
|
11702
11776
|
}
|
|
11703
11777
|
}
|
|
11704
11778
|
/**
|
|
11705
|
-
* Reverts the workbench
|
|
11779
|
+
* Reverts the workbench differs to the state before the navigation.
|
|
11706
11780
|
*
|
|
11707
11781
|
* Invoke this method after navigation failure or cancellation. The navigation is cancelled when guards perform a redirect or reject navigation.
|
|
11708
11782
|
*/
|
|
11709
|
-
|
|
11783
|
+
undoWorkbenchDiffers() {
|
|
11710
11784
|
const prevNavigateLayout = this._workbenchLayoutService.layout; // Layout in `WorkbenchLayoutService` is only updated after successful navigation
|
|
11711
11785
|
const prevNavigateUrl = this._router.parseUrl(this._router.url); // Browser URL is only updated after successful navigation
|
|
11712
11786
|
this._workbenchLayoutDiffer.diff(prevNavigateLayout, prevNavigateUrl);
|
|
11713
|
-
}
|
|
11714
|
-
/**
|
|
11715
|
-
* Reverts the popup outlet differ to the state before the navigation.
|
|
11716
|
-
*
|
|
11717
|
-
* Invoke this method after navigation failure or cancellation. The navigation is cancelled when guards perform a redirect or reject navigation.
|
|
11718
|
-
*/
|
|
11719
|
-
undoWorkbenchPopupDiffer() {
|
|
11720
|
-
const prevNavigateUrl = this._router.parseUrl(this._router.url); // Browser URL is only updated after successful navigation
|
|
11721
11787
|
this._workbenchPopupDiffer.diff(prevNavigateUrl);
|
|
11722
|
-
}
|
|
11723
|
-
/**
|
|
11724
|
-
* Reverts the dialog outlet differ to the state before the navigation.
|
|
11725
|
-
*
|
|
11726
|
-
* Invoke this method after navigation failure or cancellation. The navigation is cancelled when guards perform a redirect or reject navigation.
|
|
11727
|
-
*/
|
|
11728
|
-
undoWorkbenchDialogDiffer() {
|
|
11729
|
-
const prevNavigateUrl = this._router.parseUrl(this._router.url); // Browser URL is only updated after successful navigation
|
|
11730
11788
|
this._workbenchDialogDiffer.diff(prevNavigateUrl);
|
|
11789
|
+
this._workbenchMessageBoxDiffer.diff(prevNavigateUrl);
|
|
11731
11790
|
}
|
|
11732
11791
|
/**
|
|
11733
11792
|
* Undoes the registration of auxiliary routes.
|
|
@@ -11735,10 +11794,13 @@ class WorkbenchUrlObserver {
|
|
|
11735
11794
|
* Invoke this method after navigation failure or cancellation. The navigation is cancelled when guards perform a redirect or reject navigation.
|
|
11736
11795
|
*/
|
|
11737
11796
|
undoAuxiliaryRoutesRegistration() {
|
|
11738
|
-
const
|
|
11739
|
-
const
|
|
11740
|
-
|
|
11741
|
-
|
|
11797
|
+
const navigationContext = this._workbenchRouter.getCurrentNavigationContext();
|
|
11798
|
+
const addedOutlets = [
|
|
11799
|
+
...navigationContext.layoutDiff.addedViews,
|
|
11800
|
+
...navigationContext.popupDiff.addedPopupOutlets,
|
|
11801
|
+
...navigationContext.dialogDiff.addedDialogOutlets,
|
|
11802
|
+
...navigationContext.messageBoxDiff.addedMessageBoxOutlets,
|
|
11803
|
+
];
|
|
11742
11804
|
if (addedOutlets.length) {
|
|
11743
11805
|
this._auxiliaryRoutesRegistrator.unregisterAuxiliaryRoutes(addedOutlets);
|
|
11744
11806
|
this._logger.debug(() => `Undo auxiliary routes registration for outlet(s): ${addedOutlets}`, LoggerNames.ROUTING);
|
|
@@ -11781,10 +11843,13 @@ class WorkbenchUrlObserver {
|
|
|
11781
11843
|
* Unregisters auxiliary routes of removed workbench outlets.
|
|
11782
11844
|
*/
|
|
11783
11845
|
unregisterRemovedOutletAuxiliaryRoutes() {
|
|
11784
|
-
const
|
|
11785
|
-
const
|
|
11786
|
-
|
|
11787
|
-
|
|
11846
|
+
const navigationContext = this._workbenchRouter.getCurrentNavigationContext();
|
|
11847
|
+
const removedOutlets = [
|
|
11848
|
+
...navigationContext.layoutDiff.removedViews,
|
|
11849
|
+
...navigationContext.popupDiff.removedPopupOutlets,
|
|
11850
|
+
...navigationContext.dialogDiff.removedDialogOutlets,
|
|
11851
|
+
...navigationContext.messageBoxDiff.removedMessageBoxOutlets,
|
|
11852
|
+
];
|
|
11788
11853
|
if (removedOutlets.length) {
|
|
11789
11854
|
this._logger.debug(() => 'Unregistering outlet auxiliary routes: ', LoggerNames.ROUTING, removedOutlets);
|
|
11790
11855
|
this._auxiliaryRoutesRegistrator.unregisterAuxiliaryRoutes(removedOutlets);
|
|
@@ -11849,13 +11914,13 @@ class WorkbenchUrlObserver {
|
|
|
11849
11914
|
}
|
|
11850
11915
|
});
|
|
11851
11916
|
}
|
|
11852
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11853
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
11917
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchUrlObserver, deps: [{ token: i2.Router }, { token: WorkbenchAuxiliaryRoutesRegistrator }, { token: WorkbenchViewRegistry }, { token: WorkbenchPartRegistry }, { token: WorkbenchLayoutService }, { token: i0.EnvironmentInjector }, { token: ɵWorkbenchRouter }, { token: ɵWorkbenchLayoutFactory }, { token: WorkbenchLayoutDiffer }, { token: WorkbenchPopupDiffer }, { token: WorkbenchDialogDiffer }, { token: WorkbenchMessageBoxDiffer }, { token: Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
11918
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchUrlObserver, providedIn: 'root' }); }
|
|
11854
11919
|
}
|
|
11855
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
11920
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchUrlObserver, decorators: [{
|
|
11856
11921
|
type: Injectable,
|
|
11857
11922
|
args: [{ providedIn: 'root' }]
|
|
11858
|
-
}], ctorParameters: () => [{ type: i2.Router }, { type: WorkbenchAuxiliaryRoutesRegistrator }, { type: WorkbenchViewRegistry }, { type: WorkbenchPartRegistry }, { type: WorkbenchLayoutService }, { type: i0.EnvironmentInjector }, { type: ɵWorkbenchRouter }, { type: ɵWorkbenchLayoutFactory }, { type: WorkbenchLayoutDiffer }, { type: WorkbenchPopupDiffer }, { type: WorkbenchDialogDiffer }, { type: Logger }] });
|
|
11923
|
+
}], ctorParameters: () => [{ type: i2.Router }, { type: WorkbenchAuxiliaryRoutesRegistrator }, { type: WorkbenchViewRegistry }, { type: WorkbenchPartRegistry }, { type: WorkbenchLayoutService }, { type: i0.EnvironmentInjector }, { type: ɵWorkbenchRouter }, { type: ɵWorkbenchLayoutFactory }, { type: WorkbenchLayoutDiffer }, { type: WorkbenchPopupDiffer }, { type: WorkbenchDialogDiffer }, { type: WorkbenchMessageBoxDiffer }, { type: Logger }] });
|
|
11859
11924
|
|
|
11860
11925
|
/**
|
|
11861
11926
|
* Updates the workbench layout when the user moves a view.
|
|
@@ -11964,10 +12029,10 @@ class ViewMoveHandler {
|
|
|
11964
12029
|
}));
|
|
11965
12030
|
}
|
|
11966
12031
|
}
|
|
11967
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11968
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
12032
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewMoveHandler, deps: [{ token: WORKBENCH_ID }, { token: ɵWorkbenchRouter }, { token: ɵWorkbenchLayoutFactory }, { token: ViewDragService }, { token: i2.Router }, { token: i3$1.LocationStrategy }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
12033
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewMoveHandler }); }
|
|
11969
12034
|
}
|
|
11970
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12035
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewMoveHandler, decorators: [{
|
|
11971
12036
|
type: Injectable
|
|
11972
12037
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
11973
12038
|
type: Inject,
|
|
@@ -11988,38 +12053,94 @@ function coerceAlignProperty(region) {
|
|
|
11988
12053
|
}
|
|
11989
12054
|
}
|
|
11990
12055
|
|
|
12056
|
+
/*
|
|
12057
|
+
* Copyright (c) 2018-2023 Swiss Federal Railways
|
|
12058
|
+
*
|
|
12059
|
+
* This program and the accompanying materials are made
|
|
12060
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
12061
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
12062
|
+
*
|
|
12063
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
12064
|
+
*/
|
|
12065
|
+
|
|
11991
12066
|
/**
|
|
11992
12067
|
* Allows loading the configuration for the SCION Microfrontend Platform asynchronously, e.g., over the network or from a JSON file.
|
|
11993
12068
|
*/
|
|
11994
12069
|
class MicrofrontendPlatformConfigLoader {
|
|
11995
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11996
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
12070
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendPlatformConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
12071
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendPlatformConfigLoader }); }
|
|
11997
12072
|
}
|
|
11998
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12073
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendPlatformConfigLoader, decorators: [{
|
|
11999
12074
|
type: Injectable
|
|
12000
12075
|
}] });
|
|
12001
12076
|
|
|
12002
|
-
|
|
12003
|
-
*
|
|
12077
|
+
/*
|
|
12078
|
+
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
12004
12079
|
*
|
|
12005
|
-
*
|
|
12006
|
-
|
|
12007
|
-
|
|
12008
|
-
|
|
12080
|
+
* This program and the accompanying materials are made
|
|
12081
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
12082
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
12083
|
+
*
|
|
12084
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
12085
|
+
*/
|
|
12086
|
+
/**
|
|
12087
|
+
* Displays the text message for the built-in message box capability.
|
|
12088
|
+
*
|
|
12089
|
+
* This component is designed to be displayed in {@link MicrofrontendHostMessageBoxComponent}.
|
|
12090
|
+
*/
|
|
12091
|
+
class TextMessageComponent {
|
|
12092
|
+
constructor(messageBox) {
|
|
12093
|
+
this.message = messageBox.params.get(eMESSAGE_BOX_MESSAGE_PARAM);
|
|
12094
|
+
}
|
|
12095
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: TextMessageComponent, deps: [{ token: i1$1.WorkbenchMessageBox }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12096
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: TextMessageComponent, isStandalone: true, selector: "wb-text-message", ngImport: i0, template: "@if (message) {\n {{message}}\n}", styles: [":host{overflow-wrap:break-word;white-space:pre-line;text-align:var(--sci-workbench-messagebox-text-align)}\n"] }); }
|
|
12097
|
+
}
|
|
12098
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: TextMessageComponent, decorators: [{
|
|
12099
|
+
type: Component,
|
|
12100
|
+
args: [{ selector: 'wb-text-message', standalone: true, template: "@if (message) {\n {{message}}\n}", styles: [":host{overflow-wrap:break-word;white-space:pre-line;text-align:var(--sci-workbench-messagebox-text-align)}\n"] }]
|
|
12101
|
+
}], ctorParameters: () => [{ type: i1$1.WorkbenchMessageBox }] });
|
|
12102
|
+
/**
|
|
12103
|
+
* Route for the built-in text message box capability provided by the workbench host application.
|
|
12104
|
+
*/
|
|
12105
|
+
const TEXT_MESSAGE_BOX_CAPABILITY_ROUTE = '~/messagebox';
|
|
12106
|
+
/**
|
|
12107
|
+
* Property to identify the built-in text message box capability.
|
|
12108
|
+
*/
|
|
12109
|
+
const TEXT_MESSAGE_BOX_CAPABILITY_IDENTITY_PROPERTY = 'ɵidentity';
|
|
12110
|
+
/**
|
|
12111
|
+
* Value to identify the built-in text message box capability.
|
|
12112
|
+
*/
|
|
12113
|
+
const TEXT_MESSAGE_BOX_CAPABILITY_IDENTITY = randomUUID();
|
|
12114
|
+
|
|
12115
|
+
var textMessage_component = /*#__PURE__*/Object.freeze({
|
|
12116
|
+
__proto__: null,
|
|
12117
|
+
TEXT_MESSAGE_BOX_CAPABILITY_IDENTITY: TEXT_MESSAGE_BOX_CAPABILITY_IDENTITY,
|
|
12118
|
+
TEXT_MESSAGE_BOX_CAPABILITY_IDENTITY_PROPERTY: TEXT_MESSAGE_BOX_CAPABILITY_IDENTITY_PROPERTY,
|
|
12119
|
+
TEXT_MESSAGE_BOX_CAPABILITY_ROUTE: TEXT_MESSAGE_BOX_CAPABILITY_ROUTE,
|
|
12120
|
+
default: TextMessageComponent
|
|
12121
|
+
});
|
|
12122
|
+
|
|
12123
|
+
/**
|
|
12124
|
+
* Intercepts the host manifest, registering workbench-specific intentions and capabilities.
|
|
12125
|
+
*
|
|
12126
|
+
* @internal
|
|
12127
|
+
*/
|
|
12128
|
+
class WorkbenchHostManifestInterceptor {
|
|
12129
|
+
intercept(hostManifest) {
|
|
12009
12130
|
hostManifest.intentions = [
|
|
12010
12131
|
...hostManifest.intentions || [],
|
|
12011
12132
|
provideViewIntention(),
|
|
12012
12133
|
];
|
|
12013
12134
|
hostManifest.capabilities = [
|
|
12014
12135
|
...hostManifest.capabilities || [],
|
|
12015
|
-
|
|
12016
|
-
|
|
12136
|
+
provideBuiltInTextMessageBoxCapability(),
|
|
12137
|
+
provideBuiltInTextNotificationCapability(),
|
|
12017
12138
|
];
|
|
12018
12139
|
}
|
|
12019
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12020
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
12140
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchHostManifestInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
12141
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchHostManifestInterceptor }); }
|
|
12021
12142
|
}
|
|
12022
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12143
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchHostManifestInterceptor, decorators: [{
|
|
12023
12144
|
type: Injectable
|
|
12024
12145
|
}] });
|
|
12025
12146
|
/**
|
|
@@ -12032,29 +12153,40 @@ function provideViewIntention() {
|
|
|
12032
12153
|
};
|
|
12033
12154
|
}
|
|
12034
12155
|
/**
|
|
12035
|
-
* Provides the built-in notification capability.
|
|
12156
|
+
* Provides the built-in notification capability to display text.
|
|
12036
12157
|
*
|
|
12037
12158
|
* @see MicrofrontendNotificationIntentHandler
|
|
12038
12159
|
*/
|
|
12039
|
-
function
|
|
12160
|
+
function provideBuiltInTextNotificationCapability() {
|
|
12040
12161
|
return {
|
|
12041
12162
|
type: WorkbenchCapabilities.Notification,
|
|
12042
12163
|
qualifier: {},
|
|
12043
12164
|
private: false,
|
|
12044
|
-
description: '
|
|
12165
|
+
description: 'Displays a text notification to the user.',
|
|
12045
12166
|
};
|
|
12046
12167
|
}
|
|
12047
12168
|
/**
|
|
12048
|
-
* Provides the built-in
|
|
12169
|
+
* Provides the built-in {@link WorkbenchMessageBoxCapability} to display text.
|
|
12049
12170
|
*
|
|
12050
12171
|
* @see MicrofrontendMessageBoxIntentHandler
|
|
12051
12172
|
*/
|
|
12052
|
-
function
|
|
12173
|
+
function provideBuiltInTextMessageBoxCapability() {
|
|
12053
12174
|
return {
|
|
12054
12175
|
type: WorkbenchCapabilities.MessageBox,
|
|
12055
12176
|
qualifier: {},
|
|
12177
|
+
params: [
|
|
12178
|
+
{
|
|
12179
|
+
name: eMESSAGE_BOX_MESSAGE_PARAM,
|
|
12180
|
+
required: false,
|
|
12181
|
+
description: 'Text to display to the user.',
|
|
12182
|
+
}
|
|
12183
|
+
],
|
|
12184
|
+
properties: {
|
|
12185
|
+
path: TEXT_MESSAGE_BOX_CAPABILITY_ROUTE,
|
|
12186
|
+
[TEXT_MESSAGE_BOX_CAPABILITY_IDENTITY_PROPERTY]: TEXT_MESSAGE_BOX_CAPABILITY_IDENTITY,
|
|
12187
|
+
},
|
|
12056
12188
|
private: false,
|
|
12057
|
-
description: '
|
|
12189
|
+
description: 'Displays a text message to the user.',
|
|
12058
12190
|
};
|
|
12059
12191
|
}
|
|
12060
12192
|
|
|
@@ -12083,10 +12215,10 @@ class NgZoneObservableDecorator {
|
|
|
12083
12215
|
return () => subscription.unsubscribe();
|
|
12084
12216
|
});
|
|
12085
12217
|
}
|
|
12086
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12087
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
12218
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgZoneObservableDecorator, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
12219
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgZoneObservableDecorator }); }
|
|
12088
12220
|
}
|
|
12089
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12221
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgZoneObservableDecorator, decorators: [{
|
|
12090
12222
|
type: Injectable
|
|
12091
12223
|
}], ctorParameters: () => [{ type: i0.NgZone }] });
|
|
12092
12224
|
|
|
@@ -12315,10 +12447,10 @@ class MicrofrontendViewIntentHandler {
|
|
|
12315
12447
|
.map(view => view.id);
|
|
12316
12448
|
return viewIds.length ? viewIds : null;
|
|
12317
12449
|
}
|
|
12318
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12319
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
12450
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendViewIntentHandler, deps: [{ token: WorkbenchRouter }, { token: WorkbenchViewRegistry }, { token: Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
12451
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendViewIntentHandler }); }
|
|
12320
12452
|
}
|
|
12321
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12453
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendViewIntentHandler, decorators: [{
|
|
12322
12454
|
type: Injectable
|
|
12323
12455
|
}], ctorParameters: () => [{ type: WorkbenchRouter }, { type: WorkbenchViewRegistry }, { type: Logger }] });
|
|
12324
12456
|
|
|
@@ -12332,10 +12464,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
12332
12464
|
* SPDX-License-Identifier: EPL-2.0
|
|
12333
12465
|
*/
|
|
12334
12466
|
class MicrofrontendSplashComponent {
|
|
12335
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12336
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
12467
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendSplashComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12468
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: MicrofrontendSplashComponent, isStandalone: true, selector: "wb-microfrontend-splash", ngImport: i0, template: "<sci-throbber type=\"ellipsis\"></sci-throbber>\n", styles: [":host{display:grid;place-items:center;grid-template-rows:minmax(3em,150px);overflow:hidden}:host>sci-throbber{--sci-throbber-size: 64px}\n"], dependencies: [{ kind: "component", type: SciThrobberComponent, selector: "sci-throbber", inputs: ["type"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12337
12469
|
}
|
|
12338
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12470
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendSplashComponent, decorators: [{
|
|
12339
12471
|
type: Component,
|
|
12340
12472
|
args: [{ selector: 'wb-microfrontend-splash', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [SciThrobberComponent], template: "<sci-throbber type=\"ellipsis\"></sci-throbber>\n", styles: [":host{display:grid;place-items:center;grid-template-rows:minmax(3em,150px);overflow:hidden}:host>sci-throbber{--sci-throbber-size: 64px}\n"] }]
|
|
12341
12473
|
}] });
|
|
@@ -12434,7 +12566,7 @@ class MicrofrontendPopupComponent {
|
|
|
12434
12566
|
return;
|
|
12435
12567
|
}
|
|
12436
12568
|
// Listen to popup close requests.
|
|
12437
|
-
this._messageClient.observe$(_WorkbenchCommands.popupCloseTopic(this.
|
|
12569
|
+
this._messageClient.observe$(_WorkbenchCommands.popupCloseTopic(this.popup.id))
|
|
12438
12570
|
.pipe(takeUntilDestroyed(this._destroyRef))
|
|
12439
12571
|
.subscribe(closeRequest => {
|
|
12440
12572
|
if (closeRequest.headers.get(_WorkbenchPopupMessageHeaders.CLOSE_WITH_ERROR) === true) {
|
|
@@ -12451,7 +12583,7 @@ class MicrofrontendPopupComponent {
|
|
|
12451
12583
|
// Navigate to the microfrontend.
|
|
12452
12584
|
this._logger.debug(() => `Loading microfrontend into workbench popup [app=${this.popupCapability.metadata.appSymbolicName}, baseUrl=${application.baseUrl}, path=${(this.popupCapability.properties.path)}].`, LoggerNames.MICROFRONTEND, this._popupContext.params, this.popupCapability);
|
|
12453
12585
|
this._outletRouter.navigate(this.popupCapability.properties.path, {
|
|
12454
|
-
outlet: this.
|
|
12586
|
+
outlet: this.popup.id,
|
|
12455
12587
|
relativeTo: application.baseUrl,
|
|
12456
12588
|
params: this._popupContext.params,
|
|
12457
12589
|
pushStateToSessionHistoryStack: false,
|
|
@@ -12474,12 +12606,6 @@ class MicrofrontendPopupComponent {
|
|
|
12474
12606
|
lookupApplication(symbolicName) {
|
|
12475
12607
|
return this._manifestService.applications.find(app => app.symbolicName === symbolicName);
|
|
12476
12608
|
}
|
|
12477
|
-
/**
|
|
12478
|
-
* Unique identity of this popup.
|
|
12479
|
-
*/
|
|
12480
|
-
get popupId() {
|
|
12481
|
-
return this._popupContext.popupId;
|
|
12482
|
-
}
|
|
12483
12609
|
/**
|
|
12484
12610
|
* Sets the {@link isWorkbenchDrag} property when a workbench drag operation is detected,
|
|
12485
12611
|
* such as when dragging a view or moving a sash.
|
|
@@ -12495,15 +12621,15 @@ class MicrofrontendPopupComponent {
|
|
|
12495
12621
|
runInInjectionContext(this._injector, () => Microfrontends.propagateTheme(this.routerOutletElement.nativeElement));
|
|
12496
12622
|
}
|
|
12497
12623
|
ngOnDestroy() {
|
|
12498
|
-
this._outletRouter.navigate(null, { outlet: this.
|
|
12624
|
+
this._outletRouter.navigate(null, { outlet: this.popup.id }).then();
|
|
12499
12625
|
}
|
|
12500
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12501
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
12626
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendPopupComponent, deps: [{ token: ɵPopup }, { token: i0.ElementRef }, { token: i2$3.OutletRouter }, { token: i2$3.ManifestService }, { token: i2$3.MessageClient }, { token: i0.DestroyRef }, { token: WorkbenchLayoutService }, { token: i0.Injector }, { token: Logger }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12627
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: MicrofrontendPopupComponent, isStandalone: true, selector: "wb-microfrontend-popup", host: { properties: { "class.workbench-drag": "this.isWorkbenchDrag" } }, viewQueries: [{ propertyName: "routerOutletElement", first: true, predicate: ["router_outlet"], descendants: true, static: true }], ngImport: i0, template: "<sci-router-outlet #router_outlet\n [name]=\"popup.id\"\n [attr.data-capabilityid]=\"popupCapability.metadata!.id\"\n [attr.data-app]=\"popupCapability.metadata!.appSymbolicName\"\n [ngClass]=\"popup.cssClasses\" class=\"e2e-popup\"\n keystrokes=\"keydown.escape\"\n (focuswithin)=\"onFocusWithin($event)\">\n <ng-container *ngComponentOutlet=\"splash\"></ng-container>\n</sci-router-outlet>\n", styles: [":host{display:grid}:host.workbench-drag>sci-router-outlet{pointer-events:none}:host>sci-router-outlet::part(splash){display:grid}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }] }); }
|
|
12502
12628
|
}
|
|
12503
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12629
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendPopupComponent, decorators: [{
|
|
12504
12630
|
type: Component,
|
|
12505
|
-
args: [{ selector: 'wb-microfrontend-popup', standalone: true, imports: [NgClass, NgComponentOutlet], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<sci-router-outlet #router_outlet\n [name]=\"
|
|
12506
|
-
}], ctorParameters: () => [{ type:
|
|
12631
|
+
args: [{ selector: 'wb-microfrontend-popup', standalone: true, imports: [NgClass, NgComponentOutlet], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<sci-router-outlet #router_outlet\n [name]=\"popup.id\"\n [attr.data-capabilityid]=\"popupCapability.metadata!.id\"\n [attr.data-app]=\"popupCapability.metadata!.appSymbolicName\"\n [ngClass]=\"popup.cssClasses\" class=\"e2e-popup\"\n keystrokes=\"keydown.escape\"\n (focuswithin)=\"onFocusWithin($event)\">\n <ng-container *ngComponentOutlet=\"splash\"></ng-container>\n</sci-router-outlet>\n", styles: [":host{display:grid}:host.workbench-drag>sci-router-outlet{pointer-events:none}:host>sci-router-outlet::part(splash){display:grid}\n"] }]
|
|
12632
|
+
}], ctorParameters: () => [{ type: ɵPopup }, { type: i0.ElementRef }, { type: i2$3.OutletRouter }, { type: i2$3.ManifestService }, { type: i2$3.MessageClient }, { type: i0.DestroyRef }, { type: WorkbenchLayoutService }, { type: i0.Injector }, { type: Logger }], propDecorators: { isWorkbenchDrag: [{
|
|
12507
12633
|
type: HostBinding,
|
|
12508
12634
|
args: ['class.workbench-drag']
|
|
12509
12635
|
}], routerOutletElement: [{
|
|
@@ -12531,7 +12657,7 @@ function stringifyError(error) {
|
|
|
12531
12657
|
}
|
|
12532
12658
|
|
|
12533
12659
|
/*
|
|
12534
|
-
* Copyright (c) 2018-
|
|
12660
|
+
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
12535
12661
|
*
|
|
12536
12662
|
* This program and the accompanying materials are made
|
|
12537
12663
|
* available under the terms of the Eclipse Public License 2.0
|
|
@@ -12549,11 +12675,12 @@ class MicrofrontendHostPopupComponent {
|
|
|
12549
12675
|
constructor(popup, _injector, _router) {
|
|
12550
12676
|
this._injector = _injector;
|
|
12551
12677
|
this._router = _router;
|
|
12678
|
+
this._singleNavigationExecutor = inject(SINGLE_NAVIGATION_EXECUTOR);
|
|
12552
12679
|
const popupContext = popup.input;
|
|
12553
12680
|
const capability = popupContext.capability;
|
|
12554
12681
|
const path = Defined.orElseThrow(capability.properties.path, () => Error(`[PopupProviderError] Missing required path for popup capability: ${JSON.stringify(capability)}`));
|
|
12555
12682
|
const params = popupContext.params;
|
|
12556
|
-
this.outletName = POPUP_ID_PREFIX.concat(
|
|
12683
|
+
this.outletName = POPUP_ID_PREFIX.concat(popup.id);
|
|
12557
12684
|
this.outletInjector = Injector.create({
|
|
12558
12685
|
parent: this._injector,
|
|
12559
12686
|
providers: [provideWorkbenchPopupHandle(popupContext)],
|
|
@@ -12561,7 +12688,7 @@ class MicrofrontendHostPopupComponent {
|
|
|
12561
12688
|
// Perform navigation in the named router outlet.
|
|
12562
12689
|
this.navigate(path, { outletName: this.outletName, params }).then(success => {
|
|
12563
12690
|
if (!success) {
|
|
12564
|
-
popup.closeWithError(Error('[PopupNavigateError] Navigation canceled, most likely by a route guard.'));
|
|
12691
|
+
popup.closeWithError(Error('[PopupNavigateError] Navigation canceled, most likely by a route guard or a parallel navigation.'));
|
|
12565
12692
|
}
|
|
12566
12693
|
});
|
|
12567
12694
|
}
|
|
@@ -12572,21 +12699,21 @@ class MicrofrontendHostPopupComponent {
|
|
|
12572
12699
|
path = Microfrontends.substituteNamedParameters(path, extras.params);
|
|
12573
12700
|
const outletCommands = (path !== null ? runInInjectionContext(this._injector, () => RouterUtils.pathToCommands(path)) : null);
|
|
12574
12701
|
const commands = [{ outlets: { [extras.outletName]: outletCommands } }];
|
|
12575
|
-
return this._router.navigate(commands, { skipLocationChange: true, queryParamsHandling: 'preserve' });
|
|
12702
|
+
return this._singleNavigationExecutor.submit(() => this._router.navigate(commands, { skipLocationChange: true, queryParamsHandling: 'preserve' }));
|
|
12576
12703
|
}
|
|
12577
12704
|
ngOnDestroy() {
|
|
12578
12705
|
this.navigate(null, { outletName: this.outletName }).then(); // Remove the outlet from the URL
|
|
12579
12706
|
}
|
|
12580
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12581
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
12707
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendHostPopupComponent, deps: [{ token: ɵPopup }, { token: i0.Injector }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12708
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: MicrofrontendHostPopupComponent, isStandalone: true, selector: "wb-microfrontend-host-popup", ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"router_outlet; injector: outletInjector\"></ng-container>\n\n<ng-template #router_outlet>\n <router-outlet [name]=\"outletName\"></router-outlet>\n</ng-template>\n", styles: [":host{display:grid}:host>router-outlet{position:absolute}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
12582
12709
|
}
|
|
12583
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12710
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendHostPopupComponent, decorators: [{
|
|
12584
12711
|
type: Component,
|
|
12585
12712
|
args: [{ selector: 'wb-microfrontend-host-popup', standalone: true, imports: [
|
|
12586
12713
|
RouterOutlet,
|
|
12587
12714
|
NgTemplateOutlet,
|
|
12588
12715
|
], template: "<ng-container *ngTemplateOutlet=\"router_outlet; injector: outletInjector\"></ng-container>\n\n<ng-template #router_outlet>\n <router-outlet [name]=\"outletName\"></router-outlet>\n</ng-template>\n", styles: [":host{display:grid}:host>router-outlet{position:absolute}\n"] }]
|
|
12589
|
-
}], ctorParameters: () => [{ type:
|
|
12716
|
+
}], ctorParameters: () => [{ type: ɵPopup }, { type: i0.Injector }, { type: i2.Router }] });
|
|
12590
12717
|
/**
|
|
12591
12718
|
* Provides the {WorkbenchPopup} handle to the routed component.
|
|
12592
12719
|
*/
|
|
@@ -12664,10 +12791,12 @@ class MicrofrontendPopupIntentHandler {
|
|
|
12664
12791
|
this._openedPopups.add(popupId);
|
|
12665
12792
|
try {
|
|
12666
12793
|
const result = await this.openPopup(message);
|
|
12667
|
-
|
|
12794
|
+
// Use 'Beans.opt' to not error if the platform is destroyed, e.g., in tests if not closing popups.
|
|
12795
|
+
await Beans.opt(MessageClient)?.publish(replyTo, result, { headers: new Map().set(MessageHeaders.Status, ResponseStatusCodes.TERMINAL) });
|
|
12668
12796
|
}
|
|
12669
12797
|
catch (error) {
|
|
12670
|
-
|
|
12798
|
+
// Use 'Beans.opt' to not error if the platform is destroyed, e.g., in tests if not closing popups.
|
|
12799
|
+
await Beans.opt(MessageClient)?.publish(replyTo, stringifyError(error), { headers: new Map().set(MessageHeaders.Status, ResponseStatusCodes.ERROR) });
|
|
12671
12800
|
}
|
|
12672
12801
|
finally {
|
|
12673
12802
|
this._openedPopups.delete(popupId);
|
|
@@ -12692,6 +12821,7 @@ class MicrofrontendPopupIntentHandler {
|
|
|
12692
12821
|
referrer: this.getReferrer(command),
|
|
12693
12822
|
};
|
|
12694
12823
|
return this._popupService.open({
|
|
12824
|
+
id: command.popupId,
|
|
12695
12825
|
component: isHostProvider ? MicrofrontendHostPopupComponent : MicrofrontendPopupComponent,
|
|
12696
12826
|
input: popupContext,
|
|
12697
12827
|
anchor: this.observePopupOrigin$(command),
|
|
@@ -12724,10 +12854,10 @@ class MicrofrontendPopupIntentHandler {
|
|
|
12724
12854
|
viewCapabilityId: view.adapt(MicrofrontendWorkbenchView)?.capability.metadata.id,
|
|
12725
12855
|
};
|
|
12726
12856
|
}
|
|
12727
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12728
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
12857
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendPopupIntentHandler, deps: [{ token: PopupService }, { token: WorkbenchViewRegistry }, { token: Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
12858
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendPopupIntentHandler }); }
|
|
12729
12859
|
}
|
|
12730
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12860
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendPopupIntentHandler, decorators: [{
|
|
12731
12861
|
type: Injectable
|
|
12732
12862
|
}], ctorParameters: () => [{ type: PopupService }, { type: WorkbenchViewRegistry }, { type: Logger }] });
|
|
12733
12863
|
|
|
@@ -12835,15 +12965,15 @@ class MicrofrontendDialogComponent {
|
|
|
12835
12965
|
ngOnDestroy() {
|
|
12836
12966
|
this._outletRouter.navigate(null, { outlet: this.dialog.id }).then(); // Clear the outlet.
|
|
12837
12967
|
}
|
|
12838
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12839
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
12968
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogComponent, deps: [{ token: ɵWorkbenchDialog }, { token: i2$3.OutletRouter }, { token: i2$3.ManifestService }, { token: i2$3.MessageClient }, { token: WorkbenchLayoutService }, { token: i0.Injector }, { token: Logger }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12969
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: MicrofrontendDialogComponent, isStandalone: true, selector: "wb-microfrontend-dialog", inputs: { capability: "capability", params: "params" }, host: { properties: { "class.workbench-drag": "this.isWorkbenchDrag" } }, viewQueries: [{ propertyName: "routerOutletElement", first: true, predicate: ["router_outlet"], descendants: true, static: true }], ngImport: i0, template: "<sci-router-outlet #router_outlet\n [name]=\"dialog.id\"\n [attr.data-capabilityid]=\"capability.metadata!.id\"\n [attr.data-app]=\"capability.metadata!.appSymbolicName\"\n keystrokes=\"keydown.escape\">\n <ng-container *ngComponentOutlet=\"splash\"></ng-container>\n</sci-router-outlet>\n", styles: [":host{display:grid}:host.workbench-drag>sci-router-outlet{pointer-events:none}:host>sci-router-outlet::part(splash){display:grid}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }] }); }
|
|
12840
12970
|
}
|
|
12841
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12971
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogComponent, decorators: [{
|
|
12842
12972
|
type: Component,
|
|
12843
12973
|
args: [{ selector: 'wb-microfrontend-dialog', standalone: true, imports: [
|
|
12844
12974
|
NgClass,
|
|
12845
12975
|
NgComponentOutlet,
|
|
12846
|
-
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<sci-router-outlet #router_outlet\n [name]=\"dialog.id\"\n [attr.data-capabilityid]=\"capability.metadata!.id\"\n [attr.data-app]=\"capability.metadata!.appSymbolicName\"\n
|
|
12976
|
+
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<sci-router-outlet #router_outlet\n [name]=\"dialog.id\"\n [attr.data-capabilityid]=\"capability.metadata!.id\"\n [attr.data-app]=\"capability.metadata!.appSymbolicName\"\n keystrokes=\"keydown.escape\">\n <ng-container *ngComponentOutlet=\"splash\"></ng-container>\n</sci-router-outlet>\n", styles: [":host{display:grid}:host.workbench-drag>sci-router-outlet{pointer-events:none}:host>sci-router-outlet::part(splash){display:grid}\n"] }]
|
|
12847
12977
|
}], ctorParameters: () => [{ type: ɵWorkbenchDialog }, { type: i2$3.OutletRouter }, { type: i2$3.ManifestService }, { type: i2$3.MessageClient }, { type: WorkbenchLayoutService }, { type: i0.Injector }, { type: Logger }], propDecorators: { capability: [{
|
|
12848
12978
|
type: Input,
|
|
12849
12979
|
args: [{ required: true }]
|
|
@@ -12880,6 +13010,7 @@ class MicrofrontendHostDialogComponent {
|
|
|
12880
13010
|
this._dialog = _dialog;
|
|
12881
13011
|
this._injector = _injector;
|
|
12882
13012
|
this._router = _router;
|
|
13013
|
+
this._singleNavigationExecutor = inject(SINGLE_NAVIGATION_EXECUTOR);
|
|
12883
13014
|
this.outletName = DIALOG_ID_PREFIX.concat(this._dialog.id);
|
|
12884
13015
|
}
|
|
12885
13016
|
ngOnInit() {
|
|
@@ -12887,7 +13018,7 @@ class MicrofrontendHostDialogComponent {
|
|
|
12887
13018
|
this.createOutletInjector();
|
|
12888
13019
|
this.navigate(this.capability.properties.path, { params: this.params }).then(success => {
|
|
12889
13020
|
if (!success) {
|
|
12890
|
-
this._dialog.close(Error('[DialogNavigateError] Navigation canceled, most likely by a route guard.'));
|
|
13021
|
+
this._dialog.close(Error('[DialogNavigateError] Navigation canceled, most likely by a route guard or a parallel navigation.'));
|
|
12891
13022
|
}
|
|
12892
13023
|
});
|
|
12893
13024
|
}
|
|
@@ -12898,7 +13029,7 @@ class MicrofrontendHostDialogComponent {
|
|
|
12898
13029
|
path = Microfrontends.substituteNamedParameters(path, extras?.params);
|
|
12899
13030
|
const outletCommands = (path !== null ? runInInjectionContext(this._injector, () => RouterUtils.pathToCommands(path)) : null);
|
|
12900
13031
|
const commands = [{ outlets: { [this.outletName]: outletCommands } }];
|
|
12901
|
-
return this._router.navigate(commands, { skipLocationChange: true, queryParamsHandling: 'preserve' });
|
|
13032
|
+
return this._singleNavigationExecutor.submit(() => this._router.navigate(commands, { skipLocationChange: true, queryParamsHandling: 'preserve' }));
|
|
12902
13033
|
}
|
|
12903
13034
|
createOutletInjector() {
|
|
12904
13035
|
this.outletInjector = Injector.create({
|
|
@@ -12924,15 +13055,15 @@ class MicrofrontendHostDialogComponent {
|
|
|
12924
13055
|
ngOnDestroy() {
|
|
12925
13056
|
this.navigate(null).then(); // Remove the outlet from the URL
|
|
12926
13057
|
}
|
|
12927
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12928
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
13058
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendHostDialogComponent, deps: [{ token: ɵWorkbenchDialog }, { token: i0.Injector }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13059
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: MicrofrontendHostDialogComponent, isStandalone: true, selector: "wb-microfrontend-host-dialog", inputs: { capability: "capability", params: "params" }, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"router_outlet; injector: outletInjector\"/>\n\n<ng-template #router_outlet>\n <router-outlet [name]=\"outletName\"/>\n</ng-template>\n", styles: [":host{display:grid}:host>router-outlet{position:absolute}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
12929
13060
|
}
|
|
12930
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
13061
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendHostDialogComponent, decorators: [{
|
|
12931
13062
|
type: Component,
|
|
12932
13063
|
args: [{ selector: 'wb-microfrontend-host-dialog', standalone: true, imports: [
|
|
12933
13064
|
RouterOutlet,
|
|
12934
13065
|
NgTemplateOutlet,
|
|
12935
|
-
], template: "<ng-container *ngTemplateOutlet=\"router_outlet; injector: outletInjector\"
|
|
13066
|
+
], template: "<ng-container *ngTemplateOutlet=\"router_outlet; injector: outletInjector\"/>\n\n<ng-template #router_outlet>\n <router-outlet [name]=\"outletName\"/>\n</ng-template>\n", styles: [":host{display:grid}:host>router-outlet{position:absolute}\n"] }]
|
|
12936
13067
|
}], ctorParameters: () => [{ type: ɵWorkbenchDialog }, { type: i0.Injector }, { type: i2.Router }], propDecorators: { capability: [{
|
|
12937
13068
|
type: Input,
|
|
12938
13069
|
args: [{ required: true }]
|
|
@@ -13008,38 +13139,349 @@ class MicrofrontendDialogIntentHandler {
|
|
|
13008
13139
|
const replyTo = message.headers.get(MessageHeaders.ReplyTo);
|
|
13009
13140
|
try {
|
|
13010
13141
|
const result = await this.openDialog(message);
|
|
13011
|
-
|
|
13142
|
+
// Use 'Beans.opt' to not error if the platform is destroyed, e.g., in tests if not closing dialogs.
|
|
13143
|
+
await Beans.opt(MessageClient)?.publish(replyTo, result, { headers: new Map().set(MessageHeaders.Status, ResponseStatusCodes.TERMINAL) });
|
|
13012
13144
|
}
|
|
13013
13145
|
catch (error) {
|
|
13014
|
-
|
|
13146
|
+
// Use 'Beans.opt' to not error if the platform is destroyed, e.g., in tests if not closing dialogs.
|
|
13147
|
+
await Beans.opt(MessageClient)?.publish(replyTo, stringifyError(error), { headers: new Map().set(MessageHeaders.Status, ResponseStatusCodes.ERROR) });
|
|
13015
13148
|
}
|
|
13016
13149
|
}
|
|
13017
13150
|
/**
|
|
13018
13151
|
* Opens the microfrontend declared by the resolved capability in a dialog.
|
|
13019
13152
|
*/
|
|
13020
13153
|
async openDialog(message) {
|
|
13021
|
-
const options = message.body;
|
|
13154
|
+
const options = message.body ?? {};
|
|
13022
13155
|
const capability = message.capability;
|
|
13156
|
+
const params = message.intent.params ?? new Map();
|
|
13023
13157
|
const isHostProvider = capability.metadata.appSymbolicName === Beans.get(APP_IDENTITY);
|
|
13024
13158
|
this._logger.debug(() => 'Handling microfrontend dialog intent', LoggerNames.MICROFRONTEND, options);
|
|
13025
13159
|
return this._dialogService.open(isHostProvider ? MicrofrontendHostDialogComponent : MicrofrontendDialogComponent, {
|
|
13026
|
-
inputs: {
|
|
13027
|
-
capability,
|
|
13028
|
-
params: message.intent.params ?? new Map(),
|
|
13029
|
-
},
|
|
13160
|
+
inputs: { capability, params },
|
|
13030
13161
|
modality: options.modality,
|
|
13031
13162
|
context: options.context,
|
|
13032
13163
|
animate: options.animate,
|
|
13033
13164
|
cssClass: Arrays.coerce(capability.properties?.cssClass).concat(Arrays.coerce(options.cssClass)),
|
|
13034
13165
|
});
|
|
13035
13166
|
}
|
|
13036
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13037
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
13167
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogIntentHandler, deps: [{ token: WorkbenchDialogService }, { token: Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13168
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogIntentHandler }); }
|
|
13038
13169
|
}
|
|
13039
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
13170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogIntentHandler, decorators: [{
|
|
13040
13171
|
type: Injectable
|
|
13041
13172
|
}], ctorParameters: () => [{ type: WorkbenchDialogService }, { type: Logger }] });
|
|
13042
13173
|
|
|
13174
|
+
/*
|
|
13175
|
+
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
13176
|
+
*
|
|
13177
|
+
* This program and the accompanying materials are made
|
|
13178
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
13179
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
13180
|
+
*
|
|
13181
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
13182
|
+
*/
|
|
13183
|
+
/**
|
|
13184
|
+
* Navigates to the microfrontend of a given {@link WorkbenchMessageBoxCapability} via {@link Router}.
|
|
13185
|
+
*
|
|
13186
|
+
* Unlike {@link MicrofrontendMessageBoxComponent}, this component uses a `<router-outlet>` instead of a `<sci-router-outlet>`
|
|
13187
|
+
* to allow direct integration of the content provided by the workbench host application via the Angular router.
|
|
13188
|
+
*
|
|
13189
|
+
* This component is designed to be displayed in a workbench message box.
|
|
13190
|
+
*/
|
|
13191
|
+
class MicrofrontendHostMessageBoxComponent {
|
|
13192
|
+
constructor(_host, _dialog, _injector, _router) {
|
|
13193
|
+
this._host = _host;
|
|
13194
|
+
this._dialog = _dialog;
|
|
13195
|
+
this._injector = _injector;
|
|
13196
|
+
this._router = _router;
|
|
13197
|
+
this._singleNavigationExecutor = inject(SINGLE_NAVIGATION_EXECUTOR);
|
|
13198
|
+
this.outletName = MESSAGE_BOX_ID_PREFIX.concat(UUID.randomUUID());
|
|
13199
|
+
}
|
|
13200
|
+
ngOnInit() {
|
|
13201
|
+
this.setSizeProperties();
|
|
13202
|
+
this.createOutletInjector();
|
|
13203
|
+
this.navigate(this.capability.properties.path, { params: this.params }).then(success => {
|
|
13204
|
+
if (!success) {
|
|
13205
|
+
this._dialog.close(Error('[MessageBoxNavigateError] Navigation canceled, most likely by a route guard or a parallel navigation.'));
|
|
13206
|
+
}
|
|
13207
|
+
});
|
|
13208
|
+
}
|
|
13209
|
+
/**
|
|
13210
|
+
* Performs navigation in the named outlet, substituting path params if any. To clear navigation, pass `null` as the path.
|
|
13211
|
+
*/
|
|
13212
|
+
navigate(path, extras) {
|
|
13213
|
+
path = Microfrontends.substituteNamedParameters(path, extras?.params);
|
|
13214
|
+
const outletCommands = (path !== null ? runInInjectionContext(this._injector, () => RouterUtils.pathToCommands(path)) : null);
|
|
13215
|
+
const commands = [{ outlets: { [this.outletName]: outletCommands } }];
|
|
13216
|
+
return this._singleNavigationExecutor.submit(() => this._router.navigate(commands, { skipLocationChange: true, queryParamsHandling: 'preserve' }));
|
|
13217
|
+
}
|
|
13218
|
+
createOutletInjector() {
|
|
13219
|
+
this.outletInjector = Injector.create({
|
|
13220
|
+
parent: this._injector,
|
|
13221
|
+
providers: [provideWorkbenchClientMessageBoxHandle(this.capability, this.params)],
|
|
13222
|
+
});
|
|
13223
|
+
}
|
|
13224
|
+
setSizeProperties() {
|
|
13225
|
+
setStyle(this._host, {
|
|
13226
|
+
'width': this.capability.properties.size?.width ?? null,
|
|
13227
|
+
'min-width': this.capability.properties.size?.minWidth ?? null,
|
|
13228
|
+
'max-width': this.capability.properties.size?.maxWidth ?? null,
|
|
13229
|
+
'height': this.capability.properties.size?.height ?? null,
|
|
13230
|
+
'min-height': this.capability.properties.size?.minHeight ?? null,
|
|
13231
|
+
'max-height': this.capability.properties.size?.maxHeight ?? null,
|
|
13232
|
+
});
|
|
13233
|
+
}
|
|
13234
|
+
ngOnDestroy() {
|
|
13235
|
+
this.navigate(null).then(); // Remove the outlet from the URL
|
|
13236
|
+
}
|
|
13237
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendHostMessageBoxComponent, deps: [{ token: i0.ElementRef }, { token: ɵWorkbenchDialog }, { token: i0.Injector }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13238
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: MicrofrontendHostMessageBoxComponent, isStandalone: true, selector: "wb-microfrontend-host-message-box", inputs: { capability: "capability", params: "params" }, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"router_outlet; injector: outletInjector\"/>\n\n<ng-template #router_outlet>\n <router-outlet [name]=\"outletName\"/>\n</ng-template>\n", styles: [":host{display:grid}:host>router-outlet{position:absolute}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
13239
|
+
}
|
|
13240
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendHostMessageBoxComponent, decorators: [{
|
|
13241
|
+
type: Component,
|
|
13242
|
+
args: [{ selector: 'wb-microfrontend-host-message-box', standalone: true, imports: [
|
|
13243
|
+
RouterOutlet,
|
|
13244
|
+
NgTemplateOutlet,
|
|
13245
|
+
], template: "<ng-container *ngTemplateOutlet=\"router_outlet; injector: outletInjector\"/>\n\n<ng-template #router_outlet>\n <router-outlet [name]=\"outletName\"/>\n</ng-template>\n", styles: [":host{display:grid}:host>router-outlet{position:absolute}\n"] }]
|
|
13246
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: ɵWorkbenchDialog }, { type: i0.Injector }, { type: i2.Router }], propDecorators: { capability: [{
|
|
13247
|
+
type: Input,
|
|
13248
|
+
args: [{ required: true }]
|
|
13249
|
+
}], params: [{
|
|
13250
|
+
type: Input,
|
|
13251
|
+
args: [{ required: true }]
|
|
13252
|
+
}] } });
|
|
13253
|
+
/**
|
|
13254
|
+
* Provides the {WorkbenchMessageBox} handle to the routed component.
|
|
13255
|
+
*/
|
|
13256
|
+
function provideWorkbenchClientMessageBoxHandle(capability, params) {
|
|
13257
|
+
return {
|
|
13258
|
+
provide: WorkbenchMessageBox,
|
|
13259
|
+
useFactory: () => {
|
|
13260
|
+
return new class {
|
|
13261
|
+
constructor() {
|
|
13262
|
+
this.capability = capability;
|
|
13263
|
+
this.params = params;
|
|
13264
|
+
}
|
|
13265
|
+
signalReady() {
|
|
13266
|
+
// nothing to do since not an iframe-based microfrontend
|
|
13267
|
+
}
|
|
13268
|
+
};
|
|
13269
|
+
},
|
|
13270
|
+
};
|
|
13271
|
+
}
|
|
13272
|
+
|
|
13273
|
+
/*
|
|
13274
|
+
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
13275
|
+
*
|
|
13276
|
+
* This program and the accompanying materials are made
|
|
13277
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
13278
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
13279
|
+
*
|
|
13280
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
13281
|
+
*/
|
|
13282
|
+
/**
|
|
13283
|
+
* Displays the microfrontend of a given {@link WorkbenchMessageBoxCapability}.
|
|
13284
|
+
*
|
|
13285
|
+
* This component is designed to be displayed in a workbench message box.
|
|
13286
|
+
*/
|
|
13287
|
+
class MicrofrontendMessageBoxComponent {
|
|
13288
|
+
constructor(_outletRouter, _manifestService, _workbenchLayoutService, _injector, _logger) {
|
|
13289
|
+
this._outletRouter = _outletRouter;
|
|
13290
|
+
this._manifestService = _manifestService;
|
|
13291
|
+
this._workbenchLayoutService = _workbenchLayoutService;
|
|
13292
|
+
this._injector = _injector;
|
|
13293
|
+
this._logger = _logger;
|
|
13294
|
+
this.outletName = UUID.randomUUID();
|
|
13295
|
+
/**
|
|
13296
|
+
* Indicates if a workbench drag operation is in progress, such as when dragging a view or moving a sash.
|
|
13297
|
+
*/
|
|
13298
|
+
this.isWorkbenchDrag = false;
|
|
13299
|
+
this._logger.debug(() => 'Constructing MicrofrontendMessageBoxComponent.', LoggerNames.MICROFRONTEND);
|
|
13300
|
+
this.splash = inject(MicrofrontendPlatformConfig).splash ?? MicrofrontendSplashComponent;
|
|
13301
|
+
this.installWorkbenchDragDetector();
|
|
13302
|
+
}
|
|
13303
|
+
ngOnInit() {
|
|
13304
|
+
this.setSizeProperties();
|
|
13305
|
+
this.propagateMessageBoxContext();
|
|
13306
|
+
this.propagateWorkbenchTheme();
|
|
13307
|
+
this.navigate();
|
|
13308
|
+
}
|
|
13309
|
+
navigate() {
|
|
13310
|
+
const application = this._manifestService.applications.find(app => app.symbolicName === this.capability.metadata.appSymbolicName);
|
|
13311
|
+
this._logger.debug(() => `Loading microfrontend into workbench message box [app=${this.capability.metadata.appSymbolicName}, baseUrl=${application.baseUrl}, path=${this.capability.properties.path}].`, LoggerNames.MICROFRONTEND, this.params, this.capability);
|
|
13312
|
+
this._outletRouter.navigate(this.capability.properties.path, {
|
|
13313
|
+
outlet: this.outletName,
|
|
13314
|
+
relativeTo: application.baseUrl,
|
|
13315
|
+
params: this.params,
|
|
13316
|
+
pushStateToSessionHistoryStack: false,
|
|
13317
|
+
showSplash: this.capability.properties.showSplash,
|
|
13318
|
+
}).then();
|
|
13319
|
+
}
|
|
13320
|
+
/**
|
|
13321
|
+
* Make the message box context available to embedded content.
|
|
13322
|
+
*/
|
|
13323
|
+
propagateMessageBoxContext() {
|
|
13324
|
+
const context = {
|
|
13325
|
+
capability: this.capability,
|
|
13326
|
+
params: this.params,
|
|
13327
|
+
};
|
|
13328
|
+
this.routerOutletElement.nativeElement.setContextValue(_MESSAGE_BOX_CONTEXT, context);
|
|
13329
|
+
}
|
|
13330
|
+
setSizeProperties() {
|
|
13331
|
+
setStyle(this.routerOutletElement, {
|
|
13332
|
+
'width': this.capability.properties.size?.width ?? '0', // allow content size to go bellow the default iframe size when reporting preferred size
|
|
13333
|
+
'min-width': this.capability.properties.size?.minWidth ?? null,
|
|
13334
|
+
'max-width': this.capability.properties.size?.maxWidth ?? null,
|
|
13335
|
+
'height': this.capability.properties.size?.height ?? '0', // allow content size to go bellow the default iframe size when reporting preferred size
|
|
13336
|
+
'min-height': this.capability.properties.size?.minHeight ?? null,
|
|
13337
|
+
'max-height': this.capability.properties.size?.maxHeight ?? null,
|
|
13338
|
+
});
|
|
13339
|
+
}
|
|
13340
|
+
propagateWorkbenchTheme() {
|
|
13341
|
+
runInInjectionContext(this._injector, () => Microfrontends.propagateTheme(this.routerOutletElement.nativeElement));
|
|
13342
|
+
}
|
|
13343
|
+
/**
|
|
13344
|
+
* Sets the {@link isWorkbenchDrag} property when a workbench drag operation is detected,
|
|
13345
|
+
* such as when dragging a view or moving a sash.
|
|
13346
|
+
*/
|
|
13347
|
+
installWorkbenchDragDetector() {
|
|
13348
|
+
this._workbenchLayoutService.dragging$
|
|
13349
|
+
.pipe(takeUntilDestroyed())
|
|
13350
|
+
.subscribe(event => {
|
|
13351
|
+
this.isWorkbenchDrag = (event === 'start');
|
|
13352
|
+
});
|
|
13353
|
+
}
|
|
13354
|
+
ngOnDestroy() {
|
|
13355
|
+
this._outletRouter.navigate(null, { outlet: this.outletName }).then(); // Clear the outlet.
|
|
13356
|
+
}
|
|
13357
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendMessageBoxComponent, deps: [{ token: i2$3.OutletRouter }, { token: i2$3.ManifestService }, { token: WorkbenchLayoutService }, { token: i0.Injector }, { token: Logger }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13358
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: MicrofrontendMessageBoxComponent, isStandalone: true, selector: "wb-microfrontend-message-box", inputs: { capability: "capability", params: "params" }, host: { properties: { "class.workbench-drag": "this.isWorkbenchDrag" } }, viewQueries: [{ propertyName: "routerOutletElement", first: true, predicate: ["router_outlet"], descendants: true, static: true }], ngImport: i0, template: "<sci-router-outlet #router_outlet\n [name]=\"outletName\"\n [attr.data-capabilityid]=\"capability.metadata!.id\"\n [attr.data-app]=\"capability.metadata!.appSymbolicName\"\n keystrokes=\"keydown.escape\">\n <ng-container *ngComponentOutlet=\"splash\"></ng-container>\n</sci-router-outlet>\n", styles: [":host{display:grid}:host.workbench-drag>sci-router-outlet{pointer-events:none}:host>sci-router-outlet::part(splash){display:grid}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }] }); }
|
|
13359
|
+
}
|
|
13360
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendMessageBoxComponent, decorators: [{
|
|
13361
|
+
type: Component,
|
|
13362
|
+
args: [{ selector: 'wb-microfrontend-message-box', standalone: true, imports: [
|
|
13363
|
+
NgClass,
|
|
13364
|
+
NgComponentOutlet,
|
|
13365
|
+
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<sci-router-outlet #router_outlet\n [name]=\"outletName\"\n [attr.data-capabilityid]=\"capability.metadata!.id\"\n [attr.data-app]=\"capability.metadata!.appSymbolicName\"\n keystrokes=\"keydown.escape\">\n <ng-container *ngComponentOutlet=\"splash\"></ng-container>\n</sci-router-outlet>\n", styles: [":host{display:grid}:host.workbench-drag>sci-router-outlet{pointer-events:none}:host>sci-router-outlet::part(splash){display:grid}\n"] }]
|
|
13366
|
+
}], ctorParameters: () => [{ type: i2$3.OutletRouter }, { type: i2$3.ManifestService }, { type: WorkbenchLayoutService }, { type: i0.Injector }, { type: Logger }], propDecorators: { capability: [{
|
|
13367
|
+
type: Input,
|
|
13368
|
+
args: [{ required: true }]
|
|
13369
|
+
}], params: [{
|
|
13370
|
+
type: Input,
|
|
13371
|
+
args: [{ required: true }]
|
|
13372
|
+
}], isWorkbenchDrag: [{
|
|
13373
|
+
type: HostBinding,
|
|
13374
|
+
args: ['class.workbench-drag']
|
|
13375
|
+
}], routerOutletElement: [{
|
|
13376
|
+
type: ViewChild,
|
|
13377
|
+
args: ['router_outlet', { static: true }]
|
|
13378
|
+
}] } });
|
|
13379
|
+
|
|
13380
|
+
/*
|
|
13381
|
+
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
13382
|
+
*
|
|
13383
|
+
* This program and the accompanying materials are made
|
|
13384
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
13385
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
13386
|
+
*
|
|
13387
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
13388
|
+
*/
|
|
13389
|
+
/**
|
|
13390
|
+
* Handles messagebox intents, instructing the workbench to open a message box with the microfrontend declared on the resolved capability.
|
|
13391
|
+
*
|
|
13392
|
+
* Microfrontends of the host are displayed in {@link MicrofrontendHostMessageBoxComponent}, microfrontends of other applications in {@link MicrofrontendMessageBoxComponent}.
|
|
13393
|
+
*
|
|
13394
|
+
* Message box intents are handled in this interceptor and are not transported to the providing application, enabling support for applications
|
|
13395
|
+
* that are not connected to the SCION Workbench.
|
|
13396
|
+
*/
|
|
13397
|
+
class MicrofrontendMessageBoxIntentHandler {
|
|
13398
|
+
constructor(_messageBoxService, _logger) {
|
|
13399
|
+
this._messageBoxService = _messageBoxService;
|
|
13400
|
+
this._logger = _logger;
|
|
13401
|
+
}
|
|
13402
|
+
/**
|
|
13403
|
+
* Message box intents are handled in this interceptor and then swallowed.
|
|
13404
|
+
*/
|
|
13405
|
+
intercept(intentMessage, next) {
|
|
13406
|
+
if (intentMessage.intent.type === WorkbenchCapabilities.MessageBox) {
|
|
13407
|
+
// Do not block the call until the message box is closed.
|
|
13408
|
+
// Otherwise, the caller may receive a timeout error if not closing the message box before delivery confirmation expires.
|
|
13409
|
+
this.consumeMessageBoxIntent(intentMessage).catch(error => this._logger.error('[MessageBoxOpenError] Failed to open message box.', LoggerNames.MICROFRONTEND, intentMessage, error));
|
|
13410
|
+
// Swallow the intent and do not pass it to other interceptors or handlers down the chain.
|
|
13411
|
+
return Promise.resolve();
|
|
13412
|
+
}
|
|
13413
|
+
else {
|
|
13414
|
+
return next.handle(intentMessage);
|
|
13415
|
+
}
|
|
13416
|
+
}
|
|
13417
|
+
async consumeMessageBoxIntent(message) {
|
|
13418
|
+
const replyTo = message.headers.get(MessageHeaders.ReplyTo);
|
|
13419
|
+
try {
|
|
13420
|
+
const result = await this.openMessageBox(message);
|
|
13421
|
+
// Use 'Beans.opt' to not error if the platform is destroyed, e.g., in tests if not closing message boxes.
|
|
13422
|
+
await Beans.opt(MessageClient)?.publish(replyTo, result, { headers: new Map().set(MessageHeaders.Status, ResponseStatusCodes.TERMINAL) });
|
|
13423
|
+
}
|
|
13424
|
+
catch (error) {
|
|
13425
|
+
// Use 'Beans.opt' to not error if the platform is destroyed, e.g., in tests if not closing message boxes.
|
|
13426
|
+
await Beans.opt(MessageClient)?.publish(replyTo, stringifyError(error), { headers: new Map().set(MessageHeaders.Status, ResponseStatusCodes.ERROR) });
|
|
13427
|
+
}
|
|
13428
|
+
}
|
|
13429
|
+
/**
|
|
13430
|
+
* Opens the microfrontend declared by the resolved capability in a message box.
|
|
13431
|
+
*/
|
|
13432
|
+
async openMessageBox(message) {
|
|
13433
|
+
const options = message.body ?? {};
|
|
13434
|
+
const capability = message.capability;
|
|
13435
|
+
const params = message.intent.params ?? new Map();
|
|
13436
|
+
const isHostProvider = capability.metadata.appSymbolicName === Beans.get(APP_IDENTITY);
|
|
13437
|
+
this._logger.debug(() => 'Handling microfrontend messagebox intent', LoggerNames.MICROFRONTEND, options);
|
|
13438
|
+
return this._messageBoxService.open(isHostProvider ? MicrofrontendHostMessageBoxComponent : MicrofrontendMessageBoxComponent, {
|
|
13439
|
+
inputs: { capability, params },
|
|
13440
|
+
title: options.title,
|
|
13441
|
+
actions: options.actions,
|
|
13442
|
+
severity: options.severity,
|
|
13443
|
+
modality: options.modality,
|
|
13444
|
+
contentSelectable: options.contentSelectable,
|
|
13445
|
+
cssClass: Arrays.coerce(capability.properties?.cssClass).concat(Arrays.coerce(options.cssClass)),
|
|
13446
|
+
context: options.context,
|
|
13447
|
+
});
|
|
13448
|
+
}
|
|
13449
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendMessageBoxIntentHandler, deps: [{ token: WorkbenchMessageBoxService }, { token: Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13450
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendMessageBoxIntentHandler }); }
|
|
13451
|
+
}
|
|
13452
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendMessageBoxIntentHandler, decorators: [{
|
|
13453
|
+
type: Injectable
|
|
13454
|
+
}], ctorParameters: () => [{ type: WorkbenchMessageBoxService }, { type: Logger }] });
|
|
13455
|
+
|
|
13456
|
+
/**
|
|
13457
|
+
* @deprecated since workbench version 17.0.0-beta.9; provides backward compatibility for {@link WorkbenchMessageBoxLegacyOptions}; interceptor will be removed in a future release.
|
|
13458
|
+
*/
|
|
13459
|
+
class MicrofrontendMessageBoxLegacyIntentTranslator {
|
|
13460
|
+
intercept(intentMessage, next) {
|
|
13461
|
+
if (intentMessage.intent.type === WorkbenchCapabilities.MessageBox && !Object.keys(intentMessage.capability.qualifier ?? {}).length && hasLegacyContent(intentMessage)) {
|
|
13462
|
+
const params = (intentMessage.intent.params ?? new Map());
|
|
13463
|
+
// Move legacy 'content' to the new 'message' param.
|
|
13464
|
+
intentMessage.intent.params = params.set(eMESSAGE_BOX_MESSAGE_PARAM, intentMessage.body.content);
|
|
13465
|
+
return next.handle(intentMessage);
|
|
13466
|
+
}
|
|
13467
|
+
else {
|
|
13468
|
+
return next.handle(intentMessage);
|
|
13469
|
+
}
|
|
13470
|
+
}
|
|
13471
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendMessageBoxLegacyIntentTranslator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13472
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendMessageBoxLegacyIntentTranslator }); }
|
|
13473
|
+
}
|
|
13474
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendMessageBoxLegacyIntentTranslator, decorators: [{
|
|
13475
|
+
type: Injectable
|
|
13476
|
+
}] });
|
|
13477
|
+
/**
|
|
13478
|
+
* Tests if the intent contains `content` in the body instead of the `message` param,
|
|
13479
|
+
* sent by workbench clients older than version v1.0.0-beta.23.
|
|
13480
|
+
*/
|
|
13481
|
+
function hasLegacyContent(intentMessage) {
|
|
13482
|
+
return !intentMessage.intent.params?.get(eMESSAGE_BOX_MESSAGE_PARAM) && intentMessage.body?.content;
|
|
13483
|
+
}
|
|
13484
|
+
|
|
13043
13485
|
/**
|
|
13044
13486
|
* Asserts view capabilities to have required properties and assigns each view capability a stable identifer required for persistent navigation.
|
|
13045
13487
|
*/
|
|
@@ -13060,10 +13502,10 @@ class MicrofrontendViewCapabilityValidator {
|
|
|
13060
13502
|
}
|
|
13061
13503
|
return capability;
|
|
13062
13504
|
}
|
|
13063
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13064
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
13505
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendViewCapabilityValidator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13506
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendViewCapabilityValidator }); }
|
|
13065
13507
|
}
|
|
13066
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
13508
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendViewCapabilityValidator, decorators: [{
|
|
13067
13509
|
type: Injectable
|
|
13068
13510
|
}] });
|
|
13069
13511
|
|
|
@@ -13081,10 +13523,10 @@ class MicrofrontendViewCapabilityIdAssigner {
|
|
|
13081
13523
|
metadata: { ...capability.metadata, id: stableIdentifier },
|
|
13082
13524
|
};
|
|
13083
13525
|
}
|
|
13084
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13085
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
13526
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendViewCapabilityIdAssigner, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13527
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendViewCapabilityIdAssigner }); }
|
|
13086
13528
|
}
|
|
13087
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
13529
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendViewCapabilityIdAssigner, decorators: [{
|
|
13088
13530
|
type: Injectable
|
|
13089
13531
|
}] });
|
|
13090
13532
|
/**
|
|
@@ -13124,10 +13566,10 @@ class MicrofrontendPopupCapabilityValidator {
|
|
|
13124
13566
|
}
|
|
13125
13567
|
return popupCapability;
|
|
13126
13568
|
}
|
|
13127
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13128
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
13569
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendPopupCapabilityValidator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13570
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendPopupCapabilityValidator }); }
|
|
13129
13571
|
}
|
|
13130
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
13572
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendPopupCapabilityValidator, decorators: [{
|
|
13131
13573
|
type: Injectable
|
|
13132
13574
|
}] });
|
|
13133
13575
|
|
|
@@ -13172,13 +13614,43 @@ class MicrofrontendDialogCapabilityValidator {
|
|
|
13172
13614
|
throw Error(`[NullSizeError] Dialog capability requires width and height in its size properties [capability=${JSON.stringify(capability)}]`);
|
|
13173
13615
|
}
|
|
13174
13616
|
}
|
|
13175
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13176
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
13617
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogCapabilityValidator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13618
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogCapabilityValidator }); }
|
|
13177
13619
|
}
|
|
13178
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
13620
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogCapabilityValidator, decorators: [{
|
|
13179
13621
|
type: Injectable
|
|
13180
13622
|
}] });
|
|
13181
13623
|
|
|
13624
|
+
/**
|
|
13625
|
+
* Asserts message box capabilities to have required properties.
|
|
13626
|
+
*/
|
|
13627
|
+
class MicrofrontendMessageBoxCapabilityValidator {
|
|
13628
|
+
async intercept(capability) {
|
|
13629
|
+
if (capability.type !== WorkbenchCapabilities.MessageBox) {
|
|
13630
|
+
return capability;
|
|
13631
|
+
}
|
|
13632
|
+
const messageBoxCapability = capability;
|
|
13633
|
+
// Assert capability to have a path.
|
|
13634
|
+
const path = messageBoxCapability.properties?.path;
|
|
13635
|
+
if (path === undefined || path === null) {
|
|
13636
|
+
throw Error(`[NullPathError] MessageBox capability requires a path to the microfrontend in its properties [capability=${JSON.stringify(messageBoxCapability)}]`);
|
|
13637
|
+
}
|
|
13638
|
+
// Assert capability other than the built-in text messsage box capability to have a qualifier.
|
|
13639
|
+
if (!isBuiltInTextMessageBoxCapability(messageBoxCapability) && !Object.keys(messageBoxCapability.qualifier ?? {}).length) {
|
|
13640
|
+
throw Error(`[NullQualifierError] MessageBox capability requires a qualifier [capability=${JSON.stringify(messageBoxCapability)}]`);
|
|
13641
|
+
}
|
|
13642
|
+
return messageBoxCapability;
|
|
13643
|
+
}
|
|
13644
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendMessageBoxCapabilityValidator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13645
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendMessageBoxCapabilityValidator }); }
|
|
13646
|
+
}
|
|
13647
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendMessageBoxCapabilityValidator, decorators: [{
|
|
13648
|
+
type: Injectable
|
|
13649
|
+
}] });
|
|
13650
|
+
function isBuiltInTextMessageBoxCapability(capability) {
|
|
13651
|
+
return capability.properties[TEXT_MESSAGE_BOX_CAPABILITY_IDENTITY_PROPERTY] === TEXT_MESSAGE_BOX_CAPABILITY_IDENTITY;
|
|
13652
|
+
}
|
|
13653
|
+
|
|
13182
13654
|
/*
|
|
13183
13655
|
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
13184
13656
|
*
|
|
@@ -13192,17 +13664,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
13192
13664
|
* Initializes and starts the SCION Microfrontend Platform in host mode.
|
|
13193
13665
|
*/
|
|
13194
13666
|
class MicrofrontendPlatformInitializer {
|
|
13195
|
-
constructor(_microfrontendPlatformConfigLoader, _hostManifestInterceptor, _ngZoneObservableDecorator, _viewIntentHandler, _popupIntentHandler, _dialogIntentHandler, _viewCapabilityValidator, _viewCapabilityIdAssigner, _popupCapabilityValidator, _dialogCapabilityValidator, _injector, _zone, _logger) {
|
|
13667
|
+
constructor(_microfrontendPlatformConfigLoader, _hostManifestInterceptor, _ngZoneObservableDecorator, _viewIntentHandler, _popupIntentHandler, _dialogIntentHandler, _messageBoxIntentHandler, _messageBoxLegacyIntentTranslator, _viewCapabilityValidator, _viewCapabilityIdAssigner, _popupCapabilityValidator, _dialogCapabilityValidator, _messageBoxCapabilityValidator, _injector, _zone, _logger) {
|
|
13196
13668
|
this._microfrontendPlatformConfigLoader = _microfrontendPlatformConfigLoader;
|
|
13197
13669
|
this._hostManifestInterceptor = _hostManifestInterceptor;
|
|
13198
13670
|
this._ngZoneObservableDecorator = _ngZoneObservableDecorator;
|
|
13199
13671
|
this._viewIntentHandler = _viewIntentHandler;
|
|
13200
13672
|
this._popupIntentHandler = _popupIntentHandler;
|
|
13201
13673
|
this._dialogIntentHandler = _dialogIntentHandler;
|
|
13674
|
+
this._messageBoxIntentHandler = _messageBoxIntentHandler;
|
|
13675
|
+
this._messageBoxLegacyIntentTranslator = _messageBoxLegacyIntentTranslator;
|
|
13202
13676
|
this._viewCapabilityValidator = _viewCapabilityValidator;
|
|
13203
13677
|
this._viewCapabilityIdAssigner = _viewCapabilityIdAssigner;
|
|
13204
13678
|
this._popupCapabilityValidator = _popupCapabilityValidator;
|
|
13205
13679
|
this._dialogCapabilityValidator = _dialogCapabilityValidator;
|
|
13680
|
+
this._messageBoxCapabilityValidator = _messageBoxCapabilityValidator;
|
|
13206
13681
|
this._injector = _injector;
|
|
13207
13682
|
this._zone = _zone;
|
|
13208
13683
|
this._logger = _logger;
|
|
@@ -13224,7 +13699,8 @@ class MicrofrontendPlatformInitializer {
|
|
|
13224
13699
|
// Register beans of @scion/workbench-client.
|
|
13225
13700
|
Beans.register(WorkbenchRouter$1);
|
|
13226
13701
|
Beans.register(WorkbenchPopupService);
|
|
13227
|
-
Beans.register(WorkbenchMessageBoxService$1);
|
|
13702
|
+
Beans.register(WorkbenchMessageBoxService$1, { useClass: _WorkbenchMessageBoxService });
|
|
13703
|
+
Beans.register(WorkbenchDialogService$1, { useClass: _WorkbenchDialogService });
|
|
13228
13704
|
Beans.register(WorkbenchNotificationService);
|
|
13229
13705
|
// Register host manifest interceptor for the workbench to register workbench-specific intentions and capabilities.
|
|
13230
13706
|
Beans.register(HostManifestInterceptor, { useValue: this._hostManifestInterceptor, multi: true });
|
|
@@ -13236,6 +13712,10 @@ class MicrofrontendPlatformInitializer {
|
|
|
13236
13712
|
Beans.register(IntentInterceptor, { useValue: this._popupIntentHandler, multi: true });
|
|
13237
13713
|
// Register dialog intent interceptor to open the corresponding dialog.
|
|
13238
13714
|
Beans.register(IntentInterceptor, { useValue: this._dialogIntentHandler, multi: true });
|
|
13715
|
+
// Register message box intent interceptor to provide backward compatibility for workbench clients older than version v1.0.0-beta.23.
|
|
13716
|
+
Beans.register(IntentInterceptor, { useValue: this._messageBoxLegacyIntentTranslator, multi: true });
|
|
13717
|
+
// Register message box intent interceptor to open the corresponding message box.
|
|
13718
|
+
Beans.register(IntentInterceptor, { useValue: this._messageBoxIntentHandler, multi: true });
|
|
13239
13719
|
// Register view capability interceptor to assert required view capability properties.
|
|
13240
13720
|
Beans.register(CapabilityInterceptor, { useValue: this._viewCapabilityValidator, multi: true });
|
|
13241
13721
|
// Register view capability interceptor to assign view capabilities a stable identifier required for persistent navigation.
|
|
@@ -13244,6 +13724,8 @@ class MicrofrontendPlatformInitializer {
|
|
|
13244
13724
|
Beans.register(CapabilityInterceptor, { useValue: this._popupCapabilityValidator, multi: true });
|
|
13245
13725
|
// Register dialog capability interceptor to assert required dialog capability properties.
|
|
13246
13726
|
Beans.register(CapabilityInterceptor, { useValue: this._dialogCapabilityValidator, multi: true });
|
|
13727
|
+
// Register message box capability interceptor to assert required capability properties.
|
|
13728
|
+
Beans.register(CapabilityInterceptor, { useValue: this._messageBoxCapabilityValidator, multi: true });
|
|
13247
13729
|
// Inject services registered under {MICROFRONTEND_PLATFORM_POST_STARTUP} DI token;
|
|
13248
13730
|
// must be done in runlevel 2, i.e., before activator microfrontends are installed.
|
|
13249
13731
|
Beans.registerInitializer({
|
|
@@ -13259,13 +13741,13 @@ class MicrofrontendPlatformInitializer {
|
|
|
13259
13741
|
ngOnDestroy() {
|
|
13260
13742
|
MicrofrontendPlatform.destroy().then();
|
|
13261
13743
|
}
|
|
13262
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13263
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
13744
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendPlatformInitializer, deps: [{ token: MicrofrontendPlatformConfigLoader }, { token: WorkbenchHostManifestInterceptor }, { token: NgZoneObservableDecorator }, { token: MicrofrontendViewIntentHandler }, { token: MicrofrontendPopupIntentHandler }, { token: MicrofrontendDialogIntentHandler }, { token: MicrofrontendMessageBoxIntentHandler }, { token: MicrofrontendMessageBoxLegacyIntentTranslator }, { token: MicrofrontendViewCapabilityValidator }, { token: MicrofrontendViewCapabilityIdAssigner }, { token: MicrofrontendPopupCapabilityValidator }, { token: MicrofrontendDialogCapabilityValidator }, { token: MicrofrontendMessageBoxCapabilityValidator }, { token: i0.Injector }, { token: i0.NgZone }, { token: Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13745
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendPlatformInitializer, providedIn: 'root' }); }
|
|
13264
13746
|
}
|
|
13265
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
13747
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendPlatformInitializer, decorators: [{
|
|
13266
13748
|
type: Injectable,
|
|
13267
13749
|
args: [{ providedIn: 'root' }]
|
|
13268
|
-
}], ctorParameters: () => [{ type: MicrofrontendPlatformConfigLoader }, { type: WorkbenchHostManifestInterceptor }, { type: NgZoneObservableDecorator }, { type: MicrofrontendViewIntentHandler }, { type: MicrofrontendPopupIntentHandler }, { type: MicrofrontendDialogIntentHandler }, { type: MicrofrontendViewCapabilityValidator }, { type: MicrofrontendViewCapabilityIdAssigner }, { type: MicrofrontendPopupCapabilityValidator }, { type: MicrofrontendDialogCapabilityValidator }, { type: i0.Injector }, { type: i0.NgZone }, { type: Logger }] });
|
|
13750
|
+
}], ctorParameters: () => [{ type: MicrofrontendPlatformConfigLoader }, { type: WorkbenchHostManifestInterceptor }, { type: NgZoneObservableDecorator }, { type: MicrofrontendViewIntentHandler }, { type: MicrofrontendPopupIntentHandler }, { type: MicrofrontendDialogIntentHandler }, { type: MicrofrontendMessageBoxIntentHandler }, { type: MicrofrontendMessageBoxLegacyIntentTranslator }, { type: MicrofrontendViewCapabilityValidator }, { type: MicrofrontendViewCapabilityIdAssigner }, { type: MicrofrontendPopupCapabilityValidator }, { type: MicrofrontendDialogCapabilityValidator }, { type: MicrofrontendMessageBoxCapabilityValidator }, { type: i0.Injector }, { type: i0.NgZone }, { type: Logger }] });
|
|
13269
13751
|
|
|
13270
13752
|
/*
|
|
13271
13753
|
* Copyright (c) 2018-2022 Swiss Federal Railways
|
|
@@ -13377,52 +13859,13 @@ class MicrofrontendViewCommandHandler {
|
|
|
13377
13859
|
ngOnDestroy() {
|
|
13378
13860
|
this._subscriptions.forEach(subscription => subscription.unsubscribe());
|
|
13379
13861
|
}
|
|
13380
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13381
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
13862
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendViewCommandHandler, deps: [{ token: i2$3.MessageClient }, { token: WorkbenchViewRegistry }, { token: Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13863
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendViewCommandHandler }); }
|
|
13382
13864
|
}
|
|
13383
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
13865
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendViewCommandHandler, decorators: [{
|
|
13384
13866
|
type: Injectable
|
|
13385
13867
|
}], ctorParameters: () => [{ type: i2$3.MessageClient }, { type: WorkbenchViewRegistry }, { type: Logger }] });
|
|
13386
13868
|
|
|
13387
|
-
/*
|
|
13388
|
-
* Copyright (c) 2018-2022 Swiss Federal Railways
|
|
13389
|
-
*
|
|
13390
|
-
* This program and the accompanying materials are made
|
|
13391
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
13392
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
13393
|
-
*
|
|
13394
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
13395
|
-
*/
|
|
13396
|
-
/**
|
|
13397
|
-
* Handles intents that refer to the built-in message box capability, allowing microfrontends to display simple message boxes.
|
|
13398
|
-
*
|
|
13399
|
-
* This class is constructed after connected to the SCION Microfrontend Platform via {@link MICROFRONTEND_PLATFORM_POST_STARTUP} DI token.
|
|
13400
|
-
*
|
|
13401
|
-
* @see WorkbenchHostManifestInterceptor
|
|
13402
|
-
* @see MICROFRONTEND_PLATFORM_POST_STARTUP
|
|
13403
|
-
*/
|
|
13404
|
-
class MicrofrontendMessageBoxIntentHandler {
|
|
13405
|
-
constructor(intentClient, messageBoxService, logger) {
|
|
13406
|
-
intentClient.onIntent({ type: WorkbenchCapabilities.MessageBox, qualifier: {} }, ({ body: config }) => {
|
|
13407
|
-
logger.debug(() => 'Opening message box', LoggerNames.MICROFRONTEND, config);
|
|
13408
|
-
return messageBoxService.open(config?.content, {
|
|
13409
|
-
title: config?.title,
|
|
13410
|
-
actions: config?.actions,
|
|
13411
|
-
severity: config?.severity,
|
|
13412
|
-
modality: config?.modality,
|
|
13413
|
-
contentSelectable: config?.contentSelectable,
|
|
13414
|
-
cssClass: config?.cssClass,
|
|
13415
|
-
context: config?.context,
|
|
13416
|
-
});
|
|
13417
|
-
});
|
|
13418
|
-
}
|
|
13419
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: MicrofrontendMessageBoxIntentHandler, deps: [{ token: i2$3.IntentClient }, { token: WorkbenchMessageBoxService }, { token: Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13420
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: MicrofrontendMessageBoxIntentHandler }); }
|
|
13421
|
-
}
|
|
13422
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: MicrofrontendMessageBoxIntentHandler, decorators: [{
|
|
13423
|
-
type: Injectable
|
|
13424
|
-
}], ctorParameters: () => [{ type: i2$3.IntentClient }, { type: WorkbenchMessageBoxService }, { type: Logger }] });
|
|
13425
|
-
|
|
13426
13869
|
/*
|
|
13427
13870
|
* Copyright (c) 2018-2022 Swiss Federal Railways
|
|
13428
13871
|
*
|
|
@@ -13454,10 +13897,10 @@ class MicrofrontendNotificationIntentHandler {
|
|
|
13454
13897
|
});
|
|
13455
13898
|
});
|
|
13456
13899
|
}
|
|
13457
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13458
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
13900
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendNotificationIntentHandler, deps: [{ token: i2$3.IntentClient }, { token: NotificationService }, { token: Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13901
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendNotificationIntentHandler }); }
|
|
13459
13902
|
}
|
|
13460
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
13903
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendNotificationIntentHandler, decorators: [{
|
|
13461
13904
|
type: Injectable
|
|
13462
13905
|
}], ctorParameters: () => [{ type: i2$3.IntentClient }, { type: NotificationService }, { type: Logger }] });
|
|
13463
13906
|
|
|
@@ -13536,10 +13979,10 @@ class ContentProjectionDirective {
|
|
|
13536
13979
|
ngOnDestroy() {
|
|
13537
13980
|
this._contentViewRef?.destroy();
|
|
13538
13981
|
}
|
|
13539
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13540
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
13982
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ContentProjectionDirective, deps: [{ token: i0.ElementRef }, { token: ɵWorkbenchView, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
13983
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: ContentProjectionDirective, isStandalone: true, selector: "[wbContentProjection]", inputs: { overlayHost: ["wbContentProjectionOverlayHost", "overlayHost"], contentTemplateRef: ["wbContentProjectionContent", "contentTemplateRef"] }, usesOnChanges: true, ngImport: i0 }); }
|
|
13541
13984
|
}
|
|
13542
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
13985
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ContentProjectionDirective, decorators: [{
|
|
13543
13986
|
type: Directive,
|
|
13544
13987
|
args: [{ selector: '[wbContentProjection]', standalone: true }]
|
|
13545
13988
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: ɵWorkbenchView, decorators: [{
|
|
@@ -13598,10 +14041,10 @@ function isNullDimension(dimension) {
|
|
|
13598
14041
|
* ```
|
|
13599
14042
|
*/
|
|
13600
14043
|
class ContentAsOverlayComponent {
|
|
13601
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13602
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
14044
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ContentAsOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14045
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ContentAsOverlayComponent, isStandalone: true, selector: "wb-content-as-overlay", inputs: { overlayHost: "overlayHost" }, ngImport: i0, template: "<!-- define the area where to project `ng-content` into -->\n<div wbContentProjection\n [wbContentProjectionContent]=\"ng_content_template\"\n [wbContentProjectionOverlayHost]=\"overlayHost\">\n</div>\n\n<!-- make `ng-content` available in the form of a template -->\n<ng-template #ng_content_template>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host{display:grid}\n"], dependencies: [{ kind: "directive", type: ContentProjectionDirective, selector: "[wbContentProjection]", inputs: ["wbContentProjectionOverlayHost", "wbContentProjectionContent"] }] }); }
|
|
13603
14046
|
}
|
|
13604
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
14047
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ContentAsOverlayComponent, decorators: [{
|
|
13605
14048
|
type: Component,
|
|
13606
14049
|
args: [{ selector: 'wb-content-as-overlay', standalone: true, imports: [ContentProjectionDirective], template: "<!-- define the area where to project `ng-content` into -->\n<div wbContentProjection\n [wbContentProjectionContent]=\"ng_content_template\"\n [wbContentProjectionOverlayHost]=\"overlayHost\">\n</div>\n\n<!-- make `ng-content` available in the form of a template -->\n<ng-template #ng_content_template>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host{display:grid}\n"] }]
|
|
13607
14050
|
}], propDecorators: { overlayHost: [{
|
|
@@ -13828,12 +14271,12 @@ class MicrofrontendViewComponent {
|
|
|
13828
14271
|
this._outletRouter.navigate(null, { outlet: this.view.id }).then();
|
|
13829
14272
|
this.view.unregisterAdapter(MicrofrontendWorkbenchView);
|
|
13830
14273
|
}
|
|
13831
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13832
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
14274
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendViewComponent, deps: [{ token: i0.ElementRef }, { token: i2.ActivatedRoute }, { token: i2$3.OutletRouter }, { token: i2$3.ManifestService }, { token: i2$3.MessageClient }, { token: i0.DestroyRef }, { token: Logger }, { token: ViewMenuService }, { token: WorkbenchLayoutService }, { token: WorkbenchRouter }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: ɵWorkbenchView }, { token: IFRAME_HOST }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14275
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: MicrofrontendViewComponent, isStandalone: true, selector: "wb-microfrontend-view", viewQueries: [{ propertyName: "routerOutletElement", first: true, predicate: ["router_outlet"], descendants: true, static: true }], ngImport: i0, template: "<wb-content-as-overlay [overlayHost]=\"iframeHostRef.ref$ | async\">\n <div class=\"microfrontend-view\"\n [class.workbench-drag]=\"isWorkbenchDrag\"\n [attr.data-viewid]=\"view.id\"\n wbGlassPane>\n <sci-router-outlet #router_outlet\n [name]=\"view.id\"\n [attr.data-capabilityid]=\"capability?.metadata!.id\"\n [attr.data-app]=\"capability?.metadata!.appSymbolicName\"\n [ngClass]=\"view.classList.value\"\n (focuswithin)=\"onFocusWithin($event)\"\n [keystrokes]=\"keystrokesToBubble$ | async\">\n <ng-container *ngComponentOutlet=\"splash\"></ng-container>\n </sci-router-outlet>\n </div>\n</wb-content-as-overlay>\n", styles: [":host{display:grid}div.microfrontend-view{display:grid}div.microfrontend-view.workbench-drag{pointer-events:none}div.microfrontend-view>sci-router-outlet::part(splash){display:grid}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ContentAsOverlayComponent, selector: "wb-content-as-overlay", inputs: ["overlayHost"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: GlassPaneDirective, selector: "[wbGlassPane]" }], viewProviders: [
|
|
13833
14276
|
configureMicrofrontendGlassPane(),
|
|
13834
14277
|
] }); }
|
|
13835
14278
|
}
|
|
13836
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
14279
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendViewComponent, decorators: [{
|
|
13837
14280
|
type: Component,
|
|
13838
14281
|
args: [{ selector: 'wb-microfrontend-view', standalone: true, imports: [
|
|
13839
14282
|
NgClass,
|
|
@@ -13855,22 +14298,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
13855
14298
|
* Blocks the microfrontend outlet when dialog(s) overlay this view.
|
|
13856
14299
|
*/
|
|
13857
14300
|
function configureMicrofrontendGlassPane() {
|
|
13858
|
-
return
|
|
13859
|
-
|
|
13860
|
-
|
|
13861
|
-
|
|
14301
|
+
return [
|
|
14302
|
+
{
|
|
14303
|
+
provide: GLASS_PANE_BLOCKABLE,
|
|
14304
|
+
useExisting: ɵWorkbenchView,
|
|
14305
|
+
},
|
|
14306
|
+
{
|
|
14307
|
+
provide: GLASS_PANE_OPTIONS,
|
|
14308
|
+
useFactory: () => ({ attributes: { 'data-viewid': inject(WorkbenchView).id } }),
|
|
14309
|
+
},
|
|
14310
|
+
];
|
|
13862
14311
|
}
|
|
13863
14312
|
|
|
13864
|
-
/*
|
|
13865
|
-
* Copyright (c) 2018-2023 Swiss Federal Railways
|
|
13866
|
-
*
|
|
13867
|
-
* This program and the accompanying materials are made
|
|
13868
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
13869
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
13870
|
-
*
|
|
13871
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
13872
|
-
*/
|
|
13873
|
-
|
|
13874
14313
|
/*
|
|
13875
14314
|
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
13876
14315
|
*
|
|
@@ -13902,11 +14341,6 @@ function provideWorkbenchMicrofrontendSupport(workbenchConfig) {
|
|
|
13902
14341
|
useClass: MicrofrontendViewCommandHandler,
|
|
13903
14342
|
multi: true,
|
|
13904
14343
|
},
|
|
13905
|
-
{
|
|
13906
|
-
provide: MICROFRONTEND_PLATFORM_POST_STARTUP,
|
|
13907
|
-
useClass: MicrofrontendMessageBoxIntentHandler,
|
|
13908
|
-
multi: true,
|
|
13909
|
-
},
|
|
13910
14344
|
{
|
|
13911
14345
|
provide: MICROFRONTEND_PLATFORM_POST_STARTUP,
|
|
13912
14346
|
useClass: MicrofrontendNotificationIntentHandler,
|
|
@@ -13919,13 +14353,17 @@ function provideWorkbenchMicrofrontendSupport(workbenchConfig) {
|
|
|
13919
14353
|
MicrofrontendViewIntentHandler,
|
|
13920
14354
|
MicrofrontendPopupIntentHandler,
|
|
13921
14355
|
MicrofrontendDialogIntentHandler,
|
|
14356
|
+
MicrofrontendMessageBoxLegacyIntentTranslator,
|
|
14357
|
+
MicrofrontendMessageBoxIntentHandler,
|
|
13922
14358
|
MicrofrontendViewCapabilityValidator,
|
|
13923
14359
|
MicrofrontendViewCapabilityIdAssigner,
|
|
13924
14360
|
MicrofrontendPopupCapabilityValidator,
|
|
13925
14361
|
MicrofrontendDialogCapabilityValidator,
|
|
14362
|
+
MicrofrontendMessageBoxCapabilityValidator,
|
|
13926
14363
|
NgZoneObservableDecorator,
|
|
13927
14364
|
WorkbenchHostManifestInterceptor,
|
|
13928
|
-
|
|
14365
|
+
provideBuiltInTextMessageBoxCapabilityRoute(),
|
|
14366
|
+
provideMicrofrontendViewRoute(),
|
|
13929
14367
|
provideMicrofrontendPlatformBeans(),
|
|
13930
14368
|
provideWorkbenchClientBeans(),
|
|
13931
14369
|
]);
|
|
@@ -13940,10 +14378,10 @@ class StaticMicrofrontendPlatformConfigLoader {
|
|
|
13940
14378
|
async load() {
|
|
13941
14379
|
return this._workbenchConfig.microfrontendPlatform;
|
|
13942
14380
|
}
|
|
13943
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13944
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
14381
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: StaticMicrofrontendPlatformConfigLoader, deps: [{ token: WorkbenchConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
14382
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: StaticMicrofrontendPlatformConfigLoader }); }
|
|
13945
14383
|
}
|
|
13946
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
14384
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: StaticMicrofrontendPlatformConfigLoader, decorators: [{
|
|
13947
14385
|
type: Injectable
|
|
13948
14386
|
}], ctorParameters: () => [{ type: WorkbenchConfig }] });
|
|
13949
14387
|
/**
|
|
@@ -13972,9 +14410,9 @@ function provideWorkbenchClientBeans() {
|
|
|
13972
14410
|
]);
|
|
13973
14411
|
}
|
|
13974
14412
|
/**
|
|
13975
|
-
* Provides the route for integrating
|
|
14413
|
+
* Provides the route for integrating microfrontend views.
|
|
13976
14414
|
*/
|
|
13977
|
-
function
|
|
14415
|
+
function provideMicrofrontendViewRoute() {
|
|
13978
14416
|
return makeEnvironmentProviders([
|
|
13979
14417
|
{
|
|
13980
14418
|
provide: ROUTES,
|
|
@@ -13987,6 +14425,31 @@ function provideMicrofrontendRoute() {
|
|
|
13987
14425
|
},
|
|
13988
14426
|
]);
|
|
13989
14427
|
}
|
|
14428
|
+
/**
|
|
14429
|
+
* Provides route for built-in {@link WorkbenchMessageBoxCapability}.
|
|
14430
|
+
*/
|
|
14431
|
+
function provideBuiltInTextMessageBoxCapabilityRoute() {
|
|
14432
|
+
return makeEnvironmentProviders([
|
|
14433
|
+
{
|
|
14434
|
+
provide: ROUTES,
|
|
14435
|
+
multi: true,
|
|
14436
|
+
useValue: {
|
|
14437
|
+
path: TEXT_MESSAGE_BOX_CAPABILITY_ROUTE,
|
|
14438
|
+
loadComponent: () => Promise.resolve().then(function () { return textMessage_component; }),
|
|
14439
|
+
canMatch: [canMatchWorkbenchMessageBox()],
|
|
14440
|
+
},
|
|
14441
|
+
},
|
|
14442
|
+
]);
|
|
14443
|
+
}
|
|
14444
|
+
/**
|
|
14445
|
+
* Matches the route if target of a workbench message box.
|
|
14446
|
+
*/
|
|
14447
|
+
function canMatchWorkbenchMessageBox() {
|
|
14448
|
+
return () => {
|
|
14449
|
+
const outlet = inject(WORKBENCH_AUXILIARY_ROUTE_OUTLET, { optional: true });
|
|
14450
|
+
return RouterUtils.isMessageBoxOutlet(outlet);
|
|
14451
|
+
};
|
|
14452
|
+
}
|
|
13990
14453
|
|
|
13991
14454
|
/*
|
|
13992
14455
|
* Copyright (c) 2018-2023 Swiss Federal Railways
|
|
@@ -14046,10 +14509,10 @@ class ɵLocation extends Location {
|
|
|
14046
14509
|
// the router only if the platform is still running.
|
|
14047
14510
|
return (this._router ??= !this._appRef.destroyed ? this._appRef.injector.get(Router) : undefined);
|
|
14048
14511
|
}
|
|
14049
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
14050
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
14512
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
14513
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵLocation }); }
|
|
14051
14514
|
}
|
|
14052
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
14515
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵLocation, decorators: [{
|
|
14053
14516
|
type: Injectable
|
|
14054
14517
|
}], ctorParameters: () => [] });
|
|
14055
14518
|
|
|
@@ -14220,17 +14683,17 @@ class WorkbenchModule {
|
|
|
14220
14683
|
providers: [], // do not register any providers in 'forChild' but in 'forRoot' instead
|
|
14221
14684
|
};
|
|
14222
14685
|
}
|
|
14223
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
14224
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
14686
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14687
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchModule, imports: [WorkbenchComponent,
|
|
14225
14688
|
WorkbenchRouterLinkDirective,
|
|
14226
14689
|
WorkbenchPartActionDirective,
|
|
14227
14690
|
WorkbenchViewMenuItemDirective], exports: [WorkbenchComponent,
|
|
14228
14691
|
WorkbenchRouterLinkDirective,
|
|
14229
14692
|
WorkbenchPartActionDirective,
|
|
14230
14693
|
WorkbenchViewMenuItemDirective] }); }
|
|
14231
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
14694
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchModule, imports: [WorkbenchComponent] }); }
|
|
14232
14695
|
}
|
|
14233
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
14696
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchModule, decorators: [{
|
|
14234
14697
|
type: NgModule,
|
|
14235
14698
|
args: [{
|
|
14236
14699
|
imports: [
|
|
@@ -14261,10 +14724,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
14261
14724
|
* Factory for creating a {@link WorkbenchLayout}.
|
|
14262
14725
|
*/
|
|
14263
14726
|
class WorkbenchLayoutFactory {
|
|
14264
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
14265
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
14727
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
14728
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutFactory, providedIn: 'root', useExisting: ɵWorkbenchLayoutFactory }); }
|
|
14266
14729
|
}
|
|
14267
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
14730
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutFactory, decorators: [{
|
|
14268
14731
|
type: Injectable,
|
|
14269
14732
|
args: [{ providedIn: 'root', useExisting: ɵWorkbenchLayoutFactory }]
|
|
14270
14733
|
}] });
|
|
@@ -14359,15 +14822,17 @@ class WorkbenchDialogActionDirective {
|
|
|
14359
14822
|
* Specifies where to place this action in the dialog footer. Default is `end`.
|
|
14360
14823
|
*/
|
|
14361
14824
|
this.align = 'end';
|
|
14362
|
-
|
|
14825
|
+
// Defer registering action to avoid `ExpressionChangedAfterItHasBeenCheckedError`.
|
|
14826
|
+
asapScheduler.schedule(() => this._action = dialog.registerAction(this));
|
|
14363
14827
|
}
|
|
14364
14828
|
ngOnDestroy() {
|
|
14365
|
-
|
|
14829
|
+
// Defer disposing action to avoid `ExpressionChangedAfterItHasBeenCheckedError`.
|
|
14830
|
+
asapScheduler.schedule(() => this._action?.dispose());
|
|
14366
14831
|
}
|
|
14367
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
14368
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
14832
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogActionDirective, deps: [{ token: i0.TemplateRef }, { token: ɵWorkbenchDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
14833
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: WorkbenchDialogActionDirective, isStandalone: true, selector: "ng-template[wbDialogAction]", inputs: { align: "align" }, ngImport: i0 }); }
|
|
14369
14834
|
}
|
|
14370
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
14835
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogActionDirective, decorators: [{
|
|
14371
14836
|
type: Directive,
|
|
14372
14837
|
args: [{ selector: 'ng-template[wbDialogAction]', standalone: true }]
|
|
14373
14838
|
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: ɵWorkbenchDialog }], propDecorators: { align: [{
|
|
@@ -14499,10 +14964,10 @@ class SequenceInstantProvider {
|
|
|
14499
14964
|
now() {
|
|
14500
14965
|
return this._sequence++;
|
|
14501
14966
|
}
|
|
14502
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
14503
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
14967
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SequenceInstantProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
14968
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SequenceInstantProvider }); }
|
|
14504
14969
|
}
|
|
14505
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
14970
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SequenceInstantProvider, decorators: [{
|
|
14506
14971
|
type: Injectable
|
|
14507
14972
|
}] });
|
|
14508
14973
|
|
|
@@ -14544,11 +15009,11 @@ class WorkbenchTestingModule {
|
|
|
14544
15009
|
providers: [provideWorkbenchForTest(config)],
|
|
14545
15010
|
};
|
|
14546
15011
|
}
|
|
14547
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
14548
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
14549
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
15012
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
15013
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchTestingModule }); }
|
|
15014
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchTestingModule }); }
|
|
14550
15015
|
}
|
|
14551
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
15016
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchTestingModule, decorators: [{
|
|
14552
15017
|
type: NgModule
|
|
14553
15018
|
}] });
|
|
14554
15019
|
|