@scion/workbench 18.0.0-beta.9 → 19.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/README.md +1 -1
  2. package/design/_workbench-dark-theme-design-tokens.scss +8 -2
  3. package/design/_workbench-light-theme-design-tokens.scss +8 -2
  4. package/design/_workbench-view-global-styles.scss +0 -1
  5. package/fesm2022/scion-workbench.mjs +12009 -11413
  6. package/fesm2022/scion-workbench.mjs.map +1 -1
  7. package/lib/common/css-class.util.d.ts +5 -0
  8. package/lib/common/instanceof.pipe.d.ts +1 -1
  9. package/lib/common/math.util.d.ts +7 -0
  10. package/lib/common/objects.util.d.ts +1 -1
  11. package/lib/desktop/desktop.directive.d.ts +37 -0
  12. package/lib/desktop/public_api.d.ts +1 -0
  13. package/lib/dialog/workbench-dialog.component.d.ts +1 -2
  14. package/lib/dialog/workbench-dialog.options.d.ts +1 -2
  15. package/lib/layout/grid-element/grid-element.component.d.ts +3 -5
  16. package/lib/layout/migration/model/workbench-layout-migration-v6.model.d.ts +35 -0
  17. package/lib/layout/migration/model/workbench-layout-migration-v7.model.d.ts +37 -0
  18. package/lib/layout/migration/workbench-layout-migration-v6.service.d.ts +12 -0
  19. package/lib/layout/migration/workbench-layout-migration-v7.service.d.ts +10 -0
  20. package/lib/layout/public_api.d.ts +1 -0
  21. package/lib/layout/stringifier.d.ts +12 -5
  22. package/lib/layout/workbench-layout.component.d.ts +8 -10
  23. package/lib/layout/workbench-layout.d.ts +104 -16
  24. package/lib/layout/workbench-layout.model.d.ts +11 -4
  25. package/lib/layout/workbench-layout.service.d.ts +10 -12
  26. package/lib/layout/workbench-layouts.util.d.ts +5 -0
  27. package/lib/layout/workench-layout-serializer.service.d.ts +31 -7
  28. package/lib/layout//311/265workbench-layout.d.ts +73 -42
  29. package/lib/layout//311/265workbench-layout.factory.d.ts +2 -2
  30. package/lib/logging//311/265logger.d.ts +11 -6
  31. package/lib/message-box/workbench-message-box.options.d.ts +1 -2
  32. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +5 -7
  33. package/lib/page-not-found/page-not-found.component.d.ts +5 -3
  34. package/lib/{layout/main-area-layout/main-area-layout.component.d.ts → part/main-area-part/main-area-part.component.d.ts} +12 -12
  35. package/lib/part/part-action/part-action.component.d.ts +39 -0
  36. package/lib/part/part-action-bar/part-action.directive.d.ts +41 -34
  37. package/lib/part/part-bar/part-bar.component.d.ts +16 -140
  38. package/lib/part/part-portal.pipe.d.ts +3 -2
  39. package/lib/part/part.component.d.ts +13 -10
  40. package/lib/part/public_api.d.ts +2 -2
  41. package/lib/part/view-context-menu/accelerator-format.pipe.d.ts +1 -1
  42. package/lib/part/view-context-menu/menu-item/menu-item.component.d.ts +39 -0
  43. package/lib/part/view-context-menu/text/text.component.d.ts +6 -0
  44. package/lib/part/view-context-menu/view-menu-item.directive.d.ts +75 -0
  45. package/lib/part/view-context-menu/view-menu.component.d.ts +13 -16
  46. package/lib/part/view-context-menu/view-menu.service.d.ts +10 -6
  47. package/lib/part/view-list/view-list.component.d.ts +2 -1
  48. package/lib/part/view-tab/view-tab.component.d.ts +4 -4
  49. package/lib/part/view-tab-bar/view-tab-bar.component.d.ts +163 -0
  50. package/lib/part/view-tab-drag-image/view-tab-drag-image.component.d.ts +5 -1
  51. package/lib/part/workbench-part-action.registry.d.ts +3 -3
  52. package/lib/part/workbench-part.model.d.ts +57 -2
  53. package/lib/part/workbench-part.registry.d.ts +1 -1
  54. package/lib/part//311/265workbench-part.model.d.ts +26 -11
  55. package/lib/perspective/migration/model/workbench-perspective-migration-v3.model.d.ts +10 -0
  56. package/lib/perspective/migration/workbench-perspective-migration-v3.service.d.ts +12 -0
  57. package/lib/perspective/workbench-perspective.model.d.ts +8 -8
  58. package/lib/perspective/workench-perspective-serializer.service.d.ts +1 -1
  59. package/lib/perspective//311/265workbench-perspective.model.d.ts +2 -3
  60. package/lib/public_api.d.ts +2 -3
  61. package/lib/registry/workbench-object-registry.d.ts +4 -7
  62. package/lib/routing/public_api.d.ts +1 -1
  63. package/lib/routing/router-outlet-root-context.directive.d.ts +10 -0
  64. package/lib/routing/routing.model.d.ts +44 -30
  65. package/lib/routing/routing.util.d.ts +35 -10
  66. package/lib/routing/workbench-auxiliary-route-installer.service.d.ts +3 -2
  67. package/lib/routing/workbench-layout-differ.d.ts +4 -3
  68. package/lib/routing/workbench-outlet-differ.d.ts +48 -0
  69. package/lib/routing/workbench-route-data.d.ts +2 -2
  70. package/lib/routing/workbench-route-guards.d.ts +39 -19
  71. package/lib/routing/workbench-router.service.d.ts +2 -2
  72. package/lib/routing/workbench-url-observer.service.d.ts +1 -4
  73. package/lib/view/public_api.d.ts +1 -1
  74. package/lib/view/view-move-handler.service.d.ts +16 -14
  75. package/lib/view/view.component.d.ts +10 -15
  76. package/lib/view/workbench-view-menu-item.registry.d.ts +7 -0
  77. package/lib/view/workbench-view.model.d.ts +40 -27
  78. package/lib/view/workbench-view.registry.d.ts +1 -1
  79. package/lib/view//311/265workbench-view.model.d.ts +18 -28
  80. package/lib/view-dnd/grid-drop-targets.util.d.ts +3 -3
  81. package/lib/view-dnd/view-drag.service.d.ts +81 -63
  82. package/lib/view-dnd/view-drop-placeholder-renderer.service.d.ts +9 -21
  83. package/lib/view-dnd/view-drop-zone.directive.d.ts +69 -30
  84. package/lib/view-dnd/view-tab-drag-image-renderer.service.d.ts +11 -36
  85. package/lib/workbench-config.d.ts +18 -11
  86. package/lib/{content-projection/workbench-element-references.d.ts → workbench-element-references.d.ts} +5 -1
  87. package/lib/workbench.constants.d.ts +30 -0
  88. package/lib/workbench.model.d.ts +113 -37
  89. package/lib/workbench.provider.d.ts +1 -1
  90. package/lib/workbench.service.d.ts +32 -27
  91. package/lib//311/265workbench.service.d.ts +6 -6
  92. package/package.json +8 -10
  93. package/esm2022/lib/activation-instant.provider.mjs +0 -29
  94. package/esm2022/lib/common/animation-frame.observable.mjs +0 -37
  95. package/esm2022/lib/common/asserts.util.mjs +0 -31
  96. package/esm2022/lib/common/class-list.mjs +0 -99
  97. package/esm2022/lib/common/coerce-observable.pipe.mjs +0 -28
  98. package/esm2022/lib/common/disposable.mjs +0 -11
  99. package/esm2022/lib/common/dom.util.mjs +0 -100
  100. package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +0 -32
  101. package/esm2022/lib/common/instanceof.pipe.mjs +0 -26
  102. package/esm2022/lib/common/map-coerce.pipe.mjs +0 -28
  103. package/esm2022/lib/common/null-if-empty.pipe.mjs +0 -38
  104. package/esm2022/lib/common/objects.util.mjs +0 -40
  105. package/esm2022/lib/common/observables.mjs +0 -72
  106. package/esm2022/lib/common/operators.mjs +0 -27
  107. package/esm2022/lib/common/public_api.mjs +0 -11
  108. package/esm2022/lib/common/stringify-error.util.mjs +0 -19
  109. package/esm2022/lib/common/throw-error.util.mjs +0 -16
  110. package/esm2022/lib/common/typeof.pipe.mjs +0 -26
  111. package/esm2022/lib/common/uid.util.mjs +0 -22
  112. package/esm2022/lib/common//311/265destroy-ref.mjs +0 -36
  113. package/esm2022/lib/communication/workbench-broadcast-channel.mjs +0 -38
  114. package/esm2022/lib/content-projection/content-as-overlay.component.mjs +0 -114
  115. package/esm2022/lib/content-projection/workbench-element-references.mjs +0 -32
  116. package/esm2022/lib/dialog/dialog-footer/dialog-action-filter.pipe.mjs +0 -26
  117. package/esm2022/lib/dialog/dialog-footer/dialog-footer.component.mjs +0 -34
  118. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-action.directive.mjs +0 -51
  119. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-footer.directive.mjs +0 -46
  120. package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +0 -33
  121. package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +0 -46
  122. package/esm2022/lib/dialog/movable.directive.mjs +0 -126
  123. package/esm2022/lib/dialog/public_api.mjs +0 -15
  124. package/esm2022/lib/dialog/resizable.directive.mjs +0 -392
  125. package/esm2022/lib/dialog/workbench-dialog.component.mjs +0 -250
  126. package/esm2022/lib/dialog/workbench-dialog.mjs +0 -79
  127. package/esm2022/lib/dialog/workbench-dialog.options.mjs +0 -11
  128. package/esm2022/lib/dialog/workbench-dialog.registry.mjs +0 -73
  129. package/esm2022/lib/dialog/workbench-dialog.service.mjs +0 -96
  130. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +0 -310
  131. package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +0 -98
  132. package/esm2022/lib/executor/latest-task-executor.mjs +0 -55
  133. package/esm2022/lib/executor/single-task-executor.mjs +0 -72
  134. package/esm2022/lib/filter-field/filter-field.component.mjs +0 -130
  135. package/esm2022/lib/glass-pane/blockable.mjs +0 -11
  136. package/esm2022/lib/glass-pane/blocking.mjs +0 -11
  137. package/esm2022/lib/glass-pane/glass-pane.directive.mjs +0 -120
  138. package/esm2022/lib/layout/grid-element/grid-element.component.mjs +0 -111
  139. package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +0 -97
  140. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v2.model.mjs +0 -11
  141. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v3.model.mjs +0 -11
  142. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v4.model.mjs +0 -11
  143. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +0 -11
  144. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +0 -117
  145. package/esm2022/lib/layout/migration/workbench-layout-migration-v4.service.mjs +0 -57
  146. package/esm2022/lib/layout/migration/workbench-layout-migration-v5.service.mjs +0 -67
  147. package/esm2022/lib/layout/public_api.mjs +0 -12
  148. package/esm2022/lib/layout/stringifier.mjs +0 -70
  149. package/esm2022/lib/layout/workbench-layout.component.mjs +0 -90
  150. package/esm2022/lib/layout/workbench-layout.factory.mjs +0 -24
  151. package/esm2022/lib/layout/workbench-layout.mjs +0 -16
  152. package/esm2022/lib/layout/workbench-layout.model.mjs +0 -62
  153. package/esm2022/lib/layout/workbench-layout.service.mjs +0 -68
  154. package/esm2022/lib/layout/workbench-layouts.util.mjs +0 -58
  155. package/esm2022/lib/layout/workench-layout-serializer.service.mjs +0 -109
  156. package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +0 -54
  157. package/esm2022/lib/layout//311/265workbench-layout.mjs +0 -876
  158. package/esm2022/lib/logging/console-appender.service.mjs +0 -46
  159. package/esm2022/lib/logging/index.mjs +0 -15
  160. package/esm2022/lib/logging/logger-names.mjs +0 -32
  161. package/esm2022/lib/logging/logger.mjs +0 -36
  162. package/esm2022/lib/logging/logging-support.mjs +0 -26
  163. package/esm2022/lib/logging/logging.model.mjs +0 -45
  164. package/esm2022/lib/logging/public_api.mjs +0 -12
  165. package/esm2022/lib/logging//311/265logger.mjs +0 -73
  166. package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +0 -69
  167. package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +0 -28
  168. package/esm2022/lib/message-box/public_api.mjs +0 -11
  169. package/esm2022/lib/message-box/workbench-message-box.component.mjs +0 -102
  170. package/esm2022/lib/message-box/workbench-message-box.options.mjs +0 -2
  171. package/esm2022/lib/message-box/workbench-message-box.service.mjs +0 -39
  172. package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +0 -45
  173. package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +0 -71
  174. package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +0 -126
  175. package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +0 -36
  176. package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +0 -84
  177. package/esm2022/lib/microfrontend-platform/manifest-object-cache.service.mjs +0 -63
  178. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +0 -54
  179. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +0 -85
  180. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +0 -140
  181. package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +0 -133
  182. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +0 -113
  183. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +0 -43
  184. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +0 -101
  185. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +0 -35
  186. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.mjs +0 -88
  187. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.mjs +0 -32
  188. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +0 -121
  189. package/esm2022/lib/microfrontend-platform/microfrontend-notification/microfrontend-notification-intent-handler.service.mjs +0 -45
  190. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.mjs +0 -39
  191. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.mjs +0 -120
  192. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.mjs +0 -55
  193. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.mjs +0 -19
  194. package/esm2022/lib/microfrontend-platform/microfrontend-platform-config-loader.mjs +0 -13
  195. package/esm2022/lib/microfrontend-platform/microfrontend-platform.config.mjs +0 -11
  196. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +0 -31
  197. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +0 -132
  198. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +0 -115
  199. package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +0 -21
  200. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +0 -112
  201. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +0 -313
  202. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-workbench-view.model.mjs +0 -23
  203. package/esm2022/lib/microfrontend-platform/public_api.mjs +0 -13
  204. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +0 -31
  205. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +0 -127
  206. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +0 -125
  207. package/esm2022/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.mjs +0 -32
  208. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +0 -191
  209. package/esm2022/lib/migration/workbench-migration.mjs +0 -11
  210. package/esm2022/lib/migration/workbench-migrator.mjs +0 -38
  211. package/esm2022/lib/notification/notification-css-classes.pipe.mjs +0 -24
  212. package/esm2022/lib/notification/notification-list.component.mjs +0 -51
  213. package/esm2022/lib/notification/notification.component.mjs +0 -109
  214. package/esm2022/lib/notification/notification.config.mjs +0 -11
  215. package/esm2022/lib/notification/notification.mjs +0 -19
  216. package/esm2022/lib/notification/notification.service.mjs +0 -134
  217. package/esm2022/lib/notification/public_api.mjs +0 -12
  218. package/esm2022/lib/notification/text-notification.component.mjs +0 -23
  219. package/esm2022/lib/notification//311/265notification.mjs +0 -42
  220. package/esm2022/lib/page-not-found/page-not-found.component.mjs +0 -26
  221. package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +0 -31
  222. package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +0 -77
  223. package/esm2022/lib/part/part-bar/part-bar.component.mjs +0 -444
  224. package/esm2022/lib/part/part-portal.pipe.mjs +0 -35
  225. package/esm2022/lib/part/part.component.mjs +0 -135
  226. package/esm2022/lib/part/public_api.mjs +0 -13
  227. package/esm2022/lib/part/view-context-menu/accelerator-format.pipe.mjs +0 -31
  228. package/esm2022/lib/part/view-context-menu/text.component.mjs +0 -38
  229. package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +0 -89
  230. package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +0 -76
  231. package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +0 -340
  232. package/esm2022/lib/part/view-list/view-list.component.mjs +0 -117
  233. package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +0 -82
  234. package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +0 -60
  235. package/esm2022/lib/part/view-tab/view-tab.component.mjs +0 -218
  236. package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +0 -29
  237. package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +0 -81
  238. package/esm2022/lib/part/workbench-part-action.registry.mjs +0 -23
  239. package/esm2022/lib/part/workbench-part.model.mjs +0 -19
  240. package/esm2022/lib/part/workbench-part.registry.mjs +0 -23
  241. package/esm2022/lib/part//311/265workbench-part.model.mjs +0 -146
  242. package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v1.model.mjs +0 -11
  243. package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v2.model.mjs +0 -11
  244. package/esm2022/lib/perspective/migration/workbench-perspective-migration-v2.service.mjs +0 -57
  245. package/esm2022/lib/perspective/public_api.mjs +0 -11
  246. package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +0 -39
  247. package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +0 -72
  248. package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +0 -50
  249. package/esm2022/lib/perspective/workbench-perspective.model.mjs +0 -2
  250. package/esm2022/lib/perspective/workbench-perspective.registry.mjs +0 -23
  251. package/esm2022/lib/perspective/workbench-perspective.service.mjs +0 -180
  252. package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +0 -62
  253. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +0 -210
  254. package/esm2022/lib/popup/popup.component.mjs +0 -124
  255. package/esm2022/lib/popup/popup.config.mjs +0 -100
  256. package/esm2022/lib/popup/popup.origin.mjs +0 -11
  257. package/esm2022/lib/popup/popup.service.mjs +0 -339
  258. package/esm2022/lib/popup/public_api.mjs +0 -12
  259. package/esm2022/lib/portal/wb-component-portal.mjs +0 -130
  260. package/esm2022/lib/portal/workbench-portal-outlet.directive.mjs +0 -68
  261. package/esm2022/lib/public_api.mjs +0 -32
  262. package/esm2022/lib/registry/workbench-object-registry.mjs +0 -104
  263. package/esm2022/lib/routing/empty-outlet/empty-outlet.component.mjs +0 -31
  264. package/esm2022/lib/routing/public_api.mjs +0 -14
  265. package/esm2022/lib/routing/routing.model.mjs +0 -11
  266. package/esm2022/lib/routing/routing.util.mjs +0 -215
  267. package/esm2022/lib/routing/url-segment-matcher.mjs +0 -46
  268. package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +0 -110
  269. package/esm2022/lib/routing/workbench-dialog-differ.mjs +0 -51
  270. package/esm2022/lib/routing/workbench-layout-differ.mjs +0 -61
  271. package/esm2022/lib/routing/workbench-message-box-differ.mjs +0 -51
  272. package/esm2022/lib/routing/workbench-navigational-states.mjs +0 -33
  273. package/esm2022/lib/routing/workbench-popup-differ.mjs +0 -51
  274. package/esm2022/lib/routing/workbench-route-data.mjs +0 -39
  275. package/esm2022/lib/routing/workbench-route-guards.mjs +0 -57
  276. package/esm2022/lib/routing/workbench-router-link.directive.mjs +0 -124
  277. package/esm2022/lib/routing/workbench-router.service.mjs +0 -19
  278. package/esm2022/lib/routing/workbench-url-observer.service.mjs +0 -305
  279. package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +0 -58
  280. package/esm2022/lib/routing//311/265location.mjs +0 -70
  281. package/esm2022/lib/routing//311/265workbench-router.service.mjs +0 -359
  282. package/esm2022/lib/startup/public_api.mjs +0 -12
  283. package/esm2022/lib/startup/splash/splash.component.mjs +0 -24
  284. package/esm2022/lib/startup/workbench-initializer.mjs +0 -96
  285. package/esm2022/lib/startup/workbench-launcher.service.mjs +0 -173
  286. package/esm2022/lib/storage/public_api.mjs +0 -11
  287. package/esm2022/lib/storage/workbench-storage.mjs +0 -37
  288. package/esm2022/lib/testing/public_api.mjs +0 -12
  289. package/esm2022/lib/testing/workbench-testing.module.mjs +0 -49
  290. package/esm2022/lib/testing/workbench.provider.mjs +0 -60
  291. package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +0 -72
  292. package/esm2022/lib/view/public_api.mjs +0 -11
  293. package/esm2022/lib/view/view-context-provider.mjs +0 -31
  294. package/esm2022/lib/view/view-move-handler.service.mjs +0 -145
  295. package/esm2022/lib/view/view-portal.pipe.mjs +0 -33
  296. package/esm2022/lib/view/view.component.mjs +0 -128
  297. package/esm2022/lib/view/workbench-view.model.mjs +0 -12
  298. package/esm2022/lib/view/workbench-view.registry.mjs +0 -23
  299. package/esm2022/lib/view//311/265workbench-view.model.mjs +0 -375
  300. package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +0 -49
  301. package/esm2022/lib/view-dnd/requires-drop-zone.pipe.mjs +0 -58
  302. package/esm2022/lib/view-dnd/view-drag.service.mjs +0 -213
  303. package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +0 -89
  304. package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +0 -183
  305. package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +0 -224
  306. package/esm2022/lib/workbench-config.mjs +0 -15
  307. package/esm2022/lib/workbench-id.mjs +0 -21
  308. package/esm2022/lib/workbench.component.mjs +0 -146
  309. package/esm2022/lib/workbench.constants.mjs +0 -41
  310. package/esm2022/lib/workbench.model.mjs +0 -11
  311. package/esm2022/lib/workbench.module.mjs +0 -101
  312. package/esm2022/lib/workbench.provider.mjs +0 -111
  313. package/esm2022/lib/workbench.service.mjs +0 -29
  314. package/esm2022/lib//311/265workbench.service.mjs +0 -102
  315. package/esm2022/public-api.mjs +0 -14
  316. package/esm2022/scion-workbench.mjs +0 -5
  317. package/lib/common/animation-frame.observable.d.ts +0 -10
  318. package/lib/common/map-coerce.pipe.d.ts +0 -12
  319. package/lib/part/part-action-bar/part-action-bar.component.d.ts +0 -11
  320. package/lib/part/view-context-menu/text.component.d.ts +0 -11
  321. package/lib/part/view-context-menu/view-menu.directive.d.ts +0 -55
  322. package/lib/routing/workbench-dialog-differ.d.ts +0 -25
  323. package/lib/routing/workbench-message-box-differ.d.ts +0 -25
  324. package/lib/routing/workbench-popup-differ.d.ts +0 -25
  325. package/lib/routing/workbench-view-outlet-differ.d.ts +0 -32
  326. package/lib/testing/public_api.d.ts +0 -2
  327. package/lib/testing/workbench-testing.module.d.ts +0 -40
  328. package/lib/testing/workbench.provider.d.ts +0 -31
  329. package/lib/workbench.module.d.ts +0 -65
@@ -0,0 +1,5 @@
1
+ import { Signal } from '@angular/core';
2
+ /**
3
+ * Tracks changes to the provided CSS classes and applies them to the given element.
4
+ */
5
+ export declare function synchronizeCssClasses(element: HTMLElement, classes: Signal<string[]>): void;
@@ -4,7 +4,7 @@ import * as i0 from "@angular/core";
4
4
  * Tests if the object is of the specified type. If so, returns the object, otherwise returns `null`.
5
5
  */
6
6
  export declare class InstanceofPipe implements PipeTransform {
7
- transform<T>(object: any | undefined, type: Type<T>): T | null;
7
+ transform<T>(object: unknown | undefined, type: Type<T>): T | null;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<InstanceofPipe, never>;
9
9
  static ɵpipe: i0.ɵɵPipeDeclaration<InstanceofPipe, "wbInstanceof", true>;
10
10
  }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Returns the value clamped to the inclusive range of min and max.
3
+ */
4
+ export declare function clamp(value: number, minmax: {
5
+ min: number;
6
+ max: number;
7
+ }): number;
@@ -13,7 +13,7 @@ export declare const Objects: {
13
13
  /**
14
14
  * Like {@link Dictionaries.withoutUndefinedEntries}, but preserving the object data type.
15
15
  */
16
- readonly withoutUndefinedEntries: <T_1>(object: T_1 & Record<string, unknown>) => T_1;
16
+ readonly withoutUndefinedEntries: <T>(object: T & Record<string, unknown>) => T;
17
17
  /**
18
18
  * Stringifies given object to matrix notation: a=b;c=d;e=f
19
19
  */
@@ -0,0 +1,37 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * Directive to add a desktop to the workbench.
4
+ *
5
+ * The desktop is displayed when no view is open and the layout does not contain a navigated part.
6
+ *
7
+ * A desktop can provide instructions for working with the application, display a welcome page, or provide links to open views.
8
+ *
9
+ * Usage:
10
+ * Add this directive to an `<ng-template>` child of the `<wb-workbench>` component. The template content will be used as desktop content.
11
+ *
12
+ * ```html
13
+ * <wb-workbench>
14
+ * <ng-template wbDesktop>
15
+ * Welcome
16
+ * </ng-template>
17
+ * </wb-workbench>
18
+ * ```
19
+ *
20
+ * > Using `@if` allows displaying the desktop based on a condition, e.g. the active perspective.
21
+ *
22
+ * For layouts with a main area, it is recommended to navigate the main area part instead:
23
+ * ```ts
24
+ * import {MAIN_AREA, provideWorkbench} from '@scion/workbench';
25
+ *
26
+ * provideWorkbench({
27
+ * layout: factory => factory
28
+ * .addPart(MAIN_AREA)
29
+ * .navigatePart(MAIN_AREA, ['path/to/desktop'])
30
+ * });
31
+ * ```
32
+ */
33
+ export declare class WorkbenchDesktopDirective {
34
+ constructor();
35
+ static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchDesktopDirective, never>;
36
+ static ɵdir: i0.ɵɵDirectiveDeclaration<WorkbenchDesktopDirective, "ng-template[wbDesktop]", never, {}, {}, never, never, true, never>;
37
+ }
@@ -0,0 +1 @@
1
+ export { WorkbenchDesktopDirective } from './desktop.directive';
@@ -4,7 +4,6 @@ import { WbMoveEvent } from './movable.directive';
4
4
  import { WbResizeEvent } from './resizable.directive';
5
5
  import { SciDimension } from '@scion/components/dimension';
6
6
  import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common";
8
7
  /**
9
8
  * Renders the workbench dialog.
10
9
  *
@@ -57,5 +56,5 @@ export declare class WorkbenchDialogComponent implements OnInit {
57
56
  onResize(event: WbResizeEvent): void;
58
57
  protected onHeaderDimensionChange(dimension: SciDimension): void;
59
58
  static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchDialogComponent, never>;
60
- static ɵcmp: i0.ɵɵComponentDeclaration<WorkbenchDialogComponent, "wb-dialog", never, {}, {}, never, never, true, [{ directive: typeof i1.NgClass; inputs: {}; outputs: {}; }]>;
59
+ static ɵcmp: i0.ɵɵComponentDeclaration<WorkbenchDialogComponent, "wb-dialog", never, {}, {}, never, never, true, never>;
61
60
  }
@@ -9,8 +9,7 @@ export interface WorkbenchDialogOptions {
9
9
  *
10
10
  * **Example:**
11
11
  * ```ts
12
- * @Input()
13
- * public someInput: string;
12
+ * public someInput = input.required<string>();
14
13
  * ```
15
14
  */
16
15
  inputs?: {
@@ -2,6 +2,7 @@ import { OnChanges, SimpleChanges } from '@angular/core';
2
2
  import { MPart, MTreeNode } from '../workbench-layout.model';
3
3
  import { ɵWorkbenchRouter } from '../../routing/ɵworkbench-router.service';
4
4
  import { WorkbenchLayoutService } from '../workbench-layout.service';
5
+ import { PartId } from '../../part/workbench-part.model';
5
6
  import * as i0 from "@angular/core";
6
7
  /**
7
8
  * Renders a {@link MTreeNode} or {@link MPart}.
@@ -10,10 +11,7 @@ import * as i0 from "@angular/core";
10
11
  * Each node has two children, which can be either another node or a part (leaf). A node defines
11
12
  * a split layout in which the two children are arranged vertically or horizontally.
12
13
  *
13
- * Nodes are rendered as {@link SciSashboxComponent} and parts as {@link PartComponent} or
14
- * {@link MainAreaLayoutComponent}.
15
- *
16
- * @see WorkbenchLayoutComponent
14
+ * Nodes are rendered as {@link SciSashboxComponent} and parts as {@link PartComponent} or {@link MainAreaPartComponent}.
17
15
  */
18
16
  export declare class GridElementComponent implements OnChanges {
19
17
  private _workbenchRouter;
@@ -23,7 +21,7 @@ export declare class GridElementComponent implements OnChanges {
23
21
  children: ChildElement[];
24
22
  parentNodeId: string | undefined;
25
23
  nodeId: string | undefined;
26
- partId: string | undefined;
24
+ partId: PartId | undefined;
27
25
  element: MTreeNode | MPart;
28
26
  constructor(_workbenchRouter: ɵWorkbenchRouter, _workbenchLayoutService: WorkbenchLayoutService);
29
27
  ngOnChanges(changes: SimpleChanges): void;
@@ -0,0 +1,35 @@
1
+ export interface MPartV6 {
2
+ type: 'MPart';
3
+ id: string;
4
+ views: MViewV6[];
5
+ activeViewId?: ViewIdV6;
6
+ structural: boolean;
7
+ }
8
+ export interface MTreeNodeV6 {
9
+ type: 'MTreeNode';
10
+ id: string;
11
+ child1: MTreeNodeV6 | MPartV6;
12
+ child2: MTreeNodeV6 | MPartV6;
13
+ ratio: number;
14
+ direction: 'column' | 'row';
15
+ }
16
+ export interface MPartGridV6 {
17
+ root: MTreeNodeV6 | MPartV6;
18
+ activePartId: string;
19
+ }
20
+ export interface MViewV6 {
21
+ id: ViewIdV6;
22
+ alternativeId?: string;
23
+ cssClass?: string[];
24
+ markedForRemoval?: true;
25
+ navigation?: {
26
+ id: string;
27
+ hint?: string;
28
+ data?: NavigationDataV6;
29
+ cssClass?: string[];
30
+ };
31
+ }
32
+ export type ViewIdV6 = `view.${number}`;
33
+ export type NavigationDataV6 = {
34
+ [key: string]: unknown;
35
+ };
@@ -0,0 +1,37 @@
1
+ export interface MPartV7 {
2
+ type: 'MPart';
3
+ id: PartIdV7;
4
+ alternativeId?: string;
5
+ views: MViewV7[];
6
+ activeViewId?: ViewIdV7;
7
+ structural: boolean;
8
+ }
9
+ export interface MTreeNodeV7 {
10
+ type: 'MTreeNode';
11
+ id: string;
12
+ child1: MTreeNodeV7 | MPartV7;
13
+ child2: MTreeNodeV7 | MPartV7;
14
+ ratio: number;
15
+ direction: 'column' | 'row';
16
+ }
17
+ export interface MPartGridV7 {
18
+ root: MTreeNodeV7 | MPartV7;
19
+ activePartId: PartIdV7;
20
+ }
21
+ export interface MViewV7 {
22
+ id: ViewIdV7;
23
+ alternativeId?: string;
24
+ cssClass?: string[];
25
+ markedForRemoval?: true;
26
+ navigation?: {
27
+ id: string;
28
+ hint?: string;
29
+ data?: NavigationDataV7;
30
+ cssClass?: string[];
31
+ };
32
+ }
33
+ export type PartIdV7 = `part.${string}`;
34
+ export type ViewIdV7 = `view.${number}`;
35
+ export type NavigationDataV7 = {
36
+ [key: string]: unknown;
37
+ };
@@ -0,0 +1,12 @@
1
+ import { WorkbenchMigration } from '../../migration/workbench-migration';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Migrates the workbench layout from version 5 to version 6.
5
+ *
6
+ * TODO [Angular 20] Remove migrator.
7
+ */
8
+ export declare class WorkbenchLayoutMigrationV6 implements WorkbenchMigration {
9
+ migrate(json: string): string;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchLayoutMigrationV6, never>;
11
+ static ɵprov: i0.ɵɵInjectableDeclaration<WorkbenchLayoutMigrationV6>;
12
+ }
@@ -0,0 +1,10 @@
1
+ import { WorkbenchMigration } from '../../migration/workbench-migration';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Migrates the workbench layout from version 6 to version 7.
5
+ */
6
+ export declare class WorkbenchLayoutMigrationV7 implements WorkbenchMigration {
7
+ migrate(json: string): string;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchLayoutMigrationV7, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<WorkbenchLayoutMigrationV7>;
10
+ }
@@ -1,2 +1,3 @@
1
1
  export { WorkbenchLayout, ReferencePart, MAIN_AREA } from './workbench-layout';
2
+ export { MAIN_AREA_INITIAL_PART_ID } from './ɵworkbench-layout';
2
3
  export { WorkbenchLayoutFactory } from './workbench-layout.factory';
@@ -1,11 +1,18 @@
1
1
  /**
2
2
  * Stringifies given data, exluding specified fields from serialization.
3
3
  *
4
- * To exclude a field, specify the path to the field in the object tree,
5
- * using the slash as delimiter. The path supports the asterisk (`*`) to match a
6
- * single segment or the globstar (`**`) to match multiple segments.
4
+ * @param data - Data to serialize to json.
5
+ * @param options - Controls how to serialize data.
6
+ * @param options.exclusions - Controls which fields to exclude from serialization.\
7
+ * To exclude a field, specify the path to the field in the object tree,
8
+ * using the slash as delimiter. The path supports the asterisk (`*`) to match a
9
+ * single segment or the globstar (`**`) to match multiple segments.
10
+ * @param options.sort - Controls if to sort the fields by name. Defaults to `false`.
7
11
  */
8
- export declare function stringify(data: unknown, exclusions?: Array<string | Exclusion>): string;
12
+ export declare function stringify(data: unknown, options?: {
13
+ exclusions?: Array<string | Exclusion>;
14
+ sort?: true;
15
+ }): string;
9
16
  /**
10
17
  * Describes a field to exclude from serialization.
11
18
  */
@@ -19,7 +26,7 @@ export interface Exclusion {
19
26
  * Tests if to exclude the resolved field, enabling extended checks if the field cannot be uniquely identified via the path.
20
27
  *
21
28
  * @param objectPath - path to the field in the object tree.
22
- * @param key - key under with the field is associated in the parent object.
29
+ * @param key - key under which the field is associated in the parent object.
23
30
  * @param value - value of the field.
24
31
  */
25
32
  predicate: (objectPath: unknown[], key: string, value: unknown) => boolean;
@@ -1,6 +1,5 @@
1
- import { ɵWorkbenchLayout } from './ɵworkbench-layout';
2
- import { MPartGrid } from './workbench-layout.model';
3
1
  import { WbViewDropEvent } from '../view-dnd/view-drop-zone.directive';
2
+ import { MPartGrid } from './workbench-layout.model';
4
3
  import * as i0 from "@angular/core";
5
4
  /**
6
5
  * Renders the layout of the workbench.
@@ -23,17 +22,16 @@ import * as i0 from "@angular/core";
23
22
  * | | +--------+-----------------------+
24
23
  * MPart MPart
25
24
  * (left) (right)
26
- *
27
- * @see MainAreaLayoutComponent
28
25
  */
29
26
  export declare class WorkbenchLayoutComponent {
30
- layout: ɵWorkbenchLayout | undefined;
31
- protected grid: MPartGrid | undefined;
32
- private _workbenchId;
33
- private _viewDragService;
34
- private _workbenchLayoutService;
35
- constructor();
27
+ private readonly _workbenchId;
28
+ private readonly _viewDragService;
29
+ private readonly _workbenchLayoutService;
30
+ private readonly _logger;
31
+ protected readonly desktop: import("@angular/core").WritableSignal<import("@angular/core").TemplateRef<void> | undefined>;
32
+ protected readonly grid: import("@angular/core").Signal<MPartGrid | undefined>;
36
33
  protected onViewDrop(event: WbViewDropEvent): void;
34
+ protected onLegacyStartPageActivate(): void;
37
35
  static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchLayoutComponent, never>;
38
36
  static ɵcmp: i0.ɵɵComponentDeclaration<WorkbenchLayoutComponent, "wb-workbench-layout", never, {}, {}, never, never, true, never>;
39
37
  }
@@ -1,8 +1,8 @@
1
1
  import { Commands, NavigationData, NavigationState } from '../routing/routing.model';
2
2
  import { ActivatedRoute } from '@angular/router';
3
3
  /**
4
- * The workbench layout is a grid of parts. Parts are aligned relative to each other. A part is a stack of views. Content is
5
- * displayed in views.
4
+ * The workbench layout is a grid of parts. Parts are aligned relative to each other. Each part is a stack of views. Content is
5
+ * displayed in views or parts.
6
6
  *
7
7
  * The layout can be divided into a main and a peripheral area, with the main area as the primary place for opening views.
8
8
  * The peripheral area arranges parts around the main area to provide navigation or context-sensitive assistance to support
@@ -19,7 +19,7 @@ export interface WorkbenchLayout {
19
19
  /**
20
20
  * Adds a part with the given id to this layout. Position and size are expressed relative to a reference part.
21
21
  *
22
- * @param id - Unique id of the part. Use {@link MAIN_AREA} to add the main area.
22
+ * @param id - The id of the part to add. Use {@link MAIN_AREA} to add the main area.
23
23
  * @param relativeTo - Specifies the reference part to lay out the part.
24
24
  * @param options - Controls how to add the part to the layout.
25
25
  * @param options.activate - Controls whether to activate the part. Default is `false`.
@@ -28,6 +28,64 @@ export interface WorkbenchLayout {
28
28
  addPart(id: string | MAIN_AREA, relativeTo: ReferencePart, options?: {
29
29
  activate?: boolean;
30
30
  }): WorkbenchLayout;
31
+ /**
32
+ * Navigates the specified part based on the provided array of commands and extras.
33
+ *
34
+ * Navigating a part displays content when its view stack is empty. A navigated part can still have views but won't display
35
+ * navigated content unless its view stack is empty. Views cannot be dragged into parts displaying navigated content, except
36
+ * for the main area part.
37
+ *
38
+ * A command can be a string or an object literal. A string represents a path segment, an object literal associates matrix parameters with the preceding segment.
39
+ * Multiple segments can be combined into a single command, separated by a forward slash.
40
+ *
41
+ * By default, navigation is absolute. Set `relativeTo` in extras for relative navigation.
42
+ *
43
+ * Usage:
44
+ * ```
45
+ * layout.navigatePart(partId, ['path', 'to', 'part', {param 'value'}]);
46
+ * layout.navigatePart(partId, ['path/to/part', {param: 'value'}]);
47
+ * ```
48
+ *
49
+ * @param id - Identifies the part for navigation.
50
+ * @param commands - Instructs the router which route to navigate to.
51
+ * @param extras - Controls navigation:
52
+ * @param extras.hint - Allows differentiation between routes with identical paths.
53
+ * Multiple parts can navigate to the same path but still resolve to different routes, e.g., the empty path route to maintain a clean URL.
54
+ *
55
+ * Example:
56
+ * ```ts
57
+ * import {canMatchWorkbenchPart} from '@scion/workbench';
58
+ *
59
+ * const routes = [
60
+ * {
61
+ * path: '',
62
+ * component: Part1Component,
63
+ * canMatch: [canMatchWorkbenchPart('hint-1')], // matches navigations with hint 'hint-1'
64
+ * },
65
+ * {
66
+ * path: '',
67
+ * component: Part2Component,
68
+ * canMatch: [canMatchWorkbenchPart('hint-2')], // matches navigations with hint 'hint-1'
69
+ * },
70
+ * ];
71
+ * ```
72
+ * @param extras.relativeTo - Specifies the route for relative navigation, supporting navigational symbols such as '/', './', or '../' in the commands.
73
+ * @param extras.data - Associates data with the navigation.
74
+ * Unlike matrix parameters, navigation data is stored in the layout and not added to the URL, allowing data to be passed to empty path navigations.
75
+ * Data must be JSON serializable. Data can be read from {@link WorkbenchPart.navigation.data}.
76
+ * @param extras.state - Passes state to the navigation.
77
+ * State is not persistent, unlike {@link data}; however, state is added to the browser's session history to support back/forward browser navigation.
78
+ * State can be read from {@link WorkbenchPart.navigation.state} or from the browser's session history via `history.state`.
79
+ * @param extras.cssClass - Specifies CSS class(es) to add to the part, e.g., to locate the part in tests.
80
+ * @return a copy of this layout with the part navigated.
81
+ */
82
+ navigatePart(id: string, commands: Commands, extras?: {
83
+ hint?: string;
84
+ relativeTo?: ActivatedRoute;
85
+ data?: NavigationData;
86
+ state?: NavigationState;
87
+ cssClass?: string | string[];
88
+ }): WorkbenchLayout;
31
89
  /**
32
90
  * Adds a view to the specified part.
33
91
  *
@@ -56,24 +114,41 @@ export interface WorkbenchLayout {
56
114
  *
57
115
  * Usage:
58
116
  * ```
59
- * layout.navigateView(viewId, ['path', 'to', 'view', {param1: 'value1', param2: 'value2'}]);
60
- * layout.navigateView(viewId, ['path/to/view', {param1: 'value1', param2: 'value2'}]);
117
+ * layout.navigateView(viewId, ['path', 'to', 'view', {param 'value'}]);
118
+ * layout.navigateView(viewId, ['path/to/view', {param: 'value'}]);
61
119
  * ```
62
120
  *
63
121
  * @param id - Identifies the view for navigation.
64
122
  * @param commands - Instructs the router which route to navigate to.
65
- * @param extras - Controls navigation.
66
- * @param extras.hint - Sets a hint to control navigation, e.g., for use in a `CanMatch` guard to differentiate between routes with an identical path.
67
- * For example, views of the initial layout or a perspective are usually navigated to the empty path route to avoid cluttering the URL,
68
- * requiring a navigation hint to differentiate between the routes. See {@link canMatchWorkbenchView} for an example.
123
+ * @param extras - Controls navigation:
124
+ * @param extras.hint - Allows differentiation between routes with identical paths.
125
+ * Multiple views can navigate to the same path but still resolve to different routes, e.g., the empty path route to maintain a clean URL.
69
126
  * Like the path, a hint affects view resolution. If set, the router will only navigate views with an equivalent hint, or if not set, views without a hint.
127
+ *
128
+ * Example route config matching routes based on the hint passed to the navigation:
129
+ * ```ts
130
+ * import {canMatchWorkbenchView} from '@scion/workbench';
131
+ *
132
+ * const routes = [
133
+ * {
134
+ * path: '',
135
+ * component: View1Component,
136
+ * canMatch: [canMatchWorkbenchView('hint-1')], // matches navigations with hint 'hint-1'
137
+ * },
138
+ * {
139
+ * path: '',
140
+ * component: View2Component,
141
+ * canMatch: [canMatchWorkbenchView('hint-2')], // matches navigations with hint 'hint-2'
142
+ * },
143
+ * ];
144
+ * ```
70
145
  * @param extras.relativeTo - Specifies the route for relative navigation, supporting navigational symbols such as '/', './', or '../' in the commands.
71
- * @param extras.data - Associates data with a view navigation.
72
- * 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.
73
- * Data must be JSON serializable. Data can be read from {@link WorkbenchView.navigationData}.
74
- * @param extras.state - Passes state to a view navigation.
75
- * State is not persistent, unlike {@link data}, it is only added to the browser's session history to support back/forward browser navigation.
76
- * State can be read from {@link WorkbenchView.navigationState} or from the browser's session history via `history.state`.
146
+ * @param extras.data - Associates data with the navigation.
147
+ * Unlike matrix parameters, navigation data is stored in the layout and not added to the URL, allowing data to be passed to empty path navigations.
148
+ * Data must be JSON serializable. Data can be read from {@link WorkbenchView.navigation.data}.
149
+ * @param extras.state - Passes state to the navigation.
150
+ * State is not persistent, unlike {@link data}; however, state is added to the browser's session history to support back/forward browser navigation.
151
+ * State can be read from {@link WorkbenchView.navigation.state} or from the browser's session history via `history.state`.
77
152
  * @param extras.cssClass - Specifies CSS class(es) to add to the view, e.g., to locate the view in tests.
78
153
  * @return a copy of this layout with the view navigated.
79
154
  */
@@ -137,6 +212,13 @@ export interface WorkbenchLayout {
137
212
  * @return a copy of this layout with the part activated.
138
213
  */
139
214
  activatePart(id: string): WorkbenchLayout;
215
+ /**
216
+ * Applies a modification function to this layout, enabling conditional changes while maintaining method chaining.
217
+ *
218
+ * @param modifyFn - A function that takes the current layout and returns a modified layout.
219
+ * @return The modified layout returned by the modify function.
220
+ */
221
+ modify(modifyFn: (layout: WorkbenchLayout) => WorkbenchLayout): WorkbenchLayout;
140
222
  }
141
223
  /**
142
224
  * Describes how to lay out a part relative to another part.
@@ -166,4 +248,10 @@ export declare const MAIN_AREA: MAIN_AREA;
166
248
  /**
167
249
  * Represents the type of the constant {@link MAIN_AREA}.
168
250
  */
169
- export type MAIN_AREA = 'main-area';
251
+ export type MAIN_AREA = 'part.main-area';
252
+ /**
253
+ * Represents the alternative id of the main area part.
254
+ *
255
+ * @see MAIN_AREA
256
+ */
257
+ export declare const MAIN_AREA_ALTERNATIVE_ID = "main-area";
@@ -1,5 +1,6 @@
1
1
  import { ViewId } from '../view/workbench-view.model';
2
2
  import { NavigationData } from '../routing/routing.model';
3
+ import { PartId } from '../part/workbench-part.model';
3
4
  /**
4
5
  * Represents the arrangement of parts as grid.
5
6
  *
@@ -7,7 +8,7 @@ import { NavigationData } from '../routing/routing.model';
7
8
  */
8
9
  export interface MPartGrid {
9
10
  root: MTreeNode | MPart;
10
- activePartId: string;
11
+ activePartId: PartId;
11
12
  }
12
13
  /**
13
14
  * {@link MPartGrid} with additional fields not serialized into the URL.
@@ -31,7 +32,7 @@ export declare class MTreeNode {
31
32
  * Discriminator to unmarshall {@link MTreeNode} to its class type.
32
33
  */
33
34
  readonly type = "MTreeNode";
34
- readonly id: string;
35
+ id: string;
35
36
  child1: MTreeNode | MPart;
36
37
  child2: MTreeNode | MPart;
37
38
  ratio: number;
@@ -55,11 +56,18 @@ export declare class MPart {
55
56
  * Discriminator to unmarshall {@link MPart} to its class type.
56
57
  */
57
58
  readonly type = "MPart";
58
- readonly id: string;
59
+ id: PartId;
60
+ alternativeId?: string;
59
61
  parent?: MTreeNode;
60
62
  views: MView[];
61
63
  activeViewId?: ViewId;
62
64
  structural: boolean;
65
+ navigation?: {
66
+ id: string;
67
+ hint?: string;
68
+ data?: NavigationData;
69
+ cssClass?: string[];
70
+ };
63
71
  constructor(part: Omit<MPart, 'type'>);
64
72
  /**
65
73
  * Tests if the given object is a {@link MPart}.
@@ -74,7 +82,6 @@ export declare class MPart {
74
82
  export interface MView {
75
83
  id: ViewId;
76
84
  alternativeId?: string;
77
- uid: string;
78
85
  cssClass?: string[];
79
86
  markedForRemoval?: true;
80
87
  navigation?: {
@@ -1,14 +1,14 @@
1
1
  import { Observable } from 'rxjs';
2
- import { ViewDragService } from '../view-dnd/view-drag.service';
3
2
  import { ɵWorkbenchLayout } from './ɵworkbench-layout';
4
3
  import * as i0 from "@angular/core";
5
4
  /**
6
5
  * Provides access to the workbench layout.
7
6
  */
8
7
  export declare class WorkbenchLayoutService {
9
- private _layout$;
10
- private _dragStart$;
11
- private _dragEnd$;
8
+ private readonly _viewDragService;
9
+ private readonly _layout$;
10
+ private readonly _moving;
11
+ private readonly _resizing;
12
12
  /**
13
13
  * Provides the current {@link WorkbenchLayout}, or `null` until Angular has performed the initial navigation.
14
14
  */
@@ -26,19 +26,17 @@ export declare class WorkbenchLayoutService {
26
26
  */
27
27
  readonly onLayoutChange$: Observable<ɵWorkbenchLayout>;
28
28
  /**
29
- * Notifies when the user starts or ends modifying the layout using drag and drop, e.g., moving the splitter between parts,
30
- * moving a message box, or moving a view.
29
+ * Indicates if a drag operation is active, such as moving a view or dialog, or resizing a part.
31
30
  */
32
- readonly dragging$: Observable<'start' | 'end'>;
33
- constructor(viewDragService: ViewDragService);
31
+ readonly dragging: import("@angular/core").Signal<boolean>;
34
32
  /**
35
- * Invoke to inform the layout when about to start a drag operation, like when start moving the splitter between parts.
33
+ * Signals moving a workbench element, such as moving a dialog.
36
34
  */
37
- notifyDragStarting(): void;
35
+ signalMoving(moving: boolean): void;
38
36
  /**
39
- * Invoke to inform the layout when about to end a drag operation, like when end moving the splitter between parts.
37
+ * Signals resizing a workbench element, such as resizing a dialog or part.
40
38
  */
41
- notifyDragEnding(): void;
39
+ signalResizing(resizing: boolean): void;
42
40
  /**
43
41
  * Sets the given {@link WorkbenchLayout}.
44
42
  */
@@ -1,5 +1,6 @@
1
1
  import { MPart, MTreeNode } from './workbench-layout.model';
2
2
  import { ViewId } from '../view/workbench-view.model';
3
+ import { PartId } from '../part/workbench-part.model';
3
4
  /**
4
5
  * Provides helper functions for operating on a workbench layout.
5
6
  */
@@ -19,4 +20,8 @@ export declare const WorkbenchLayouts: {
19
20
  * Computes the next available view id.
20
21
  */
21
22
  readonly computeNextViewId: (viewIds: Iterable<ViewId>) => ViewId;
23
+ /**
24
+ * Computes a random part id.
25
+ */
26
+ readonly computePartId: () => PartId;
22
27
  };
@@ -1,5 +1,5 @@
1
1
  import { MPartGrid, ɵMPartGrid } from './workbench-layout.model';
2
- import { ViewOutlets } from '../routing/routing.model';
2
+ import { Outlets } from '../routing/routing.model';
3
3
  import * as i0 from "@angular/core";
4
4
  /**
5
5
  * Serializes and deserializes a base64-encoded JSON into a {@link MPartGrid}.
@@ -10,7 +10,7 @@ export declare class WorkbenchLayoutSerializer {
10
10
  * Serializes the given grid into a URL-safe base64 string.
11
11
  *
12
12
  * @param grid - Specifies the grid to be serialized.
13
- * @param flags - Controls which fields not to serialize. By default, all fields are serialized.
13
+ * @param flags - Controls how to serialize the grid.
14
14
  */
15
15
  serializeGrid(grid: MPartGrid, flags?: GridSerializationFlags): string;
16
16
  serializeGrid(grid: MPartGrid | undefined | null, flags?: GridSerializationFlags): null | string;
@@ -21,11 +21,11 @@ export declare class WorkbenchLayoutSerializer {
21
21
  /**
22
22
  * Serializes the given outlets.
23
23
  */
24
- serializeViewOutlets(viewOutlets: ViewOutlets): string;
24
+ serializeOutlets(outlets: Outlets): string;
25
25
  /**
26
26
  * Deserializes the given outlets.
27
27
  */
28
- deserializeViewOutlets(serialized: string): ViewOutlets;
28
+ deserializeOutlets(serialized: string): Outlets;
29
29
  static ɵfac: i0.ɵɵFactoryDeclaration<WorkbenchLayoutSerializer, never>;
30
30
  static ɵprov: i0.ɵɵInjectableDeclaration<WorkbenchLayoutSerializer>;
31
31
  }
@@ -36,13 +36,37 @@ export declare class WorkbenchLayoutSerializer {
36
36
  *
37
37
  * @see WorkbenchMigrator
38
38
  */
39
- export declare const WORKBENCH_LAYOUT_VERSION = 5;
39
+ export declare const WORKBENCH_LAYOUT_VERSION = 7;
40
40
  /**
41
- * Controls which fields not to serialize. By default, all fields are serialized.
41
+ * Controls how to serialize the grid.
42
42
  */
43
43
  export interface GridSerializationFlags {
44
+ /**
45
+ * Excludes the node id from the serialization.
46
+ */
44
47
  excludeTreeNodeId?: true;
45
- excludeViewUid?: true;
48
+ /**
49
+ * Excludes views marked for removal from the serialization.
50
+ */
46
51
  excludeViewMarkedForRemoval?: true;
52
+ /**
53
+ * Excludes the view navigation id from the serialization.
54
+ */
47
55
  excludeViewNavigationId?: true;
56
+ /**
57
+ * Excludes the part navigation id from the serialization.
58
+ */
59
+ excludePartNavigationId?: true;
60
+ /**
61
+ * Assigns each part a stable id based on its position in the grid.
62
+ *
63
+ * Stable part identifiers are required to compare the initial grid with the user-modified grid to detect layout changes.
64
+ */
65
+ assignStablePartIdentifier?: true;
66
+ /**
67
+ * Controls if to sort the fields of the grid by name. Defaults to `false`.
68
+ *
69
+ * Stable sort order is required to compare the initial grid with the user-modified grid to detect layout changes.
70
+ */
71
+ sort?: true;
48
72
  }