@scion/workbench 20.0.0-beta.9 → 21.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,12 @@
1
1
  import * as _angular_cdk_portal from '@angular/cdk/portal';
2
2
  import { ComponentType } from '@angular/cdk/portal';
3
3
  import * as i0 from '@angular/core';
4
- import { InjectionToken, Signal, Injector, Type, EnvironmentProviders, ElementRef, StaticProvider, ViewContainerRef, TemplateRef, WritableSignal, ComponentRef, Provider, OnDestroy, OnInit, DestroyableInjector, AbstractType, PipeTransform } from '@angular/core';
5
- import { MicrofrontendPlatformConfig } from '@scion/microfrontend-platform';
6
- import * as _angular_router from '@angular/router';
7
- import { UrlSegment, NavigationExtras, ActivatedRoute, CanMatchFn } from '@angular/router';
4
+ import { InjectionToken, Signal, Injector, Type, EnvironmentProviders, TemplateRef, WritableSignal, ComponentRef, Provider, ViewContainerRef, OnDestroy, OnInit, DestroyableInjector, ElementRef, StaticProvider, PipeTransform } from '@angular/core';
5
+ import { MicrofrontendPlatformConfig, Qualifier, Capability } from '@scion/microfrontend-platform';
6
+ import { CanMatchFn, UrlSegment, NavigationExtras, ActivatedRoute } from '@angular/router';
8
7
  import { Observable, BehaviorSubject } from 'rxjs';
9
8
  import * as _scion_workbench from '@scion/workbench';
9
+ import { WorkbenchPopupReferrer } from '@scion/workbench-client';
10
10
 
11
11
  /**
12
12
  * Set of log levels to control logging output.
@@ -141,19 +141,190 @@ declare abstract class MicrofrontendPlatformConfigLoader {
141
141
  }
142
142
 
143
143
  /**
144
- * DI token to get a unique id of the workbench.
144
+ * Configures a route to only match workbench parts navigated to the specified part capability.
145
145
  *
146
- * The id is different each time the app is reloaded. Different workbench windows have different ids.
146
+ * Use this guard to differentiate microfrontend routes, which must all have an empty path.
147
+ *
148
+ * @example - Route matching a part capability with qualifier {part: 'navigator'}
149
+ * ```ts
150
+ * import {Routes} from '@angular/router';
151
+ * import {canMatchWorkbenchPartCapability} from '@scion/workbench';
152
+ *
153
+ * const routes: Routes = [
154
+ * {path: '', canMatch: [canMatchWorkbenchPartCapability({part: 'navigator'})], component: NavigatorComponent},
155
+ * ];
156
+ * ```
157
+ *
158
+ * The above route matches the following part capability:
159
+ *
160
+ * ```json
161
+ * {
162
+ * "type": "part",
163
+ * "qualifier": {
164
+ * "part": "navigator"
165
+ * },
166
+ * "properties": {
167
+ * "path": ""
168
+ * }
169
+ * }
170
+ * ```
171
+ *
172
+ * @param qualifier - Identifies the part capability.
173
+ * @return guard matching the specified part capability.
147
174
  */
148
- declare const WORKBENCH_ID: InjectionToken<string>;
175
+ declare function canMatchWorkbenchPartCapability(qualifier: Qualifier): CanMatchFn;
149
176
  /**
150
- * Format of a view identifier.
177
+ * Configures a route to only match workbench views navigated to the specified view capability.
151
178
  *
152
- * Each view is assigned a unique identifier (e.g., `view.d4de99fb`, `view.cad347dd`, etc.).
153
- * A view can also have an alternative id, a meaningful but not necessarily unique name. A view can
154
- * be identified either by its unique or alternative id.
179
+ * Use this guard to differentiate microfrontend routes, which must all have an empty path.
180
+ *
181
+ * @example - Route matching a view capability with qualifier {view: 'search'}
182
+ * ```ts
183
+ * import {Routes} from '@angular/router';
184
+ * import {canMatchWorkbenchViewCapability} from '@scion/workbench';
185
+ *
186
+ * const routes: Routes = [
187
+ * {path: '', canMatch: [canMatchWorkbenchViewCapability({view: 'search'})], component: SearchComponent},
188
+ * ];
189
+ * ```
190
+ *
191
+ * The above route matches the following view capability:
192
+ *
193
+ * ```json
194
+ * {
195
+ * "type": "view",
196
+ * "qualifier": {
197
+ * "view": "search"
198
+ * },
199
+ * "properties": {
200
+ * "path": ""
201
+ * }
202
+ * }
203
+ * ```
204
+ *
205
+ * @param qualifier - Identifies the view capability.
206
+ * @return guard matching the specified view capability.
155
207
  */
156
- type ViewId = `${typeof VIEW_ID_PREFIX}${string}`;
208
+ declare function canMatchWorkbenchViewCapability(qualifier: Qualifier): CanMatchFn;
209
+ /**
210
+ * Configures a route to only match workbench dialogs navigated to the specified dialog capability.
211
+ *
212
+ * Use this guard to differentiate microfrontend routes, which must all have an empty path.
213
+ *
214
+ * @example - Route matching a dialog capability with qualifier {dialog: 'about'}
215
+ * ```ts
216
+ * import {Routes} from '@angular/router';
217
+ * import {canMatchWorkbenchDialogCapability} from '@scion/workbench';
218
+ *
219
+ * const routes: Routes = [
220
+ * {path: '', canMatch: [canMatchWorkbenchDialogCapability({dialog: 'about'})], component: AboutComponent},
221
+ * ];
222
+ * ```
223
+ *
224
+ * The above route matches the following dialog capability:
225
+ *
226
+ * ```json
227
+ * {
228
+ * "type": "dialog",
229
+ * "qualifier": {
230
+ * "dialog": "about"
231
+ * },
232
+ * "properties": {
233
+ * "path": ""
234
+ * }
235
+ * }
236
+ * ```
237
+ *
238
+ * @param qualifier - Identifies the dialog capability.
239
+ * @return guard matching the specified dialog capability.
240
+ */
241
+ declare function canMatchWorkbenchDialogCapability(qualifier: Qualifier): CanMatchFn;
242
+ /**
243
+ * Configures a route to only match workbench messageboxes navigated to the specified messagebox capability.
244
+ *
245
+ * Use this guard to differentiate microfrontend routes, which must all have an empty path.
246
+ *
247
+ * @example - Route matching a messagebox capability with qualifier {messagebox: 'alert'}
248
+ * ```ts
249
+ * import {Routes} from '@angular/router';
250
+ * import {canMatchWorkbenchMessageBoxCapability} from '@scion/workbench';
251
+ *
252
+ * const routes: Routes = [
253
+ * {path: '', canMatch: [canMatchWorkbenchMessageBoxCapability({messagebox: 'alert'})], component: AlertComponent},
254
+ * ];
255
+ * ```
256
+ *
257
+ * The above route matches the following messagebox capability:
258
+ *
259
+ * ```json
260
+ * {
261
+ * "type": "messagebox",
262
+ * "qualifier": {
263
+ * "messagebox": "alert"
264
+ * },
265
+ * "properties": {
266
+ * "path": ""
267
+ * }
268
+ * }
269
+ * ```
270
+ *
271
+ * @param qualifier - Identifies the messagebox capability.
272
+ * @return guard matching the specified messagebox capability.
273
+ */
274
+ declare function canMatchWorkbenchMessageBoxCapability(qualifier: Qualifier): CanMatchFn;
275
+ /**
276
+ * Configures a route to only match workbench popups navigated to the specified popup capability.
277
+ *
278
+ * Use this guard to differentiate microfrontend routes, which must all have an empty path.
279
+ *
280
+ * @example - Route matching a popup capability with qualifier {popup: 'info'}
281
+ * ```ts
282
+ * import {Routes} from '@angular/router';
283
+ * import {canMatchWorkbenchPopupCapability} from '@scion/workbench';
284
+ *
285
+ * const routes: Routes = [
286
+ * {path: '', canMatch: [canMatchWorkbenchPopupCapability({popup: 'info'})], component: InfoComponent},
287
+ * ];
288
+ * ```
289
+ *
290
+ * The above route matches the following popup capability:
291
+ *
292
+ * ```json
293
+ * {
294
+ * "type": "popup",
295
+ * "qualifier": {
296
+ * "popup": "info"
297
+ * },
298
+ * "properties": {
299
+ * "path": ""
300
+ * }
301
+ * }
302
+ * ```
303
+ *
304
+ * @param qualifier - Identifies the popup capability.
305
+ * @return guard matching the specified popup capability.
306
+ */
307
+ declare function canMatchWorkbenchPopupCapability(qualifier: Qualifier): CanMatchFn;
308
+ /**
309
+ * Format of a microfrontend capability id.
310
+ */
311
+ type MicrofrontendCapabilityId = string;
312
+ /**
313
+ * Format of a microfrontend host outlet name.
314
+ *
315
+ * Microfrontend host outlets are used to render microfrontends provided by the host application.
316
+ *
317
+ * Format: `workbench.microfrontend.host.<capabilityId>.<workbenchElementType>.<workbenchElementId>`
318
+ * Example: `workbench.microfrontend.host.39768ab.part.5485357a`
319
+ */
320
+ type MicrofrontendHostOutlet = `workbench.microfrontend.host.${MicrofrontendCapabilityId}.${PartId | ViewId | DialogId | PopupId}`;
321
+
322
+ /**
323
+ * DI token to get a unique id of the workbench.
324
+ *
325
+ * The id is different each time the app is reloaded. Different workbench windows have different ids.
326
+ */
327
+ declare const WORKBENCH_ID: InjectionToken<string>;
157
328
  /**
158
329
  * Format of a part identifier.
159
330
  *
@@ -162,6 +333,14 @@ type ViewId = `${typeof VIEW_ID_PREFIX}${string}`;
162
333
  * be identified either by its unique or alternative id.
163
334
  */
164
335
  type PartId = `${typeof PART_ID_PREFIX}${string}`;
336
+ /**
337
+ * Format of a view identifier.
338
+ *
339
+ * Each view is assigned a unique identifier (e.g., `view.d4de99fb`, `view.cad347dd`, etc.).
340
+ * A view can also have an alternative id, a meaningful but not necessarily unique name. A view can
341
+ * be identified either by its unique or alternative id.
342
+ */
343
+ type ViewId = `${typeof VIEW_ID_PREFIX}${string}`;
165
344
  /**
166
345
  * Format of a dialog identifier.
167
346
  */
@@ -186,18 +365,10 @@ type ViewOutlet = ViewId;
186
365
  * Format of a part outlet name.
187
366
  */
188
367
  type PartOutlet = PartId;
189
- /**
190
- * Format of a popup outlet name.
191
- */
192
- type PopupOutlet = PopupId;
193
- /**
194
- * Format of a dialog outlet name.
195
- */
196
- type DialogOutlet = DialogId;
197
368
  /**
198
369
  * Union of workbench outlets.
199
370
  */
200
- type WorkbenchOutlet = PartOutlet | ViewOutlet | DialogOutlet | PopupOutlet;
371
+ type WorkbenchOutlet = PartOutlet | ViewOutlet | MicrofrontendHostOutlet;
201
372
  /**
202
373
  * Represents the id prefix of views.
203
374
  *
@@ -1046,7 +1217,7 @@ interface WorkbenchIconDescriptor {
1046
1217
  */
1047
1218
  component: ComponentType<unknown>;
1048
1219
  /**
1049
- * Optional data to pass to the component. Inputs are available as input properties in the component.
1220
+ * Specifies data to pass to the component. Inputs are available as input properties in the component.
1050
1221
  *
1051
1222
  * ```ts
1052
1223
  * @Component({...})
@@ -1190,42 +1361,6 @@ declare abstract class WorkbenchConfig {
1190
1361
  * Set to `false` to exclude all built-in menu items.
1191
1362
  */
1192
1363
  abstract viewMenuItems?: ViewMenuItemsConfig | false;
1193
- /**
1194
- * Configures startup of the SCION Workbench.
1195
- *
1196
- * The SCION Workbench starts automatically when the `<wb-workbench>` component is added to the DOM. Alternatively,
1197
- * the workbench can be started manually using {@link WorkbenchLauncher.launch}, such as in an app initializer or a route guard.
1198
- *
1199
- * The application can hook into the startup process of the SCION Workbench by providing one or more initializers to {@link provideWorkbenchInitializer}.
1200
- * Initializers execute at defined points during startup, enabling the application's controlled initialization. The workbench is fully started once
1201
- * all initializers have completed.
1202
- *
1203
- * The application can inject {@link WorkbenchStartup} to check if the workbench has completed startup.
1204
- */
1205
- abstract startup?: {
1206
- /**
1207
- * Controls when to start the SCION Workbench. Defaults to `LAZY`.
1208
- *
1209
- * - **LAZY**
1210
- * Starts the workbench when the `<wb-workbench>` component is added to the DOM or manually via {@link WorkbenchLauncher#launch},
1211
- * e.g., from a route guard or app initializer.
1212
- *
1213
- * - **APP_INITIALIZER**
1214
- * Starts the workbench during application bootstrapping, blocking Angular's app startup until the workbench is ready.
1215
- * No splash is displayed.
1216
- *
1217
- * @deprecated since version 19.0.0-beta.3. To start the workbench in an app initializer, use Angular's `provideAppInitializer()` function: `provideAppInitializer(() => inject(WorkbenchLauncher).launch())`. Otherwise, no migration is necessary. No replacement. API will be removed in version 21.
1218
- */
1219
- launcher?: 'LAZY' | 'APP_INITIALIZER';
1220
- /**
1221
- * Specifies the component to display in `<wb-workbench>` while the workbench is starting.
1222
- *
1223
- * Note: No splash screen is displayed when using the app initializer strategy.
1224
- *
1225
- * @deprecated since version 19.0.0-beta.3. Property has been moved. Configure the splash in `WorkbenchConfig.splashComponent`. Property will be removed in version 21.
1226
- */
1227
- splash?: ComponentType<unknown>;
1228
- };
1229
1364
  /**
1230
1365
  * Configures microfrontend support in the workbench, allowing the integration of microfrontends as workbench views or
1231
1366
  * workbench popups.
@@ -1246,7 +1381,7 @@ declare abstract class WorkbenchConfig {
1246
1381
  * "SCION Microfrontend Platform DevTools".
1247
1382
  *
1248
1383
  * Typically, the host app provides API to integrated micro apps via the intent mechanism. Consider registering intent handlers
1249
- * under the DI token {@link MICROFRONTEND_PLATFORM_POST_STARTUP}.
1384
+ * in an initializer function registered via {@link provideMicrofrontendPlatformInitializer}.
1250
1385
  */
1251
1386
  abstract microfrontendPlatform?: MicrofrontendPlatformConfig | Type<MicrofrontendPlatformConfigLoader>;
1252
1387
  /**
@@ -1387,20 +1522,6 @@ interface ViewMenuItemsConfig {
1387
1522
  * Configures a built-in menu item.
1388
1523
  */
1389
1524
  interface MenuItemConfig {
1390
- /**
1391
- * @deprecated since version 19.0.0-beta.2. Set to `false` in {@link ViewMenuItemsConfig} to exclude the menu item. API will be removed in version 21.
1392
- */
1393
- visible?: boolean;
1394
- /**
1395
- * Specifies the text of this menu item.
1396
- *
1397
- * Can be a string or a function that returns a string or a {@link Signal}.
1398
- *
1399
- * The function can call `inject` to get any required dependencies, or use `toSignal` to convert an observable to a signal.
1400
- *
1401
- * @deprecated since version 19.0.0-beta.3. Register a text provider to change or localize menu item texts. Register the text provider via workbench configuration passed to the `provideWorkbench` function. API will be removed in version 21.
1402
- */
1403
- text?: string | (() => string | Signal<string>);
1404
1525
  accelerator?: string[];
1405
1526
  group?: string;
1406
1527
  cssClass?: string | string[];
@@ -1514,7 +1635,7 @@ interface Disposable {
1514
1635
  */
1515
1636
  declare abstract class WorkbenchPart {
1516
1637
  /**
1517
- * Unique identity of this part.
1638
+ * Identity of this part.
1518
1639
  */
1519
1640
  abstract readonly id: PartId;
1520
1641
  /**
@@ -1639,7 +1760,7 @@ interface WorkbenchPartNavigation {
1639
1760
  */
1640
1761
  declare abstract class WorkbenchView {
1641
1762
  /**
1642
- * Unique identity of this view.
1763
+ * Identity of this view.
1643
1764
  *
1644
1765
  * @see alternativeId
1645
1766
  */
@@ -1659,24 +1780,6 @@ declare abstract class WorkbenchView {
1659
1780
  * A view can be navigated using {@link WorkbenchRouter#navigate} or {@link WorkbenchLayout#navigateView}.
1660
1781
  */
1661
1782
  abstract readonly navigation: Signal<WorkbenchViewNavigation | undefined>;
1662
- /**
1663
- * Hint passed to the navigation.
1664
- *
1665
- * @deprecated since version 19.0.0-beta.2. Use {@link navigation.hint} instead. API will be removed in version 21.
1666
- */
1667
- abstract readonly navigationHint: Signal<string | undefined>;
1668
- /**
1669
- * Data passed to the navigation.
1670
- *
1671
- * @deprecated since version 19.0.0-beta.2. Use {@link navigation.data} instead. API will be removed in version 21.
1672
- */
1673
- abstract readonly navigationData: Signal<NavigationData>;
1674
- /**
1675
- * State passed to the navigation.
1676
- *
1677
- * @deprecated since version 19.0.0-beta.2. Use {@link navigation.state} instead. API will be removed in version 21.
1678
- */
1679
- abstract readonly navigationState: Signal<NavigationState>;
1680
1783
  /**
1681
1784
  * Part which contains this view.
1682
1785
  *
@@ -1741,12 +1844,6 @@ declare abstract class WorkbenchView {
1741
1844
  * Menu items associated with this view.
1742
1845
  */
1743
1846
  abstract readonly menuItems: Signal<WorkbenchMenuItem[]>;
1744
- /**
1745
- * URL associated with this view.
1746
- *
1747
- * @deprecated since version 19.0.0-beta.2. Use {@link navigation.path} instead. API will be removed in version 21.
1748
- */
1749
- abstract readonly urlSegments: Signal<UrlSegment[]>;
1750
1847
  /**
1751
1848
  * Gets the activation instant of this view.
1752
1849
  */
@@ -1847,13 +1944,13 @@ interface WorkbenchViewNavigation {
1847
1944
  /**
1848
1945
  * Handle to interact with a dialog opened via {@link WorkbenchDialogService}.
1849
1946
  *
1850
- * The dialog component can inject this handle to interact with the dialog, such as setting the title or closing the dialog.
1947
+ * The dialog component can inject this handle to interact with the dialog.
1851
1948
  *
1852
1949
  * Dialog inputs are available as input properties in the dialog component.
1853
1950
  */
1854
- declare abstract class WorkbenchDialog<R = unknown> {
1951
+ declare abstract class WorkbenchDialog {
1855
1952
  /**
1856
- * Unique identity of this dialog.
1953
+ * Identity of this dialog.
1857
1954
  */
1858
1955
  abstract readonly id: DialogId;
1859
1956
  /**
@@ -1864,7 +1961,7 @@ declare abstract class WorkbenchDialog<R = unknown> {
1864
1961
  abstract get title(): Signal<Translatable | undefined>;
1865
1962
  abstract set title(title: Translatable | undefined);
1866
1963
  /**
1867
- * Specifies the preferred dialog size.
1964
+ * Sets the preferred dialog size. Defaults to the content's intrinsic size, constrained by min and max size, if set.
1868
1965
  */
1869
1966
  abstract readonly size: WorkbenchDialogSize;
1870
1967
  /**
@@ -1898,23 +1995,27 @@ declare abstract class WorkbenchDialog<R = unknown> {
1898
1995
  /**
1899
1996
  * Closes the dialog. Optionally, pass a result or an error to the dialog opener.
1900
1997
  */
1901
- abstract close(result?: R | Error): void;
1998
+ abstract close<R>(result?: R | Error): void;
1902
1999
  }
1903
2000
  /**
1904
2001
  * Represents the preferred dialog size.
1905
2002
  */
1906
2003
  interface WorkbenchDialogSize {
2004
+ /**
2005
+ * Specifies the height of the dialog, constrained by {@link minHeight} and {@link maxHeight}, if any.
2006
+ */
2007
+ get height(): Signal<string | undefined>;
2008
+ set height(height: string | undefined);
2009
+ /**
2010
+ * Specifies the width of the dialog, constrained by {@link minWidth} and {@link maxWidth}, if any.
2011
+ */
2012
+ get width(): Signal<string | undefined>;
2013
+ set width(width: string | undefined);
1907
2014
  /**
1908
2015
  * Specifies the minimum height of the dialog.
1909
2016
  */
1910
2017
  get minHeight(): Signal<string | undefined>;
1911
2018
  set minHeight(minHeight: string | undefined);
1912
- /**
1913
- * Specifies the height of the dialog, displaying a vertical scrollbar if its content overflows.
1914
- * If not specified, the dialog adapts its height to its context height, respecting any `minHeight' or `maxHeight' constraint.
1915
- */
1916
- get height(): Signal<string | undefined>;
1917
- set height(height: string | undefined);
1918
2019
  /**
1919
2020
  * Specifies the maximum height of the dialog.
1920
2021
  */
@@ -1925,12 +2026,6 @@ interface WorkbenchDialogSize {
1925
2026
  */
1926
2027
  get minWidth(): Signal<string | undefined>;
1927
2028
  set minWidth(minWidth: string | undefined);
1928
- /**
1929
- * Specifies the width of the dialog, displaying a horizontal scrollbar if its content overflows.
1930
- * If not specified, the dialog adapts its width to its context width, respecting any `minWidth' or `maxWidth' constraint.
1931
- */
1932
- get width(): Signal<string | undefined>;
1933
- set width(width: string | undefined);
1934
2029
  /**
1935
2030
  * Specifies the maximum width of the dialog.
1936
2031
  */
@@ -1939,250 +2034,99 @@ interface WorkbenchDialogSize {
1939
2034
  }
1940
2035
 
1941
2036
  /**
1942
- * Represents a point on the page or view, optionally with a dimension, where a workbench popup should be attached.
2037
+ * A popup is a visual workbench element for displaying content above other content. The popup is positioned relative
2038
+ * to an anchor based on its preferred alignment. The anchor can be an element or a coordinate.
2039
+ *
2040
+ * The popup component can inject this handle to interact with the popup.
2041
+ *
2042
+ * Popup inputs are available as input properties in the popup component.
2043
+ *
2044
+ * @see WorkbenchPopupService
1943
2045
  */
1944
- type PopupOrigin = (Point | TopLeftPoint | TopRightPoint | BottomLeftPoint | BottomRightPoint) & {
1945
- width?: number;
1946
- height?: number;
1947
- };
2046
+ declare abstract class WorkbenchPopup {
2047
+ /**
2048
+ * Identity of this popup.
2049
+ */
2050
+ abstract readonly id: PopupId;
2051
+ /**
2052
+ * Sets the preferred popup size. Defaults to the content's intrinsic size, constrained by min and max size, if set.
2053
+ */
2054
+ abstract readonly size: WorkbenchPopupSize;
2055
+ /**
2056
+ * Specifies CSS class(es) to add to the popup, e.g., to locate the popup in tests.
2057
+ */
2058
+ abstract get cssClass(): Signal<string[]>;
2059
+ abstract set cssClass(cssClass: string | string[]);
2060
+ /**
2061
+ * Indicates whether this popup has the focus.
2062
+ */
2063
+ abstract readonly focused: Signal<boolean>;
2064
+ /**
2065
+ * Sets a result that will be passed to the popup opener when the popup is closed on focus loss {@link CloseStrategy#onFocusLost}.
2066
+ */
2067
+ abstract setResult<R>(result?: R): void;
2068
+ /**
2069
+ * Closes the popup. Optionally, pass a result or an error to the popup opener.
2070
+ */
2071
+ abstract close<R>(result?: R | Error): void;
2072
+ }
1948
2073
  /**
1949
- * Coordinate relative to the "x/y" corner of the view or page viewport.
2074
+ * Represents the preferred size of a popup.
1950
2075
  */
1951
- interface Point {
1952
- x: number;
1953
- y: number;
2076
+ interface WorkbenchPopupSize {
2077
+ /**
2078
+ * Specifies the height of the popup, constrained by {@link minHeight} and {@link maxHeight}, if any.
2079
+ */
2080
+ get height(): Signal<string | undefined>;
2081
+ set height(height: string | undefined);
2082
+ /**
2083
+ * Specifies the width of the popup, constrained by {@link minWidth} and {@link maxWidth}, if any.
2084
+ */
2085
+ get width(): Signal<string | undefined>;
2086
+ set width(width: string | undefined);
2087
+ /**
2088
+ * Specifies the minimum height of the popup.
2089
+ */
2090
+ get minHeight(): Signal<string | undefined>;
2091
+ set minHeight(minHeight: string | undefined);
2092
+ /**
2093
+ * Specifies the maximum height of the popup.
2094
+ */
2095
+ get maxHeight(): Signal<string | undefined>;
2096
+ set maxHeight(maxHeight: string | undefined);
2097
+ /**
2098
+ * Specifies the minimum width of the popup.
2099
+ */
2100
+ get minWidth(): Signal<string | undefined>;
2101
+ set minWidth(minWidth: string | undefined);
2102
+ /**
2103
+ * Specifies the maximum width of the popup.
2104
+ */
2105
+ get maxWidth(): Signal<string | undefined>;
2106
+ set maxWidth(maxWidth: string | undefined);
1954
2107
  }
2108
+
1955
2109
  /**
1956
- * Coordinate relative to the "top/left" corner of the view or page viewport.
2110
+ * The signature of a function to confirm closing a view., e.g., if dirty.
1957
2111
  *
1958
- * This is equivalent to passing a "x/y" coordinate as {@link Point}.
2112
+ * The function can call `inject` to get dependencies.
1959
2113
  */
1960
- interface TopLeftPoint {
1961
- top: number;
1962
- left: number;
1963
- }
2114
+ type CanCloseFn = () => Observable<boolean> | Promise<boolean> | boolean;
1964
2115
  /**
1965
- * Coordinate relative to the "top/right" corner of the view or page viewport.
2116
+ * Reference to a `CanClose` guard registered on a view.
1966
2117
  */
1967
- interface TopRightPoint {
1968
- top: number;
1969
- right: number;
2118
+ interface CanCloseRef {
2119
+ /**
2120
+ * Removes the `CanClose` guard from the view.
2121
+ *
2122
+ * Has no effect if another guard was registered in the meantime.
2123
+ */
2124
+ dispose(): void;
1970
2125
  }
1971
2126
  /**
1972
- * Coordinate relative to the "bottom/left" corner of the view or page viewport.
1973
- */
1974
- interface BottomLeftPoint {
1975
- bottom: number;
1976
- left: number;
1977
- }
1978
- /**
1979
- * Coordinate relative to the "bottom/right" corner of the view or page viewport.
1980
- */
1981
- interface BottomRightPoint {
1982
- bottom: number;
1983
- right: number;
1984
- }
1985
-
1986
- /**
1987
- * Controls the appearance and behavior of a popup.
1988
- */
1989
- declare abstract class PopupConfig {
1990
- /**
1991
- * Controls where to open the popup.
1992
- *
1993
- * Can be an HTML element or a coordinate. The coordinate is relative to the {@link context}, defaulting to the calling context.
1994
- *
1995
- * Supported coordinate pairs:
1996
- * - x/y: Relative to the top/left corner of the context.
1997
- * - top/left: Same as x/y.
1998
- * - top/right: Relative to the top/right corner of the context.
1999
- * - bottom/left: Relative to the bottom/left corner of the context.
2000
- * - bottom/right: Relative to the bottom/right corner of the context.
2001
- *
2002
- * Passing an Observable allows for updating the coordinate.
2003
- */
2004
- abstract readonly anchor: ElementRef<Element> | Element | PopupOrigin | Observable<PopupOrigin>;
2005
- /**
2006
- * Specifies the component to display in the popup.
2007
- *
2008
- * In the component, you can inject the popup handle {@link WorkbenchPopup} to interact with the popup, such as to close it
2009
- * or obtain its input data.
2010
- */
2011
- abstract readonly component: Type<any>;
2012
- /**
2013
- * Instructs Angular how to construct the component. In most cases, construct options need not to be set.
2014
- */
2015
- readonly componentConstructOptions?: {
2016
- /**
2017
- * Sets the injector for the instantiation of the popup component, giving you control over the objects available
2018
- * for injection into the popup component. If not specified, uses the application's root injector, or the view's
2019
- * injector if opened in the context of a view.
2020
- *
2021
- * ```ts
2022
- * Injector.create({
2023
- * parent: ...,
2024
- * providers: [
2025
- * {provide: <DiToken>, useValue: <value>}
2026
- * ],
2027
- * })
2028
- * ```
2029
- */
2030
- injector?: Injector;
2031
- /**
2032
- * Specifies providers to be registered with the popup injector. Unlike providers that are registered via a separate {@link injector},
2033
- * passed providers are registered in the same injector as the popup handle itself, allowing for dependency injection of the popup handle.
2034
- */
2035
- providers?: StaticProvider[];
2036
- /**
2037
- * Sets the component's attachment point in Angular's logical component tree (not the DOM tree used for rendering), effecting when
2038
- * Angular checks the component for changes during a change detection cycle. If not set, inserts the component at the top level
2039
- * in the component tree.
2040
- */
2041
- viewContainerRef?: ViewContainerRef;
2042
- };
2043
- /**
2044
- * Hint where to align the popup relative to the popup anchor, unless there is not enough space available in that area. By default,
2045
- * if not specified, the popup opens north of the anchor.
2046
- */
2047
- readonly align?: 'east' | 'west' | 'north' | 'south';
2048
- /**
2049
- * Optional data to pass to the popup component. In the component, you can inject the popup handle {@link WorkbenchPopup} to read input data.
2050
- */
2051
- readonly input?: any;
2052
- /**
2053
- * Controls when to close the popup.
2054
- */
2055
- readonly closeStrategy?: CloseStrategy;
2056
- /**
2057
- * Specifies the preferred popup size. If not specified, the popup adjusts its size to the content size.
2058
- */
2059
- readonly size?: PopupSize;
2060
- /**
2061
- * Specifies CSS class(es) to add to the popup, e.g., to locate the popup in tests.
2062
- */
2063
- readonly cssClass?: string | string[];
2064
- /**
2065
- * Binds the popup to a context (e.g., a part or view). Defaults to the calling context.
2066
- *
2067
- * The popup is displayed only if the context is visible and closes when the context is disposed.
2068
- *
2069
- * Set to `null` to open the popup outside a context.
2070
- */
2071
- abstract context?: ViewId | PartId | DialogId | PopupId | Context$2 | null;
2072
- }
2073
- /**
2074
- * Specifies when to close the popup.
2075
- */
2076
- interface CloseStrategy {
2077
- /**
2078
- * Controls if to close the popup on focus loss, returning the result set via {@link WorkbenchPopup#setResult} to the popup opener.
2079
- * Defaults to `true`.
2080
- */
2081
- onFocusLost?: boolean;
2082
- /**
2083
- * Controls if to close the popup when pressing escape. Defaults to `true`.
2084
- * No return value will be passed to the popup opener.
2085
- */
2086
- onEscape?: boolean;
2087
- }
2088
- /**
2089
- * Represents the preferred popup size as specified by the popup opener.
2090
- */
2091
- interface PopupSize {
2092
- /**
2093
- * Specifies the min-height of the popup.
2094
- */
2095
- minHeight?: string;
2096
- /**
2097
- * Specifies the height of the popup.
2098
- */
2099
- height?: string;
2100
- /**
2101
- * Specifies the max-height of the popup.
2102
- */
2103
- maxHeight?: string;
2104
- /**
2105
- * Specifies the min-width of the popup.
2106
- */
2107
- minWidth?: string;
2108
- /**
2109
- * Specifies the width of the popup.
2110
- */
2111
- width?: string;
2112
- /**
2113
- * Specifies the max-width of the popup.
2114
- */
2115
- maxWidth?: string;
2116
- }
2117
- /**
2118
- * @deprecated since version 20.0.0-beta.9. Set view id directly. Migrate `{context: {viewId: 'view.x'}}` to `{context: 'view.x'}`. Marked for removal in version 22.
2119
- */
2120
- interface Context$2 {
2121
- /**
2122
- * @deprecated since version 20.0.0-beta.9. Set view id directly. Migrate `{context: {viewId: 'view.x'}}` to `{context: 'view.x'}`. Marked for removal in version 22.
2123
- */
2124
- viewId?: ViewId | null;
2125
- }
2126
-
2127
- /**
2128
- * Handle to interact with a popup opened via {@link WorkbenchPopupService}.
2129
- *
2130
- * The popup component can inject this handle to interact with the popup.
2131
- *
2132
- * Popup inputs are available via {@link WorkbenchPopup.input} property.
2133
- */
2134
- declare abstract class WorkbenchPopup<T = unknown, R = unknown> {
2135
- /**
2136
- * Unique identity of this popup.
2137
- */
2138
- abstract readonly id: PopupId;
2139
- /**
2140
- * Input data as passed by the popup opener when opened the popup, or `undefined` if not passed.
2141
- */
2142
- abstract readonly input: T | undefined;
2143
- /**
2144
- * Preferred popup size as specified by the popup opener, or `undefined` if not set.
2145
- */
2146
- abstract readonly size: PopupSize | undefined;
2147
- /**
2148
- * CSS classes associated with the popup.
2149
- */
2150
- abstract readonly cssClasses: string[];
2151
- /**
2152
- * Indicates whether this popup has the focus.
2153
- */
2154
- abstract readonly focused: Signal<boolean>;
2155
- /**
2156
- * Sets a result that will be passed to the popup opener when the popup is closed on focus loss {@link CloseStrategy#onFocusLost}.
2157
- */
2158
- abstract setResult(result?: R): void;
2159
- /**
2160
- * Closes the popup. Optionally, pass a result or an error to the popup opener.
2161
- */
2162
- abstract close(result?: R | Error): void;
2163
- }
2164
-
2165
- /**
2166
- * The signature of a function to confirm closing a view., e.g., if dirty.
2167
- *
2168
- * The function can call `inject` to get dependencies.
2169
- */
2170
- type CanCloseFn = () => Observable<boolean> | Promise<boolean> | boolean;
2171
- /**
2172
- * Reference to a `CanClose` guard registered on a view.
2173
- */
2174
- interface CanCloseRef {
2175
- /**
2176
- * Removes the `CanClose` guard from the view.
2177
- *
2178
- * Has no effect if another guard was registered in the meantime.
2179
- */
2180
- dispose(): void;
2181
- }
2182
- /**
2183
- * Represents an action of a {@link WorkbenchPart}.
2184
- *
2185
- * Part actions are displayed in the part bar, enabling interaction with the part and its content. Actions can be aligned to the left or right.
2127
+ * Represents an action of a {@link WorkbenchPart}.
2128
+ *
2129
+ * Part actions are displayed in the part bar, enabling interaction with the part and its content. Actions can be aligned to the left or right.
2186
2130
  */
2187
2131
  interface WorkbenchPartAction {
2188
2132
  /**
@@ -2194,7 +2138,7 @@ interface WorkbenchPartAction {
2194
2138
  */
2195
2139
  content: ComponentType<unknown> | TemplateRef<unknown>;
2196
2140
  /**
2197
- * Optional data to pass to the component or template.
2141
+ * Specifies data to pass to the component or template.
2198
2142
  *
2199
2143
  * If using a component, inputs are available as input properties.
2200
2144
  *
@@ -2253,7 +2197,7 @@ interface WorkbenchMenuItem {
2253
2197
  */
2254
2198
  content: ComponentType<unknown> | TemplateRef<unknown>;
2255
2199
  /**
2256
- * Optional data to pass to the component or template.
2200
+ * Specifies data to pass to the component or template.
2257
2201
  *
2258
2202
  * If using a component, inputs are available as input properties.
2259
2203
  *
@@ -2334,21 +2278,6 @@ type WorkbenchPartActionFn = (part: WorkbenchPart) => WorkbenchPartAction | Comp
2334
2278
  * Use Angular's `untracked` function to execute code outside this reactive context.
2335
2279
  */
2336
2280
  type WorkbenchViewMenuItemFn = (view: WorkbenchView) => WorkbenchMenuItem | null;
2337
- /**
2338
- * Information about a workbench theme.
2339
- *
2340
- * @deprecated since version 19.0.0-beta.3. Read the theme from `WorkbenchService.settings.theme` signal, and the color scheme from 'getComputedStyle(inject(DOCUMENT).documentElement).colorScheme'. API will be removed in version 21.
2341
- */
2342
- interface WorkbenchTheme {
2343
- /**
2344
- * The name of the theme.
2345
- */
2346
- name: string;
2347
- /**
2348
- * The color scheme of the theme.
2349
- */
2350
- colorScheme: 'light' | 'dark';
2351
- }
2352
2281
  /**
2353
2282
  * Union of workbench elements.
2354
2283
  */
@@ -2514,19 +2443,6 @@ declare abstract class WorkbenchService {
2514
2443
  * @return handle to unregister the menu item.
2515
2444
  */
2516
2445
  abstract registerViewMenuItem(fn: WorkbenchViewMenuItemFn): Disposable;
2517
- /**
2518
- * Switches the theme of the workbench.
2519
- *
2520
- * Themes can be registered when loading the `@scion/workbench` SCSS module in the application's `styles.scss` file.
2521
- * By default, SCION provides a light and a dark theme, `scion-light` and `scion-dark`.
2522
- *
2523
- * See the documentation of `@scion/workbench` SCSS module for more information.
2524
- *
2525
- * @param theme - The name of the theme to switch to.
2526
- *
2527
- * @deprecated since version 19.0.0-beta.3. Switch theme using `WorkbenchService.settings.theme` signal. API will be removed in version 21.
2528
- */
2529
- abstract switchTheme(theme: string): Promise<void>;
2530
2446
  /**
2531
2447
  * Defines settings to adapt the workbench to personal preferences and working styles.
2532
2448
  *
@@ -2558,12 +2474,6 @@ declare abstract class WorkbenchService {
2558
2474
  * Provides the focused workbench element, or `null` if the focus is on a DOM element outside any workbench element.
2559
2475
  */
2560
2476
  abstract readonly activeElement: Signal<WorkbenchElement | null>;
2561
- /**
2562
- * Provides the current workbench theme, if any.
2563
- *
2564
- * @deprecated since version 19.0.0-beta.3. Read the theme from `WorkbenchService.settings.theme` signal, and the color scheme from 'getComputedStyle(inject(DOCUMENT).documentElement).colorScheme'. API will be removed in version 21.
2565
- */
2566
- abstract readonly theme: Signal<WorkbenchTheme | null>;
2567
2477
  static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchService, never>;
2568
2478
  static ɵprov: i0.ɵɵInjectableDeclaration<WorkbenchService>;
2569
2479
  }
@@ -2584,22 +2494,6 @@ declare abstract class WorkbenchStartup {
2584
2494
  * After startup, the workbench layout is available.
2585
2495
  */
2586
2496
  abstract readonly whenDone: Promise<void>;
2587
- /**
2588
- * Indicates whether the workbench has completed startup.
2589
- *
2590
- * After startup, the workbench layout is available.
2591
- *
2592
- * @deprecated since version 19.0.0-beta.3. Use `WorkbenchStartup.done` instead. API will be removed in version 21.
2593
- */
2594
- abstract readonly isStarted: Signal<boolean>;
2595
- /**
2596
- * Resolves when the workbench completes startup.
2597
- *
2598
- * After startup, the workbench layout is available.
2599
- *
2600
- * @deprecated since version 19.0.0-beta.3. Use `WorkbenchStartup.whenDone` instead. API will be removed in version 21.
2601
- */
2602
- abstract readonly whenStarted: Promise<true>;
2603
2497
  static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchStartup, never>;
2604
2498
  static ɵprov: i0.ɵɵInjectableDeclaration<WorkbenchStartup>;
2605
2499
  }
@@ -2624,15 +2518,6 @@ interface MPartGrid {
2624
2518
  */
2625
2519
  referencePartId?: PartId;
2626
2520
  }
2627
- /**
2628
- * {@link MPartGrid} with additional fields not serialized into the URL.
2629
- */
2630
- interface ɵMPartGrid extends MPartGrid {
2631
- /**
2632
- * Indicates if this grid was migrated from an older version.
2633
- */
2634
- migrated?: true;
2635
- }
2636
2521
  /**
2637
2522
  * Represents a node in the grid.
2638
2523
  *
@@ -2724,7 +2609,7 @@ interface MView {
2724
2609
  /**
2725
2610
  * Grids referenced in the workbench layout.
2726
2611
  */
2727
- interface WorkbenchGrids<T = ɵMPartGrid> {
2612
+ interface WorkbenchGrids<T = MPartGrid> {
2728
2613
  /**
2729
2614
  * Reference to the "root" grid of the workbench layout.
2730
2615
  */
@@ -3710,6 +3595,10 @@ interface PortalOptions {
3710
3595
  * Providers registered with the injector for the instantiation of the component.
3711
3596
  */
3712
3597
  providers?: Provider[];
3598
+ /**
3599
+ * Optional name used in portal lifecycle logs.
3600
+ */
3601
+ debugName?: string;
3713
3602
  }
3714
3603
  /**
3715
3604
  * Lifecycle hook for the component rendered by {@link WbComponentPortal} after attached to the DOM.
@@ -4136,7 +4025,6 @@ declare class DesktopSlotComponent implements OnAttach, OnDetach {
4136
4025
  private readonly _host;
4137
4026
  private readonly _document;
4138
4027
  private readonly _viewport;
4139
- private readonly _logger;
4140
4028
  private _scrollTop;
4141
4029
  private _scrollLeft;
4142
4030
  private _activeElementBeforeDetach;
@@ -4149,7 +4037,6 @@ declare class DesktopSlotComponent implements OnAttach, OnDetach {
4149
4037
  * Method invoked before detaching this component from the DOM.
4150
4038
  */
4151
4039
  onDetach(): void;
4152
- protected onLegacyDesktopActivate(): void;
4153
4040
  static ɵfac: i0.ɵɵFactoryDeclaration<DesktopSlotComponent, never>;
4154
4041
  static ɵcmp: i0.ɵɵComponentDeclaration<DesktopSlotComponent, "wb-desktop-slot", never, {}, {}, never, never, true, never>;
4155
4042
  }
@@ -4194,7 +4081,7 @@ declare class MainAreaPartComponent {
4194
4081
  private readonly _layout;
4195
4082
  private readonly _viewDragService;
4196
4083
  protected readonly part: ɵWorkbenchPart;
4197
- protected readonly mainAreaGrid: i0.SignalMPartGrid>;
4084
+ protected readonly mainAreaGrid: i0.Signal<MPartGrid>;
4198
4085
  protected readonly desktop: WorkbenchDesktop;
4199
4086
  protected readonly dasherize: typeof dasherize;
4200
4087
  protected readonly canDrop: i0.Signal<boolean>;
@@ -4221,7 +4108,6 @@ declare class PartComponent implements OnInit {
4221
4108
  * Constructs view components of inactive views, so they can initialize, e.g., to set the view tab title.
4222
4109
  */
4223
4110
  private constructInactiveViewComponents;
4224
- private addHostCssClasses;
4225
4111
  private installComponentLifecycleLogger;
4226
4112
  static ɵfac: i0.ɵɵFactoryDeclaration<PartComponent, never>;
4227
4113
  static ɵcmp: i0.ɵɵComponentDeclaration<PartComponent, "wb-part", never, {}, {}, never, never, true, never>;
@@ -4232,9 +4118,9 @@ declare class PartComponent implements OnInit {
4232
4118
  */
4233
4119
  interface WorkbenchDialogOptions {
4234
4120
  /**
4235
- * Optional data to pass to the dialog component. Inputs are available as input properties in the dialog component.
4121
+ * Specifies data to pass to the dialog component. Inputs are available as input properties in the dialog component.
4236
4122
  *
4237
- * **Example:**
4123
+ * @example - Reading inputs in the component
4238
4124
  * ```ts
4239
4125
  * public someInput = input.required<string>();
4240
4126
  * ```
@@ -4253,20 +4139,19 @@ interface WorkbenchDialogOptions {
4253
4139
  */
4254
4140
  modality?: 'none' | 'context' | 'application' | ViewModality$1;
4255
4141
  /**
4256
- * Binds the dialog to a context (e.g., a part or view). Defaults to the calling context.
4142
+ * Binds the dialog to a context (e.g., part or view). Defaults to the calling context.
4257
4143
  *
4258
4144
  * The dialog is displayed only if the context is visible and closes when the context is disposed.
4259
4145
  * The dialog is opened in the center of its context, if any, unless opened from the peripheral area.
4260
4146
  *
4261
4147
  * Set to `null` to open the dialog outside a context.
4262
4148
  */
4263
- context?: ViewId | PartId | DialogId | PopupId | Context$1 | null;
4149
+ context?: ViewId | PartId | DialogId | PopupId | Context$3 | null;
4264
4150
  /**
4265
- * Sets the injector for the instantiation of the dialog component, giving control over the objects available
4266
- * for injection into the dialog component. If not specified, uses the application's root injector, or the view's
4267
- * injector if opened in the context of a view.
4151
+ * Specifies the injector for the instantiation of the dialog, giving control over the objects available
4152
+ * for injection in the dialog component. Defaults to the application's root injector.
4268
4153
  *
4269
- * **Example:**
4154
+ * @example - Creating an injector with a DI token
4270
4155
  * ```ts
4271
4156
  * Injector.create({
4272
4157
  * parent: ...,
@@ -4277,6 +4162,12 @@ interface WorkbenchDialogOptions {
4277
4162
  * ```
4278
4163
  */
4279
4164
  injector?: Injector;
4165
+ /**
4166
+ * Specifies providers available for injection in the dialog component.
4167
+ *
4168
+ * Providers can inject {@link WorkbenchDialog} to interact with the dialog.
4169
+ */
4170
+ providers?: Provider[];
4280
4171
  /**
4281
4172
  * Specifies CSS class(es) to add to the dialog, e.g., to locate the dialog in tests.
4282
4173
  */
@@ -4293,7 +4184,7 @@ type ViewModality$1 = 'view';
4293
4184
  /**
4294
4185
  * @deprecated since version 20.0.0-beta.9. Set view id directly. Migrate `{context: {viewId: 'view.x'}}` to `{context: 'view.x'}`. Marked for removal in version 22.
4295
4186
  */
4296
- interface Context$1 {
4187
+ interface Context$3 {
4297
4188
  /**
4298
4189
  * @deprecated since version 20.0.0-beta.9. Set view id directly. Migrate `{context: {viewId: 'view.x'}}` to `{context: 'view.x'}`. Marked for removal in version 22.
4299
4190
  */
@@ -4403,7 +4294,7 @@ interface WorkbenchInvocationContext {
4403
4294
  }
4404
4295
 
4405
4296
  /** @inheritDoc */
4406
- declare class ɵWorkbenchDialog<R = unknown> implements WorkbenchDialog<R>, Blockable, Blocking {
4297
+ declare class ɵWorkbenchDialog implements WorkbenchDialog, Blockable, Blocking {
4407
4298
  id: DialogId;
4408
4299
  component: ComponentType<unknown>;
4409
4300
  invocationContext: WorkbenchInvocationContext | null;
@@ -4439,9 +4330,9 @@ declare class ɵWorkbenchDialog<R = unknown> implements WorkbenchDialog<R>, Bloc
4439
4330
  /**
4440
4331
  * Waits for the dialog to close, resolving to its result or rejecting if closed with an error.
4441
4332
  */
4442
- waitForClose(): Promise<R | undefined>;
4333
+ waitForClose<R>(): Promise<R | undefined>;
4443
4334
  /** @inheritDoc */
4444
- close(result?: R | Error): void;
4335
+ close<R>(result?: R | Error): void;
4445
4336
  /**
4446
4337
  * Inputs passed to the dialog.
4447
4338
  */
@@ -4638,7 +4529,6 @@ declare class ViewSlotComponent implements OnAttach, OnDetach {
4638
4529
  */
4639
4530
  onDetach(): void;
4640
4531
  private installMenuAccelerators;
4641
- private addHostCssClasses;
4642
4532
  /**
4643
4533
  * Unsets the active workbench element if this view was the focused element when its part is deactivated,
4644
4534
  * such as when closing the activity containing this view. Otherwise, the active element would not be unset.
@@ -4663,18 +4553,13 @@ declare class ɵWorkbenchView implements WorkbenchView, Blockable {
4663
4553
  private readonly _viewDragService;
4664
4554
  private readonly _focusMonitor;
4665
4555
  private readonly _logger;
4666
- private readonly _adapters;
4667
4556
  private readonly _title;
4668
4557
  private readonly _heading;
4669
4558
  private readonly _dirty;
4670
4559
  private readonly _closable;
4671
4560
  private readonly _scrolledIntoView;
4672
- alternativeId: string | undefined;
4561
+ readonly alternativeId: string | undefined;
4673
4562
  readonly navigation: i0.WritableSignal<WorkbenchViewNavigation | undefined>;
4674
- readonly navigationHint: Signal<string | undefined>;
4675
- readonly navigationData: Signal<_scion_workbench.NavigationData>;
4676
- readonly navigationState: Signal<_scion_workbench.NavigationState>;
4677
- readonly urlSegments: Signal<_angular_router.UrlSegment[]>;
4678
4563
  readonly position: Signal<number>;
4679
4564
  readonly first: Signal<boolean>;
4680
4565
  readonly last: Signal<boolean>;
@@ -4751,20 +4636,6 @@ declare class ɵWorkbenchView implements WorkbenchView, Blockable {
4751
4636
  }): void;
4752
4637
  /** @inheritDoc */
4753
4638
  canClose(canClose: CanCloseFn): CanCloseRef;
4754
- /**
4755
- * Registers an adapter for this view, replacing any previously registered adapter of the same type.
4756
- *
4757
- * Adapters enable loosely coupled extension of an object, allowing one object to be adapted to another.
4758
- */
4759
- registerAdapter<T>(adapterType: AbstractType<T> | Type<T>, object: T): void;
4760
- /**
4761
- * Unregisters the given adapter. Has no effect if not registered.
4762
- */
4763
- unregisterAdapter(adapterType: AbstractType<unknown> | Type<unknown>): void;
4764
- /**
4765
- * Adapts this object to the specified type. Returns `null` if no such object can be found.
4766
- */
4767
- adapt<T>(adapterType: AbstractType<T> | Type<T>): T | null;
4768
4639
  get destroyed(): Signal<boolean>;
4769
4640
  /**
4770
4641
  * Computes menu items matching this view.
@@ -4843,39 +4714,230 @@ declare class ɵWorkbenchPerspective implements WorkbenchPerspective {
4843
4714
  destroy(): void;
4844
4715
  }
4845
4716
 
4846
- /** @inheritDoc */
4847
- declare class ɵWorkbenchPopup<T = unknown, R = unknown> implements WorkbenchPopup<T, R>, Blockable {
4848
- id: PopupId;
4849
- invocationContext: WorkbenchInvocationContext | null;
4850
- private _config;
4851
- /** Injector for the popup; destroyed when the popup is closed. */
4852
- readonly injector: DestroyableInjector;
4853
- private readonly _overlayRef;
4854
- private readonly _focusMonitor;
4855
- private readonly _portal;
4856
- private readonly _componentRef;
4857
- private readonly _popupOrigin;
4858
- readonly cssClasses: string[];
4859
- readonly focused: Signal<boolean>;
4860
- readonly attached: Signal<boolean>;
4861
- readonly destroyed: i0.WritableSignal<boolean>;
4862
- readonly bounds: Signal<DOMRect | undefined>;
4863
- readonly blockedBy: Signal<ɵWorkbenchDialog | null>;
4864
- result: R | Error | undefined;
4865
- constructor(id: PopupId, invocationContext: WorkbenchInvocationContext | null, _config: PopupConfig);
4717
+ /**
4718
+ * Represents a point on the page or view, optionally with a dimension, where a workbench popup should be attached.
4719
+ */
4720
+ type PopupOrigin = (Point | TopLeftPoint | TopRightPoint | BottomLeftPoint | BottomRightPoint) & {
4721
+ width?: number;
4722
+ height?: number;
4866
4723
  /**
4867
- * Waits for the popup to close, resolving to its result or rejecting if closed with an error.
4724
+ * Specifies if the coordinate is relative to the context (e.g., part or view) or page viewport. Defaults to `context`.
4725
+ *
4726
+ * If relative to the viewport and bound to a context, the popup is still constrained by the context's bounds.
4868
4727
  */
4869
- waitForClose(): Promise<R | undefined>;
4728
+ relativeTo?: 'context' | 'viewport';
4729
+ };
4730
+ /**
4731
+ * Coordinate relative to the "x/y" corner of the view or page viewport.
4732
+ */
4733
+ interface Point {
4734
+ x: number;
4735
+ y: number;
4736
+ }
4737
+ /**
4738
+ * Coordinate relative to the "top/left" corner of the view or page viewport.
4739
+ *
4740
+ * This is equivalent to passing a "x/y" coordinate as {@link Point}.
4741
+ */
4742
+ interface TopLeftPoint {
4743
+ top: number;
4744
+ left: number;
4745
+ }
4746
+ /**
4747
+ * Coordinate relative to the "top/right" corner of the view or page viewport.
4748
+ */
4749
+ interface TopRightPoint {
4750
+ top: number;
4751
+ right: number;
4752
+ }
4753
+ /**
4754
+ * Coordinate relative to the "bottom/left" corner of the view or page viewport.
4755
+ */
4756
+ interface BottomLeftPoint {
4757
+ bottom: number;
4758
+ left: number;
4759
+ }
4760
+ /**
4761
+ * Coordinate relative to the "bottom/right" corner of the view or page viewport.
4762
+ */
4763
+ interface BottomRightPoint {
4764
+ bottom: number;
4765
+ right: number;
4766
+ }
4767
+
4768
+ /**
4769
+ * Controls the appearance and behavior of a popup.
4770
+ */
4771
+ interface WorkbenchPopupOptions {
4772
+ /**
4773
+ * Controls where to open the popup.
4774
+ *
4775
+ * Can be an HTML element or a coordinate. The coordinate is relative to the {@link context}, defaulting to the calling context.
4776
+ *
4777
+ * Supported coordinate pairs:
4778
+ * - x/y: Relative to the top/left corner of the context.
4779
+ * - top/left: Same as x/y.
4780
+ * - top/right: Relative to the top/right corner of the context.
4781
+ * - bottom/left: Relative to the bottom/left corner of the context.
4782
+ * - bottom/right: Relative to the bottom/right corner of the context.
4783
+ *
4784
+ * Passing an Observable allows for updating the coordinate.
4785
+ */
4786
+ anchor: ElementRef<Element> | Element | PopupOrigin | Observable<PopupOrigin>;
4787
+ /**
4788
+ * Controls where to align the popup relative to the popup anchor, unless there is not enough space available in that area. Defaults to `north`.
4789
+ */
4790
+ align?: 'east' | 'west' | 'north' | 'south';
4791
+ /**
4792
+ * Specifies data to pass to the popup component. Inputs are available as input properties in the popup component.
4793
+ *
4794
+ * @example - Reading inputs in the component
4795
+ * ```ts
4796
+ * public someInput = input.required<string>();
4797
+ * ```
4798
+ */
4799
+ inputs?: {
4800
+ [name: string]: unknown;
4801
+ };
4802
+ /**
4803
+ * Controls when to close the popup.
4804
+ */
4805
+ closeStrategy?: CloseStrategy$1;
4806
+ /**
4807
+ * Specifies the preferred popup size. Defaults to the content's intrinsic size, constrained by min and max size, if set.
4808
+ *
4809
+ * @deprecated since version 21.0.0-beta.1. Popup size should be set by the popup component. To migrate, inject `WorkbenchPopup` into the popup component and set the size via the `WorkbenchPopup.size` property. Marked for removal in version 22.
4810
+ */
4811
+ size?: {
4812
+ minHeight?: string;
4813
+ height?: string;
4814
+ maxHeight?: string;
4815
+ minWidth?: string;
4816
+ width?: string;
4817
+ maxWidth?: string;
4818
+ };
4819
+ /**
4820
+ * Specifies CSS class(es) to add to the popup, e.g., to locate the popup in tests.
4821
+ */
4822
+ cssClass?: string | string[];
4823
+ /**
4824
+ * Binds the popup to a context (e.g., part or view). Defaults to the calling context.
4825
+ *
4826
+ * The popup is displayed only if the context is visible and closes when the context is disposed.
4827
+ *
4828
+ * Set to `null` to open the popup outside a context.
4829
+ */
4830
+ context?: ViewId | PartId | DialogId | PopupId | Context$2 | null;
4831
+ /**
4832
+ * Specifies the injector for the instantiation of the popup, giving control over the objects available
4833
+ * for injection in the popup component. Defaults to the application's root injector.
4834
+ *
4835
+ * @example - Creating an injector with a DI token
4836
+ * ```ts
4837
+ * Injector.create({
4838
+ * parent: ...,
4839
+ * providers: [
4840
+ * {provide: <TOKEN>, useValue: <VALUE>}
4841
+ * ],
4842
+ * })
4843
+ * ```
4844
+ */
4845
+ injector?: Injector;
4846
+ /**
4847
+ * Specifies providers available for injection in the popup component.
4848
+ *
4849
+ * Providers can inject {@link WorkbenchPopup} to interact with the popup.
4850
+ */
4851
+ providers?: Provider[];
4852
+ }
4853
+ /**
4854
+ * Specifies when to close the popup.
4855
+ */
4856
+ interface CloseStrategy$1 {
4857
+ /**
4858
+ * Controls if to close the popup on focus loss, returning the result set via {@link WorkbenchPopup#setResult} to the popup opener.
4859
+ * Defaults to `true`.
4860
+ */
4861
+ onFocusLost?: boolean;
4862
+ /**
4863
+ * Controls if to close the popup when pressing escape. Defaults to `true`.
4864
+ *
4865
+ * No return value will be returned to the popup opener.
4866
+ */
4867
+ onEscape?: boolean;
4868
+ }
4869
+ /**
4870
+ * @deprecated since version 20.0.0-beta.9. Set view id directly. Migrate `{context: {viewId: 'view.x'}}` to `{context: 'view.x'}`. Marked for removal in version 22.
4871
+ */
4872
+ interface Context$2 {
4873
+ /**
4874
+ * @deprecated since version 20.0.0-beta.9. Set view id directly. Migrate `{context: {viewId: 'view.x'}}` to `{context: 'view.x'}`. Marked for removal in version 22.
4875
+ */
4876
+ viewId?: ViewId | null;
4877
+ }
4878
+
4879
+ /**
4880
+ * A popup is a visual workbench element for displaying content above other content. The popup is positioned relative
4881
+ * to an anchor based on its preferred alignment. The anchor can be an element or a coordinate.
4882
+ *
4883
+ * The popup component can inject this handle to interact with the popup.
4884
+ *
4885
+ * Popup inputs are available as input properties in the popup component.
4886
+ *
4887
+ * @see WorkbenchPopupService
4888
+ *
4889
+ * @deprecated since version 21.0.0-beta.1. Replaced by `WorkbenchPopup`. Marked for removal in version 22.
4890
+ */
4891
+ declare abstract class Popup<T = unknown, R = unknown> extends WorkbenchPopup {
4892
+ /**
4893
+ * Input data as passed by the popup opener when opened the popup, or `undefined` if not passed.
4894
+ *
4895
+ * @deprecated since version 21.0.0-beta.1. Use `WorkbenchPopupService` to open popups. Inputs are available as input properties in the popup component. Marked for removal in version 22.
4896
+ */
4897
+ abstract readonly input: T | undefined;
4898
+ /**
4899
+ * CSS classes associated with the popup.
4900
+ *
4901
+ * @deprecated since version 21.0.0-beta.1. Use `WorkbenchPopup.cssClass` instead. Marked for removal in version 22.
4902
+ */
4903
+ abstract readonly cssClasses: string[];
4904
+ }
4905
+
4906
+ /** @inheritDoc */
4907
+ declare class ɵWorkbenchPopup implements Popup, WorkbenchPopup, Blockable {
4908
+ id: PopupId;
4909
+ component: ComponentType<unknown>;
4910
+ invocationContext: WorkbenchInvocationContext | null;
4911
+ private _options;
4912
+ /** Injector for the popup; destroyed when the popup is closed. */
4913
+ readonly injector: DestroyableInjector;
4914
+ private readonly _overlayRef;
4915
+ private readonly _focusMonitor;
4916
+ private readonly _portal;
4917
+ private readonly _componentRef;
4918
+ private readonly _popupOrigin;
4919
+ private readonly _cssClass;
4920
+ readonly size: WorkbenchPopupSize;
4921
+ readonly focused: Signal<boolean>;
4922
+ readonly attached: Signal<boolean>;
4923
+ readonly destroyed: WritableSignal<boolean>;
4924
+ readonly bounds: Signal<DOMRect | undefined>;
4925
+ readonly blockedBy: Signal<ɵWorkbenchDialog | null>;
4926
+ readonly input: unknown | undefined;
4927
+ result: unknown | Error | undefined;
4928
+ constructor(id: PopupId, component: ComponentType<unknown>, invocationContext: WorkbenchInvocationContext | null, _options: WorkbenchPopupOptions);
4929
+ /**
4930
+ * Waits for the popup to close, resolving to its result or rejecting if closed with an error.
4931
+ */
4932
+ waitForClose<R>(): Promise<R | undefined>;
4870
4933
  /**
4871
- * Creates a portal to render {@link PopupComponent} in the popup's injection context.
4934
+ * Creates a portal to render {@link WorkbenchPopupComponent} in the popup's injection context.
4872
4935
  */
4873
4936
  private createPortal;
4874
4937
  /**
4875
4938
  * Creates a dedicated overlay per popup to place it on top of previously created overlays, such as dialogs, popups, dropdowns, etc.
4876
4939
  */
4877
4940
  private createOverlay;
4878
- private focus;
4879
4941
  /**
4880
4942
  * Moves the popup with the anchor.
4881
4943
  */
@@ -4909,15 +4971,21 @@ declare class ɵWorkbenchPopup<T = unknown, R = unknown> implements WorkbenchPop
4909
4971
  */
4910
4972
  private trackPopupOrigin;
4911
4973
  /** @inheritDoc */
4912
- setResult(result?: R): void;
4974
+ setResult<R>(result?: R): void;
4913
4975
  /** @inheritDoc */
4914
- close(result?: R | Error): void;
4976
+ close<R>(result?: R | Error): void;
4915
4977
  /** @inheritDoc */
4916
- get input(): T | undefined;
4978
+ get cssClass(): Signal<string[]>;
4917
4979
  /** @inheritDoc */
4918
- get size(): PopupSize | undefined;
4919
- get component(): Type<any>;
4920
- get viewContainerRef(): ViewContainerRef | undefined;
4980
+ set cssClass(cssClass: string | string[]);
4981
+ set cssClasses(cssClasses: string[]);
4982
+ get cssClasses(): string[];
4983
+ /**
4984
+ * Inputs passed to the popup.
4985
+ */
4986
+ get inputs(): {
4987
+ [name: string]: unknown;
4988
+ } | undefined;
4921
4989
  /**
4922
4990
  * Destroys this popup and associated resources.
4923
4991
  */
@@ -4934,15 +5002,14 @@ declare class ɵWorkbenchService implements WorkbenchService {
4934
5002
  private readonly _partActionRegistry;
4935
5003
  private readonly _viewMenuItemRegistry;
4936
5004
  private readonly _perspectiveService;
4937
- readonly layout: Signal<ɵWorkbenchLayout>;
4938
- readonly perspectives: Signal<ɵWorkbenchPerspective[]>;
4939
- readonly parts: Signal<ɵWorkbenchPart[]>;
4940
- readonly views: Signal<ɵWorkbenchView[]>;
4941
- readonly dialogs: Signal<ɵWorkbenchDialog<unknown>[]>;
4942
- readonly popups: Signal<ɵWorkbenchPopup<unknown, unknown>[]>;
4943
- readonly activePerspective: Signal<ɵWorkbenchPerspective | undefined>;
4944
- readonly activeElement: Signal<_scion_workbench.WorkbenchElement | null>;
4945
- readonly theme: Signal<WorkbenchTheme | null>;
5005
+ readonly layout: i0.Signal<ɵWorkbenchLayout>;
5006
+ readonly perspectives: i0.Signal<ɵWorkbenchPerspective[]>;
5007
+ readonly parts: i0.Signal<ɵWorkbenchPart[]>;
5008
+ readonly views: i0.Signal<ɵWorkbenchView[]>;
5009
+ readonly dialogs: i0.Signal<ɵWorkbenchDialog[]>;
5010
+ readonly popups: i0.Signal<ɵWorkbenchPopup[]>;
5011
+ readonly activePerspective: i0.Signal<ɵWorkbenchPerspective | undefined>;
5012
+ readonly activeElement: i0.Signal<_scion_workbench.WorkbenchElement | null>;
4946
5013
  readonly settings: {
4947
5014
  theme: i0.WritableSignal<string | null>;
4948
5015
  panelAlignment: i0.WritableSignal<"justify">;
@@ -4970,9 +5037,6 @@ declare class ɵWorkbenchService implements WorkbenchService {
4970
5037
  registerPartAction(fn: WorkbenchPartActionFn): Disposable;
4971
5038
  /** @inheritDoc */
4972
5039
  registerViewMenuItem(fn: WorkbenchViewMenuItemFn): Disposable;
4973
- /** @inheritDoc */
4974
- switchTheme(theme: string): Promise<void>;
4975
- private computeLegacyThemeObject;
4976
5040
  static ɵfac: i0.ɵɵFactoryDeclaration<ɵWorkbenchService, never>;
4977
5041
  static ɵprov: i0.ɵɵInjectableDeclaration<ɵWorkbenchService>;
4978
5042
  }
@@ -4981,15 +5045,15 @@ declare class ɵWorkbenchService implements WorkbenchService {
4981
5045
  * Main entry point component of the SCION Workbench.
4982
5046
  */
4983
5047
  declare class WorkbenchComponent {
4984
- private _workbenchLauncher;
4985
- private _logger;
5048
+ private readonly _workbenchLauncher;
5049
+ private readonly _logger;
4986
5050
  private readonly _workbenchRouter;
4987
- private _iframeOverlayHost;
4988
- private _viewDropZoneOverlayHost;
5051
+ private readonly _iframeOverlayHost;
5052
+ private readonly _viewDropZoneOverlayHost;
4989
5053
  /** Splash to display during workbench startup. */
4990
- protected splash: _angular_cdk_portal.ComponentType<unknown>;
4991
- protected workbenchStartup: WorkbenchStartup;
4992
- protected workbenchService: ɵWorkbenchService;
5054
+ protected readonly splash: _angular_cdk_portal.ComponentType<unknown>;
5055
+ protected readonly workbenchStartup: WorkbenchStartup;
5056
+ protected readonly workbenchService: ɵWorkbenchService;
4993
5057
  constructor();
4994
5058
  /**
4995
5059
  * Toggles layout maximization by pressing Ctrl+Shift+F12.
@@ -5204,6 +5268,16 @@ declare class WorkbenchPartActionDirective {
5204
5268
  static ɵdir: i0.ɵɵDirectiveDeclaration<WorkbenchPartActionDirective, "ng-template[wbPartAction]", never, { "align": { "alias": "align"; "required": false; "isSignal": true; }; "canMatch": { "alias": "canMatch"; "required": false; "isSignal": true; }; "cssClass": { "alias": "cssClass"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5205
5269
  }
5206
5270
 
5271
+ /**
5272
+ * DI token to register providers available for DI if in the context of a workbench part.
5273
+ */
5274
+ declare const WORKBENCH_PART_CONTEXT: InjectionToken<Provider[]>;
5275
+
5276
+ /**
5277
+ * DI token to register providers available for DI if in the context of a workbench view.
5278
+ */
5279
+ declare const WORKBENCH_VIEW_CONTEXT: InjectionToken<Provider[]>;
5280
+
5207
5281
  /**
5208
5282
  * Enables navigation of workbench views and modification of the workbench layout.
5209
5283
  *
@@ -5334,16 +5408,6 @@ declare const WorkbenchRouteData: {
5334
5408
  * Property to associate CSS class(es) with a workbench element in {@link Route.data}, e.g., to locate it in tests.
5335
5409
  */
5336
5410
  readonly cssClass: "ɵworkbenchCssClass";
5337
- /**
5338
- * @internal
5339
- *
5340
- * Property to obtain the outlet name of the route. This property is only set on the top-level route.
5341
- *
5342
- * Use if the route's injection context is not available, e.g., in a {@link UrlMatcher}.
5343
- * Otherwise, the outlet can be injected using the {@link WORKBENCH_AUXILIARY_ROUTE_OUTLET} DI token,
5344
- * even in child routes, e.g., in guards.
5345
- */
5346
- readonly ɵoutlet: "ɵworkbenchOutlet";
5347
5411
  };
5348
5412
 
5349
5413
  /**
@@ -5354,12 +5418,16 @@ declare const WorkbenchRouteData: {
5354
5418
  *
5355
5419
  * Example for navigating a view to the 'SearchComponent':
5356
5420
  * ```ts
5357
- * // Navigation
5421
+ * import {WorkbenchRouter} from '@scion/workbench';
5422
+ *
5358
5423
  * inject(WorkbenchRouter).navigate([], {hint: 'search'});
5359
5424
  * ```
5360
5425
  *
5361
- * // Routes
5426
+ * Routes:
5362
5427
  * ```ts
5428
+ * import {Routes} from '@angular/router';
5429
+ * import {canMatchWorkbenchView} from '@scion/workbench';
5430
+ *
5363
5431
  * const routes: Routes = [
5364
5432
  * {path: '', canMatch: [canMatchWorkbenchView('search')], component: SearchComponent},
5365
5433
  * {path: '', canMatch: [canMatchWorkbenchView('outline')], component: OutlineComponent},
@@ -5381,13 +5449,18 @@ declare function canMatchWorkbenchView(canMatch: boolean): CanMatchFn;
5381
5449
  *
5382
5450
  * Example for navigating a part to the 'SearchComponent':
5383
5451
  * ```ts
5452
+ * import {WorkbenchRouter} from '@scion/workbench';
5453
+ *
5384
5454
  * inject(WorkbenchRouter).navigate(layout => {
5385
5455
  * return layout.navigatePart('search', [], {hint: 'search'});
5386
5456
  * });
5387
5457
  * ```
5388
5458
  *
5389
- * // Routes
5459
+ * Routes:
5390
5460
  * ```ts
5461
+ * import {Routes} from '@angular/router';
5462
+ * import {canMatchWorkbenchPart} from '@scion/workbench';
5463
+ *
5391
5464
  * const routes: Routes = [
5392
5465
  * {path: '', canMatch: [canMatchWorkbenchPart('search')], component: SearchComponent},
5393
5466
  * {path: '', canMatch: [canMatchWorkbenchPart('outline')], component: OutlineComponent},
@@ -5500,23 +5573,24 @@ interface WorkbenchMessageBoxOptions {
5500
5573
  */
5501
5574
  modality?: 'none' | 'context' | 'application' | ViewModality;
5502
5575
  /**
5503
- * Binds the message box to a context (e.g., a part or view). Defaults to the calling context.
5576
+ * Binds the message box to a context (e.g., part or view). Defaults to the calling context.
5504
5577
  *
5505
5578
  * The message box is displayed only if the context is visible and closes when the context is disposed.
5506
5579
  * The message box is opened in the center of its context, if any, unless opened from the peripheral area.
5507
5580
  *
5508
5581
  * Set to `null` to open the message box outside a context.
5509
5582
  */
5510
- context?: ViewId | PartId | DialogId | PopupId | Context | null;
5583
+ context?: ViewId | PartId | DialogId | PopupId | Context$1 | null;
5511
5584
  /**
5512
5585
  * Specifies if the user can select text displayed in the message box. Defaults to `false`.
5513
5586
  */
5514
5587
  contentSelectable?: boolean;
5515
5588
  /**
5516
- * Specifies data available as input properties in the message component.
5589
+ * Specifies data to pass to the message component. Inputs are available as input properties in the message component.
5517
5590
  *
5518
- * This property only applies to a message box opened with a component, not a plain text message.
5591
+ * Has no effect if opening a plain text message.
5519
5592
  *
5593
+ * @example - Reading inputs in the component
5520
5594
  * ```ts
5521
5595
  * public someInput = input.required<string>();
5522
5596
  * ```
@@ -5525,12 +5599,10 @@ interface WorkbenchMessageBoxOptions {
5525
5599
  [name: string]: unknown;
5526
5600
  };
5527
5601
  /**
5528
- * Specifies the injector for the instantiation of the message component.
5529
- *
5530
- * This property only applies to a message box opened with a component, not a plain text message.
5602
+ * Specifies the injector for the instantiation of the message box, giving control over the objects available
5603
+ * for injection in the message component. Defaults to the application's root injector.
5531
5604
  *
5532
- * A custom injector gives control over the objects available for injection into the message component. If not specified, uses the
5533
- * application's root injector, or the view's injector if opened in the context of a view.
5605
+ * @example - Creating an injector with a DI token
5534
5606
  *
5535
5607
  * ```ts
5536
5608
  * Injector.create({
@@ -5542,6 +5614,12 @@ interface WorkbenchMessageBoxOptions {
5542
5614
  * ```
5543
5615
  */
5544
5616
  injector?: Injector;
5617
+ /**
5618
+ * Specifies providers available for injection in the message component.
5619
+ *
5620
+ * Providers can inject {@link WorkbenchMessageBox} to interact with the message.
5621
+ */
5622
+ providers?: Provider[];
5545
5623
  /**
5546
5624
  * Specifies CSS class(es) to add to the message box, e.g., to locate the message box in tests.
5547
5625
  */
@@ -5554,7 +5632,7 @@ type ViewModality = 'view';
5554
5632
  /**
5555
5633
  * @deprecated since version 20.0.0-beta.9. Set view id directly. Migrate `{context: {viewId: 'view.x'}}` to `{context: 'view.x'}`. Marked for removal in version 22.
5556
5634
  */
5557
- interface Context {
5635
+ interface Context$1 {
5558
5636
  /**
5559
5637
  * @deprecated since version 20.0.0-beta.9. Set view id directly. Migrate `{context: {viewId: 'view.x'}}` to `{context: 'view.x'}`. Marked for removal in version 22.
5560
5638
  */
@@ -5573,7 +5651,7 @@ interface Context {
5573
5651
  * application-modal blocks the workbench or browser viewport, based on {@link WorkbenchConfig.dialog.modalityScope}.
5574
5652
  *
5575
5653
  * ## Context
5576
- * A message box can be bound to a context (e.g., a part or view), defaulting to the calling context.
5654
+ * A message box can be bound to a context (e.g., part or view), defaulting to the calling context.
5577
5655
  * The message box is displayed only if the context is visible and closes when the context is disposed.
5578
5656
  *
5579
5657
  * ## Positioning
@@ -5622,8 +5700,9 @@ declare abstract class WorkbenchMessageBoxService {
5622
5700
  *
5623
5701
  * By default, the message box is modal to the calling context. Specify a different modality in {@link WorkbenchMessageBoxOptions.modality}.
5624
5702
  *
5625
- * Data can be passed to the component as inputs via {@link WorkbenchMessageBoxOptions.inputs} property or by providing a custom injector
5626
- * via {@link WorkbenchMessageBoxOptions.injector} property. Inputs are available as input properties in the component.
5703
+ * Data can be passed to the component as inputs via {@link WorkbenchMessageBoxOptions.inputs} option. Inputs are available as input
5704
+ * properties in the component. Alternatively, data can be passed for injection via a custom injector ({@link WorkbenchMessageBoxOptions.injector})
5705
+ * or providers ({@link WorkbenchMessageBoxOptions.providers}).
5627
5706
  *
5628
5707
  * @example
5629
5708
  * ```ts
@@ -5674,7 +5753,7 @@ declare abstract class WorkbenchMessageBoxService {
5674
5753
  * application-modal blocks the workbench or browser viewport, based on {@link WorkbenchConfig.dialog.modalityScope}.
5675
5754
  *
5676
5755
  * ## Context
5677
- * A dialog can be bound to a context (e.g., a part or view), defaulting to the calling context.
5756
+ * A dialog can be bound to a context (e.g., part or view), defaulting to the calling context.
5678
5757
  * The dialog is displayed only if the context is visible and closes when the context is disposed.
5679
5758
  *
5680
5759
  * ## Positioning
@@ -5747,8 +5826,9 @@ declare abstract class WorkbenchDialogService {
5747
5826
  *
5748
5827
  * By default, the dialog is modal to the calling context. Specify a different modality in {@link WorkbenchDialogOptions.modality}.
5749
5828
  *
5750
- * Data can be passed to the component as inputs via {@link WorkbenchDialogOptions.inputs} property or by providing a custom injector
5751
- * via {@link WorkbenchDialogOptions.injector} property. Dialog inputs are available as input properties in the dialog component.
5829
+ * Data can be passed to the component as inputs via {@link WorkbenchDialogOptions.inputs} option. Inputs are available as input
5830
+ * properties in the component. Alternatively, data can be passed for injection via a custom injector ({@link WorkbenchDialogOptions.injector})
5831
+ * or providers ({@link WorkbenchDialogOptions.providers}).
5752
5832
  *
5753
5833
  * @param component - Specifies the component to display in the dialog.
5754
5834
  * @param options - Controls the appearance and behavior of the dialog.
@@ -5759,28 +5839,31 @@ declare abstract class WorkbenchDialogService {
5759
5839
  static ɵprov: i0.ɵɵInjectableDeclaration<WorkbenchDialogService>;
5760
5840
  }
5761
5841
 
5842
+ /**
5843
+ * DI token to register providers available for DI if in the context of a workbench dialog.
5844
+ */
5845
+ declare const WORKBENCH_DIALOG_CONTEXT: InjectionToken<Provider[]>;
5846
+
5762
5847
  /**
5763
5848
  * Represents a handle that a notification component can inject to interact with the notification, for example,
5764
5849
  * to read input data or to configure the notification.
5765
5850
  *
5766
5851
  * A notification is a closable message that appears in the upper-right corner and disappears automatically after a few seconds.
5767
5852
  * It informs the user of a system event, e.g., that a task has been completed or an error has occurred.
5853
+ *
5854
+ * @deprecated since version 21.0.0-beta.1. Replaced by `WorkbenchNotification`. Marked for removal in version 22.
5768
5855
  */
5769
5856
  declare abstract class Notification<T = any> {
5770
5857
  /**
5771
5858
  * Input data as passed by the notification opener, or `undefined` if not passed.
5772
5859
  */
5773
5860
  readonly input: T | undefined;
5774
- /**
5775
- * Sets the title of the notification.
5776
- */
5777
- abstract setTitle(title: Translatable | undefined): void;
5778
5861
  /**
5779
5862
  * Sets the title of the notification.
5780
5863
  *
5781
- * @deprecated since version 20.0.0-beta.6. To migrate, pass a translatable and provide the text using a text provider registered in `WorkbenchClient.registerTextProvider`.
5864
+ * Can be text or a translation key. A translation key starts with the percent symbol (`%`) and may include parameters in matrix notation for text interpolation.
5782
5865
  */
5783
- abstract setTitle(title: Observable<Translatable | undefined>): void;
5866
+ abstract setTitle(title: Translatable | undefined): void;
5784
5867
  /**
5785
5868
  * Sets the severity of the notification.
5786
5869
  */
@@ -5801,23 +5884,17 @@ declare abstract class Notification<T = any> {
5801
5884
  }
5802
5885
 
5803
5886
  /**
5804
- * Configures the content and appearance of a notification presented to the user.
5887
+ * Controls the appearance and behavior of a notification.
5805
5888
  *
5806
- * A notification is a closable message that appears in the upper-right corner and disappears automatically after a few seconds.
5807
- * It informs the user of a system event, e.g., that a task has been completed or an error has occurred.
5808
- *
5809
- * Multiple notifications are stacked vertically. Notifications can be grouped. For each group, only the last notification is
5810
- * displayed at any given time.
5889
+ * @deprecated since version 21.0.0-beta.1. Replaced by `WorkbenchNotificationOptions`. Use `WorkbenchNotificationService` to show notifications. Marked for removal in version 22.
5811
5890
  */
5812
5891
  interface NotificationConfig {
5813
5892
  /**
5814
5893
  * Optional title of the notification.
5815
5894
  *
5816
5895
  * Can be text or a translation key. A translation key starts with the percent symbol (`%`) and may include parameters in matrix notation for text interpolation.
5817
- *
5818
- * TODO [Angular 21] Passing an Observable is deprecated. To migrate, pass a translatable and provide the text using a text provider registered in `WorkbenchClient.registerTextProvider`. API will be removed in version 21.
5819
5896
  */
5820
- title?: Translatable | Observable<Translatable | undefined>;
5897
+ title?: Translatable;
5821
5898
  /**
5822
5899
  * Content of the notification, can be either a plain text message or a component.
5823
5900
  *
@@ -5852,7 +5929,7 @@ interface NotificationConfig {
5852
5929
  viewContainerRef?: ViewContainerRef;
5853
5930
  };
5854
5931
  /**
5855
- * Optional data to pass to the notification component. In the component, you can inject the notification handle {@link Notification} to
5932
+ * Specifies data to pass to the notification component. In the component, you can inject the notification handle {@link Notification} to
5856
5933
  * read input data. Use only in combination with a custom notification component, has no effect otherwise.
5857
5934
  */
5858
5935
  componentInput?: unknown;
@@ -5888,260 +5965,393 @@ interface NotificationConfig {
5888
5965
  }
5889
5966
 
5890
5967
  /**
5891
- * Allows displaying a notification to the user.
5968
+ * Shows a notification.
5892
5969
  *
5893
- * A notification is a closable message that appears in the upper-right corner and disappears automatically after a few seconds.
5894
- * It informs the user of a system event, e.g., that a task has been completed or an error has occurred.
5970
+ * A notification is a closable message displayed in the upper-right corner that disappears after a few seconds unless hovered.
5971
+ * It informs about system events, task completion or errors. The severity indicates importance or urgency.
5972
+ *
5973
+ * Notifications can be grouped. Only the most recent notification within a group is displayed.
5895
5974
  *
5896
- * Multiple notifications are stacked vertically. Notifications can be grouped. For each group, only the last notification is
5897
- * displayed.
5975
+ * Content can be plain text or structured. Pressing Escape closes the notification.
5898
5976
  *
5899
- * To display structured content, consider passing a component to {@link NotificationConfig#content} instead of plain text.
5977
+ * @deprecated since version 21.0.0-beta.1. Use `WorkbenchNotificationService` to show notifications. Marked for removal in version 22.
5900
5978
  */
5901
5979
  declare class NotificationService {
5902
- private readonly _zone;
5903
- private readonly _injector;
5904
- private readonly _document;
5905
- private readonly _notifications$;
5906
- constructor();
5980
+ private readonly _notificationService;
5907
5981
  /**
5908
- * Presents the user with a notification that is displayed in the upper-right corner based on the given config.
5982
+ * Displays the specified text or component as workbench notification.
5909
5983
  *
5910
- * To display structured content, consider passing a component to {@link NotificationConfig#content}.
5984
+ * @param notification - Configures content and appearance of the notification.
5911
5985
  *
5912
- * ### Usage:
5913
- * ```typescript
5914
- * notificationService.notify({
5915
- * content: 'Task scheduled for execution.',
5916
- * severity: 'info',
5917
- * duration: 'short',
5918
- * });
5919
- * ```
5920
- *
5921
- * @param notification - Configures the content and appearance of the notification.
5986
+ * @deprecated since version 21.0.0-beta.1. Use `WorkbenchNotificationService` to show notifications. Marked for removal in version 22.
5922
5987
  */
5923
5988
  notify(notification: Translatable | NotificationConfig): void;
5924
- private addNotification;
5925
- /**
5926
- * Constructs the notification based on the given config and computes its insertion index.
5927
- */
5928
- private constructNotification;
5929
- private get notifications();
5930
- /**
5931
- * Installs a keystroke listener to close the last notification when the user presses the escape keystroke.
5932
- */
5933
- private installEscapeHandler;
5934
5989
  static ɵfac: i0.ɵɵFactoryDeclaration<NotificationService, never>;
5935
5990
  static ɵprov: i0.ɵɵInjectableDeclaration<NotificationService>;
5936
5991
  }
5937
5992
 
5938
5993
  /**
5939
- * Enables the display of a component in a popup.
5994
+ * A notification is a closable message displayed in the upper-right corner that disappears after a few seconds unless hovered.
5995
+ * It informs about system events, task completion or errors. The severity indicates importance or urgency.
5940
5996
  *
5941
- * A popup is a visual workbench element for displaying content above other content. It is positioned relative to an anchor,
5942
- * which can be an element or a coordinate. The popup moves with the anchor. By default, the popup closes on focus loss or
5943
- * when pressing the escape key.
5997
+ * The notification component can inject this handle to interact with the notification.
5944
5998
  *
5945
- * A popup can be bound to a context (e.g., a part or view), displaying the popup only if the context is visible and closing
5946
- * it when the context is disposed. Defaults to the calling context.
5999
+ * Notification inputs are available as input properties in the notification component.
6000
+ *
6001
+ * @see WorkbenchNotificationService
5947
6002
  */
5948
- declare abstract class WorkbenchPopupService {
6003
+ declare abstract class WorkbenchNotification {
5949
6004
  /**
5950
- * Opens a popup with the specified component and options.
5951
- *
5952
- * An anchor is used to position the popup based on its preferred alignment. The anchor can be an element or a coordinate.
5953
- *
5954
- * Data can be passed to the component via {@link PopupConfig.input} property. The component can inject the popup handle {@link WorkbenchPopup} to
5955
- * read input data or to close the popup.
6005
+ * Sets the title of the notification.
5956
6006
  *
5957
- * By default, the popup closes on focus loss or when pressing the escape key.
6007
+ * Can be text or a translation key. A translation key starts with the percent symbol (`%`) and may include parameters in matrix notation for text interpolation.
6008
+ */
6009
+ abstract get title(): Signal<Translatable | undefined>;
6010
+ abstract set title(title: Translatable | undefined);
6011
+ /**
6012
+ * Sets the severity of the notification to indicate importance or urgency.
6013
+ */
6014
+ abstract get severity(): Signal<'info' | 'warn' | 'error'>;
6015
+ abstract set severity(severity: 'info' | 'warn' | 'error');
6016
+ /**
6017
+ * Controls how long to display the notification.
5958
6018
  *
5959
- * @param config - Controls the appearance and behavior of the popup.
5960
- * @returns Promise that resolves to the popup result, if any, or that rejects if the popup couldn't be opened or was closed with an error.
6019
+ * Can be a duration alias, or milliseconds.
5961
6020
  */
5962
- abstract open<R>(config: PopupConfig): Promise<R | undefined>;
5963
- static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchPopupService, never>;
5964
- static ɵprov: i0.ɵɵInjectableDeclaration<WorkbenchPopupService>;
5965
- }
5966
-
6021
+ abstract get duration(): Signal<'short' | 'medium' | 'long' | 'infinite' | number>;
6022
+ abstract set duration(duration: 'short' | 'medium' | 'long' | 'infinite' | number);
6023
+ /**
6024
+ * Specifies CSS class(es) to add to the notification, e.g., to locate the notification in tests.
6025
+ */
6026
+ abstract get cssClass(): Signal<string[]>;
6027
+ abstract set cssClass(cssClass: string | string[]);
6028
+ /**
6029
+ * Closes the notification.
6030
+ */
6031
+ abstract close(): void;
6032
+ }
6033
+
5967
6034
  /**
5968
- * Keys for associating workbench-specific data with a perspective.
6035
+ * Controls the appearance and behavior of a notification.
5969
6036
  */
5970
- declare const WorkbenchPerspectiveData: {
6037
+ interface WorkbenchNotificationOptions {
5971
6038
  /**
5972
- * Property to get the capability providing the perspective.
6039
+ * Specifies the title of the notification.
6040
+ *
6041
+ * Can be text or a translation key. A translation key starts with the percent symbol (`%`) and may include parameters in matrix notation for text interpolation.
5973
6042
  */
5974
- readonly capability: "ɵcapability";
5975
- };
6043
+ title?: Translatable;
6044
+ /**
6045
+ * Specifies the severity of the notification. Defaults to `info`.
6046
+ */
6047
+ severity?: 'info' | 'warn' | 'error';
6048
+ /**
6049
+ * Controls how long to display the notification.
6050
+ *
6051
+ * Can be a duration alias, or milliseconds.
6052
+ */
6053
+ duration?: 'short' | 'medium' | 'long' | 'infinite' | number;
6054
+ /**
6055
+ * Specifies the group to which the notification belongs. Only the most recent notification within a group is displayed.
6056
+ */
6057
+ group?: string;
6058
+ /**
6059
+ * Enables aggregation of input values of notifications of the same group.
6060
+ *
6061
+ * Use with {@link group} to combine inputs of notifications of the same group.
6062
+ *
6063
+ * The reducer is invoked with inputs of the previous notification, if still displaying, and inputs of the new notification.
6064
+ * The returned input is passed to the new notification.
6065
+ */
6066
+ groupInputReduceFn?: (prevInput: {
6067
+ [name: string]: unknown;
6068
+ }, currInput: {
6069
+ [name: string]: unknown;
6070
+ }) => {
6071
+ [name: string]: unknown;
6072
+ };
6073
+ /**
6074
+ * Specifies data to pass to the notification component. Inputs are available as input properties in the notification component.
6075
+ *
6076
+ * Has no effect if opening a plain text notification.
6077
+ *
6078
+ * @example - Reading inputs in the component
6079
+ * ```ts
6080
+ * public someInput = input.required<string>();
6081
+ * ```
6082
+ */
6083
+ inputs?: {
6084
+ [name: string]: unknown;
6085
+ };
6086
+ /**
6087
+ * Specifies the injector for the instantiation of the notification, giving control over the objects available
6088
+ * for injection in the notification component. Defaults to the application's root injector.
6089
+ *
6090
+ * @example - Creating an injector with a DI token
6091
+ *
6092
+ * ```ts
6093
+ * Injector.create({
6094
+ * parent: ...,
6095
+ * providers: [
6096
+ * {provide: <TOKEN>, useValue: <VALUE>}
6097
+ * ],
6098
+ * })
6099
+ * ```
6100
+ */
6101
+ injector?: Injector;
6102
+ /**
6103
+ * Specifies providers available for injection in the notification component.
6104
+ *
6105
+ * Providers can inject {@link WorkbenchNotification} to interact with the notification.
6106
+ */
6107
+ providers?: Provider[];
6108
+ /**
6109
+ * Specifies CSS class(es) to add to the notification, e.g., to locate the notification in tests.
6110
+ */
6111
+ cssClass?: string | string[];
6112
+ }
5976
6113
 
5977
6114
  /**
5978
- * Registers a function that is executed during the startup of the SCION Workbench.
6115
+ * Shows a notification.
5979
6116
  *
5980
- * Initializers help to run initialization tasks (synchronous or asynchronous) during startup of the SCION Workbench.
5981
- * The workbench is fully started once all initializers have completed.
5982
- *
5983
- * Initializers can specify a phase for execution. Initializers in lower phases execute before initializers in higher phases.
5984
- * Initializers in the same phase may execute in parallel. If no phase is specified, the initializer executes in the `Startup` phase.
5985
- *
5986
- * Available phases, in order of execution:
5987
- * - {@link WorkbenchStartupPhase.PreStartup}
5988
- * - {@link WorkbenchStartupPhase.Startup}
5989
- * - {@link WorkbenchStartupPhase.PostStartup}
6117
+ * A notification is a closable message displayed in the upper-right corner that disappears after a few seconds unless hovered.
6118
+ * It informs about system events, task completion or errors. The severity indicates importance or urgency.
5990
6119
  *
5991
- * The function can call `inject` to get any required dependencies.
6120
+ * Notifications can be grouped. Only the most recent notification within a group is displayed.
5992
6121
  *
5993
- * @param initializerFn - Specifies the function to execute.
5994
- * @param options - Controls execution of the function.
5995
- * @return A set of dependency-injection providers to be registered in Angular.
6122
+ * Content can be plain text or structured. Pressing Escape closes the notification.
5996
6123
  */
5997
- declare function provideWorkbenchInitializer(initializerFn: WorkbenchInitializerFn, options?: WorkbenchInitializerOptions): EnvironmentProviders;
6124
+ declare abstract class WorkbenchNotificationService {
6125
+ /**
6126
+ * Displays the specified message as workbench notification.
6127
+ *
6128
+ * @param message - Specifies the text to display.
6129
+ * Can be text or a translation key. A translation key starts with the percent symbol (`%`) and may include parameters in matrix notation for text interpolation.
6130
+ * @param options - Controls the appearance and behavior of the notification.
6131
+ */
6132
+ abstract show(message: Translatable, options?: WorkbenchNotificationOptions): void;
6133
+ /**
6134
+ * Displays the specified component as workbench notification.
6135
+ *
6136
+ * Data can be passed to the component as inputs via {@link WorkbenchNotificationOptions.inputs} option. Inputs are available as input
6137
+ * properties in the component. Alternatively, data can be passed for injection via a custom injector ({@link WorkbenchNotificationOptions.injector})
6138
+ * or providers ({@link WorkbenchNotificationOptions.providers}).
6139
+ *
6140
+ * @param component - Specifies the component to render as the notification.
6141
+ * @param options - Controls the appearance and behavior of the notification.
6142
+ */
6143
+ abstract show(component: ComponentType<unknown>, options?: WorkbenchNotificationOptions): void;
6144
+ static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchNotificationService, never>;
6145
+ static ɵprov: i0.ɵɵInjectableDeclaration<WorkbenchNotificationService>;
6146
+ }
6147
+
5998
6148
  /**
5999
- * Controls the execution of an initializer function during the startup of the SCION Workbench.
6149
+ * Enables the display of a component in a popup.
6150
+ *
6151
+ * A popup is a visual workbench element for displaying content above other content. It is positioned relative to an anchor,
6152
+ * which can be an element or a coordinate. The popup moves with the anchor. By default, the popup closes on focus loss or
6153
+ * when pressing the escape key.
6154
+ *
6155
+ * A popup can be bound to a context (e.g., part or view), displaying the popup only if the context is visible and closing
6156
+ * it when the context is disposed. Defaults to the calling context.
6000
6157
  */
6001
- interface WorkbenchInitializerOptions {
6158
+ declare abstract class WorkbenchPopupService {
6002
6159
  /**
6003
- * Controls in which phase to execute the initializer.
6160
+ * Opens a popup with the specified component and options.
6161
+ *
6162
+ * An anchor is used to position the popup based on its preferred alignment. The anchor can be an element or a coordinate.
6163
+ *
6164
+ * Data can be passed to the component as inputs via {@link WorkbenchPopupOptions.inputs} option. Inputs are available as input
6165
+ * properties in the component. Alternatively, data can be passed for injection via a custom injector ({@link WorkbenchPopupOptions.injector})
6166
+ * or providers ({@link WorkbenchPopupOptions.providers}).
6167
+ *
6168
+ * By default, the popup closes on focus loss or when pressing the escape key.
6169
+ *
6170
+ * @param component - Specifies the component to display in the popup.
6171
+ * @param options - Controls the appearance and behavior of the popup.
6172
+ * @returns Promise that resolves to the popup result, if any, or that rejects if the popup couldn't be opened or was closed with an error.
6004
6173
  */
6005
- phase?: WorkbenchStartupPhase;
6174
+ abstract open<R>(component: ComponentType<unknown>, options: WorkbenchPopupOptions): Promise<R | undefined>;
6175
+ static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchPopupService, never>;
6176
+ static ɵprov: i0.ɵɵInjectableDeclaration<WorkbenchPopupService>;
6006
6177
  }
6178
+
6007
6179
  /**
6008
- * Enumeration of phases for running a {@link WorkbenchInitializerFn} function during the startup of the SCION Workbench.
6180
+ * Controls the appearance and behavior of a popup.
6009
6181
  *
6010
- * Functions associated with the same phase may run in parallel. Defaults to {@link Startup} phase.
6182
+ * @deprecated since version 21.0.0-beta.1. Replaced by `WorkbenchPopupOptions`. Use `WorkbenchPopupService` to open popups. Marked for removal in version 22.
6011
6183
  */
6012
- declare enum WorkbenchStartupPhase {
6184
+ declare abstract class PopupConfig {
6013
6185
  /**
6014
- * Use to run an initializer before starting the workbench.
6186
+ * Controls where to open the popup.
6187
+ *
6188
+ * Can be an HTML element or a coordinate. The coordinate is relative to the {@link context}, defaulting to the calling context.
6189
+ *
6190
+ * Supported coordinate pairs:
6191
+ * - x/y: Relative to the top/left corner of the context.
6192
+ * - top/left: Same as x/y.
6193
+ * - top/right: Relative to the top/right corner of the context.
6194
+ * - bottom/left: Relative to the bottom/left corner of the context.
6195
+ * - bottom/right: Relative to the bottom/right corner of the context.
6196
+ *
6197
+ * Passing an Observable allows for updating the coordinate.
6015
6198
  */
6016
- PreStartup = 0,
6199
+ abstract readonly anchor: ElementRef<Element> | Element | PopupOrigin | Observable<PopupOrigin>;
6017
6200
  /**
6018
- * Use to run an initializer function after initializers of the {@link PreStartup} phase.
6201
+ * Specifies the component to display in the popup.
6019
6202
  *
6020
- * This is the default phase if not specifying a phase.
6203
+ * In the component, you can inject the popup handle {@link WorkbenchPopup} to interact with the popup, such as to close it
6204
+ * or obtain its input data.
6021
6205
  */
6022
- Startup = 1,
6206
+ abstract readonly component: Type<any>;
6023
6207
  /**
6024
- * Use to run an initializer function after initializers of the {@link Startup} phase.
6208
+ * Instructs Angular how to construct the component. In most cases, construct options need not to be set.
6025
6209
  */
6026
- PostStartup = 2
6210
+ readonly componentConstructOptions?: {
6211
+ /**
6212
+ * Sets the injector for the instantiation of the popup component, giving you control over the objects available
6213
+ * for injection into the popup component. If not specified, uses the application's root injector, or the view's
6214
+ * injector if opened in the context of a view.
6215
+ *
6216
+ * ```ts
6217
+ * Injector.create({
6218
+ * parent: ...,
6219
+ * providers: [
6220
+ * {provide: <DiToken>, useValue: <value>}
6221
+ * ],
6222
+ * })
6223
+ * ```
6224
+ */
6225
+ injector?: Injector;
6226
+ /**
6227
+ * Specifies providers to be registered with the popup injector. Unlike providers that are registered via a separate {@link injector},
6228
+ * passed providers are registered in the same injector as the popup handle itself, allowing for dependency injection of the popup handle.
6229
+ */
6230
+ providers?: StaticProvider[];
6231
+ /**
6232
+ * Sets the component's attachment point in Angular's logical component tree (not the DOM tree used for rendering), effecting when
6233
+ * Angular checks the component for changes during a change detection cycle. If not set, inserts the component at the top level
6234
+ * in the component tree.
6235
+ *
6236
+ * @deprecated since version 21.0.0-beta.1. Marked for removal. No replacement as not required anymore.
6237
+ */
6238
+ viewContainerRef?: ViewContainerRef;
6239
+ };
6240
+ /**
6241
+ * Controls where to align the popup relative to the popup anchor, unless there is not enough space available in that area. By default,
6242
+ * if not specified, the popup opens north of the anchor.
6243
+ */
6244
+ readonly align?: 'east' | 'west' | 'north' | 'south';
6245
+ /**
6246
+ * Specifies data to pass to the popup component. In the component, you can inject the popup handle {@link WorkbenchPopup} to read input data.
6247
+ */
6248
+ readonly input?: any;
6249
+ /**
6250
+ * Controls when to close the popup.
6251
+ */
6252
+ readonly closeStrategy?: CloseStrategy;
6253
+ /**
6254
+ * Specifies the preferred popup size. If not specified, the popup adjusts its size to the content size.
6255
+ */
6256
+ readonly size?: {
6257
+ minHeight?: string;
6258
+ height?: string;
6259
+ maxHeight?: string;
6260
+ minWidth?: string;
6261
+ width?: string;
6262
+ maxWidth?: string;
6263
+ };
6264
+ /**
6265
+ * Specifies CSS class(es) to add to the popup, e.g., to locate the popup in tests.
6266
+ */
6267
+ readonly cssClass?: string | string[];
6268
+ /**
6269
+ * Binds the popup to a context (e.g., part or view). Defaults to the calling context.
6270
+ *
6271
+ * The popup is displayed only if the context is visible and closes when the context is disposed.
6272
+ *
6273
+ * Set to `null` to open the popup outside a context.
6274
+ */
6275
+ abstract context?: ViewId | PartId | DialogId | PopupId | Context | null;
6027
6276
  }
6028
6277
  /**
6029
- * The signature of a function executed during the startup of the SCION Workbench.
6030
- *
6031
- * Initializers help to run initialization tasks (synchronous or asynchronous) during startup of the SCION Workbench.
6032
- * The workbench is fully started once all initializers have completed.
6033
- *
6034
- * Initializers are registered using the `provideWorkbenchInitializer()` function and can specify a phase for execution.
6035
- * Initializers in lower phases execute before initializers in higher phases. Initializers in the same phase may
6036
- * execute in parallel. If no phase is specified, the initializer executes in the `Startup` phase.
6037
- *
6038
- * Available phases, in order of execution:
6039
- * - {@link WorkbenchStartupPhase.PreStartup}
6040
- * - {@link WorkbenchStartupPhase.Startup}
6041
- * - {@link WorkbenchStartupPhase.PostStartup}
6042
- *
6043
- * The function can call `inject` to get any required dependencies.
6044
- *
6045
- * ### Example:
6046
- *
6047
- * ```ts
6048
- * import {provideWorkbench, provideWorkbenchInitializer} from '@scion/workbench';
6049
- * import {bootstrapApplication} from '@angular/platform-browser';
6050
- * import {inject} from '@angular/core';
6051
- *
6052
- * bootstrapApplication(AppComponent, {
6053
- * providers: [
6054
- * provideWorkbench(),
6055
- * provideWorkbenchInitializer(() => inject(SomeService).init()),
6056
- * ],
6057
- * });
6058
- * ```
6059
- * @see provideWorkbenchInitializer
6278
+ * Specifies when to close the popup.
6060
6279
  */
6061
- type WorkbenchInitializerFn = () => void | Promise<void>;
6280
+ interface CloseStrategy {
6281
+ /**
6282
+ * Controls if to close the popup on focus loss, returning the result set via {@link WorkbenchPopup#setResult} to the popup opener.
6283
+ * Defaults to `true`.
6284
+ */
6285
+ onFocusLost?: boolean;
6286
+ /**
6287
+ * Controls if to close the popup when pressing escape. Defaults to `true`.
6288
+ * No return value will be passed to the popup opener.
6289
+ */
6290
+ onEscape?: boolean;
6291
+ }
6062
6292
  /**
6063
- * The signature of a class to hook into the startup of the SCION Workbench.
6064
- *
6065
- * The SCION Workbench defines a set of DI tokens called at defined points during startup, enabling the application's controlled initialization.
6066
- *
6067
- * Available DI tokens, in order of execution:
6068
- * - {@link WORKBENCH_PRE_STARTUP}
6069
- * - {@link WORKBENCH_STARTUP}
6070
- * - {@link WORKBENCH_POST_STARTUP}
6071
- *
6072
- * ### Example:
6073
- *
6074
- * ```ts
6075
- * import {provideWorkbench, WORKBENCH_STARTUP, WorkbenchInitializer} from '@scion/workbench';
6076
- * import {bootstrapApplication} from '@angular/platform-browser';
6077
- * import {Injectable} from '@angular/core';
6293
+ * @deprecated since version 20.0.0-beta.9. Set view id directly. Migrate `{context: {viewId: 'view.x'}}` to `{context: 'view.x'}`. Marked for removal in version 22.
6294
+ */
6295
+ interface Context {
6296
+ /**
6297
+ * @deprecated since version 20.0.0-beta.9. Set view id directly. Migrate `{context: {viewId: 'view.x'}}` to `{context: 'view.x'}`. Marked for removal in version 22.
6298
+ */
6299
+ viewId?: ViewId | null;
6300
+ }
6301
+
6302
+ /**
6303
+ * Enables the display of a component in a popup.
6078
6304
  *
6079
- * @Injectable()
6080
- * export class Initializer implements WorkbenchInitializer {
6081
- * public async init(): Promise<void> {
6082
- * // initialize application
6083
- * }
6084
- * }
6305
+ * A popup is a visual workbench element for displaying content above other content. It is positioned relative to an anchor,
6306
+ * which can be an element or a coordinate. The popup moves with the anchor. By default, the popup closes on focus loss or
6307
+ * when pressing the escape key.
6085
6308
  *
6086
- * bootstrapApplication(AppComponent, {
6087
- * providers: [
6088
- * provideWorkbench(),
6089
- * {
6090
- * provide: WORKBENCH_STARTUP,
6091
- * multi: true,
6092
- * useClass: Initializer,
6093
- * },
6094
- * ],
6095
- * });
6096
- * ```
6097
- * @see WORKBENCH_PRE_STARTUP
6098
- * @see WORKBENCH_STARTUP
6099
- * @see WORKBENCH_POST_STARTUP
6309
+ * A popup can be bound to a context (e.g., part or view), displaying the popup only if the context is visible and closing
6310
+ * it when the context is disposed. Defaults to the calling context.
6100
6311
  *
6101
- * @deprecated since version 19.0.0-beta.3. Register an initializer function instead. The function can call `inject` to get required dependencies. See `WorkbenchInitializerFn` for an example. API will be removed in version 21.
6312
+ * @deprecated since version 21.0.0-beta.1. Use `WorkbenchPopupService` to open popups. Marked for removal in version 22.
6102
6313
  */
6103
- interface WorkbenchInitializer {
6314
+ declare abstract class PopupService {
6104
6315
  /**
6105
- * This method is called during the startup of the SCION Workbench.
6316
+ * Opens a popup with the specified component and options.
6317
+ *
6318
+ * An anchor is used to position the popup based on its preferred alignment. The anchor can be an element or a coordinate.
6106
6319
  *
6107
- * The method can call `inject` to get required dependencies.
6320
+ * Data can be passed to the component via {@link PopupConfig.input} property. The component can inject the popup handle {@link WorkbenchPopup} to
6321
+ * read input data or to close the popup.
6322
+ *
6323
+ * By default, the popup closes on focus loss or when pressing the escape key.
6108
6324
  *
6109
- * @return A Promise blocking startup until it resolves.
6325
+ * @param config - Controls the appearance and behavior of the popup.
6326
+ * @returns Promise that resolves to the popup result, if any, or that rejects if the popup couldn't be opened or was closed with an error.
6327
+ *
6328
+ * @deprecated since version 21.0.0-beta.1. Use `WorkbenchPopupService` to open popups. Marked for removal in version 22.
6110
6329
  */
6111
- init(): Promise<void>;
6330
+ abstract open<R>(config: PopupConfig): Promise<R | undefined>;
6331
+ static ɵfac: i0.ɵɵFactoryDeclaration<PopupService, never>;
6332
+ static ɵprov: i0.ɵɵInjectableDeclaration<PopupService>;
6112
6333
  }
6334
+
6113
6335
  /**
6114
- * DI token to register a {@link WorkbenchInitializerFn} as a multi-provider to hook into the startup process of the SCION Workbench.
6115
- *
6116
- * Initializers associated with this DI token are executed before starting the SCION Workbench.
6117
- *
6118
- * @see WorkbenchInitializerFn
6119
- * @deprecated since version 19.0.0-beta.3. Register initializer using `provideWorkbenchInitializer` function. See `provideWorkbenchInitializer` for an example. API will be removed in version 21.
6120
- */
6121
- declare const WORKBENCH_PRE_STARTUP: InjectionToken<object | WorkbenchInitializerFn | WorkbenchInitializer>;
6122
- /**
6123
- * DI token to register a {@link WorkbenchInitializerFn} as a multi-provider to hook into the startup process of the SCION Workbench.
6124
- *
6125
- * Initializers associated with this DI token are executed after initializers of {@link WORKBENCH_PRE_STARTUP}.
6126
- *
6127
- * @see WorkbenchInitializerFn
6128
- * @deprecated since version 19.0.0-beta.3. Register initializer using `provideWorkbenchInitializer` function. See `provideWorkbenchInitializer` for an example. API will be removed in version 21.
6336
+ * DI token to register providers available for DI if in the context of a workbench popup.
6129
6337
  */
6130
- declare const WORKBENCH_STARTUP: InjectionToken<object | WorkbenchInitializerFn | WorkbenchInitializer>;
6338
+ declare const WORKBENCH_POPUP_CONTEXT: InjectionToken<Provider[]>;
6339
+
6131
6340
  /**
6132
- * DI token to register a {@link WorkbenchInitializerFn} as a multi-provider to hook into the startup process of the SCION Workbench.
6133
- *
6134
- * Initializers associated with this DI token are executed after initializers of {@link WORKBENCH_STARTUP}.
6135
- *
6136
- * @see WorkbenchInitializerFn
6137
- * @deprecated since version 19.0.0-beta.3. Register initializer using `provideWorkbenchInitializer` function. See `provideWorkbenchInitializer` for an example. API will be removed in version 21.
6341
+ * Keys for associating workbench-specific data with a perspective.
6138
6342
  */
6139
- declare const WORKBENCH_POST_STARTUP: InjectionToken<object | WorkbenchInitializerFn | WorkbenchInitializer>;
6343
+ declare const WorkbenchPerspectiveData: {
6344
+ /**
6345
+ * Property to get the capability providing the perspective.
6346
+ */
6347
+ readonly capability: "ɵcapability";
6348
+ };
6140
6349
 
6141
6350
  /**
6142
6351
  * Registers a function that is executed during the startup of the SCION Microfrontend Platform.
6143
6352
  *
6144
- * Initializers help to run initialization tasks (synchronous or asynchronous) during startup of the SCION Microfrontend Platform.
6353
+ * Initializers are used to run initialization tasks during startup of the SCION Microfrontend Platform.
6354
+ * The SCION Microfrontend Platform is fully started once all initializers have completed.
6145
6355
  *
6146
6356
  * Initializers can specify a phase for execution. Initializers in lower phases execute before initializers in higher phases.
6147
6357
  * Initializers in the same phase may execute in parallel. If no phase is specified, the initializer executes in the `PostStartup` phase.
@@ -6150,6 +6360,8 @@ declare const WORKBENCH_POST_STARTUP: InjectionToken<object | WorkbenchInitializ
6150
6360
  * - {@link MicrofrontendPlatformStartupPhase.PreStartup}
6151
6361
  * - {@link MicrofrontendPlatformStartupPhase.PostStartup}
6152
6362
  *
6363
+ * Microfrontend platform initializers run during the {@link WorkbenchStartupPhase.Startup} phase.
6364
+ *
6153
6365
  * The function can call `inject` to get any required dependencies.
6154
6366
  *
6155
6367
  * Initializers are only called if microfrontend support is enabled.
@@ -6158,7 +6370,7 @@ declare const WORKBENCH_POST_STARTUP: InjectionToken<object | WorkbenchInitializ
6158
6370
  * @param options - Controls execution of the function.
6159
6371
  * @return A set of dependency-injection providers to be registered in Angular.
6160
6372
  */
6161
- declare function provideMicrofrontendPlatformInitializer(initializerFn: WorkbenchInitializerFn, options?: MicrofrontendPlatformInitializerOptions): EnvironmentProviders;
6373
+ declare function provideMicrofrontendPlatformInitializer(initializerFn: MicrofrontendPlatformInitializerFn, options?: MicrofrontendPlatformInitializerOptions): EnvironmentProviders;
6162
6374
  /**
6163
6375
  * Controls the execution of an initializer function during the startup of the SCION Microfrontend Platform.
6164
6376
  */
@@ -6169,7 +6381,7 @@ interface MicrofrontendPlatformInitializerOptions {
6169
6381
  phase?: MicrofrontendPlatformStartupPhase;
6170
6382
  }
6171
6383
  /**
6172
- * Enumeration of phases for running a {@link WorkbenchInitializerFn} function during the startup of the SCION Microfrontend Platform.
6384
+ * Enumeration of phases for running a {@link MicrofrontendPlatformInitializerFn} function during the startup of the SCION Microfrontend Platform.
6173
6385
  *
6174
6386
  * Functions associated with the same phase may run in parallel. Defaults to {@link PostStartup} phase.
6175
6387
  */
@@ -6178,7 +6390,7 @@ declare enum MicrofrontendPlatformStartupPhase {
6178
6390
  * Use to run an initializer before starting the SCION Microfrontend Platform.
6179
6391
  *
6180
6392
  * Typically, you would configure the SCION Microfrontend Platform in this phase, for example, register interceptors or decorators.
6181
- * At this point, you cannot interact with the microfrontend platform because it has not been started yet.
6393
+ * At this point, you cannot interact with the Microfrontend Platform because it has not been started yet.
6182
6394
  *
6183
6395
  * This phase is only called if microfrontend support is enabled.
6184
6396
  */
@@ -6189,38 +6401,52 @@ declare enum MicrofrontendPlatformStartupPhase {
6189
6401
  * Typically, you would install intent and message handlers in this phase.
6190
6402
  * At this point, the activators of the micro applications are not yet installed.
6191
6403
  *
6404
+ * This is the default phase if not specifying a phase.
6405
+ *
6192
6406
  * This phase is only called if microfrontend support is enabled.
6193
6407
  */
6194
6408
  PostStartup = 2
6195
6409
  }
6196
6410
  /**
6197
- * DI token to register a {@link WorkbenchInitializerFn} as a multi-provider to hook into the startup process of the SCION Microfrontend Platform.
6411
+ * The signature of a function executed during the startup of the SCION Microfrontend Platform.
6198
6412
  *
6199
- * Initializers associated with this DI token are executed during {@link WORKBENCH_STARTUP} before starting the SCION Microfrontend Platform.
6413
+ * Initializers are used to run initialization tasks during startup of the SCION Microfrontend Platform.
6200
6414
  *
6201
- * Typically, you would configure the SCION Microfrontend Platform in this lifecycle hook, for example, register interceptors or decorators.
6202
- * At this point, you cannot interact with the microfrontend platform because it has not been started yet.
6415
+ * Initializers are registered using the `provideMicrofrontendPlatformInitializer()` function and can specify a phase for execution.
6416
+ * Initializers in lower phases execute before initializers in higher phases. Initializers in the same phase may
6417
+ * execute in parallel. If no phase is specified, the initializer executes in the `PostStartup` phase.
6203
6418
  *
6204
- * This lifecycle hook is only called if microfrontend support is enabled.
6419
+ * Microfrontend platform initializers run during the {@link WorkbenchStartupPhase.Startup} phase.
6205
6420
  *
6206
- * @see WorkbenchInitializerFn
6207
- * @deprecated since version 19.0.0-beta.3. Register initializer using `provideMicrofrontendPlatformInitializer` function. See `provideMicrofrontendPlatformInitializer` for an example. API will be removed in version 21.
6208
- */
6209
- declare const MICROFRONTEND_PLATFORM_PRE_STARTUP: InjectionToken<object | WorkbenchInitializerFn | WorkbenchInitializer>;
6210
- /**
6211
- * DI token to register a {@link WorkbenchInitializerFn} as a multi-provider to hook into the startup process of the SCION Microfrontend Platform.
6421
+ * Available phases, in order of execution:
6422
+ * - {@link MicrofrontendPlatformStartupPhase.PreStartup}
6423
+ * - {@link MicrofrontendPlatformStartupPhase.PostStartup}
6212
6424
  *
6213
- * Initializers associated with this DI token are executed during {@link WORKBENCH_STARTUP} after started the SCION Microfrontend Platform.
6425
+ * The function can call `inject` to get any required dependencies.
6214
6426
  *
6215
- * Typically, you would install intent and message handlers in this lifecycle hook.
6216
- * At this point, the activators of the micro applications are not yet installed.
6427
+ * @example - Registration of an initializer function
6428
+ * ```ts
6429
+ * import {provideWorkbench, provideMicrofrontendPlatformInitializer} from '@scion/workbench';
6430
+ * import {bootstrapApplication} from '@angular/platform-browser';
6431
+ * import {inject} from '@angular/core';
6217
6432
  *
6218
- * This lifecycle hook is only called if microfrontend support is enabled.
6433
+ * bootstrapApplication(AppComponent, {
6434
+ * providers: [
6435
+ * provideWorkbench(),
6436
+ * provideMicrofrontendPlatformInitializer(() => inject(SomeService).init()),
6437
+ * ],
6438
+ * });
6439
+ * ```
6440
+ * @see provideMicrofrontendPlatformInitializer
6441
+ */
6442
+ type MicrofrontendPlatformInitializerFn = () => void | Promise<void>;
6443
+
6444
+ /**
6445
+ * DI token to inject the deprecated referrer previously available on the removed `WorkbenchPopup.referrer`.
6219
6446
  *
6220
- * @see WorkbenchInitializerFn
6221
- * @deprecated since version 19.0.0-beta.3. Register initializer using `provideMicrofrontendPlatformInitializer` function. See `provideMicrofrontendPlatformInitializer` for an example. API will be removed in version 21.
6447
+ * @deprecated since version 21.0.0-beta.2. Marked for removal. No replacement. Instead, add a parameter to the popup capability for the popup opener to pass required referrer information.
6222
6448
  */
6223
- declare const MICROFRONTEND_PLATFORM_POST_STARTUP: InjectionToken<object | WorkbenchInitializerFn | WorkbenchInitializer>;
6449
+ declare const WORKBENCH_POPUP_REFERRER: InjectionToken<WorkbenchPopupReferrer>;
6224
6450
 
6225
6451
  /**
6226
6452
  * Patches '@scion/microfrontend-platform' typedef definition via module augmentation.
@@ -6248,6 +6474,26 @@ declare module '@scion/microfrontend-platform' {
6248
6474
  }
6249
6475
  }
6250
6476
 
6477
+ /**
6478
+ * Provides capability and parameters of a host microfrontend.
6479
+ *
6480
+ * Can be injected into a microfrontend component of the host application.
6481
+ */
6482
+ declare abstract class ActivatedMicrofrontend {
6483
+ /**
6484
+ * Capability associated with the microfrontend.
6485
+ */
6486
+ abstract readonly capability: Signal<Capability>;
6487
+ /**
6488
+ * Parameters passed to the microfrontend.
6489
+ */
6490
+ abstract readonly params: Signal<Map<string, unknown>>;
6491
+ /**
6492
+ * Symbolic name of the application that opened the microfrontend.
6493
+ */
6494
+ abstract readonly referrer: Signal<string>;
6495
+ }
6496
+
6251
6497
  /**
6252
6498
  * Provides the main entry point to start the SCION Workbench.
6253
6499
  *
@@ -6305,6 +6551,91 @@ declare abstract class WorkbenchLauncher {
6305
6551
  static ɵprov: i0.ɵɵInjectableDeclaration<WorkbenchLauncher>;
6306
6552
  }
6307
6553
 
6554
+ /**
6555
+ * Registers a function that is executed during the startup of the SCION Workbench.
6556
+ *
6557
+ * Initializers are used to run initialization tasks during startup of the SCION Workbench.
6558
+ * The workbench is fully started once all initializers have completed.
6559
+ *
6560
+ * Initializers can specify a phase for execution. Initializers in lower phases execute before initializers in higher phases.
6561
+ * Initializers in the same phase may execute in parallel. If no phase is specified, the initializer executes in the `Startup` phase.
6562
+ *
6563
+ * Available phases, in order of execution:
6564
+ * - {@link WorkbenchStartupPhase.PreStartup}
6565
+ * - {@link WorkbenchStartupPhase.Startup}
6566
+ * - {@link WorkbenchStartupPhase.PostStartup}
6567
+ *
6568
+ * The function can call `inject` to get any required dependencies.
6569
+ *
6570
+ * @param initializerFn - Specifies the function to execute.
6571
+ * @param options - Controls execution of the function.
6572
+ * @return A set of dependency-injection providers to be registered in Angular.
6573
+ */
6574
+ declare function provideWorkbenchInitializer(initializerFn: WorkbenchInitializerFn, options?: WorkbenchInitializerOptions): EnvironmentProviders;
6575
+ /**
6576
+ * Controls the execution of an initializer function during the startup of the SCION Workbench.
6577
+ */
6578
+ interface WorkbenchInitializerOptions {
6579
+ /**
6580
+ * Controls in which phase to execute the initializer.
6581
+ */
6582
+ phase?: WorkbenchStartupPhase;
6583
+ }
6584
+ /**
6585
+ * Enumeration of phases for running a {@link WorkbenchInitializerFn} function during the startup of the SCION Workbench.
6586
+ *
6587
+ * Functions associated with the same phase may run in parallel. Defaults to {@link Startup} phase.
6588
+ */
6589
+ declare enum WorkbenchStartupPhase {
6590
+ /**
6591
+ * Use to run an initializer before starting the workbench.
6592
+ */
6593
+ PreStartup = 0,
6594
+ /**
6595
+ * Use to run an initializer function after initializers of the {@link PreStartup} phase.
6596
+ *
6597
+ * This is the default phase if not specifying a phase.
6598
+ */
6599
+ Startup = 1,
6600
+ /**
6601
+ * Use to run an initializer function after initializers of the {@link Startup} phase.
6602
+ */
6603
+ PostStartup = 2
6604
+ }
6605
+ /**
6606
+ * The signature of a function executed during the startup of the SCION Workbench.
6607
+ *
6608
+ * Initializers are used to run initialization tasks during startup of the SCION Workbench.
6609
+ * The workbench is fully started once all initializers have completed.
6610
+ *
6611
+ * Initializers are registered using the `provideWorkbenchInitializer()` function and can specify a phase for execution.
6612
+ * Initializers in lower phases execute before initializers in higher phases. Initializers in the same phase may
6613
+ * execute in parallel. If no phase is specified, the initializer executes in the `Startup` phase.
6614
+ *
6615
+ * Available phases, in order of execution:
6616
+ * - {@link WorkbenchStartupPhase.PreStartup}
6617
+ * - {@link WorkbenchStartupPhase.Startup}
6618
+ * - {@link WorkbenchStartupPhase.PostStartup}
6619
+ *
6620
+ * The function can call `inject` to get any required dependencies.
6621
+ *
6622
+ * @example - Registration of an initializer function
6623
+ * ```ts
6624
+ * import {provideWorkbench, provideWorkbenchInitializer} from '@scion/workbench';
6625
+ * import {bootstrapApplication} from '@angular/platform-browser';
6626
+ * import {inject} from '@angular/core';
6627
+ *
6628
+ * bootstrapApplication(AppComponent, {
6629
+ * providers: [
6630
+ * provideWorkbench(),
6631
+ * provideWorkbenchInitializer(() => inject(SomeService).init()),
6632
+ * ],
6633
+ * });
6634
+ * ```
6635
+ * @see provideWorkbenchInitializer
6636
+ */
6637
+ type WorkbenchInitializerFn = () => void | Promise<void>;
6638
+
6308
6639
  /**
6309
6640
  * Enables the translation of a given {@link Translatable}.
6310
6641
  *
@@ -6388,5 +6719,5 @@ declare class IconComponent {
6388
6719
  static ɵcmp: i0.ɵɵComponentDeclaration<IconComponent, "wb-icon", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
6389
6720
  }
6390
6721
 
6391
- export { IconComponent, LogAppender, LogLevel, Logger, LoggerName, MAIN_AREA, MAIN_AREA_INITIAL_PART_ID, MICROFRONTEND_PLATFORM_POST_STARTUP, MICROFRONTEND_PLATFORM_PRE_STARTUP, MicrofrontendPlatformConfigLoader, MicrofrontendPlatformStartupPhase, Notification, NotificationService, WorkbenchPopup as Popup, PopupConfig, WorkbenchPopupService as PopupService, TextPipe, VIEW_TAB_RENDERING_CONTEXT, WORKBENCH_ID, WORKBENCH_POST_STARTUP, WORKBENCH_PRE_STARTUP, WORKBENCH_STARTUP, WorkbenchComponent, WorkbenchConfig, WorkbenchDesktopDirective, WorkbenchDialog, WorkbenchDialogActionDirective, WorkbenchDialogFooterDirective, WorkbenchDialogHeaderDirective, WorkbenchDialogService, WorkbenchLauncher, WorkbenchLayoutFactory, WorkbenchMessageBoxService, WorkbenchPart, WorkbenchPartActionDirective, WorkbenchPerspectiveData, WorkbenchPopup, WorkbenchPopupService, WorkbenchRouteData, WorkbenchRouter, WorkbenchRouterLinkDirective, WorkbenchService, WorkbenchStartup, WorkbenchStartupPhase, WorkbenchStorage, WorkbenchView, WorkbenchViewMenuItemDirective, canMatchWorkbenchOutlet, canMatchWorkbenchPart, canMatchWorkbenchPerspective, canMatchWorkbenchView, provideMicrofrontendPlatformInitializer, provideWorkbench, provideWorkbenchInitializer, text };
6392
- export type { ActivityId, BottomLeftPoint, BottomRightPoint, CanCloseFn, CanCloseRef, CloseStrategy, Commands, DialogId, Disposable, DockedPartExtras, DockingArea, LogEvent, MenuItemConfig, MicrofrontendPlatformInitializerOptions, NavigateFn, NavigationData, NavigationState, NotificationConfig, PartExtras, PartId, Point, PopupId, PopupOrigin, PopupSize, ReferencePart, TopLeftPoint, TopRightPoint, Translatable, ViewId, ViewMenuItemsConfig, ViewTabRenderingContext, WorkbenchDialogOptions, WorkbenchDialogSize, WorkbenchElement, WorkbenchIconDescriptor, WorkbenchIconProviderFn, WorkbenchInitializer, WorkbenchInitializerFn, WorkbenchInitializerOptions, WorkbenchLayout, WorkbenchLayoutFn, WorkbenchMenuItem, WorkbenchMessageBoxOptions, WorkbenchNavigationExtras, WorkbenchPartAction, WorkbenchPartActionFn, WorkbenchPartNavigation, WorkbenchPerspective, WorkbenchPerspectiveDefinition, WorkbenchPerspectiveSelectionFn, WorkbenchPerspectives, WorkbenchTextProviderFn, WorkbenchTheme, WorkbenchViewMenuItemFn, WorkbenchViewNavigation };
6722
+ export { ActivatedMicrofrontend, IconComponent, LogAppender, LogLevel, Logger, LoggerName, MAIN_AREA, MAIN_AREA_INITIAL_PART_ID, MicrofrontendPlatformConfigLoader, MicrofrontendPlatformStartupPhase, Notification, NotificationService, Popup, PopupConfig, PopupService, TextPipe, VIEW_TAB_RENDERING_CONTEXT, WORKBENCH_DIALOG_CONTEXT, WORKBENCH_ID, WORKBENCH_PART_CONTEXT, WORKBENCH_POPUP_CONTEXT, WORKBENCH_POPUP_REFERRER, WORKBENCH_VIEW_CONTEXT, WorkbenchComponent, WorkbenchConfig, WorkbenchDesktopDirective, WorkbenchDialog, WorkbenchDialogActionDirective, WorkbenchDialogFooterDirective, WorkbenchDialogHeaderDirective, WorkbenchDialogService, WorkbenchLauncher, WorkbenchLayoutFactory, WorkbenchMessageBoxService, WorkbenchNotification, WorkbenchNotificationService, WorkbenchPart, WorkbenchPartActionDirective, WorkbenchPerspectiveData, WorkbenchPopup, WorkbenchPopupService, WorkbenchRouteData, WorkbenchRouter, WorkbenchRouterLinkDirective, WorkbenchService, WorkbenchStartup, WorkbenchStartupPhase, WorkbenchStorage, WorkbenchView, WorkbenchViewMenuItemDirective, canMatchWorkbenchDialogCapability, canMatchWorkbenchMessageBoxCapability, canMatchWorkbenchOutlet, canMatchWorkbenchPart, canMatchWorkbenchPartCapability, canMatchWorkbenchPerspective, canMatchWorkbenchPopupCapability, canMatchWorkbenchView, canMatchWorkbenchViewCapability, provideMicrofrontendPlatformInitializer, provideWorkbench, provideWorkbenchInitializer, text };
6723
+ export type { ActivityId, BottomLeftPoint, BottomRightPoint, CanCloseFn, CanCloseRef, CloseStrategy$1 as CloseStrategy, Commands, DialogId, Disposable, DockedPartExtras, DockingArea, LogEvent, MenuItemConfig, MicrofrontendPlatformInitializerOptions, NavigateFn, NavigationData, NavigationState, NotificationConfig, PartExtras, PartId, Point, PopupId, PopupOrigin, ReferencePart, TopLeftPoint, TopRightPoint, Translatable, ViewId, ViewMenuItemsConfig, ViewTabRenderingContext, WorkbenchDialogOptions, WorkbenchDialogSize, WorkbenchElement, WorkbenchIconDescriptor, WorkbenchIconProviderFn, WorkbenchInitializerFn, WorkbenchInitializerOptions, WorkbenchLayout, WorkbenchLayoutFn, WorkbenchMenuItem, WorkbenchMessageBoxOptions, WorkbenchNavigationExtras, WorkbenchNotificationOptions, WorkbenchPartAction, WorkbenchPartActionFn, WorkbenchPartNavigation, WorkbenchPerspective, WorkbenchPerspectiveDefinition, WorkbenchPerspectiveSelectionFn, WorkbenchPerspectives, WorkbenchPopupOptions, WorkbenchPopupSize, WorkbenchTextProviderFn, WorkbenchViewMenuItemFn, WorkbenchViewNavigation };