@scion/workbench 18.0.0-beta.9 → 19.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/design/_workbench-view-global-styles.scss +0 -1
- package/fesm2022/scion-workbench.mjs +8556 -8622
- package/fesm2022/scion-workbench.mjs.map +1 -1
- package/lib/common/css-class.util.d.ts +5 -0
- package/lib/common/math.util.d.ts +7 -0
- package/lib/common/objects.util.d.ts +1 -1
- package/lib/dialog/workbench-dialog.component.d.ts +1 -2
- package/lib/layout/migration/model/workbench-layout-migration-v6.model.d.ts +35 -0
- package/lib/layout/migration/workbench-layout-migration-v6.service.d.ts +12 -0
- package/lib/layout/workbench-layout.model.d.ts +0 -1
- package/lib/layout/workbench-layout.service.d.ts +10 -12
- package/lib/layout/workench-layout-serializer.service.d.ts +1 -2
- package/lib/part/part-action-bar/part-action-bar.component.d.ts +2 -6
- package/lib/part/part-bar/part-bar.component.d.ts +66 -48
- package/lib/part/view-tab/view-tab.component.d.ts +3 -3
- package/lib/public_api.d.ts +0 -2
- package/lib/routing/routing.util.d.ts +2 -2
- package/lib/view/view-move-handler.service.d.ts +16 -14
- package/lib/view/view.component.d.ts +1 -2
- package/lib/view//311/265workbench-view.model.d.ts +1 -9
- package/lib/view-dnd/grid-drop-targets.util.d.ts +1 -1
- package/lib/view-dnd/view-drag.service.d.ts +72 -49
- package/lib/view-dnd/view-tab-drag-image-renderer.service.d.ts +11 -36
- package/package.json +8 -10
- package/esm2022/lib/activation-instant.provider.mjs +0 -29
- package/esm2022/lib/common/animation-frame.observable.mjs +0 -37
- package/esm2022/lib/common/asserts.util.mjs +0 -31
- package/esm2022/lib/common/class-list.mjs +0 -99
- package/esm2022/lib/common/coerce-observable.pipe.mjs +0 -28
- package/esm2022/lib/common/disposable.mjs +0 -11
- package/esm2022/lib/common/dom.util.mjs +0 -100
- package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +0 -32
- package/esm2022/lib/common/instanceof.pipe.mjs +0 -26
- package/esm2022/lib/common/map-coerce.pipe.mjs +0 -28
- package/esm2022/lib/common/null-if-empty.pipe.mjs +0 -38
- package/esm2022/lib/common/objects.util.mjs +0 -40
- package/esm2022/lib/common/observables.mjs +0 -72
- package/esm2022/lib/common/operators.mjs +0 -27
- package/esm2022/lib/common/public_api.mjs +0 -11
- package/esm2022/lib/common/stringify-error.util.mjs +0 -19
- package/esm2022/lib/common/throw-error.util.mjs +0 -16
- package/esm2022/lib/common/typeof.pipe.mjs +0 -26
- package/esm2022/lib/common/uid.util.mjs +0 -22
- package/esm2022/lib/common//311/265destroy-ref.mjs +0 -36
- package/esm2022/lib/communication/workbench-broadcast-channel.mjs +0 -38
- package/esm2022/lib/content-projection/content-as-overlay.component.mjs +0 -114
- package/esm2022/lib/content-projection/workbench-element-references.mjs +0 -32
- package/esm2022/lib/dialog/dialog-footer/dialog-action-filter.pipe.mjs +0 -26
- package/esm2022/lib/dialog/dialog-footer/dialog-footer.component.mjs +0 -34
- package/esm2022/lib/dialog/dialog-footer/workbench-dialog-action.directive.mjs +0 -51
- package/esm2022/lib/dialog/dialog-footer/workbench-dialog-footer.directive.mjs +0 -46
- package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +0 -33
- package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +0 -46
- package/esm2022/lib/dialog/movable.directive.mjs +0 -126
- package/esm2022/lib/dialog/public_api.mjs +0 -15
- package/esm2022/lib/dialog/resizable.directive.mjs +0 -392
- package/esm2022/lib/dialog/workbench-dialog.component.mjs +0 -250
- package/esm2022/lib/dialog/workbench-dialog.mjs +0 -79
- package/esm2022/lib/dialog/workbench-dialog.options.mjs +0 -11
- package/esm2022/lib/dialog/workbench-dialog.registry.mjs +0 -73
- package/esm2022/lib/dialog/workbench-dialog.service.mjs +0 -96
- package/esm2022/lib/dialog//311/265workbench-dialog.mjs +0 -310
- package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +0 -98
- package/esm2022/lib/executor/latest-task-executor.mjs +0 -55
- package/esm2022/lib/executor/single-task-executor.mjs +0 -72
- package/esm2022/lib/filter-field/filter-field.component.mjs +0 -130
- package/esm2022/lib/glass-pane/blockable.mjs +0 -11
- package/esm2022/lib/glass-pane/blocking.mjs +0 -11
- package/esm2022/lib/glass-pane/glass-pane.directive.mjs +0 -120
- package/esm2022/lib/layout/grid-element/grid-element.component.mjs +0 -111
- package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +0 -97
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v2.model.mjs +0 -11
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v3.model.mjs +0 -11
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v4.model.mjs +0 -11
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +0 -11
- package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +0 -117
- package/esm2022/lib/layout/migration/workbench-layout-migration-v4.service.mjs +0 -57
- package/esm2022/lib/layout/migration/workbench-layout-migration-v5.service.mjs +0 -67
- package/esm2022/lib/layout/public_api.mjs +0 -12
- package/esm2022/lib/layout/stringifier.mjs +0 -70
- package/esm2022/lib/layout/workbench-layout.component.mjs +0 -90
- package/esm2022/lib/layout/workbench-layout.factory.mjs +0 -24
- package/esm2022/lib/layout/workbench-layout.mjs +0 -16
- package/esm2022/lib/layout/workbench-layout.model.mjs +0 -62
- package/esm2022/lib/layout/workbench-layout.service.mjs +0 -68
- package/esm2022/lib/layout/workbench-layouts.util.mjs +0 -58
- package/esm2022/lib/layout/workench-layout-serializer.service.mjs +0 -109
- package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +0 -54
- package/esm2022/lib/layout//311/265workbench-layout.mjs +0 -876
- package/esm2022/lib/logging/console-appender.service.mjs +0 -46
- package/esm2022/lib/logging/index.mjs +0 -15
- package/esm2022/lib/logging/logger-names.mjs +0 -32
- package/esm2022/lib/logging/logger.mjs +0 -36
- package/esm2022/lib/logging/logging-support.mjs +0 -26
- package/esm2022/lib/logging/logging.model.mjs +0 -45
- package/esm2022/lib/logging/public_api.mjs +0 -12
- package/esm2022/lib/logging//311/265logger.mjs +0 -73
- package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +0 -69
- package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +0 -28
- package/esm2022/lib/message-box/public_api.mjs +0 -11
- package/esm2022/lib/message-box/workbench-message-box.component.mjs +0 -102
- package/esm2022/lib/message-box/workbench-message-box.options.mjs +0 -2
- package/esm2022/lib/message-box/workbench-message-box.service.mjs +0 -39
- package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +0 -45
- package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +0 -71
- package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +0 -126
- package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +0 -36
- package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +0 -84
- package/esm2022/lib/microfrontend-platform/manifest-object-cache.service.mjs +0 -63
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +0 -54
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +0 -85
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +0 -140
- package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +0 -133
- package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +0 -113
- package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +0 -43
- package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +0 -101
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +0 -35
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.mjs +0 -88
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.mjs +0 -32
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +0 -121
- package/esm2022/lib/microfrontend-platform/microfrontend-notification/microfrontend-notification-intent-handler.service.mjs +0 -45
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.mjs +0 -39
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.mjs +0 -120
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.mjs +0 -55
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.mjs +0 -19
- package/esm2022/lib/microfrontend-platform/microfrontend-platform-config-loader.mjs +0 -13
- package/esm2022/lib/microfrontend-platform/microfrontend-platform.config.mjs +0 -11
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +0 -31
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +0 -132
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +0 -115
- package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +0 -21
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +0 -112
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +0 -313
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-workbench-view.model.mjs +0 -23
- package/esm2022/lib/microfrontend-platform/public_api.mjs +0 -13
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +0 -31
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +0 -127
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +0 -125
- package/esm2022/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.mjs +0 -32
- package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +0 -191
- package/esm2022/lib/migration/workbench-migration.mjs +0 -11
- package/esm2022/lib/migration/workbench-migrator.mjs +0 -38
- package/esm2022/lib/notification/notification-css-classes.pipe.mjs +0 -24
- package/esm2022/lib/notification/notification-list.component.mjs +0 -51
- package/esm2022/lib/notification/notification.component.mjs +0 -109
- package/esm2022/lib/notification/notification.config.mjs +0 -11
- package/esm2022/lib/notification/notification.mjs +0 -19
- package/esm2022/lib/notification/notification.service.mjs +0 -134
- package/esm2022/lib/notification/public_api.mjs +0 -12
- package/esm2022/lib/notification/text-notification.component.mjs +0 -23
- package/esm2022/lib/notification//311/265notification.mjs +0 -42
- package/esm2022/lib/page-not-found/page-not-found.component.mjs +0 -26
- package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +0 -31
- package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +0 -77
- package/esm2022/lib/part/part-bar/part-bar.component.mjs +0 -444
- package/esm2022/lib/part/part-portal.pipe.mjs +0 -35
- package/esm2022/lib/part/part.component.mjs +0 -135
- package/esm2022/lib/part/public_api.mjs +0 -13
- package/esm2022/lib/part/view-context-menu/accelerator-format.pipe.mjs +0 -31
- package/esm2022/lib/part/view-context-menu/text.component.mjs +0 -38
- package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +0 -89
- package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +0 -76
- package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +0 -340
- package/esm2022/lib/part/view-list/view-list.component.mjs +0 -117
- package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +0 -82
- package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +0 -60
- package/esm2022/lib/part/view-tab/view-tab.component.mjs +0 -218
- package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +0 -29
- package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +0 -81
- package/esm2022/lib/part/workbench-part-action.registry.mjs +0 -23
- package/esm2022/lib/part/workbench-part.model.mjs +0 -19
- package/esm2022/lib/part/workbench-part.registry.mjs +0 -23
- package/esm2022/lib/part//311/265workbench-part.model.mjs +0 -146
- package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v1.model.mjs +0 -11
- package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v2.model.mjs +0 -11
- package/esm2022/lib/perspective/migration/workbench-perspective-migration-v2.service.mjs +0 -57
- package/esm2022/lib/perspective/public_api.mjs +0 -11
- package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +0 -39
- package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +0 -72
- package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +0 -50
- package/esm2022/lib/perspective/workbench-perspective.model.mjs +0 -2
- package/esm2022/lib/perspective/workbench-perspective.registry.mjs +0 -23
- package/esm2022/lib/perspective/workbench-perspective.service.mjs +0 -180
- package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +0 -62
- package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +0 -210
- package/esm2022/lib/popup/popup.component.mjs +0 -124
- package/esm2022/lib/popup/popup.config.mjs +0 -100
- package/esm2022/lib/popup/popup.origin.mjs +0 -11
- package/esm2022/lib/popup/popup.service.mjs +0 -339
- package/esm2022/lib/popup/public_api.mjs +0 -12
- package/esm2022/lib/portal/wb-component-portal.mjs +0 -130
- package/esm2022/lib/portal/workbench-portal-outlet.directive.mjs +0 -68
- package/esm2022/lib/public_api.mjs +0 -32
- package/esm2022/lib/registry/workbench-object-registry.mjs +0 -104
- package/esm2022/lib/routing/empty-outlet/empty-outlet.component.mjs +0 -31
- package/esm2022/lib/routing/public_api.mjs +0 -14
- package/esm2022/lib/routing/routing.model.mjs +0 -11
- package/esm2022/lib/routing/routing.util.mjs +0 -215
- package/esm2022/lib/routing/url-segment-matcher.mjs +0 -46
- package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +0 -110
- package/esm2022/lib/routing/workbench-dialog-differ.mjs +0 -51
- package/esm2022/lib/routing/workbench-layout-differ.mjs +0 -61
- package/esm2022/lib/routing/workbench-message-box-differ.mjs +0 -51
- package/esm2022/lib/routing/workbench-navigational-states.mjs +0 -33
- package/esm2022/lib/routing/workbench-popup-differ.mjs +0 -51
- package/esm2022/lib/routing/workbench-route-data.mjs +0 -39
- package/esm2022/lib/routing/workbench-route-guards.mjs +0 -57
- package/esm2022/lib/routing/workbench-router-link.directive.mjs +0 -124
- package/esm2022/lib/routing/workbench-router.service.mjs +0 -19
- package/esm2022/lib/routing/workbench-url-observer.service.mjs +0 -305
- package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +0 -58
- package/esm2022/lib/routing//311/265location.mjs +0 -70
- package/esm2022/lib/routing//311/265workbench-router.service.mjs +0 -359
- package/esm2022/lib/startup/public_api.mjs +0 -12
- package/esm2022/lib/startup/splash/splash.component.mjs +0 -24
- package/esm2022/lib/startup/workbench-initializer.mjs +0 -96
- package/esm2022/lib/startup/workbench-launcher.service.mjs +0 -173
- package/esm2022/lib/storage/public_api.mjs +0 -11
- package/esm2022/lib/storage/workbench-storage.mjs +0 -37
- package/esm2022/lib/testing/public_api.mjs +0 -12
- package/esm2022/lib/testing/workbench-testing.module.mjs +0 -49
- package/esm2022/lib/testing/workbench.provider.mjs +0 -60
- package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +0 -72
- package/esm2022/lib/view/public_api.mjs +0 -11
- package/esm2022/lib/view/view-context-provider.mjs +0 -31
- package/esm2022/lib/view/view-move-handler.service.mjs +0 -145
- package/esm2022/lib/view/view-portal.pipe.mjs +0 -33
- package/esm2022/lib/view/view.component.mjs +0 -128
- package/esm2022/lib/view/workbench-view.model.mjs +0 -12
- package/esm2022/lib/view/workbench-view.registry.mjs +0 -23
- package/esm2022/lib/view//311/265workbench-view.model.mjs +0 -375
- package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +0 -49
- package/esm2022/lib/view-dnd/requires-drop-zone.pipe.mjs +0 -58
- package/esm2022/lib/view-dnd/view-drag.service.mjs +0 -213
- package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +0 -89
- package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +0 -183
- package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +0 -224
- package/esm2022/lib/workbench-config.mjs +0 -15
- package/esm2022/lib/workbench-id.mjs +0 -21
- package/esm2022/lib/workbench.component.mjs +0 -146
- package/esm2022/lib/workbench.constants.mjs +0 -41
- package/esm2022/lib/workbench.model.mjs +0 -11
- package/esm2022/lib/workbench.module.mjs +0 -101
- package/esm2022/lib/workbench.provider.mjs +0 -111
- package/esm2022/lib/workbench.service.mjs +0 -29
- package/esm2022/lib//311/265workbench.service.mjs +0 -102
- package/esm2022/public-api.mjs +0 -14
- package/esm2022/scion-workbench.mjs +0 -5
- package/lib/common/animation-frame.observable.d.ts +0 -10
- package/lib/testing/public_api.d.ts +0 -2
- package/lib/testing/workbench-testing.module.d.ts +0 -40
- package/lib/testing/workbench.provider.d.ts +0 -31
- package/lib/workbench.module.d.ts +0 -65
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2018-2022 Swiss Federal Railways
|
|
3
|
-
*
|
|
4
|
-
* This program and the accompanying materials are made
|
|
5
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
-
*
|
|
8
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
-
*/
|
|
10
|
-
import { EnvironmentInjector, InjectionToken, runInInjectionContext } from '@angular/core';
|
|
11
|
-
/**
|
|
12
|
-
* The SCION Workbench defines a number of injection tokens (also called DI tokens) as hooks into the workbench's startup process.
|
|
13
|
-
* Hooks are called at defined points during startup, enabling the application's controlled initialization.
|
|
14
|
-
*
|
|
15
|
-
* Initializers registered under this DI token are injected and executed immediately when calling {@link WorkbenchLauncher#launch}.
|
|
16
|
-
* After all initializers associated with this DI token have completed, the workbench transitions into the "started" state.
|
|
17
|
-
*
|
|
18
|
-
* An initializer can be any object and is to be provided as a multi-provider. If the initializer is a function or instance of
|
|
19
|
-
* {@link WorkbenchInitializer} and returns a Promise, the workbench waits for the Promise to be resolved before proceeding with the startup.
|
|
20
|
-
* Initializers can call `inject` to get any required dependencies. Initializers associated with the same DI token may run in parallel.
|
|
21
|
-
*/
|
|
22
|
-
export const WORKBENCH_STARTUP = new InjectionToken('WORKBENCH_STARTUP');
|
|
23
|
-
/**
|
|
24
|
-
* The SCION Workbench defines a number of injection tokens (also called DI tokens) as hooks into the workbench's startup process.
|
|
25
|
-
* Hooks are called at defined points during startup, enabling the application's controlled initialization.
|
|
26
|
-
*
|
|
27
|
-
* Initializers registered under this DI token are injected and executed immediately when calling {@link WorkbenchLauncher#launch},
|
|
28
|
-
* but before running workbench initializers associated with the {@link WORKBENCH_STARTUP} injection token.
|
|
29
|
-
*
|
|
30
|
-
* An initializer can be any object and is to be provided as a multi-provider. If the initializer is a function or instance of
|
|
31
|
-
* {@link WorkbenchInitializer} and returns a Promise, the workbench waits for the Promise to be resolved before proceeding with the startup.
|
|
32
|
-
* Initializers can call `inject` to get any required dependencies. Initializers associated with the same DI token may run in parallel.
|
|
33
|
-
*/
|
|
34
|
-
export const WORKBENCH_PRE_STARTUP = new InjectionToken('WORKBENCH_PRE_STARTUP');
|
|
35
|
-
/**
|
|
36
|
-
* The SCION Workbench defines a number of injection tokens (also called DI tokens) as hooks into the workbench's startup process.
|
|
37
|
-
* Hooks are called at defined points during startup, enabling the application's controlled initialization.
|
|
38
|
-
*
|
|
39
|
-
* Initializers registered under this DI token are injected and executed before starting the SCION Microfrontend Platform.
|
|
40
|
-
* Typically, you would configure the SCION Microfrontend Platform in this lifecycle hook, for example, register interceptors or decorators.
|
|
41
|
-
*
|
|
42
|
-
* This lifecycle hook is only called if microfrontend support is enabled. Note that you cannot interact with the microfrontend platform
|
|
43
|
-
* in this lifecycle hook because it has not been started yet.
|
|
44
|
-
*
|
|
45
|
-
* An initializer can be any object and is to be provided as a multi-provider. If the initializer is a function or instance of
|
|
46
|
-
* {@link WorkbenchInitializer} and returns a Promise, the workbench waits for the Promise to be resolved before proceeding with the startup.
|
|
47
|
-
* Initializers can call `inject` to get any required dependencies. Initializers associated with the same DI token may run in parallel.
|
|
48
|
-
*/
|
|
49
|
-
export const MICROFRONTEND_PLATFORM_PRE_STARTUP = new InjectionToken('MICROFRONTEND_PLATFORM_PRE_STARTUP');
|
|
50
|
-
/**
|
|
51
|
-
* The SCION Workbench defines a number of injection tokens (also called DI tokens) as hooks into the workbench's startup process.
|
|
52
|
-
* Hooks are called at defined points during startup, enabling the application's controlled initialization.
|
|
53
|
-
*
|
|
54
|
-
* Initializers registered under this DI token are injected and executed after started the SCION Microfrontend Platform.
|
|
55
|
-
* At this point, the activators of the micro applications are not yet installed. Typically, you would install intent and message
|
|
56
|
-
* handlers in this lifecycle hook.
|
|
57
|
-
*
|
|
58
|
-
* This lifecycle hook is only called if microfrontend support is enabled.
|
|
59
|
-
*
|
|
60
|
-
* An initializer can be any object and is to be provided as a multi-provider. If the initializer is a function or instance of
|
|
61
|
-
* {@link WorkbenchInitializer} and returns a Promise, the workbench waits for the Promise to be resolved before proceeding with the startup.
|
|
62
|
-
* Initializers can call `inject` to get any required dependencies. Initializers associated with the same DI token may run in parallel.
|
|
63
|
-
*/
|
|
64
|
-
export const MICROFRONTEND_PLATFORM_POST_STARTUP = new InjectionToken('MICROFRONTEND_PLATFORM_POST_STARTUP');
|
|
65
|
-
/**
|
|
66
|
-
* The SCION Workbench defines a number of injection tokens (also called DI tokens) as hooks into the workbench's startup process.
|
|
67
|
-
* Hooks are called at defined points during startup, enabling the application's controlled initialization.
|
|
68
|
-
*
|
|
69
|
-
* Initializers registered under this DI token are injected and executed just before the {@link WorkbenchLauncher} completes the workbench
|
|
70
|
-
* startup, that is, after all initializers associated with the {@link WORKBENCH_STARTUP} DI token have completed initialization.
|
|
71
|
-
*
|
|
72
|
-
* An initializer can be any object and is to be provided as a multi-provider. If the initializer is a function or instance of
|
|
73
|
-
* {@link WorkbenchInitializer} and returns a Promise, the workbench waits for the Promise to be resolved before proceeding with the startup.
|
|
74
|
-
* Initializers can call `inject` to get any required dependencies. Initializers associated with the same DI token may run in parallel.
|
|
75
|
-
*/
|
|
76
|
-
export const WORKBENCH_POST_STARTUP = new InjectionToken('WORKBENCH_POST_STARTUP');
|
|
77
|
-
/**
|
|
78
|
-
* Runs workbench initializers associated with the given DI token. Initializer functions can call `inject` to get any required dependencies.
|
|
79
|
-
*/
|
|
80
|
-
export async function runWorkbenchInitializers(token, injector) {
|
|
81
|
-
const initializers = injector.get(token, undefined, { optional: true }); // eslint-disable-line @typescript-eslint/ban-types
|
|
82
|
-
if (!initializers?.length) {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
// Invoke and await initializer functions.
|
|
86
|
-
await Promise.all(initializers.reduce((acc, initializer) => {
|
|
87
|
-
if (typeof initializer === 'function') {
|
|
88
|
-
return acc.concat(runInInjectionContext(injector.get(EnvironmentInjector), initializer));
|
|
89
|
-
}
|
|
90
|
-
else if (typeof initializer?.init === 'function') {
|
|
91
|
-
return acc.concat(runInInjectionContext(injector.get(EnvironmentInjector), () => initializer.init()));
|
|
92
|
-
}
|
|
93
|
-
return acc;
|
|
94
|
-
}, new Array()));
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWluaXRpYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvc3RhcnR1cC93b3JrYmVuY2gtaW5pdGlhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsY0FBYyxFQUFZLHFCQUFxQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5HOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBK0QsbUJBQW1CLENBQUMsQ0FBQztBQUV2STs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQStELHVCQUF1QixDQUFDLENBQUM7QUFFL0k7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLElBQUksY0FBYyxDQUErRCxvQ0FBb0MsQ0FBQyxDQUFDO0FBRXpLOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyxJQUFJLGNBQWMsQ0FBK0QscUNBQXFDLENBQUMsQ0FBQztBQUUzSzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQStELHdCQUF3QixDQUFDLENBQUM7QUE0RGpKOztHQUVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSx3QkFBd0IsQ0FBQyxLQUEwQixFQUFFLFFBQWtCO0lBQzNGLE1BQU0sWUFBWSxHQUFvRSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLG1EQUFtRDtJQUMzTCxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE9BQU87SUFDVCxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUFFO1FBQ3pELElBQUksT0FBTyxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDdEMsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzNGLENBQUM7YUFDSSxJQUFJLE9BQU8sV0FBVyxFQUFFLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNqRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEcsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxFQUFFLElBQUksS0FBSyxFQUFvQixDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0Vudmlyb25tZW50SW5qZWN0b3IsIEluamVjdGlvblRva2VuLCBJbmplY3RvciwgcnVuSW5JbmplY3Rpb25Db250ZXh0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBUaGUgU0NJT04gV29ya2JlbmNoIGRlZmluZXMgYSBudW1iZXIgb2YgaW5qZWN0aW9uIHRva2VucyAoYWxzbyBjYWxsZWQgREkgdG9rZW5zKSBhcyBob29rcyBpbnRvIHRoZSB3b3JrYmVuY2gncyBzdGFydHVwIHByb2Nlc3MuXG4gKiBIb29rcyBhcmUgY2FsbGVkIGF0IGRlZmluZWQgcG9pbnRzIGR1cmluZyBzdGFydHVwLCBlbmFibGluZyB0aGUgYXBwbGljYXRpb24ncyBjb250cm9sbGVkIGluaXRpYWxpemF0aW9uLlxuICpcbiAqIEluaXRpYWxpemVycyByZWdpc3RlcmVkIHVuZGVyIHRoaXMgREkgdG9rZW4gYXJlIGluamVjdGVkIGFuZCBleGVjdXRlZCBpbW1lZGlhdGVseSB3aGVuIGNhbGxpbmcge0BsaW5rIFdvcmtiZW5jaExhdW5jaGVyI2xhdW5jaH0uXG4gKiBBZnRlciBhbGwgaW5pdGlhbGl6ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIERJIHRva2VuIGhhdmUgY29tcGxldGVkLCB0aGUgd29ya2JlbmNoIHRyYW5zaXRpb25zIGludG8gdGhlIFwic3RhcnRlZFwiIHN0YXRlLlxuICpcbiAqIEFuIGluaXRpYWxpemVyIGNhbiBiZSBhbnkgb2JqZWN0IGFuZCBpcyB0byBiZSBwcm92aWRlZCBhcyBhIG11bHRpLXByb3ZpZGVyLiBJZiB0aGUgaW5pdGlhbGl6ZXIgaXMgYSBmdW5jdGlvbiBvciBpbnN0YW5jZSBvZlxuICoge0BsaW5rIFdvcmtiZW5jaEluaXRpYWxpemVyfSBhbmQgcmV0dXJucyBhIFByb21pc2UsIHRoZSB3b3JrYmVuY2ggd2FpdHMgZm9yIHRoZSBQcm9taXNlIHRvIGJlIHJlc29sdmVkIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHN0YXJ0dXAuXG4gKiBJbml0aWFsaXplcnMgY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuIEluaXRpYWxpemVycyBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgREkgdG9rZW4gbWF5IHJ1biBpbiBwYXJhbGxlbC5cbiAqL1xuZXhwb3J0IGNvbnN0IFdPUktCRU5DSF9TVEFSVFVQID0gbmV3IEluamVjdGlvblRva2VuPFdvcmtiZW5jaEluaXRpYWxpemVyIHwgKCgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB8IG9iamVjdD4oJ1dPUktCRU5DSF9TVEFSVFVQJyk7XG5cbi8qKlxuICogVGhlIFNDSU9OIFdvcmtiZW5jaCBkZWZpbmVzIGEgbnVtYmVyIG9mIGluamVjdGlvbiB0b2tlbnMgKGFsc28gY2FsbGVkIERJIHRva2VucykgYXMgaG9va3MgaW50byB0aGUgd29ya2JlbmNoJ3Mgc3RhcnR1cCBwcm9jZXNzLlxuICogSG9va3MgYXJlIGNhbGxlZCBhdCBkZWZpbmVkIHBvaW50cyBkdXJpbmcgc3RhcnR1cCwgZW5hYmxpbmcgdGhlIGFwcGxpY2F0aW9uJ3MgY29udHJvbGxlZCBpbml0aWFsaXphdGlvbi5cbiAqXG4gKiBJbml0aWFsaXplcnMgcmVnaXN0ZXJlZCB1bmRlciB0aGlzIERJIHRva2VuIGFyZSBpbmplY3RlZCBhbmQgZXhlY3V0ZWQgaW1tZWRpYXRlbHkgd2hlbiBjYWxsaW5nIHtAbGluayBXb3JrYmVuY2hMYXVuY2hlciNsYXVuY2h9LFxuICogYnV0IGJlZm9yZSBydW5uaW5nIHdvcmtiZW5jaCBpbml0aWFsaXplcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSB7QGxpbmsgV09SS0JFTkNIX1NUQVJUVVB9IGluamVjdGlvbiB0b2tlbi5cbiAqXG4gKiBBbiBpbml0aWFsaXplciBjYW4gYmUgYW55IG9iamVjdCBhbmQgaXMgdG8gYmUgcHJvdmlkZWQgYXMgYSBtdWx0aS1wcm92aWRlci4gSWYgdGhlIGluaXRpYWxpemVyIGlzIGEgZnVuY3Rpb24gb3IgaW5zdGFuY2Ugb2ZcbiAqIHtAbGluayBXb3JrYmVuY2hJbml0aWFsaXplcn0gYW5kIHJldHVybnMgYSBQcm9taXNlLCB0aGUgd29ya2JlbmNoIHdhaXRzIGZvciB0aGUgUHJvbWlzZSB0byBiZSByZXNvbHZlZCBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBzdGFydHVwLlxuICogSW5pdGlhbGl6ZXJzIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLiBJbml0aWFsaXplcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIERJIHRva2VuIG1heSBydW4gaW4gcGFyYWxsZWwuXG4gKi9cbmV4cG9ydCBjb25zdCBXT1JLQkVOQ0hfUFJFX1NUQVJUVVAgPSBuZXcgSW5qZWN0aW9uVG9rZW48V29ya2JlbmNoSW5pdGlhbGl6ZXIgfCAoKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHwgb2JqZWN0PignV09SS0JFTkNIX1BSRV9TVEFSVFVQJyk7XG5cbi8qKlxuICogVGhlIFNDSU9OIFdvcmtiZW5jaCBkZWZpbmVzIGEgbnVtYmVyIG9mIGluamVjdGlvbiB0b2tlbnMgKGFsc28gY2FsbGVkIERJIHRva2VucykgYXMgaG9va3MgaW50byB0aGUgd29ya2JlbmNoJ3Mgc3RhcnR1cCBwcm9jZXNzLlxuICogSG9va3MgYXJlIGNhbGxlZCBhdCBkZWZpbmVkIHBvaW50cyBkdXJpbmcgc3RhcnR1cCwgZW5hYmxpbmcgdGhlIGFwcGxpY2F0aW9uJ3MgY29udHJvbGxlZCBpbml0aWFsaXphdGlvbi5cbiAqXG4gKiBJbml0aWFsaXplcnMgcmVnaXN0ZXJlZCB1bmRlciB0aGlzIERJIHRva2VuIGFyZSBpbmplY3RlZCBhbmQgZXhlY3V0ZWQgYmVmb3JlIHN0YXJ0aW5nIHRoZSBTQ0lPTiBNaWNyb2Zyb250ZW5kIFBsYXRmb3JtLlxuICogVHlwaWNhbGx5LCB5b3Ugd291bGQgY29uZmlndXJlIHRoZSBTQ0lPTiBNaWNyb2Zyb250ZW5kIFBsYXRmb3JtIGluIHRoaXMgbGlmZWN5Y2xlIGhvb2ssIGZvciBleGFtcGxlLCByZWdpc3RlciBpbnRlcmNlcHRvcnMgb3IgZGVjb3JhdG9ycy5cbiAqXG4gKiBUaGlzIGxpZmVjeWNsZSBob29rIGlzIG9ubHkgY2FsbGVkIGlmIG1pY3JvZnJvbnRlbmQgc3VwcG9ydCBpcyBlbmFibGVkLiBOb3RlIHRoYXQgeW91IGNhbm5vdCBpbnRlcmFjdCB3aXRoIHRoZSBtaWNyb2Zyb250ZW5kIHBsYXRmb3JtXG4gKiBpbiB0aGlzIGxpZmVjeWNsZSBob29rIGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0LlxuICpcbiAqIEFuIGluaXRpYWxpemVyIGNhbiBiZSBhbnkgb2JqZWN0IGFuZCBpcyB0byBiZSBwcm92aWRlZCBhcyBhIG11bHRpLXByb3ZpZGVyLiBJZiB0aGUgaW5pdGlhbGl6ZXIgaXMgYSBmdW5jdGlvbiBvciBpbnN0YW5jZSBvZlxuICoge0BsaW5rIFdvcmtiZW5jaEluaXRpYWxpemVyfSBhbmQgcmV0dXJucyBhIFByb21pc2UsIHRoZSB3b3JrYmVuY2ggd2FpdHMgZm9yIHRoZSBQcm9taXNlIHRvIGJlIHJlc29sdmVkIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHN0YXJ0dXAuXG4gKiBJbml0aWFsaXplcnMgY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuIEluaXRpYWxpemVycyBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgREkgdG9rZW4gbWF5IHJ1biBpbiBwYXJhbGxlbC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1JQ1JPRlJPTlRFTkRfUExBVEZPUk1fUFJFX1NUQVJUVVAgPSBuZXcgSW5qZWN0aW9uVG9rZW48V29ya2JlbmNoSW5pdGlhbGl6ZXIgfCAoKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHwgb2JqZWN0PignTUlDUk9GUk9OVEVORF9QTEFURk9STV9QUkVfU1RBUlRVUCcpO1xuXG4vKipcbiAqIFRoZSBTQ0lPTiBXb3JrYmVuY2ggZGVmaW5lcyBhIG51bWJlciBvZiBpbmplY3Rpb24gdG9rZW5zIChhbHNvIGNhbGxlZCBESSB0b2tlbnMpIGFzIGhvb2tzIGludG8gdGhlIHdvcmtiZW5jaCdzIHN0YXJ0dXAgcHJvY2Vzcy5cbiAqIEhvb2tzIGFyZSBjYWxsZWQgYXQgZGVmaW5lZCBwb2ludHMgZHVyaW5nIHN0YXJ0dXAsIGVuYWJsaW5nIHRoZSBhcHBsaWNhdGlvbidzIGNvbnRyb2xsZWQgaW5pdGlhbGl6YXRpb24uXG4gKlxuICogSW5pdGlhbGl6ZXJzIHJlZ2lzdGVyZWQgdW5kZXIgdGhpcyBESSB0b2tlbiBhcmUgaW5qZWN0ZWQgYW5kIGV4ZWN1dGVkIGFmdGVyIHN0YXJ0ZWQgdGhlIFNDSU9OIE1pY3JvZnJvbnRlbmQgUGxhdGZvcm0uXG4gKiBBdCB0aGlzIHBvaW50LCB0aGUgYWN0aXZhdG9ycyBvZiB0aGUgbWljcm8gYXBwbGljYXRpb25zIGFyZSBub3QgeWV0IGluc3RhbGxlZC4gVHlwaWNhbGx5LCB5b3Ugd291bGQgaW5zdGFsbCBpbnRlbnQgYW5kIG1lc3NhZ2VcbiAqIGhhbmRsZXJzIGluIHRoaXMgbGlmZWN5Y2xlIGhvb2suXG4gKlxuICogVGhpcyBsaWZlY3ljbGUgaG9vayBpcyBvbmx5IGNhbGxlZCBpZiBtaWNyb2Zyb250ZW5kIHN1cHBvcnQgaXMgZW5hYmxlZC5cbiAqXG4gKiBBbiBpbml0aWFsaXplciBjYW4gYmUgYW55IG9iamVjdCBhbmQgaXMgdG8gYmUgcHJvdmlkZWQgYXMgYSBtdWx0aS1wcm92aWRlci4gSWYgdGhlIGluaXRpYWxpemVyIGlzIGEgZnVuY3Rpb24gb3IgaW5zdGFuY2Ugb2ZcbiAqIHtAbGluayBXb3JrYmVuY2hJbml0aWFsaXplcn0gYW5kIHJldHVybnMgYSBQcm9taXNlLCB0aGUgd29ya2JlbmNoIHdhaXRzIGZvciB0aGUgUHJvbWlzZSB0byBiZSByZXNvbHZlZCBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBzdGFydHVwLlxuICogSW5pdGlhbGl6ZXJzIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLiBJbml0aWFsaXplcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIERJIHRva2VuIG1heSBydW4gaW4gcGFyYWxsZWwuXG4gKi9cbmV4cG9ydCBjb25zdCBNSUNST0ZST05URU5EX1BMQVRGT1JNX1BPU1RfU1RBUlRVUCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxXb3JrYmVuY2hJbml0aWFsaXplciB8ICgoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikgfCBvYmplY3Q+KCdNSUNST0ZST05URU5EX1BMQVRGT1JNX1BPU1RfU1RBUlRVUCcpO1xuXG4vKipcbiAqIFRoZSBTQ0lPTiBXb3JrYmVuY2ggZGVmaW5lcyBhIG51bWJlciBvZiBpbmplY3Rpb24gdG9rZW5zIChhbHNvIGNhbGxlZCBESSB0b2tlbnMpIGFzIGhvb2tzIGludG8gdGhlIHdvcmtiZW5jaCdzIHN0YXJ0dXAgcHJvY2Vzcy5cbiAqIEhvb2tzIGFyZSBjYWxsZWQgYXQgZGVmaW5lZCBwb2ludHMgZHVyaW5nIHN0YXJ0dXAsIGVuYWJsaW5nIHRoZSBhcHBsaWNhdGlvbidzIGNvbnRyb2xsZWQgaW5pdGlhbGl6YXRpb24uXG4gKlxuICogSW5pdGlhbGl6ZXJzIHJlZ2lzdGVyZWQgdW5kZXIgdGhpcyBESSB0b2tlbiBhcmUgaW5qZWN0ZWQgYW5kIGV4ZWN1dGVkIGp1c3QgYmVmb3JlIHRoZSB7QGxpbmsgV29ya2JlbmNoTGF1bmNoZXJ9IGNvbXBsZXRlcyB0aGUgd29ya2JlbmNoXG4gKiBzdGFydHVwLCB0aGF0IGlzLCBhZnRlciBhbGwgaW5pdGlhbGl6ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGUge0BsaW5rIFdPUktCRU5DSF9TVEFSVFVQfSBESSB0b2tlbiBoYXZlIGNvbXBsZXRlZCBpbml0aWFsaXphdGlvbi5cbiAqXG4gKiBBbiBpbml0aWFsaXplciBjYW4gYmUgYW55IG9iamVjdCBhbmQgaXMgdG8gYmUgcHJvdmlkZWQgYXMgYSBtdWx0aS1wcm92aWRlci4gSWYgdGhlIGluaXRpYWxpemVyIGlzIGEgZnVuY3Rpb24gb3IgaW5zdGFuY2Ugb2ZcbiAqIHtAbGluayBXb3JrYmVuY2hJbml0aWFsaXplcn0gYW5kIHJldHVybnMgYSBQcm9taXNlLCB0aGUgd29ya2JlbmNoIHdhaXRzIGZvciB0aGUgUHJvbWlzZSB0byBiZSByZXNvbHZlZCBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBzdGFydHVwLlxuICogSW5pdGlhbGl6ZXJzIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLiBJbml0aWFsaXplcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIERJIHRva2VuIG1heSBydW4gaW4gcGFyYWxsZWwuXG4gKi9cbmV4cG9ydCBjb25zdCBXT1JLQkVOQ0hfUE9TVF9TVEFSVFVQID0gbmV3IEluamVjdGlvblRva2VuPFdvcmtiZW5jaEluaXRpYWxpemVyIHwgKCgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB8IG9iamVjdD4oJ1dPUktCRU5DSF9QT1NUX1NUQVJUVVAnKTtcblxuLyoqXG4gKiBBbGxvd3MgaW5pdGlhbGl6aW5nIHRoZSBhcHBsaWNhdGlvbiBkdXJpbmcgd29ya2JlbmNoIHN0YXJ0dXAuXG4gKlxuICogVGhlIFNDSU9OIFdvcmtiZW5jaCBkZWZpbmVzIGEgbnVtYmVyIG9mIGluamVjdGlvbiB0b2tlbnMgKGFsc28gY2FsbGVkIERJIHRva2VucykgYXMgaG9va3MgaW50byB0aGUgd29ya2JlbmNoJ3Mgc3RhcnR1cCBwcm9jZXNzLlxuICogSG9va3MgYXJlIGNhbGxlZCBhdCBkZWZpbmVkIHBvaW50cyBkdXJpbmcgc3RhcnR1cCwgZW5hYmxpbmcgdGhlIGFwcGxpY2F0aW9uJ3MgY29udHJvbGxlZCBpbml0aWFsaXphdGlvbi5cbiAqXG4gKiBUaGUgYXBwbGljYXRpb24gY2FuIGFzc29jaWF0ZSBvbmUgb3IgbW9yZSBpbml0aWFsaXplcnMgd2l0aCBhbnkgb2YgdGhlc2UgREkgdG9rZW5zLiBBbiBpbml0aWFsaXplciBjYW4gYmUgYW55IG9iamVjdCBhbmQgaXMgdG8gYmVcbiAqIHByb3ZpZGVkIGFzIGEgbXVsdGktcHJvdmlkZXIuIElmIHRoZSBpbml0aWFsaXplciBpcyBhIGZ1bmN0aW9uIG9yIGluc3RhbmNlIG9mIHtAbGluayBXb3JrYmVuY2hJbml0aWFsaXplcn0sIHdoaWNoIGRlZmluZXMgYSBzaW5nbGVcbiAqIG1ldGhvZCwgYGluaXRgLCB0aGUgd29ya2JlbmNoIHdhaXRzIGZvciBpdHMgcmV0dXJuZWQgUHJvbWlzZSB0byByZXNvbHZlIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHN0YXJ0dXAuIEluaXRpYWxpemVycyBjYW4gY2FsbFxuICogYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuIEluaXRpYWxpemVycyBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgREkgdG9rZW4gbWF5IHJ1biBpbiBwYXJhbGxlbC5cbiAqXG4gKiBGb2xsb3dpbmcgREkgdG9rZW5zIGFyZSBhdmFpbGFibGUgYXMgaG9va3MgaW50byB0aGUgd29ya2JlbmNoJ3Mgc3RhcnR1cCBwcm9jZXNzLCBsaXN0ZWQgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlIGluamVjdGVkIGFuZFxuICogZXhlY3V0ZWQuXG4gKlxuICogLSB7QGxpbmsgV09SS0JFTkNIX1BSRV9TVEFSVFVQfVxuICogLSB7QGxpbmsgV09SS0JFTkNIX1NUQVJUVVB9XG4gKiAtIHtAbGluayBXT1JLQkVOQ0hfUE9TVF9TVEFSVFVQfVxuICogLSB7QGxpbmsgTUlDUk9GUk9OVEVORF9QTEFURk9STV9QUkVfU1RBUlRVUH1cbiAqIC0ge0BsaW5rIE1JQ1JPRlJPTlRFTkRfUExBVEZPUk1fUE9TVF9TVEFSVFVQfVxuICpcbiAqICMjIyBFeGFtcGxlIG9mIGhvdyB0byBhc3NvY2lhdGUgYW4gaW5pdGlhbGl6ZXIgd2l0aCB0aGUgREkgdG9rZW4ge0BsaW5rIE1JQ1JPRlJPTlRFTkRfUExBVEZPUk1fUE9TVF9TVEFSVFVQfS5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBATmdNb2R1bGUoe1xuICogICAuLi5cbiAqICAgcHJvdmlkZXJzOiBbXG4gKiAgICAge1xuICogICAgICAgcHJvdmlkZTogTUlDUk9GUk9OVEVORF9QTEFURk9STV9QT1NUX1NUQVJUVVAsXG4gKiAgICAgICBtdWx0aTogdHJ1ZSxcbiAqICAgICAgIHVzZUNsYXNzOiBBcHBJbml0aWFsaXplcixcbiAqICAgICB9XG4gKiAgIF1cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4gKlxuICogQEluamVjdGFibGUoKVxuICogZXhwb3J0IGNsYXNzIEFwcEluaXRpYWxpemVyIGltcGxlbWVudHMgV29ya2JlbmNoSW5pdGlhbGl6ZXIge1xuICpcbiAqICAgcHVibGljIGluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gKiAgICAgLi4uXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtiZW5jaEluaXRpYWxpemVyIHtcblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGR1cmluZyB0aGUgc3RhcnR1cCBvZiB0aGUgd29ya2JlbmNoLlxuICAgKlxuICAgKiBGb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgd2hlbiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQsIHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAqIG9mIHRoZSBESSB0b2tlbiB1bmRlciB3aGljaCB0aGlzIGluaXRpYWxpemVyIGlzIHJlZ2lzdGVyZWQuIE5vdGUgdGhhdCBpbml0aWFsaXplcnNcbiAgICogcmVnaXN0ZXJlZCB1bmRlciB0aGUgc2FtZSBESSB0b2tlbiBtYXkgZXhlY3V0ZSBpbiBwYXJhbGxlbC5cbiAgICpcbiAgICogQHJldHVybiBBIFByb21pc2UgYmxvY2tpbmcgc3RhcnR1cCB1bnRpbCBpdCByZXNvbHZlcy5cbiAgICovXG4gIGluaXQoKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBSdW5zIHdvcmtiZW5jaCBpbml0aWFsaXplcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBESSB0b2tlbi4gSW5pdGlhbGl6ZXIgZnVuY3Rpb25zIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV29ya2JlbmNoSW5pdGlhbGl6ZXJzKHRva2VuOiBJbmplY3Rpb25Ub2tlbjxhbnk+LCBpbmplY3RvcjogSW5qZWN0b3IpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgaW5pdGlhbGl6ZXJzOiBBcnJheTxXb3JrYmVuY2hJbml0aWFsaXplciB8IEZ1bmN0aW9uIHwgdW5kZWZpbmVkIHwgYW55PiB8IG51bGwgPSBpbmplY3Rvci5nZXQodG9rZW4sIHVuZGVmaW5lZCwge29wdGlvbmFsOiB0cnVlfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICBpZiAoIWluaXRpYWxpemVycz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gSW52b2tlIGFuZCBhd2FpdCBpbml0aWFsaXplciBmdW5jdGlvbnMuXG4gIGF3YWl0IFByb21pc2UuYWxsKGluaXRpYWxpemVycy5yZWR1Y2UoKGFjYywgaW5pdGlhbGl6ZXIpID0+IHtcbiAgICBpZiAodHlwZW9mIGluaXRpYWxpemVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gYWNjLmNvbmNhdChydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IuZ2V0KEVudmlyb25tZW50SW5qZWN0b3IpLCBpbml0aWFsaXplcikpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgaW5pdGlhbGl6ZXI/LmluaXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBhY2MuY29uY2F0KHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3Rvci5nZXQoRW52aXJvbm1lbnRJbmplY3RvciksICgpID0+IGluaXRpYWxpemVyLmluaXQoKSkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBuZXcgQXJyYXk8UHJvbWlzZTx1bmtub3duPj4oKSkpO1xufVxuIl19
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2018-2022 Swiss Federal Railways
|
|
3
|
-
*
|
|
4
|
-
* This program and the accompanying materials are made
|
|
5
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
-
*
|
|
8
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
-
*/
|
|
10
|
-
import { WorkbenchConfig } from '../workbench-config';
|
|
11
|
-
import { APP_INITIALIZER, ApplicationInitStatus, assertNotInReactiveContext, inject, Injectable, makeEnvironmentProviders, NgZone, signal } from '@angular/core';
|
|
12
|
-
import { runWorkbenchInitializers, WORKBENCH_POST_STARTUP, WORKBENCH_PRE_STARTUP, WORKBENCH_STARTUP } from './workbench-initializer';
|
|
13
|
-
import { LoggerNames } from '../logging';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "../logging";
|
|
16
|
-
/**
|
|
17
|
-
* Provides API to launch the SCION Workbench.
|
|
18
|
-
*
|
|
19
|
-
* During workbench startup, the launcher runs registered workbench initializers and waits for them to complete.
|
|
20
|
-
* Workbench initializers may execute in parallel. To register a workbench initializer, provide a class implementing
|
|
21
|
-
* {@link WorkbenchInitializer} as a multi-provider using the DI class token {@link WorkbenchInitializer}.
|
|
22
|
-
*
|
|
23
|
-
* The SCION Workbench supports the following launchers:
|
|
24
|
-
*
|
|
25
|
-
* - **APP_INITIALIZER**
|
|
26
|
-
* Launches the workbench in an Angular `APP_INITIALIZER`, which is before bootstrapping the app component.
|
|
27
|
-
*
|
|
28
|
-
* - **LAZY** (which is the default)
|
|
29
|
-
* Launches the workbench at the latest when bootstrapping the workbench root component `<wb-workbench>`.
|
|
30
|
-
*
|
|
31
|
-
* With this strategy, you are flexible when to start the workbench. You can start the workbench explicitly by
|
|
32
|
-
* calling {@link WorkbenchLauncher#launch}, e.g., to launch the workbench from a route guard or app initializer,
|
|
33
|
-
* or start it automatically when adding the workbench root component `<wb-workbench>` to the Angular component
|
|
34
|
-
* tree.
|
|
35
|
-
*
|
|
36
|
-
* The workbench component displays a startup splash until completed startup. You can configure a custom splash in
|
|
37
|
-
* {@link WorkbenchConfig#startup#splash}. When launching the workbench in an Angular `APP_INITIALIZER`, no splash will
|
|
38
|
-
* display since the workbench will start upfront.
|
|
39
|
-
*/
|
|
40
|
-
export class WorkbenchLauncher {
|
|
41
|
-
constructor(_startup, _logger, _zone, _injector) {
|
|
42
|
-
this._startup = _startup;
|
|
43
|
-
this._logger = _logger;
|
|
44
|
-
this._zone = _zone;
|
|
45
|
-
this._injector = _injector;
|
|
46
|
-
this._state = StartupState.Stopped;
|
|
47
|
-
const workbenchConfig = inject(WorkbenchConfig, { optional: true });
|
|
48
|
-
if (!workbenchConfig) {
|
|
49
|
-
throw Error(`[WorkbenchError] Missing required workbench providers. Did you forget to call 'provideWorkbench()' in the providers array of 'bootstrapApplication' or the root 'NgModule'?`);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Launches the SCION Workbench.
|
|
54
|
-
*
|
|
55
|
-
* This method represents the initial entry point that should be called to launch the workbench. The launcher runs
|
|
56
|
-
* registered workbench initializers and waits for them to complete. Calling this method has no effect if the workbench
|
|
57
|
-
* is already starting or has started.
|
|
58
|
-
*
|
|
59
|
-
* ### Splash
|
|
60
|
-
* When mounting the workbench root component `<wb-workbench>` to the DOM before the workbench startup has finished,
|
|
61
|
-
* the workbench will display a startup splash until completed startup.
|
|
62
|
-
*
|
|
63
|
-
* ### Startup Lifecycle Hooks
|
|
64
|
-
* The SCION Workbench defines a number of injection tokens (also called DI tokens) as hooks into the workbench's startup process.
|
|
65
|
-
* Hooks are called at defined points during startup, enabling the application's controlled initialization.
|
|
66
|
-
*
|
|
67
|
-
* The application can associate one or more initializers with any of these DI tokens. An initializer can be any object and is to
|
|
68
|
-
* be provided as a multi-provider. If the initializer is a function or instance of {@link WorkbenchInitializer} and returns a Promise,
|
|
69
|
-
* the workbench waits for the Promise to be resolved before proceeding with the startup. Initializers can call `inject` to get any
|
|
70
|
-
* required dependencies. Initializers associated with the same DI token may run in parallel.
|
|
71
|
-
*
|
|
72
|
-
* Following DI tokens are available as hooks into the workbench's startup process, listed in the order in which they are injected and
|
|
73
|
-
* executed.
|
|
74
|
-
*
|
|
75
|
-
* - {@link WORKBENCH_PRE_STARTUP}
|
|
76
|
-
* - {@link WORKBENCH_STARTUP}
|
|
77
|
-
* - {@link MICROFRONTEND_PLATFORM_PRE_STARTUP}
|
|
78
|
-
* - {@link MICROFRONTEND_PLATFORM_POST_STARTUP}
|
|
79
|
-
* - {@link WORKBENCH_POST_STARTUP}
|
|
80
|
-
*
|
|
81
|
-
* ### Example of how to hook into the startup process.
|
|
82
|
-
*
|
|
83
|
-
* ```ts
|
|
84
|
-
* {
|
|
85
|
-
* provide: WORKBENCH_STARTUP,
|
|
86
|
-
* multi: true,
|
|
87
|
-
* useValue: () => inject(Initializer).init(),
|
|
88
|
-
* }
|
|
89
|
-
* ```
|
|
90
|
-
*
|
|
91
|
-
* @return A Promise that resolves when the workbench has completed the startup or that rejects if the startup failed.
|
|
92
|
-
*/
|
|
93
|
-
async launch() {
|
|
94
|
-
assertNotInReactiveContext(this.launch, 'Call WorkbenchLauncher.launch() in a non-reactive (non-tracking) context, such as within the untracked() function.');
|
|
95
|
-
// Ensure to run in the Angular zone to check the workbench for changes even if called from outside the Angular zone, e.g. in unit tests.
|
|
96
|
-
if (!NgZone.isInAngularZone()) {
|
|
97
|
-
return this._zone.run(() => this.launch());
|
|
98
|
-
}
|
|
99
|
-
switch (this._state) {
|
|
100
|
-
case StartupState.Stopped: {
|
|
101
|
-
this._logger.debug(() => `Starting Workbench. Waiting for workbench initializers to complete. [launcher=${this._injector.get(ApplicationInitStatus).done ? 'LAZY' : 'APP_INITIALIZER'}]`, LoggerNames.LIFECYCLE);
|
|
102
|
-
this._state = StartupState.Starting;
|
|
103
|
-
await runWorkbenchInitializers(WORKBENCH_PRE_STARTUP, this._injector);
|
|
104
|
-
await runWorkbenchInitializers(WORKBENCH_STARTUP, this._injector);
|
|
105
|
-
this._state = StartupState.Started;
|
|
106
|
-
await runWorkbenchInitializers(WORKBENCH_POST_STARTUP, this._injector);
|
|
107
|
-
this._logger.debug(() => 'Workbench started.', LoggerNames.LIFECYCLE);
|
|
108
|
-
this._startup.notifyStarted();
|
|
109
|
-
return this._startup.whenStarted;
|
|
110
|
-
}
|
|
111
|
-
case StartupState.Starting:
|
|
112
|
-
case StartupState.Started: {
|
|
113
|
-
return this._startup.whenStarted;
|
|
114
|
-
}
|
|
115
|
-
default: {
|
|
116
|
-
throw Error(`[WorkbenchStartupError] Illegal startup state: ${this._state}`);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLauncher, deps: [{ token: WorkbenchStartup }, { token: i1.Logger }, { token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
121
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLauncher, providedIn: 'root' }); }
|
|
122
|
-
}
|
|
123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLauncher, decorators: [{
|
|
124
|
-
type: Injectable,
|
|
125
|
-
args: [{ providedIn: 'root' }]
|
|
126
|
-
}], ctorParameters: () => [{ type: WorkbenchStartup }, { type: i1.Logger }, { type: i0.NgZone }, { type: i0.Injector }] });
|
|
127
|
-
var StartupState;
|
|
128
|
-
(function (StartupState) {
|
|
129
|
-
StartupState[StartupState["Stopped"] = 0] = "Stopped";
|
|
130
|
-
StartupState[StartupState["Starting"] = 1] = "Starting";
|
|
131
|
-
StartupState[StartupState["Started"] = 2] = "Started";
|
|
132
|
-
})(StartupState || (StartupState = {}));
|
|
133
|
-
/**
|
|
134
|
-
* Allows waiting for the workbench startup to complete.
|
|
135
|
-
*/
|
|
136
|
-
export class WorkbenchStartup {
|
|
137
|
-
constructor() {
|
|
138
|
-
/**
|
|
139
|
-
* Signals when the workbench completed startup.
|
|
140
|
-
*/
|
|
141
|
-
this.isStarted = signal(false);
|
|
142
|
-
/**
|
|
143
|
-
* Promise that resolves when the workbench has completed the startup.
|
|
144
|
-
*/
|
|
145
|
-
this.whenStarted = new Promise(resolve => this.notifyStarted = () => {
|
|
146
|
-
this.isStarted.set(true);
|
|
147
|
-
resolve(true);
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchStartup, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
151
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchStartup, providedIn: 'root' }); }
|
|
152
|
-
}
|
|
153
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchStartup, decorators: [{
|
|
154
|
-
type: Injectable,
|
|
155
|
-
args: [{ providedIn: 'root' }]
|
|
156
|
-
}] });
|
|
157
|
-
/**
|
|
158
|
-
* Provides a set of DI providers for launching the workbench.
|
|
159
|
-
*/
|
|
160
|
-
export function provideWorkbenchLauncher(workbenchConfig) {
|
|
161
|
-
if (workbenchConfig.startup?.launcher !== 'APP_INITIALIZER') {
|
|
162
|
-
return [];
|
|
163
|
-
}
|
|
164
|
-
return makeEnvironmentProviders([{
|
|
165
|
-
provide: APP_INITIALIZER,
|
|
166
|
-
useFactory: () => {
|
|
167
|
-
const launcher = inject(WorkbenchLauncher);
|
|
168
|
-
return () => launcher.launch();
|
|
169
|
-
},
|
|
170
|
-
multi: true,
|
|
171
|
-
}]);
|
|
172
|
-
}
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWxhdW5jaGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9zdGFydHVwL3dvcmtiZW5jaC1sYXVuY2hlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxlQUFlLEVBQUUscUJBQXFCLEVBQUUsMEJBQTBCLEVBQXdCLE1BQU0sRUFBRSxVQUFVLEVBQVksd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvTCxPQUFPLEVBQUMsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNuSSxPQUFPLEVBQVMsV0FBVyxFQUFDLE1BQU0sWUFBWSxDQUFDOzs7QUFFL0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUFvQixRQUEwQixFQUMxQixPQUFlLEVBQ2YsS0FBYSxFQUNiLFNBQW1CO1FBSG5CLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUwvQixXQUFNLEdBQWlCLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFNbEQsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixNQUFNLEtBQUssQ0FBQyw2S0FBNkssQ0FBQyxDQUFDO1FBQzdMLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Q0c7SUFDSSxLQUFLLENBQUMsTUFBTTtRQUNqQiwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLG9IQUFvSCxDQUFDLENBQUM7UUFFOUoseUlBQXlJO1FBQ3pJLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixLQUFLLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpRkFBaUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2pOLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDcEMsTUFBTSx3QkFBd0IsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3RFLE1BQU0sd0JBQXdCLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7Z0JBQ25DLE1BQU0sd0JBQXdCLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN2RSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDbkMsQ0FBQztZQUNELEtBQUssWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUMzQixLQUFLLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1lBQ25DLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNSLE1BQU0sS0FBSyxDQUFDLGtEQUFrRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUMvRSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7OEdBbkZVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREwsTUFBTTs7MkZBQ2xCLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBdUZoQyxJQUFLLFlBRUo7QUFGRCxXQUFLLFlBQVk7SUFDZixxREFBTyxDQUFBO0lBQUUsdURBQVEsQ0FBQTtJQUFFLHFEQUFPLENBQUE7QUFDNUIsQ0FBQyxFQUZJLFlBQVksS0FBWixZQUFZLFFBRWhCO0FBRUQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBR0U7O1dBRUc7UUFDYSxjQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSzFDOztXQUVHO1FBQ2EsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBTyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFO1lBQ25GLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztLQUNKOzhHQWpCWSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQURKLE1BQU07OzJGQUNsQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOztBQW9CaEM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsZUFBZ0M7SUFDdkUsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLFFBQVEsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO1FBQzVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE9BQU8sd0JBQXdCLENBQUMsQ0FBQztZQUMvQixPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsR0FBRyxFQUFFO2dCQUNmLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7V29ya2JlbmNoQ29uZmlnfSBmcm9tICcuLi93b3JrYmVuY2gtY29uZmlnJztcbmltcG9ydCB7QVBQX0lOSVRJQUxJWkVSLCBBcHBsaWNhdGlvbkluaXRTdGF0dXMsIGFzc2VydE5vdEluUmVhY3RpdmVDb250ZXh0LCBFbnZpcm9ubWVudFByb3ZpZGVycywgaW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzLCBOZ1pvbmUsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3J1bldvcmtiZW5jaEluaXRpYWxpemVycywgV09SS0JFTkNIX1BPU1RfU1RBUlRVUCwgV09SS0JFTkNIX1BSRV9TVEFSVFVQLCBXT1JLQkVOQ0hfU1RBUlRVUH0gZnJvbSAnLi93b3JrYmVuY2gtaW5pdGlhbGl6ZXInO1xuaW1wb3J0IHtMb2dnZXIsIExvZ2dlck5hbWVzfSBmcm9tICcuLi9sb2dnaW5nJztcblxuLyoqXG4gKiBQcm92aWRlcyBBUEkgdG8gbGF1bmNoIHRoZSBTQ0lPTiBXb3JrYmVuY2guXG4gKlxuICogRHVyaW5nIHdvcmtiZW5jaCBzdGFydHVwLCB0aGUgbGF1bmNoZXIgcnVucyByZWdpc3RlcmVkIHdvcmtiZW5jaCBpbml0aWFsaXplcnMgYW5kIHdhaXRzIGZvciB0aGVtIHRvIGNvbXBsZXRlLlxuICogV29ya2JlbmNoIGluaXRpYWxpemVycyBtYXkgZXhlY3V0ZSBpbiBwYXJhbGxlbC4gVG8gcmVnaXN0ZXIgYSB3b3JrYmVuY2ggaW5pdGlhbGl6ZXIsIHByb3ZpZGUgYSBjbGFzcyBpbXBsZW1lbnRpbmdcbiAqIHtAbGluayBXb3JrYmVuY2hJbml0aWFsaXplcn0gYXMgYSBtdWx0aS1wcm92aWRlciB1c2luZyB0aGUgREkgY2xhc3MgdG9rZW4ge0BsaW5rIFdvcmtiZW5jaEluaXRpYWxpemVyfS5cbiAqXG4gKiBUaGUgU0NJT04gV29ya2JlbmNoIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgbGF1bmNoZXJzOlxuICpcbiAqICAtICoqQVBQX0lOSVRJQUxJWkVSKipcbiAqICAgTGF1bmNoZXMgdGhlIHdvcmtiZW5jaCBpbiBhbiBBbmd1bGFyIGBBUFBfSU5JVElBTElaRVJgLCB3aGljaCBpcyBiZWZvcmUgYm9vdHN0cmFwcGluZyB0aGUgYXBwIGNvbXBvbmVudC5cbiAqXG4gKiAtICoqTEFaWSoqICh3aGljaCBpcyB0aGUgZGVmYXVsdClcbiAqICAgTGF1bmNoZXMgdGhlIHdvcmtiZW5jaCBhdCB0aGUgbGF0ZXN0IHdoZW4gYm9vdHN0cmFwcGluZyB0aGUgd29ya2JlbmNoIHJvb3QgY29tcG9uZW50IGA8d2Itd29ya2JlbmNoPmAuXG4gKlxuICogICBXaXRoIHRoaXMgc3RyYXRlZ3ksIHlvdSBhcmUgZmxleGlibGUgd2hlbiB0byBzdGFydCB0aGUgd29ya2JlbmNoLiBZb3UgY2FuIHN0YXJ0IHRoZSB3b3JrYmVuY2ggZXhwbGljaXRseSBieVxuICogICBjYWxsaW5nIHtAbGluayBXb3JrYmVuY2hMYXVuY2hlciNsYXVuY2h9LCBlLmcuLCB0byBsYXVuY2ggdGhlIHdvcmtiZW5jaCBmcm9tIGEgcm91dGUgZ3VhcmQgb3IgYXBwIGluaXRpYWxpemVyLFxuICogICBvciBzdGFydCBpdCBhdXRvbWF0aWNhbGx5IHdoZW4gYWRkaW5nIHRoZSB3b3JrYmVuY2ggcm9vdCBjb21wb25lbnQgYDx3Yi13b3JrYmVuY2g+YCB0byB0aGUgQW5ndWxhciBjb21wb25lbnRcbiAqICAgdHJlZS5cbiAqXG4gKiBUaGUgd29ya2JlbmNoIGNvbXBvbmVudCBkaXNwbGF5cyBhIHN0YXJ0dXAgc3BsYXNoIHVudGlsIGNvbXBsZXRlZCBzdGFydHVwLiBZb3UgY2FuIGNvbmZpZ3VyZSBhIGN1c3RvbSBzcGxhc2ggaW5cbiAqIHtAbGluayBXb3JrYmVuY2hDb25maWcjc3RhcnR1cCNzcGxhc2h9LiBXaGVuIGxhdW5jaGluZyB0aGUgd29ya2JlbmNoIGluIGFuIEFuZ3VsYXIgYEFQUF9JTklUSUFMSVpFUmAsIG5vIHNwbGFzaCB3aWxsXG4gKiBkaXNwbGF5IHNpbmNlIHRoZSB3b3JrYmVuY2ggd2lsbCBzdGFydCB1cGZyb250LlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hMYXVuY2hlciB7XG5cbiAgcHJpdmF0ZSBfc3RhdGU6IFN0YXJ0dXBTdGF0ZSA9IFN0YXJ0dXBTdGF0ZS5TdG9wcGVkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3N0YXJ0dXA6IFdvcmtiZW5jaFN0YXJ0dXAsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2xvZ2dlcjogTG9nZ2VyLFxuICAgICAgICAgICAgICBwcml2YXRlIF96b25lOiBOZ1pvbmUsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3Rvcikge1xuICAgIGNvbnN0IHdvcmtiZW5jaENvbmZpZyA9IGluamVjdChXb3JrYmVuY2hDb25maWcsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIGlmICghd29ya2JlbmNoQ29uZmlnKSB7XG4gICAgICB0aHJvdyBFcnJvcihgW1dvcmtiZW5jaEVycm9yXSBNaXNzaW5nIHJlcXVpcmVkIHdvcmtiZW5jaCBwcm92aWRlcnMuIERpZCB5b3UgZm9yZ2V0IHRvIGNhbGwgJ3Byb3ZpZGVXb3JrYmVuY2goKScgaW4gdGhlIHByb3ZpZGVycyBhcnJheSBvZiAnYm9vdHN0cmFwQXBwbGljYXRpb24nIG9yIHRoZSByb290ICdOZ01vZHVsZSc/YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExhdW5jaGVzIHRoZSBTQ0lPTiBXb3JrYmVuY2guXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHJlcHJlc2VudHMgdGhlIGluaXRpYWwgZW50cnkgcG9pbnQgdGhhdCBzaG91bGQgYmUgY2FsbGVkIHRvIGxhdW5jaCB0aGUgd29ya2JlbmNoLiBUaGUgbGF1bmNoZXIgcnVuc1xuICAgKiByZWdpc3RlcmVkIHdvcmtiZW5jaCBpbml0aWFsaXplcnMgYW5kIHdhaXRzIGZvciB0aGVtIHRvIGNvbXBsZXRlLiBDYWxsaW5nIHRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIHdvcmtiZW5jaFxuICAgKiBpcyBhbHJlYWR5IHN0YXJ0aW5nIG9yIGhhcyBzdGFydGVkLlxuICAgKlxuICAgKiAjIyMgU3BsYXNoXG4gICAqIFdoZW4gbW91bnRpbmcgdGhlIHdvcmtiZW5jaCByb290IGNvbXBvbmVudCBgPHdiLXdvcmtiZW5jaD5gIHRvIHRoZSBET00gYmVmb3JlIHRoZSB3b3JrYmVuY2ggc3RhcnR1cCBoYXMgZmluaXNoZWQsXG4gICAqIHRoZSB3b3JrYmVuY2ggd2lsbCBkaXNwbGF5IGEgc3RhcnR1cCBzcGxhc2ggdW50aWwgY29tcGxldGVkIHN0YXJ0dXAuXG4gICAqXG4gICAqICMjIyBTdGFydHVwIExpZmVjeWNsZSBIb29rc1xuICAgKiBUaGUgU0NJT04gV29ya2JlbmNoIGRlZmluZXMgYSBudW1iZXIgb2YgaW5qZWN0aW9uIHRva2VucyAoYWxzbyBjYWxsZWQgREkgdG9rZW5zKSBhcyBob29rcyBpbnRvIHRoZSB3b3JrYmVuY2gncyBzdGFydHVwIHByb2Nlc3MuXG4gICAqIEhvb2tzIGFyZSBjYWxsZWQgYXQgZGVmaW5lZCBwb2ludHMgZHVyaW5nIHN0YXJ0dXAsIGVuYWJsaW5nIHRoZSBhcHBsaWNhdGlvbidzIGNvbnRyb2xsZWQgaW5pdGlhbGl6YXRpb24uXG4gICAqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBjYW4gYXNzb2NpYXRlIG9uZSBvciBtb3JlIGluaXRpYWxpemVycyB3aXRoIGFueSBvZiB0aGVzZSBESSB0b2tlbnMuIEFuIGluaXRpYWxpemVyIGNhbiBiZSBhbnkgb2JqZWN0IGFuZCBpcyB0b1xuICAgKiBiZSBwcm92aWRlZCBhcyBhIG11bHRpLXByb3ZpZGVyLiBJZiB0aGUgaW5pdGlhbGl6ZXIgaXMgYSBmdW5jdGlvbiBvciBpbnN0YW5jZSBvZiB7QGxpbmsgV29ya2JlbmNoSW5pdGlhbGl6ZXJ9IGFuZCByZXR1cm5zIGEgUHJvbWlzZSxcbiAgICogdGhlIHdvcmtiZW5jaCB3YWl0cyBmb3IgdGhlIFByb21pc2UgdG8gYmUgcmVzb2x2ZWQgYmVmb3JlIHByb2NlZWRpbmcgd2l0aCB0aGUgc3RhcnR1cC4gSW5pdGlhbGl6ZXJzIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnlcbiAgICogcmVxdWlyZWQgZGVwZW5kZW5jaWVzLiBJbml0aWFsaXplcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIERJIHRva2VuIG1heSBydW4gaW4gcGFyYWxsZWwuXG4gICAqXG4gICAqIEZvbGxvd2luZyBESSB0b2tlbnMgYXJlIGF2YWlsYWJsZSBhcyBob29rcyBpbnRvIHRoZSB3b3JrYmVuY2gncyBzdGFydHVwIHByb2Nlc3MsIGxpc3RlZCBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcmUgaW5qZWN0ZWQgYW5kXG4gICAqIGV4ZWN1dGVkLlxuICAgKlxuICAgKiAtIHtAbGluayBXT1JLQkVOQ0hfUFJFX1NUQVJUVVB9XG4gICAqIC0ge0BsaW5rIFdPUktCRU5DSF9TVEFSVFVQfVxuICAgKiAtIHtAbGluayBNSUNST0ZST05URU5EX1BMQVRGT1JNX1BSRV9TVEFSVFVQfVxuICAgKiAtIHtAbGluayBNSUNST0ZST05URU5EX1BMQVRGT1JNX1BPU1RfU1RBUlRVUH1cbiAgICogLSB7QGxpbmsgV09SS0JFTkNIX1BPU1RfU1RBUlRVUH1cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgb2YgaG93IHRvIGhvb2sgaW50byB0aGUgc3RhcnR1cCBwcm9jZXNzLlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiB7XG4gICAqICAgcHJvdmlkZTogV09SS0JFTkNIX1NUQVJUVVAsXG4gICAqICAgbXVsdGk6IHRydWUsXG4gICAqICAgdXNlVmFsdWU6ICgpID0+IGluamVjdChJbml0aWFsaXplcikuaW5pdCgpLFxuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcmV0dXJuIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHdvcmtiZW5jaCBoYXMgY29tcGxldGVkIHRoZSBzdGFydHVwIG9yIHRoYXQgcmVqZWN0cyBpZiB0aGUgc3RhcnR1cCBmYWlsZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbGF1bmNoKCk6IFByb21pc2U8dHJ1ZT4ge1xuICAgIGFzc2VydE5vdEluUmVhY3RpdmVDb250ZXh0KHRoaXMubGF1bmNoLCAnQ2FsbCBXb3JrYmVuY2hMYXVuY2hlci5sYXVuY2goKSBpbiBhIG5vbi1yZWFjdGl2ZSAobm9uLXRyYWNraW5nKSBjb250ZXh0LCBzdWNoIGFzIHdpdGhpbiB0aGUgdW50cmFja2VkKCkgZnVuY3Rpb24uJyk7XG5cbiAgICAvLyBFbnN1cmUgdG8gcnVuIGluIHRoZSBBbmd1bGFyIHpvbmUgdG8gY2hlY2sgdGhlIHdvcmtiZW5jaCBmb3IgY2hhbmdlcyBldmVuIGlmIGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIEFuZ3VsYXIgem9uZSwgZS5nLiBpbiB1bml0IHRlc3RzLlxuICAgIGlmICghTmdab25lLmlzSW5Bbmd1bGFyWm9uZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fem9uZS5ydW4oKCkgPT4gdGhpcy5sYXVuY2goKSk7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0aGlzLl9zdGF0ZSkge1xuICAgICAgY2FzZSBTdGFydHVwU3RhdGUuU3RvcHBlZDoge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoKCkgPT4gYFN0YXJ0aW5nIFdvcmtiZW5jaC4gV2FpdGluZyBmb3Igd29ya2JlbmNoIGluaXRpYWxpemVycyB0byBjb21wbGV0ZS4gW2xhdW5jaGVyPSR7dGhpcy5faW5qZWN0b3IuZ2V0KEFwcGxpY2F0aW9uSW5pdFN0YXR1cykuZG9uZSA/ICdMQVpZJyA6ICdBUFBfSU5JVElBTElaRVInfV1gLCBMb2dnZXJOYW1lcy5MSUZFQ1lDTEUpO1xuICAgICAgICB0aGlzLl9zdGF0ZSA9IFN0YXJ0dXBTdGF0ZS5TdGFydGluZztcbiAgICAgICAgYXdhaXQgcnVuV29ya2JlbmNoSW5pdGlhbGl6ZXJzKFdPUktCRU5DSF9QUkVfU1RBUlRVUCwgdGhpcy5faW5qZWN0b3IpO1xuICAgICAgICBhd2FpdCBydW5Xb3JrYmVuY2hJbml0aWFsaXplcnMoV09SS0JFTkNIX1NUQVJUVVAsIHRoaXMuX2luamVjdG9yKTtcbiAgICAgICAgdGhpcy5fc3RhdGUgPSBTdGFydHVwU3RhdGUuU3RhcnRlZDtcbiAgICAgICAgYXdhaXQgcnVuV29ya2JlbmNoSW5pdGlhbGl6ZXJzKFdPUktCRU5DSF9QT1NUX1NUQVJUVVAsIHRoaXMuX2luamVjdG9yKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+ICdXb3JrYmVuY2ggc3RhcnRlZC4nLCBMb2dnZXJOYW1lcy5MSUZFQ1lDTEUpO1xuICAgICAgICB0aGlzLl9zdGFydHVwLm5vdGlmeVN0YXJ0ZWQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0dXAud2hlblN0YXJ0ZWQ7XG4gICAgICB9XG4gICAgICBjYXNlIFN0YXJ0dXBTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgU3RhcnR1cFN0YXRlLlN0YXJ0ZWQ6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0dXAud2hlblN0YXJ0ZWQ7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRocm93IEVycm9yKGBbV29ya2JlbmNoU3RhcnR1cEVycm9yXSBJbGxlZ2FsIHN0YXJ0dXAgc3RhdGU6ICR7dGhpcy5fc3RhdGV9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmVudW0gU3RhcnR1cFN0YXRlIHtcbiAgU3RvcHBlZCwgU3RhcnRpbmcsIFN0YXJ0ZWRcbn1cblxuLyoqXG4gKiBBbGxvd3Mgd2FpdGluZyBmb3IgdGhlIHdvcmtiZW5jaCBzdGFydHVwIHRvIGNvbXBsZXRlLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hTdGFydHVwIHtcblxuICAvKipcbiAgICogU2lnbmFscyB3aGVuIHRoZSB3b3JrYmVuY2ggY29tcGxldGVkIHN0YXJ0dXAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNTdGFydGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIG5vdGlmeVN0YXJ0ZWQhOiAoKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgd29ya2JlbmNoIGhhcyBjb21wbGV0ZWQgdGhlIHN0YXJ0dXAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgd2hlblN0YXJ0ZWQgPSBuZXcgUHJvbWlzZTx0cnVlPihyZXNvbHZlID0+IHRoaXMubm90aWZ5U3RhcnRlZCA9ICgpID0+IHtcbiAgICB0aGlzLmlzU3RhcnRlZC5zZXQodHJ1ZSk7XG4gICAgcmVzb2x2ZSh0cnVlKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYSBzZXQgb2YgREkgcHJvdmlkZXJzIGZvciBsYXVuY2hpbmcgdGhlIHdvcmtiZW5jaC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVXb3JrYmVuY2hMYXVuY2hlcih3b3JrYmVuY2hDb25maWc6IFdvcmtiZW5jaENvbmZpZyk6IEVudmlyb25tZW50UHJvdmlkZXJzIHwgW10ge1xuICBpZiAod29ya2JlbmNoQ29uZmlnLnN0YXJ0dXA/LmxhdW5jaGVyICE9PSAnQVBQX0lOSVRJQUxJWkVSJykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW3tcbiAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgY29uc3QgbGF1bmNoZXIgPSBpbmplY3QoV29ya2JlbmNoTGF1bmNoZXIpO1xuICAgICAgcmV0dXJuICgpID0+IGxhdW5jaGVyLmxhdW5jaCgpO1xuICAgIH0sXG4gICAgbXVsdGk6IHRydWUsXG4gIH1dKTtcbn1cbiJdfQ==
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2018-2023 Swiss Federal Railways
|
|
3
|
-
*
|
|
4
|
-
* This program and the accompanying materials are made
|
|
5
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
-
*
|
|
8
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
-
*/
|
|
10
|
-
export { WorkbenchStorage } from './workbench-storage';
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3N0b3JhZ2UvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5leHBvcnQge1dvcmtiZW5jaFN0b3JhZ2V9IGZyb20gJy4vd29ya2JlbmNoLXN0b3JhZ2UnO1xuIl19
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2018-2023 Swiss Federal Railways
|
|
3
|
-
*
|
|
4
|
-
* This program and the accompanying materials are made
|
|
5
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
-
*
|
|
8
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
-
*/
|
|
10
|
-
import { Injectable } from '@angular/core';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
/**
|
|
13
|
-
* Provides persistent storage to the SCION Workbench.
|
|
14
|
-
*/
|
|
15
|
-
export class WorkbenchStorage {
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Default storage used by the SCION workbench to persist data in local storage.
|
|
19
|
-
*
|
|
20
|
-
* Local storage maintains a persistent storage area per origin. Data does not expire and remains after the browser restarts.
|
|
21
|
-
*
|
|
22
|
-
* @internal
|
|
23
|
-
*/
|
|
24
|
-
export class DefaultWorkbenchStorage {
|
|
25
|
-
load(key) {
|
|
26
|
-
return localStorage.getItem(key);
|
|
27
|
-
}
|
|
28
|
-
store(key, value) {
|
|
29
|
-
localStorage.setItem(key, value);
|
|
30
|
-
}
|
|
31
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DefaultWorkbenchStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
32
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DefaultWorkbenchStorage }); }
|
|
33
|
-
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DefaultWorkbenchStorage, decorators: [{
|
|
35
|
-
type: Injectable
|
|
36
|
-
}] });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9zdG9yYWdlL3dvcmtiZW5jaC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFekM7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGdCQUFnQjtDQWNyQztBQUVEOzs7Ozs7R0FNRztBQUVILE1BQU0sT0FBTyx1QkFBdUI7SUFFM0IsSUFBSSxDQUFDLEdBQVc7UUFDckIsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDckMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs4R0FSVSx1QkFBdUI7a0hBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBQcm92aWRlcyBwZXJzaXN0ZW50IHN0b3JhZ2UgdG8gdGhlIFNDSU9OIFdvcmtiZW5jaC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFdvcmtiZW5jaFN0b3JhZ2Uge1xuXG4gIC8qKlxuICAgKiBNZXRob2QgaW52b2tlZCB0byBsb2FkIGEgdmFsdWUgZnJvbSBwZXJzaXN0ZWQgc3RvcmFnZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBsb2FkKGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB8IHN0cmluZyB8IG51bGw7XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBpbnZva2VkIHRvIHdyaXRlIGEgdmFsdWUgdG8gcGVyc2lzdGVkIHN0b3JhZ2UuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIG1heSBiZSBjYWxsZWQgZHVyaW5nIHBhZ2UgdW5sb2FkLiBJZiBzZW5kaW5nIGRhdGEgdG8gYSB3ZWIgc2VydmVyLFxuICAgKiB1c2UgYG5hdmlnYXRvci5zZW5kQmVhY29uKClgIGluc3RlYWQgb2YgYHdpbmRvdy5mZXRjaCgpYCB0byByZWxpYWJseSB0cmFuc21pdCBkYXRhLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHN0b3JlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG59XG5cbi8qKlxuICogRGVmYXVsdCBzdG9yYWdlIHVzZWQgYnkgdGhlIFNDSU9OIHdvcmtiZW5jaCB0byBwZXJzaXN0IGRhdGEgaW4gbG9jYWwgc3RvcmFnZS5cbiAqXG4gKiBMb2NhbCBzdG9yYWdlIG1haW50YWlucyBhIHBlcnNpc3RlbnQgc3RvcmFnZSBhcmVhIHBlciBvcmlnaW4uIERhdGEgZG9lcyBub3QgZXhwaXJlIGFuZCByZW1haW5zIGFmdGVyIHRoZSBicm93c2VyIHJlc3RhcnRzLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgvKiBETyBOT1QgUFJPVklERSB2aWEgJ3Byb3ZpZGVkSW4nIG1ldGFkYXRhIGFzIHJlZ2lzdGVyZWQgY29uZGl0aW9uYWxseSB1bmRlciBgV29ya2JlbmNoU3RvcmFnZWAgREkgdG9rZW4uICovKVxuZXhwb3J0IGNsYXNzIERlZmF1bHRXb3JrYmVuY2hTdG9yYWdlIGltcGxlbWVudHMgV29ya2JlbmNoU3RvcmFnZSB7XG5cbiAgcHVibGljIGxvYWQoa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBzdG9yZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2018-2023 Swiss Federal Railways
|
|
3
|
-
*
|
|
4
|
-
* This program and the accompanying materials are made
|
|
5
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
-
*
|
|
8
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
-
*/
|
|
10
|
-
export { WorkbenchTestingModule } from './workbench-testing.module';
|
|
11
|
-
export { provideWorkbenchForTest } from './workbench.provider';
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3Rlc3RpbmcvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5leHBvcnQge1dvcmtiZW5jaFRlc3RpbmdNb2R1bGV9IGZyb20gJy4vd29ya2JlbmNoLXRlc3RpbmcubW9kdWxlJztcbmV4cG9ydCB7cHJvdmlkZVdvcmtiZW5jaEZvclRlc3R9IGZyb20gJy4vd29ya2JlbmNoLnByb3ZpZGVyJztcbiJdfQ==
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { provideWorkbenchForTest } from './workbench.provider';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* Sets up the SCION Workbench to be used for testing.
|
|
6
|
-
*
|
|
7
|
-
* Does the following:
|
|
8
|
-
* - provides the workbench with given config
|
|
9
|
-
* - configures the workbench to name the initial part 'main'
|
|
10
|
-
* - installs a sequence for activation instants
|
|
11
|
-
* - configures the testbed to auto-detect changes
|
|
12
|
-
* - disables animations
|
|
13
|
-
* - performs the initial navigation
|
|
14
|
-
*
|
|
15
|
-
* ### Usage
|
|
16
|
-
*
|
|
17
|
-
* ```
|
|
18
|
-
* beforeEach(() => {
|
|
19
|
-
* TestBed.configureTestingModule({
|
|
20
|
-
* imports: [
|
|
21
|
-
* WorkbenchTestingModule.forTest(),
|
|
22
|
-
* RouterTestingModule.withRoutes([
|
|
23
|
-
* {path: 'test-view', component: TestComponent},
|
|
24
|
-
* ]),
|
|
25
|
-
* ],
|
|
26
|
-
* });
|
|
27
|
-
* });
|
|
28
|
-
* ```
|
|
29
|
-
*
|
|
30
|
-
* @deprecated since version 17.0.0-beta.8; Register SCION Workbench providers using `provideWorkbench` function instead; API will be removed in a future release; API will be removed in a future release.
|
|
31
|
-
*/
|
|
32
|
-
export class WorkbenchTestingModule {
|
|
33
|
-
/**
|
|
34
|
-
* Sets up the SCION Workbench to be used for testing.
|
|
35
|
-
*/
|
|
36
|
-
static forTest(config) {
|
|
37
|
-
return {
|
|
38
|
-
ngModule: WorkbenchTestingModule,
|
|
39
|
-
providers: [provideWorkbenchForTest(config)],
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
43
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchTestingModule }); }
|
|
44
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchTestingModule }); }
|
|
45
|
-
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchTestingModule, decorators: [{
|
|
47
|
-
type: NgModule
|
|
48
|
-
}] });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXRlc3RpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvdGVzdGluZy93b3JrYmVuY2gtdGVzdGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFNUQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sc0JBQXNCLENBQUM7O0FBRTdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBRWpDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUF3QjtRQUM1QyxPQUFPO1lBQ0wsUUFBUSxFQUFFLHNCQUFzQjtZQUNoQyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM3QyxDQUFDO0lBQ0osQ0FBQzs4R0FWVSxzQkFBc0I7K0dBQXRCLHNCQUFzQjsrR0FBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQURsQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dvcmtiZW5jaENvbmZpZ30gZnJvbSAnLi4vd29ya2JlbmNoLWNvbmZpZyc7XG5pbXBvcnQge3Byb3ZpZGVXb3JrYmVuY2hGb3JUZXN0fSBmcm9tICcuL3dvcmtiZW5jaC5wcm92aWRlcic7XG5cbi8qKlxuICogU2V0cyB1cCB0aGUgU0NJT04gV29ya2JlbmNoIHRvIGJlIHVzZWQgZm9yIHRlc3RpbmcuXG4gKlxuICogRG9lcyB0aGUgZm9sbG93aW5nOlxuICogLSBwcm92aWRlcyB0aGUgd29ya2JlbmNoIHdpdGggZ2l2ZW4gY29uZmlnXG4gKiAtIGNvbmZpZ3VyZXMgdGhlIHdvcmtiZW5jaCB0byBuYW1lIHRoZSBpbml0aWFsIHBhcnQgJ21haW4nXG4gKiAtIGluc3RhbGxzIGEgc2VxdWVuY2UgZm9yIGFjdGl2YXRpb24gaW5zdGFudHNcbiAqIC0gY29uZmlndXJlcyB0aGUgdGVzdGJlZCB0byBhdXRvLWRldGVjdCBjaGFuZ2VzXG4gKiAtIGRpc2FibGVzIGFuaW1hdGlvbnNcbiAqIC0gcGVyZm9ybXMgdGhlIGluaXRpYWwgbmF2aWdhdGlvblxuICpcbiAqICMjIyBVc2FnZVxuICpcbiAqIGBgYFxuICogYmVmb3JlRWFjaCgoKSA9PiB7XG4gKiAgIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG4gKiAgICAgIGltcG9ydHM6IFtcbiAqICAgICAgICBXb3JrYmVuY2hUZXN0aW5nTW9kdWxlLmZvclRlc3QoKSxcbiAqICAgICAgICBSb3V0ZXJUZXN0aW5nTW9kdWxlLndpdGhSb3V0ZXMoW1xuICogICAgICAgICAge3BhdGg6ICd0ZXN0LXZpZXcnLCBjb21wb25lbnQ6IFRlc3RDb21wb25lbnR9LFxuICogICAgICAgIF0pLFxuICogICAgICBdLFxuICogICAgfSk7XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMTcuMC4wLWJldGEuODsgUmVnaXN0ZXIgU0NJT04gV29ya2JlbmNoIHByb3ZpZGVycyB1c2luZyBgcHJvdmlkZVdvcmtiZW5jaGAgZnVuY3Rpb24gaW5zdGVhZDsgQVBJIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlOyBBUEkgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXG4gKi9cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoVGVzdGluZ01vZHVsZSB7XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgdGhlIFNDSU9OIFdvcmtiZW5jaCB0byBiZSB1c2VkIGZvciB0ZXN0aW5nLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JUZXN0KGNvbmZpZz86IFdvcmtiZW5jaENvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8V29ya2JlbmNoVGVzdGluZ01vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogV29ya2JlbmNoVGVzdGluZ01vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW3Byb3ZpZGVXb3JrYmVuY2hGb3JUZXN0KGNvbmZpZyldLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { ENVIRONMENT_INITIALIZER, inject, Injectable, makeEnvironmentProviders } from '@angular/core';
|
|
2
|
-
import { provideWorkbench } from '../workbench.provider';
|
|
3
|
-
import { provideNoopAnimations } from '@angular/platform-browser/animations';
|
|
4
|
-
import { ActivationInstantProvider } from '../activation-instant.provider';
|
|
5
|
-
import { MAIN_AREA_INITIAL_PART_ID } from '../layout/ɵworkbench-layout';
|
|
6
|
-
import { ComponentFixtureAutoDetect } from '@angular/core/testing';
|
|
7
|
-
import { Router } from '@angular/router';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
/**
|
|
10
|
-
* Returns the set of dependency-injection providers to enable and configure the SCION Workbench in tests.
|
|
11
|
-
*
|
|
12
|
-
* Does the following:
|
|
13
|
-
* - provides the workbench with given config
|
|
14
|
-
* - configures the workbench to name the initial part 'main'
|
|
15
|
-
* - installs a sequence for activation instants
|
|
16
|
-
* - configures the testbed to auto-detect changes
|
|
17
|
-
* - disables animations
|
|
18
|
-
* - performs the initial navigation
|
|
19
|
-
*
|
|
20
|
-
* ### Usage
|
|
21
|
-
*
|
|
22
|
-
* ```
|
|
23
|
-
* beforeEach(() => {
|
|
24
|
-
* TestBed.configureTestingModule({
|
|
25
|
-
* imports: [
|
|
26
|
-
* WorkbenchTestingModule.forTest(),
|
|
27
|
-
* RouterTestingModule.withRoutes([
|
|
28
|
-
* {path: 'test-view', component: TestComponent},
|
|
29
|
-
* ]),
|
|
30
|
-
* ],
|
|
31
|
-
* });
|
|
32
|
-
* });
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
export function provideWorkbenchForTest(config) {
|
|
36
|
-
return makeEnvironmentProviders([
|
|
37
|
-
provideWorkbench(config),
|
|
38
|
-
provideNoopAnimations(),
|
|
39
|
-
{ provide: ActivationInstantProvider, useClass: SequenceInstantProvider },
|
|
40
|
-
{ provide: MAIN_AREA_INITIAL_PART_ID, useValue: config?.mainAreaInitialPartId ?? 'main' },
|
|
41
|
-
{ provide: ComponentFixtureAutoDetect, useValue: true },
|
|
42
|
-
{ provide: ENVIRONMENT_INITIALIZER, multi: true, useValue: () => inject(Router).initialNavigation() },
|
|
43
|
-
{ provide: ENVIRONMENT_INITIALIZER, multi: true, useValue: () => localStorage.clear() },
|
|
44
|
-
{ provide: ENVIRONMENT_INITIALIZER, multi: true, useValue: () => window.name = '' },
|
|
45
|
-
]);
|
|
46
|
-
}
|
|
47
|
-
class SequenceInstantProvider {
|
|
48
|
-
constructor() {
|
|
49
|
-
this._sequence = 0;
|
|
50
|
-
}
|
|
51
|
-
now() {
|
|
52
|
-
return this._sequence++;
|
|
53
|
-
}
|
|
54
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SequenceInstantProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
55
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SequenceInstantProvider }); }
|
|
56
|
-
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SequenceInstantProvider, decorators: [{
|
|
58
|
-
type: Injectable
|
|
59
|
-
}] });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvdGVzdGluZy93b3JrYmVuY2gucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLHVCQUF1QixFQUF3QixNQUFNLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsTUFBMkQ7SUFDakcsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QixnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFDeEIscUJBQXFCLEVBQUU7UUFDdkIsRUFBQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFDO1FBQ3ZFLEVBQUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUscUJBQXFCLElBQUksTUFBTSxFQUFDO1FBQ3ZGLEVBQUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUM7UUFDckQsRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEVBQUM7UUFDbkcsRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFDO1FBQ3JGLEVBQUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFDO0tBQ2xGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUNNLHVCQUF1QjtJQUQ3QjtRQUdVLGNBQVMsR0FBRyxDQUFDLENBQUM7S0FLdkI7SUFIUSxHQUFHO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUIsQ0FBQzs4R0FORyx1QkFBdUI7a0hBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7V29ya2JlbmNoQ29uZmlnfSBmcm9tICcuLi93b3JrYmVuY2gtY29uZmlnJztcbmltcG9ydCB7RU5WSVJPTk1FTlRfSU5JVElBTElaRVIsIEVudmlyb25tZW50UHJvdmlkZXJzLCBpbmplY3QsIEluamVjdGFibGUsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Byb3ZpZGVXb3JrYmVuY2h9IGZyb20gJy4uL3dvcmtiZW5jaC5wcm92aWRlcic7XG5pbXBvcnQge3Byb3ZpZGVOb29wQW5pbWF0aW9uc30gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7QWN0aXZhdGlvbkluc3RhbnRQcm92aWRlcn0gZnJvbSAnLi4vYWN0aXZhdGlvbi1pbnN0YW50LnByb3ZpZGVyJztcbmltcG9ydCB7TUFJTl9BUkVBX0lOSVRJQUxfUEFSVF9JRH0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dCc7XG5pbXBvcnQge0NvbXBvbmVudEZpeHR1cmVBdXRvRGV0ZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgc2V0IG9mIGRlcGVuZGVuY3ktaW5qZWN0aW9uIHByb3ZpZGVycyB0byBlbmFibGUgYW5kIGNvbmZpZ3VyZSB0aGUgU0NJT04gV29ya2JlbmNoIGluIHRlc3RzLlxuICpcbiAqIERvZXMgdGhlIGZvbGxvd2luZzpcbiAqIC0gcHJvdmlkZXMgdGhlIHdvcmtiZW5jaCB3aXRoIGdpdmVuIGNvbmZpZ1xuICogLSBjb25maWd1cmVzIHRoZSB3b3JrYmVuY2ggdG8gbmFtZSB0aGUgaW5pdGlhbCBwYXJ0ICdtYWluJ1xuICogLSBpbnN0YWxscyBhIHNlcXVlbmNlIGZvciBhY3RpdmF0aW9uIGluc3RhbnRzXG4gKiAtIGNvbmZpZ3VyZXMgdGhlIHRlc3RiZWQgdG8gYXV0by1kZXRlY3QgY2hhbmdlc1xuICogLSBkaXNhYmxlcyBhbmltYXRpb25zXG4gKiAtIHBlcmZvcm1zIHRoZSBpbml0aWFsIG5hdmlnYXRpb25cbiAqXG4gKiAjIyMgVXNhZ2VcbiAqXG4gKiBgYGBcbiAqIGJlZm9yZUVhY2goKCkgPT4ge1xuICogICBUZXN0QmVkLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGUoe1xuICogICAgICBpbXBvcnRzOiBbXG4gKiAgICAgICAgV29ya2JlbmNoVGVzdGluZ01vZHVsZS5mb3JUZXN0KCksXG4gKiAgICAgICAgUm91dGVyVGVzdGluZ01vZHVsZS53aXRoUm91dGVzKFtcbiAqICAgICAgICAgIHtwYXRoOiAndGVzdC12aWV3JywgY29tcG9uZW50OiBUZXN0Q29tcG9uZW50fSxcbiAqICAgICAgICBdKSxcbiAqICAgICAgXSxcbiAqICAgIH0pO1xuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVXb3JrYmVuY2hGb3JUZXN0KGNvbmZpZz86IFdvcmtiZW5jaENvbmZpZyAmIHttYWluQXJlYUluaXRpYWxQYXJ0SWQ/OiBzdHJpbmd9KTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICBwcm92aWRlV29ya2JlbmNoKGNvbmZpZyksXG4gICAgcHJvdmlkZU5vb3BBbmltYXRpb25zKCksXG4gICAge3Byb3ZpZGU6IEFjdGl2YXRpb25JbnN0YW50UHJvdmlkZXIsIHVzZUNsYXNzOiBTZXF1ZW5jZUluc3RhbnRQcm92aWRlcn0sXG4gICAge3Byb3ZpZGU6IE1BSU5fQVJFQV9JTklUSUFMX1BBUlRfSUQsIHVzZVZhbHVlOiBjb25maWc/Lm1haW5BcmVhSW5pdGlhbFBhcnRJZCA/PyAnbWFpbid9LFxuICAgIHtwcm92aWRlOiBDb21wb25lbnRGaXh0dXJlQXV0b0RldGVjdCwgdXNlVmFsdWU6IHRydWV9LFxuICAgIHtwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUiwgbXVsdGk6IHRydWUsIHVzZVZhbHVlOiAoKSA9PiBpbmplY3QoUm91dGVyKS5pbml0aWFsTmF2aWdhdGlvbigpfSxcbiAgICB7cHJvdmlkZTogRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsIG11bHRpOiB0cnVlLCB1c2VWYWx1ZTogKCkgPT4gbG9jYWxTdG9yYWdlLmNsZWFyKCl9LFxuICAgIHtwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUiwgbXVsdGk6IHRydWUsIHVzZVZhbHVlOiAoKSA9PiB3aW5kb3cubmFtZSA9ICcnfSxcbiAgXSk7XG59XG5cbkBJbmplY3RhYmxlKC8qIERPIE5PVCBQUk9WSURFIHZpYSAncHJvdmlkZWRJbicgbWV0YWRhdGEgYXMgcmVnaXN0ZXJlZCBvbmx5IGlmIHVzaW5nIGBXb3JrYmVuY2hUZXN0aW5nTW9kdWxlYC4gKi8pXG5jbGFzcyBTZXF1ZW5jZUluc3RhbnRQcm92aWRlciBpbXBsZW1lbnRzIEFjdGl2YXRpb25JbnN0YW50UHJvdmlkZXIge1xuXG4gIHByaXZhdGUgX3NlcXVlbmNlID0gMDtcblxuICBwdWJsaWMgbm93KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcXVlbmNlKys7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2018-2023 Swiss Federal Railways
|
|
3
|
-
*
|
|
4
|
-
* This program and the accompanying materials are made
|
|
5
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
-
*
|
|
8
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
-
*/
|
|
10
|
-
import { inject, Injectable } from '@angular/core';
|
|
11
|
-
import { DOCUMENT } from '@angular/common';
|
|
12
|
-
import { fromMutation$ } from '@scion/toolkit/observable';
|
|
13
|
-
import { distinctUntilChanged, map, startWith } from 'rxjs/operators';
|
|
14
|
-
import { toSignal } from '@angular/core/rxjs-interop';
|
|
15
|
-
import * as i0 from "@angular/core";
|
|
16
|
-
import * as i1 from "../storage/workbench-storage";
|
|
17
|
-
/**
|
|
18
|
-
* Represents the key to associate the activated theme in the storage.
|
|
19
|
-
*/
|
|
20
|
-
const THEME_STORAGE_KEY = 'scion.workbench.theme';
|
|
21
|
-
/**
|
|
22
|
-
* Enables switching between workbench themes.
|
|
23
|
-
*/
|
|
24
|
-
export class WorkbenchThemeSwitcher {
|
|
25
|
-
constructor(_workbenchStorage) {
|
|
26
|
-
this._workbenchStorage = _workbenchStorage;
|
|
27
|
-
this._documentRoot = inject(DOCUMENT).documentElement;
|
|
28
|
-
this.theme = this.detectTheme();
|
|
29
|
-
this.activateThemeFromStorage().then();
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Switches the theme of the workbench.
|
|
33
|
-
*
|
|
34
|
-
* @param theme - The name of the theme to switch to.
|
|
35
|
-
*/
|
|
36
|
-
async switchTheme(theme) {
|
|
37
|
-
this._documentRoot.setAttribute('sci-theme', theme);
|
|
38
|
-
await this._workbenchStorage.store(THEME_STORAGE_KEY, theme);
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Detects the current workbench theme from the HTML root element.
|
|
42
|
-
*/
|
|
43
|
-
detectTheme() {
|
|
44
|
-
return toSignal(fromMutation$(this._documentRoot, { attributeFilter: ['sci-theme'] })
|
|
45
|
-
.pipe(startWith(undefined), map(() => {
|
|
46
|
-
const activeTheme = getComputedStyle(this._documentRoot).getPropertyValue('--sci-theme') || null;
|
|
47
|
-
if (!activeTheme) {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
return {
|
|
51
|
-
name: activeTheme,
|
|
52
|
-
colorScheme: getComputedStyle(this._documentRoot).colorScheme,
|
|
53
|
-
};
|
|
54
|
-
}), distinctUntilChanged((a, b) => a?.name === b?.name)), { requireSync: true });
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Activates the theme from storage, if any.
|
|
58
|
-
*/
|
|
59
|
-
async activateThemeFromStorage() {
|
|
60
|
-
const theme = await this._workbenchStorage.load(THEME_STORAGE_KEY);
|
|
61
|
-
if (theme) {
|
|
62
|
-
await this.switchTheme(theme);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchThemeSwitcher, deps: [{ token: i1.WorkbenchStorage }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
66
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchThemeSwitcher, providedIn: 'root' }); }
|
|
67
|
-
}
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchThemeSwitcher, decorators: [{
|
|
69
|
-
type: Injectable,
|
|
70
|
-
args: [{ providedIn: 'root' }]
|
|
71
|
-
}], ctorParameters: () => [{ type: i1.WorkbenchStorage }] });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXRoZW1lLXN3aXRjaGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi90aGVtZS93b3JrYmVuY2gtdGhlbWUtc3dpdGNoZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7OztBQUVwRDs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQUcsdUJBQXVCLENBQUM7QUFFbEQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBU2pDLFlBQW9CLGlCQUFtQztRQUFuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBUHRDLGtCQUFhLEdBQUcsTUFBTSxDQUFXLFFBQVEsQ0FBQyxDQUFDLGVBQWUsQ0FBQztRQVExRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBYTtRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEQsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVc7UUFDakIsT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBQyxlQUFlLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBQyxDQUFDO2FBQ2hGLElBQUksQ0FDSCxTQUFTLENBQUMsU0FBaUIsQ0FBQyxFQUM1QixHQUFHLENBQUMsR0FBMEIsRUFBRTtZQUM5QixNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDO1lBQ2pHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsT0FBTztnQkFDTCxJQUFJLEVBQUUsV0FBVztnQkFDakIsV0FBVyxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUErQjthQUNsRixDQUFDO1FBQ0osQ0FBQyxDQUFDLEVBQ0Ysb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FDcEQsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyx3QkFBd0I7UUFDcEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbkUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQzs4R0FyRFUsc0JBQXNCO2tIQUF0QixzQkFBc0IsY0FEVixNQUFNOzsyRkFDbEIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtpbmplY3QsIEluamVjdGFibGUsIFNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtmcm9tTXV0YXRpb24kfSBmcm9tICdAc2Npb24vdG9vbGtpdC9vYnNlcnZhYmxlJztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1dvcmtiZW5jaFN0b3JhZ2V9IGZyb20gJy4uL3N0b3JhZ2Uvd29ya2JlbmNoLXN0b3JhZ2UnO1xuaW1wb3J0IHtXb3JrYmVuY2hUaGVtZX0gZnJvbSAnLi4vd29ya2JlbmNoLm1vZGVsJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBrZXkgdG8gYXNzb2NpYXRlIHRoZSBhY3RpdmF0ZWQgdGhlbWUgaW4gdGhlIHN0b3JhZ2UuXG4gKi9cbmNvbnN0IFRIRU1FX1NUT1JBR0VfS0VZID0gJ3NjaW9uLndvcmtiZW5jaC50aGVtZSc7XG5cbi8qKlxuICogRW5hYmxlcyBzd2l0Y2hpbmcgYmV0d2VlbiB3b3JrYmVuY2ggdGhlbWVzLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hUaGVtZVN3aXRjaGVyIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudFJvb3QgPSBpbmplY3Q8RG9jdW1lbnQ+KERPQ1VNRU5UKS5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIHRoZSBjdXJyZW50IHdvcmtiZW5jaCB0aGVtZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0aGVtZTogU2lnbmFsPFdvcmtiZW5jaFRoZW1lIHwgbnVsbD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfd29ya2JlbmNoU3RvcmFnZTogV29ya2JlbmNoU3RvcmFnZSkge1xuICAgIHRoaXMudGhlbWUgPSB0aGlzLmRldGVjdFRoZW1lKCk7XG4gICAgdGhpcy5hY3RpdmF0ZVRoZW1lRnJvbVN0b3JhZ2UoKS50aGVuKCk7XG4gIH1cblxuICAvKipcbiAgICogU3dpdGNoZXMgdGhlIHRoZW1lIG9mIHRoZSB3b3JrYmVuY2guXG4gICAqXG4gICAqIEBwYXJhbSB0aGVtZSAtIFRoZSBuYW1lIG9mIHRoZSB0aGVtZSB0byBzd2l0Y2ggdG8uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc3dpdGNoVGhlbWUodGhlbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX2RvY3VtZW50Um9vdC5zZXRBdHRyaWJ1dGUoJ3NjaS10aGVtZScsIHRoZW1lKTtcbiAgICBhd2FpdCB0aGlzLl93b3JrYmVuY2hTdG9yYWdlLnN0b3JlKFRIRU1FX1NUT1JBR0VfS0VZLCB0aGVtZSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0cyB0aGUgY3VycmVudCB3b3JrYmVuY2ggdGhlbWUgZnJvbSB0aGUgSFRNTCByb290IGVsZW1lbnQuXG4gICAqL1xuICBwcml2YXRlIGRldGVjdFRoZW1lKCk6IFNpZ25hbDxXb3JrYmVuY2hUaGVtZSB8IG51bGw+IHtcbiAgICByZXR1cm4gdG9TaWduYWwoZnJvbU11dGF0aW9uJCh0aGlzLl9kb2N1bWVudFJvb3QsIHthdHRyaWJ1dGVGaWx0ZXI6IFsnc2NpLXRoZW1lJ119KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQgYXMgdm9pZCksXG4gICAgICAgIG1hcCgoKTogV29ya2JlbmNoVGhlbWUgfCBudWxsID0+IHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVUaGVtZSA9IGdldENvbXB1dGVkU3R5bGUodGhpcy5fZG9jdW1lbnRSb290KS5nZXRQcm9wZXJ0eVZhbHVlKCctLXNjaS10aGVtZScpIHx8IG51bGw7XG4gICAgICAgICAgaWYgKCFhY3RpdmVUaGVtZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBhY3RpdmVUaGVtZSxcbiAgICAgICAgICAgIGNvbG9yU2NoZW1lOiBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX2RvY3VtZW50Um9vdCkuY29sb3JTY2hlbWUgYXMgJ2xpZ2h0JyB8ICdkYXJrJyxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGE/Lm5hbWUgPT09IGI/Lm5hbWUpLFxuICAgICAgKSwge3JlcXVpcmVTeW5jOiB0cnVlfSk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIHRoZSB0aGVtZSBmcm9tIHN0b3JhZ2UsIGlmIGFueS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgYWN0aXZhdGVUaGVtZUZyb21TdG9yYWdlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRoZW1lID0gYXdhaXQgdGhpcy5fd29ya2JlbmNoU3RvcmFnZS5sb2FkKFRIRU1FX1NUT1JBR0VfS0VZKTtcbiAgICBpZiAodGhlbWUpIHtcbiAgICAgIGF3YWl0IHRoaXMuc3dpdGNoVGhlbWUodGhlbWUpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2018-2023 Swiss Federal Railways
|
|
3
|
-
*
|
|
4
|
-
* This program and the accompanying materials are made
|
|
5
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
-
*
|
|
8
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
-
*/
|
|
10
|
-
export { WorkbenchView } from './workbench-view.model';
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3ZpZXcvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxhQUFhLEVBQVMsTUFBTSx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuZXhwb3J0IHtXb3JrYmVuY2hWaWV3LCBWaWV3SWR9IGZyb20gJy4vd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuIl19
|