@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,109 +1,101 @@
1
- import { BehaviorSubject, Observable } from 'rxjs';
1
+ import { Observable } from 'rxjs';
2
2
  import { UrlSegment } from '@angular/router';
3
3
  import { Disposable } from '../common/disposable';
4
- import { WorkbenchMenuItem } from '../workbench.model';
4
+ import { CanCloseFn, CanCloseRef, WorkbenchMenuItem } from '../workbench.model';
5
5
  import { ViewId, WorkbenchView } from './workbench-view.model';
6
- import { WorkbenchPart } from '../part/workbench-part.model';
7
6
  import { ComponentType } from '@angular/cdk/portal';
8
7
  import { WbComponentPortal } from '../portal/wb-component-portal';
9
- import { AbstractType, Injector, Type } from '@angular/core';
10
- import { ɵWorkbenchLayout } from '../layout/ɵworkbench-layout';
8
+ import { AbstractType, Injector, Signal, Type } from '@angular/core';
9
+ import { ɵWorkbenchPart } from '../part/ɵworkbench-part.model';
11
10
  import { ɵWorkbenchDialog } from '../dialog/ɵworkbench-dialog';
12
11
  import { Blockable } from '../glass-pane/blockable';
13
12
  import { ClassList } from '../common/class-list';
14
- import { ViewState } from '../routing/routing.model';
15
- import { UUID } from '../common/uuid.util';
13
+ import { NavigationData, NavigationState } from '../routing/routing.model';
16
14
  export declare class ɵWorkbenchView implements WorkbenchView, Blockable {
17
15
  readonly id: ViewId;
16
+ private readonly _viewEnvironmentInjector;
18
17
  private readonly _workbenchId;
19
18
  private readonly _workbenchService;
20
19
  private readonly _workbenchLayoutService;
21
- private readonly _router;
22
20
  private readonly _workbenchRouter;
23
21
  private readonly _childrenOutletContexts;
24
22
  private readonly _partRegistry;
25
23
  private readonly _viewDragService;
26
24
  private readonly _activationInstantProvider;
27
25
  private readonly _workbenchDialogRegistry;
28
- private readonly _part$;
26
+ private readonly _logger;
29
27
  private readonly _menuItemProviders$;
30
- private readonly _scrolledIntoView$;
31
28
  private readonly _adapters;
32
- private readonly _destroyRef;
29
+ private readonly _title;
30
+ private readonly _heading;
31
+ private readonly _dirty;
32
+ private readonly _closable;
33
+ private readonly _closableComputed;
34
+ private readonly _blockedBy;
35
+ private readonly _scrolledIntoView;
36
+ private readonly _classBasedCanCloseGuard;
33
37
  private _activationInstant;
34
- private _closable;
35
- uid: UUID;
38
+ private _canCloseFn;
36
39
  alternativeId: string | undefined;
37
- navigationHint: string | undefined;
38
- urlSegments: UrlSegment[];
39
- state: ViewState;
40
- title: string | null;
41
- heading: string | null;
42
- dirty: boolean;
43
- scrollTop: number;
44
- scrollLeft: number;
45
- readonly active$: BehaviorSubject<boolean>;
40
+ navigationId: import("@angular/core").WritableSignal<string | undefined>;
41
+ navigationHint: import("@angular/core").WritableSignal<string | undefined>;
42
+ navigationData: import("@angular/core").WritableSignal<NavigationData>;
43
+ navigationState: import("@angular/core").WritableSignal<NavigationState>;
44
+ urlSegments: import("@angular/core").WritableSignal<UrlSegment[]>;
45
+ position: Signal<number>;
46
+ first: Signal<boolean>;
47
+ last: Signal<boolean>;
48
+ readonly part: import("@angular/core").WritableSignal<ɵWorkbenchPart>;
49
+ readonly active: import("@angular/core").WritableSignal<boolean>;
46
50
  readonly menuItems$: Observable<WorkbenchMenuItem[]>;
47
- readonly blockedBy$: BehaviorSubject<ɵWorkbenchDialog<unknown> | null>;
51
+ readonly blockedBy$: Observable<ɵWorkbenchDialog<unknown> | null>;
48
52
  readonly portal: WbComponentPortal;
49
53
  readonly classList: ClassList;
50
54
  constructor(id: ViewId, options: {
51
55
  component: ComponentType<ViewComponent>;
52
56
  });
53
57
  private createPortal;
54
- /**
55
- * Method invoked when a route is about to be activated for this view.
56
- */
57
- private onRouteActivate;
58
58
  /**
59
59
  * Method invoked when the workbench layout has changed.
60
60
  *
61
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}.
62
+ * - is called on every layout change, enabling the update of view properties defined in the layout (navigation hint, navigation data, part, ...).
63
+ * - is called on route activation (after destroyed the previous component (if any), but before constructing the new component).
64
64
  */
65
- onLayoutChange(layout: ɵWorkbenchLayout): void;
65
+ private onLayoutChange;
66
66
  /**
67
67
  * Returns the component of this view. Returns `null` if not navigated the view, or before it was activated for the first time.
68
68
  */
69
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
70
  /** @inheritDoc */
75
- get first(): boolean;
71
+ get title(): Signal<string | null>;
76
72
  /** @inheritDoc */
77
- get last(): boolean;
73
+ set title(title: string | null);
78
74
  /** @inheritDoc */
79
- get position(): number;
75
+ get heading(): Signal<string | null>;
80
76
  /** @inheritDoc */
81
- set cssClass(cssClass: string | string[]);
77
+ set heading(heading: string | null);
78
+ /** @inheritDoc */
79
+ get dirty(): Signal<boolean>;
80
+ /** @inheritDoc */
81
+ set dirty(dirty: boolean);
82
82
  /** @inheritDoc */
83
- get cssClass(): string[];
83
+ get scrolledIntoView(): Signal<boolean>;
84
+ set scrolledIntoView(scrolledIntoView: boolean);
85
+ /** @inheritDoc */
86
+ set cssClass(cssClass: string | string[]);
84
87
  /** @inheritDoc */
85
- get active(): boolean;
88
+ get cssClass(): Signal<string[]>;
86
89
  /** @inheritDoc */
87
90
  set closable(closable: boolean);
88
91
  /** @inheritDoc */
89
- get closable(): boolean;
92
+ get closable(): Signal<boolean>;
90
93
  /** @inheritDoc */
91
94
  activate(options?: {
92
95
  skipLocationChange?: boolean;
93
96
  }): Promise<boolean>;
94
- /** @inheritDoc */
95
- set scrolledIntoView(scrolledIntoView: boolean);
96
- /** @inheritDoc */
97
- get scrolledIntoView(): boolean;
98
- /**
99
- * Informs whether the tab of this view is scrolled into view in the tabbar.
100
- * Emits the current state upon subscription, and then continuously when the state changes.
101
- */
102
- get scrolledIntoView$(): Observable<boolean>;
103
97
  get activationInstant(): number | undefined;
104
98
  /** @inheritDoc */
105
- get part(): WorkbenchPart;
106
- /** @inheritDoc */
107
99
  close(target?: 'self' | 'all-views' | 'other-views' | 'views-to-the-right' | 'views-to-the-left'): Promise<boolean>;
108
100
  /** @inheritDoc */
109
101
  move(target: 'new-window'): void;
@@ -112,7 +104,17 @@ export declare class ɵWorkbenchView implements WorkbenchView, Blockable {
112
104
  workbenchId?: string;
113
105
  }): void;
114
106
  /** @inheritDoc */
107
+ canClose(canClose: CanCloseFn): CanCloseRef;
108
+ /**
109
+ * Reference to the `CanClose` guard registered on this view, if any.
110
+ */
111
+ get canCloseGuard(): (() => Promise<boolean>) | undefined;
112
+ /** @inheritDoc */
115
113
  registerMenuItem(menuItem: WorkbenchMenuItem): Disposable;
114
+ /**
115
+ * Reference to the handle's injector. The injector will be destroyed when closing the view.
116
+ */
117
+ get injector(): Injector;
116
118
  /**
117
119
  * Registers an adapter for this view, replacing any previously registered adapter of the same type.
118
120
  *
@@ -127,35 +129,24 @@ export declare class ɵWorkbenchView implements WorkbenchView, Blockable {
127
129
  * Adapts this object to the specified type. Returns `null` if no such object can be found.
128
130
  */
129
131
  adapt<T>(adapterType: AbstractType<T> | Type<T>): T | null;
132
+ /** @inheritDoc */
130
133
  get destroyed(): boolean;
131
- /**
132
- * Monitors the associated part to check if this view is currently active, updating the active state of this view accordingly.
133
- */
134
- private trackViewActivation;
135
134
  /**
136
135
  * Updates the activation instant when this view is activated.
137
136
  */
138
137
  private touchOnActivate;
139
138
  /**
140
- * Blocks this view when a dialog overlays it.
139
+ * Provides legacy support for deprecated class-based {@link CanClose} guard.
140
+ *
141
+ * @deprecated since version 18.0.0-beta.9. No longer needed with the removal of class-based {@link CanClose} guard.
141
142
  */
142
- private blockWhenDialogOpened;
143
+ private constructClassBasedCanCloseGuard;
143
144
  /**
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
- * ```
145
+ * Sets up automatic synchronization of {@link WorkbenchView} on every layout change.
155
146
  *
156
- * Instead, we subscribe to Angular's `ActivationStart` router events and update the view properties accordingly.
147
+ * If the operation is cancelled (e.g., due to a navigation failure), it reverts the changes.
157
148
  */
158
- private detectRouteActivation;
149
+ private installModelUpdater;
159
150
  destroy(): void;
160
151
  }
161
152
  /**
@@ -1,66 +1,63 @@
1
- import { NgZone, OnDestroy } from '@angular/core';
1
+ import { Injector, OnDestroy } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
3
  import { UrlSegment } from '@angular/router';
4
4
  import { ViewId } from '../view/workbench-view.model';
5
5
  import { ClassListMap } from '../common/class-list';
6
+ import { NavigationData } from '../routing/routing.model';
6
7
  import * as i0 from "@angular/core";
7
8
  /**
8
- * Events fired during view drag and drop operation.
9
- */
10
- export type ViewDragEventType = 'dragstart' | 'dragend' | 'dragenter' | 'dragover' | 'dragleave' | 'drop';
11
- /**
12
- * Transfer type for dragging a view.
13
- */
14
- export declare const VIEW_DRAG_TRANSFER_TYPE = "workbench/view";
15
- /**
16
- * Manages the drag & drop behavior when the user drags a view.
9
+ * Coordinates cross application drag and drop of views.
10
+ *
11
+ * Views can only be moved across applications of the same origin.
17
12
  */
18
13
  export declare class ViewDragService implements OnDestroy {
19
- private _zone;
14
+ private readonly _injector;
15
+ private readonly _zone;
16
+ private readonly _viewDragStartBroadcastChannel;
17
+ private readonly _viewDragEndBroadcastChannel;
18
+ private readonly _viewMoveBroadcastChannel;
19
+ private readonly _tabbarDragOver$;
20
+ private readonly _viewMoved$;
21
+ /**
22
+ * Notifies when to move a view. The event is broadcasted to all application instances of the same origin.
23
+ */
24
+ readonly viewMove$: Observable<ViewMoveEvent>;
20
25
  /**
21
- * Reference to the view drag data of the ongoing view drag operation, if any, or `null` otherwise.
26
+ * Notifies when the layout of this application has been updated after a view move event.
22
27
  */
23
- private _viewDragData;
24
- private _viewDragStartBroadcastChannel;
25
- private _viewDragEndBroadcastChannel;
26
- private _viewMoveBroadcastChannel;
27
- private _tabbarDragOver$;
28
+ readonly viewMoved$: Observable<ViewMoveEvent>;
28
29
  /**
29
- * Emits when the user starts dragging a viewtab. The event is received across app instances of the same origin.
30
+ * Notifies when dragging a tab over a tabbar. The event is the id of the part being dragged over, or `false` if not dragging over a tabbar.
31
+ *
32
+ * Upon subscription, emits the current dragover state, and then each time the state changes. The observable never completes.
30
33
  */
31
- readonly viewDragStart$: Observable<ViewDragData>;
34
+ readonly tabbarDragOver$: Observable<string | false>;
32
35
  /**
33
- * Emits when the user ends dragging a viewtab. The event is received across app instances of the same origin.
36
+ * Provides the drag data of the current drag operation. Is `null` if no drag operation is in progress.
34
37
  */
35
- readonly viewDragEnd$: Observable<void>;
38
+ readonly viewDragData: import("@angular/core").Signal<ViewDragData | null>;
36
39
  /**
37
- * Emits when the user moves a view. The event is received across app instances of the same origin.
40
+ * Indicates if a drag operation is active across application instances of the same origin.
38
41
  */
39
- readonly viewMove$: Observable<ViewMoveEvent>;
42
+ readonly dragging: import("@angular/core").Signal<boolean>;
40
43
  /**
41
- * Emits the identity of the part when the user is dragging a view over its tabbar, or `null` if not dragging over a tabbar.
42
- * The event is NOT received across app instances.
43
- *
44
- * Upon subscription, emits the current state, and then each time the state changes. The observable never completes.
44
+ * Signals start dragging a tab over specified tabbar (dragenter).
45
45
  */
46
- readonly tabbarDragOver$: Observable<string | null>;
47
- constructor(_zone: NgZone);
46
+ signalTabbarDragEnter(partId: string): void;
48
47
  /**
49
- * Set when dragging a view over specified tabbar.
48
+ * Signals end dragging a tab over specified tabbar (dragleave).
50
49
  */
51
- setTabbarDragover(partId: string): void;
50
+ signalTabbarDragLeave(partId: string): void;
52
51
  /**
53
- * Unset when not dragging a view over specified tabbar anymore.
52
+ * Signals successful move of a view in the layout of this app instance.
54
53
  */
55
- unsetTabbarDragover(partId: string): void;
54
+ signalViewMoved(event: ViewMoveEvent): void;
56
55
  /**
57
- * Indicates if dragging a view tab over a tabbar.
58
- *
59
- * Returns the identity of the part if the user is dragging a view over its tabbar, or `null` if not dragging over a tabbar.
56
+ * Indicates if dragging a tab over a tabbar, returning the id of the part being dragged over, or `false` if not dragging over a tabbar.
60
57
  */
61
- get isDragOverTabbar(): string | null;
58
+ get isDragOverTabbar(): string | false;
62
59
  /**
63
- * Checks if the given event is a view drag event with the same origin.
60
+ * Tests given event to be a view drag event of an app of this origin.
64
61
  */
65
62
  isViewDragEvent(event: DragEvent): boolean;
66
63
  /**
@@ -87,25 +84,31 @@ export declare class ViewDragService implements OnDestroy {
87
84
  */
88
85
  viewDrag$(target: Element | Window, options?: ViewDragEventListenerOptions): Observable<DragEvent>;
89
86
  /**
90
- * Dispatches the given view move event to app instances of the same origin.
87
+ * Dispatches the given view move event, broadcasting it to all application instances of the same origin.
91
88
  */
92
89
  dispatchViewMoveEvent(event: ViewMoveEvent): void;
93
90
  /**
94
- * Makes the given view drag data available to app instances of the same origin.
91
+ * Sets given drag data, broadcasting it to all application instances of the same origin.
95
92
  *
96
93
  * Invoke this method inside 'dragstart' event handler of the element where the drag operation started.
97
94
  */
98
95
  setViewDragData(viewDragData: ViewDragData): void;
99
96
  /**
100
- * Removes the view drag data.
97
+ * Unsets the current drag data.
101
98
  *
102
99
  * Invoke this method inside 'dragend' event handler of the element where the drag operation started.
103
100
  */
104
101
  unsetViewDragData(): void;
105
102
  /**
106
- * Returns the view drag data of the ongoing view drag operation or `null` if no drag operation is in progress.
103
+ * Registers a callback to be executed when a drag operation ends, executing it immediately if no drag operation is in progress at the time of registration.
104
+ *
105
+ * Automatically unregisters the function when the current injection context or the provided injector is destroyed.
106
+ * Setting `once` unregisters the function after the first execution.
107
107
  */
108
- get viewDragData(): ViewDragData | null;
108
+ onDragEnd(onDragEnd: () => void, options?: {
109
+ injector?: Injector;
110
+ once?: true;
111
+ }): void;
109
112
  ngOnDestroy(): void;
110
113
  static ɵfac: i0.ɵɵFactoryDeclaration<ViewDragService, never>;
111
114
  static ɵprov: i0.ɵɵInjectableDeclaration<ViewDragService>;
@@ -114,6 +117,10 @@ export declare class ViewDragService implements OnDestroy {
114
117
  * Represents data of a view drag operation.
115
118
  */
116
119
  export interface ViewDragData {
120
+ /**
121
+ * Unique id of the drag operation.
122
+ */
123
+ uid: string;
117
124
  /**
118
125
  * X-coordinate of the mouse pointer, relative to the view tab drag image.
119
126
  */
@@ -124,10 +131,11 @@ export interface ViewDragData {
124
131
  viewTabPointerOffsetY: number;
125
132
  viewId: ViewId;
126
133
  alternativeViewId?: string;
127
- viewTitle: string;
134
+ viewTitle: string | null;
135
+ viewHeading: string | null;
128
136
  viewUrlSegments: UrlSegment[];
129
137
  navigationHint?: string;
130
- viewHeading: string;
138
+ navigationData?: NavigationData;
131
139
  viewClosable: boolean;
132
140
  viewDirty: boolean;
133
141
  partId: string;
@@ -137,26 +145,37 @@ export interface ViewDragData {
137
145
  classList?: ClassListMap;
138
146
  }
139
147
  /**
140
- * Event emitted when moving a view.
148
+ * Event for moving a view in the workbench layout.
141
149
  */
142
150
  export interface ViewMoveEvent {
151
+ /**
152
+ * Describes which view to move.
153
+ */
143
154
  source: ViewMoveEventSource;
155
+ /**
156
+ * Describes where to move the view.
157
+ */
144
158
  target: ViewMoveEventTarget;
159
+ /**
160
+ * Drag data associated with this operation. Is only set if moving a view via drag and drop.
161
+ */
162
+ dragData?: ViewDragData;
145
163
  }
146
164
  /**
147
- * Describes a view to be moved to another location.
165
+ * Describes which view to move.
148
166
  */
149
167
  export interface ViewMoveEventSource {
150
168
  viewId: ViewId;
151
169
  partId: string;
152
170
  navigationHint?: string;
171
+ navigationData?: NavigationData;
153
172
  alternativeViewId?: string;
154
173
  viewUrlSegments: UrlSegment[];
155
174
  workbenchId: string;
156
175
  classList?: ClassListMap;
157
176
  }
158
177
  /**
159
- * Describes the target location for moving a view.
178
+ * Describes where to move a view.
160
179
  */
161
180
  export interface ViewMoveEventTarget {
162
181
  /**
@@ -204,9 +223,20 @@ export interface ViewMoveEventTarget {
204
223
  ratio?: number;
205
224
  };
206
225
  }
226
+ /**
227
+ * Controls how to subscribe to drag events.
228
+ */
207
229
  export interface ViewDragEventListenerOptions extends EventListenerOptions {
208
230
  /**
209
- * Allows filtering for given drag event types.
231
+ * Controls which event(s) to subscribe.
210
232
  */
211
233
  eventType?: ViewDragEventType | ViewDragEventType[];
212
234
  }
235
+ /**
236
+ * Represents the type of drag event.
237
+ */
238
+ export type ViewDragEventType = 'dragstart' | 'dragend' | 'dragenter' | 'dragover' | 'dragleave' | 'drop';
239
+ /**
240
+ * Transfer type for dragging a view.
241
+ */
242
+ export declare const VIEW_DRAG_TRANSFER_TYPE = "workbench/view";
@@ -10,7 +10,7 @@ import * as i0 from "@angular/core";
10
10
  export declare class ViewDropPlaceholderRenderer {
11
11
  private _viewDragService;
12
12
  private _zone;
13
- private _dropPlaceholderHost;
13
+ private _dropPlaceholderOverlayHost;
14
14
  private _dropPlaceholder;
15
15
  constructor(_viewDragService: ViewDragService, _zone: NgZone);
16
16
  /**
@@ -1,7 +1,6 @@
1
- import { ApplicationRef, ComponentFactoryResolver, Injector, NgZone } from '@angular/core';
2
- import { ViewDragData, ViewDragService } from './view-drag.service';
1
+ import { ViewDragData } from './view-drag.service';
3
2
  import * as i0 from "@angular/core";
4
- export type ConstrainFn = (rect: ViewDragImageRect) => ViewDragImageRect;
3
+ export type ConstrainFn = (rect: DOMRect) => DOMRect;
5
4
  /**
6
5
  * Renders a drag image during a view drag operation.
7
6
  *
@@ -9,23 +8,24 @@ export type ConstrainFn = (rect: ViewDragImageRect) => ViewDragImageRect;
9
8
  * For instance, allows snapping the view tab into the view tab bar (drop zone) when being dragged over.
10
9
  */
11
10
  export declare class ViewTabDragImageRenderer {
12
- private _viewDragService;
13
- private _componentFactoryResolver;
14
- private _applicationRef;
15
- private _injector;
16
- private _zone;
11
+ private readonly _viewDragService;
12
+ private readonly _componentFactoryResolver;
13
+ private readonly _applicationRef;
14
+ private readonly _injector;
15
+ private readonly _zone;
17
16
  private _viewDragImagePortalOutlet;
18
17
  private _constrainDragImageRectFn;
19
- constructor(_viewDragService: ViewDragService, _componentFactoryResolver: ComponentFactoryResolver, _applicationRef: ApplicationRef, _injector: Injector, _zone: NgZone);
18
+ constructor();
20
19
  /**
21
20
  * Allows to constrain the position and dimension of the drag image during a view drag operation.
22
21
  */
23
- setConstrainDragImageRectFn(fn: (rect: ViewDragImageRect) => ViewDragImageRect): void;
22
+ setConstrainDragImageRectFn(fn: ConstrainFn): void;
24
23
  /**
25
24
  * Unsets the drag image constrain function, if registered.
26
25
  */
27
- unsetConstrainDragImageRectFn(fn: (rect: ViewDragImageRect) => ViewDragImageRect): void;
26
+ unsetConstrainDragImageRectFn(fn: ConstrainFn): void;
28
27
  private onWindowDragStart;
28
+ private onWindowDragEnd;
29
29
  /**
30
30
  * Method invoked when dragging a view into the current window. It is invoked outside the Angular zone.
31
31
  *
@@ -51,32 +51,8 @@ export declare class ViewTabDragImageRenderer {
51
51
  /**
52
52
  * Calculates client position and dimension for the drag image, accounting for any constraints.
53
53
  */
54
- calculateDragImageRect(dragData: ViewDragData, event: DragEvent): ViewDragImageRect;
54
+ calculateDragImageRect(dragData: ViewDragData, event: DragEvent): DOMRect;
55
55
  private installWindowViewDragListener;
56
56
  static ɵfac: i0.ɵɵFactoryDeclaration<ViewTabDragImageRenderer, never>;
57
57
  static ɵprov: i0.ɵɵInjectableDeclaration<ViewTabDragImageRenderer>;
58
58
  }
59
- /**
60
- * Represents the position and dimension of the drag image.
61
- */
62
- export declare class ViewDragImageRect {
63
- /**
64
- * Coordinate of the top left corner of the drag image in the "client" coordinate system.
65
- */
66
- readonly x: number;
67
- /**
68
- * Coordinate of the top left corner of the drag image in the "client" coordinate system.
69
- */
70
- readonly y: number;
71
- /**
72
- * Height of the drag image.
73
- */
74
- readonly height: number;
75
- /**
76
- * Width of the drag image.
77
- */
78
- readonly width: number;
79
- constructor(rect: Omit<ViewDragImageRect, 'left' | 'right'>);
80
- get left(): number;
81
- get right(): number;
82
- }
@@ -1,5 +1,5 @@
1
1
  import { ComponentType } from '@angular/cdk/portal';
2
- import { Type } from '@angular/core';
2
+ import { Signal, Type } from '@angular/core';
3
3
  import { LogAppender, LogLevel } from './logging';
4
4
  import { MicrofrontendPlatformConfig } from '@scion/microfrontend-platform';
5
5
  import { MicrofrontendPlatformConfigLoader } from './microfrontend-platform/microfrontend-platform-config-loader';
@@ -16,9 +16,9 @@ export declare abstract class WorkbenchConfig {
16
16
  */
17
17
  abstract viewTabComponent?: ComponentType<unknown>;
18
18
  /**
19
- * Specifies the component to display if no route matches the requested URL.
19
+ * Defines the component to display when no route matches the requested path.
20
20
  *
21
- * This happens when navigating to a route that does not exist or when loading the application, and the routes have changed since the last use.
21
+ * This can happen when navigating to a non-existent route or after loading the application, if the routes have changed since the user's last session.
22
22
  *
23
23
  * The component can inject {@link WorkbenchView} to get a reference to the view, e.g., to obtain the requested URL.
24
24
  */
@@ -37,12 +37,12 @@ export declare abstract class WorkbenchConfig {
37
37
  */
38
38
  abstract startup?: {
39
39
  /**
40
- * Configures the workbench launching strategy.
40
+ * Configures the workbench launching strategy. Defaults to `LAZY` if not specified.
41
41
  *
42
42
  * - **APP_INITIALIZER**
43
43
  * Launches the workbench in an Angular `APP_INITIALIZER`, which is before bootstrapping the app component.
44
44
  *
45
- * - **LAZY** (which is the default)
45
+ * - **LAZY**
46
46
  * Launches the workbench at the latest when bootstrapping the workbench root component `<wb-workbench>`.
47
47
  *
48
48
  * With this strategy, you are flexible when to start the workbench. You can start the workbench explicitly by
@@ -126,7 +126,9 @@ export declare abstract class WorkbenchConfig {
126
126
  };
127
127
  }
128
128
  /**
129
- * Controls which built-in menu items to display in the view context menu.
129
+ * Configuration of built-in menu items in the view's context menu.
130
+ *
131
+ * Each property represents a menu item, allowing customization of visibility, text, accelerators, and more.
130
132
  */
131
133
  export interface ViewMenuItemsConfig {
132
134
  close?: MenuItemConfig;
@@ -140,9 +142,19 @@ export interface ViewMenuItemsConfig {
140
142
  moveLeft?: MenuItemConfig;
141
143
  moveToNewWindow?: MenuItemConfig;
142
144
  }
145
+ /**
146
+ * Configures a built-in menu item.
147
+ */
143
148
  export interface MenuItemConfig {
144
149
  visible?: boolean;
145
- text?: string;
150
+ /**
151
+ * Specifies the text of this menu item.
152
+ *
153
+ * Can be a string or a function that returns a string or a {@link Signal}.
154
+ *
155
+ * The function can call `inject` to get any required dependencies, or use `toSignal` to convert an observable to a signal.
156
+ */
157
+ text?: string | (() => string | Signal<string>);
146
158
  accelerator?: string[];
147
159
  group?: string;
148
160
  cssClass?: string | string[];
@@ -1,48 +1,34 @@
1
- import { OnDestroy, ViewContainerRef } from '@angular/core';
2
- import { WorkbenchLauncher, WorkbenchStartup } from './startup/workbench-launcher.service';
3
- import { WorkbenchConfig } from './workbench-config';
4
- import { ComponentType } from '@angular/cdk/portal';
5
- import { Logger } from './logging';
1
+ import { WorkbenchStartup } from './startup/workbench-launcher.service';
6
2
  import * as i0 from "@angular/core";
7
3
  /**
8
4
  * Main entry point component of the SCION Workbench.
9
5
  */
10
- export declare class WorkbenchComponent implements OnDestroy {
6
+ export declare class WorkbenchComponent {
11
7
  private _workbenchLauncher;
12
8
  private _logger;
9
+ private _iframeOverlayHost;
10
+ private _viewDropZoneOverlayHost;
11
+ /** Splash to display during workbench startup. */
12
+ protected splash: import("@angular/cdk/portal").ComponentType<unknown>;
13
13
  protected workbenchStartup: WorkbenchStartup;
14
- /**
15
- * View containers required for the workbench to attach elements.
16
- */
17
- private viewContainerReferences;
18
- /**
19
- * Splash to display during workbench startup.
20
- */
21
- protected splash: ComponentType<unknown>;
22
- /**
23
- * Promise that resolves once all the required view containers for the workbench to attach elements have been injected from the template.
24
- *
25
- * To avoid an `ExpressionChangedAfterItHasBeenCheckedError`, make sure not to add the {@link WorkbenchLayoutComponent} before the relevant
26
- * view containers have been injected. Otherwise, when loading an existing workbench layout (e.g., from URL) into the workbench, Angular
27
- * will throw this error because views are rendered before view containers are available.
28
- */
29
- protected whenViewContainersInjected: Promise<true>;
30
- protected set injectIframeHost(vcr: ViewContainerRef);
31
- protected set injectViewDropPlaceholderHost(vcr: ViewContainerRef);
32
- constructor(workbenchConfig: WorkbenchConfig, _workbenchLauncher: WorkbenchLauncher, _logger: Logger, workbenchStartup: WorkbenchStartup);
14
+ constructor();
33
15
  /**
34
16
  * Starts the SCION Workbench. Has no effect if already started, e.g., in an app initializer or route guard.
35
17
  */
36
18
  private startWorkbench;
37
19
  /**
38
- * Creates a Promise that resolves once all the required view containers for the workbench to attach elements have been injected from the template.
20
+ * Disables change detection during navigation to avoid partial DOM updates of the workbench layout
21
+ * if the navigation is asynchronous (e.g., because of lazy loading, async guards, or resolvers).
22
+ */
23
+ private disableChangeDetectionDuringNavigation;
24
+ /**
25
+ * Initializes tokens to inject references to workbench elements.
39
26
  */
40
- private createHostViewContainersInjectedPromise;
27
+ private provideWorkbenchElementReferences;
41
28
  /**
42
- * Unsets view container references when this component is destroyed.
29
+ * Throws if loading the workbench recursively.
43
30
  */
44
- private unsetViewContainerReferences;
45
- ngOnDestroy(): void;
31
+ private throwOnCircularLoad;
46
32
  static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchComponent, never>;
47
33
  static ɵcmp: i0.ɵɵComponentDeclaration<WorkbenchComponent, "wb-workbench", never, {}, {}, never, never, true, never>;
48
34
  }