@scion/workbench 17.0.0-beta.9 → 18.0.0-beta.10

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 (328) hide show
  1. package/_index.scss +7 -5
  2. package/design/_workbench-global-styles.scss +18 -0
  3. package/design/_workbench-icon-font.scss +1 -1
  4. package/design/_workbench-popup-global-styles.scss +1 -1
  5. package/design/{_workbench-view-drag-image-global-styles.scss → _workbench-view-global-styles.scss} +1 -2
  6. package/esm2022/lib/activation-instant.provider.mjs +3 -3
  7. package/esm2022/lib/common/asserts.util.mjs +1 -1
  8. package/esm2022/lib/common/class-list.mjs +67 -29
  9. package/esm2022/lib/common/coerce-observable.pipe.mjs +3 -3
  10. package/esm2022/lib/common/dom.util.mjs +1 -1
  11. package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +4 -4
  12. package/esm2022/lib/common/instanceof.pipe.mjs +3 -3
  13. package/esm2022/lib/common/map-coerce.pipe.mjs +3 -3
  14. package/esm2022/lib/common/math.util.mjs +16 -0
  15. package/esm2022/lib/common/null-if-empty.pipe.mjs +4 -4
  16. package/esm2022/lib/common/objects.util.mjs +7 -1
  17. package/esm2022/lib/common/observables.mjs +1 -1
  18. package/esm2022/lib/common/operators.mjs +1 -12
  19. package/esm2022/lib/common/stringify-error.util.mjs +1 -1
  20. package/esm2022/lib/common/typeof.pipe.mjs +3 -3
  21. package/esm2022/lib/common/uid.util.mjs +22 -0
  22. package/esm2022/lib/common//311/265destroy-ref.mjs +1 -1
  23. package/esm2022/lib/content-projection/content-as-overlay.component.mjs +87 -30
  24. package/esm2022/lib/content-projection/workbench-element-references.mjs +32 -0
  25. package/esm2022/lib/dialog/dialog-footer/dialog-action-filter.pipe.mjs +3 -3
  26. package/esm2022/lib/dialog/dialog-footer/dialog-footer.component.mjs +3 -3
  27. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-action.directive.mjs +3 -3
  28. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-footer.directive.mjs +3 -3
  29. package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +5 -10
  30. package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +3 -3
  31. package/esm2022/lib/dialog/movable.directive.mjs +6 -6
  32. package/esm2022/lib/dialog/resizable.directive.mjs +6 -6
  33. package/esm2022/lib/dialog/workbench-dialog.component.mjs +27 -25
  34. package/esm2022/lib/dialog/workbench-dialog.mjs +61 -1
  35. package/esm2022/lib/dialog/workbench-dialog.registry.mjs +4 -4
  36. package/esm2022/lib/dialog/workbench-dialog.service.mjs +3 -3
  37. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +99 -61
  38. package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +28 -25
  39. package/esm2022/lib/executor/latest-task-executor.mjs +55 -0
  40. package/esm2022/lib/executor/single-task-executor.mjs +9 -19
  41. package/esm2022/lib/filter-field/filter-field.component.mjs +8 -8
  42. package/esm2022/lib/glass-pane/glass-pane.directive.mjs +4 -4
  43. package/esm2022/lib/layout/grid-element/grid-element.component.mjs +10 -20
  44. package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +19 -22
  45. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +11 -0
  46. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v6.model.mjs +11 -0
  47. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +7 -7
  48. package/esm2022/lib/layout/migration/workbench-layout-migration-v4.service.mjs +4 -4
  49. package/esm2022/lib/layout/migration/workbench-layout-migration-v5.service.mjs +67 -0
  50. package/esm2022/lib/layout/migration/workbench-layout-migration-v6.service.mjs +59 -0
  51. package/esm2022/lib/layout/stringifier.mjs +70 -0
  52. package/esm2022/lib/layout/workbench-layout.component.mjs +19 -23
  53. package/esm2022/lib/layout/workbench-layout.factory.mjs +3 -3
  54. package/esm2022/lib/layout/workbench-layout.mjs +1 -1
  55. package/esm2022/lib/layout/workbench-layout.model.mjs +1 -1
  56. package/esm2022/lib/layout/workbench-layout.service.mjs +28 -26
  57. package/esm2022/lib/layout/workbench-layouts.util.mjs +1 -9
  58. package/esm2022/lib/layout/workench-layout-serializer.service.mjs +22 -32
  59. package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +6 -5
  60. package/esm2022/lib/layout//311/265workbench-layout.mjs +77 -66
  61. package/esm2022/lib/logging/console-appender.service.mjs +4 -4
  62. package/esm2022/lib/logging/logger.mjs +3 -3
  63. package/esm2022/lib/logging/logging-support.mjs +7 -13
  64. package/esm2022/lib/logging/logging.model.mjs +3 -3
  65. package/esm2022/lib/logging//311/265logger.mjs +12 -12
  66. package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +9 -8
  67. package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +5 -5
  68. package/esm2022/lib/message-box/workbench-message-box.component.mjs +5 -5
  69. package/esm2022/lib/message-box/workbench-message-box.service.mjs +3 -3
  70. package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +6 -5
  71. package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +22 -6
  72. package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +29 -22
  73. package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +6 -6
  74. package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +14 -4
  75. package/esm2022/lib/microfrontend-platform/manifest-object-cache.service.mjs +63 -0
  76. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +8 -7
  77. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +4 -4
  78. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +8 -12
  79. package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +21 -12
  80. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +10 -9
  81. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +6 -6
  82. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +17 -15
  83. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +6 -5
  84. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.mjs +4 -4
  85. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.mjs +4 -4
  86. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +10 -15
  87. package/esm2022/lib/microfrontend-platform/microfrontend-notification/microfrontend-notification-intent-handler.service.mjs +3 -3
  88. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.mjs +39 -0
  89. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.mjs +120 -0
  90. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.mjs +55 -0
  91. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.mjs +19 -0
  92. package/esm2022/lib/microfrontend-platform/microfrontend-platform-config-loader.mjs +3 -3
  93. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +7 -6
  94. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +13 -14
  95. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +14 -30
  96. package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +5 -5
  97. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +13 -29
  98. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +92 -72
  99. package/esm2022/lib/microfrontend-platform/public_api.mjs +2 -1
  100. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +8 -7
  101. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +20 -18
  102. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +30 -8
  103. package/esm2022/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.mjs +32 -0
  104. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +29 -11
  105. package/esm2022/lib/migration/workbench-migrator.mjs +1 -1
  106. package/esm2022/lib/notification/notification-css-classes.pipe.mjs +3 -3
  107. package/esm2022/lib/notification/notification-list.component.mjs +6 -10
  108. package/esm2022/lib/notification/notification.component.mjs +6 -7
  109. package/esm2022/lib/notification/notification.service.mjs +8 -7
  110. package/esm2022/lib/notification/text-notification.component.mjs +3 -3
  111. package/esm2022/lib/notification//311/265notification.mjs +1 -1
  112. package/esm2022/lib/page-not-found/page-not-found.component.mjs +7 -9
  113. package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +12 -20
  114. package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +7 -7
  115. package/esm2022/lib/part/part-bar/part-bar.component.mjs +334 -265
  116. package/esm2022/lib/part/part-portal.pipe.mjs +10 -10
  117. package/esm2022/lib/part/part.component.mjs +34 -43
  118. package/esm2022/lib/part/view-context-menu/accelerator-format.pipe.mjs +4 -4
  119. package/esm2022/lib/part/view-context-menu/text.component.mjs +17 -13
  120. package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +6 -8
  121. package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +5 -5
  122. package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +50 -51
  123. package/esm2022/lib/part/view-list/view-list.component.mjs +42 -49
  124. package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +23 -27
  125. package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +16 -18
  126. package/esm2022/lib/part/view-tab/view-tab.component.mjs +100 -111
  127. package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +5 -6
  128. package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +17 -18
  129. package/esm2022/lib/part/workbench-part-action.registry.mjs +18 -42
  130. package/esm2022/lib/part/workbench-part.model.mjs +10 -1
  131. package/esm2022/lib/part/workbench-part.registry.mjs +11 -45
  132. package/esm2022/lib/part//311/265workbench-part.model.mjs +71 -55
  133. package/esm2022/lib/perspective/migration/workbench-perspective-migration-v2.service.mjs +4 -4
  134. package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +6 -6
  135. package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +4 -4
  136. package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +4 -4
  137. package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
  138. package/esm2022/lib/perspective/workbench-perspective.registry.mjs +11 -43
  139. package/esm2022/lib/perspective/workbench-perspective.service.mjs +73 -64
  140. package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +5 -5
  141. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +62 -47
  142. package/esm2022/lib/popup/popup.component.mjs +6 -6
  143. package/esm2022/lib/popup/popup.config.mjs +27 -25
  144. package/esm2022/lib/popup/popup.service.mjs +171 -176
  145. package/esm2022/lib/portal/wb-component-portal.mjs +18 -17
  146. package/esm2022/lib/portal/workbench-portal-outlet.directive.mjs +4 -4
  147. package/esm2022/lib/public_api.mjs +1 -1
  148. package/esm2022/lib/registry/workbench-object-registry.mjs +38 -17
  149. package/esm2022/lib/routing/empty-outlet/empty-outlet.component.mjs +3 -3
  150. package/esm2022/lib/routing/public_api.mjs +2 -2
  151. package/esm2022/lib/routing/routing.model.mjs +1 -1
  152. package/esm2022/lib/routing/routing.util.mjs +215 -0
  153. package/esm2022/lib/routing/url-segment-matcher.mjs +1 -1
  154. package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +110 -0
  155. package/esm2022/lib/routing/workbench-dialog-differ.mjs +6 -6
  156. package/esm2022/lib/routing/workbench-layout-differ.mjs +6 -13
  157. package/esm2022/lib/routing/workbench-message-box-differ.mjs +6 -6
  158. package/esm2022/lib/routing/workbench-navigational-states.mjs +2 -2
  159. package/esm2022/lib/routing/workbench-popup-differ.mjs +6 -6
  160. package/esm2022/lib/routing/workbench-route-guards.mjs +57 -0
  161. package/esm2022/lib/routing/workbench-router-link.directive.mjs +5 -5
  162. package/esm2022/lib/routing/workbench-router.service.mjs +3 -3
  163. package/esm2022/lib/routing/workbench-url-observer.service.mjs +143 -151
  164. package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +58 -0
  165. package/esm2022/lib/routing//311/265location.mjs +3 -3
  166. package/esm2022/lib/routing//311/265workbench-router.service.mjs +121 -76
  167. package/esm2022/lib/startup/splash/splash.component.mjs +5 -5
  168. package/esm2022/lib/startup/workbench-initializer.mjs +1 -1
  169. package/esm2022/lib/startup/workbench-launcher.service.mjs +28 -16
  170. package/esm2022/lib/storage/workbench-storage.mjs +3 -3
  171. package/esm2022/lib/testing/workbench-testing.module.mjs +4 -4
  172. package/esm2022/lib/testing/workbench.provider.mjs +5 -5
  173. package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +18 -22
  174. package/esm2022/lib/view/public_api.mjs +1 -2
  175. package/esm2022/lib/view/view-move-handler.service.mjs +73 -58
  176. package/esm2022/lib/view/view-portal.pipe.mjs +9 -9
  177. package/esm2022/lib/view/view.component.mjs +55 -43
  178. package/esm2022/lib/view/workbench-view.model.mjs +1 -1
  179. package/esm2022/lib/view/workbench-view.registry.mjs +11 -45
  180. package/esm2022/lib/view//311/265workbench-view.model.mjs +183 -153
  181. package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +2 -2
  182. package/esm2022/lib/view-dnd/requires-drop-zone.pipe.mjs +4 -4
  183. package/esm2022/lib/view-dnd/view-drag.service.mjs +89 -73
  184. package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +9 -9
  185. package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +9 -9
  186. package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +45 -58
  187. package/esm2022/lib/workbench-config.mjs +2 -2
  188. package/esm2022/lib/workbench-id.mjs +3 -3
  189. package/esm2022/lib/workbench.component.mjs +67 -55
  190. package/esm2022/lib/workbench.constants.mjs +1 -5
  191. package/esm2022/lib/workbench.model.mjs +1 -1
  192. package/esm2022/lib/workbench.module.mjs +4 -4
  193. package/esm2022/lib/workbench.provider.mjs +3 -9
  194. package/esm2022/lib/workbench.service.mjs +4 -4
  195. package/esm2022/lib//311/265workbench.service.mjs +40 -44
  196. package/fesm2022/scion-workbench.mjs +4348 -3628
  197. package/fesm2022/scion-workbench.mjs.map +1 -1
  198. package/lib/common/class-list.d.ts +35 -22
  199. package/lib/common/math.util.d.ts +7 -0
  200. package/lib/common/objects.util.d.ts +6 -2
  201. package/lib/common/operators.d.ts +1 -6
  202. package/lib/common/uid.util.d.ts +9 -0
  203. package/lib/content-projection/content-as-overlay.component.d.ts +39 -22
  204. package/lib/content-projection/workbench-element-references.d.ts +13 -0
  205. package/lib/dialog/workbench-dialog.component.d.ts +3 -2
  206. package/lib/dialog/workbench-dialog.d.ts +57 -13
  207. package/lib/dialog//311/265workbench-dialog.d.ts +38 -24
  208. package/lib/dialog//311/265workbench-dialog.service.d.ts +10 -11
  209. package/lib/executor/latest-task-executor.d.ts +26 -0
  210. package/lib/executor/single-task-executor.d.ts +5 -8
  211. package/lib/filter-field/filter-field.component.d.ts +1 -1
  212. package/lib/layout/grid-element/grid-element.component.d.ts +1 -8
  213. package/lib/layout/main-area-layout/main-area-layout.component.d.ts +0 -4
  214. package/lib/layout/migration/model/workbench-layout-migration-v5.model.d.ts +36 -0
  215. package/lib/layout/migration/model/workbench-layout-migration-v6.model.d.ts +35 -0
  216. package/lib/layout/migration/{workbench-layout-migration-v2.service.d.ts → workbench-layout-migration-v5.service.d.ts} +4 -5
  217. package/lib/layout/migration/workbench-layout-migration-v6.service.d.ts +12 -0
  218. package/lib/layout/stringifier.d.ts +26 -0
  219. package/lib/layout/workbench-layout.component.d.ts +4 -5
  220. package/lib/layout/workbench-layout.d.ts +9 -6
  221. package/lib/layout/workbench-layout.model.d.ts +4 -3
  222. package/lib/layout/workbench-layout.service.d.ts +14 -16
  223. package/lib/layout/workbench-layouts.util.d.ts +0 -6
  224. package/lib/layout/workench-layout-serializer.service.d.ts +13 -16
  225. package/lib/layout//311/265workbench-layout.d.ts +18 -19
  226. package/lib/layout//311/265workbench-layout.factory.d.ts +3 -2
  227. package/lib/logging//311/265logger.d.ts +2 -3
  228. package/lib/microfrontend-platform/common/microfrontend.util.d.ts +5 -1
  229. package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +7 -3
  230. package/lib/microfrontend-platform/manifest-object-cache.service.d.ts +33 -0
  231. package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +3 -6
  232. package/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.d.ts +2 -1
  233. package/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.d.ts +1 -1
  234. package/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.d.ts +2 -1
  235. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.d.ts +10 -0
  236. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.d.ts +24 -0
  237. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.d.ts +20 -0
  238. package/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.d.ts +9 -0
  239. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.d.ts +4 -8
  240. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +0 -4
  241. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +5 -12
  242. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +23 -33
  243. package/lib/microfrontend-platform/public_api.d.ts +1 -0
  244. package/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.d.ts +1 -1
  245. package/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.d.ts +3 -7
  246. package/lib/microfrontend-platform/routing/microfrontend-view-routes.d.ts +9 -2
  247. package/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.d.ts +11 -0
  248. package/lib/notification/notification-list.component.d.ts +0 -2
  249. package/lib/page-not-found/page-not-found.component.d.ts +1 -0
  250. package/lib/part/part-action-bar/part-action-bar.component.d.ts +3 -4
  251. package/lib/part/part-action-bar/part-action.directive.d.ts +2 -2
  252. package/lib/part/part-bar/part-bar.component.d.ts +73 -63
  253. package/lib/part/part-portal.pipe.d.ts +3 -5
  254. package/lib/part/part.component.d.ts +9 -12
  255. package/lib/part/view-context-menu/text.component.d.ts +3 -4
  256. package/lib/part/view-context-menu/view-menu.directive.d.ts +1 -1
  257. package/lib/part/view-context-menu/view-menu.service.d.ts +13 -17
  258. package/lib/part/view-list/view-list.component.d.ts +8 -21
  259. package/lib/part/view-list-button/view-list-button.component.d.ts +8 -11
  260. package/lib/part/view-list-item/view-list-item.component.d.ts +3 -7
  261. package/lib/part/view-tab/view-tab.component.d.ts +19 -29
  262. package/lib/part/view-tab-drag-image/view-tab-drag-image.component.d.ts +4 -4
  263. package/lib/part/workbench-part-action.registry.d.ts +3 -23
  264. package/lib/part/workbench-part.model.d.ts +8 -27
  265. package/lib/part/workbench-part.registry.d.ts +3 -26
  266. package/lib/part//311/265workbench-part.model.d.ts +23 -17
  267. package/lib/perspective/workbench-perspective.model.d.ts +18 -25
  268. package/lib/perspective/workbench-perspective.registry.d.ts +3 -26
  269. package/lib/perspective/workbench-perspective.service.d.ts +16 -14
  270. package/lib/perspective/workench-perspective-serializer.service.d.ts +1 -1
  271. package/lib/perspective//311/265workbench-perspective.model.d.ts +30 -21
  272. package/lib/popup/popup.config.d.ts +11 -10
  273. package/lib/popup/popup.service.d.ts +15 -28
  274. package/lib/portal/wb-component-portal.d.ts +21 -5
  275. package/lib/public_api.d.ts +1 -1
  276. package/lib/registry/workbench-object-registry.d.ts +10 -6
  277. package/lib/routing/public_api.d.ts +2 -2
  278. package/lib/routing/routing.model.d.ts +25 -13
  279. package/lib/routing/{router.util.d.ts → routing.util.d.ts} +28 -1
  280. package/lib/routing/{workbench-auxiliary-routes-registrator.service.d.ts → workbench-auxiliary-route-installer.service.d.ts} +10 -3
  281. package/lib/routing/workbench-layout-differ.d.ts +1 -2
  282. package/lib/routing/workbench-navigational-states.d.ts +8 -4
  283. package/lib/{view/workbench-view-route-guards.d.ts → routing/workbench-route-guards.d.ts} +8 -2
  284. package/lib/routing/workbench-url-observer.service.d.ts +31 -55
  285. package/lib/routing/workbench-view-outlet-differ.d.ts +32 -0
  286. package/lib/routing//311/265workbench-router.service.d.ts +22 -18
  287. package/lib/startup/workbench-launcher.service.d.ts +4 -5
  288. package/lib/testing/workbench.provider.d.ts +3 -1
  289. package/lib/theme/workbench-theme-switcher.service.d.ts +4 -6
  290. package/lib/view/public_api.d.ts +0 -1
  291. package/lib/view/view-move-handler.service.d.ts +16 -14
  292. package/lib/view/view-portal.pipe.d.ts +1 -3
  293. package/lib/view/view.component.d.ts +21 -12
  294. package/lib/view/workbench-view.model.d.ts +88 -36
  295. package/lib/view/workbench-view.registry.d.ts +3 -27
  296. package/lib/view//311/265workbench-view.model.d.ts +62 -71
  297. package/lib/view-dnd/view-drag.service.d.ts +79 -49
  298. package/lib/view-dnd/view-drop-placeholder-renderer.service.d.ts +1 -1
  299. package/lib/view-dnd/view-tab-drag-image-renderer.service.d.ts +12 -36
  300. package/lib/workbench-config.d.ts +19 -7
  301. package/lib/workbench.component.d.ts +16 -30
  302. package/lib/workbench.constants.d.ts +0 -5
  303. package/lib/workbench.model.d.ts +31 -3
  304. package/lib/workbench.service.d.ts +58 -56
  305. package/lib//311/265workbench.service.d.ts +18 -31
  306. package/package.json +12 -12
  307. package/esm2022/lib/common/filter-by-predicate.pipe.mjs +0 -27
  308. package/esm2022/lib/common/filter-by-text.pipe.mjs +0 -39
  309. package/esm2022/lib/common/uuid.util.mjs +0 -17
  310. package/esm2022/lib/content-projection/content-projection.directive.mjs +0 -101
  311. package/esm2022/lib/content-projection/view-container.reference.mjs +0 -68
  312. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v1.model.mjs +0 -11
  313. package/esm2022/lib/layout/migration/workbench-layout-migration-v2.service.mjs +0 -59
  314. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +0 -41
  315. package/esm2022/lib/page-not-found/format-url.pipe.mjs +0 -26
  316. package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +0 -26
  317. package/esm2022/lib/routing/router.util.mjs +0 -126
  318. package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +0 -94
  319. package/esm2022/lib/view/workbench-view-route-guards.mjs +0 -47
  320. package/lib/common/filter-by-predicate.pipe.d.ts +0 -10
  321. package/lib/common/filter-by-text.pipe.d.ts +0 -12
  322. package/lib/common/uuid.util.d.ts +0 -8
  323. package/lib/content-projection/content-projection.directive.d.ts +0 -30
  324. package/lib/content-projection/view-container.reference.d.ts +0 -42
  325. package/lib/layout/migration/model/workbench-layout-migration-v1.model.d.ts +0 -16
  326. package/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.d.ts +0 -10
  327. package/lib/page-not-found/format-url.pipe.d.ts +0 -11
  328. package/lib/part/part-action-bar/part-action-filter.pipe.d.ts +0 -11
@@ -1,20 +1,17 @@
1
- import { EnvironmentInjector } from '@angular/core';
2
- import { WorkbenchLayoutFn, WorkbenchPerspectiveDefinition, WorkbenchPerspectives } from './workbench-perspective.model';
1
+ import { ɵWorkbenchPerspective } from './ɵworkbench-perspective.model';
2
+ import { WorkbenchPerspectiveDefinition } from './workbench-perspective.model';
3
3
  import { WorkbenchInitializer } from '../startup/workbench-initializer';
4
- import { Logger } from '../logging/logger';
5
- import { WorkbenchStartup } from '../startup/workbench-launcher.service';
6
- import { WorkbenchPerspectiveRegistry } from './workbench-perspective.registry';
7
- import { WorkbenchPerspectiveStorageService } from './workbench-perspective-storage.service';
8
4
  import * as i0 from "@angular/core";
9
5
  /**
10
6
  * Enables registration and activation of perspectives.
11
7
  */
12
8
  export declare class WorkbenchPerspectiveService implements WorkbenchInitializer {
13
- private _layoutConfig;
14
- private _perspectiveRegistry;
15
- private _environmentInjector;
16
- private _workbenchPerspectiveStorageService;
17
- constructor(_layoutConfig: WorkbenchLayoutFn | WorkbenchPerspectives, _perspectiveRegistry: WorkbenchPerspectiveRegistry, _environmentInjector: EnvironmentInjector, _workbenchPerspectiveStorageService: WorkbenchPerspectiveStorageService, workbenchStartup: WorkbenchStartup, logger: Logger);
9
+ private readonly _workbenchConfig;
10
+ private readonly _perspectiveRegistry;
11
+ private readonly _environmentInjector;
12
+ private readonly _applicationInitStatus;
13
+ private readonly _workbenchPerspectiveStorageService;
14
+ readonly activePerspective: import("@angular/core").Signal<ɵWorkbenchPerspective | undefined>;
18
15
  init(): Promise<void>;
19
16
  /**
20
17
  * Registers perspectives configured in {@link WorkbenchConfig}.
@@ -29,6 +26,7 @@ export declare class WorkbenchPerspectiveService implements WorkbenchInitializer
29
26
  * Registers the given perspective to arrange views around the main area.
30
27
  */
31
28
  registerPerspective(definition: WorkbenchPerspectiveDefinition): Promise<void>;
29
+ private createPerspective;
32
30
  /**
33
31
  * Switches to the specified perspective. The main area will not change, if any.
34
32
  *
@@ -45,13 +43,17 @@ export declare class WorkbenchPerspectiveService implements WorkbenchInitializer
45
43
  */
46
44
  resetPerspective(): Promise<void>;
47
45
  /**
48
- * Activates the initial perspective, if any.
46
+ * Activates the initial perspective.
49
47
  */
50
48
  private activateInitialPerspective;
51
49
  /**
52
- * Returns the currently active perspective, or `null` if there is no current perspective.
50
+ * Determines which perspective to activate, with the following precedence:
51
+ *
52
+ * 1. Perspective defined as window name.
53
+ * 2. Perspective defined in storage.
54
+ * 3. Perspective configured in the workbench config.
53
55
  */
54
- private get activePerspective();
56
+ private determineInitialPerspective;
55
57
  static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchPerspectiveService, never>;
56
58
  static ɵprov: i0.ɵɵInjectableDeclaration<WorkbenchPerspectiveService>;
57
59
  }
@@ -19,7 +19,7 @@ export declare class WorkbenchPerspectiveSerializer {
19
19
  /**
20
20
  * Represents the current version of the workbench perspective layout.
21
21
  *
22
- * Increment this version and write a migrator when introducting a breaking change.
22
+ * Increment this version and write a migrator when introducing a breaking change.
23
23
  *
24
24
  * @see WorkbenchMigrator
25
25
  */
@@ -1,27 +1,25 @@
1
+ import { InjectionToken, Injector, Signal } from '@angular/core';
1
2
  import { WorkbenchPerspective, WorkbenchPerspectiveDefinition } from './workbench-perspective.model';
2
- import { Observable } from 'rxjs';
3
3
  /**
4
4
  * @inheritDoc
5
5
  */
6
6
  export declare class ɵWorkbenchPerspective implements WorkbenchPerspective {
7
- private _workbenchLayoutFactory;
8
- private _workbenchGridMerger;
9
- private _workbenchPerspectiveStorageService;
10
- private _workbenchLayoutService;
11
- private _workbenchRouter;
12
- private _environmentInjector;
13
- private _initialLayoutFn;
14
- private _activePerspectiveId$;
15
- private _perspectiveViewConflictResolver;
16
- private _destroyRef;
17
- private _initialPerspectiveLayout;
18
- private _perspectiveLayout;
19
- id: string;
20
- transient: boolean;
21
- data: {
7
+ private readonly _perspectiveEnvironmentInjector;
8
+ private readonly _workbenchLayoutFactory;
9
+ private readonly _workbenchGridMerger;
10
+ private readonly _workbenchPerspectiveStorageService;
11
+ private readonly _workbenchLayoutService;
12
+ private readonly _workbenchRouter;
13
+ private readonly _initialLayoutFn;
14
+ private readonly _perspectiveViewConflictResolver;
15
+ readonly id: string;
16
+ readonly transient: boolean;
17
+ readonly data: {
22
18
  [key: string]: any;
23
19
  };
24
- active$: Observable<boolean>;
20
+ readonly active: Signal<boolean>;
21
+ private _initialPerspectiveLayout;
22
+ private _perspectiveLayout;
25
23
  constructor(definition: WorkbenchPerspectiveDefinition);
26
24
  /**
27
25
  * Activates this perspective.
@@ -32,22 +30,29 @@ export declare class ɵWorkbenchPerspective implements WorkbenchPerspective {
32
30
  */
33
31
  reset(): Promise<void>;
34
32
  /**
35
- * Creates layout with the workbench grid of this perspective and the main area of the current layout.
33
+ * Reference to the handle's injector. The injector will be destroyed when unregistering the perspective.
34
+ */
35
+ get injector(): Injector;
36
+ /**
37
+ * Creates the perspective layout using the main area of the current layout.
36
38
  *
37
39
  * When switching perspective, id clashes between the views contained in the perspective and the
38
40
  * views contained in the main area are possible. The activation detects and resolves conflicts,
39
41
  * changing the layout of this perspective if necessary.
40
42
  */
41
43
  private createLayoutForActivation;
42
- get active(): boolean;
43
44
  /**
44
45
  * Creates the initial layout of this perspective as defined in the perspective definition.
45
46
  */
46
47
  private createInitialPerspectiveLayout;
47
48
  /**
48
- * Subscribes to workbench layout changes, invoking the given callback on layout change, but only if this perspective is active.
49
+ * Activates the first view of each part if not specified.
50
+ */
51
+ private ensureActiveView;
52
+ /**
53
+ * Sets up automatic persistence of the perspective layout on every layout change.
49
54
  */
50
- private onPerspectiveLayoutChange;
55
+ private installLayoutPersister;
51
56
  /**
52
57
  * Loads the layout of this perspective from storage, applying necessary migrations if the layout is outdated.
53
58
  * Returns `null` if not stored or could not be deserialized.
@@ -61,3 +66,7 @@ export declare class ɵWorkbenchPerspective implements WorkbenchPerspective {
61
66
  private storePerspectiveLayout;
62
67
  destroy(): void;
63
68
  }
69
+ /**
70
+ * Provides the currently active perspective in the workbench.
71
+ */
72
+ export declare const ACTIVE_PERSPECTIVE: InjectionToken<Signal<ɵWorkbenchPerspective | undefined>>;
@@ -111,14 +111,13 @@ export declare abstract class PopupConfig {
111
111
  */
112
112
  export interface CloseStrategy {
113
113
  /**
114
- * If `true`, which is by default, will close the popup on focus loss.
115
- * No return value will be passed to the popup opener.
114
+ * Controls if to close the popup on focus loss, returning the result set via {@link Popup#setResult} to the popup opener.
115
+ * Defaults to `true`.
116
116
  */
117
117
  onFocusLost?: boolean;
118
118
  /**
119
- * If `true`, which is by default, will close the popup when the user
120
- * hits the escape key. No return value will be passed to the popup
121
- * opener.
119
+ * Controls if to close the popup when pressing escape. Defaults to `true`.
120
+ * No return value will be passed to the popup opener.
122
121
  */
123
122
  onEscape?: boolean;
124
123
  }
@@ -155,7 +154,7 @@ export interface PopupSize {
155
154
  * Represents a handle that a popup component can inject to interact with the popup, for example,
156
155
  * to read input data or the configured size, or to close the popup.
157
156
  */
158
- export declare abstract class Popup<T = any> {
157
+ export declare abstract class Popup<T = unknown, R = unknown> {
159
158
  /**
160
159
  * Input data as passed by the popup opener when opened the popup, or `undefined` if not passed.
161
160
  */
@@ -166,6 +165,8 @@ export declare abstract class Popup<T = any> {
166
165
  abstract readonly size: PopupSize | undefined;
167
166
  /**
168
167
  * Provides information about the context in which this popup was opened.
168
+ *
169
+ * @deprecated since version 18.0.0-beta.4; Inject {@link WorkbenchView} instead.
169
170
  */
170
171
  abstract readonly referrer: PopupReferrer;
171
172
  /**
@@ -173,13 +174,13 @@ export declare abstract class Popup<T = any> {
173
174
  */
174
175
  abstract readonly cssClasses: string[];
175
176
  /**
176
- * Closes the popup. Optionally, pass a result to the popup opener.
177
+ * Sets a result that will be passed to the popup opener when the popup is closed on focus loss {@link CloseStrategy#onFocusLost}.
177
178
  */
178
- abstract close<R = any>(result?: R | undefined): void;
179
+ abstract setResult(result?: R): void;
179
180
  /**
180
- * Closes the popup returning the given error to the popup opener.
181
+ * Closes the popup. Optionally, pass a result or an error to the popup opener.
181
182
  */
182
- abstract closeWithError(error: Error | string): void;
183
+ abstract close(result?: R | Error): void;
183
184
  }
184
185
  /**
185
186
  * Information about the context in which a popup was opened.
@@ -1,9 +1,4 @@
1
- import { Injector, NgZone } from '@angular/core';
2
- import { Overlay } from '@angular/cdk/overlay';
3
1
  import { PopupConfig } from './popup.config';
4
- import { FocusMonitor } from '@angular/cdk/a11y';
5
- import { WorkbenchViewRegistry } from '../view/workbench-view.registry';
6
- import { ɵWorkbenchView } from '../view/ɵworkbench-view.model';
7
2
  import * as i0 from "@angular/core";
8
3
  /**
9
4
  * Allows displaying a component in a workbench popup.
@@ -14,14 +9,13 @@ import * as i0 from "@angular/core";
14
9
  * Unlike views, popups are not part of the persistent Workbench navigation, meaning that popups do not survive a page reload.
15
10
  */
16
11
  export declare class PopupService {
17
- private _injector;
18
- private _overlay;
19
- private _focusManager;
20
- private _viewRegistry;
21
- private _zone;
22
- private _document;
23
- private _view?;
24
- constructor(_injector: Injector, _overlay: Overlay, _focusManager: FocusMonitor, _viewRegistry: WorkbenchViewRegistry, _zone: NgZone, _document: Document, _view?: ɵWorkbenchView | undefined);
12
+ private readonly _environmentInjector;
13
+ private readonly _overlay;
14
+ private readonly _focusManager;
15
+ private readonly _viewRegistry;
16
+ private readonly _zone;
17
+ private readonly _document;
18
+ private readonly _view;
25
19
  /**
26
20
  * Displays the specified component in a popup.
27
21
  *
@@ -47,8 +41,11 @@ export declare class PopupService {
47
41
  * - resolves to the result if closed with a result
48
42
  * - resolves to `undefined` if closed without a result
49
43
  */
50
- open<R>(config: PopupConfig): Promise<R>;
51
- private setPopupAlignCssClass;
44
+ open<R>(config: PopupConfig): Promise<R | undefined>;
45
+ /**
46
+ * Creates the popup handle.
47
+ */
48
+ private createPopup;
52
49
  /**
53
50
  * Closes the popup depending on the configured popup closing strategy.
54
51
  */
@@ -59,23 +56,13 @@ export declare class PopupService {
59
56
  */
60
57
  private hidePopupOnViewDetach;
61
58
  /**
62
- * Observes the position of the popup anchor.
63
- *
64
- * The Observable emits the anchor's initial position, and each time when its position changes.
59
+ * Creates a signal that tracks the position of the popup anchor.
65
60
  */
66
- private observePopupOrigin$;
67
- /**
68
- * Observes the bounds of the viewport (view or page) in which the popup has been opened.
69
- */
70
- private viewportBounds$;
61
+ private trackPopupOrigin;
71
62
  /**
72
63
  * Resolves the contextual view to which the popup is bound.
73
64
  */
74
65
  private resolveContextualView;
75
- /**
76
- * Maps the passed popup origin, which is relative to the given viewport, to a page coordinate.
77
- */
78
- private mapPopupOriginToPageCoordinate;
79
- static ɵfac: i0.ɵɵFactoryDeclaration<PopupService, [null, null, null, null, null, null, { optional: true; }]>;
66
+ static ɵfac: i0.ɵɵFactoryDeclaration<PopupService, never>;
80
67
  static ɵprov: i0.ɵɵInjectableDeclaration<PopupService>;
81
68
  }
@@ -1,6 +1,5 @@
1
1
  import { ComponentType } from '@angular/cdk/portal';
2
- import { ComponentRef, Injector, Provider, ViewContainerRef } from '@angular/core';
3
- import { Observable } from 'rxjs';
2
+ import { ComponentRef, Injector, Provider, Signal, ViewContainerRef } from '@angular/core';
4
3
  /**
5
4
  * Like the Angular CDK 'ComponentPortal' but does not destroy the component on detach.
6
5
  *
@@ -17,7 +16,7 @@ export declare class WbComponentPortal<T = any> {
17
16
  private _viewContainerRef;
18
17
  private _componentRef;
19
18
  private _logger;
20
- private _attached$;
19
+ private _attached;
21
20
  constructor(_componentType: ComponentType<T>, _options?: PortalOptions | undefined);
22
21
  /**
23
22
  * Constructs the portal's component using given injection context.
@@ -43,11 +42,10 @@ export declare class WbComponentPortal<T = any> {
43
42
  */
44
43
  detach(): void;
45
44
  get isConstructed(): boolean;
46
- private get isAttached();
47
45
  isAttachedTo(viewContainerRef: ViewContainerRef): boolean;
48
46
  get isDestroyed(): boolean;
49
47
  get componentRef(): ComponentRef<T>;
50
- get attached$(): Observable<boolean>;
48
+ get attached(): Signal<boolean>;
51
49
  private onDestroy;
52
50
  /**
53
51
  * Destroys the component instance and all the data structures associated with it.
@@ -63,3 +61,21 @@ export interface PortalOptions {
63
61
  */
64
62
  providers?: Provider[];
65
63
  }
64
+ /**
65
+ * Lifecycle hook for component rendered by {@link WbComponentPortal} when attaching to the DOM.
66
+ */
67
+ export interface OnAttach {
68
+ /**
69
+ * Method invoked after attached this component to the DOM.
70
+ */
71
+ onAttach(): void;
72
+ }
73
+ /**
74
+ * Lifecycle hook for component rendered by {@link WbComponentPortal} when detaching from the DOM.
75
+ */
76
+ export interface OnDetach {
77
+ /**
78
+ * Method invoked before detaching this component from the DOM.
79
+ */
80
+ onDetach(): void;
81
+ }
@@ -3,7 +3,7 @@ export { WorkbenchModule, WorkbenchModuleConfig } from './workbench.module';
3
3
  export { provideWorkbench } from './workbench.provider';
4
4
  export { WorkbenchService } from './workbench.service';
5
5
  export { WORKBENCH_ID } from './workbench-id';
6
- export { WorkbenchPartAction, WorkbenchTheme, CanMatchPartFn, WorkbenchMenuItem, WorkbenchMenuItemFactoryFn, CanClose } from './workbench.model';
6
+ export { WorkbenchPartAction, WorkbenchTheme, CanMatchPartFn, WorkbenchMenuItem, WorkbenchMenuItemFactoryFn, CanClose, CanCloseFn, CanCloseRef } from './workbench.model';
7
7
  export { WorkbenchComponent } from './workbench.component';
8
8
  export { VIEW_TAB_RENDERING_CONTEXT, ViewTabRenderingContext } from './workbench.constants';
9
9
  export * from './layout/public_api';
@@ -1,4 +1,3 @@
1
- import { Observable } from 'rxjs';
2
1
  /**
3
2
  * Provides a registry for workbench model objects.
4
3
  */
@@ -7,18 +6,23 @@ export declare class WorkbenchObjectRegistry<KEY, T> {
7
6
  private readonly _objectsById;
8
7
  private readonly _keyFn;
9
8
  private readonly _nullObjectErrorFn;
10
- private readonly _change$;
11
- readonly objects$: Observable<readonly T[]>;
9
+ private readonly _onUnregister;
10
+ readonly objects: import("@angular/core").Signal<T[]>;
12
11
  /**
13
12
  * Creates an instance of the registry.
14
13
  *
14
+ * This registry must be constructed within an injection context. Destroying the injection context will also destroy the registry,
15
+ * invoking the specified `onUnregister` function for each object in the registry.
16
+ *
15
17
  * @param config - Controls the creation of the registry.
16
18
  * @param config.keyFn - Function to extract the key of an object.
17
19
  * @param config.nullObjectErrorFn - Function to provide an error when looking up an object not contained in the registry.
20
+ * @param config.onUnregister - Function invoked when an object is unregistered.
18
21
  */
19
22
  constructor(config: {
20
23
  keyFn: (object: T) => KEY;
21
- nullObjectErrorFn: (key: KEY) => Error;
24
+ nullObjectErrorFn?: (key: KEY) => Error;
25
+ onUnregister?: (object: T) => void;
22
26
  });
23
27
  /**
24
28
  * Registers given object, replacing any previously registered object with the same key.
@@ -40,9 +44,9 @@ export declare class WorkbenchObjectRegistry<KEY, T> {
40
44
  */
41
45
  has(key: KEY): boolean;
42
46
  /**
43
- * Readonly reference to registered objects.
47
+ * Indicates whether this registry is empty.
44
48
  */
45
- get objects(): readonly T[];
49
+ isEmpty(): boolean;
46
50
  /**
47
51
  * Clears this registry.
48
52
  */
@@ -1,5 +1,5 @@
1
1
  export { WorkbenchRouter } from './workbench-router.service';
2
2
  export { WorkbenchRouterLinkDirective } from './workbench-router-link.directive';
3
- export { WorkbenchAuxiliaryRoutesRegistrator } from './workbench-auxiliary-routes-registrator.service';
4
3
  export { WorkbenchRouteData } from './workbench-route-data';
5
- export { Commands, ViewState, WorkbenchNavigationExtras, NavigateFn } from './routing.model';
4
+ export { Commands, NavigationData, NavigationState, WorkbenchNavigationExtras, NavigateFn } from './routing.model';
5
+ export { canMatchWorkbenchView, canMatchWorkbenchPerspective } from './workbench-route-guards';
@@ -43,14 +43,20 @@ export interface WorkbenchNavigationExtras extends NavigationExtras {
43
43
  */
44
44
  position?: number | 'start' | 'end' | 'before-active-view' | 'after-active-view';
45
45
  /**
46
- * Associates arbitrary state with a view navigation.
46
+ * Associates data with a view navigation.
47
47
  *
48
- * Navigational state is stored in the browser's session history, supporting back/forward navigation, but is lost on page reload.
49
- * Therefore, a view must be able to restore its state without relying on navigational state.
48
+ * Unlike matrix parameters, navigation data is stored in the layout and not added to the path, allowing data to be passed to empty path navigations.
50
49
  *
51
- * Navigational state can be read from {@link WorkbenchView.state} or the browser's session history via `history.state`.
50
+ * Data must be JSON serializable. Data can be read from {@link WorkbenchView.navigationData}.
52
51
  */
53
- state?: ViewState;
52
+ data?: NavigationData;
53
+ /**
54
+ * Passes state to a view navigation.
55
+ *
56
+ * State is not persistent, unlike {@link data}, it is only added to the browser's session history to support back/forward browser navigation.
57
+ * State can be read from {@link WorkbenchView.navigationState} or from the browser's session history via `history.state`.
58
+ */
59
+ state?: NavigationState;
54
60
  /**
55
61
  * Closes views that match the specified path and navigation hint. Matrix parameters do not affect view resolution.
56
62
  * The path supports the asterisk wildcard segment (`*`) to match views with any value in a segment.
@@ -84,20 +90,26 @@ export type ViewOutlets = {
84
90
  [viewId: ViewId]: UrlSegment[];
85
91
  };
86
92
  /**
87
- * Navigational view states associated with a workbench navigation.
93
+ * States associated with view navigations.
88
94
  */
89
- export type ViewStates = {
90
- [viewId: ViewId]: ViewState;
95
+ export type NavigationStates = {
96
+ [viewId: ViewId]: NavigationState;
91
97
  };
92
98
  /**
93
- * State associated with a view navigation.
99
+ * State passed to a view navigation.
94
100
  *
95
- * Navigational state is stored in the browser's session history, supporting back/forward navigation, but is lost on page reload.
96
- * Therefore, a view must be able to restore its state without relying on navigational state.
101
+ * State is not persistent, unlike {@link data}, it is only added to the browser's session history to support back/forward browser navigation.
102
+ * State can be read from {@link WorkbenchView.navigationState} or from the browser's session history via `history.state`.
103
+ */
104
+ export type NavigationState = {
105
+ [key: string]: unknown;
106
+ };
107
+ /**
108
+ * Data associated with a view navigation.
97
109
  *
98
- * Navigational state can be read from {@link WorkbenchView.state} or the browser's session history via `history.state`.
110
+ * Data can be read from {@link WorkbenchView.navigationData}. Data must be JSON serializable.
99
111
  */
100
- export type ViewState = {
112
+ export type NavigationData = {
101
113
  [key: string]: unknown;
102
114
  };
103
115
  /**
@@ -1,10 +1,11 @@
1
1
  import { ActivatedRoute, ActivatedRouteSnapshot, OutletContext, UrlSegment, UrlTree } from '@angular/router';
2
2
  import { Commands } from '../routing/routing.model';
3
3
  import { ViewId } from '../view/workbench-view.model';
4
+ import { Observable } from 'rxjs';
4
5
  /**
5
6
  * Provides utility functions for router operations.
6
7
  */
7
- export declare const RouterUtils: {
8
+ export declare const Routing: {
8
9
  /**
9
10
  * Converts given URL segments into an array of commands that can be passed to the Angular router for navigation.
10
11
  */
@@ -39,6 +40,10 @@ export declare const RouterUtils: {
39
40
  * Looks for requested data on given route, or its parent route(s) if not found.
40
41
  */
41
42
  readonly lookupRouteData: <T>(activatedRoute: ActivatedRouteSnapshot, dataKey: string) => T | undefined;
43
+ /**
44
+ * Tests if the given outlet matches the format of the view outlet.
45
+ */
46
+ readonly isViewOutlet: (outlet: string | undefined | null) => outlet is `view.${number}`;
42
47
  /**
43
48
  * Tests if the given outlet matches the format of a popup outlet.
44
49
  */
@@ -61,4 +66,26 @@ export declare const RouterUtils: {
61
66
  * Tests if given route has an empty path from root.
62
67
  */
63
68
  readonly hasEmptyPathFromRoot: (route: ActivatedRoute) => boolean;
69
+ /**
70
+ * Observes the route activation for the specified outlet.
71
+ *
72
+ * The observable emits after the previous component has been destroyed (if any) but before constructing the new component.
73
+ *
74
+ * Options to control when to emit:
75
+ * - `routeChange`: Emit only when navigating the outlet to a different route.
76
+ * - `routeOrParamChange`: Emit when navigating the outlet to a different route or changing params (named path params or matrix params).
77
+ * - `always`: Emit at every navigation, even if the outlet is not the target of the navigation.
78
+ *
79
+ * This method must be called within an injection context.
80
+ *
81
+ * Note: Listening for route activations/deactivations on the router outlet alone is insufficient for nested routes, as the outlet does not report
82
+ * activations/deactivations of child routes.
83
+ *
84
+ * @param outlet - Specifies the outlet to observe.
85
+ * @param options - Controls when to emit the observable.
86
+ * @return An observable emitting a tuple of the previous and current route snapshots.
87
+ */
88
+ readonly activatedRoute$: (outlet: string, options: {
89
+ emitOn: 'routeChange' | 'routeOrParamChange' | 'always';
90
+ }) => Observable<[ActivatedRouteSnapshot | null, ActivatedRouteSnapshot]>;
64
91
  };
@@ -5,7 +5,7 @@ import * as i0 from "@angular/core";
5
5
  /**
6
6
  * Facilitates the registration of auxiliary routes of top-level routes.
7
7
  */
8
- export declare class WorkbenchAuxiliaryRoutesRegistrator {
8
+ export declare class WorkbenchAuxiliaryRouteInstaller {
9
9
  private _workbenchConfig;
10
10
  private _router;
11
11
  constructor(_workbenchConfig: WorkbenchConfig, _router: Router);
@@ -24,8 +24,8 @@ export declare class WorkbenchAuxiliaryRoutesRegistrator {
24
24
  * Replaces the router configuration to install or uninstall auxiliary routes.
25
25
  */
26
26
  private replaceRouterConfig;
27
- static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchAuxiliaryRoutesRegistrator, never>;
28
- static ɵprov: i0.ɵɵInjectableDeclaration<WorkbenchAuxiliaryRoutesRegistrator>;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchAuxiliaryRouteInstaller, never>;
28
+ static ɵprov: i0.ɵɵInjectableDeclaration<WorkbenchAuxiliaryRouteInstaller>;
29
29
  }
30
30
  /**
31
31
  * Configures auxiliary routes.
@@ -43,3 +43,10 @@ export interface AuxiliaryRouteConfig {
43
43
  * Can be injected in a `CanMatch` guard to obtain a reference to the workbench element.
44
44
  */
45
45
  export declare const WORKBENCH_AUXILIARY_ROUTE_OUTLET: InjectionToken<string>;
46
+ /**
47
+ * Component to display if the outlet has not yet been navigated or no navigation information is available.
48
+ */
49
+ export declare class BlankComponent {
50
+ static ɵfac: i0.ɵɵFactoryDeclaration<BlankComponent, never>;
51
+ static ɵcmp: i0.ɵɵComponentDeclaration<BlankComponent, "wb-blank", never, {}, {}, never, never, true, never>;
52
+ }
@@ -1,6 +1,5 @@
1
1
  import { IterableChanges, IterableDiffers } from '@angular/core';
2
2
  import { ɵWorkbenchLayout } from '../layout/ɵworkbench-layout';
3
- import { UrlTree } from '@angular/router';
4
3
  import { ViewId } from '../view/workbench-view.model';
5
4
  import * as i0 from "@angular/core";
6
5
  /**
@@ -13,7 +12,7 @@ export declare class WorkbenchLayoutDiffer {
13
12
  /**
14
13
  * Computes differences in the layout since last time {@link WorkbenchLayoutDiffer#diff} was invoked.
15
14
  */
16
- diff(workbenchLayout: ɵWorkbenchLayout | null, urlTree: UrlTree): WorkbenchLayoutDiff;
15
+ diff(workbenchLayout: ɵWorkbenchLayout | null): WorkbenchLayoutDiff;
17
16
  static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchLayoutDiffer, never>;
18
17
  static ɵprov: i0.ɵɵInjectableDeclaration<WorkbenchLayoutDiffer>;
19
18
  }
@@ -1,11 +1,11 @@
1
1
  import { Navigation } from '@angular/router';
2
- import { ViewStates } from './routing.model';
2
+ import { NavigationStates } from './routing.model';
3
3
  /**
4
4
  * Provides methods to associate {@link WorkbenchNavigationalState} with a navigation.
5
5
  */
6
6
  export declare const WorkbenchNavigationalStates: {
7
7
  /**
8
- * Returns workbench-specific state associated with given navigation, or `null` if not a workbench navigation.
8
+ * Returns workbench-specific state associated with given navigation, or `null` if the navigation was not performed through the workbench router.
9
9
  */
10
10
  readonly fromNavigation: (navigation: Navigation) => WorkbenchNavigationalState | null;
11
11
  /**
@@ -25,12 +25,16 @@ export interface WorkbenchNavigationalState {
25
25
  * Note: The main area grid is not passed as navigational state, but as query parameter {@link MAIN_AREA_LAYOUT_QUERY_PARAM}.
26
26
  */
27
27
  workbenchGrid: string;
28
+ /**
29
+ * Identifies the perspective that is navigated.
30
+ */
31
+ perspectiveId?: string | undefined;
28
32
  /**
29
33
  * Indicates whether to maximize the main area.
30
34
  */
31
35
  maximized: boolean;
32
36
  /**
33
- * View states to be associated with the navigation.
37
+ * Provides navigation state of views contained in the workbench layout.
34
38
  */
35
- viewStates: ViewStates;
39
+ navigationStates: NavigationStates;
36
40
  }
@@ -29,8 +29,14 @@ export declare function canMatchWorkbenchView(navigationHint: string): CanMatchF
29
29
  */
30
30
  export declare function canMatchWorkbenchView(canMatch: boolean): CanMatchFn;
31
31
  /**
32
- * Matches if the view has been navigated (or cannot be found).
32
+ * Matches the route based on the active perspective.
33
33
  *
34
- * The view cannot be found during initial navigation as the workbench layout is loaded asynchronously.
34
+ * Can be used to have a different start page per perspective.
35
+ */
36
+ export declare function canMatchWorkbenchPerspective(id: string): CanMatchFn;
37
+ /**
38
+ * Matches if the view has been navigated.
39
+ *
40
+ * Does not match if no navigation information is available, e.g., during initial navigation because the layout is loaded asynchronously, or when closing the view.
35
41
  */
36
42
  export declare const canMatchNotFoundPage: CanMatchFn;