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

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 (253) hide show
  1. package/design/_workbench-view-global-styles.scss +0 -1
  2. package/fesm2022/scion-workbench.mjs +8556 -8622
  3. package/fesm2022/scion-workbench.mjs.map +1 -1
  4. package/lib/common/css-class.util.d.ts +5 -0
  5. package/lib/common/math.util.d.ts +7 -0
  6. package/lib/common/objects.util.d.ts +1 -1
  7. package/lib/dialog/workbench-dialog.component.d.ts +1 -2
  8. package/lib/layout/migration/model/workbench-layout-migration-v6.model.d.ts +35 -0
  9. package/lib/layout/migration/workbench-layout-migration-v6.service.d.ts +12 -0
  10. package/lib/layout/workbench-layout.model.d.ts +0 -1
  11. package/lib/layout/workbench-layout.service.d.ts +10 -12
  12. package/lib/layout/workench-layout-serializer.service.d.ts +1 -2
  13. package/lib/part/part-action-bar/part-action-bar.component.d.ts +2 -6
  14. package/lib/part/part-bar/part-bar.component.d.ts +66 -48
  15. package/lib/part/view-tab/view-tab.component.d.ts +3 -3
  16. package/lib/public_api.d.ts +0 -2
  17. package/lib/routing/routing.util.d.ts +2 -2
  18. package/lib/view/view-move-handler.service.d.ts +16 -14
  19. package/lib/view/view.component.d.ts +1 -2
  20. package/lib/view//311/265workbench-view.model.d.ts +1 -9
  21. package/lib/view-dnd/grid-drop-targets.util.d.ts +1 -1
  22. package/lib/view-dnd/view-drag.service.d.ts +72 -49
  23. package/lib/view-dnd/view-tab-drag-image-renderer.service.d.ts +11 -36
  24. package/package.json +8 -10
  25. package/esm2022/lib/activation-instant.provider.mjs +0 -29
  26. package/esm2022/lib/common/animation-frame.observable.mjs +0 -37
  27. package/esm2022/lib/common/asserts.util.mjs +0 -31
  28. package/esm2022/lib/common/class-list.mjs +0 -99
  29. package/esm2022/lib/common/coerce-observable.pipe.mjs +0 -28
  30. package/esm2022/lib/common/disposable.mjs +0 -11
  31. package/esm2022/lib/common/dom.util.mjs +0 -100
  32. package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +0 -32
  33. package/esm2022/lib/common/instanceof.pipe.mjs +0 -26
  34. package/esm2022/lib/common/map-coerce.pipe.mjs +0 -28
  35. package/esm2022/lib/common/null-if-empty.pipe.mjs +0 -38
  36. package/esm2022/lib/common/objects.util.mjs +0 -40
  37. package/esm2022/lib/common/observables.mjs +0 -72
  38. package/esm2022/lib/common/operators.mjs +0 -27
  39. package/esm2022/lib/common/public_api.mjs +0 -11
  40. package/esm2022/lib/common/stringify-error.util.mjs +0 -19
  41. package/esm2022/lib/common/throw-error.util.mjs +0 -16
  42. package/esm2022/lib/common/typeof.pipe.mjs +0 -26
  43. package/esm2022/lib/common/uid.util.mjs +0 -22
  44. package/esm2022/lib/common//311/265destroy-ref.mjs +0 -36
  45. package/esm2022/lib/communication/workbench-broadcast-channel.mjs +0 -38
  46. package/esm2022/lib/content-projection/content-as-overlay.component.mjs +0 -114
  47. package/esm2022/lib/content-projection/workbench-element-references.mjs +0 -32
  48. package/esm2022/lib/dialog/dialog-footer/dialog-action-filter.pipe.mjs +0 -26
  49. package/esm2022/lib/dialog/dialog-footer/dialog-footer.component.mjs +0 -34
  50. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-action.directive.mjs +0 -51
  51. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-footer.directive.mjs +0 -46
  52. package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +0 -33
  53. package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +0 -46
  54. package/esm2022/lib/dialog/movable.directive.mjs +0 -126
  55. package/esm2022/lib/dialog/public_api.mjs +0 -15
  56. package/esm2022/lib/dialog/resizable.directive.mjs +0 -392
  57. package/esm2022/lib/dialog/workbench-dialog.component.mjs +0 -250
  58. package/esm2022/lib/dialog/workbench-dialog.mjs +0 -79
  59. package/esm2022/lib/dialog/workbench-dialog.options.mjs +0 -11
  60. package/esm2022/lib/dialog/workbench-dialog.registry.mjs +0 -73
  61. package/esm2022/lib/dialog/workbench-dialog.service.mjs +0 -96
  62. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +0 -310
  63. package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +0 -98
  64. package/esm2022/lib/executor/latest-task-executor.mjs +0 -55
  65. package/esm2022/lib/executor/single-task-executor.mjs +0 -72
  66. package/esm2022/lib/filter-field/filter-field.component.mjs +0 -130
  67. package/esm2022/lib/glass-pane/blockable.mjs +0 -11
  68. package/esm2022/lib/glass-pane/blocking.mjs +0 -11
  69. package/esm2022/lib/glass-pane/glass-pane.directive.mjs +0 -120
  70. package/esm2022/lib/layout/grid-element/grid-element.component.mjs +0 -111
  71. package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +0 -97
  72. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v2.model.mjs +0 -11
  73. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v3.model.mjs +0 -11
  74. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v4.model.mjs +0 -11
  75. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +0 -11
  76. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +0 -117
  77. package/esm2022/lib/layout/migration/workbench-layout-migration-v4.service.mjs +0 -57
  78. package/esm2022/lib/layout/migration/workbench-layout-migration-v5.service.mjs +0 -67
  79. package/esm2022/lib/layout/public_api.mjs +0 -12
  80. package/esm2022/lib/layout/stringifier.mjs +0 -70
  81. package/esm2022/lib/layout/workbench-layout.component.mjs +0 -90
  82. package/esm2022/lib/layout/workbench-layout.factory.mjs +0 -24
  83. package/esm2022/lib/layout/workbench-layout.mjs +0 -16
  84. package/esm2022/lib/layout/workbench-layout.model.mjs +0 -62
  85. package/esm2022/lib/layout/workbench-layout.service.mjs +0 -68
  86. package/esm2022/lib/layout/workbench-layouts.util.mjs +0 -58
  87. package/esm2022/lib/layout/workench-layout-serializer.service.mjs +0 -109
  88. package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +0 -54
  89. package/esm2022/lib/layout//311/265workbench-layout.mjs +0 -876
  90. package/esm2022/lib/logging/console-appender.service.mjs +0 -46
  91. package/esm2022/lib/logging/index.mjs +0 -15
  92. package/esm2022/lib/logging/logger-names.mjs +0 -32
  93. package/esm2022/lib/logging/logger.mjs +0 -36
  94. package/esm2022/lib/logging/logging-support.mjs +0 -26
  95. package/esm2022/lib/logging/logging.model.mjs +0 -45
  96. package/esm2022/lib/logging/public_api.mjs +0 -12
  97. package/esm2022/lib/logging//311/265logger.mjs +0 -73
  98. package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +0 -69
  99. package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +0 -28
  100. package/esm2022/lib/message-box/public_api.mjs +0 -11
  101. package/esm2022/lib/message-box/workbench-message-box.component.mjs +0 -102
  102. package/esm2022/lib/message-box/workbench-message-box.options.mjs +0 -2
  103. package/esm2022/lib/message-box/workbench-message-box.service.mjs +0 -39
  104. package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +0 -45
  105. package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +0 -71
  106. package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +0 -126
  107. package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +0 -36
  108. package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +0 -84
  109. package/esm2022/lib/microfrontend-platform/manifest-object-cache.service.mjs +0 -63
  110. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +0 -54
  111. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +0 -85
  112. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +0 -140
  113. package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +0 -133
  114. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +0 -113
  115. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +0 -43
  116. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +0 -101
  117. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +0 -35
  118. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.mjs +0 -88
  119. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.mjs +0 -32
  120. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +0 -121
  121. package/esm2022/lib/microfrontend-platform/microfrontend-notification/microfrontend-notification-intent-handler.service.mjs +0 -45
  122. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.mjs +0 -39
  123. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.mjs +0 -120
  124. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.mjs +0 -55
  125. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.mjs +0 -19
  126. package/esm2022/lib/microfrontend-platform/microfrontend-platform-config-loader.mjs +0 -13
  127. package/esm2022/lib/microfrontend-platform/microfrontend-platform.config.mjs +0 -11
  128. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +0 -31
  129. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +0 -132
  130. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +0 -115
  131. package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +0 -21
  132. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +0 -112
  133. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +0 -313
  134. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-workbench-view.model.mjs +0 -23
  135. package/esm2022/lib/microfrontend-platform/public_api.mjs +0 -13
  136. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +0 -31
  137. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +0 -127
  138. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +0 -125
  139. package/esm2022/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.mjs +0 -32
  140. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +0 -191
  141. package/esm2022/lib/migration/workbench-migration.mjs +0 -11
  142. package/esm2022/lib/migration/workbench-migrator.mjs +0 -38
  143. package/esm2022/lib/notification/notification-css-classes.pipe.mjs +0 -24
  144. package/esm2022/lib/notification/notification-list.component.mjs +0 -51
  145. package/esm2022/lib/notification/notification.component.mjs +0 -109
  146. package/esm2022/lib/notification/notification.config.mjs +0 -11
  147. package/esm2022/lib/notification/notification.mjs +0 -19
  148. package/esm2022/lib/notification/notification.service.mjs +0 -134
  149. package/esm2022/lib/notification/public_api.mjs +0 -12
  150. package/esm2022/lib/notification/text-notification.component.mjs +0 -23
  151. package/esm2022/lib/notification//311/265notification.mjs +0 -42
  152. package/esm2022/lib/page-not-found/page-not-found.component.mjs +0 -26
  153. package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +0 -31
  154. package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +0 -77
  155. package/esm2022/lib/part/part-bar/part-bar.component.mjs +0 -444
  156. package/esm2022/lib/part/part-portal.pipe.mjs +0 -35
  157. package/esm2022/lib/part/part.component.mjs +0 -135
  158. package/esm2022/lib/part/public_api.mjs +0 -13
  159. package/esm2022/lib/part/view-context-menu/accelerator-format.pipe.mjs +0 -31
  160. package/esm2022/lib/part/view-context-menu/text.component.mjs +0 -38
  161. package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +0 -89
  162. package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +0 -76
  163. package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +0 -340
  164. package/esm2022/lib/part/view-list/view-list.component.mjs +0 -117
  165. package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +0 -82
  166. package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +0 -60
  167. package/esm2022/lib/part/view-tab/view-tab.component.mjs +0 -218
  168. package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +0 -29
  169. package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +0 -81
  170. package/esm2022/lib/part/workbench-part-action.registry.mjs +0 -23
  171. package/esm2022/lib/part/workbench-part.model.mjs +0 -19
  172. package/esm2022/lib/part/workbench-part.registry.mjs +0 -23
  173. package/esm2022/lib/part//311/265workbench-part.model.mjs +0 -146
  174. package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v1.model.mjs +0 -11
  175. package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v2.model.mjs +0 -11
  176. package/esm2022/lib/perspective/migration/workbench-perspective-migration-v2.service.mjs +0 -57
  177. package/esm2022/lib/perspective/public_api.mjs +0 -11
  178. package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +0 -39
  179. package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +0 -72
  180. package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +0 -50
  181. package/esm2022/lib/perspective/workbench-perspective.model.mjs +0 -2
  182. package/esm2022/lib/perspective/workbench-perspective.registry.mjs +0 -23
  183. package/esm2022/lib/perspective/workbench-perspective.service.mjs +0 -180
  184. package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +0 -62
  185. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +0 -210
  186. package/esm2022/lib/popup/popup.component.mjs +0 -124
  187. package/esm2022/lib/popup/popup.config.mjs +0 -100
  188. package/esm2022/lib/popup/popup.origin.mjs +0 -11
  189. package/esm2022/lib/popup/popup.service.mjs +0 -339
  190. package/esm2022/lib/popup/public_api.mjs +0 -12
  191. package/esm2022/lib/portal/wb-component-portal.mjs +0 -130
  192. package/esm2022/lib/portal/workbench-portal-outlet.directive.mjs +0 -68
  193. package/esm2022/lib/public_api.mjs +0 -32
  194. package/esm2022/lib/registry/workbench-object-registry.mjs +0 -104
  195. package/esm2022/lib/routing/empty-outlet/empty-outlet.component.mjs +0 -31
  196. package/esm2022/lib/routing/public_api.mjs +0 -14
  197. package/esm2022/lib/routing/routing.model.mjs +0 -11
  198. package/esm2022/lib/routing/routing.util.mjs +0 -215
  199. package/esm2022/lib/routing/url-segment-matcher.mjs +0 -46
  200. package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +0 -110
  201. package/esm2022/lib/routing/workbench-dialog-differ.mjs +0 -51
  202. package/esm2022/lib/routing/workbench-layout-differ.mjs +0 -61
  203. package/esm2022/lib/routing/workbench-message-box-differ.mjs +0 -51
  204. package/esm2022/lib/routing/workbench-navigational-states.mjs +0 -33
  205. package/esm2022/lib/routing/workbench-popup-differ.mjs +0 -51
  206. package/esm2022/lib/routing/workbench-route-data.mjs +0 -39
  207. package/esm2022/lib/routing/workbench-route-guards.mjs +0 -57
  208. package/esm2022/lib/routing/workbench-router-link.directive.mjs +0 -124
  209. package/esm2022/lib/routing/workbench-router.service.mjs +0 -19
  210. package/esm2022/lib/routing/workbench-url-observer.service.mjs +0 -305
  211. package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +0 -58
  212. package/esm2022/lib/routing//311/265location.mjs +0 -70
  213. package/esm2022/lib/routing//311/265workbench-router.service.mjs +0 -359
  214. package/esm2022/lib/startup/public_api.mjs +0 -12
  215. package/esm2022/lib/startup/splash/splash.component.mjs +0 -24
  216. package/esm2022/lib/startup/workbench-initializer.mjs +0 -96
  217. package/esm2022/lib/startup/workbench-launcher.service.mjs +0 -173
  218. package/esm2022/lib/storage/public_api.mjs +0 -11
  219. package/esm2022/lib/storage/workbench-storage.mjs +0 -37
  220. package/esm2022/lib/testing/public_api.mjs +0 -12
  221. package/esm2022/lib/testing/workbench-testing.module.mjs +0 -49
  222. package/esm2022/lib/testing/workbench.provider.mjs +0 -60
  223. package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +0 -72
  224. package/esm2022/lib/view/public_api.mjs +0 -11
  225. package/esm2022/lib/view/view-context-provider.mjs +0 -31
  226. package/esm2022/lib/view/view-move-handler.service.mjs +0 -145
  227. package/esm2022/lib/view/view-portal.pipe.mjs +0 -33
  228. package/esm2022/lib/view/view.component.mjs +0 -128
  229. package/esm2022/lib/view/workbench-view.model.mjs +0 -12
  230. package/esm2022/lib/view/workbench-view.registry.mjs +0 -23
  231. package/esm2022/lib/view//311/265workbench-view.model.mjs +0 -375
  232. package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +0 -49
  233. package/esm2022/lib/view-dnd/requires-drop-zone.pipe.mjs +0 -58
  234. package/esm2022/lib/view-dnd/view-drag.service.mjs +0 -213
  235. package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +0 -89
  236. package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +0 -183
  237. package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +0 -224
  238. package/esm2022/lib/workbench-config.mjs +0 -15
  239. package/esm2022/lib/workbench-id.mjs +0 -21
  240. package/esm2022/lib/workbench.component.mjs +0 -146
  241. package/esm2022/lib/workbench.constants.mjs +0 -41
  242. package/esm2022/lib/workbench.model.mjs +0 -11
  243. package/esm2022/lib/workbench.module.mjs +0 -101
  244. package/esm2022/lib/workbench.provider.mjs +0 -111
  245. package/esm2022/lib/workbench.service.mjs +0 -29
  246. package/esm2022/lib//311/265workbench.service.mjs +0 -102
  247. package/esm2022/public-api.mjs +0 -14
  248. package/esm2022/scion-workbench.mjs +0 -5
  249. package/lib/common/animation-frame.observable.d.ts +0 -10
  250. package/lib/testing/public_api.d.ts +0 -2
  251. package/lib/testing/workbench-testing.module.d.ts +0 -40
  252. package/lib/testing/workbench.provider.d.ts +0 -31
  253. package/lib/workbench.module.d.ts +0 -65
@@ -1,54 +0,0 @@
1
- /*
2
- * Copyright (c) 2018-2024 Swiss Federal Railways
3
- *
4
- * This program and the accompanying materials are made
5
- * available under the terms of the Eclipse Public License 2.0
6
- * which is available at https://www.eclipse.org/legal/epl-2.0/
7
- *
8
- * SPDX-License-Identifier: EPL-2.0
9
- */
10
- import { APP_IDENTITY } from '@scion/microfrontend-platform';
11
- import { Injectable } from '@angular/core';
12
- import { WorkbenchCapabilities } from '@scion/workbench-client';
13
- import { Beans } from '@scion/toolkit/bean-manager';
14
- import { Objects } from '../../common/objects.util';
15
- import * as i0 from "@angular/core";
16
- /**
17
- * Asserts dialog capabilities to have required properties.
18
- */
19
- export class MicrofrontendDialogCapabilityValidator {
20
- async intercept(capability) {
21
- if (capability.type !== WorkbenchCapabilities.Dialog) {
22
- return capability;
23
- }
24
- const dialogCapability = capability;
25
- // Assert the dialog capability to have a qualifier.
26
- if (!Object.keys(dialogCapability.qualifier ?? {}).length) {
27
- throw Error(`[NullQualifierError] Dialog capability requires a qualifier [capability=${JSON.stringify(dialogCapability)}]`);
28
- }
29
- // Assert the dialog capability to have a path.
30
- const path = dialogCapability.properties?.path;
31
- if (path === undefined || path === null) {
32
- throw Error(`[NullPathError] Dialog capability requires a path to the microfrontend in its properties [application="${dialogCapability.metadata.appSymbolicName}", capability="${Objects.toMatrixNotation(dialogCapability.qualifier)}"]`);
33
- }
34
- // Assert the dialog capability to have a height and width, unless provided by the host application.
35
- this.assertSize(dialogCapability);
36
- return dialogCapability;
37
- }
38
- assertSize(capability) {
39
- const isHostProvider = capability.metadata.appSymbolicName === Beans.get(APP_IDENTITY);
40
- if (isHostProvider) {
41
- return;
42
- }
43
- const size = capability.properties?.size;
44
- if (!size?.width || !size?.height) {
45
- throw Error(`[NullSizeError] Dialog capability requires width and height in its size properties [application="${capability.metadata.appSymbolicName}", capability="${Objects.toMatrixNotation(capability.qualifier)}"]`);
46
- }
47
- }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogCapabilityValidator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
49
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogCapabilityValidator }); }
50
- }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogCapabilityValidator, decorators: [{
52
- type: Injectable
53
- }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9mcm9udGVuZC1kaWFsb2ctY2FwYWJpbGl0eS12YWxpZGF0b3IuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9taWNyb2Zyb250ZW5kLXBsYXRmb3JtL21pY3JvZnJvbnRlbmQtZGlhbG9nL21pY3JvZnJvbnRlbmQtZGlhbG9nLWNhcGFiaWxpdHktdmFsaWRhdG9yLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFlBQVksRUFBb0MsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxxQkFBcUIsRUFBNEIsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDbEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLDJCQUEyQixDQUFDOztBQUVsRDs7R0FFRztBQUVILE1BQU0sT0FBTyxzQ0FBc0M7SUFFMUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFzQjtRQUMzQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUsscUJBQXFCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckQsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsVUFBdUMsQ0FBQztRQUNqRSxvREFBb0Q7UUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFELE1BQU0sS0FBSyxDQUFDLDJFQUEyRSxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlILENBQUM7UUFFRCwrQ0FBK0M7UUFDL0MsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztRQUMvQyxJQUFJLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3hDLE1BQU0sS0FBSyxDQUFDLDBHQUEwRyxnQkFBZ0IsQ0FBQyxRQUFTLENBQUMsZUFBZSxrQkFBa0IsT0FBTyxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5TyxDQUFDO1FBRUQsb0dBQW9HO1FBQ3BHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVsQyxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFTyxVQUFVLENBQUMsVUFBcUM7UUFDdEQsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLFFBQVMsQ0FBQyxlQUFlLEtBQUssS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4RixJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbEMsTUFBTSxLQUFLLENBQUMsb0dBQW9HLFVBQVUsQ0FBQyxRQUFTLENBQUMsZUFBZSxrQkFBa0IsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNU4sQ0FBQztJQUNILENBQUM7OEdBbkNVLHNDQUFzQztrSEFBdEMsc0NBQXNDOzsyRkFBdEMsc0NBQXNDO2tCQURsRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0FQUF9JREVOVElUWSwgQ2FwYWJpbGl0eSwgQ2FwYWJpbGl0eUludGVyY2VwdG9yfSBmcm9tICdAc2Npb24vbWljcm9mcm9udGVuZC1wbGF0Zm9ybSc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hDYXBhYmlsaXRpZXMsIFdvcmtiZW5jaERpYWxvZ0NhcGFiaWxpdHl9IGZyb20gJ0BzY2lvbi93b3JrYmVuY2gtY2xpZW50JztcbmltcG9ydCB7QmVhbnN9IGZyb20gJ0BzY2lvbi90b29sa2l0L2JlYW4tbWFuYWdlcic7XG5pbXBvcnQge09iamVjdHN9IGZyb20gJy4uLy4uL2NvbW1vbi9vYmplY3RzLnV0aWwnO1xuXG4vKipcbiAqIEFzc2VydHMgZGlhbG9nIGNhcGFiaWxpdGllcyB0byBoYXZlIHJlcXVpcmVkIHByb3BlcnRpZXMuXG4gKi9cbkBJbmplY3RhYmxlKC8qIERPIE5PVCBQUk9WSURFIHZpYSAncHJvdmlkZWRJbicgbWV0YWRhdGEgYXMgb25seSByZWdpc3RlcmVkIGlmIG1pY3JvZnJvbnRlbmQgc3VwcG9ydCBpcyBlbmFibGVkLiAqLylcbmV4cG9ydCBjbGFzcyBNaWNyb2Zyb250ZW5kRGlhbG9nQ2FwYWJpbGl0eVZhbGlkYXRvciBpbXBsZW1lbnRzIENhcGFiaWxpdHlJbnRlcmNlcHRvciB7XG5cbiAgcHVibGljIGFzeW5jIGludGVyY2VwdChjYXBhYmlsaXR5OiBDYXBhYmlsaXR5KTogUHJvbWlzZTxDYXBhYmlsaXR5PiB7XG4gICAgaWYgKGNhcGFiaWxpdHkudHlwZSAhPT0gV29ya2JlbmNoQ2FwYWJpbGl0aWVzLkRpYWxvZykge1xuICAgICAgcmV0dXJuIGNhcGFiaWxpdHk7XG4gICAgfVxuXG4gICAgY29uc3QgZGlhbG9nQ2FwYWJpbGl0eSA9IGNhcGFiaWxpdHkgYXMgV29ya2JlbmNoRGlhbG9nQ2FwYWJpbGl0eTtcbiAgICAvLyBBc3NlcnQgdGhlIGRpYWxvZyBjYXBhYmlsaXR5IHRvIGhhdmUgYSBxdWFsaWZpZXIuXG4gICAgaWYgKCFPYmplY3Qua2V5cyhkaWFsb2dDYXBhYmlsaXR5LnF1YWxpZmllciA/PyB7fSkubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBFcnJvcihgW051bGxRdWFsaWZpZXJFcnJvcl0gRGlhbG9nIGNhcGFiaWxpdHkgcmVxdWlyZXMgYSBxdWFsaWZpZXIgW2NhcGFiaWxpdHk9JHtKU09OLnN0cmluZ2lmeShkaWFsb2dDYXBhYmlsaXR5KX1dYCk7XG4gICAgfVxuXG4gICAgLy8gQXNzZXJ0IHRoZSBkaWFsb2cgY2FwYWJpbGl0eSB0byBoYXZlIGEgcGF0aC5cbiAgICBjb25zdCBwYXRoID0gZGlhbG9nQ2FwYWJpbGl0eS5wcm9wZXJ0aWVzPy5wYXRoO1xuICAgIGlmIChwYXRoID09PSB1bmRlZmluZWQgfHwgcGF0aCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgRXJyb3IoYFtOdWxsUGF0aEVycm9yXSBEaWFsb2cgY2FwYWJpbGl0eSByZXF1aXJlcyBhIHBhdGggdG8gdGhlIG1pY3JvZnJvbnRlbmQgaW4gaXRzIHByb3BlcnRpZXMgW2FwcGxpY2F0aW9uPVwiJHtkaWFsb2dDYXBhYmlsaXR5Lm1ldGFkYXRhIS5hcHBTeW1ib2xpY05hbWV9XCIsIGNhcGFiaWxpdHk9XCIke09iamVjdHMudG9NYXRyaXhOb3RhdGlvbihkaWFsb2dDYXBhYmlsaXR5LnF1YWxpZmllcil9XCJdYCk7XG4gICAgfVxuXG4gICAgLy8gQXNzZXJ0IHRoZSBkaWFsb2cgY2FwYWJpbGl0eSB0byBoYXZlIGEgaGVpZ2h0IGFuZCB3aWR0aCwgdW5sZXNzIHByb3ZpZGVkIGJ5IHRoZSBob3N0IGFwcGxpY2F0aW9uLlxuICAgIHRoaXMuYXNzZXJ0U2l6ZShkaWFsb2dDYXBhYmlsaXR5KTtcblxuICAgIHJldHVybiBkaWFsb2dDYXBhYmlsaXR5O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3NlcnRTaXplKGNhcGFiaWxpdHk6IFdvcmtiZW5jaERpYWxvZ0NhcGFiaWxpdHkpOiB2b2lkIHtcbiAgICBjb25zdCBpc0hvc3RQcm92aWRlciA9IGNhcGFiaWxpdHkubWV0YWRhdGEhLmFwcFN5bWJvbGljTmFtZSA9PT0gQmVhbnMuZ2V0KEFQUF9JREVOVElUWSk7XG4gICAgaWYgKGlzSG9zdFByb3ZpZGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2l6ZSA9IGNhcGFiaWxpdHkucHJvcGVydGllcz8uc2l6ZTtcbiAgICBpZiAoIXNpemU/LndpZHRoIHx8ICFzaXplPy5oZWlnaHQpIHtcbiAgICAgIHRocm93IEVycm9yKGBbTnVsbFNpemVFcnJvcl0gRGlhbG9nIGNhcGFiaWxpdHkgcmVxdWlyZXMgd2lkdGggYW5kIGhlaWdodCBpbiBpdHMgc2l6ZSBwcm9wZXJ0aWVzIFthcHBsaWNhdGlvbj1cIiR7Y2FwYWJpbGl0eS5tZXRhZGF0YSEuYXBwU3ltYm9saWNOYW1lfVwiLCBjYXBhYmlsaXR5PVwiJHtPYmplY3RzLnRvTWF0cml4Tm90YXRpb24oY2FwYWJpbGl0eS5xdWFsaWZpZXIpfVwiXWApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,85 +0,0 @@
1
- /*
2
- * Copyright (c) 2018-2024 Swiss Federal Railways
3
- *
4
- * This program and the accompanying materials are made
5
- * available under the terms of the Eclipse Public License 2.0
6
- * which is available at https://www.eclipse.org/legal/epl-2.0/
7
- *
8
- * SPDX-License-Identifier: EPL-2.0
9
- */
10
- import { Injectable } from '@angular/core';
11
- import { APP_IDENTITY, MessageClient, MessageHeaders, ResponseStatusCodes } from '@scion/microfrontend-platform';
12
- import { WorkbenchCapabilities } from '@scion/workbench-client';
13
- import { LoggerNames } from '../../logging';
14
- import { Beans } from '@scion/toolkit/bean-manager';
15
- import { stringifyError } from '../../common/stringify-error.util';
16
- import { Arrays } from '@scion/toolkit/util';
17
- import { MicrofrontendDialogComponent } from './microfrontend-dialog.component';
18
- import { MicrofrontendHostDialogComponent } from '../microfrontend-host-dialog/microfrontend-host-dialog.component';
19
- import * as i0 from "@angular/core";
20
- import * as i1 from "../../dialog/workbench-dialog.service";
21
- import * as i2 from "../../logging";
22
- /**
23
- * Handles dialog intents, instructing the workbench to open a dialog with the microfrontend declared on the resolved capability.
24
- *
25
- * Microfrontends of the host are displayed in {@link MicrofrontendHostDialogComponent}, microfrontends of other applications in {@link MicrofrontendDialogComponent}.
26
- *
27
- * Dialog intents are handled in this interceptor and are not transported to the providing application, enabling support for applications
28
- * that are not connected to the SCION Workbench.
29
- */
30
- export class MicrofrontendDialogIntentHandler {
31
- constructor(_dialogService, _logger) {
32
- this._dialogService = _dialogService;
33
- this._logger = _logger;
34
- }
35
- /**
36
- * Dialog intents are handled in this interceptor and then swallowed.
37
- */
38
- intercept(intentMessage, next) {
39
- if (intentMessage.intent.type === WorkbenchCapabilities.Dialog) {
40
- // Do not block the call until the dialog is closed.
41
- // Otherwise, the caller may receive a timeout error if not closing the dialog before delivery confirmation expires.
42
- this.consumeDialogIntent(intentMessage).catch(error => this._logger.error('[DialogOpenError] Failed to open dialog.', LoggerNames.MICROFRONTEND, intentMessage, error));
43
- // Swallow the intent and do not pass it to other interceptors or handlers down the chain.
44
- return Promise.resolve();
45
- }
46
- else {
47
- return next.handle(intentMessage);
48
- }
49
- }
50
- async consumeDialogIntent(message) {
51
- const replyTo = message.headers.get(MessageHeaders.ReplyTo);
52
- try {
53
- const result = await this.openDialog(message);
54
- // Use 'Beans.opt' to not error if the platform is destroyed, e.g., in tests if not closing dialogs.
55
- await Beans.opt(MessageClient)?.publish(replyTo, result, { headers: new Map().set(MessageHeaders.Status, ResponseStatusCodes.TERMINAL) });
56
- }
57
- catch (error) {
58
- // Use 'Beans.opt' to not error if the platform is destroyed, e.g., in tests if not closing dialogs.
59
- await Beans.opt(MessageClient)?.publish(replyTo, stringifyError(error), { headers: new Map().set(MessageHeaders.Status, ResponseStatusCodes.ERROR) });
60
- }
61
- }
62
- /**
63
- * Opens the microfrontend declared by the resolved capability in a dialog.
64
- */
65
- async openDialog(message) {
66
- const options = message.body ?? {};
67
- const capability = message.capability;
68
- const params = message.intent.params ?? new Map();
69
- const isHostProvider = capability.metadata.appSymbolicName === Beans.get(APP_IDENTITY);
70
- this._logger.debug(() => 'Handling microfrontend dialog intent', LoggerNames.MICROFRONTEND, options);
71
- return this._dialogService.open(isHostProvider ? MicrofrontendHostDialogComponent : MicrofrontendDialogComponent, {
72
- inputs: { capability, params },
73
- modality: options.modality,
74
- context: options.context,
75
- animate: options.animate,
76
- cssClass: Arrays.coerce(capability.properties?.cssClass).concat(Arrays.coerce(options.cssClass)),
77
- });
78
- }
79
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogIntentHandler, deps: [{ token: i1.WorkbenchDialogService }, { token: i2.Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
80
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogIntentHandler }); }
81
- }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogIntentHandler, decorators: [{
83
- type: Injectable
84
- }], ctorParameters: () => [{ type: i1.WorkbenchDialogService }, { type: i2.Logger }] });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9mcm9udGVuZC1kaWFsb2ctaW50ZW50LWhhbmRsZXIuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9taWNyb2Zyb250ZW5kLXBsYXRmb3JtL21pY3JvZnJvbnRlbmQtZGlhbG9nL21pY3JvZnJvbnRlbmQtZGlhbG9nLWludGVudC1oYW5kbGVyLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsWUFBWSxFQUE2QyxhQUFhLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDMUosT0FBTyxFQUFDLHFCQUFxQixFQUFvRCxNQUFNLHlCQUF5QixDQUFDO0FBQ2pILE9BQU8sRUFBUyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2xELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFM0MsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDOUUsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sa0VBQWtFLENBQUM7Ozs7QUFFbEg7Ozs7Ozs7R0FPRztBQUVILE1BQU0sT0FBTyxnQ0FBZ0M7SUFFM0MsWUFBb0IsY0FBc0MsRUFBVSxPQUFlO1FBQS9ELG1CQUFjLEdBQWQsY0FBYyxDQUF3QjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFDbkYsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUyxDQUFDLGFBQTRCLEVBQUUsSUFBNEI7UUFDekUsSUFB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VSxnQ0FBZ0M7a0hBQWhDLGdDQUFnQzs7MkZBQWhDLGdDQUFnQztrQkFENUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QVBQX0lERU5USVRZLCBIYW5kbGVyLCBJbnRlbnRJbnRlcmNlcHRvciwgSW50ZW50TWVzc2FnZSwgTWVzc2FnZUNsaWVudCwgTWVzc2FnZUhlYWRlcnMsIFJlc3BvbnNlU3RhdHVzQ29kZXN9IGZyb20gJ0BzY2lvbi9taWNyb2Zyb250ZW5kLXBsYXRmb3JtJztcbmltcG9ydCB7V29ya2JlbmNoQ2FwYWJpbGl0aWVzLCBXb3JrYmVuY2hEaWFsb2dDYXBhYmlsaXR5LCBXb3JrYmVuY2hEaWFsb2dPcHRpb25zfSBmcm9tICdAc2Npb24vd29ya2JlbmNoLWNsaWVudCc7XG5pbXBvcnQge0xvZ2dlciwgTG9nZ2VyTmFtZXN9IGZyb20gJy4uLy4uL2xvZ2dpbmcnO1xuaW1wb3J0IHtCZWFuc30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvYmVhbi1tYW5hZ2VyJztcbmltcG9ydCB7c3RyaW5naWZ5RXJyb3J9IGZyb20gJy4uLy4uL2NvbW1vbi9zdHJpbmdpZnktZXJyb3IudXRpbCc7XG5pbXBvcnQge0FycmF5c30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5pbXBvcnQge1dvcmtiZW5jaERpYWxvZ1NlcnZpY2V9IGZyb20gJy4uLy4uL2RpYWxvZy93b3JrYmVuY2gtZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHtNaWNyb2Zyb250ZW5kRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuL21pY3JvZnJvbnRlbmQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQge01pY3JvZnJvbnRlbmRIb3N0RGlhbG9nQ29tcG9uZW50fSBmcm9tICcuLi9taWNyb2Zyb250ZW5kLWhvc3QtZGlhbG9nL21pY3JvZnJvbnRlbmQtaG9zdC1kaWFsb2cuY29tcG9uZW50JztcblxuLyoqXG4gKiBIYW5kbGVzIGRpYWxvZyBpbnRlbnRzLCBpbnN0cnVjdGluZyB0aGUgd29ya2JlbmNoIHRvIG9wZW4gYSBkaWFsb2cgd2l0aCB0aGUgbWljcm9mcm9udGVuZCBkZWNsYXJlZCBvbiB0aGUgcmVzb2x2ZWQgY2FwYWJpbGl0eS5cbiAqXG4gKiBNaWNyb2Zyb250ZW5kcyBvZiB0aGUgaG9zdCBhcmUgZGlzcGxheWVkIGluIHtAbGluayBNaWNyb2Zyb250ZW5kSG9zdERpYWxvZ0NvbXBvbmVudH0sIG1pY3JvZnJvbnRlbmRzIG9mIG90aGVyIGFwcGxpY2F0aW9ucyBpbiB7QGxpbmsgTWljcm9mcm9udGVuZERpYWxvZ0NvbXBvbmVudH0uXG4gKlxuICogRGlhbG9nIGludGVudHMgYXJlIGhhbmRsZWQgaW4gdGhpcyBpbnRlcmNlcHRvciBhbmQgYXJlIG5vdCB0cmFuc3BvcnRlZCB0byB0aGUgcHJvdmlkaW5nIGFwcGxpY2F0aW9uLCBlbmFibGluZyBzdXBwb3J0IGZvciBhcHBsaWNhdGlvbnNcbiAqIHRoYXQgYXJlIG5vdCBjb25uZWN0ZWQgdG8gdGhlIFNDSU9OIFdvcmtiZW5jaC5cbiAqL1xuQEluamVjdGFibGUoLyogRE8gTk9UIFBST1ZJREUgdmlhICdwcm92aWRlZEluJyBtZXRhZGF0YSBhcyBvbmx5IHJlZ2lzdGVyZWQgaWYgbWljcm9mcm9udGVuZCBzdXBwb3J0IGlzIGVuYWJsZWQuICovKVxuZXhwb3J0IGNsYXNzIE1pY3JvZnJvbnRlbmREaWFsb2dJbnRlbnRIYW5kbGVyIGltcGxlbWVudHMgSW50ZW50SW50ZXJjZXB0b3Ige1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RpYWxvZ1NlcnZpY2U6IFdvcmtiZW5jaERpYWxvZ1NlcnZpY2UsIHByaXZhdGUgX2xvZ2dlcjogTG9nZ2VyKSB7XG4gIH1cblxuICAvKipcbiAgICogRGlhbG9nIGludGVudHMgYXJlIGhhbmRsZWQgaW4gdGhpcyBpbnRlcmNlcHRvciBhbmQgdGhlbiBzd2FsbG93ZWQuXG4gICAqL1xuICBwdWJsaWMgaW50ZXJjZXB0KGludGVudE1lc3NhZ2U6IEludGVudE1lc3NhZ2UsIG5leHQ6IEhhbmRsZXI8SW50ZW50TWVzc2FnZT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoaW50ZW50TWVzc2FnZS5pbnRlbnQudHlwZSA9PT0gV29ya2JlbmNoQ2FwYWJpbGl0aWVzLkRpYWxvZykge1xuICAgICAgLy8gRG8gbm90IGJsb2NrIHRoZSBjYWxsIHVudGlsIHRoZSBkaWFsb2cgaXMgY2xvc2VkLlxuICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgY2FsbGVyIG1heSByZWNlaXZlIGEgdGltZW91dCBlcnJvciBpZiBub3QgY2xvc2luZyB0aGUgZGlhbG9nIGJlZm9yZSBkZWxpdmVyeSBjb25maXJtYXRpb24gZXhwaXJlcy5cbiAgICAgIHRoaXMuY29uc3VtZURpYWxvZ0ludGVudChpbnRlbnRNZXNzYWdlKS5jYXRjaChlcnJvciA9PiB0aGlzLl9sb2dnZXIuZXJyb3IoJ1tEaWFsb2dPcGVuRXJyb3JdIEZhaWxlZCB0byBvcGVuIGRpYWxvZy4nLCBMb2dnZXJOYW1lcy5NSUNST0ZST05URU5ELCBpbnRlbnRNZXNzYWdlLCBlcnJvcikpO1xuICAgICAgLy8gU3dhbGxvdyB0aGUgaW50ZW50IGFuZCBkbyBub3QgcGFzcyBpdCB0byBvdGhlciBpbnRlcmNlcHRvcnMgb3IgaGFuZGxlcnMgZG93biB0aGUgY2hhaW4uXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKGludGVudE1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29uc3VtZURpYWxvZ0ludGVudChtZXNzYWdlOiBJbnRlbnRNZXNzYWdlPFdvcmtiZW5jaERpYWxvZ09wdGlvbnM+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVwbHlUbyA9IG1lc3NhZ2UuaGVhZGVycy5nZXQoTWVzc2FnZUhlYWRlcnMuUmVwbHlUbyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5vcGVuRGlhbG9nKG1lc3NhZ2UpO1xuICAgICAgLy8gVXNlICdCZWFucy5vcHQnIHRvIG5vdCBlcnJvciBpZiB0aGUgcGxhdGZvcm0gaXMgZGVzdHJveWVkLCBlLmcuLCBpbiB0ZXN0cyBpZiBub3QgY2xvc2luZyBkaWFsb2dzLlxuICAgICAgYXdhaXQgQmVhbnMub3B0KE1lc3NhZ2VDbGllbnQpPy5wdWJsaXNoKHJlcGx5VG8sIHJlc3VsdCwge2hlYWRlcnM6IG5ldyBNYXAoKS5zZXQoTWVzc2FnZUhlYWRlcnMuU3RhdHVzLCBSZXNwb25zZVN0YXR1c0NvZGVzLlRFUk1JTkFMKX0pO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFVzZSAnQmVhbnMub3B0JyB0byBub3QgZXJyb3IgaWYgdGhlIHBsYXRmb3JtIGlzIGRlc3Ryb3llZCwgZS5nLiwgaW4gdGVzdHMgaWYgbm90IGNsb3NpbmcgZGlhbG9ncy5cbiAgICAgIGF3YWl0IEJlYW5zLm9wdChNZXNzYWdlQ2xpZW50KT8ucHVibGlzaChyZXBseVRvLCBzdHJpbmdpZnlFcnJvcihlcnJvciksIHtoZWFkZXJzOiBuZXcgTWFwKCkuc2V0KE1lc3NhZ2VIZWFkZXJzLlN0YXR1cywgUmVzcG9uc2VTdGF0dXNDb2Rlcy5FUlJPUil9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIG1pY3JvZnJvbnRlbmQgZGVjbGFyZWQgYnkgdGhlIHJlc29sdmVkIGNhcGFiaWxpdHkgaW4gYSBkaWFsb2cuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIG9wZW5EaWFsb2cobWVzc2FnZTogSW50ZW50TWVzc2FnZTxXb3JrYmVuY2hEaWFsb2dPcHRpb25zPik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBtZXNzYWdlLmJvZHkgPz8ge307XG4gICAgY29uc3QgY2FwYWJpbGl0eSA9IG1lc3NhZ2UuY2FwYWJpbGl0eSBhcyBXb3JrYmVuY2hEaWFsb2dDYXBhYmlsaXR5O1xuICAgIGNvbnN0IHBhcmFtcyA9IG1lc3NhZ2UuaW50ZW50LnBhcmFtcyA/PyBuZXcgTWFwKCk7XG4gICAgY29uc3QgaXNIb3N0UHJvdmlkZXIgPSBjYXBhYmlsaXR5Lm1ldGFkYXRhIS5hcHBTeW1ib2xpY05hbWUgPT09IEJlYW5zLmdldChBUFBfSURFTlRJVFkpO1xuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiAnSGFuZGxpbmcgbWljcm9mcm9udGVuZCBkaWFsb2cgaW50ZW50JywgTG9nZ2VyTmFtZXMuTUlDUk9GUk9OVEVORCwgb3B0aW9ucyk7XG5cbiAgICByZXR1cm4gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKGlzSG9zdFByb3ZpZGVyID8gTWljcm9mcm9udGVuZEhvc3REaWFsb2dDb21wb25lbnQgOiBNaWNyb2Zyb250ZW5kRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBpbnB1dHM6IHtjYXBhYmlsaXR5LCBwYXJhbXN9LFxuICAgICAgbW9kYWxpdHk6IG9wdGlvbnMubW9kYWxpdHksXG4gICAgICBjb250ZXh0OiBvcHRpb25zLmNvbnRleHQsXG4gICAgICBhbmltYXRlOiBvcHRpb25zLmFuaW1hdGUsXG4gICAgICBjc3NDbGFzczogQXJyYXlzLmNvZXJjZShjYXBhYmlsaXR5LnByb3BlcnRpZXM/LmNzc0NsYXNzKS5jb25jYXQoQXJyYXlzLmNvZXJjZShvcHRpb25zLmNzc0NsYXNzKSksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,140 +0,0 @@
1
- /*
2
- * Copyright (c) 2018-2024 Swiss Federal Railways
3
- *
4
- * This program and the accompanying materials are made
5
- * available under the terms of the Eclipse Public License 2.0
6
- * which is available at https://www.eclipse.org/legal/epl-2.0/
7
- *
8
- * SPDX-License-Identifier: EPL-2.0
9
- */
10
- import { Component, CUSTOM_ELEMENTS_SCHEMA, HostBinding, inject, Input, runInInjectionContext, ViewChild } from '@angular/core';
11
- import { MicrofrontendPlatformConfig } from '@scion/microfrontend-platform';
12
- import { LoggerNames } from '../../logging';
13
- import { ɵDIALOG_CONTEXT, ɵWorkbenchCommands, ɵWorkbenchDialogMessageHeaders } from '@scion/workbench-client';
14
- import { NgClass, NgComponentOutlet } from '@angular/common';
15
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
16
- import { MicrofrontendSplashComponent } from '../microfrontend-splash/microfrontend-splash.component';
17
- import { Microfrontends } from '../common/microfrontend.util';
18
- import * as i0 from "@angular/core";
19
- import * as i1 from "../../dialog/\u0275workbench-dialog";
20
- import * as i2 from "@scion/microfrontend-platform";
21
- import * as i3 from "../../layout/workbench-layout.service";
22
- import * as i4 from "../../logging";
23
- /**
24
- * Displays the microfrontend of a given {@link WorkbenchDialogCapability}.
25
- *
26
- * This component is designed to be displayed in a workbench dialog.
27
- */
28
- export class MicrofrontendDialogComponent {
29
- constructor(dialog, _outletRouter, _manifestService, _messageClient, _workbenchLayoutService, _injector, _logger) {
30
- this.dialog = dialog;
31
- this._outletRouter = _outletRouter;
32
- this._manifestService = _manifestService;
33
- this._messageClient = _messageClient;
34
- this._workbenchLayoutService = _workbenchLayoutService;
35
- this._injector = _injector;
36
- this._logger = _logger;
37
- /**
38
- * Indicates if a workbench drag operation is in progress, such as when dragging a view or moving a sash.
39
- */
40
- this.isWorkbenchDrag = false;
41
- this._logger.debug(() => 'Constructing MicrofrontendDialogComponent.', LoggerNames.MICROFRONTEND);
42
- this.splash = inject(MicrofrontendPlatformConfig).splash ?? MicrofrontendSplashComponent;
43
- this.installDialogTitleListener();
44
- this.installDialogCloseListener();
45
- this.installWorkbenchDragDetector();
46
- }
47
- ngOnInit() {
48
- this.setDialogProperties();
49
- this.propagateDialogContext();
50
- this.propagateWorkbenchTheme();
51
- this.navigate();
52
- }
53
- navigate() {
54
- const application = this._manifestService.getApplication(this.capability.metadata.appSymbolicName);
55
- this._logger.debug(() => `Loading microfrontend into workbench dialog [app=${this.capability.metadata.appSymbolicName}, baseUrl=${application.baseUrl}, path=${this.capability.properties.path}].`, LoggerNames.MICROFRONTEND, this.params, this.capability);
56
- this._outletRouter.navigate(this.capability.properties.path, {
57
- outlet: this.dialog.id,
58
- relativeTo: application.baseUrl,
59
- params: this.params,
60
- pushStateToSessionHistoryStack: false,
61
- showSplash: this.capability.properties.showSplash,
62
- }).then();
63
- }
64
- /**
65
- * Make the dialog context available to embedded content.
66
- */
67
- propagateDialogContext() {
68
- const context = {
69
- dialogId: this.dialog.id,
70
- capability: this.capability,
71
- params: this.params,
72
- };
73
- this.routerOutletElement.nativeElement.setContextValue(ɵDIALOG_CONTEXT, context);
74
- }
75
- setDialogProperties() {
76
- this.dialog.size.width = this.capability.properties.size.width;
77
- this.dialog.size.height = this.capability.properties.size.height;
78
- this.dialog.size.minWidth = this.capability.properties.size.minWidth;
79
- this.dialog.size.maxWidth = this.capability.properties.size.maxWidth;
80
- this.dialog.size.minHeight = this.capability.properties.size.minHeight;
81
- this.dialog.size.maxHeight = this.capability.properties.size.maxHeight;
82
- this.dialog.title = Microfrontends.substituteNamedParameters(this.capability.properties.title, this.params);
83
- this.dialog.closable = this.capability.properties.closable ?? true;
84
- this.dialog.resizable = this.capability.properties.resizable ?? true;
85
- this.dialog.padding = this.capability.properties.padding ?? false;
86
- }
87
- propagateWorkbenchTheme() {
88
- runInInjectionContext(this._injector, () => Microfrontends.propagateTheme(this.routerOutletElement.nativeElement));
89
- }
90
- installDialogCloseListener() {
91
- this._messageClient.observe$(ɵWorkbenchCommands.dialogCloseTopic(this.dialog.id))
92
- .pipe(takeUntilDestroyed())
93
- .subscribe(closeRequest => {
94
- this.dialog.close(closeRequest.headers.get(ɵWorkbenchDialogMessageHeaders.CLOSE_WITH_ERROR) ? new Error(closeRequest.body) : closeRequest.body);
95
- });
96
- }
97
- installDialogTitleListener() {
98
- this._messageClient.observe$(ɵWorkbenchCommands.dialogTitleTopic(this.dialog.id))
99
- .pipe(takeUntilDestroyed())
100
- .subscribe(message => {
101
- this.dialog.title = message.body;
102
- });
103
- }
104
- /**
105
- * Sets the {@link isWorkbenchDrag} property when a workbench drag operation is detected,
106
- * such as when dragging a view or moving a sash.
107
- */
108
- installWorkbenchDragDetector() {
109
- this._workbenchLayoutService.dragging$
110
- .pipe(takeUntilDestroyed())
111
- .subscribe(event => {
112
- this.isWorkbenchDrag = (event === 'start');
113
- });
114
- }
115
- ngOnDestroy() {
116
- this._outletRouter.navigate(null, { outlet: this.dialog.id }).then(); // Clear the outlet.
117
- }
118
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogComponent, deps: [{ token: i1.ɵWorkbenchDialog }, { token: i2.OutletRouter }, { token: i2.ManifestService }, { token: i2.MessageClient }, { token: i3.WorkbenchLayoutService }, { token: i0.Injector }, { token: i4.Logger }], target: i0.ɵɵFactoryTarget.Component }); }
119
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: MicrofrontendDialogComponent, isStandalone: true, selector: "wb-microfrontend-dialog", inputs: { capability: "capability", params: "params" }, host: { properties: { "class.workbench-drag": "this.isWorkbenchDrag" } }, viewQueries: [{ propertyName: "routerOutletElement", first: true, predicate: ["router_outlet"], descendants: true, static: true }], ngImport: i0, template: "<sci-router-outlet #router_outlet\n [name]=\"dialog.id\"\n [attr.data-capabilityid]=\"capability.metadata!.id\"\n [attr.data-app]=\"capability.metadata!.appSymbolicName\"\n keystrokes=\"keydown.escape\">\n <ng-container *ngComponentOutlet=\"splash\"/>\n</sci-router-outlet>\n", styles: [":host{display:grid}:host.workbench-drag>sci-router-outlet{pointer-events:none}:host>sci-router-outlet::part(splash){display:grid}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }] }); }
120
- }
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendDialogComponent, decorators: [{
122
- type: Component,
123
- args: [{ selector: 'wb-microfrontend-dialog', standalone: true, imports: [
124
- NgClass,
125
- NgComponentOutlet,
126
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<sci-router-outlet #router_outlet\n [name]=\"dialog.id\"\n [attr.data-capabilityid]=\"capability.metadata!.id\"\n [attr.data-app]=\"capability.metadata!.appSymbolicName\"\n keystrokes=\"keydown.escape\">\n <ng-container *ngComponentOutlet=\"splash\"/>\n</sci-router-outlet>\n", styles: [":host{display:grid}:host.workbench-drag>sci-router-outlet{pointer-events:none}:host>sci-router-outlet::part(splash){display:grid}\n"] }]
127
- }], ctorParameters: () => [{ type: i1.ɵWorkbenchDialog }, { type: i2.OutletRouter }, { type: i2.ManifestService }, { type: i2.MessageClient }, { type: i3.WorkbenchLayoutService }, { type: i0.Injector }, { type: i4.Logger }], propDecorators: { capability: [{
128
- type: Input,
129
- args: [{ required: true }]
130
- }], params: [{
131
- type: Input,
132
- args: [{ required: true }]
133
- }], isWorkbenchDrag: [{
134
- type: HostBinding,
135
- args: ['class.workbench-drag']
136
- }], routerOutletElement: [{
137
- type: ViewChild,
138
- args: ['router_outlet', { static: true }]
139
- }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9mcm9udGVuZC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvbWljcm9mcm9udGVuZC1wbGF0Zm9ybS9taWNyb2Zyb250ZW5kLWRpYWxvZy9taWNyb2Zyb250ZW5kLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9taWNyb2Zyb250ZW5kLXBsYXRmb3JtL21pY3JvZnJvbnRlbmQtZGlhbG9nL21pY3JvZnJvbnRlbmQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBYyxXQUFXLEVBQUUsTUFBTSxFQUFZLEtBQUssRUFBcUIscUJBQXFCLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZLLE9BQU8sRUFBaUMsMkJBQTJCLEVBQXVDLE1BQU0sK0JBQStCLENBQUM7QUFDaEosT0FBTyxFQUFTLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQTRCLGVBQWUsRUFBa0Isa0JBQWtCLEVBQUUsOEJBQThCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2SixPQUFPLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFHOUQsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFFcEcsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7QUFFNUQ7Ozs7R0FJRztBQVlILE1BQU0sT0FBTyw0QkFBNEI7SUFzQnZDLFlBQXNCLE1B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QUFhLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxvQkFBb0I7SUFDMUYsQ0FBQzs4R0FuSFUsNEJBQTRCO2tHQUE1Qiw0QkFBNEIseVZDdEN6Qyw4VkFPQSw2TEQyQkksaUJBQWlCOzsyRkFJUiw0QkFBNEI7a0JBWHhDLFNBQVM7K0JBQ0UseUJBQXlCLGNBR3ZCLElBQUksV0FDUDt3QkFDUCxPQUFPO3dCQUNQLGlCQUFpQjtxQkFDbEIsV0FDUSxDQUFDLHNCQUFzQixDQUFDOzJQQUsxQixVQUFVO3NCQURoQixLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztnQkFJaEIsTUFBTTtzQkFEWixLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztnQkFPaEIsZUFBZTtzQkFEckIsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBSTVCLG1CQUFtQjtzQkFEekIsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIGluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYW5pZmVzdFNlcnZpY2UsIE1lc3NhZ2VDbGllbnQsIE1pY3JvZnJvbnRlbmRQbGF0Zm9ybUNvbmZpZywgT3V0bGV0Um91dGVyLCBTY2lSb3V0ZXJPdXRsZXRFbGVtZW50fSBmcm9tICdAc2Npb24vbWljcm9mcm9udGVuZC1wbGF0Zm9ybSc7XG5pbXBvcnQge0xvZ2dlciwgTG9nZ2VyTmFtZXN9IGZyb20gJy4uLy4uL2xvZ2dpbmcnO1xuaW1wb3J0IHtXb3JrYmVuY2hEaWFsb2dDYXBhYmlsaXR5LCDJtURJQUxPR19DT05URVhULCDJtURpYWxvZ0NvbnRleHQsIMm1V29ya2JlbmNoQ29tbWFuZHMsIMm1V29ya2JlbmNoRGlhbG9nTWVzc2FnZUhlYWRlcnN9IGZyb20gJ0BzY2lvbi93b3JrYmVuY2gtY2xpZW50JztcbmltcG9ydCB7TmdDbGFzcywgTmdDb21wb25lbnRPdXRsZXR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRTZXJ2aWNlfSBmcm9tICcuLi8uLi9sYXlvdXQvd29ya2JlbmNoLWxheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7Q29tcG9uZW50VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge01pY3JvZnJvbnRlbmRTcGxhc2hDb21wb25lbnR9IGZyb20gJy4uL21pY3JvZnJvbnRlbmQtc3BsYXNoL21pY3JvZnJvbnRlbmQtc3BsYXNoLmNvbXBvbmVudCc7XG5pbXBvcnQge8m1V29ya2JlbmNoRGlhbG9nfSBmcm9tICcuLi8uLi9kaWFsb2cvybV3b3JrYmVuY2gtZGlhbG9nJztcbmltcG9ydCB7TWljcm9mcm9udGVuZHN9IGZyb20gJy4uL2NvbW1vbi9taWNyb2Zyb250ZW5kLnV0aWwnO1xuXG4vKipcbiAqIERpc3BsYXlzIHRoZSBtaWNyb2Zyb250ZW5kIG9mIGEgZ2l2ZW4ge0BsaW5rIFdvcmtiZW5jaERpYWxvZ0NhcGFiaWxpdHl9LlxuICpcbiAqIFRoaXMgY29tcG9uZW50IGlzIGRlc2lnbmVkIHRvIGJlIGRpc3BsYXllZCBpbiBhIHdvcmtiZW5jaCBkaWFsb2cuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3diLW1pY3JvZnJvbnRlbmQtZGlhbG9nJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWljcm9mcm9udGVuZC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21pY3JvZnJvbnRlbmQtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsXG4gICAgTmdDb21wb25lbnRPdXRsZXQsXG4gIF0sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSwgLy8gcmVxdWlyZWQgYmVjYXVzZSA8c2NpLXJvdXRlci1vdXRsZXQ+IGlzIGEgY3VzdG9tIGVsZW1lbnRcbn0pXG5leHBvcnQgY2xhc3MgTWljcm9mcm9udGVuZERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSlcbiAgcHVibGljIGNhcGFiaWxpdHkhOiBXb3JrYmVuY2hEaWFsb2dDYXBhYmlsaXR5O1xuXG4gIEBJbnB1dCh7cmVxdWlyZWQ6IHRydWV9KVxuICBwdWJsaWMgcGFyYW1zITogTWFwPHN0cmluZywgdW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiBhIHdvcmtiZW5jaCBkcmFnIG9wZXJhdGlvbiBpcyBpbiBwcm9ncmVzcywgc3VjaCBhcyB3aGVuIGRyYWdnaW5nIGEgdmlldyBvciBtb3ZpbmcgYSBzYXNoLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy53b3JrYmVuY2gtZHJhZycpXG4gIHB1YmxpYyBpc1dvcmtiZW5jaERyYWcgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdyb3V0ZXJfb3V0bGV0Jywge3N0YXRpYzogdHJ1ZX0pXG4gIHB1YmxpYyByb3V0ZXJPdXRsZXRFbGVtZW50ITogRWxlbWVudFJlZjxTY2lSb3V0ZXJPdXRsZXRFbGVtZW50PjtcblxuICAvKipcbiAgICogU3BsYXNoIHRvIGRpc3BsYXkgdW50aWwgdGhlIG1pY3JvZnJvbnRlbmQgc2lnbmFscyByZWFkaW5lc3MuXG4gICAqL1xuICBwcm90ZWN0ZWQgc3BsYXNoOiBDb21wb25lbnRUeXBlPHVua25vd24+O1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBkaWFsb2c6IMm1V29ya2JlbmNoRGlhbG9nLFxuICAgICAgICAgICAgICBwcml2YXRlIF9vdXRsZXRSb3V0ZXI6IE91dGxldFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfbWFuaWZlc3RTZXJ2aWNlOiBNYW5pZmVzdFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX21lc3NhZ2VDbGllbnQ6IE1lc3NhZ2VDbGllbnQsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3dvcmtiZW5jaExheW91dFNlcnZpY2U6IFdvcmtiZW5jaExheW91dFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9nZ2VyOiBMb2dnZXIpIHtcbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoKCkgPT4gJ0NvbnN0cnVjdGluZyBNaWNyb2Zyb250ZW5kRGlhbG9nQ29tcG9uZW50LicsIExvZ2dlck5hbWVzLk1JQ1JPRlJPTlRFTkQpO1xuICAgIHRoaXMuc3BsYXNoID0gaW5qZWN0KE1pY3JvZnJvbnRlbmRQbGF0Zm9ybUNvbmZpZykuc3BsYXNoID8/IE1pY3JvZnJvbnRlbmRTcGxhc2hDb21wb25lbnQ7XG4gICAgdGhpcy5pbnN0YWxsRGlhbG9nVGl0bGVMaXN0ZW5lcigpO1xuICAgIHRoaXMuaW5zdGFsbERpYWxvZ0Nsb3NlTGlzdGVuZXIoKTtcbiAgICB0aGlzLmluc3RhbGxXb3JrYmVuY2hEcmFnRGV0ZWN0b3IoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldERpYWxvZ1Byb3BlcnRpZXMoKTtcbiAgICB0aGlzLnByb3BhZ2F0ZURpYWxvZ0NvbnRleHQoKTtcbiAgICB0aGlzLnByb3BhZ2F0ZVdvcmtiZW5jaFRoZW1lKCk7XG4gICAgdGhpcy5uYXZpZ2F0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBhcHBsaWNhdGlvbiA9IHRoaXMuX21hbmlmZXN0U2VydmljZS5nZXRBcHBsaWNhdGlvbih0aGlzLmNhcGFiaWxpdHkubWV0YWRhdGEhLmFwcFN5bWJvbGljTmFtZSk7XG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+IGBMb2FkaW5nIG1pY3JvZnJvbnRlbmQgaW50byB3b3JrYmVuY2ggZGlhbG9nIFthcHA9JHt0aGlzLmNhcGFiaWxpdHkubWV0YWRhdGEhLmFwcFN5bWJvbGljTmFtZX0sIGJhc2VVcmw9JHthcHBsaWNhdGlvbi5iYXNlVXJsfSwgcGF0aD0ke3RoaXMuY2FwYWJpbGl0eS5wcm9wZXJ0aWVzLnBhdGh9XS5gLCBMb2dnZXJOYW1lcy5NSUNST0ZST05URU5ELCB0aGlzLnBhcmFtcywgdGhpcy5jYXBhYmlsaXR5KTtcbiAgICB0aGlzLl9vdXRsZXRSb3V0ZXIubmF2aWdhdGUodGhpcy5jYXBhYmlsaXR5LnByb3BlcnRpZXMucGF0aCwge1xuICAgICAgb3V0bGV0OiB0aGlzLmRpYWxvZy5pZCxcbiAgICAgIHJlbGF0aXZlVG86IGFwcGxpY2F0aW9uLmJhc2VVcmwsXG4gICAgICBwYXJhbXM6IHRoaXMucGFyYW1zLFxuICAgICAgcHVzaFN0YXRlVG9TZXNzaW9uSGlzdG9yeVN0YWNrOiBmYWxzZSxcbiAgICAgIHNob3dTcGxhc2g6IHRoaXMuY2FwYWJpbGl0eS5wcm9wZXJ0aWVzLnNob3dTcGxhc2gsXG4gICAgfSkudGhlbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgdGhlIGRpYWxvZyBjb250ZXh0IGF2YWlsYWJsZSB0byBlbWJlZGRlZCBjb250ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBwcm9wYWdhdGVEaWFsb2dDb250ZXh0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRleHQ6IMm1RGlhbG9nQ29udGV4dCA9IHtcbiAgICAgIGRpYWxvZ0lkOiB0aGlzLmRpYWxvZy5pZCxcbiAgICAgIGNhcGFiaWxpdHk6IHRoaXMuY2FwYWJpbGl0eSxcbiAgICAgIHBhcmFtczogdGhpcy5wYXJhbXMsXG4gICAgfTtcbiAgICB0aGlzLnJvdXRlck91dGxldEVsZW1lbnQubmF0aXZlRWxlbWVudC5zZXRDb250ZXh0VmFsdWUoybVESUFMT0dfQ09OVEVYVCwgY29udGV4dCk7XG4gIH1cblxuICBwcml2YXRlIHNldERpYWxvZ1Byb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2cuc2l6ZS53aWR0aCA9IHRoaXMuY2FwYWJpbGl0eS5wcm9wZXJ0aWVzLnNpemUhLndpZHRoO1xuICAgIHRoaXMuZGlhbG9nLnNpemUuaGVpZ2h0ID0gdGhpcy5jYXBhYmlsaXR5LnByb3BlcnRpZXMuc2l6ZSEuaGVpZ2h0O1xuICAgIHRoaXMuZGlhbG9nLnNpemUubWluV2lkdGggPSB0aGlzLmNhcGFiaWxpdHkucHJvcGVydGllcy5zaXplIS5taW5XaWR0aDtcbiAgICB0aGlzLmRpYWxvZy5zaXplLm1heFdpZHRoID0gdGhpcy5jYXBhYmlsaXR5LnByb3BlcnRpZXMuc2l6ZSEubWF4V2lkdGg7XG4gICAgdGhpcy5kaWFsb2cuc2l6ZS5taW5IZWlnaHQgPSB0aGlzLmNhcGFiaWxpdHkucHJvcGVydGllcy5zaXplIS5taW5IZWlnaHQ7XG4gICAgdGhpcy5kaWFsb2cuc2l6ZS5tYXhIZWlnaHQgPSB0aGlzLmNhcGFiaWxpdHkucHJvcGVydGllcy5zaXplIS5tYXhIZWlnaHQ7XG5cbiAgICB0aGlzLmRpYWxvZy50aXRsZSA9IE1pY3JvZnJvbnRlbmRzLnN1YnN0aXR1dGVOYW1lZFBhcmFtZXRlcnModGhpcy5jYXBhYmlsaXR5LnByb3BlcnRpZXMudGl0bGUsIHRoaXMucGFyYW1zKTtcbiAgICB0aGlzLmRpYWxvZy5jbG9zYWJsZSA9IHRoaXMuY2FwYWJpbGl0eS5wcm9wZXJ0aWVzLmNsb3NhYmxlID8/IHRydWU7XG4gICAgdGhpcy5kaWFsb2cucmVzaXphYmxlID0gdGhpcy5jYXBhYmlsaXR5LnByb3BlcnRpZXMucmVzaXphYmxlID8/IHRydWU7XG4gICAgdGhpcy5kaWFsb2cucGFkZGluZyA9IHRoaXMuY2FwYWJpbGl0eS5wcm9wZXJ0aWVzLnBhZGRpbmcgPz8gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHByb3BhZ2F0ZVdvcmtiZW5jaFRoZW1lKCk6IHZvaWQge1xuICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLl9pbmplY3RvciwgKCkgPT4gTWljcm9mcm9udGVuZHMucHJvcGFnYXRlVGhlbWUodGhpcy5yb3V0ZXJPdXRsZXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5zdGFsbERpYWxvZ0Nsb3NlTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVzc2FnZUNsaWVudC5vYnNlcnZlJDx1bmtub3duPijJtVdvcmtiZW5jaENvbW1hbmRzLmRpYWxvZ0Nsb3NlVG9waWModGhpcy5kaWFsb2cuaWQpKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKGNsb3NlUmVxdWVzdCA9PiB7XG4gICAgICAgIHRoaXMuZGlhbG9nLmNsb3NlKGNsb3NlUmVxdWVzdC5oZWFkZXJzLmdldCjJtVdvcmtiZW5jaERpYWxvZ01lc3NhZ2VIZWFkZXJzLkNMT1NFX1dJVEhfRVJST1IpID8gbmV3IEVycm9yKGNsb3NlUmVxdWVzdC5ib2R5IGFzIHN0cmluZykgOiBjbG9zZVJlcXVlc3QuYm9keSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5zdGFsbERpYWxvZ1RpdGxlTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVzc2FnZUNsaWVudC5vYnNlcnZlJDxzdHJpbmc+KMm1V29ya2JlbmNoQ29tbWFuZHMuZGlhbG9nVGl0bGVUb3BpYyh0aGlzLmRpYWxvZy5pZCkpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUobWVzc2FnZSA9PiB7XG4gICAgICAgIHRoaXMuZGlhbG9nLnRpdGxlID0gbWVzc2FnZS5ib2R5O1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUge0BsaW5rIGlzV29ya2JlbmNoRHJhZ30gcHJvcGVydHkgd2hlbiBhIHdvcmtiZW5jaCBkcmFnIG9wZXJhdGlvbiBpcyBkZXRlY3RlZCxcbiAgICogc3VjaCBhcyB3aGVuIGRyYWdnaW5nIGEgdmlldyBvciBtb3ZpbmcgYSBzYXNoLlxuICAgKi9cbiAgcHJpdmF0ZSBpbnN0YWxsV29ya2JlbmNoRHJhZ0RldGVjdG9yKCk6IHZvaWQge1xuICAgIHRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2UuZHJhZ2dpbmckXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICB0aGlzLmlzV29ya2JlbmNoRHJhZyA9IChldmVudCA9PT0gJ3N0YXJ0Jyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9vdXRsZXRSb3V0ZXIubmF2aWdhdGUobnVsbCwge291dGxldDogdGhpcy5kaWFsb2cuaWR9KS50aGVuKCk7IC8vIENsZWFyIHRoZSBvdXRsZXQuXG4gIH1cbn1cbiIsIjxzY2ktcm91dGVyLW91dGxldCAjcm91dGVyX291dGxldFxuICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImRpYWxvZy5pZFwiXG4gICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXBhYmlsaXR5aWRdPVwiY2FwYWJpbGl0eS5tZXRhZGF0YSEuaWRcIlxuICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXBwXT1cImNhcGFiaWxpdHkubWV0YWRhdGEhLmFwcFN5bWJvbGljTmFtZVwiXG4gICAgICAgICAgICAgICAgICAga2V5c3Ryb2tlcz1cImtleWRvd24uZXNjYXBlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwic3BsYXNoXCIvPlxuPC9zY2ktcm91dGVyLW91dGxldD5cbiJdfQ==
@@ -1,133 +0,0 @@
1
- /*
2
- * Copyright (c) 2018-2024 Swiss Federal Railways
3
- *
4
- * This program and the accompanying materials are made
5
- * available under the terms of the Eclipse Public License 2.0
6
- * which is available at https://www.eclipse.org/legal/epl-2.0/
7
- *
8
- * SPDX-License-Identifier: EPL-2.0
9
- */
10
- import { Component, DestroyRef, inject, Injector, Input, runInInjectionContext } from '@angular/core';
11
- import { WorkbenchDialog as WorkbenchClientDialog } from '@scion/workbench-client';
12
- import { Routing } from '../../routing/routing.util';
13
- import { RouterOutlet } from '@angular/router';
14
- import { ɵWorkbenchDialog } from '../../dialog/ɵworkbench-dialog';
15
- import { WorkbenchDialog } from '../../dialog/workbench-dialog';
16
- import { NgTemplateOutlet } from '@angular/common';
17
- import { DIALOG_ID_PREFIX } from '../../workbench.constants';
18
- import { Subject } from 'rxjs';
19
- import { throwError } from '../../common/throw-error.util';
20
- import { Microfrontends } from '../common/microfrontend.util';
21
- import { ANGULAR_ROUTER_MUTEX } from '../../executor/single-task-executor';
22
- import { Observables } from '@scion/toolkit/util';
23
- import { filter, takeUntil } from 'rxjs/operators';
24
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
25
- import * as i0 from "@angular/core";
26
- import * as i1 from "../../dialog/\u0275workbench-dialog";
27
- import * as i2 from "@angular/router";
28
- /**
29
- * Navigates to the microfrontend of a given {@link WorkbenchDialogCapability} via {@link Router}.
30
- *
31
- * Unlike {@link MicrofrontendDialogComponent}, this component uses a `<router-outlet>` instead of a `<sci-router-outlet>`
32
- * to allow direct integration of the content provided by the workbench host application via the Angular router.
33
- *
34
- * This component is designed to be displayed in a workbench dialog.
35
- */
36
- export class MicrofrontendHostDialogComponent {
37
- constructor(_dialog, _injector, _router) {
38
- this._dialog = _dialog;
39
- this._injector = _injector;
40
- this._router = _router;
41
- /** Mutex to serialize Angular Router navigation requests, preventing the cancellation of previously initiated asynchronous navigations. */
42
- this._angularRouterMutex = inject(ANGULAR_ROUTER_MUTEX);
43
- this.outletName = DIALOG_ID_PREFIX.concat(this._dialog.id);
44
- }
45
- ngOnInit() {
46
- this.setDialogProperties();
47
- this.createOutletInjector();
48
- this.navigate(this.capability.properties.path, { params: this.params }).then(success => {
49
- if (!success) {
50
- this._dialog.close(Error('[DialogNavigateError] Navigation canceled, most likely by a route guard or a parallel navigation.'));
51
- }
52
- });
53
- }
54
- /**
55
- * Performs navigation in the named outlet, substituting path params if any. To clear navigation, pass `null` as the path.
56
- */
57
- navigate(path, extras) {
58
- path = Microfrontends.substituteNamedParameters(path, extras?.params);
59
- const outletCommands = (path !== null ? runInInjectionContext(this._injector, () => Routing.pathToCommands(path)) : null);
60
- const commands = [{ outlets: { [this.outletName]: outletCommands } }];
61
- return this._angularRouterMutex.submit(() => this._router.navigate(commands, { skipLocationChange: true, queryParamsHandling: 'preserve' }));
62
- }
63
- createOutletInjector() {
64
- this.outletInjector = Injector.create({
65
- parent: this._injector,
66
- providers: [provideWorkbenchClientDialogHandle(this.capability, this.params),
67
- // Prevent injecting the dialog handle in host dialog component.
68
- { provide: WorkbenchDialog, useFactory: () => throwError(`[NullInjectorError] No provider for 'WorkbenchDialog'`) },
69
- ],
70
- });
71
- }
72
- setDialogProperties() {
73
- this._dialog.size.width = this.capability.properties.size?.width;
74
- this._dialog.size.height = this.capability.properties.size?.height;
75
- this._dialog.size.minWidth = this.capability.properties.size?.minWidth;
76
- this._dialog.size.maxWidth = this.capability.properties.size?.maxWidth;
77
- this._dialog.size.minHeight = this.capability.properties.size?.minHeight;
78
- this._dialog.size.maxHeight = this.capability.properties.size?.maxHeight;
79
- this._dialog.title = Microfrontends.substituteNamedParameters(this.capability.properties.title, this.params);
80
- this._dialog.closable = this.capability.properties.closable ?? true;
81
- this._dialog.resizable = this.capability.properties.resizable ?? true;
82
- this._dialog.padding = this.capability.properties.padding ?? true;
83
- }
84
- ngOnDestroy() {
85
- this.navigate(null).then(); // Remove the outlet from the URL
86
- }
87
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendHostDialogComponent, deps: [{ token: i1.ɵWorkbenchDialog }, { token: i0.Injector }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
88
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: MicrofrontendHostDialogComponent, isStandalone: true, selector: "wb-microfrontend-host-dialog", inputs: { capability: "capability", params: "params" }, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"router_outlet; injector: outletInjector\"/>\n\n<ng-template #router_outlet>\n <router-outlet [name]=\"outletName\"/>\n</ng-template>\n", styles: [":host{display:grid}:host>router-outlet{position:absolute}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
89
- }
90
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MicrofrontendHostDialogComponent, decorators: [{
91
- type: Component,
92
- args: [{ selector: 'wb-microfrontend-host-dialog', standalone: true, imports: [
93
- RouterOutlet,
94
- NgTemplateOutlet,
95
- ], template: "<ng-container *ngTemplateOutlet=\"router_outlet; injector: outletInjector\"/>\n\n<ng-template #router_outlet>\n <router-outlet [name]=\"outletName\"/>\n</ng-template>\n", styles: [":host{display:grid}:host>router-outlet{position:absolute}\n"] }]
96
- }], ctorParameters: () => [{ type: i1.ɵWorkbenchDialog }, { type: i0.Injector }, { type: i2.Router }], propDecorators: { capability: [{
97
- type: Input,
98
- args: [{ required: true }]
99
- }], params: [{
100
- type: Input,
101
- args: [{ required: true }]
102
- }] } });
103
- /**
104
- * Provides the {WorkbenchDialog} handle to the routed component.
105
- */
106
- function provideWorkbenchClientDialogHandle(capability, params) {
107
- return {
108
- provide: WorkbenchClientDialog,
109
- useFactory: () => {
110
- const dialog = inject(ɵWorkbenchDialog);
111
- const propertyChange$ = new Subject();
112
- return new class {
113
- constructor() {
114
- this.capability = capability;
115
- this.params = params;
116
- }
117
- setTitle(title) {
118
- propertyChange$.next('title');
119
- Observables.coerce(title)
120
- .pipe(takeUntil(propertyChange$.pipe(filter(prop => prop === 'title'))), takeUntilDestroyed(dialog.injector.get(DestroyRef)))
121
- .subscribe(title => dialog.title = title);
122
- }
123
- close(result) {
124
- dialog.close(result);
125
- }
126
- signalReady() {
127
- // nothing to do since not an iframe-based microfrontend
128
- }
129
- };
130
- },
131
- };
132
- }
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9mcm9udGVuZC1ob3N0LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9taWNyb2Zyb250ZW5kLXBsYXRmb3JtL21pY3JvZnJvbnRlbmQtaG9zdC1kaWFsb2cvbWljcm9mcm9udGVuZC1ob3N0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9taWNyb2Zyb250ZW5kLXBsYXRmb3JtL21pY3JvZnJvbnRlbmQtaG9zdC1kaWFsb2cvbWljcm9mcm9udGVuZC1ob3N0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixxQkFBcUIsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDdkksT0FBTyxFQUFDLGVBQWUsSUFBSSxxQkFBcUIsRUFBNEIsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFbkQsT0FBTyxFQUFTLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQUMs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QixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQ3BEO3lCQUNBLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7Z0JBQzlDLENBQUM7Z0JBRU0sS0FBSyxDQUFDLE1BQWtCO29CQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN2QixDQUFDO2dCQUVNLFdBQVc7b0JBQ2hCLHdEQUF3RDtnQkFDMUQsQ0FBQzthQUNGLENBQUM7UUFDSixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBEZXN0cm95UmVmLCBpbmplY3QsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCwgU3RhdGljUHJvdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hEaWFsb2cgYXMgV29ya2JlbmNoQ2xpZW50RGlhbG9nLCBXb3JrYmVuY2hEaWFsb2dDYXBhYmlsaXR5fSBmcm9tICdAc2Npb24vd29ya2JlbmNoLWNsaWVudCc7XG5pbXBvcnQge1JvdXRpbmd9IGZyb20gJy4uLy4uL3JvdXRpbmcvcm91dGluZy51dGlsJztcbmltcG9ydCB7Q29tbWFuZHN9IGZyb20gJy4uLy4uL3JvdXRpbmcvcm91dGluZy5tb2RlbCc7XG5pbXBvcnQge1JvdXRlciwgUm91dGVyT3V0bGV0fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHvJtVdvcmtiZW5jaERpYWxvZ30gZnJvbSAnLi4vLi4vZGlhbG9nL8m1d29ya2JlbmNoLWRpYWxvZyc7XG5pbXBvcnQge1dvcmtiZW5jaERpYWxvZ30gZnJvbSAnLi4vLi4vZGlhbG9nL3dvcmtiZW5jaC1kaWFsb2cnO1xuaW1wb3J0IHtOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtESUFMT0dfSURfUFJFRklYfSBmcm9tICcuLi8uLi93b3JrYmVuY2guY29uc3RhbnRzJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rocm93RXJyb3J9IGZyb20gJy4uLy4uL2NvbW1vbi90aHJvdy1lcnJvci51dGlsJztcbmltcG9ydCB7TWljcm9mcm9udGVuZHN9IGZyb20gJy4uL2NvbW1vbi9taWNyb2Zyb250ZW5kLnV0aWwnO1xuaW1wb3J0IHtBTkdVTEFSX1JPVVRFUl9NVVRFWH0gZnJvbSAnLi4vLi4vZXhlY3V0b3Ivc2luZ2xlLXRhc2stZXhlY3V0b3InO1xuaW1wb3J0IHtPYnNlcnZhYmxlc30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5pbXBvcnQge2ZpbHRlciwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG4vKipcbiAqIE5hdmlnYXRlcyB0byB0aGUgbWljcm9mcm9udGVuZCBvZiBhIGdpdmVuIHtAbGluayBXb3JrYmVuY2hEaWFsb2dDYXBhYmlsaXR5fSB2aWEge0BsaW5rIFJvdXRlcn0uXG4gKlxuICogVW5saWtlIHtAbGluayBNaWNyb2Zyb250ZW5kRGlhbG9nQ29tcG9uZW50fSwgdGhpcyBjb21wb25lbnQgdXNlcyBhIGA8cm91dGVyLW91dGxldD5gIGluc3RlYWQgb2YgYSBgPHNjaS1yb3V0ZXItb3V0bGV0PmBcbiAqIHRvIGFsbG93IGRpcmVjdCBpbnRlZ3JhdGlvbiBvZiB0aGUgY29udGVudCBwcm92aWRlZCBieSB0aGUgd29ya2JlbmNoIGhvc3QgYXBwbGljYXRpb24gdmlhIHRoZSBBbmd1bGFyIHJvdXRlci5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBkZXNpZ25lZCB0byBiZSBkaXNwbGF5ZWQgaW4gYSB3b3JrYmVuY2ggZGlhbG9nLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3Yi1taWNyb2Zyb250ZW5kLWhvc3QtZGlhbG9nJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWljcm9mcm9udGVuZC1ob3N0LWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vbWljcm9mcm9udGVuZC1ob3N0LWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSb3V0ZXJPdXRsZXQsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWljcm9mcm9udGVuZEhvc3REaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG5cbiAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pXG4gIHB1YmxpYyBjYXBhYmlsaXR5ITogV29ya2JlbmNoRGlhbG9nQ2FwYWJpbGl0eTtcblxuICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSlcbiAgcHVibGljIHBhcmFtcyE6IE1hcDxzdHJpbmcsIHVua25vd24+O1xuXG4gIHByb3RlY3RlZCBvdXRsZXROYW1lOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBvdXRsZXRJbmplY3RvciE6IEluamVjdG9yO1xuXG4gIC8qKiBNdXRleCB0byBzZXJpYWxpemUgQW5ndWxhciBSb3V0ZXIgbmF2aWdhdGlvbiByZXF1ZXN0cywgcHJldmVudGluZyB0aGUgY2FuY2VsbGF0aW9uIG9mIHByZXZpb3VzbHkgaW5pdGlhdGVkIGFzeW5jaHJvbm91cyBuYXZpZ2F0aW9ucy4gKi9cbiAgcHJpdmF0ZSBfYW5ndWxhclJvdXRlck11dGV4ID0gaW5qZWN0KEFOR1VMQVJfUk9VVEVSX01VVEVYKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kaWFsb2c6IMm1V29ya2JlbmNoRGlhbG9nLFxuICAgICAgICAgICAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyKSB7XG4gICAgdGhpcy5vdXRsZXROYW1lID0gRElBTE9HX0lEX1BSRUZJWC5jb25jYXQodGhpcy5fZGlhbG9nLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldERpYWxvZ1Byb3BlcnRpZXMoKTtcbiAgICB0aGlzLmNyZWF0ZU91dGxldEluamVjdG9yKCk7XG4gICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLmNhcGFiaWxpdHkucHJvcGVydGllcy5wYXRoLCB7cGFyYW1zOiB0aGlzLnBhcmFtc30pLnRoZW4oc3VjY2VzcyA9PiB7XG4gICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgdGhpcy5fZGlhbG9nLmNsb3NlKEVycm9yKCdbRGlhbG9nTmF2aWdhdGVFcnJvcl0gTmF2aWdhdGlvbiBjYW5jZWxlZCwgbW9zdCBsaWtlbHkgYnkgYSByb3V0ZSBndWFyZCBvciBhIHBhcmFsbGVsIG5hdmlnYXRpb24uJykpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIG5hdmlnYXRpb24gaW4gdGhlIG5hbWVkIG91dGxldCwgc3Vic3RpdHV0aW5nIHBhdGggcGFyYW1zIGlmIGFueS4gVG8gY2xlYXIgbmF2aWdhdGlvbiwgcGFzcyBgbnVsbGAgYXMgdGhlIHBhdGguXG4gICAqL1xuICBwcml2YXRlIG5hdmlnYXRlKHBhdGg6IHN0cmluZyB8IG51bGwsIGV4dHJhcz86IHtwYXJhbXM/OiBNYXA8c3RyaW5nLCBhbnk+fSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHBhdGggPSBNaWNyb2Zyb250ZW5kcy5zdWJzdGl0dXRlTmFtZWRQYXJhbWV0ZXJzKHBhdGgsIGV4dHJhcz8ucGFyYW1zKTtcblxuICAgIGNvbnN0IG91dGxldENvbW1hbmRzOiBDb21tYW5kcyB8IG51bGwgPSAocGF0aCAhPT0gbnVsbCA/IHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLl9pbmplY3RvciwgKCkgPT4gUm91dGluZy5wYXRoVG9Db21tYW5kcyhwYXRoISkpIDogbnVsbCk7XG4gICAgY29uc3QgY29tbWFuZHM6IENvbW1hbmRzID0gW3tvdXRsZXRzOiB7W3RoaXMub3V0bGV0TmFtZV06IG91dGxldENvbW1hbmRzfX1dO1xuICAgIHJldHVybiB0aGlzLl9hbmd1bGFyUm91dGVyTXV0ZXguc3VibWl0KCgpID0+IHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShjb21tYW5kcywge3NraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZSwgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJ30pKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3V0bGV0SW5qZWN0b3IoKTogdm9pZCB7XG4gICAgdGhpcy5vdXRsZXRJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbcHJvdmlkZVdvcmtiZW5jaENsaWVudERpYWxvZ0hhbmRsZSh0aGlzLmNhcGFiaWxpdHksIHRoaXMucGFyYW1zKSxcbiAgICAgICAgLy8gUHJldmVudCBpbmplY3RpbmcgdGhlIGRpYWxvZyBoYW5kbGUgaW4gaG9zdCBkaWFsb2cgY29tcG9uZW50LlxuICAgICAgICB7cHJvdmlkZTogV29ya2JlbmNoRGlhbG9nLCB1c2VGYWN0b3J5OiAoKSA9PiB0aHJvd0Vycm9yKGBbTnVsbEluamVjdG9yRXJyb3JdIE5vIHByb3ZpZGVyIGZvciAnV29ya2JlbmNoRGlhbG9nJ2ApfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldERpYWxvZ1Byb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nLnNpemUud2lkdGggPSB0aGlzLmNhcGFiaWxpdHkucHJvcGVydGllcy5zaXplPy53aWR0aDtcbiAgICB0aGlzLl9kaWFsb2cuc2l6ZS5oZWlnaHQgPSB0aGlzLmNhcGFiaWxpdHkucHJvcGVydGllcy5zaXplPy5oZWlnaHQ7XG4gICAgdGhpcy5fZGlhbG9nLnNpemUubWluV2lkdGggPSB0aGlzLmNhcGFiaWxpdHkucHJvcGVydGllcy5zaXplPy5taW5XaWR0aDtcbiAgICB0aGlzLl9kaWFsb2cuc2l6ZS5tYXhXaWR0aCA9IHRoaXMuY2FwYWJpbGl0eS5wcm9wZXJ0aWVzLnNpemU/Lm1heFdpZHRoO1xuICAgIHRoaXMuX2RpYWxvZy5zaXplLm1pbkhlaWdodCA9IHRoaXMuY2FwYWJpbGl0eS5wcm9wZXJ0aWVzLnNpemU/Lm1pbkhlaWdodDtcbiAgICB0aGlzLl9kaWFsb2cuc2l6ZS5tYXhIZWlnaHQgPSB0aGlzLmNhcGFiaWxpdHkucHJvcGVydGllcy5zaXplPy5tYXhIZWlnaHQ7XG5cbiAgICB0aGlzLl9kaWFsb2cudGl0bGUgPSBNaWNyb2Zyb250ZW5kcy5zdWJzdGl0dXRlTmFtZWRQYXJhbWV0ZXJzKHRoaXMuY2FwYWJpbGl0eS5wcm9wZXJ0aWVzLnRpdGxlLCB0aGlzLnBhcmFtcyk7XG4gICAgdGhpcy5fZGlhbG9nLmNsb3NhYmxlID0gdGhpcy5jYXBhYmlsaXR5LnByb3BlcnRpZXMuY2xvc2FibGUgPz8gdHJ1ZTtcbiAgICB0aGlzLl9kaWFsb2cucmVzaXphYmxlID0gdGhpcy5jYXBhYmlsaXR5LnByb3BlcnRpZXMucmVzaXphYmxlID8/IHRydWU7XG4gICAgdGhpcy5fZGlhbG9nLnBhZGRpbmcgPSB0aGlzLmNhcGFiaWxpdHkucHJvcGVydGllcy5wYWRkaW5nID8/IHRydWU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uYXZpZ2F0ZShudWxsKS50aGVuKCk7IC8vIFJlbW92ZSB0aGUgb3V0bGV0IGZyb20gdGhlIFVSTFxuICB9XG59XG5cbi8qKlxuICogUHJvdmlkZXMgdGhlIHtXb3JrYmVuY2hEaWFsb2d9IGhhbmRsZSB0byB0aGUgcm91dGVkIGNvbXBvbmVudC5cbiAqL1xuZnVuY3Rpb24gcHJvdmlkZVdvcmtiZW5jaENsaWVudERpYWxvZ0hhbmRsZShjYXBhYmlsaXR5OiBXb3JrYmVuY2hEaWFsb2dDYXBhYmlsaXR5LCBwYXJhbXM6IE1hcDxzdHJpbmcsIHVua25vd24+KTogU3RhdGljUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IFdvcmtiZW5jaENsaWVudERpYWxvZyxcbiAgICB1c2VGYWN0b3J5OiAoKTogV29ya2JlbmNoQ2xpZW50RGlhbG9nID0+IHtcbiAgICAgIGNvbnN0IGRpYWxvZyA9IGluamVjdCjJtVdvcmtiZW5jaERpYWxvZyk7XG4gICAgICBjb25zdCBwcm9wZXJ0eUNoYW5nZSQgPSBuZXcgU3ViamVjdDwndGl0bGUnPigpO1xuXG4gICAgICByZXR1cm4gbmV3IGNsYXNzPFIgPSB1bmtub3duPiBpbXBsZW1lbnRzIFdvcmtiZW5jaENsaWVudERpYWxvZzxSPiB7XG4gICAgICAgIHB1YmxpYyByZWFkb25seSBjYXBhYmlsaXR5ID0gY2FwYWJpbGl0eTtcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHBhcmFtcyA9IHBhcmFtcztcblxuICAgICAgICBwdWJsaWMgc2V0VGl0bGUodGl0bGU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPik6IHZvaWQge1xuICAgICAgICAgIHByb3BlcnR5Q2hhbmdlJC5uZXh0KCd0aXRsZScpO1xuXG4gICAgICAgICAgT2JzZXJ2YWJsZXMuY29lcmNlKHRpdGxlKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHRha2VVbnRpbChwcm9wZXJ0eUNoYW5nZSQucGlwZShmaWx0ZXIocHJvcCA9PiBwcm9wID09PSAndGl0bGUnKSkpLFxuICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoZGlhbG9nLmluamVjdG9yLmdldChEZXN0cm95UmVmKSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRpdGxlID0+IGRpYWxvZy50aXRsZSA9IHRpdGxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBjbG9zZShyZXN1bHQ/OiBSIHwgRXJyb3IpOiB2b2lkIHtcbiAgICAgICAgICBkaWFsb2cuY2xvc2UocmVzdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzaWduYWxSZWFkeSgpOiB2b2lkIHtcbiAgICAgICAgICAvLyBub3RoaW5nIHRvIGRvIHNpbmNlIG5vdCBhbiBpZnJhbWUtYmFzZWQgbWljcm9mcm9udGVuZFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sXG4gIH07XG59XG4iLCI8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicm91dGVyX291dGxldDsgaW5qZWN0b3I6IG91dGxldEluamVjdG9yXCIvPlxuXG48bmctdGVtcGxhdGUgI3JvdXRlcl9vdXRsZXQ+XG4gIDxyb3V0ZXItb3V0bGV0IFtuYW1lXT1cIm91dGxldE5hbWVcIi8+XG48L25nLXRlbXBsYXRlPlxuIl19