@scion/workbench 17.0.0-beta.7 → 17.0.0-beta.9

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.
Files changed (304) hide show
  1. package/README.md +1 -1
  2. package/esm2022/lib/activation-instant.provider.mjs +3 -3
  3. package/esm2022/lib/common/asserts.util.mjs +2 -2
  4. package/esm2022/lib/common/coerce-observable.pipe.mjs +3 -3
  5. package/esm2022/lib/common/filter-by-predicate.pipe.mjs +3 -3
  6. package/esm2022/lib/common/filter-by-text.pipe.mjs +3 -3
  7. package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +6 -6
  8. package/esm2022/lib/common/instanceof.pipe.mjs +3 -3
  9. package/esm2022/lib/common/map-coerce.pipe.mjs +3 -3
  10. package/esm2022/lib/common/null-if-empty.pipe.mjs +3 -3
  11. package/esm2022/lib/common/objects.util.mjs +34 -0
  12. package/esm2022/lib/common/typeof.pipe.mjs +3 -3
  13. package/esm2022/lib/common/uuid.util.mjs +17 -0
  14. package/esm2022/lib/content-projection/content-as-overlay.component.mjs +3 -3
  15. package/esm2022/lib/content-projection/content-projection.directive.mjs +3 -3
  16. package/esm2022/lib/dialog/dialog-footer/dialog-action-filter.pipe.mjs +3 -3
  17. package/esm2022/lib/dialog/dialog-footer/dialog-footer.component.mjs +3 -3
  18. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-action.directive.mjs +9 -6
  19. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-footer.directive.mjs +9 -6
  20. package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +3 -3
  21. package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +9 -6
  22. package/esm2022/lib/dialog/movable.directive.mjs +3 -3
  23. package/esm2022/lib/dialog/resizable.directive.mjs +3 -3
  24. package/esm2022/lib/dialog/workbench-dialog.component.mjs +53 -24
  25. package/esm2022/lib/dialog/workbench-dialog.mjs +1 -1
  26. package/esm2022/lib/dialog/workbench-dialog.options.mjs +1 -1
  27. package/esm2022/lib/dialog/workbench-dialog.registry.mjs +4 -4
  28. package/esm2022/lib/dialog/workbench-dialog.service.mjs +5 -5
  29. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +7 -7
  30. package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +3 -3
  31. package/esm2022/lib/executor/single-task-executor.mjs +26 -7
  32. package/esm2022/lib/filter-field/filter-field.component.mjs +6 -6
  33. package/esm2022/lib/glass-pane/glass-pane.directive.mjs +15 -7
  34. package/esm2022/lib/layout/grid-element/grid-element.component.mjs +10 -10
  35. package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +6 -4
  36. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v1.model.mjs +11 -0
  37. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v2.model.mjs +11 -0
  38. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v3.model.mjs +11 -0
  39. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v4.model.mjs +11 -0
  40. package/esm2022/lib/layout/migration/workbench-layout-migration-v2.service.mjs +59 -0
  41. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +117 -0
  42. package/esm2022/lib/layout/migration/workbench-layout-migration-v4.service.mjs +57 -0
  43. package/esm2022/lib/layout/workbench-layout.component.mjs +6 -4
  44. package/esm2022/lib/layout/workbench-layout.factory.mjs +4 -4
  45. package/esm2022/lib/layout/workbench-layout.mjs +1 -1
  46. package/esm2022/lib/layout/workbench-layout.model.mjs +5 -6
  47. package/esm2022/lib/layout/workbench-layout.service.mjs +3 -3
  48. package/esm2022/lib/layout/workbench-layouts.util.mjs +37 -1
  49. package/esm2022/lib/layout/workench-layout-serializer.service.mjs +53 -21
  50. package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +8 -5
  51. package/esm2022/lib/layout//311/265workbench-layout.mjs +382 -195
  52. package/esm2022/lib/logging/console-appender.service.mjs +3 -3
  53. package/esm2022/lib/logging/logger.mjs +3 -3
  54. package/esm2022/lib/logging/logging-support.mjs +4 -4
  55. package/esm2022/lib/logging/logging.model.mjs +3 -3
  56. package/esm2022/lib/logging//311/265logger.mjs +3 -3
  57. package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +18 -20
  58. package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +3 -3
  59. package/esm2022/lib/message-box/workbench-message-box.component.mjs +15 -6
  60. package/esm2022/lib/message-box/workbench-message-box.options.mjs +1 -1
  61. package/esm2022/lib/message-box/workbench-message-box.service.mjs +5 -5
  62. package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +5 -5
  63. package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +26 -13
  64. package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +3 -3
  65. package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +25 -13
  66. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +3 -3
  67. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +11 -11
  68. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +5 -5
  69. package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +11 -9
  70. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +112 -0
  71. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +43 -0
  72. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +16 -13
  73. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +34 -0
  74. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.mjs +88 -0
  75. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.mjs +32 -0
  76. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +121 -0
  77. package/esm2022/lib/microfrontend-platform/microfrontend-notification/microfrontend-notification-intent-handler.service.mjs +3 -3
  78. package/esm2022/lib/microfrontend-platform/microfrontend-platform-config-loader.mjs +3 -3
  79. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +3 -3
  80. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +9 -6
  81. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +9 -15
  82. package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +3 -3
  83. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +4 -4
  84. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +37 -32
  85. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +3 -3
  86. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +3 -3
  87. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +13 -11
  88. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +14 -9
  89. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +54 -23
  90. package/esm2022/lib/migration/workbench-migration.mjs +11 -0
  91. package/esm2022/lib/migration/workbench-migrator.mjs +38 -0
  92. package/esm2022/lib/notification/notification-css-classes.pipe.mjs +3 -3
  93. package/esm2022/lib/notification/notification-list.component.mjs +3 -3
  94. package/esm2022/lib/notification/notification.component.mjs +3 -3
  95. package/esm2022/lib/notification/notification.config.mjs +1 -1
  96. package/esm2022/lib/notification/notification.mjs +1 -1
  97. package/esm2022/lib/notification/notification.service.mjs +9 -9
  98. package/esm2022/lib/notification/text-notification.component.mjs +3 -3
  99. package/esm2022/lib/page-not-found/format-url.pipe.mjs +26 -0
  100. package/esm2022/lib/page-not-found/page-not-found.component.mjs +28 -0
  101. package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +3 -3
  102. package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +3 -3
  103. package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +4 -4
  104. package/esm2022/lib/part/part-bar/part-bar.component.mjs +10 -8
  105. package/esm2022/lib/part/part-portal.pipe.mjs +3 -3
  106. package/esm2022/lib/part/part.component.mjs +6 -4
  107. package/esm2022/lib/part/view-context-menu/accelerator-format.pipe.mjs +3 -3
  108. package/esm2022/lib/part/view-context-menu/text.component.mjs +3 -3
  109. package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +3 -3
  110. package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +4 -4
  111. package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +18 -18
  112. package/esm2022/lib/part/view-list/view-list.component.mjs +3 -3
  113. package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +3 -3
  114. package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +9 -9
  115. package/esm2022/lib/part/view-tab/view-tab.component.mjs +13 -11
  116. package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +5 -5
  117. package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +9 -9
  118. package/esm2022/lib/part/workbench-part-action.registry.mjs +3 -3
  119. package/esm2022/lib/part/workbench-part.model.mjs +1 -1
  120. package/esm2022/lib/part/workbench-part.registry.mjs +3 -3
  121. package/esm2022/lib/part//311/265workbench-part.model.mjs +3 -3
  122. package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v1.model.mjs +11 -0
  123. package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v2.model.mjs +11 -0
  124. package/esm2022/lib/perspective/migration/workbench-perspective-migration-v2.service.mjs +57 -0
  125. package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +19 -51
  126. package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +23 -18
  127. package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +27 -42
  128. package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
  129. package/esm2022/lib/perspective/workbench-perspective.registry.mjs +3 -3
  130. package/esm2022/lib/perspective/workbench-perspective.service.mjs +15 -10
  131. package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +62 -0
  132. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +98 -78
  133. package/esm2022/lib/popup/popup.component.mjs +22 -10
  134. package/esm2022/lib/popup/popup.config.mjs +3 -1
  135. package/esm2022/lib/popup/popup.service.mjs +4 -4
  136. package/esm2022/lib/portal/workbench-portal-outlet.directive.mjs +6 -6
  137. package/esm2022/lib/public_api.mjs +3 -2
  138. package/esm2022/lib/registry/workbench-object-registry.mjs +3 -3
  139. package/esm2022/lib/routing/empty-outlet/empty-outlet.component.mjs +31 -0
  140. package/esm2022/lib/routing/public_api.mjs +1 -1
  141. package/esm2022/lib/routing/router.util.mjs +89 -35
  142. package/esm2022/lib/routing/routing.model.mjs +1 -1
  143. package/esm2022/lib/routing/url-segment-matcher.mjs +46 -0
  144. package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +58 -49
  145. package/esm2022/lib/routing/workbench-dialog-differ.mjs +6 -6
  146. package/esm2022/lib/routing/workbench-layout-differ.mjs +14 -17
  147. package/esm2022/lib/routing/workbench-message-box-differ.mjs +51 -0
  148. package/esm2022/lib/routing/workbench-navigational-states.mjs +4 -28
  149. package/esm2022/lib/routing/workbench-popup-differ.mjs +6 -6
  150. package/esm2022/lib/routing/workbench-route-data.mjs +14 -4
  151. package/esm2022/lib/routing/workbench-router-link.directive.mjs +24 -32
  152. package/esm2022/lib/routing/workbench-router.service.mjs +13 -378
  153. package/esm2022/lib/routing/workbench-url-observer.service.mjs +69 -82
  154. package/esm2022/lib/routing//311/265location.mjs +3 -3
  155. package/esm2022/lib/routing//311/265workbench-router.service.mjs +314 -0
  156. package/esm2022/lib/startup/splash/splash.component.mjs +3 -3
  157. package/esm2022/lib/startup/workbench-launcher.service.mjs +11 -11
  158. package/esm2022/lib/storage/workbench-storage.mjs +3 -3
  159. package/esm2022/lib/testing/public_api.mjs +2 -1
  160. package/esm2022/lib/testing/workbench-testing.module.mjs +13 -39
  161. package/esm2022/lib/testing/workbench.provider.mjs +60 -0
  162. package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +3 -3
  163. package/esm2022/lib/view/public_api.mjs +2 -1
  164. package/esm2022/lib/view/view-move-handler.service.mjs +42 -62
  165. package/esm2022/lib/view/view-portal.pipe.mjs +4 -4
  166. package/esm2022/lib/view/view.component.mjs +20 -40
  167. package/esm2022/lib/view/workbench-view-route-guards.mjs +47 -0
  168. package/esm2022/lib/view/workbench-view.model.mjs +6 -4
  169. package/esm2022/lib/view/workbench-view.registry.mjs +4 -4
  170. package/esm2022/lib/view//311/265workbench-view.model.mjs +106 -27
  171. package/esm2022/lib/view-dnd/requires-drop-zone.pipe.mjs +7 -7
  172. package/esm2022/lib/view-dnd/view-drag.service.mjs +6 -6
  173. package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +3 -3
  174. package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +4 -4
  175. package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +6 -4
  176. package/esm2022/lib/workbench-config.mjs +15 -0
  177. package/esm2022/lib/workbench-id.mjs +3 -3
  178. package/esm2022/lib/workbench.component.mjs +20 -12
  179. package/esm2022/lib/workbench.constants.mjs +7 -9
  180. package/esm2022/lib/workbench.model.mjs +1 -1
  181. package/esm2022/lib/workbench.module.mjs +15 -86
  182. package/esm2022/lib/workbench.provider.mjs +117 -0
  183. package/esm2022/lib/workbench.service.mjs +5 -5
  184. package/esm2022/lib//311/265workbench.service.mjs +15 -21
  185. package/fesm2022/scion-workbench.mjs +5490 -4166
  186. package/fesm2022/scion-workbench.mjs.map +1 -1
  187. package/lib/common/objects.util.d.ts +17 -0
  188. package/lib/common/uuid.util.d.ts +8 -0
  189. package/lib/dialog/workbench-dialog.component.d.ts +16 -7
  190. package/lib/dialog/workbench-dialog.d.ts +1 -1
  191. package/lib/dialog/workbench-dialog.options.d.ts +4 -3
  192. package/lib/dialog/workbench-dialog.registry.d.ts +4 -3
  193. package/lib/dialog/workbench-dialog.service.d.ts +1 -1
  194. package/lib/dialog//311/265workbench-dialog.d.ts +2 -2
  195. package/lib/executor/single-task-executor.d.ts +6 -1
  196. package/lib/filter-field/filter-field.component.d.ts +1 -1
  197. package/lib/glass-pane/glass-pane.directive.d.ts +21 -0
  198. package/lib/layout/grid-element/grid-element.component.d.ts +2 -2
  199. package/lib/layout/migration/model/workbench-layout-migration-v1.model.d.ts +16 -0
  200. package/lib/layout/migration/model/workbench-layout-migration-v2.model.d.ts +22 -0
  201. package/lib/layout/migration/model/workbench-layout-migration-v3.model.d.ts +30 -0
  202. package/lib/layout/migration/model/workbench-layout-migration-v4.model.d.ts +31 -0
  203. package/lib/layout/migration/workbench-layout-migration-v2.service.d.ts +13 -0
  204. package/lib/layout/migration/workbench-layout-migration-v3.service.d.ts +16 -0
  205. package/lib/layout/migration/workbench-layout-migration-v4.service.d.ts +12 -0
  206. package/lib/layout/workbench-layout.d.ts +61 -7
  207. package/lib/layout/workbench-layout.factory.d.ts +1 -1
  208. package/lib/layout/workbench-layout.model.d.ts +19 -9
  209. package/lib/layout/workbench-layouts.util.d.ts +18 -0
  210. package/lib/layout/workench-layout-serializer.service.d.ts +28 -7
  211. package/lib/layout//311/265workbench-layout.d.ts +172 -98
  212. package/lib/layout//311/265workbench-layout.factory.d.ts +4 -0
  213. package/lib/logging/logging-support.d.ts +2 -2
  214. package/lib/message-box/workbench-message-box.component.d.ts +3 -0
  215. package/lib/message-box/workbench-message-box.options.d.ts +4 -3
  216. package/lib/message-box/workbench-message-box.service.d.ts +1 -1
  217. package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +7 -1
  218. package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +1 -0
  219. package/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.d.ts +39 -0
  220. package/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.d.ts +25 -0
  221. package/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.d.ts +4 -2
  222. package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.d.ts +10 -0
  223. package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.d.ts +28 -0
  224. package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.d.ts +11 -0
  225. package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.d.ts +48 -0
  226. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +3 -7
  227. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +4 -9
  228. package/lib/microfrontend-platform/workbench-microfrontend-support.d.ts +3 -3
  229. package/lib/migration/workbench-migration.d.ts +9 -0
  230. package/lib/migration/workbench-migrator.d.ts +18 -0
  231. package/lib/notification/notification.config.d.ts +1 -1
  232. package/lib/notification/notification.d.ts +1 -3
  233. package/lib/page-not-found/format-url.pipe.d.ts +11 -0
  234. package/lib/page-not-found/page-not-found.component.d.ts +8 -0
  235. package/lib/part/part-action-bar/part-action.directive.d.ts +1 -1
  236. package/lib/part/part-bar/part-bar.component.d.ts +4 -3
  237. package/lib/part/view-context-menu/view-menu.directive.d.ts +1 -1
  238. package/lib/part/view-context-menu/view-menu.service.d.ts +5 -4
  239. package/lib/part/view-list-item/view-list-item.component.d.ts +5 -4
  240. package/lib/part/view-tab/view-tab.component.d.ts +6 -5
  241. package/lib/part/view-tab-drag-image/view-tab-drag-image.component.d.ts +3 -3
  242. package/lib/part/workbench-part.model.d.ts +5 -4
  243. package/lib/part//311/265workbench-part.model.d.ts +5 -4
  244. package/lib/perspective/migration/model/workbench-perspective-migration-v1.model.d.ts +8 -0
  245. package/lib/perspective/migration/model/workbench-perspective-migration-v2.model.d.ts +10 -0
  246. package/lib/perspective/migration/workbench-perspective-migration-v2.service.d.ts +13 -0
  247. package/lib/perspective/workbench-grid-merger.service.d.ts +9 -16
  248. package/lib/perspective/workbench-perspective-storage.service.d.ts +10 -28
  249. package/lib/perspective/workbench-perspective-view-conflict-resolver.service.d.ts +8 -25
  250. package/lib/perspective/workbench-perspective.model.d.ts +123 -14
  251. package/lib/perspective/workbench-perspective.service.d.ts +10 -3
  252. package/lib/perspective/workench-perspective-serializer.service.d.ts +26 -0
  253. package/lib/perspective//311/265workbench-perspective.model.d.ts +16 -14
  254. package/lib/popup/popup.component.d.ts +1 -0
  255. package/lib/popup/popup.config.d.ts +4 -3
  256. package/lib/portal/workbench-portal-outlet.directive.d.ts +2 -2
  257. package/lib/public_api.d.ts +4 -3
  258. package/lib/registry/workbench-object-registry.d.ts +2 -2
  259. package/lib/routing/empty-outlet/empty-outlet.component.d.ts +15 -0
  260. package/lib/routing/public_api.d.ts +2 -2
  261. package/lib/routing/router.util.d.ts +45 -19
  262. package/lib/routing/routing.model.d.ts +107 -8
  263. package/lib/routing/url-segment-matcher.d.ts +20 -0
  264. package/lib/routing/workbench-auxiliary-routes-registrator.service.d.ts +25 -15
  265. package/lib/routing/workbench-layout-differ.d.ts +4 -7
  266. package/lib/routing/workbench-message-box-differ.d.ts +25 -0
  267. package/lib/routing/workbench-navigational-states.d.ts +6 -19
  268. package/lib/routing/workbench-route-data.d.ts +13 -3
  269. package/lib/routing/workbench-router-link.directive.d.ts +22 -7
  270. package/lib/routing/workbench-router.service.d.ts +42 -142
  271. package/lib/routing/workbench-url-observer.service.d.ts +10 -28
  272. package/lib/routing//311/265workbench-router.service.d.ts +74 -0
  273. package/lib/startup/workbench-launcher.service.d.ts +4 -4
  274. package/lib/testing/public_api.d.ts +1 -0
  275. package/lib/testing/workbench-testing.module.d.ts +7 -6
  276. package/lib/testing/workbench.provider.d.ts +29 -0
  277. package/lib/view/public_api.d.ts +2 -1
  278. package/lib/view/view-move-handler.service.d.ts +2 -4
  279. package/lib/view/view-portal.pipe.d.ts +2 -1
  280. package/lib/view/view.component.d.ts +1 -11
  281. package/lib/view/workbench-view-route-guards.d.ts +36 -0
  282. package/lib/view/workbench-view.model.d.ts +37 -5
  283. package/lib/view/workbench-view.registry.d.ts +4 -3
  284. package/lib/view//311/265workbench-view.model.d.ts +61 -15
  285. package/lib/view-dnd/view-drag.service.d.ts +9 -4
  286. package/lib/view-dnd/view-drop-zone.directive.d.ts +1 -1
  287. package/lib/{workbench-module-config.d.ts → workbench-config.d.ts} +29 -71
  288. package/lib/workbench.component.d.ts +2 -2
  289. package/lib/workbench.constants.d.ts +6 -8
  290. package/lib/workbench.model.d.ts +20 -8
  291. package/lib/workbench.module.d.ts +12 -7
  292. package/lib/workbench.provider.d.ts +38 -0
  293. package/lib/workbench.service.d.ts +32 -8
  294. package/lib//311/265workbench.service.d.ts +9 -3
  295. package/package.json +8 -8
  296. package/esm2022/lib/layout/migration/workbench-layout-migrator.service.mjs +0 -38
  297. package/esm2022/lib/layout/migration/workbench-layout-v1-migrator.service.mjs +0 -59
  298. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.service.mjs +0 -46
  299. package/esm2022/lib/view/workbench-view-pre-destroy.guard.mjs +0 -36
  300. package/esm2022/lib/workbench-module-config.mjs +0 -15
  301. package/lib/layout/migration/workbench-layout-migrator.service.d.ts +0 -15
  302. package/lib/layout/migration/workbench-layout-v1-migrator.service.d.ts +0 -12
  303. package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.service.d.ts +0 -17
  304. package/lib/view/workbench-view-pre-destroy.guard.d.ts +0 -5
@@ -4,17 +4,18 @@ import { WorkbenchAuxiliaryRoutesRegistrator } from './workbench-auxiliary-route
4
4
  import { WorkbenchViewRegistry } from '../view/workbench-view.registry';
5
5
  import { WorkbenchPartRegistry } from '../part/workbench-part.registry';
6
6
  import { WorkbenchLayoutService } from '../layout/workbench-layout.service';
7
- import { WorkbenchRouter } from './workbench-router.service';
8
7
  import { WorkbenchLayoutDiffer } from './workbench-layout-differ';
9
8
  import { WorkbenchPopupDiffer } from './workbench-popup-differ';
10
9
  import { Logger } from '../logging';
11
10
  import { ɵWorkbenchLayoutFactory } from '../layout/ɵworkbench-layout.factory';
12
11
  import { WorkbenchDialogDiffer } from './workbench-dialog-differ';
12
+ import { ɵWorkbenchRouter } from './ɵworkbench-router.service';
13
+ import { WorkbenchMessageBoxDiffer } from './workbench-message-box-differ';
13
14
  import * as i0 from "@angular/core";
14
15
  /**
15
16
  * Tracks the browser URL for workbench layout changes.
16
17
  *
17
- * - For each added view, constructs a {@link WorkbenchView} and registers view specific auxiliary routes of all primary routes
18
+ * - For each added view, constructs a {@link WorkbenchView} and registers view specific auxiliary routes of all top-level routes
18
19
  * - For each removed view, destroys {@link WorkbenchView} and unregisters its auxiliary routes
19
20
  * - For each added part, constructs a {@link WorkbenchPart}
20
21
  * - For each removed part, destroys {@link WorkbenchPart}
@@ -22,7 +23,7 @@ import * as i0 from "@angular/core";
22
23
  */
23
24
  export declare class WorkbenchUrlObserver {
24
25
  private _router;
25
- private _auxRoutesRegistrator;
26
+ private _auxiliaryRoutesRegistrator;
26
27
  private _viewRegistry;
27
28
  private _partRegistry;
28
29
  private _workbenchLayoutService;
@@ -32,8 +33,9 @@ export declare class WorkbenchUrlObserver {
32
33
  private _workbenchLayoutDiffer;
33
34
  private _workbenchPopupDiffer;
34
35
  private _workbenchDialogDiffer;
36
+ private _workbenchMessageBoxDiffer;
35
37
  private _logger;
36
- constructor(_router: Router, _auxRoutesRegistrator: WorkbenchAuxiliaryRoutesRegistrator, _viewRegistry: WorkbenchViewRegistry, _partRegistry: WorkbenchPartRegistry, _workbenchLayoutService: WorkbenchLayoutService, _environmentInjector: EnvironmentInjector, _workbenchRouter: WorkbenchRouter, _workbenchLayoutFactory: ɵWorkbenchLayoutFactory, _workbenchLayoutDiffer: WorkbenchLayoutDiffer, _workbenchPopupDiffer: WorkbenchPopupDiffer, _workbenchDialogDiffer: WorkbenchDialogDiffer, _logger: Logger);
38
+ constructor(_router: Router, _auxiliaryRoutesRegistrator: WorkbenchAuxiliaryRoutesRegistrator, _viewRegistry: WorkbenchViewRegistry, _partRegistry: WorkbenchPartRegistry, _workbenchLayoutService: WorkbenchLayoutService, _environmentInjector: EnvironmentInjector, _workbenchRouter: ɵWorkbenchRouter, _workbenchLayoutFactory: ɵWorkbenchLayoutFactory, _workbenchLayoutDiffer: WorkbenchLayoutDiffer, _workbenchPopupDiffer: WorkbenchPopupDiffer, _workbenchDialogDiffer: WorkbenchDialogDiffer, _workbenchMessageBoxDiffer: WorkbenchMessageBoxDiffer, _logger: Logger);
37
39
  /** Invoked at the beginning of each navigation */
38
40
  private onNavigationStart;
39
41
  /** Invoked upon successful navigation */
@@ -49,35 +51,15 @@ export declare class WorkbenchUrlObserver {
49
51
  */
50
52
  private createWorkbenchNavigationContext;
51
53
  /**
52
- * For each added view, registers auxiliary routes of all primary routes.
54
+ * For each added workbench outlet, registers auxiliary routes of all top-level routes.
53
55
  */
54
- private registerAddedViewAuxiliaryRoutes;
56
+ private registerAddedOutletAuxiliaryRoutes;
55
57
  /**
56
- * For each added popup, registers auxiliary routes of all primary routes.
57
- */
58
- registerAddedPopupAuxiliaryRoutes(): void;
59
- /**
60
- * For each added dialog, registers auxiliary routes of all primary routes.
61
- */
62
- registerAddedDialogAuxiliaryRoutes(): void;
63
- /**
64
- * Reverts the workbench layout differ to the state before the navigation.
65
- *
66
- * Invoke this method after navigation failure or cancellation. The navigation is cancelled when guards perform a redirect or reject navigation.
67
- */
68
- private undoWorkbenchLayoutDiffer;
69
- /**
70
- * Reverts the popup outlet differ to the state before the navigation.
71
- *
72
- * Invoke this method after navigation failure or cancellation. The navigation is cancelled when guards perform a redirect or reject navigation.
73
- */
74
- private undoWorkbenchPopupDiffer;
75
- /**
76
- * Reverts the dialog outlet differ to the state before the navigation.
58
+ * Reverts the workbench differs to the state before the navigation.
77
59
  *
78
60
  * Invoke this method after navigation failure or cancellation. The navigation is cancelled when guards perform a redirect or reject navigation.
79
61
  */
80
- private undoWorkbenchDialogDiffer;
62
+ private undoWorkbenchDiffers;
81
63
  /**
82
64
  * Undoes the registration of auxiliary routes.
83
65
  *
@@ -0,0 +1,74 @@
1
+ import { NavigationExtras, Router, UrlTree } from '@angular/router';
2
+ import { WorkbenchRouter } from './workbench-router.service';
3
+ import { Injector, NgZone } from '@angular/core';
4
+ import { WorkbenchLayoutService } from '../layout/workbench-layout.service';
5
+ import { ɵWorkbenchLayout } from '../layout/ɵworkbench-layout';
6
+ import { Commands, WorkbenchNavigationContext, WorkbenchNavigationExtras } from './routing.model';
7
+ import { WorkbenchViewRegistry } from '../view/workbench-view.registry';
8
+ import { Logger } from '../logging';
9
+ import * as i0 from "@angular/core";
10
+ /** @inheritDoc */
11
+ export declare class ɵWorkbenchRouter implements WorkbenchRouter {
12
+ private _router;
13
+ private _workbenchLayoutService;
14
+ private _workbenchViewRegistry;
15
+ private _injector;
16
+ private _logger;
17
+ private _zone;
18
+ private _singleNavigationExecutor;
19
+ /**
20
+ * Holds the current navigational context during a workbench navigation, or `null` if no navigation is in progress.
21
+ */
22
+ private _currentNavigationContext;
23
+ constructor(_router: Router, _workbenchLayoutService: WorkbenchLayoutService, _workbenchViewRegistry: WorkbenchViewRegistry, _injector: Injector, _logger: Logger, _zone: NgZone);
24
+ /** @inheritDoc */
25
+ navigate(commands: Commands, extras?: WorkbenchNavigationExtras): Promise<boolean>;
26
+ navigate(navigateFn: ɵNavigateFn, extras?: Omit<NavigationExtras, 'relativeTo' | 'state'>): Promise<boolean>;
27
+ navigate(commandsOrNavigateFn: Commands | ɵNavigateFn, extras?: WorkbenchNavigationExtras | Omit<NavigationExtras, 'relativeTo' | 'state'>): Promise<boolean>;
28
+ /**
29
+ * Performs changes to the current workbench layout.
30
+ *
31
+ * Unlike {@link navigate}, does not perform the navigation but returns the URL tree instead.
32
+ *
33
+ * The router will invoke the callback and pass the current layout for modification. The callback can call `inject` to get any required dependencies.
34
+ *
35
+ * The following example adds a part to the left of the main area, inserts a view and navigates it.
36
+ *
37
+ * ```ts
38
+ * inject(WorkbenchRouter).createUrlTree(layout => layout
39
+ * .addPart('left', {relativeTo: MAIN_AREA, align: 'left'})
40
+ * .addView('navigator', {partId: 'left'})
41
+ * .navigateView('navigator', ['path/to/view'])
42
+ * .activateView('navigator'),
43
+ * );
44
+ * ```
45
+ *
46
+ * @param onNavigate - Specifies the callback to modify the layout.
47
+ * @param extras - Controls how to perform the navigation.
48
+ * @see NavigateFn
49
+ */
50
+ createUrlTree(onNavigate: (layout: ɵWorkbenchLayout) => Promise<ɵWorkbenchLayout | null> | ɵWorkbenchLayout | null, extras?: Omit<NavigationExtras, 'relativeTo' | 'state'>): Promise<UrlTree | null>;
51
+ /**
52
+ * Decides if given view can be closed, invoking `CanClose` guard if implemented.
53
+ */
54
+ private canCloseView;
55
+ /**
56
+ * Returns the context of the current workbench navigation, when being invoked during navigation, or throws an error otherwise.
57
+ */
58
+ getCurrentNavigationContext(): WorkbenchNavigationContext;
59
+ /**
60
+ * Sets navigational contextual data.
61
+ */
62
+ setCurrentNavigationContext(context: WorkbenchNavigationContext | null): void;
63
+ /**
64
+ * Blocks until the initial layout is available, i.e. after completion of Angular's initial navigation.
65
+ */
66
+ private waitForInitialLayout;
67
+ static ɵfac: i0.ɵɵFactoryDeclaration<ɵWorkbenchRouter, never>;
68
+ static ɵprov: i0.ɵɵInjectableDeclaration<ɵWorkbenchRouter>;
69
+ }
70
+ /**
71
+ * @inheritDoc
72
+ * @see NavigateFn
73
+ */
74
+ export type ɵNavigateFn = (layout: ɵWorkbenchLayout) => Promise<ɵWorkbenchLayout | null> | ɵWorkbenchLayout | null;
@@ -1,4 +1,4 @@
1
- import { WorkbenchModuleConfig } from '../workbench-module-config';
1
+ import { WorkbenchConfig } from '../workbench-config';
2
2
  import { EnvironmentProviders, Injector, NgZone } from '@angular/core';
3
3
  import { Logger } from '../logging';
4
4
  import * as i0 from "@angular/core";
@@ -9,7 +9,7 @@ import * as i0 from "@angular/core";
9
9
  * Workbench initializers may execute in parallel. To register a workbench initializer, provide a class implementing
10
10
  * {@link WorkbenchInitializer} as a multi-provider using the DI class token {@link WorkbenchInitializer}.
11
11
  *
12
- * When importing the {@link WorkbenchModule}, you can configure which workbench launching strategy to use.
12
+ * The SCION Workbench supports the following launchers:
13
13
  *
14
14
  * - **APP_INITIALIZER**
15
15
  * Launches the workbench in an Angular `APP_INITIALIZER`, which is before bootstrapping the app component.
@@ -23,7 +23,7 @@ import * as i0 from "@angular/core";
23
23
  * tree.
24
24
  *
25
25
  * The workbench component displays a startup splash until completed startup. You can configure a custom splash in
26
- * {@link WorkbenchModuleConfig#startup#splash}. When launching the workbench in an Angular `APP_INITIALIZER`, no splash will
26
+ * {@link WorkbenchConfig#startup#splash}. When launching the workbench in an Angular `APP_INITIALIZER`, no splash will
27
27
  * display since the workbench will start upfront.
28
28
  */
29
29
  export declare class WorkbenchLauncher {
@@ -97,4 +97,4 @@ export declare class WorkbenchStartup {
97
97
  /**
98
98
  * Provides a set of DI providers for launching the workbench.
99
99
  */
100
- export declare function provideWorkbenchLauncher(workbenchModuleConfig: WorkbenchModuleConfig): EnvironmentProviders | [];
100
+ export declare function provideWorkbenchLauncher(workbenchConfig: WorkbenchConfig): EnvironmentProviders | [];
@@ -1 +1,2 @@
1
1
  export { WorkbenchTestingModule } from './workbench-testing.module';
2
+ export { provideWorkbenchForTest } from './workbench.provider';
@@ -1,12 +1,11 @@
1
1
  import { ModuleWithProviders } from '@angular/core';
2
- import { WorkbenchModuleConfig } from '../workbench-module-config';
2
+ import { WorkbenchConfig } from '../workbench-config';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "../workbench.module";
5
4
  /**
6
5
  * Sets up the SCION Workbench to be used for testing.
7
6
  *
8
- * It does the following:
9
- * - provides the workbench applying given config
7
+ * Does the following:
8
+ * - provides the workbench with given config
10
9
  * - configures the workbench to name the initial part 'main'
11
10
  * - installs a sequence for activation instants
12
11
  * - configures the testbed to auto-detect changes
@@ -27,13 +26,15 @@ import * as i1 from "../workbench.module";
27
26
  * });
28
27
  * });
29
28
  * ```
29
+ *
30
+ * @deprecated since version 17.0.0-beta.8; Register SCION Workbench providers using `provideWorkbench` function instead; API will be removed in a future release; API will be removed in a future release.
30
31
  */
31
32
  export declare class WorkbenchTestingModule {
32
33
  /**
33
34
  * Sets up the SCION Workbench to be used for testing.
34
35
  */
35
- static forTest(config?: WorkbenchModuleConfig): ModuleWithProviders<WorkbenchTestingModule>;
36
+ static forTest(config?: WorkbenchConfig): ModuleWithProviders<WorkbenchTestingModule>;
36
37
  static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchTestingModule, never>;
37
- static ɵmod: i0.ɵɵNgModuleDeclaration<WorkbenchTestingModule, never, never, [typeof i1.WorkbenchModule]>;
38
+ static ɵmod: i0.ɵɵNgModuleDeclaration<WorkbenchTestingModule, never, never, never>;
38
39
  static ɵinj: i0.ɵɵInjectorDeclaration<WorkbenchTestingModule>;
39
40
  }
@@ -0,0 +1,29 @@
1
+ import { WorkbenchConfig } from '../workbench-config';
2
+ import { EnvironmentProviders } from '@angular/core';
3
+ /**
4
+ * Returns the set of dependency-injection providers to enable and configure the SCION Workbench in tests.
5
+ *
6
+ * Does the following:
7
+ * - provides the workbench with given config
8
+ * - configures the workbench to name the initial part 'main'
9
+ * - installs a sequence for activation instants
10
+ * - configures the testbed to auto-detect changes
11
+ * - disables animations
12
+ * - performs the initial navigation
13
+ *
14
+ * ### Usage
15
+ *
16
+ * ```
17
+ * beforeEach(() => {
18
+ * TestBed.configureTestingModule({
19
+ * imports: [
20
+ * WorkbenchTestingModule.forTest(),
21
+ * RouterTestingModule.withRoutes([
22
+ * {path: 'test-view', component: TestComponent},
23
+ * ]),
24
+ * ],
25
+ * });
26
+ * });
27
+ * ```
28
+ */
29
+ export declare function provideWorkbenchForTest(config?: WorkbenchConfig): EnvironmentProviders;
@@ -1 +1,2 @@
1
- export { WorkbenchView } from './workbench-view.model';
1
+ export { WorkbenchView, ViewId } from './workbench-view.model';
2
+ export { canMatchWorkbenchView } from './workbench-view-route-guards';
@@ -1,8 +1,7 @@
1
- import { Injector } from '@angular/core';
2
1
  import { ViewDragService } from '../view-dnd/view-drag.service';
3
2
  import { Router } from '@angular/router';
4
3
  import { LocationStrategy } from '@angular/common';
5
- import { WorkbenchRouter } from '../routing/workbench-router.service';
4
+ import { ɵWorkbenchRouter } from '../routingworkbench-router.service';
6
5
  import { ɵWorkbenchLayoutFactory } from '../layout/ɵworkbench-layout.factory';
7
6
  import * as i0 from "@angular/core";
8
7
  /**
@@ -15,8 +14,7 @@ export declare class ViewMoveHandler {
15
14
  private _viewDragService;
16
15
  private _router;
17
16
  private _locationStrategy;
18
- private _injector;
19
- constructor(_workbenchId: string, _workbenchRouter: WorkbenchRouter, _workbenchLayoutFactory: ɵWorkbenchLayoutFactory, _viewDragService: ViewDragService, _router: Router, _locationStrategy: LocationStrategy, _injector: Injector);
17
+ constructor(_workbenchId: string, _workbenchRouter: ɵWorkbenchRouter, _workbenchLayoutFactory: ɵWorkbenchLayoutFactory, _viewDragService: ViewDragService, _router: Router, _locationStrategy: LocationStrategy);
20
18
  private installViewMoveListener;
21
19
  private addView;
22
20
  private moveViewToNewWindow;
@@ -2,6 +2,7 @@ import { PipeTransform } from '@angular/core';
2
2
  import { WorkbenchViewRegistry } from './workbench-view.registry';
3
3
  import { WbComponentPortal } from '../portal/wb-component-portal';
4
4
  import type { ViewComponent } from '../view/view.component';
5
+ import { ViewId } from './workbench-view.model';
5
6
  import * as i0 from "@angular/core";
6
7
  /**
7
8
  * Resolves the portal for the given view, or throws an error if the view is not registered.
@@ -9,7 +10,7 @@ import * as i0 from "@angular/core";
9
10
  export declare class ViewPortalPipe implements PipeTransform {
10
11
  private _viewRegistry;
11
12
  constructor(_viewRegistry: WorkbenchViewRegistry);
12
- transform(viewId: string | null): WbComponentPortal<ViewComponent> | null;
13
+ transform(viewId: ViewId | null): WbComponentPortal<ViewComponent> | null;
13
14
  static ɵfac: i0.ɵɵFactoryDeclaration<ViewPortalPipe, never>;
14
15
  static ɵpipe: i0.ɵɵPipeDeclaration<ViewPortalPipe, "wbViewPortal", true>;
15
16
  }
@@ -1,5 +1,4 @@
1
1
  import { ElementRef, OnDestroy } from '@angular/core';
2
- import { ActivatedRoute, RouterOutlet } from '@angular/router';
3
2
  import { SciViewportComponent } from '@scion/components/viewport';
4
3
  import { ViewMenuService } from '../part/view-context-menu/view-menu.service';
5
4
  import { ɵWorkbenchView } from './ɵworkbench-view.model';
@@ -8,13 +7,7 @@ import { ViewDragService } from '../view-dnd/view-drag.service';
8
7
  import * as i0 from "@angular/core";
9
8
  import * as i1 from "../glass-pane/glass-pane.directive";
10
9
  /**
11
- * Is the graphical representation of a workbench view.
12
- *
13
- * The view has its dedicated router outlet to display view content. Use route path parameters
14
- * to decide what specific content to present. Use matrix parameters to associate optional data
15
- * with the view outlet URL.
16
- *
17
- * Title and heading of this view are either set via `WorkbenchView`, or given as route data or matrix parameter.
10
+ * Renders the workbench view, using a router-outlet to display view content.
18
11
  */
19
12
  export declare class ViewComponent implements OnDestroy {
20
13
  private _view;
@@ -23,15 +16,12 @@ export declare class ViewComponent implements OnDestroy {
23
16
  private _viewDragService;
24
17
  private _viewport$;
25
18
  set setViewport(viewport: SciViewportComponent);
26
- routerOutlet: RouterOutlet;
27
19
  get viewId(): string;
28
20
  get cssClasses(): string;
29
21
  get isViewDragActive(): boolean;
30
22
  constructor(_view: ɵWorkbenchView, _logger: Logger, _host: ElementRef<HTMLElement>, _viewDragService: ViewDragService, viewContextMenuService: ViewMenuService);
31
23
  private onActivateView;
32
24
  private onDeactivateView;
33
- onActivateRoute(route: ActivatedRoute): void;
34
- onDeactivateRoute(): void;
35
25
  ngOnDestroy(): void;
36
26
  static ɵfac: i0.ɵɵFactoryDeclaration<ViewComponent, never>;
37
27
  static ɵcmp: i0.ɵɵComponentDeclaration<ViewComponent, "wb-view", never, {}, {}, never, never, true, [{ directive: typeof i1.GlassPaneDirective; inputs: {}; outputs: {}; }]>;
@@ -0,0 +1,36 @@
1
+ import { CanMatchFn } from '@angular/router';
2
+ /**
3
+ * Matches the route if target of a workbench view and navigating with the given hint.
4
+ *
5
+ * Can be used to differentiate between routes with an identical path. For example, the views of the initial layout or a perspective
6
+ * are usually navigated to the empty path route to avoid cluttering the URL. A hint can be set when navigating the view to match a
7
+ * particular route.
8
+ *
9
+ * ### Example:
10
+ *
11
+ * The following routes both match the empty path, but only if navigated with a specific hint.
12
+ * ```ts
13
+ * const routes: Routes = [
14
+ * {path: '', canMatch: [canMatchWorkbenchView('navigator')], component: NavigatorComponent},
15
+ * {path: '', canMatch: [canMatchWorkbenchView('outline')], component: OutlineComponent},
16
+ * ];
17
+ * ```
18
+ *
19
+ * The following example navigates to the `OutlineComponent`, passing a hint to match the route.
20
+ * ```ts
21
+ * inject(WorkbenchRouter).navigate([], {hint: 'outline'});
22
+ * ```
23
+ */
24
+ export declare function canMatchWorkbenchView(navigationHint: string): CanMatchFn;
25
+ /**
26
+ * Matches the route if, or if not target of a workbench view.
27
+ *
28
+ * Can be used to guard the application's root route from matching an empty path view navigation.
29
+ */
30
+ export declare function canMatchWorkbenchView(canMatch: boolean): CanMatchFn;
31
+ /**
32
+ * Matches if the view has been navigated (or cannot be found).
33
+ *
34
+ * The view cannot be found during initial navigation as the workbench layout is loaded asynchronously.
35
+ */
36
+ export declare const canMatchNotFoundPage: CanMatchFn;
@@ -5,17 +5,41 @@ import { WorkbenchMenuItem } from '../workbench.model';
5
5
  import { WorkbenchPart } from '../part/workbench-part.model';
6
6
  import { ViewState } from '../routing/routing.model';
7
7
  /**
8
- * A view is a visual workbench component for displaying content stacked or side-by-side.
8
+ * Handle to interact with a view opened via {@link WorkbenchRouter}.
9
9
  *
10
- * Any component registered as a primary Angular route can be opened as a view using the {@link WorkbenchRouter}.
10
+ * The view component can inject this handle to interact with the view, such as setting the title or closing the view.
11
11
  *
12
- * @see WorkbenchPart
12
+ * The view component can inject `ActivatedRoute` to obtain parameters passed to the navigation and/or read data associated with the route.
13
+ *
14
+ * @see WorkbenchRouter
13
15
  */
14
16
  export declare abstract class WorkbenchView {
15
17
  /**
16
18
  * Unique identity of this view.
19
+ *
20
+ * Each view is assigned a unique identifier (e.g., `view.1`, `view.2`, etc.).
21
+ *
22
+ * @see alternativeId
23
+ */
24
+ abstract readonly id: ViewId;
25
+ /**
26
+ * Alternative identity of this view.
27
+ *
28
+ * A view can have an alternative id, a meaningful but not necessarily unique name. A view can
29
+ * be identified either by its unique or alternative id.
30
+ *
31
+ * @see id
17
32
  */
18
- abstract readonly id: string;
33
+ abstract readonly alternativeId: string | undefined;
34
+ /**
35
+ * Hint passed to the navigation.
36
+ *
37
+ * A hint can be passed to the navigation to differentiate between routes with identical paths.
38
+ *
39
+ * For example, the views of the initial layout or a perspective are usually navigated to the empty path route to avoid cluttering the URL,
40
+ * requiring a navigation hint to differentiate between the routes.
41
+ */
42
+ abstract readonly navigationHint: string | undefined;
19
43
  /**
20
44
  * Reference to the part which contains this view.
21
45
  *
@@ -31,7 +55,7 @@ export declare abstract class WorkbenchView {
31
55
  */
32
56
  abstract heading: string | null;
33
57
  /**
34
- * Specifies CSS class(es) to be added to the view, useful in end-to-end tests for locating view and view tab.
58
+ * Specifies CSS class(es) to add to the view, e.g., to locate the view in tests.
35
59
  */
36
60
  abstract cssClass: string | string[];
37
61
  /**
@@ -126,3 +150,11 @@ export declare abstract class WorkbenchView {
126
150
  */
127
151
  abstract registerMenuItem(menuItem: WorkbenchMenuItem): Disposable;
128
152
  }
153
+ /**
154
+ * Format of a view identifier.
155
+ *
156
+ * Each view is assigned a unique identifier (e.g., `view.1`, `view.2`, etc.).
157
+ * A view can also have an alternative id, a meaningful but not necessarily unique name. A view can
158
+ * be identified either by its unique or alternative id.
159
+ */
160
+ export type ViewId = `view.${number}`;
@@ -1,6 +1,7 @@
1
1
  import { OnDestroy } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
3
  import { ɵWorkbenchView } from './ɵworkbench-view.model';
4
+ import { ViewId } from './workbench-view.model';
4
5
  import * as i0 from "@angular/core";
5
6
  /**
6
7
  * Registry for {@link WorkbenchView} model objects.
@@ -15,12 +16,12 @@ export declare class WorkbenchViewRegistry implements OnDestroy {
15
16
  /**
16
17
  * Unregisters specified view and destroys it.
17
18
  */
18
- unregister(viewId: string): void;
19
+ unregister(viewId: ViewId): void;
19
20
  /**
20
21
  * Returns the {@link WorkbenchView} of the given identity. If not found, by default, throws an error unless setting the `orElseNull` option.
21
22
  */
22
- get(viewId: string): ɵWorkbenchView;
23
- get(viewId: string, options: {
23
+ get(viewId: ViewId): ɵWorkbenchView;
24
+ get(viewId: ViewId, options: {
24
25
  orElse: null;
25
26
  }): ɵWorkbenchView | null;
26
27
  get views(): readonly ɵWorkbenchView[];
@@ -2,25 +2,27 @@ import { BehaviorSubject, Observable } from 'rxjs';
2
2
  import { UrlSegment } from '@angular/router';
3
3
  import { Disposable } from '../common/disposable';
4
4
  import { WorkbenchMenuItem } from '../workbench.model';
5
- import { WorkbenchView } from './workbench-view.model';
5
+ import { ViewId, WorkbenchView } from './workbench-view.model';
6
6
  import { WorkbenchPart } from '../part/workbench-part.model';
7
7
  import { ComponentType } from '@angular/cdk/portal';
8
8
  import { WbComponentPortal } from '../portal/wb-component-portal';
9
- import { AbstractType, Type } from '@angular/core';
9
+ import { AbstractType, Injector, Type } from '@angular/core';
10
10
  import { ɵWorkbenchLayout } from '../layout/ɵworkbench-layout';
11
11
  import { ɵWorkbenchDialog } from '../dialog/ɵworkbench-dialog';
12
12
  import { Blockable } from '../glass-pane/blockable';
13
- import { ViewState } from '../routing/routing.model';
14
13
  import { ClassList } from '../common/class-list';
14
+ import { ViewState } from '../routing/routing.model';
15
+ import { UUID } from '../common/uuid.util';
15
16
  export declare class ɵWorkbenchView implements WorkbenchView, Blockable {
16
- readonly id: string;
17
+ readonly id: ViewId;
17
18
  private readonly _workbenchId;
18
19
  private readonly _workbenchService;
19
20
  private readonly _workbenchLayoutService;
21
+ private readonly _router;
20
22
  private readonly _workbenchRouter;
23
+ private readonly _childrenOutletContexts;
21
24
  private readonly _partRegistry;
22
25
  private readonly _viewDragService;
23
- private readonly _router;
24
26
  private readonly _activationInstantProvider;
25
27
  private readonly _workbenchDialogRegistry;
26
28
  private readonly _part$;
@@ -30,43 +32,68 @@ export declare class ɵWorkbenchView implements WorkbenchView, Blockable {
30
32
  private readonly _destroyRef;
31
33
  private _activationInstant;
32
34
  private _closable;
35
+ uid: UUID;
36
+ alternativeId: string | undefined;
37
+ navigationHint: string | undefined;
38
+ urlSegments: UrlSegment[];
39
+ state: ViewState;
33
40
  title: string | null;
34
41
  heading: string | null;
35
42
  dirty: boolean;
36
43
  scrollTop: number;
37
44
  scrollLeft: number;
38
- state: ViewState;
39
45
  readonly active$: BehaviorSubject<boolean>;
40
46
  readonly menuItems$: Observable<WorkbenchMenuItem[]>;
41
47
  readonly blockedBy$: BehaviorSubject<ɵWorkbenchDialog<unknown> | null>;
42
48
  readonly portal: WbComponentPortal;
43
49
  readonly classList: ClassList;
44
- constructor(id: string, options: {
50
+ constructor(id: ViewId, options: {
45
51
  component: ComponentType<ViewComponent>;
46
52
  });
47
53
  private createPortal;
48
54
  /**
49
- * Method invoked to update this workbench model object when the workbench layout changes.
55
+ * Method invoked when a route is about to be activated for this view.
56
+ */
57
+ private onRouteActivate;
58
+ /**
59
+ * Method invoked when the workbench layout has changed.
60
+ *
61
+ * This method:
62
+ * - is called on every layout change, including changes not relevant for this view.
63
+ * - is called after successful navigation, i.e., after {@link onRouteActivate}.
50
64
  */
51
65
  onLayoutChange(layout: ɵWorkbenchLayout): void;
66
+ /**
67
+ * Returns the component of this view. Returns `null` if not navigated the view, or before it was activated for the first time.
68
+ */
69
+ getComponent<T = unknown>(): T | null;
70
+ /**
71
+ * Returns the injector of the component. Returns `null` if not navigated the view, or before it was activated for the first time.
72
+ */
73
+ getComponentInjector(): Injector | null;
74
+ /** @inheritDoc */
52
75
  get first(): boolean;
76
+ /** @inheritDoc */
53
77
  get last(): boolean;
78
+ /** @inheritDoc */
54
79
  get position(): number;
80
+ /** @inheritDoc */
55
81
  set cssClass(cssClass: string | string[]);
82
+ /** @inheritDoc */
56
83
  get cssClass(): string[];
84
+ /** @inheritDoc */
57
85
  get active(): boolean;
86
+ /** @inheritDoc */
58
87
  set closable(closable: boolean);
88
+ /** @inheritDoc */
59
89
  get closable(): boolean;
90
+ /** @inheritDoc */
60
91
  activate(options?: {
61
92
  skipLocationChange?: boolean;
62
93
  }): Promise<boolean>;
63
- /**
64
- * Sets whether the tab of this view is scrolled into view in the tabbar.
65
- */
94
+ /** @inheritDoc */
66
95
  set scrolledIntoView(scrolledIntoView: boolean);
67
- /**
68
- * @inheritDoc
69
- */
96
+ /** @inheritDoc */
70
97
  get scrolledIntoView(): boolean;
71
98
  /**
72
99
  * Informs whether the tab of this view is scrolled into view in the tabbar.
@@ -74,14 +101,17 @@ export declare class ɵWorkbenchView implements WorkbenchView, Blockable {
74
101
  */
75
102
  get scrolledIntoView$(): Observable<boolean>;
76
103
  get activationInstant(): number | undefined;
104
+ /** @inheritDoc */
77
105
  get part(): WorkbenchPart;
106
+ /** @inheritDoc */
78
107
  close(target?: 'self' | 'all-views' | 'other-views' | 'views-to-the-right' | 'views-to-the-left'): Promise<boolean>;
108
+ /** @inheritDoc */
79
109
  move(target: 'new-window'): void;
80
110
  move(partId: string, options?: {
81
111
  region?: 'north' | 'south' | 'west' | 'east';
82
112
  workbenchId?: string;
83
113
  }): void;
84
- get urlSegments(): UrlSegment[];
114
+ /** @inheritDoc */
85
115
  registerMenuItem(menuItem: WorkbenchMenuItem): Disposable;
86
116
  /**
87
117
  * Registers an adapter for this view, replacing any previously registered adapter of the same type.
@@ -110,6 +140,22 @@ export declare class ɵWorkbenchView implements WorkbenchView, Blockable {
110
140
  * Blocks this view when a dialog overlays it.
111
141
  */
112
142
  private blockWhenDialogOpened;
143
+ /**
144
+ * Detects when to activate a route for this view.
145
+ *
146
+ * Listening for route activations on the view's router outlet is not sufficient,
147
+ * as the outlet does not report subsequent activations of nested child routes.
148
+ *
149
+ * Example:
150
+ * ```html
151
+ * <router-outlet #router_outlet="outlet"
152
+ * (activate)="onActivateRoute(router_outlet.activatedRoute)">
153
+ * </router-outlet>
154
+ * ```
155
+ *
156
+ * Instead, we subscribe to Angular's `ActivationStart` router events and update the view properties accordingly.
157
+ */
158
+ private detectRouteActivation;
113
159
  destroy(): void;
114
160
  }
115
161
  /**