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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/_index.scss +7 -5
  2. package/design/_workbench-global-styles.scss +18 -0
  3. package/design/_workbench-icon-font.scss +1 -1
  4. package/design/_workbench-popup-global-styles.scss +1 -1
  5. package/design/{_workbench-view-drag-image-global-styles.scss → _workbench-view-global-styles.scss} +1 -2
  6. package/esm2022/lib/activation-instant.provider.mjs +3 -3
  7. package/esm2022/lib/common/asserts.util.mjs +1 -1
  8. package/esm2022/lib/common/class-list.mjs +67 -29
  9. package/esm2022/lib/common/coerce-observable.pipe.mjs +3 -3
  10. package/esm2022/lib/common/dom.util.mjs +1 -1
  11. package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +4 -4
  12. package/esm2022/lib/common/instanceof.pipe.mjs +3 -3
  13. package/esm2022/lib/common/map-coerce.pipe.mjs +3 -3
  14. package/esm2022/lib/common/math.util.mjs +16 -0
  15. package/esm2022/lib/common/null-if-empty.pipe.mjs +4 -4
  16. package/esm2022/lib/common/objects.util.mjs +7 -1
  17. package/esm2022/lib/common/observables.mjs +1 -1
  18. package/esm2022/lib/common/operators.mjs +1 -12
  19. package/esm2022/lib/common/stringify-error.util.mjs +1 -1
  20. package/esm2022/lib/common/typeof.pipe.mjs +3 -3
  21. package/esm2022/lib/common/uid.util.mjs +22 -0
  22. package/esm2022/lib/common//311/265destroy-ref.mjs +1 -1
  23. package/esm2022/lib/content-projection/content-as-overlay.component.mjs +87 -30
  24. package/esm2022/lib/content-projection/workbench-element-references.mjs +32 -0
  25. package/esm2022/lib/dialog/dialog-footer/dialog-action-filter.pipe.mjs +3 -3
  26. package/esm2022/lib/dialog/dialog-footer/dialog-footer.component.mjs +3 -3
  27. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-action.directive.mjs +3 -3
  28. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-footer.directive.mjs +3 -3
  29. package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +5 -10
  30. package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +3 -3
  31. package/esm2022/lib/dialog/movable.directive.mjs +6 -6
  32. package/esm2022/lib/dialog/resizable.directive.mjs +6 -6
  33. package/esm2022/lib/dialog/workbench-dialog.component.mjs +27 -25
  34. package/esm2022/lib/dialog/workbench-dialog.mjs +61 -1
  35. package/esm2022/lib/dialog/workbench-dialog.registry.mjs +4 -4
  36. package/esm2022/lib/dialog/workbench-dialog.service.mjs +3 -3
  37. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +99 -61
  38. package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +28 -25
  39. package/esm2022/lib/executor/latest-task-executor.mjs +55 -0
  40. package/esm2022/lib/executor/single-task-executor.mjs +9 -19
  41. package/esm2022/lib/filter-field/filter-field.component.mjs +8 -8
  42. package/esm2022/lib/glass-pane/glass-pane.directive.mjs +4 -4
  43. package/esm2022/lib/layout/grid-element/grid-element.component.mjs +10 -20
  44. package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +19 -22
  45. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +11 -0
  46. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v6.model.mjs +11 -0
  47. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +7 -7
  48. package/esm2022/lib/layout/migration/workbench-layout-migration-v4.service.mjs +4 -4
  49. package/esm2022/lib/layout/migration/workbench-layout-migration-v5.service.mjs +67 -0
  50. package/esm2022/lib/layout/migration/workbench-layout-migration-v6.service.mjs +59 -0
  51. package/esm2022/lib/layout/stringifier.mjs +70 -0
  52. package/esm2022/lib/layout/workbench-layout.component.mjs +19 -23
  53. package/esm2022/lib/layout/workbench-layout.factory.mjs +3 -3
  54. package/esm2022/lib/layout/workbench-layout.mjs +1 -1
  55. package/esm2022/lib/layout/workbench-layout.model.mjs +1 -1
  56. package/esm2022/lib/layout/workbench-layout.service.mjs +28 -26
  57. package/esm2022/lib/layout/workbench-layouts.util.mjs +1 -9
  58. package/esm2022/lib/layout/workench-layout-serializer.service.mjs +22 -32
  59. package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +6 -5
  60. package/esm2022/lib/layout//311/265workbench-layout.mjs +77 -66
  61. package/esm2022/lib/logging/console-appender.service.mjs +4 -4
  62. package/esm2022/lib/logging/logger.mjs +3 -3
  63. package/esm2022/lib/logging/logging-support.mjs +7 -13
  64. package/esm2022/lib/logging/logging.model.mjs +3 -3
  65. package/esm2022/lib/logging//311/265logger.mjs +12 -12
  66. package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +9 -8
  67. package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +5 -5
  68. package/esm2022/lib/message-box/workbench-message-box.component.mjs +5 -5
  69. package/esm2022/lib/message-box/workbench-message-box.service.mjs +3 -3
  70. package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +6 -5
  71. package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +22 -6
  72. package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +29 -22
  73. package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +6 -6
  74. package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +14 -4
  75. package/esm2022/lib/microfrontend-platform/manifest-object-cache.service.mjs +63 -0
  76. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +8 -7
  77. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +4 -4
  78. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +8 -12
  79. package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +21 -12
  80. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +10 -9
  81. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +6 -6
  82. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +17 -15
  83. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +6 -5
  84. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.mjs +4 -4
  85. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.mjs +4 -4
  86. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +10 -15
  87. package/esm2022/lib/microfrontend-platform/microfrontend-notification/microfrontend-notification-intent-handler.service.mjs +3 -3
  88. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.mjs +39 -0
  89. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.mjs +120 -0
  90. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.mjs +55 -0
  91. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.mjs +19 -0
  92. package/esm2022/lib/microfrontend-platform/microfrontend-platform-config-loader.mjs +3 -3
  93. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +7 -6
  94. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +13 -14
  95. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +14 -30
  96. package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +5 -5
  97. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +13 -29
  98. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +92 -72
  99. package/esm2022/lib/microfrontend-platform/public_api.mjs +2 -1
  100. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +8 -7
  101. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +20 -18
  102. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +30 -8
  103. package/esm2022/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.mjs +32 -0
  104. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +29 -11
  105. package/esm2022/lib/migration/workbench-migrator.mjs +1 -1
  106. package/esm2022/lib/notification/notification-css-classes.pipe.mjs +3 -3
  107. package/esm2022/lib/notification/notification-list.component.mjs +6 -10
  108. package/esm2022/lib/notification/notification.component.mjs +6 -7
  109. package/esm2022/lib/notification/notification.service.mjs +8 -7
  110. package/esm2022/lib/notification/text-notification.component.mjs +3 -3
  111. package/esm2022/lib/notification//311/265notification.mjs +1 -1
  112. package/esm2022/lib/page-not-found/page-not-found.component.mjs +7 -9
  113. package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +12 -20
  114. package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +7 -7
  115. package/esm2022/lib/part/part-bar/part-bar.component.mjs +334 -265
  116. package/esm2022/lib/part/part-portal.pipe.mjs +10 -10
  117. package/esm2022/lib/part/part.component.mjs +34 -43
  118. package/esm2022/lib/part/view-context-menu/accelerator-format.pipe.mjs +4 -4
  119. package/esm2022/lib/part/view-context-menu/text.component.mjs +17 -13
  120. package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +6 -8
  121. package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +5 -5
  122. package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +50 -51
  123. package/esm2022/lib/part/view-list/view-list.component.mjs +42 -49
  124. package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +23 -27
  125. package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +16 -18
  126. package/esm2022/lib/part/view-tab/view-tab.component.mjs +100 -111
  127. package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +5 -6
  128. package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +17 -18
  129. package/esm2022/lib/part/workbench-part-action.registry.mjs +18 -42
  130. package/esm2022/lib/part/workbench-part.model.mjs +10 -1
  131. package/esm2022/lib/part/workbench-part.registry.mjs +11 -45
  132. package/esm2022/lib/part//311/265workbench-part.model.mjs +71 -55
  133. package/esm2022/lib/perspective/migration/workbench-perspective-migration-v2.service.mjs +4 -4
  134. package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +6 -6
  135. package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +4 -4
  136. package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +4 -4
  137. package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
  138. package/esm2022/lib/perspective/workbench-perspective.registry.mjs +11 -43
  139. package/esm2022/lib/perspective/workbench-perspective.service.mjs +73 -64
  140. package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +5 -5
  141. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +62 -47
  142. package/esm2022/lib/popup/popup.component.mjs +6 -6
  143. package/esm2022/lib/popup/popup.config.mjs +27 -25
  144. package/esm2022/lib/popup/popup.service.mjs +171 -176
  145. package/esm2022/lib/portal/wb-component-portal.mjs +18 -17
  146. package/esm2022/lib/portal/workbench-portal-outlet.directive.mjs +4 -4
  147. package/esm2022/lib/public_api.mjs +1 -1
  148. package/esm2022/lib/registry/workbench-object-registry.mjs +38 -17
  149. package/esm2022/lib/routing/empty-outlet/empty-outlet.component.mjs +3 -3
  150. package/esm2022/lib/routing/public_api.mjs +2 -2
  151. package/esm2022/lib/routing/routing.model.mjs +1 -1
  152. package/esm2022/lib/routing/routing.util.mjs +215 -0
  153. package/esm2022/lib/routing/url-segment-matcher.mjs +1 -1
  154. package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +110 -0
  155. package/esm2022/lib/routing/workbench-dialog-differ.mjs +6 -6
  156. package/esm2022/lib/routing/workbench-layout-differ.mjs +6 -13
  157. package/esm2022/lib/routing/workbench-message-box-differ.mjs +6 -6
  158. package/esm2022/lib/routing/workbench-navigational-states.mjs +2 -2
  159. package/esm2022/lib/routing/workbench-popup-differ.mjs +6 -6
  160. package/esm2022/lib/routing/workbench-route-guards.mjs +57 -0
  161. package/esm2022/lib/routing/workbench-router-link.directive.mjs +5 -5
  162. package/esm2022/lib/routing/workbench-router.service.mjs +3 -3
  163. package/esm2022/lib/routing/workbench-url-observer.service.mjs +143 -151
  164. package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +58 -0
  165. package/esm2022/lib/routing//311/265location.mjs +3 -3
  166. package/esm2022/lib/routing//311/265workbench-router.service.mjs +121 -76
  167. package/esm2022/lib/startup/splash/splash.component.mjs +5 -5
  168. package/esm2022/lib/startup/workbench-initializer.mjs +1 -1
  169. package/esm2022/lib/startup/workbench-launcher.service.mjs +28 -16
  170. package/esm2022/lib/storage/workbench-storage.mjs +3 -3
  171. package/esm2022/lib/testing/workbench-testing.module.mjs +4 -4
  172. package/esm2022/lib/testing/workbench.provider.mjs +5 -5
  173. package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +18 -22
  174. package/esm2022/lib/view/public_api.mjs +1 -2
  175. package/esm2022/lib/view/view-move-handler.service.mjs +73 -58
  176. package/esm2022/lib/view/view-portal.pipe.mjs +9 -9
  177. package/esm2022/lib/view/view.component.mjs +55 -43
  178. package/esm2022/lib/view/workbench-view.model.mjs +1 -1
  179. package/esm2022/lib/view/workbench-view.registry.mjs +11 -45
  180. package/esm2022/lib/view//311/265workbench-view.model.mjs +183 -153
  181. package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +2 -2
  182. package/esm2022/lib/view-dnd/requires-drop-zone.pipe.mjs +4 -4
  183. package/esm2022/lib/view-dnd/view-drag.service.mjs +89 -73
  184. package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +9 -9
  185. package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +9 -9
  186. package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +45 -58
  187. package/esm2022/lib/workbench-config.mjs +2 -2
  188. package/esm2022/lib/workbench-id.mjs +3 -3
  189. package/esm2022/lib/workbench.component.mjs +67 -55
  190. package/esm2022/lib/workbench.constants.mjs +1 -5
  191. package/esm2022/lib/workbench.model.mjs +1 -1
  192. package/esm2022/lib/workbench.module.mjs +4 -4
  193. package/esm2022/lib/workbench.provider.mjs +3 -9
  194. package/esm2022/lib/workbench.service.mjs +4 -4
  195. package/esm2022/lib//311/265workbench.service.mjs +40 -44
  196. package/fesm2022/scion-workbench.mjs +4348 -3628
  197. package/fesm2022/scion-workbench.mjs.map +1 -1
  198. package/lib/common/class-list.d.ts +35 -22
  199. package/lib/common/math.util.d.ts +7 -0
  200. package/lib/common/objects.util.d.ts +6 -2
  201. package/lib/common/operators.d.ts +1 -6
  202. package/lib/common/uid.util.d.ts +9 -0
  203. package/lib/content-projection/content-as-overlay.component.d.ts +39 -22
  204. package/lib/content-projection/workbench-element-references.d.ts +13 -0
  205. package/lib/dialog/workbench-dialog.component.d.ts +3 -2
  206. package/lib/dialog/workbench-dialog.d.ts +57 -13
  207. package/lib/dialog//311/265workbench-dialog.d.ts +38 -24
  208. package/lib/dialog//311/265workbench-dialog.service.d.ts +10 -11
  209. package/lib/executor/latest-task-executor.d.ts +26 -0
  210. package/lib/executor/single-task-executor.d.ts +5 -8
  211. package/lib/filter-field/filter-field.component.d.ts +1 -1
  212. package/lib/layout/grid-element/grid-element.component.d.ts +1 -8
  213. package/lib/layout/main-area-layout/main-area-layout.component.d.ts +0 -4
  214. package/lib/layout/migration/model/workbench-layout-migration-v5.model.d.ts +36 -0
  215. package/lib/layout/migration/model/workbench-layout-migration-v6.model.d.ts +35 -0
  216. package/lib/layout/migration/{workbench-layout-migration-v2.service.d.ts → workbench-layout-migration-v5.service.d.ts} +4 -5
  217. package/lib/layout/migration/workbench-layout-migration-v6.service.d.ts +12 -0
  218. package/lib/layout/stringifier.d.ts +26 -0
  219. package/lib/layout/workbench-layout.component.d.ts +4 -5
  220. package/lib/layout/workbench-layout.d.ts +9 -6
  221. package/lib/layout/workbench-layout.model.d.ts +4 -3
  222. package/lib/layout/workbench-layout.service.d.ts +14 -16
  223. package/lib/layout/workbench-layouts.util.d.ts +0 -6
  224. package/lib/layout/workench-layout-serializer.service.d.ts +13 -16
  225. package/lib/layout//311/265workbench-layout.d.ts +18 -19
  226. package/lib/layout//311/265workbench-layout.factory.d.ts +3 -2
  227. package/lib/logging//311/265logger.d.ts +2 -3
  228. package/lib/microfrontend-platform/common/microfrontend.util.d.ts +5 -1
  229. package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +7 -3
  230. package/lib/microfrontend-platform/manifest-object-cache.service.d.ts +33 -0
  231. package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +3 -6
  232. package/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.d.ts +2 -1
  233. package/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.d.ts +1 -1
  234. package/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.d.ts +2 -1
  235. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.d.ts +10 -0
  236. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.d.ts +24 -0
  237. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.d.ts +20 -0
  238. package/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.d.ts +9 -0
  239. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.d.ts +4 -8
  240. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +0 -4
  241. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +5 -12
  242. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +23 -33
  243. package/lib/microfrontend-platform/public_api.d.ts +1 -0
  244. package/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.d.ts +1 -1
  245. package/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.d.ts +3 -7
  246. package/lib/microfrontend-platform/routing/microfrontend-view-routes.d.ts +9 -2
  247. package/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.d.ts +11 -0
  248. package/lib/notification/notification-list.component.d.ts +0 -2
  249. package/lib/page-not-found/page-not-found.component.d.ts +1 -0
  250. package/lib/part/part-action-bar/part-action-bar.component.d.ts +3 -4
  251. package/lib/part/part-action-bar/part-action.directive.d.ts +2 -2
  252. package/lib/part/part-bar/part-bar.component.d.ts +73 -63
  253. package/lib/part/part-portal.pipe.d.ts +3 -5
  254. package/lib/part/part.component.d.ts +9 -12
  255. package/lib/part/view-context-menu/text.component.d.ts +3 -4
  256. package/lib/part/view-context-menu/view-menu.directive.d.ts +1 -1
  257. package/lib/part/view-context-menu/view-menu.service.d.ts +13 -17
  258. package/lib/part/view-list/view-list.component.d.ts +8 -21
  259. package/lib/part/view-list-button/view-list-button.component.d.ts +8 -11
  260. package/lib/part/view-list-item/view-list-item.component.d.ts +3 -7
  261. package/lib/part/view-tab/view-tab.component.d.ts +19 -29
  262. package/lib/part/view-tab-drag-image/view-tab-drag-image.component.d.ts +4 -4
  263. package/lib/part/workbench-part-action.registry.d.ts +3 -23
  264. package/lib/part/workbench-part.model.d.ts +8 -27
  265. package/lib/part/workbench-part.registry.d.ts +3 -26
  266. package/lib/part//311/265workbench-part.model.d.ts +23 -17
  267. package/lib/perspective/workbench-perspective.model.d.ts +18 -25
  268. package/lib/perspective/workbench-perspective.registry.d.ts +3 -26
  269. package/lib/perspective/workbench-perspective.service.d.ts +16 -14
  270. package/lib/perspective/workench-perspective-serializer.service.d.ts +1 -1
  271. package/lib/perspective//311/265workbench-perspective.model.d.ts +30 -21
  272. package/lib/popup/popup.config.d.ts +11 -10
  273. package/lib/popup/popup.service.d.ts +15 -28
  274. package/lib/portal/wb-component-portal.d.ts +21 -5
  275. package/lib/public_api.d.ts +1 -1
  276. package/lib/registry/workbench-object-registry.d.ts +10 -6
  277. package/lib/routing/public_api.d.ts +2 -2
  278. package/lib/routing/routing.model.d.ts +25 -13
  279. package/lib/routing/{router.util.d.ts → routing.util.d.ts} +28 -1
  280. package/lib/routing/{workbench-auxiliary-routes-registrator.service.d.ts → workbench-auxiliary-route-installer.service.d.ts} +10 -3
  281. package/lib/routing/workbench-layout-differ.d.ts +1 -2
  282. package/lib/routing/workbench-navigational-states.d.ts +8 -4
  283. package/lib/{view/workbench-view-route-guards.d.ts → routing/workbench-route-guards.d.ts} +8 -2
  284. package/lib/routing/workbench-url-observer.service.d.ts +31 -55
  285. package/lib/routing/workbench-view-outlet-differ.d.ts +32 -0
  286. package/lib/routing//311/265workbench-router.service.d.ts +22 -18
  287. package/lib/startup/workbench-launcher.service.d.ts +4 -5
  288. package/lib/testing/workbench.provider.d.ts +3 -1
  289. package/lib/theme/workbench-theme-switcher.service.d.ts +4 -6
  290. package/lib/view/public_api.d.ts +0 -1
  291. package/lib/view/view-move-handler.service.d.ts +16 -14
  292. package/lib/view/view-portal.pipe.d.ts +1 -3
  293. package/lib/view/view.component.d.ts +21 -12
  294. package/lib/view/workbench-view.model.d.ts +88 -36
  295. package/lib/view/workbench-view.registry.d.ts +3 -27
  296. package/lib/view//311/265workbench-view.model.d.ts +62 -71
  297. package/lib/view-dnd/view-drag.service.d.ts +79 -49
  298. package/lib/view-dnd/view-drop-placeholder-renderer.service.d.ts +1 -1
  299. package/lib/view-dnd/view-tab-drag-image-renderer.service.d.ts +12 -36
  300. package/lib/workbench-config.d.ts +19 -7
  301. package/lib/workbench.component.d.ts +16 -30
  302. package/lib/workbench.constants.d.ts +0 -5
  303. package/lib/workbench.model.d.ts +31 -3
  304. package/lib/workbench.service.d.ts +58 -56
  305. package/lib//311/265workbench.service.d.ts +18 -31
  306. package/package.json +12 -12
  307. package/esm2022/lib/common/filter-by-predicate.pipe.mjs +0 -27
  308. package/esm2022/lib/common/filter-by-text.pipe.mjs +0 -39
  309. package/esm2022/lib/common/uuid.util.mjs +0 -17
  310. package/esm2022/lib/content-projection/content-projection.directive.mjs +0 -101
  311. package/esm2022/lib/content-projection/view-container.reference.mjs +0 -68
  312. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v1.model.mjs +0 -11
  313. package/esm2022/lib/layout/migration/workbench-layout-migration-v2.service.mjs +0 -59
  314. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +0 -41
  315. package/esm2022/lib/page-not-found/format-url.pipe.mjs +0 -26
  316. package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +0 -26
  317. package/esm2022/lib/routing/router.util.mjs +0 -126
  318. package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +0 -94
  319. package/esm2022/lib/view/workbench-view-route-guards.mjs +0 -47
  320. package/lib/common/filter-by-predicate.pipe.d.ts +0 -10
  321. package/lib/common/filter-by-text.pipe.d.ts +0 -12
  322. package/lib/common/uuid.util.d.ts +0 -8
  323. package/lib/content-projection/content-projection.directive.d.ts +0 -30
  324. package/lib/content-projection/view-container.reference.d.ts +0 -42
  325. package/lib/layout/migration/model/workbench-layout-migration-v1.model.d.ts +0 -16
  326. package/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.d.ts +0 -10
  327. package/lib/page-not-found/format-url.pipe.d.ts +0 -11
  328. package/lib/part/part-action-bar/part-action-filter.pipe.d.ts +0 -11
@@ -0,0 +1,215 @@
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 { ActivationEnd, ActivationStart, ChildrenOutletContexts, NavigationStart, PRIMARY_OUTLET, Router } from '@angular/router';
11
+ import { DIALOG_ID_PREFIX, MESSAGE_BOX_ID_PREFIX, POPUP_ID_PREFIX, VIEW_ID_PREFIX } from '../workbench.constants';
12
+ import { inject } from '@angular/core';
13
+ import { EMPTY, iif, of, pairwise, race, switchMap } from 'rxjs';
14
+ import { filter, map, startWith, take } from 'rxjs/operators';
15
+ /**
16
+ * Provides utility functions for router operations.
17
+ */
18
+ export const Routing = {
19
+ /**
20
+ * Converts given URL segments into an array of commands that can be passed to the Angular router for navigation.
21
+ */
22
+ segmentsToCommands: (segments) => {
23
+ const commands = new Array();
24
+ segments.forEach(segment => {
25
+ if (segment.path) {
26
+ commands.push(segment.path);
27
+ }
28
+ if (segment.parameters && Object.keys(segment.parameters).length) {
29
+ commands.push(segment.parameters);
30
+ }
31
+ });
32
+ return commands;
33
+ },
34
+ /**
35
+ * Constructs URL segments from given commands, resolving any relative navigational symbols.
36
+ *
37
+ * This function must be called inside an injection context.
38
+ */
39
+ commandsToSegments: (commands, options) => {
40
+ // Ignore `relativeTo` for absolute commands.
41
+ const isAbsolutePath = typeof commands[0] === 'string' && commands[0].startsWith('/');
42
+ const relativeTo = isAbsolutePath ? null : (options?.relativeTo || null);
43
+ // Angular throws the error 'NG04003: Root segment cannot have matrix parameters' when passing an empty path command
44
+ // followed by a matrix params object, but not when passing matrix params as the first command. For consistency, when
45
+ // passing matrix params as the first command, we prepend an empty path for Angular to throw the same error.
46
+ if (typeof commands[0] === 'object' && (!relativeTo || Routing.hasEmptyPathFromRoot(relativeTo))) {
47
+ commands = ['', ...commands];
48
+ }
49
+ const urlTree = inject(Router).createUrlTree(commands, { relativeTo });
50
+ return urlTree.root.children[relativeTo?.pathFromRoot[1]?.outlet ?? PRIMARY_OUTLET]?.segments ?? [];
51
+ },
52
+ /**
53
+ * Parses the given path and matrix parameters into an array of commands that can be passed to the Angular router for navigation.
54
+ *
55
+ * This function must be called inside an injection context.
56
+ */
57
+ pathToCommands: (path) => {
58
+ const urlTree = inject(Router).parseUrl(path);
59
+ const segments = urlTree.root.children[PRIMARY_OUTLET]?.segments;
60
+ if (!segments) {
61
+ throw Error(`[RouterError] Cannot match any routes for path '${path}'.`);
62
+ }
63
+ return Routing.segmentsToCommands(segments);
64
+ },
65
+ /**
66
+ * Resolves the effective (=leaf) {@link ActivatedRoute} activated in a router outlet.
67
+ *
68
+ * Depending on the route hierarchy, when navigating to a child route with component-less parent routes, the route of an outlet may not be the effectively activated child route.
69
+ */
70
+ resolveEffectiveRoute: (route) => {
71
+ return route.firstChild ? Routing.resolveEffectiveRoute(route.firstChild) : route;
72
+ },
73
+ /**
74
+ * Resolves the effective (=leaf) {@link OutletContext} of a router outlet.
75
+ *
76
+ * Depending on the route hierarchy, when navigating to a child route with component-less parent routes, the context of an outlet may not be the effectively activated child context.
77
+ */
78
+ resolveEffectiveOutletContext: (outletContext) => {
79
+ const childOutletContext = outletContext?.children.getContext(PRIMARY_OUTLET);
80
+ return childOutletContext ? Routing.resolveEffectiveOutletContext(childOutletContext) : outletContext;
81
+ },
82
+ /**
83
+ * Looks for requested data on given route, or its parent route(s) if not found.
84
+ */
85
+ lookupRouteData: (activatedRoute, dataKey) => {
86
+ return activatedRoute.pathFromRoot.reduceRight((resolvedData, route) => resolvedData ?? route.data[dataKey], undefined);
87
+ },
88
+ /**
89
+ * Tests if the given outlet matches the format of the view outlet.
90
+ */
91
+ isViewOutlet: (outlet) => {
92
+ return outlet?.startsWith(VIEW_ID_PREFIX) ?? false;
93
+ },
94
+ /**
95
+ * Tests if the given outlet matches the format of a popup outlet.
96
+ */
97
+ isPopupOutlet: (outlet) => {
98
+ return outlet?.startsWith(POPUP_ID_PREFIX) ?? false;
99
+ },
100
+ /**
101
+ * Tests if the given outlet matches the format of a dialog outlet.
102
+ */
103
+ isDialogOutlet: (outlet) => {
104
+ return outlet?.startsWith(DIALOG_ID_PREFIX) ?? false;
105
+ },
106
+ /**
107
+ * Tests if the given outlet matches the format of a message box outlet.
108
+ */
109
+ isMessageBoxOutlet: (outlet) => {
110
+ return outlet?.startsWith(MESSAGE_BOX_ID_PREFIX) ?? false;
111
+ },
112
+ /**
113
+ * Reads view outlets from given URL.
114
+ *
115
+ * A view outlet contains the URL segments of a view contained in the workbench layout.
116
+ */
117
+ parseViewOutlets: (url) => {
118
+ const viewOutlets = new Map();
119
+ Object.entries(url.root.children).forEach(([outlet, segmentGroup]) => {
120
+ if (Routing.isViewOutlet(outlet)) {
121
+ viewOutlets.set(outlet, segmentGroup.segments);
122
+ }
123
+ });
124
+ return viewOutlets;
125
+ },
126
+ /**
127
+ * Tests if given route has an empty path from root.
128
+ */
129
+ hasEmptyPathFromRoot(route) {
130
+ return route.snapshot.pathFromRoot.flatMap(route => route.url).filter(segment => segment.path.length).length === 0;
131
+ },
132
+ /**
133
+ * Observes the route activation for the specified outlet.
134
+ *
135
+ * The observable emits after the previous component has been destroyed (if any) but before constructing the new component.
136
+ *
137
+ * Options to control when to emit:
138
+ * - `routeChange`: Emit only when navigating the outlet to a different route.
139
+ * - `routeOrParamChange`: Emit when navigating the outlet to a different route or changing params (named path params or matrix params).
140
+ * - `always`: Emit at every navigation, even if the outlet is not the target of the navigation.
141
+ *
142
+ * This method must be called within an injection context.
143
+ *
144
+ * Note: Listening for route activations/deactivations on the router outlet alone is insufficient for nested routes, as the outlet does not report
145
+ * activations/deactivations of child routes.
146
+ *
147
+ * @param outlet - Specifies the outlet to observe.
148
+ * @param options - Controls when to emit the observable.
149
+ * @return An observable emitting a tuple of the previous and current route snapshots.
150
+ */
151
+ activatedRoute$(outlet, options) {
152
+ const router = inject(Router);
153
+ const childrenOutletContexts = inject(ChildrenOutletContexts);
154
+ const onNavigationStart$ = router.events.pipe(filterNavigationStart());
155
+ const onActivationStart$ = router.events.pipe(filterActivationStart(), filterByOutlet(outlet));
156
+ const onActivationEnd$ = router.events.pipe(filterActivationEnd(), filterByOutlet(outlet));
157
+ // On each navigation start (`NavigationStart`), subscribe to the outlet's `ActivationStart` event and then to the outlet's deactivate event,
158
+ // enabling continuing of the execution chain after the previous component has been destroyed.
159
+ //
160
+ // If `emitOn` is set to `always`, additionally subscribe to the outlet's `ActivationEnd` event, since no activation (`ActivationStart`) occurs if
161
+ // the outlet is not navigated (e.g., navigating another outlet or updating query params).
162
+ //
163
+ // Note that Angular activates nested routes from parent to child and deactivates them from child to parent, triggering multiple `ActivationStart`
164
+ // and `ActivationEnd` events. For the outlet, the latest `ActivationStart` and the first `ActivationEnd` events are relevant.
165
+ //
166
+ // `ActivationStart` is emitted only if the outlet is actually navigated (route or parameter change), whereas `ActivationEnd` is always emitted.
167
+ //
168
+ // If a navigation is currently in progress, start immediately, allowing subscriptions even during ongoing navigation, such as after the navigation
169
+ // has started.
170
+ return iif(() => !router.getCurrentNavigation(), onNavigationStart$, onNavigationStart$.pipe(startWith(undefined)))
171
+ .pipe(
172
+ // Subscribe to the outlet's `ActivationStart` (and also `ActivationEnd` if the `emitOn` option is set to `always`).
173
+ switchMap(() => options.emitOn === 'always' ? race(onActivationStart$, onActivationEnd$.pipe(take(1))) : onActivationStart$), map(event => event.snapshot), startWith(null), // initialize pairwise operator
174
+ pairwise(), switchMap(([previous, current]) => {
175
+ // If the route hasn't changed and `emitOn` is set to `always` or `routeOrParamChange`, emit immediately since no deactivation will occur.
176
+ const routeChanged = previous?.routeConfig !== current.routeConfig;
177
+ if (!routeChanged) {
178
+ return options.emitOn === 'routeChange' ? EMPTY : of([previous, current]);
179
+ }
180
+ // If there's no previously activated component in the outlet, emit immediately since no deactivation will occur.
181
+ const outletContext = Routing.resolveEffectiveOutletContext(childrenOutletContexts.getContext(outlet));
182
+ if (!outletContext?.outlet?.isActivated) {
183
+ return of([previous, current]);
184
+ }
185
+ // Delay emission until the previously activated component has been destroyed by subscribing to the outlet's deactivation event.
186
+ // Nested routes activate from parent to child, canceling "deactivation" subscriptions of parent outlets, so only the deactivation of the actual outlet is emitted.
187
+ return outletContext.outlet.deactivateEvents.pipe(map(() => [previous, current]));
188
+ }));
189
+ /**
190
+ * Filters {@link NavigationStart} router events.
191
+ */
192
+ function filterNavigationStart() {
193
+ return filter((event) => event instanceof NavigationStart);
194
+ }
195
+ /**
196
+ * Filters {@link ActivationStart} router events.
197
+ */
198
+ function filterActivationStart() {
199
+ return filter((event) => event instanceof ActivationStart);
200
+ }
201
+ /**
202
+ * Filters {@link ActivationEnd} router events. This event is emitted for each outlet regardless of whether it has been navigated or not.
203
+ */
204
+ function filterActivationEnd() {
205
+ return filter((event) => event instanceof ActivationEnd);
206
+ }
207
+ /**
208
+ * Filters router events for the specified outlet.
209
+ */
210
+ function filterByOutlet(outlet) {
211
+ return filter(event => event.snapshot.pathFromRoot[1]?.outlet === outlet);
212
+ }
213
+ },
214
+ };
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcm91dGluZy9yb3V0aW5nLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQXlDLGFBQWEsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQVMsZUFBZSxFQUFpQixjQUFjLEVBQUUsTUFBTSxFQUFtQyxNQUFNLGlCQUFpQixDQUFDO0FBRWhPLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDaEgsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVyQyxPQUFPLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBd0MsRUFBRSxFQUFvQixRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN2SCxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUc7SUFFckI7O09BRUc7SUFDSCxrQkFBa0IsRUFBRSxDQUFDLFFBQXNCLEVBQVksRUFBRTtRQUN2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssRUFBTyxDQUFDO1FBRWxDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDekIsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2pFLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCLEVBQUUsQ0FBQyxRQUFrQixFQUFFLE9BQThDLEVBQWdCLEVBQUU7UUFDdkcsNkNBQTZDO1FBQzdDLE1BQU0sY0FBYyxHQUFHLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLENBQUM7UUFFekUsb0hBQW9IO1FBQ3BILHFIQUFxSDtRQUNySCw0R0FBNEc7UUFDNUcsSUFBSSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pHLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxFQUFDLFVBQVUsRUFBQyxDQUFDLENBQUM7UUFDckUsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sSUFBSSxjQUFjLENBQUMsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO0lBQ3RHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsY0FBYyxFQUFFLENBQUMsSUFBWSxFQUFZLEVBQUU7UUFDekMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLENBQUM7UUFDakUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxLQUFLLENBQUMsbURBQW1ELElBQUksSUFBSSxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gscUJBQXFCLEVBQUUsQ0FBQyxLQUFxQixFQUFrQixFQUFFO1FBQy9ELE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3BGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsNkJBQTZCLEVBQUUsQ0FBQyxhQUFtQyxFQUF3QixFQUFFO1FBQzNGLE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUUsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUN4RyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlLEVBQUUsQ0FBSSxjQUFzQyxFQUFFLE9BQWUsRUFBaUIsRUFBRTtRQUM3RixPQUFPLGNBQWMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDMUgsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxFQUFFLENBQUMsTUFBaUMsRUFBb0IsRUFBRTtRQUNwRSxPQUFPLE1BQU0sRUFBRSxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWEsRUFBRSxDQUFDLE1BQWlDLEVBQStCLEVBQUU7UUFDaEYsT0FBTyxNQUFNLEVBQUUsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUN0RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjLEVBQUUsQ0FBQyxNQUFpQyxFQUFnQyxFQUFFO1FBQ2xGLE9BQU8sTUFBTSxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUN2RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQkFBa0IsRUFBRSxDQUFDLE1BQWlDLEVBQW9DLEVBQUU7UUFDMUYsT0FBTyxNQUFNLEVBQUUsVUFBVSxDQUFDLHFCQUFxQixDQUFDLElBQUksS0FBSyxDQUFDO0lBQzVELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFZLEVBQTZCLEVBQUU7UUFDNUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDcEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUU7WUFDbkUsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0IsQ0FBQyxLQUFxQjtRQUN4QyxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FrQkc7SUFDSCxlQUFlLENBQUMsTUFBYyxFQUFFLE9BQWtFO1FBQ2hHLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRTlELE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMvRixNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFM0YsNklBQTZJO1FBQzdJLDhGQUE4RjtRQUM5RixFQUFFO1FBQ0Ysa0pBQWtKO1FBQ2xKLDBGQUEwRjtRQUMxRixFQUFFO1FBQ0Ysa0pBQWtKO1FBQ2xKLDhIQUE4SDtRQUM5SCxFQUFFO1FBQ0YsZ0pBQWdKO1FBQ2hKLEVBQUU7UUFDRixtSkFBbUo7UUFDbkosZUFBZTtRQUNmLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2FBQ2hILElBQUk7UUFDSCxvSEFBb0g7UUFDcEgsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEVBQzVILEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFDNUIsU0FBUyxDQUFDLElBQXlDLENBQUMsRUFBRSwrQkFBK0I7UUFDckYsUUFBUSxFQUFFLEVBQ1YsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUEwRCxFQUF1RSxFQUFFO1lBQzlKLDBJQUEwSTtZQUMxSSxNQUFNLFlBQVksR0FBRyxRQUFRLEVBQUUsV0FBVyxLQUFLLE9BQU8sQ0FBQyxXQUFXLENBQUM7WUFDbkUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNsQixPQUFPLE9BQU8sQ0FBQyxNQUFNLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzVFLENBQUM7WUFFRCxpSEFBaUg7WUFDakgsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLDZCQUE2QixDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3ZHLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUN4QyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFFRCxnSUFBZ0k7WUFDaEksbUtBQW1LO1lBQ25LLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxnQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUo7O1dBRUc7UUFDSCxTQUFTLHFCQUFxQjtZQUM1QixPQUFPLE1BQU0sQ0FBQyxDQUFDLEtBQTBCLEVBQTRCLEVBQUUsQ0FBQyxLQUFLLFlBQVksZUFBZSxDQUFDLENBQUM7UUFDNUcsQ0FBQztRQUVEOztXQUVHO1FBQ0gsU0FBUyxxQkFBcUI7WUFDNUIsT0FBTyxNQUFNLENBQUMsQ0FBQyxLQUEwQixFQUE0QixFQUFFLENBQUMsS0FBSyxZQUFZLGVBQWUsQ0FBQyxDQUFDO1FBQzVHLENBQUM7UUFFRDs7V0FFRztRQUNILFNBQVMsbUJBQW1CO1lBQzFCLE9BQU8sTUFBTSxDQUFDLENBQUMsS0FBMEIsRUFBMEIsRUFBRSxDQUFDLEtBQUssWUFBWSxhQUFhLENBQUMsQ0FBQztRQUN4RyxDQUFDO1FBRUQ7O1dBRUc7UUFDSCxTQUFTLGNBQWMsQ0FBNEMsTUFBYztZQUMvRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQztRQUM1RSxDQUFDO0lBQ0gsQ0FBQztDQUNPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIEFjdGl2YXRpb25FbmQsIEFjdGl2YXRpb25TdGFydCwgQ2hpbGRyZW5PdXRsZXRDb250ZXh0cywgRXZlbnQsIE5hdmlnYXRpb25TdGFydCwgT3V0bGV0Q29udGV4dCwgUFJJTUFSWV9PVVRMRVQsIFJvdXRlciwgUm91dGVyRXZlbnQsIFVybFNlZ21lbnQsIFVybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0NvbW1hbmRzfSBmcm9tICcuLi9yb3V0aW5nL3JvdXRpbmcubW9kZWwnO1xuaW1wb3J0IHtESUFMT0dfSURfUFJFRklYLCBNRVNTQUdFX0JPWF9JRF9QUkVGSVgsIFBPUFVQX0lEX1BSRUZJWCwgVklFV19JRF9QUkVGSVh9IGZyb20gJy4uL3dvcmtiZW5jaC5jb25zdGFudHMnO1xuaW1wb3J0IHtpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtWaWV3SWR9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtFTVBUWSwgaWlmLCBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24sIE9ic2VydmFibGUsIG9mLCBPcGVyYXRvckZ1bmN0aW9uLCBwYWlyd2lzZSwgcmFjZSwgc3dpdGNoTWFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIFByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciByb3V0ZXIgb3BlcmF0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IFJvdXRpbmcgPSB7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGdpdmVuIFVSTCBzZWdtZW50cyBpbnRvIGFuIGFycmF5IG9mIGNvbW1hbmRzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byB0aGUgQW5ndWxhciByb3V0ZXIgZm9yIG5hdmlnYXRpb24uXG4gICAqL1xuICBzZWdtZW50c1RvQ29tbWFuZHM6IChzZWdtZW50czogVXJsU2VnbWVudFtdKTogQ29tbWFuZHMgPT4ge1xuICAgIGNvbnN0IGNvbW1hbmRzID0gbmV3IEFycmF5PGFueT4oKTtcblxuICAgIHNlZ21lbnRzLmZvckVhY2goc2VnbWVudCA9PiB7XG4gICAgICBpZiAoc2VnbWVudC5wYXRoKSB7XG4gICAgICAgIGNvbW1hbmRzLnB1c2goc2VnbWVudC5wYXRoKTtcbiAgICAgIH1cbiAgICAgIGlmIChzZWdtZW50LnBhcmFtZXRlcnMgJiYgT2JqZWN0LmtleXMoc2VnbWVudC5wYXJhbWV0ZXJzKS5sZW5ndGgpIHtcbiAgICAgICAgY29tbWFuZHMucHVzaChzZWdtZW50LnBhcmFtZXRlcnMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbW1hbmRzO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIFVSTCBzZWdtZW50cyBmcm9tIGdpdmVuIGNvbW1hbmRzLCByZXNvbHZpbmcgYW55IHJlbGF0aXZlIG5hdmlnYXRpb25hbCBzeW1ib2xzLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGluc2lkZSBhbiBpbmplY3Rpb24gY29udGV4dC5cbiAgICovXG4gIGNvbW1hbmRzVG9TZWdtZW50czogKGNvbW1hbmRzOiBDb21tYW5kcywgb3B0aW9ucz86IHtyZWxhdGl2ZVRvPzogQWN0aXZhdGVkUm91dGUgfCBudWxsfSk6IFVybFNlZ21lbnRbXSA9PiB7XG4gICAgLy8gSWdub3JlIGByZWxhdGl2ZVRvYCBmb3IgYWJzb2x1dGUgY29tbWFuZHMuXG4gICAgY29uc3QgaXNBYnNvbHV0ZVBhdGggPSB0eXBlb2YgY29tbWFuZHNbMF0gPT09ICdzdHJpbmcnICYmIGNvbW1hbmRzWzBdLnN0YXJ0c1dpdGgoJy8nKTtcbiAgICBjb25zdCByZWxhdGl2ZVRvID0gaXNBYnNvbHV0ZVBhdGggPyBudWxsIDogKG9wdGlvbnM/LnJlbGF0aXZlVG8gfHwgbnVsbCk7XG5cbiAgICAvLyBBbmd1bGFyIHRocm93cyB0aGUgZXJyb3IgJ05HMDQwMDM6IFJvb3Qgc2VnbWVudCBjYW5ub3QgaGF2ZSBtYXRyaXggcGFyYW1ldGVycycgd2hlbiBwYXNzaW5nIGFuIGVtcHR5IHBhdGggY29tbWFuZFxuICAgIC8vIGZvbGxvd2VkIGJ5IGEgbWF0cml4IHBhcmFtcyBvYmplY3QsIGJ1dCBub3Qgd2hlbiBwYXNzaW5nIG1hdHJpeCBwYXJhbXMgYXMgdGhlIGZpcnN0IGNvbW1hbmQuIEZvciBjb25zaXN0ZW5jeSwgd2hlblxuICAgIC8vIHBhc3NpbmcgbWF0cml4IHBhcmFtcyBhcyB0aGUgZmlyc3QgY29tbWFuZCwgd2UgcHJlcGVuZCBhbiBlbXB0eSBwYXRoIGZvciBBbmd1bGFyIHRvIHRocm93IHRoZSBzYW1lIGVycm9yLlxuICAgIGlmICh0eXBlb2YgY29tbWFuZHNbMF0gPT09ICdvYmplY3QnICYmICghcmVsYXRpdmVUbyB8fCBSb3V0aW5nLmhhc0VtcHR5UGF0aEZyb21Sb290KHJlbGF0aXZlVG8pKSkge1xuICAgICAgY29tbWFuZHMgPSBbJycsIC4uLmNvbW1hbmRzXTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmxUcmVlID0gaW5qZWN0KFJvdXRlcikuY3JlYXRlVXJsVHJlZShjb21tYW5kcywge3JlbGF0aXZlVG99KTtcbiAgICByZXR1cm4gdXJsVHJlZS5yb290LmNoaWxkcmVuW3JlbGF0aXZlVG8/LnBhdGhGcm9tUm9vdFsxXT8ub3V0bGV0ID8/IFBSSU1BUllfT1VUTEVUXT8uc2VnbWVudHMgPz8gW107XG4gIH0sXG5cbiAgLyoqXG4gICAqIFBhcnNlcyB0aGUgZ2l2ZW4gcGF0aCBhbmQgbWF0cml4IHBhcmFtZXRlcnMgaW50byBhbiBhcnJheSBvZiBjb21tYW5kcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlIEFuZ3VsYXIgcm91dGVyIGZvciBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGluc2lkZSBhbiBpbmplY3Rpb24gY29udGV4dC5cbiAgICovXG4gIHBhdGhUb0NvbW1hbmRzOiAocGF0aDogc3RyaW5nKTogQ29tbWFuZHMgPT4ge1xuICAgIGNvbnN0IHVybFRyZWUgPSBpbmplY3QoUm91dGVyKS5wYXJzZVVybChwYXRoKTtcbiAgICBjb25zdCBzZWdtZW50cyA9IHVybFRyZWUucm9vdC5jaGlsZHJlbltQUklNQVJZX09VVExFVF0/LnNlZ21lbnRzO1xuICAgIGlmICghc2VnbWVudHMpIHtcbiAgICAgIHRocm93IEVycm9yKGBbUm91dGVyRXJyb3JdIENhbm5vdCBtYXRjaCBhbnkgcm91dGVzIGZvciBwYXRoICcke3BhdGh9Jy5gKTtcbiAgICB9XG4gICAgcmV0dXJuIFJvdXRpbmcuc2VnbWVudHNUb0NvbW1hbmRzKHNlZ21lbnRzKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIGVmZmVjdGl2ZSAoPWxlYWYpIHtAbGluayBBY3RpdmF0ZWRSb3V0ZX0gYWN0aXZhdGVkIGluIGEgcm91dGVyIG91dGxldC5cbiAgICpcbiAgICogRGVwZW5kaW5nIG9uIHRoZSByb3V0ZSBoaWVyYXJjaHksIHdoZW4gbmF2aWdhdGluZyB0byBhIGNoaWxkIHJvdXRlIHdpdGggY29tcG9uZW50LWxlc3MgcGFyZW50IHJvdXRlcywgdGhlIHJvdXRlIG9mIGFuIG91dGxldCBtYXkgbm90IGJlIHRoZSBlZmZlY3RpdmVseSBhY3RpdmF0ZWQgY2hpbGQgcm91dGUuXG4gICAqL1xuICByZXNvbHZlRWZmZWN0aXZlUm91dGU6IChyb3V0ZTogQWN0aXZhdGVkUm91dGUpOiBBY3RpdmF0ZWRSb3V0ZSA9PiB7XG4gICAgcmV0dXJuIHJvdXRlLmZpcnN0Q2hpbGQgPyBSb3V0aW5nLnJlc29sdmVFZmZlY3RpdmVSb3V0ZShyb3V0ZS5maXJzdENoaWxkKSA6IHJvdXRlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0aGUgZWZmZWN0aXZlICg9bGVhZikge0BsaW5rIE91dGxldENvbnRleHR9IG9mIGEgcm91dGVyIG91dGxldC5cbiAgICpcbiAgICogRGVwZW5kaW5nIG9uIHRoZSByb3V0ZSBoaWVyYXJjaHksIHdoZW4gbmF2aWdhdGluZyB0byBhIGNoaWxkIHJvdXRlIHdpdGggY29tcG9uZW50LWxlc3MgcGFyZW50IHJvdXRlcywgdGhlIGNvbnRleHQgb2YgYW4gb3V0bGV0IG1heSBub3QgYmUgdGhlIGVmZmVjdGl2ZWx5IGFjdGl2YXRlZCBjaGlsZCBjb250ZXh0LlxuICAgKi9cbiAgcmVzb2x2ZUVmZmVjdGl2ZU91dGxldENvbnRleHQ6IChvdXRsZXRDb250ZXh0OiBPdXRsZXRDb250ZXh0IHwgbnVsbCk6IE91dGxldENvbnRleHQgfCBudWxsID0+IHtcbiAgICBjb25zdCBjaGlsZE91dGxldENvbnRleHQgPSBvdXRsZXRDb250ZXh0Py5jaGlsZHJlbi5nZXRDb250ZXh0KFBSSU1BUllfT1VUTEVUKTtcbiAgICByZXR1cm4gY2hpbGRPdXRsZXRDb250ZXh0ID8gUm91dGluZy5yZXNvbHZlRWZmZWN0aXZlT3V0bGV0Q29udGV4dChjaGlsZE91dGxldENvbnRleHQpIDogb3V0bGV0Q29udGV4dDtcbiAgfSxcblxuICAvKipcbiAgICogTG9va3MgZm9yIHJlcXVlc3RlZCBkYXRhIG9uIGdpdmVuIHJvdXRlLCBvciBpdHMgcGFyZW50IHJvdXRlKHMpIGlmIG5vdCBmb3VuZC5cbiAgICovXG4gIGxvb2t1cFJvdXRlRGF0YTogPFQ+KGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBkYXRhS2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkID0+IHtcbiAgICByZXR1cm4gYWN0aXZhdGVkUm91dGUucGF0aEZyb21Sb290LnJlZHVjZVJpZ2h0KChyZXNvbHZlZERhdGEsIHJvdXRlKSA9PiByZXNvbHZlZERhdGEgPz8gcm91dGUuZGF0YVtkYXRhS2V5XSwgdW5kZWZpbmVkKTtcbiAgfSxcblxuICAvKipcbiAgICogVGVzdHMgaWYgdGhlIGdpdmVuIG91dGxldCBtYXRjaGVzIHRoZSBmb3JtYXQgb2YgdGhlIHZpZXcgb3V0bGV0LlxuICAgKi9cbiAgaXNWaWV3T3V0bGV0OiAob3V0bGV0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogb3V0bGV0IGlzIFZpZXdJZCA9PiB7XG4gICAgcmV0dXJuIG91dGxldD8uc3RhcnRzV2l0aChWSUVXX0lEX1BSRUZJWCkgPz8gZmFsc2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRlc3RzIGlmIHRoZSBnaXZlbiBvdXRsZXQgbWF0Y2hlcyB0aGUgZm9ybWF0IG9mIGEgcG9wdXAgb3V0bGV0LlxuICAgKi9cbiAgaXNQb3B1cE91dGxldDogKG91dGxldDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCk6IG91dGxldCBpcyBgcG9wdXAuJHtzdHJpbmd9YCA9PiB7XG4gICAgcmV0dXJuIG91dGxldD8uc3RhcnRzV2l0aChQT1BVUF9JRF9QUkVGSVgpID8/IGZhbHNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUZXN0cyBpZiB0aGUgZ2l2ZW4gb3V0bGV0IG1hdGNoZXMgdGhlIGZvcm1hdCBvZiBhIGRpYWxvZyBvdXRsZXQuXG4gICAqL1xuICBpc0RpYWxvZ091dGxldDogKG91dGxldDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCk6IG91dGxldCBpcyBgZGlhbG9nLiR7c3RyaW5nfWAgPT4ge1xuICAgIHJldHVybiBvdXRsZXQ/LnN0YXJ0c1dpdGgoRElBTE9HX0lEX1BSRUZJWCkgPz8gZmFsc2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRlc3RzIGlmIHRoZSBnaXZlbiBvdXRsZXQgbWF0Y2hlcyB0aGUgZm9ybWF0IG9mIGEgbWVzc2FnZSBib3ggb3V0bGV0LlxuICAgKi9cbiAgaXNNZXNzYWdlQm94T3V0bGV0OiAob3V0bGV0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogb3V0bGV0IGlzIGBtZXNzYWdlYm94LiR7c3RyaW5nfWAgPT4ge1xuICAgIHJldHVybiBvdXRsZXQ/LnN0YXJ0c1dpdGgoTUVTU0FHRV9CT1hfSURfUFJFRklYKSA/PyBmYWxzZTtcbiAgfSxcblxuICAvKipcbiAgICogUmVhZHMgdmlldyBvdXRsZXRzIGZyb20gZ2l2ZW4gVVJMLlxuICAgKlxuICAgKiBBIHZpZXcgb3V0bGV0IGNvbnRhaW5zIHRoZSBVUkwgc2VnbWVudHMgb2YgYSB2aWV3IGNvbnRhaW5lZCBpbiB0aGUgd29ya2JlbmNoIGxheW91dC5cbiAgICovXG4gIHBhcnNlVmlld091dGxldHM6ICh1cmw6IFVybFRyZWUpOiBNYXA8Vmlld0lkLCBVcmxTZWdtZW50W10+ID0+IHtcbiAgICBjb25zdCB2aWV3T3V0bGV0cyA9IG5ldyBNYXA8Vmlld0lkLCBVcmxTZWdtZW50W10+KCk7XG4gICAgT2JqZWN0LmVudHJpZXModXJsLnJvb3QuY2hpbGRyZW4pLmZvckVhY2goKFtvdXRsZXQsIHNlZ21lbnRHcm91cF0pID0+IHtcbiAgICAgIGlmIChSb3V0aW5nLmlzVmlld091dGxldChvdXRsZXQpKSB7XG4gICAgICAgIHZpZXdPdXRsZXRzLnNldChvdXRsZXQsIHNlZ21lbnRHcm91cC5zZWdtZW50cyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHZpZXdPdXRsZXRzO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUZXN0cyBpZiBnaXZlbiByb3V0ZSBoYXMgYW4gZW1wdHkgcGF0aCBmcm9tIHJvb3QuXG4gICAqL1xuICBoYXNFbXB0eVBhdGhGcm9tUm9vdChyb3V0ZTogQWN0aXZhdGVkUm91dGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm91dGUuc25hcHNob3QucGF0aEZyb21Sb290LmZsYXRNYXAocm91dGUgPT4gcm91dGUudXJsKS5maWx0ZXIoc2VnbWVudCA9PiBzZWdtZW50LnBhdGgubGVuZ3RoKS5sZW5ndGggPT09IDA7XG4gIH0sXG5cbiAgLyoqXG4gICAqIE9ic2VydmVzIHRoZSByb3V0ZSBhY3RpdmF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIG91dGxldC5cbiAgICpcbiAgICogVGhlIG9ic2VydmFibGUgZW1pdHMgYWZ0ZXIgdGhlIHByZXZpb3VzIGNvbXBvbmVudCBoYXMgYmVlbiBkZXN0cm95ZWQgKGlmIGFueSkgYnV0IGJlZm9yZSBjb25zdHJ1Y3RpbmcgdGhlIG5ldyBjb21wb25lbnQuXG4gICAqXG4gICAqIE9wdGlvbnMgdG8gY29udHJvbCB3aGVuIHRvIGVtaXQ6XG4gICAqIC0gYHJvdXRlQ2hhbmdlYDogRW1pdCBvbmx5IHdoZW4gbmF2aWdhdGluZyB0aGUgb3V0bGV0IHRvIGEgZGlmZmVyZW50IHJvdXRlLlxuICAgKiAtIGByb3V0ZU9yUGFyYW1DaGFuZ2VgOiBFbWl0IHdoZW4gbmF2aWdhdGluZyB0aGUgb3V0bGV0IHRvIGEgZGlmZmVyZW50IHJvdXRlIG9yIGNoYW5naW5nIHBhcmFtcyAobmFtZWQgcGF0aCBwYXJhbXMgb3IgbWF0cml4IHBhcmFtcykuXG4gICAqIC0gYGFsd2F5c2A6IEVtaXQgYXQgZXZlcnkgbmF2aWdhdGlvbiwgZXZlbiBpZiB0aGUgb3V0bGV0IGlzIG5vdCB0aGUgdGFyZ2V0IG9mIHRoZSBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBtdXN0IGJlIGNhbGxlZCB3aXRoaW4gYW4gaW5qZWN0aW9uIGNvbnRleHQuXG4gICAqXG4gICAqIE5vdGU6IExpc3RlbmluZyBmb3Igcm91dGUgYWN0aXZhdGlvbnMvZGVhY3RpdmF0aW9ucyBvbiB0aGUgcm91dGVyIG91dGxldCBhbG9uZSBpcyBpbnN1ZmZpY2llbnQgZm9yIG5lc3RlZCByb3V0ZXMsIGFzIHRoZSBvdXRsZXQgZG9lcyBub3QgcmVwb3J0XG4gICAqIGFjdGl2YXRpb25zL2RlYWN0aXZhdGlvbnMgb2YgY2hpbGQgcm91dGVzLlxuICAgKlxuICAgKiBAcGFyYW0gb3V0bGV0IC0gU3BlY2lmaWVzIHRoZSBvdXRsZXQgdG8gb2JzZXJ2ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb250cm9scyB3aGVuIHRvIGVtaXQgdGhlIG9ic2VydmFibGUuXG4gICAqIEByZXR1cm4gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyBhIHR1cGxlIG9mIHRoZSBwcmV2aW91cyBhbmQgY3VycmVudCByb3V0ZSBzbmFwc2hvdHMuXG4gICAqL1xuICBhY3RpdmF0ZWRSb3V0ZSQob3V0bGV0OiBzdHJpbmcsIG9wdGlvbnM6IHtlbWl0T246ICdyb3V0ZUNoYW5nZScgfCAncm91dGVPclBhcmFtQ2hhbmdlJyB8ICdhbHdheXMnfSk6IE9ic2VydmFibGU8W0FjdGl2YXRlZFJvdXRlU25hcHNob3QgfCBudWxsLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90XT4ge1xuICAgIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIGNvbnN0IGNoaWxkcmVuT3V0bGV0Q29udGV4dHMgPSBpbmplY3QoQ2hpbGRyZW5PdXRsZXRDb250ZXh0cyk7XG5cbiAgICBjb25zdCBvbk5hdmlnYXRpb25TdGFydCQgPSByb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyTmF2aWdhdGlvblN0YXJ0KCkpO1xuICAgIGNvbnN0IG9uQWN0aXZhdGlvblN0YXJ0JCA9IHJvdXRlci5ldmVudHMucGlwZShmaWx0ZXJBY3RpdmF0aW9uU3RhcnQoKSwgZmlsdGVyQnlPdXRsZXQob3V0bGV0KSk7XG4gICAgY29uc3Qgb25BY3RpdmF0aW9uRW5kJCA9IHJvdXRlci5ldmVudHMucGlwZShmaWx0ZXJBY3RpdmF0aW9uRW5kKCksIGZpbHRlckJ5T3V0bGV0KG91dGxldCkpO1xuXG4gICAgLy8gT24gZWFjaCBuYXZpZ2F0aW9uIHN0YXJ0IChgTmF2aWdhdGlvblN0YXJ0YCksIHN1YnNjcmliZSB0byB0aGUgb3V0bGV0J3MgYEFjdGl2YXRpb25TdGFydGAgZXZlbnQgYW5kIHRoZW4gdG8gdGhlIG91dGxldCdzIGRlYWN0aXZhdGUgZXZlbnQsXG4gICAgLy8gZW5hYmxpbmcgY29udGludWluZyBvZiB0aGUgZXhlY3V0aW9uIGNoYWluIGFmdGVyIHRoZSBwcmV2aW91cyBjb21wb25lbnQgaGFzIGJlZW4gZGVzdHJveWVkLlxuICAgIC8vXG4gICAgLy8gSWYgYGVtaXRPbmAgaXMgc2V0IHRvIGBhbHdheXNgLCBhZGRpdGlvbmFsbHkgc3Vic2NyaWJlIHRvIHRoZSBvdXRsZXQncyBgQWN0aXZhdGlvbkVuZGAgZXZlbnQsIHNpbmNlIG5vIGFjdGl2YXRpb24gKGBBY3RpdmF0aW9uU3RhcnRgKSBvY2N1cnMgaWZcbiAgICAvLyB0aGUgb3V0bGV0IGlzIG5vdCBuYXZpZ2F0ZWQgKGUuZy4sIG5hdmlnYXRpbmcgYW5vdGhlciBvdXRsZXQgb3IgdXBkYXRpbmcgcXVlcnkgcGFyYW1zKS5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCBBbmd1bGFyIGFjdGl2YXRlcyBuZXN0ZWQgcm91dGVzIGZyb20gcGFyZW50IHRvIGNoaWxkIGFuZCBkZWFjdGl2YXRlcyB0aGVtIGZyb20gY2hpbGQgdG8gcGFyZW50LCB0cmlnZ2VyaW5nIG11bHRpcGxlIGBBY3RpdmF0aW9uU3RhcnRgXG4gICAgLy8gYW5kIGBBY3RpdmF0aW9uRW5kYCBldmVudHMuIEZvciB0aGUgb3V0bGV0LCB0aGUgbGF0ZXN0IGBBY3RpdmF0aW9uU3RhcnRgIGFuZCB0aGUgZmlyc3QgYEFjdGl2YXRpb25FbmRgIGV2ZW50cyBhcmUgcmVsZXZhbnQuXG4gICAgLy9cbiAgICAvLyBgQWN0aXZhdGlvblN0YXJ0YCBpcyBlbWl0dGVkIG9ubHkgaWYgdGhlIG91dGxldCBpcyBhY3R1YWxseSBuYXZpZ2F0ZWQgKHJvdXRlIG9yIHBhcmFtZXRlciBjaGFuZ2UpLCB3aGVyZWFzIGBBY3RpdmF0aW9uRW5kYCBpcyBhbHdheXMgZW1pdHRlZC5cbiAgICAvL1xuICAgIC8vIElmIGEgbmF2aWdhdGlvbiBpcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MsIHN0YXJ0IGltbWVkaWF0ZWx5LCBhbGxvd2luZyBzdWJzY3JpcHRpb25zIGV2ZW4gZHVyaW5nIG9uZ29pbmcgbmF2aWdhdGlvbiwgc3VjaCBhcyBhZnRlciB0aGUgbmF2aWdhdGlvblxuICAgIC8vIGhhcyBzdGFydGVkLlxuICAgIHJldHVybiBpaWYoKCkgPT4gIXJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpLCBvbk5hdmlnYXRpb25TdGFydCQsIG9uTmF2aWdhdGlvblN0YXJ0JC5waXBlKHN0YXJ0V2l0aCh1bmRlZmluZWQpKSlcbiAgICAgIC5waXBlKFxuICAgICAgICAvLyBTdWJzY3JpYmUgdG8gdGhlIG91dGxldCdzIGBBY3RpdmF0aW9uU3RhcnRgIChhbmQgYWxzbyBgQWN0aXZhdGlvbkVuZGAgaWYgdGhlIGBlbWl0T25gIG9wdGlvbiBpcyBzZXQgdG8gYGFsd2F5c2ApLlxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gb3B0aW9ucy5lbWl0T24gPT09ICdhbHdheXMnID8gcmFjZShvbkFjdGl2YXRpb25TdGFydCQsIG9uQWN0aXZhdGlvbkVuZCQucGlwZSh0YWtlKDEpKSkgOiBvbkFjdGl2YXRpb25TdGFydCQpLFxuICAgICAgICBtYXAoZXZlbnQgPT4gZXZlbnQuc25hcHNob3QpLFxuICAgICAgICBzdGFydFdpdGgobnVsbCBhcyB1bmtub3duIGFzIEFjdGl2YXRlZFJvdXRlU25hcHNob3QpLCAvLyBpbml0aWFsaXplIHBhaXJ3aXNlIG9wZXJhdG9yXG4gICAgICAgIHBhaXJ3aXNlKCksXG4gICAgICAgIHN3aXRjaE1hcCgoW3ByZXZpb3VzLCBjdXJyZW50XTogW0FjdGl2YXRlZFJvdXRlU25hcHNob3QgfCBudWxsLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90XSk6IE9ic2VydmFibGU8W0FjdGl2YXRlZFJvdXRlU25hcHNob3QgfCBudWxsLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90XT4gPT4ge1xuICAgICAgICAgIC8vIElmIHRoZSByb3V0ZSBoYXNuJ3QgY2hhbmdlZCBhbmQgYGVtaXRPbmAgaXMgc2V0IHRvIGBhbHdheXNgIG9yIGByb3V0ZU9yUGFyYW1DaGFuZ2VgLCBlbWl0IGltbWVkaWF0ZWx5IHNpbmNlIG5vIGRlYWN0aXZhdGlvbiB3aWxsIG9jY3VyLlxuICAgICAgICAgIGNvbnN0IHJvdXRlQ2hhbmdlZCA9IHByZXZpb3VzPy5yb3V0ZUNvbmZpZyAhPT0gY3VycmVudC5yb3V0ZUNvbmZpZztcbiAgICAgICAgICBpZiAoIXJvdXRlQ2hhbmdlZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZW1pdE9uID09PSAncm91dGVDaGFuZ2UnID8gRU1QVFkgOiBvZihbcHJldmlvdXMsIGN1cnJlbnRdKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIHByZXZpb3VzbHkgYWN0aXZhdGVkIGNvbXBvbmVudCBpbiB0aGUgb3V0bGV0LCBlbWl0IGltbWVkaWF0ZWx5IHNpbmNlIG5vIGRlYWN0aXZhdGlvbiB3aWxsIG9jY3VyLlxuICAgICAgICAgIGNvbnN0IG91dGxldENvbnRleHQgPSBSb3V0aW5nLnJlc29sdmVFZmZlY3RpdmVPdXRsZXRDb250ZXh0KGNoaWxkcmVuT3V0bGV0Q29udGV4dHMuZ2V0Q29udGV4dChvdXRsZXQpKTtcbiAgICAgICAgICBpZiAoIW91dGxldENvbnRleHQ/Lm91dGxldD8uaXNBY3RpdmF0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihbcHJldmlvdXMsIGN1cnJlbnRdKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBEZWxheSBlbWlzc2lvbiB1bnRpbCB0aGUgcHJldmlvdXNseSBhY3RpdmF0ZWQgY29tcG9uZW50IGhhcyBiZWVuIGRlc3Ryb3llZCBieSBzdWJzY3JpYmluZyB0byB0aGUgb3V0bGV0J3MgZGVhY3RpdmF0aW9uIGV2ZW50LlxuICAgICAgICAgIC8vIE5lc3RlZCByb3V0ZXMgYWN0aXZhdGUgZnJvbSBwYXJlbnQgdG8gY2hpbGQsIGNhbmNlbGluZyBcImRlYWN0aXZhdGlvblwiIHN1YnNjcmlwdGlvbnMgb2YgcGFyZW50IG91dGxldHMsIHNvIG9ubHkgdGhlIGRlYWN0aXZhdGlvbiBvZiB0aGUgYWN0dWFsIG91dGxldCBpcyBlbWl0dGVkLlxuICAgICAgICAgIHJldHVybiBvdXRsZXRDb250ZXh0Lm91dGxldC5kZWFjdGl2YXRlRXZlbnRzIS5waXBlKG1hcCgoKSA9PiBbcHJldmlvdXMsIGN1cnJlbnRdKSk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlcnMge0BsaW5rIE5hdmlnYXRpb25TdGFydH0gcm91dGVyIGV2ZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaWx0ZXJOYXZpZ2F0aW9uU3RhcnQoKTogT3BlcmF0b3JGdW5jdGlvbjxFdmVudCB8IFJvdXRlckV2ZW50LCBOYXZpZ2F0aW9uU3RhcnQ+IHtcbiAgICAgIHJldHVybiBmaWx0ZXIoKGV2ZW50OiBFdmVudCB8IFJvdXRlckV2ZW50KTogZXZlbnQgaXMgTmF2aWdhdGlvblN0YXJ0ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXJzIHtAbGluayBBY3RpdmF0aW9uU3RhcnR9IHJvdXRlciBldmVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmlsdGVyQWN0aXZhdGlvblN0YXJ0KCk6IE9wZXJhdG9yRnVuY3Rpb248RXZlbnQgfCBSb3V0ZXJFdmVudCwgQWN0aXZhdGlvblN0YXJ0PiB7XG4gICAgICByZXR1cm4gZmlsdGVyKChldmVudDogRXZlbnQgfCBSb3V0ZXJFdmVudCk6IGV2ZW50IGlzIEFjdGl2YXRpb25TdGFydCA9PiBldmVudCBpbnN0YW5jZW9mIEFjdGl2YXRpb25TdGFydCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsdGVycyB7QGxpbmsgQWN0aXZhdGlvbkVuZH0gcm91dGVyIGV2ZW50cy4gVGhpcyBldmVudCBpcyBlbWl0dGVkIGZvciBlYWNoIG91dGxldCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgaGFzIGJlZW4gbmF2aWdhdGVkIG9yIG5vdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaWx0ZXJBY3RpdmF0aW9uRW5kKCk6IE9wZXJhdG9yRnVuY3Rpb248RXZlbnQgfCBSb3V0ZXJFdmVudCwgQWN0aXZhdGlvbkVuZD4ge1xuICAgICAgcmV0dXJuIGZpbHRlcigoZXZlbnQ6IEV2ZW50IHwgUm91dGVyRXZlbnQpOiBldmVudCBpcyBBY3RpdmF0aW9uRW5kID0+IGV2ZW50IGluc3RhbmNlb2YgQWN0aXZhdGlvbkVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsdGVycyByb3V0ZXIgZXZlbnRzIGZvciB0aGUgc3BlY2lmaWVkIG91dGxldC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaWx0ZXJCeU91dGxldDxUIGV4dGVuZHMgQWN0aXZhdGlvblN0YXJ0IHwgQWN0aXZhdGlvbkVuZD4ob3V0bGV0OiBzdHJpbmcpOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248VD4ge1xuICAgICAgcmV0dXJuIGZpbHRlcihldmVudCA9PiBldmVudC5zbmFwc2hvdC5wYXRoRnJvbVJvb3RbMV0/Lm91dGxldCA9PT0gb3V0bGV0KTtcbiAgICB9XG4gIH0sXG59IGFzIGNvbnN0O1xuXG4iXX0=
@@ -43,4 +43,4 @@ export class UrlSegmentMatcher {
43
43
  });
44
44
  }
45
45
  }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLXNlZ21lbnQtbWF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3JvdXRpbmcvdXJsLXNlZ21lbnQtbWF0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUdILE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUU1Qzs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLFlBQW9CLFFBQXNCLEVBQVUsTUFBZ0U7UUFBaEcsYUFBUSxHQUFSLFFBQVEsQ0FBYztRQUFVLFdBQU0sR0FBTixNQUFNLENBQTBEO0lBQ3BILENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU8sQ0FBQyxRQUFzQjtRQUNuQyxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzlCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDNUMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN2QyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7WUFDeEQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQztZQUV0RixJQUFJLFNBQVMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUMzRCxPQUFPLEtBQUssQ0FBQzthQUNkO1lBQ0QsSUFBSSxpQkFBaUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUM5RixPQUFPLEtBQUssQ0FBQzthQUNkO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtVcmxTZWdtZW50fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtPYmplY3RzfSBmcm9tICdAc2Npb24vdG9vbGtpdC91dGlsJztcblxuLyoqXG4gKiBNYXRjaGVzIGFuIGFycmF5IG9mIFVSTCBzZWdtZW50cyBhZ2FpbnN0IGFub3RoZXIgYXJyYXkgb2YgVVJMIHNlZ21lbnRzLlxuICpcbiAqIEZsYWdzOlxuICogLSBtYXRjaFdpbGRjYXJkUGF0aDogSW5kaWNhdGVzIGlmIHdpbGRjYXJkIHBhdGggbWF0Y2hpbmcgaXMgZW5hYmxlZC4gSWYgZW5hYmxlZCwgdGhlIGFzdGVyaXNrIGAqYCBwYXRoIG1hdGNoZXMgYW55IHBhdGggb2YgYSBzZWdtZW50LlxuICogLSBtYXRjaE1hdHJpeFBhcmFtczogQ29udHJvbHMgd2hldGhlciB0byBtYXRjaCBtYXRyaXggcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIFVybFNlZ21lbnRNYXRjaGVyIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9wYXR0ZXJuOiBVcmxTZWdtZW50W10sIHByaXZhdGUgX2ZsYWdzOiB7bWF0Y2hXaWxkY2FyZFBhdGg6IGJvb2xlYW47IG1hdGNoTWF0cml4UGFyYW1zOiBib29sZWFufSkge1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgZ2l2ZW4gYXJyYXkgb2YgVVJMIHNlZ21lbnRzLlxuICAgKi9cbiAgcHVibGljIG1hdGNoZXMoc2VnbWVudHM6IFVybFNlZ21lbnRbXSk6IGJvb2xlYW4ge1xuICAgIGlmIChzZWdtZW50cyA9PT0gdGhpcy5fcGF0dGVybikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHNlZ21lbnRzLmxlbmd0aCAhPT0gdGhpcy5fcGF0dGVybi5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VnbWVudHMuZXZlcnkoKHNlZ21lbnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBjaGVja01hdHJpeFBhcmFtcyA9IHRoaXMuX2ZsYWdzLm1hdGNoTWF0cml4UGFyYW1zO1xuICAgICAgY29uc3QgY2hlY2tQYXRoID0gIXRoaXMuX2ZsYWdzLm1hdGNoV2lsZGNhcmRQYXRoIHx8IHRoaXMuX3BhdHRlcm5baW5kZXhdLnBhdGggIT09ICcqJztcblxuICAgICAgaWYgKGNoZWNrUGF0aCAmJiBzZWdtZW50LnBhdGggIT09IHRoaXMuX3BhdHRlcm5baW5kZXhdLnBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrTWF0cml4UGFyYW1zICYmICFPYmplY3RzLmlzRXF1YWwoc2VnbWVudC5wYXJhbWV0ZXJzLCB0aGlzLl9wYXR0ZXJuW2luZGV4XS5wYXJhbWV0ZXJzKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxufVxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLXNlZ21lbnQtbWF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3JvdXRpbmcvdXJsLXNlZ21lbnQtbWF0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUdILE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUU1Qzs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLFlBQW9CLFFBQXNCLEVBQVUsTUFBZ0U7UUFBaEcsYUFBUSxHQUFSLFFBQVEsQ0FBYztRQUFVLFdBQU0sR0FBTixNQUFNLENBQTBEO0lBQ3BILENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU8sQ0FBQyxRQUFzQjtRQUNuQyxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDL0IsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0MsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztZQUN4RCxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDO1lBRXRGLElBQUksU0FBUyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDNUQsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsSUFBSSxpQkFBaUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQy9GLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7VXJsU2VnbWVudH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7T2JqZWN0c30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5cbi8qKlxuICogTWF0Y2hlcyBhbiBhcnJheSBvZiBVUkwgc2VnbWVudHMgYWdhaW5zdCBhbm90aGVyIGFycmF5IG9mIFVSTCBzZWdtZW50cy5cbiAqXG4gKiBGbGFnczpcbiAqIC0gbWF0Y2hXaWxkY2FyZFBhdGg6IEluZGljYXRlcyBpZiB3aWxkY2FyZCBwYXRoIG1hdGNoaW5nIGlzIGVuYWJsZWQuIElmIGVuYWJsZWQsIHRoZSBhc3RlcmlzayBgKmAgcGF0aCBtYXRjaGVzIGFueSBwYXRoIG9mIGEgc2VnbWVudC5cbiAqIC0gbWF0Y2hNYXRyaXhQYXJhbXM6IENvbnRyb2xzIHdoZXRoZXIgdG8gbWF0Y2ggbWF0cml4IHBhcmFtZXRlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBVcmxTZWdtZW50TWF0Y2hlciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcGF0dGVybjogVXJsU2VnbWVudFtdLCBwcml2YXRlIF9mbGFnczoge21hdGNoV2lsZGNhcmRQYXRoOiBib29sZWFuOyBtYXRjaE1hdHJpeFBhcmFtczogYm9vbGVhbn0pIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIGdpdmVuIGFycmF5IG9mIFVSTCBzZWdtZW50cy5cbiAgICovXG4gIHB1YmxpYyBtYXRjaGVzKHNlZ21lbnRzOiBVcmxTZWdtZW50W10pOiBib29sZWFuIHtcbiAgICBpZiAoc2VnbWVudHMgPT09IHRoaXMuX3BhdHRlcm4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzZWdtZW50cy5sZW5ndGggIT09IHRoaXMuX3BhdHRlcm4ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlZ21lbnRzLmV2ZXJ5KChzZWdtZW50LCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY2hlY2tNYXRyaXhQYXJhbXMgPSB0aGlzLl9mbGFncy5tYXRjaE1hdHJpeFBhcmFtcztcbiAgICAgIGNvbnN0IGNoZWNrUGF0aCA9ICF0aGlzLl9mbGFncy5tYXRjaFdpbGRjYXJkUGF0aCB8fCB0aGlzLl9wYXR0ZXJuW2luZGV4XS5wYXRoICE9PSAnKic7XG5cbiAgICAgIGlmIChjaGVja1BhdGggJiYgc2VnbWVudC5wYXRoICE9PSB0aGlzLl9wYXR0ZXJuW2luZGV4XS5wYXRoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja01hdHJpeFBhcmFtcyAmJiAhT2JqZWN0cy5pc0VxdWFsKHNlZ21lbnQucGFyYW1ldGVycywgdGhpcy5fcGF0dGVybltpbmRleF0ucGFyYW1ldGVycykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,110 @@
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, Injectable, InjectionToken } from '@angular/core';
11
+ import { PRIMARY_OUTLET } from '@angular/router';
12
+ import PageNotFoundComponent from '../page-not-found/page-not-found.component';
13
+ import { WorkbenchRouteData } from './workbench-route-data';
14
+ import { ɵEmptyOutletComponent } from './empty-outlet/empty-outlet.component';
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "../workbench-config";
17
+ import * as i2 from "@angular/router";
18
+ /**
19
+ * Facilitates the registration of auxiliary routes of top-level routes.
20
+ */
21
+ export class WorkbenchAuxiliaryRouteInstaller {
22
+ constructor(_workbenchConfig, _router) {
23
+ this._workbenchConfig = _workbenchConfig;
24
+ this._router = _router;
25
+ }
26
+ /**
27
+ * Registers an auxiliary route for each top-level route, enabling navigation in the specified router outlet(s).
28
+ *
29
+ * @param outlets - Specifies outlets for which to create auxiliary routes.
30
+ * @param config - Specifies the config of the auxiliary routes.
31
+ */
32
+ registerAuxiliaryRoutes(outlets, config = {}) {
33
+ if (!outlets.length) {
34
+ return [];
35
+ }
36
+ const registeredRoutes = outlets.map(outlet => ({
37
+ path: '',
38
+ outlet,
39
+ providers: [{ provide: WORKBENCH_AUXILIARY_ROUTE_OUTLET, useValue: outlet }],
40
+ component: ɵEmptyOutletComponent,
41
+ children: [
42
+ ...this._router.config
43
+ .filter(route => !route.outlet || route.outlet === PRIMARY_OUTLET)
44
+ .map(route => ({ ...route, data: { ...route.data, [WorkbenchRouteData.ɵoutlet]: outlet } })),
45
+ // Register wildcard route to display "Page Not Found".
46
+ {
47
+ path: '**',
48
+ loadComponent: () => this._workbenchConfig.pageNotFoundComponent ?? PageNotFoundComponent,
49
+ data: { [WorkbenchRouteData.title]: 'Page Not Found', [WorkbenchRouteData.cssClass]: 'e2e-page-not-found' },
50
+ canMatch: config.canMatchNotFoundPage,
51
+ },
52
+ // Register wildcard route to display blank page.
53
+ {
54
+ path: '**',
55
+ component: BlankComponent,
56
+ },
57
+ ],
58
+ }));
59
+ this.replaceRouterConfig([
60
+ ...this._router.config,
61
+ ...registeredRoutes,
62
+ ]);
63
+ return registeredRoutes;
64
+ }
65
+ /**
66
+ * Unregisters auxiliary routes for the given outlet.
67
+ */
68
+ unregisterAuxiliaryRoutes(outlets) {
69
+ const outletsToRemove = new Set(outlets);
70
+ function shouldRemoveRoute(route) {
71
+ return !!route.outlet && outletsToRemove.has(route.outlet);
72
+ }
73
+ this.replaceRouterConfig(this._router.config.filter(route => !shouldRemoveRoute(route)));
74
+ }
75
+ /**
76
+ * Replaces the router configuration to install or uninstall auxiliary routes.
77
+ */
78
+ replaceRouterConfig(config) {
79
+ // Note:
80
+ // - Do not use Router.resetConfig(...) which would destroy any currently routed component because copying all routes
81
+ // - Do not assign the router a new Routes object (Router.config = ...) to allow resolution of routes added during `NavigationStart` (since Angular 7.x)
82
+ // (because Angular uses a reference to the Routes object during route navigation)
83
+ const newRoutes = [...config];
84
+ this._router.config.splice(0, this._router.config.length, ...newRoutes);
85
+ }
86
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchAuxiliaryRouteInstaller, deps: [{ token: i1.WorkbenchConfig }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
87
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchAuxiliaryRouteInstaller, providedIn: 'root' }); }
88
+ }
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchAuxiliaryRouteInstaller, decorators: [{
90
+ type: Injectable,
91
+ args: [{ providedIn: 'root' }]
92
+ }], ctorParameters: () => [{ type: i1.WorkbenchConfig }, { type: i2.Router }] });
93
+ /**
94
+ * DI token to inject the outlet name of a workbench auxiliary route.
95
+ *
96
+ * Can be injected in a `CanMatch` guard to obtain a reference to the workbench element.
97
+ */
98
+ export const WORKBENCH_AUXILIARY_ROUTE_OUTLET = new InjectionToken('ɵWORKBENCH_AUXILIARY_ROUTE_OUTLET');
99
+ /**
100
+ * Component to display if the outlet has not yet been navigated or no navigation information is available.
101
+ */
102
+ export class BlankComponent {
103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: BlankComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: BlankComponent, isStandalone: true, selector: "wb-blank", ngImport: i0, template: '', isInline: true }); }
105
+ }
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: BlankComponent, decorators: [{
107
+ type: Component,
108
+ args: [{ selector: 'wb-blank', template: '', standalone: true }]
109
+ }] });
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWF1eGlsaWFyeS1yb3V0ZS1pbnN0YWxsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3JvdXRpbmcvd29ya2JlbmNoLWF1eGlsaWFyeS1yb3V0ZS1pbnN0YWxsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7RUFRRTtBQUVGLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQWEsY0FBYyxFQUF3QixNQUFNLGlCQUFpQixDQUFDO0FBRWxGLE9BQU8scUJBQXFCLE1BQU0sNENBQTRDLENBQUM7QUFDL0UsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7Ozs7QUFFNUU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZ0NBQWdDO0lBRTNDLFlBQW9CLGdCQUFpQyxFQUFVLE9BQWU7UUFBMUQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFDOUUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksdUJBQXVCLENBQUMsT0FBaUIsRUFBRSxTQUErQixFQUFFO1FBQ2pGLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5QyxJQUFJLEVBQUUsRUFBRTtZQUNSLE1BQU07WUFDTixTQUFTLEVBQUUsQ0FBQyxFQUFDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFDLENB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YykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbipcbiogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbipcbiogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Nhbk1hdGNoRm4sIFBSSU1BUllfT1VUTEVULCBSb3V0ZSwgUm91dGVyLCBSb3V0ZXN9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1dvcmtiZW5jaENvbmZpZ30gZnJvbSAnLi4vd29ya2JlbmNoLWNvbmZpZyc7XG5pbXBvcnQgUGFnZU5vdEZvdW5kQ29tcG9uZW50IGZyb20gJy4uL3BhZ2Utbm90LWZvdW5kL3BhZ2Utbm90LWZvdW5kLmNvbXBvbmVudCc7XG5pbXBvcnQge1dvcmtiZW5jaFJvdXRlRGF0YX0gZnJvbSAnLi93b3JrYmVuY2gtcm91dGUtZGF0YSc7XG5pbXBvcnQge8m1RW1wdHlPdXRsZXRDb21wb25lbnR9IGZyb20gJy4vZW1wdHktb3V0bGV0L2VtcHR5LW91dGxldC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEZhY2lsaXRhdGVzIHRoZSByZWdpc3RyYXRpb24gb2YgYXV4aWxpYXJ5IHJvdXRlcyBvZiB0b3AtbGV2ZWwgcm91dGVzLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hBdXhpbGlhcnlSb3V0ZUluc3RhbGxlciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfd29ya2JlbmNoQ29uZmlnOiBXb3JrYmVuY2hDb25maWcsIHByaXZhdGUgX3JvdXRlcjogUm91dGVyKSB7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGFuIGF1eGlsaWFyeSByb3V0ZSBmb3IgZWFjaCB0b3AtbGV2ZWwgcm91dGUsIGVuYWJsaW5nIG5hdmlnYXRpb24gaW4gdGhlIHNwZWNpZmllZCByb3V0ZXIgb3V0bGV0KHMpLlxuICAgKlxuICAgKiBAcGFyYW0gb3V0bGV0cyAtIFNwZWNpZmllcyBvdXRsZXRzIGZvciB3aGljaCB0byBjcmVhdGUgYXV4aWxpYXJ5IHJvdXRlcy5cbiAgICogQHBhcmFtIGNvbmZpZyAtIFNwZWNpZmllcyB0aGUgY29uZmlnIG9mIHRoZSBhdXhpbGlhcnkgcm91dGVzLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQXV4aWxpYXJ5Um91dGVzKG91dGxldHM6IHN0cmluZ1tdLCBjb25maWc6IEF1eGlsaWFyeVJvdXRlQ29uZmlnID0ge30pOiBSb3V0ZXMge1xuICAgIGlmICghb3V0bGV0cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCByZWdpc3RlcmVkUm91dGVzID0gb3V0bGV0cy5tYXAob3V0bGV0ID0+ICh7XG4gICAgICBwYXRoOiAnJyxcbiAgICAgIG91dGxldCxcbiAgICAgIHByb3ZpZGVyczogW3twcm92aWRlOiBXT1JLQkVOQ0hfQVVYSUxJQVJZX1JPVVRFX09VVExFVCwgdXNlVmFsdWU6IG91dGxldH1dLFxuICAgICAgY29tcG9uZW50OiDJtUVtcHR5T3V0bGV0Q29tcG9uZW50LFxuICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgLi4udGhpcy5fcm91dGVyLmNvbmZpZ1xuICAgICAgICAgIC5maWx0ZXIocm91dGUgPT4gIXJvdXRlLm91dGxldCB8fCByb3V0ZS5vdXRsZXQgPT09IFBSSU1BUllfT1VUTEVUKVxuICAgICAgICAgIC5tYXAocm91dGUgPT4gKHsuLi5yb3V0ZSwgZGF0YTogey4uLnJvdXRlLmRhdGEsIFtXb3JrYmVuY2hSb3V0ZURhdGEuybVvdXRsZXRdOiBvdXRsZXR9fSkpLFxuICAgICAgICAvLyBSZWdpc3RlciB3aWxkY2FyZCByb3V0ZSB0byBkaXNwbGF5IFwiUGFnZSBOb3QgRm91bmRcIi5cbiAgICAgICAge1xuICAgICAgICAgIHBhdGg6ICcqKicsXG4gICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gdGhpcy5fd29ya2JlbmNoQ29uZmlnLnBhZ2VOb3RGb3VuZENvbXBvbmVudCA/PyBQYWdlTm90Rm91bmRDb21wb25lbnQsXG4gICAgICAgICAgZGF0YToge1tXb3JrYmVuY2hSb3V0ZURhdGEudGl0bGVdOiAnUGFnZSBOb3QgRm91bmQnLCBbV29ya2JlbmNoUm91dGVEYXRhLmNzc0NsYXNzXTogJ2UyZS1wYWdlLW5vdC1mb3VuZCd9LFxuICAgICAgICAgIGNhbk1hdGNoOiBjb25maWcuY2FuTWF0Y2hOb3RGb3VuZFBhZ2UsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIFJlZ2lzdGVyIHdpbGRjYXJkIHJvdXRlIHRvIGRpc3BsYXkgYmxhbmsgcGFnZS5cbiAgICAgICAge1xuICAgICAgICAgIHBhdGg6ICcqKicsXG4gICAgICAgICAgY29tcG9uZW50OiBCbGFua0NvbXBvbmVudCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSBzYXRpc2ZpZXMgUm91dGUpKTtcblxuICAgIHRoaXMucmVwbGFjZVJvdXRlckNvbmZpZyhbXG4gICAgICAuLi50aGlzLl9yb3V0ZXIuY29uZmlnLFxuICAgICAgLi4ucmVnaXN0ZXJlZFJvdXRlcyxcbiAgICBdKTtcblxuICAgIHJldHVybiByZWdpc3RlcmVkUm91dGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXJzIGF1eGlsaWFyeSByb3V0ZXMgZm9yIHRoZSBnaXZlbiBvdXRsZXQuXG4gICAqL1xuICBwdWJsaWMgdW5yZWdpc3RlckF1eGlsaWFyeVJvdXRlcyhvdXRsZXRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGNvbnN0IG91dGxldHNUb1JlbW92ZSA9IG5ldyBTZXQ8c3RyaW5nPihvdXRsZXRzKTtcblxuICAgIGZ1bmN0aW9uIHNob3VsZFJlbW92ZVJvdXRlKHJvdXRlOiBSb3V0ZSk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuICEhcm91dGUub3V0bGV0ICYmIG91dGxldHNUb1JlbW92ZS5oYXMocm91dGUub3V0bGV0KTtcbiAgICB9XG5cbiAgICB0aGlzLnJlcGxhY2VSb3V0ZXJDb25maWcodGhpcy5fcm91dGVyLmNvbmZpZy5maWx0ZXIocm91dGUgPT4gIXNob3VsZFJlbW92ZVJvdXRlKHJvdXRlKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIHRoZSByb3V0ZXIgY29uZmlndXJhdGlvbiB0byBpbnN0YWxsIG9yIHVuaW5zdGFsbCBhdXhpbGlhcnkgcm91dGVzLlxuICAgKi9cbiAgcHJpdmF0ZSByZXBsYWNlUm91dGVyQ29uZmlnKGNvbmZpZzogUm91dGVzKTogdm9pZCB7XG4gICAgLy8gTm90ZTpcbiAgICAvLyAgIC0gRG8gbm90IHVzZSBSb3V0ZXIucmVzZXRDb25maWcoLi4uKSB3aGljaCB3b3VsZCBkZXN0cm95IGFueSBjdXJyZW50bHkgcm91dGVkIGNvbXBvbmVudCBiZWNhdXNlIGNvcHlpbmcgYWxsIHJvdXRlc1xuICAgIC8vICAgLSBEbyBub3QgYXNzaWduIHRoZSByb3V0ZXIgYSBuZXcgUm91dGVzIG9iamVjdCAoUm91dGVyLmNvbmZpZyA9IC4uLikgdG8gYWxsb3cgcmVzb2x1dGlvbiBvZiByb3V0ZXMgYWRkZWQgZHVyaW5nIGBOYXZpZ2F0aW9uU3RhcnRgIChzaW5jZSBBbmd1bGFyIDcueClcbiAgICAvLyAgICAgKGJlY2F1c2UgQW5ndWxhciB1c2VzIGEgcmVmZXJlbmNlIHRvIHRoZSBSb3V0ZXMgb2JqZWN0IGR1cmluZyByb3V0ZSBuYXZpZ2F0aW9uKVxuICAgIGNvbnN0IG5ld1JvdXRlczogUm91dGVzID0gWy4uLmNvbmZpZ107XG4gICAgdGhpcy5fcm91dGVyLmNvbmZpZy5zcGxpY2UoMCwgdGhpcy5fcm91dGVyLmNvbmZpZy5sZW5ndGgsIC4uLm5ld1JvdXRlcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25maWd1cmVzIGF1eGlsaWFyeSByb3V0ZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV4aWxpYXJ5Um91dGVDb25maWcge1xuICAvKipcbiAgICogU3BlY2lmaWVzIFwiQ2FuTWF0Y2hcIiBndWFyZChzKSB0byBpbnN0YWxsIG9uIHRoZSB3aWxkY2FyZCByb3V0ZSAoYCoqYCksXG4gICAqIHNlbGVjdGVkIGJ5IHRoZSByb3V0ZXIgaWYgbm8gcm91dGUgbWF0Y2hlcyB0aGUgcmVxdWVzdGVkIFVSTC5cbiAgICovXG4gIGNhbk1hdGNoTm90Rm91bmRQYWdlPzogQXJyYXk8Q2FuTWF0Y2hGbj47XG59XG5cbi8qKlxuICogREkgdG9rZW4gdG8gaW5qZWN0IHRoZSBvdXRsZXQgbmFtZSBvZiBhIHdvcmtiZW5jaCBhdXhpbGlhcnkgcm91dGUuXG4gKlxuICogQ2FuIGJlIGluamVjdGVkIGluIGEgYENhbk1hdGNoYCBndWFyZCB0byBvYnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIHdvcmtiZW5jaCBlbGVtZW50LlxuICovXG5leHBvcnQgY29uc3QgV09SS0JFTkNIX0FVWElMSUFSWV9ST1VURV9PVVRMRVQgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignybVXT1JLQkVOQ0hfQVVYSUxJQVJZX1JPVVRFX09VVExFVCcpO1xuXG4vKipcbiAqIENvbXBvbmVudCB0byBkaXNwbGF5IGlmIHRoZSBvdXRsZXQgaGFzIG5vdCB5ZXQgYmVlbiBuYXZpZ2F0ZWQgb3Igbm8gbmF2aWdhdGlvbiBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUuXG4gKi9cbkBDb21wb25lbnQoe3NlbGVjdG9yOiAnd2ItYmxhbmsnLCB0ZW1wbGF0ZTogJycsIHN0YW5kYWxvbmU6IHRydWV9KVxuZXhwb3J0IGNsYXNzIEJsYW5rQ29tcG9uZW50IHtcbn1cbiJdfQ==
@@ -8,7 +8,7 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
10
  import { Injectable } from '@angular/core';
11
- import { RouterUtils } from './router.util';
11
+ import { Routing } from './routing.util';
12
12
  import * as i0 from "@angular/core";
13
13
  /**
14
14
  * Stateful differ for finding added/removed dialogs.
@@ -21,13 +21,13 @@ export class WorkbenchDialogDiffer {
21
21
  * Computes differences in the URL since last time {@link WorkbenchDialogDiffer#diff} was invoked.
22
22
  */
23
23
  diff(urlTree) {
24
- const dialogOutlets = Object.keys(urlTree.root.children).filter(RouterUtils.isDialogOutlet);
24
+ const dialogOutlets = Object.keys(urlTree.root.children).filter(Routing.isDialogOutlet);
25
25
  return new WorkbenchDialogDiff(this._dialogDiffer.diff(dialogOutlets));
26
26
  }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchDialogDiffer, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Injectable }); }
28
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchDialogDiffer, providedIn: 'root' }); }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogDiffer, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Injectable }); }
28
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogDiffer, providedIn: 'root' }); }
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchDialogDiffer, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogDiffer, decorators: [{
31
31
  type: Injectable,
32
32
  args: [{ providedIn: 'root' }]
33
33
  }], ctorParameters: () => [{ type: i0.IterableDiffers }] });
@@ -48,4 +48,4 @@ export class WorkbenchDialogDiff {
48
48
  .join(', ')}`;
49
49
  }
50
50
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWRpYWxvZy1kaWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9yb3V0aW5nL3dvcmtiZW5jaC1kaWFsb2ctZGlmZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBbUQsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFMUM7O0dBRUc7QUFFSCxNQUFNLE9BQU8scUJBQXFCO0lBSWhDLFlBQVksT0FBd0I7UUFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBVSxDQUFDO0lBQ3pELENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUksQ0FBQyxPQUFnQjtRQUMxQixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUU1RixPQUFPLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDOzhHQWZVLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRFQsTUFBTTs7MkZBQ2xCLHFCQUFxQjtrQkFEakMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBbUJoQzs7R0FFRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFLOUIsWUFBWSxPQUF1QztRQUhuQyx1QkFBa0IsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ3pDLHlCQUFvQixHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFHekQsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sR0FBRyxJQUFJLEtBQUssRUFBVTthQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsdUJBQXVCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDL0YsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ3JHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlLCBJdGVyYWJsZUNoYW5nZXMsIEl0ZXJhYmxlRGlmZmVyLCBJdGVyYWJsZURpZmZlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtVcmxUcmVlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtSb3V0ZXJVdGlsc30gZnJvbSAnLi9yb3V0ZXIudXRpbCc7XG5cbi8qKlxuICogU3RhdGVmdWwgZGlmZmVyIGZvciBmaW5kaW5nIGFkZGVkL3JlbW92ZWQgZGlhbG9ncy5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoRGlhbG9nRGlmZmVyIHtcblxuICBwcml2YXRlIF9kaWFsb2dEaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IoZGlmZmVyczogSXRlcmFibGVEaWZmZXJzKSB7XG4gICAgdGhpcy5fZGlhbG9nRGlmZmVyID0gZGlmZmVycy5maW5kKFtdKS5jcmVhdGU8c3RyaW5nPigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIGRpZmZlcmVuY2VzIGluIHRoZSBVUkwgc2luY2UgbGFzdCB0aW1lIHtAbGluayBXb3JrYmVuY2hEaWFsb2dEaWZmZXIjZGlmZn0gd2FzIGludm9rZWQuXG4gICAqL1xuICBwdWJsaWMgZGlmZih1cmxUcmVlOiBVcmxUcmVlKTogV29ya2JlbmNoRGlhbG9nRGlmZiB7XG4gICAgY29uc3QgZGlhbG9nT3V0bGV0cyA9IE9iamVjdC5rZXlzKHVybFRyZWUucm9vdC5jaGlsZHJlbikuZmlsdGVyKFJvdXRlclV0aWxzLmlzRGlhbG9nT3V0bGV0KTtcblxuICAgIHJldHVybiBuZXcgV29ya2JlbmNoRGlhbG9nRGlmZih0aGlzLl9kaWFsb2dEaWZmZXIuZGlmZihkaWFsb2dPdXRsZXRzKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBMaXN0cyB0aGUgZGlhbG9ncyBhZGRlZC9yZW1vdmVkIGluIHRoZSBjdXJyZW50IG5hdmlnYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hEaWFsb2dEaWZmIHtcblxuICBwdWJsaWMgcmVhZG9ubHkgYWRkZWREaWFsb2dPdXRsZXRzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHJlbW92ZWREaWFsb2dPdXRsZXRzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihjaGFuZ2VzOiBJdGVyYWJsZUNoYW5nZXM8c3RyaW5nPiB8IG51bGwpIHtcbiAgICBjaGFuZ2VzPy5mb3JFYWNoQWRkZWRJdGVtKCh7aXRlbX0pID0+IHRoaXMuYWRkZWREaWFsb2dPdXRsZXRzLnB1c2goaXRlbSkpO1xuICAgIGNoYW5nZXM/LmZvckVhY2hSZW1vdmVkSXRlbSgoe2l0ZW19KSA9PiB0aGlzLnJlbW92ZWREaWFsb2dPdXRsZXRzLnB1c2goaXRlbSkpO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke25ldyBBcnJheTxzdHJpbmc+KClcbiAgICAgIC5jb25jYXQodGhpcy5hZGRlZERpYWxvZ091dGxldHMubGVuZ3RoID8gYGFkZGVkRGlhbG9nT3V0bGV0cz1bJHt0aGlzLmFkZGVkRGlhbG9nT3V0bGV0c31dYCA6IFtdKVxuICAgICAgLmNvbmNhdCh0aGlzLnJlbW92ZWREaWFsb2dPdXRsZXRzLmxlbmd0aCA/IGByZW1vdmVkRGlhbG9nT3V0bGV0cz1bJHt0aGlzLnJlbW92ZWREaWFsb2dPdXRsZXRzfV1gIDogW10pXG4gICAgICAuam9pbignLCAnKX1gO1xuICB9XG59XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWRpYWxvZy1kaWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9yb3V0aW5nL3dvcmtiZW5jaC1kaWFsb2ctZGlmZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBbUQsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQUV2Qzs7R0FFRztBQUVILE1BQU0sT0FBTyxxQkFBcUI7SUFJaEMsWUFBWSxPQUF3QjtRQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFVLENBQUM7SUFDekQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSSxDQUFDLE9BQWdCO1FBQzFCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXhGLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7OEdBZlUscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FEVCxNQUFNOzsyRkFDbEIscUJBQXFCO2tCQURqQyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7QUFtQmhDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQUs5QixZQUFZLE9BQXVDO1FBSG5DLHVCQUFrQixHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDekMseUJBQW9CLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUd6RCxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUUsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxHQUFHLElBQUksS0FBSyxFQUFVO2FBQzFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUMvRixNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMseUJBQXlCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDckcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGUsIEl0ZXJhYmxlQ2hhbmdlcywgSXRlcmFibGVEaWZmZXIsIEl0ZXJhYmxlRGlmZmVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1VybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1JvdXRpbmd9IGZyb20gJy4vcm91dGluZy51dGlsJztcblxuLyoqXG4gKiBTdGF0ZWZ1bCBkaWZmZXIgZm9yIGZpbmRpbmcgYWRkZWQvcmVtb3ZlZCBkaWFsb2dzLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hEaWFsb2dEaWZmZXIge1xuXG4gIHByaXZhdGUgX2RpYWxvZ0RpZmZlcjogSXRlcmFibGVEaWZmZXI8c3RyaW5nPjtcblxuICBjb25zdHJ1Y3RvcihkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMpIHtcbiAgICB0aGlzLl9kaWFsb2dEaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZTxzdHJpbmc+KCk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgZGlmZmVyZW5jZXMgaW4gdGhlIFVSTCBzaW5jZSBsYXN0IHRpbWUge0BsaW5rIFdvcmtiZW5jaERpYWxvZ0RpZmZlciNkaWZmfSB3YXMgaW52b2tlZC5cbiAgICovXG4gIHB1YmxpYyBkaWZmKHVybFRyZWU6IFVybFRyZWUpOiBXb3JrYmVuY2hEaWFsb2dEaWZmIHtcbiAgICBjb25zdCBkaWFsb2dPdXRsZXRzID0gT2JqZWN0LmtleXModXJsVHJlZS5yb290LmNoaWxkcmVuKS5maWx0ZXIoUm91dGluZy5pc0RpYWxvZ091dGxldCk7XG5cbiAgICByZXR1cm4gbmV3IFdvcmtiZW5jaERpYWxvZ0RpZmYodGhpcy5fZGlhbG9nRGlmZmVyLmRpZmYoZGlhbG9nT3V0bGV0cykpO1xuICB9XG59XG5cbi8qKlxuICogTGlzdHMgdGhlIGRpYWxvZ3MgYWRkZWQvcmVtb3ZlZCBpbiB0aGUgY3VycmVudCBuYXZpZ2F0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoRGlhbG9nRGlmZiB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFkZGVkRGlhbG9nT3V0bGV0cyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIHB1YmxpYyByZWFkb25seSByZW1vdmVkRGlhbG9nT3V0bGV0cyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoY2hhbmdlczogSXRlcmFibGVDaGFuZ2VzPHN0cmluZz4gfCBudWxsKSB7XG4gICAgY2hhbmdlcz8uZm9yRWFjaEFkZGVkSXRlbSgoe2l0ZW19KSA9PiB0aGlzLmFkZGVkRGlhbG9nT3V0bGV0cy5wdXNoKGl0ZW0pKTtcbiAgICBjaGFuZ2VzPy5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHtpdGVtfSkgPT4gdGhpcy5yZW1vdmVkRGlhbG9nT3V0bGV0cy5wdXNoKGl0ZW0pKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtuZXcgQXJyYXk8c3RyaW5nPigpXG4gICAgICAuY29uY2F0KHRoaXMuYWRkZWREaWFsb2dPdXRsZXRzLmxlbmd0aCA/IGBhZGRlZERpYWxvZ091dGxldHM9WyR7dGhpcy5hZGRlZERpYWxvZ091dGxldHN9XWAgOiBbXSlcbiAgICAgIC5jb25jYXQodGhpcy5yZW1vdmVkRGlhbG9nT3V0bGV0cy5sZW5ndGggPyBgcmVtb3ZlZERpYWxvZ091dGxldHM9WyR7dGhpcy5yZW1vdmVkRGlhbG9nT3V0bGV0c31dYCA6IFtdKVxuICAgICAgLmpvaW4oJywgJyl9YDtcbiAgfVxufVxuIl19
@@ -8,7 +8,6 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
10
  import { Injectable } from '@angular/core';
11
- import { RouterUtils } from './router.util';
12
11
  import * as i0 from "@angular/core";
13
12
  /**
14
13
  * Stateful differ for finding added/removed workbench layout elements.
@@ -21,24 +20,18 @@ export class WorkbenchLayoutDiffer {
21
20
  /**
22
21
  * Computes differences in the layout since last time {@link WorkbenchLayoutDiffer#diff} was invoked.
23
22
  */
24
- diff(workbenchLayout, urlTree) {
23
+ diff(workbenchLayout) {
25
24
  const parts = workbenchLayout?.parts().map(part => part.id);
26
- // Create view diff based on views in the layout plus outlets in the URL, required because the layout is unavailable during initial navigation.
27
- // Otherwise, the initial navigation for a URL with outlets of views contained in the workbench grid would fail as their view routes would be
28
- // registered too late.
29
- const views = new Set([
30
- ...RouterUtils.parseViewOutlets(urlTree).keys(),
31
- ...(workbenchLayout?.views().map(view => view.id) ?? []),
32
- ]);
25
+ const views = workbenchLayout?.views().map(view => view.id);
33
26
  return new WorkbenchLayoutDiff({
34
27
  parts: this._partsDiffer.diff(parts),
35
28
  views: this._viewsDiffer.diff(views),
36
29
  });
37
30
  }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchLayoutDiffer, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Injectable }); }
39
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchLayoutDiffer, providedIn: 'root' }); }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutDiffer, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Injectable }); }
32
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutDiffer, providedIn: 'root' }); }
40
33
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchLayoutDiffer, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutDiffer, decorators: [{
42
35
  type: Injectable,
43
36
  args: [{ providedIn: 'root' }]
44
37
  }], ctorParameters: () => [{ type: i0.IterableDiffers }] });
@@ -65,4 +58,4 @@ export class WorkbenchLayoutDiff {
65
58
  .join(', ')}`;
66
59
  }
67
60
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWxheW91dC1kaWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9yb3V0aW5nL3dvcmtiZW5jaC1sYXlvdXQtZGlmZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBbUQsTUFBTSxlQUFlLENBQUM7QUFHM0YsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFHMUM7O0dBRUc7QUFFSCxNQUFNLE9BQU8scUJBQXFCO0lBS2hDLFlBQVksT0FBd0I7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBVSxDQUFDO1FBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQVUsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJLENBQUMsZUFBd0MsRUFBRSxPQUFnQjtRQUNwRSxNQUFNLEtBQUssR0FBRyxlQUFlLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVELCtJQUErSTtRQUMvSSw2SUFBNkk7UUFDN0ksdUJBQXVCO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDO1lBQ3BCLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRTtZQUMvQyxHQUFHLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDekQsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLG1CQUFtQixDQUFDO1lBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNyQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTFCVSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQURULE1BQU07OzJGQUNsQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOztBQThCaEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBUTlCLFlBQVksT0FBdUY7UUFObkYsZUFBVSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDakMsaUJBQVksR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBRW5DLGVBQVUsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ2pDLGlCQUFZLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUdqRCxPQUFPLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RSxPQUFPLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUU1RSxPQUFPLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RSxPQUFPLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sR0FBRyxJQUFJLEtBQUssRUFBVTthQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDdkUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDN0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ3ZFLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUJBQWlCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQzdFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlLCBJdGVyYWJsZUNoYW5nZXMsIEl0ZXJhYmxlRGlmZmVyLCBJdGVyYWJsZURpZmZlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaExheW91dH0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dCc7XG5pbXBvcnQge1VybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1JvdXRlclV0aWxzfSBmcm9tICcuL3JvdXRlci51dGlsJztcbmltcG9ydCB7Vmlld0lkfSBmcm9tICcuLi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcblxuLyoqXG4gKiBTdGF0ZWZ1bCBkaWZmZXIgZm9yIGZpbmRpbmcgYWRkZWQvcmVtb3ZlZCB3b3JrYmVuY2ggbGF5b3V0IGVsZW1lbnRzLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hMYXlvdXREaWZmZXIge1xuXG4gIHByaXZhdGUgX3BhcnRzRGlmZmVyOiBJdGVyYWJsZURpZmZlcjxzdHJpbmc+O1xuICBwcml2YXRlIF92aWV3c0RpZmZlcjogSXRlcmFibGVEaWZmZXI8Vmlld0lkPjtcblxuICBjb25zdHJ1Y3RvcihkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMpIHtcbiAgICB0aGlzLl9wYXJ0c0RpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlPHN0cmluZz4oKTtcbiAgICB0aGlzLl92aWV3c0RpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlPFZpZXdJZD4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBkaWZmZXJlbmNlcyBpbiB0aGUgbGF5b3V0IHNpbmNlIGxhc3QgdGltZSB7QGxpbmsgV29ya2JlbmNoTGF5b3V0RGlmZmVyI2RpZmZ9IHdhcyBpbnZva2VkLlxuICAgKi9cbiAgcHVibGljIGRpZmYod29ya2JlbmNoTGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCB8IG51bGwsIHVybFRyZWU6IFVybFRyZWUpOiBXb3JrYmVuY2hMYXlvdXREaWZmIHtcbiAgICBjb25zdCBwYXJ0cyA9IHdvcmtiZW5jaExheW91dD8ucGFydHMoKS5tYXAocGFydCA9PiBwYXJ0LmlkKTtcbiAgICAvLyBDcmVhdGUgdmlldyBkaWZmIGJhc2VkIG9uIHZpZXdzIGluIHRoZSBsYXlvdXQgcGx1cyBvdXRsZXRzIGluIHRoZSBVUkwsIHJlcXVpcmVkIGJlY2F1c2UgdGhlIGxheW91dCBpcyB1bmF2YWlsYWJsZSBkdXJpbmcgaW5pdGlhbCBuYXZpZ2F0aW9uLlxuICAgIC8vIE90aGVyd2lzZSwgdGhlIGluaXRpYWwgbmF2aWdhdGlvbiBmb3IgYSBVUkwgd2l0aCBvdXRsZXRzIG9mIHZpZXdzIGNvbnRhaW5lZCBpbiB0aGUgd29ya2JlbmNoIGdyaWQgd291bGQgZmFpbCBhcyB0aGVpciB2aWV3IHJvdXRlcyB3b3VsZCBiZVxuICAgIC8vIHJlZ2lzdGVyZWQgdG9vIGxhdGUuXG4gICAgY29uc3Qgdmlld3MgPSBuZXcgU2V0KFtcbiAgICAgIC4uLlJvdXRlclV0aWxzLnBhcnNlVmlld091dGxldHModXJsVHJlZSkua2V5cygpLFxuICAgICAgLi4uKHdvcmtiZW5jaExheW91dD8udmlld3MoKS5tYXAodmlldyA9PiB2aWV3LmlkKSA/PyBbXSksXG4gICAgXSk7XG4gICAgcmV0dXJuIG5ldyBXb3JrYmVuY2hMYXlvdXREaWZmKHtcbiAgICAgIHBhcnRzOiB0aGlzLl9wYXJ0c0RpZmZlci5kaWZmKHBhcnRzKSxcbiAgICAgIHZpZXdzOiB0aGlzLl92aWV3c0RpZmZlci5kaWZmKHZpZXdzKSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIExpc3RzIHRoZSBsYXlvdXQgZWxlbWVudHMgYWRkZWQvcmVtb3ZlZCBpbiB0aGUgY3VycmVudCBuYXZpZ2F0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoTGF5b3V0RGlmZiB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFkZGVkUGFydHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVtb3ZlZFBhcnRzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYWRkZWRWaWV3cyA9IG5ldyBBcnJheTxWaWV3SWQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSByZW1vdmVkVmlld3MgPSBuZXcgQXJyYXk8Vmlld0lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKGNoYW5nZXM6IHtwYXJ0czogSXRlcmFibGVDaGFuZ2VzPHN0cmluZz4gfCBudWxsOyB2aWV3czogSXRlcmFibGVDaGFuZ2VzPFZpZXdJZD4gfCBudWxsfSkge1xuICAgIGNoYW5nZXMucGFydHM/LmZvckVhY2hBZGRlZEl0ZW0oKHtpdGVtfSkgPT4gdGhpcy5hZGRlZFBhcnRzLnB1c2goaXRlbSkpO1xuICAgIGNoYW5nZXMucGFydHM/LmZvckVhY2hSZW1vdmVkSXRlbSgoe2l0ZW19KSA9PiB0aGlzLnJlbW92ZWRQYXJ0cy5wdXNoKGl0ZW0pKTtcblxuICAgIGNoYW5nZXMudmlld3M/LmZvckVhY2hBZGRlZEl0ZW0oKHtpdGVtfSkgPT4gdGhpcy5hZGRlZFZpZXdzLnB1c2goaXRlbSkpO1xuICAgIGNoYW5nZXMudmlld3M/LmZvckVhY2hSZW1vdmVkSXRlbSgoe2l0ZW19KSA9PiB0aGlzLnJlbW92ZWRWaWV3cy5wdXNoKGl0ZW0pKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtuZXcgQXJyYXk8c3RyaW5nPigpXG4gICAgICAuY29uY2F0KHRoaXMuYWRkZWRQYXJ0cy5sZW5ndGggPyBgYWRkZWRQYXJ0cz1bJHt0aGlzLmFkZGVkUGFydHN9XWAgOiBbXSlcbiAgICAgIC5jb25jYXQodGhpcy5yZW1vdmVkUGFydHMubGVuZ3RoID8gYHJlbW92ZWRQYXJ0cz1bJHt0aGlzLnJlbW92ZWRQYXJ0c31dYCA6IFtdKVxuICAgICAgLmNvbmNhdCh0aGlzLmFkZGVkVmlld3MubGVuZ3RoID8gYGFkZGVkVmlld3M9WyR7dGhpcy5hZGRlZFZpZXdzfV1gIDogW10pXG4gICAgICAuY29uY2F0KHRoaXMucmVtb3ZlZFZpZXdzLmxlbmd0aCA/IGByZW1vdmVkVmlld3M9WyR7dGhpcy5yZW1vdmVkVmlld3N9XWAgOiBbXSlcbiAgICAgIC5qb2luKCcsICcpfWA7XG4gIH1cbn1cbiJdfQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWxheW91dC1kaWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9yb3V0aW5nL3dvcmtiZW5jaC1sYXlvdXQtZGlmZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBbUQsTUFBTSxlQUFlLENBQUM7O0FBSTNGOztHQUVHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQUtoQyxZQUFZLE9BQXdCO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQVUsQ0FBQztRQUN0RCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFVLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSSxDQUFDLGVBQXdDO1FBQ2xELE1BQU0sS0FBSyxHQUFHLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUQsTUFBTSxLQUFLLEdBQUcsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RCxPQUFPLElBQUksbUJBQW1CLENBQUM7WUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3JDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBcEJVLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRFQsTUFBTTs7MkZBQ2xCLHFCQUFxQjtrQkFEakMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBd0JoQzs7R0FFRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFROUIsWUFBWSxPQUF1RjtRQU5uRixlQUFVLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFFbkMsZUFBVSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDakMsaUJBQVksR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBR2pELE9BQU8sQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRTVFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxHQUFHLElBQUksS0FBSyxFQUFVO2FBQzFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUN2RSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUM3RSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDdkUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDN0UsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGUsIEl0ZXJhYmxlQ2hhbmdlcywgSXRlcmFibGVEaWZmZXIsIEl0ZXJhYmxlRGlmZmVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoTGF5b3V0fSBmcm9tICcuLi9sYXlvdXQvybV3b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7Vmlld0lkfSBmcm9tICcuLi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcblxuLyoqXG4gKiBTdGF0ZWZ1bCBkaWZmZXIgZm9yIGZpbmRpbmcgYWRkZWQvcmVtb3ZlZCB3b3JrYmVuY2ggbGF5b3V0IGVsZW1lbnRzLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hMYXlvdXREaWZmZXIge1xuXG4gIHByaXZhdGUgX3BhcnRzRGlmZmVyOiBJdGVyYWJsZURpZmZlcjxzdHJpbmc+O1xuICBwcml2YXRlIF92aWV3c0RpZmZlcjogSXRlcmFibGVEaWZmZXI8Vmlld0lkPjtcblxuICBjb25zdHJ1Y3RvcihkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMpIHtcbiAgICB0aGlzLl9wYXJ0c0RpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlPHN0cmluZz4oKTtcbiAgICB0aGlzLl92aWV3c0RpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlPFZpZXdJZD4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBkaWZmZXJlbmNlcyBpbiB0aGUgbGF5b3V0IHNpbmNlIGxhc3QgdGltZSB7QGxpbmsgV29ya2JlbmNoTGF5b3V0RGlmZmVyI2RpZmZ9IHdhcyBpbnZva2VkLlxuICAgKi9cbiAgcHVibGljIGRpZmYod29ya2JlbmNoTGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCB8IG51bGwpOiBXb3JrYmVuY2hMYXlvdXREaWZmIHtcbiAgICBjb25zdCBwYXJ0cyA9IHdvcmtiZW5jaExheW91dD8ucGFydHMoKS5tYXAocGFydCA9PiBwYXJ0LmlkKTtcbiAgICBjb25zdCB2aWV3cyA9IHdvcmtiZW5jaExheW91dD8udmlld3MoKS5tYXAodmlldyA9PiB2aWV3LmlkKTtcbiAgICByZXR1cm4gbmV3IFdvcmtiZW5jaExheW91dERpZmYoe1xuICAgICAgcGFydHM6IHRoaXMuX3BhcnRzRGlmZmVyLmRpZmYocGFydHMpLFxuICAgICAgdmlld3M6IHRoaXMuX3ZpZXdzRGlmZmVyLmRpZmYodmlld3MpLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogTGlzdHMgdGhlIGxheW91dCBlbGVtZW50cyBhZGRlZC9yZW1vdmVkIGluIHRoZSBjdXJyZW50IG5hdmlnYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hMYXlvdXREaWZmIHtcblxuICBwdWJsaWMgcmVhZG9ubHkgYWRkZWRQYXJ0cyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIHB1YmxpYyByZWFkb25seSByZW1vdmVkUGFydHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBhZGRlZFZpZXdzID0gbmV3IEFycmF5PFZpZXdJZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHJlbW92ZWRWaWV3cyA9IG5ldyBBcnJheTxWaWV3SWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoY2hhbmdlczoge3BhcnRzOiBJdGVyYWJsZUNoYW5nZXM8c3RyaW5nPiB8IG51bGw7IHZpZXdzOiBJdGVyYWJsZUNoYW5nZXM8Vmlld0lkPiB8IG51bGx9KSB7XG4gICAgY2hhbmdlcy5wYXJ0cz8uZm9yRWFjaEFkZGVkSXRlbSgoe2l0ZW19KSA9PiB0aGlzLmFkZGVkUGFydHMucHVzaChpdGVtKSk7XG4gICAgY2hhbmdlcy5wYXJ0cz8uZm9yRWFjaFJlbW92ZWRJdGVtKCh7aXRlbX0pID0+IHRoaXMucmVtb3ZlZFBhcnRzLnB1c2goaXRlbSkpO1xuXG4gICAgY2hhbmdlcy52aWV3cz8uZm9yRWFjaEFkZGVkSXRlbSgoe2l0ZW19KSA9PiB0aGlzLmFkZGVkVmlld3MucHVzaChpdGVtKSk7XG4gICAgY2hhbmdlcy52aWV3cz8uZm9yRWFjaFJlbW92ZWRJdGVtKCh7aXRlbX0pID0+IHRoaXMucmVtb3ZlZFZpZXdzLnB1c2goaXRlbSkpO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke25ldyBBcnJheTxzdHJpbmc+KClcbiAgICAgIC5jb25jYXQodGhpcy5hZGRlZFBhcnRzLmxlbmd0aCA/IGBhZGRlZFBhcnRzPVske3RoaXMuYWRkZWRQYXJ0c31dYCA6IFtdKVxuICAgICAgLmNvbmNhdCh0aGlzLnJlbW92ZWRQYXJ0cy5sZW5ndGggPyBgcmVtb3ZlZFBhcnRzPVske3RoaXMucmVtb3ZlZFBhcnRzfV1gIDogW10pXG4gICAgICAuY29uY2F0KHRoaXMuYWRkZWRWaWV3cy5sZW5ndGggPyBgYWRkZWRWaWV3cz1bJHt0aGlzLmFkZGVkVmlld3N9XWAgOiBbXSlcbiAgICAgIC5jb25jYXQodGhpcy5yZW1vdmVkVmlld3MubGVuZ3RoID8gYHJlbW92ZWRWaWV3cz1bJHt0aGlzLnJlbW92ZWRWaWV3c31dYCA6IFtdKVxuICAgICAgLmpvaW4oJywgJyl9YDtcbiAgfVxufVxuIl19
@@ -8,7 +8,7 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
10
  import { Injectable } from '@angular/core';
11
- import { RouterUtils } from './router.util';
11
+ import { Routing } from './routing.util';
12
12
  import * as i0 from "@angular/core";
13
13
  /**
14
14
  * Stateful differ for finding added/removed message boxes.
@@ -21,13 +21,13 @@ export class WorkbenchMessageBoxDiffer {
21
21
  * Computes differences in the URL since last time {@link WorkbenchMessageBoxDiffer#diff} was invoked.
22
22
  */
23
23
  diff(urlTree) {
24
- const messageBoxOutlets = Object.keys(urlTree.root.children).filter(RouterUtils.isMessageBoxOutlet);
24
+ const messageBoxOutlets = Object.keys(urlTree.root.children).filter(Routing.isMessageBoxOutlet);
25
25
  return new WorkbenchMessageBoxDiff(this._messageBoxDiffer.diff(messageBoxOutlets));
26
26
  }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchMessageBoxDiffer, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Injectable }); }
28
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchMessageBoxDiffer, providedIn: 'root' }); }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchMessageBoxDiffer, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Injectable }); }
28
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchMessageBoxDiffer, providedIn: 'root' }); }
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchMessageBoxDiffer, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchMessageBoxDiffer, decorators: [{
31
31
  type: Injectable,
32
32
  args: [{ providedIn: 'root' }]
33
33
  }], ctorParameters: () => [{ type: i0.IterableDiffers }] });
@@ -48,4 +48,4 @@ export class WorkbenchMessageBoxDiff {
48
48
  .join(', ')}`;
49
49
  }
50
50
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLW1lc3NhZ2UtYm94LWRpZmZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3JvdXRpbmcvd29ya2JlbmNoLW1lc3NhZ2UtYm94LWRpZmZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQW1ELE1BQU0sZUFBZSxDQUFDO0FBRTNGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBRTFDOztHQUVHO0FBRUgsTUFBTSxPQUFPLHlCQUF5QjtJQUlwQyxZQUFZLE9BQXdCO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBVSxDQUFDO0lBQzdELENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUksQ0FBQyxPQUFnQjtRQUMxQixNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFcEcsT0FBTyxJQUFJLHVCQUF1QixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7OEdBZlUseUJBQXlCO2tIQUF6Qix5QkFBeUIsY0FEYixNQUFNOzsyRkFDbEIseUJBQXlCO2tCQURyQyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7QUFtQmhDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUtsQyxZQUFZLE9BQXVDO1FBSG5DLDJCQUFzQixHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDN0MsNkJBQXdCLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUc3RCxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUUsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxHQUFHLElBQUksS0FBSyxFQUFVO2FBQzFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQywyQkFBMkIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUMzRyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsNkJBQTZCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDakgsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGUsIEl0ZXJhYmxlQ2hhbmdlcywgSXRlcmFibGVEaWZmZXIsIEl0ZXJhYmxlRGlmZmVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1VybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1JvdXRlclV0aWxzfSBmcm9tICcuL3JvdXRlci51dGlsJztcblxuLyoqXG4gKiBTdGF0ZWZ1bCBkaWZmZXIgZm9yIGZpbmRpbmcgYWRkZWQvcmVtb3ZlZCBtZXNzYWdlIGJveGVzLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hNZXNzYWdlQm94RGlmZmVyIHtcblxuICBwcml2YXRlIF9tZXNzYWdlQm94RGlmZmVyOiBJdGVyYWJsZURpZmZlcjxzdHJpbmc+O1xuXG4gIGNvbnN0cnVjdG9yKGRpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycykge1xuICAgIHRoaXMuX21lc3NhZ2VCb3hEaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZTxzdHJpbmc+KCk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgZGlmZmVyZW5jZXMgaW4gdGhlIFVSTCBzaW5jZSBsYXN0IHRpbWUge0BsaW5rIFdvcmtiZW5jaE1lc3NhZ2VCb3hEaWZmZXIjZGlmZn0gd2FzIGludm9rZWQuXG4gICAqL1xuICBwdWJsaWMgZGlmZih1cmxUcmVlOiBVcmxUcmVlKTogV29ya2JlbmNoTWVzc2FnZUJveERpZmYge1xuICAgIGNvbnN0IG1lc3NhZ2VCb3hPdXRsZXRzID0gT2JqZWN0LmtleXModXJsVHJlZS5yb290LmNoaWxkcmVuKS5maWx0ZXIoUm91dGVyVXRpbHMuaXNNZXNzYWdlQm94T3V0bGV0KTtcblxuICAgIHJldHVybiBuZXcgV29ya2JlbmNoTWVzc2FnZUJveERpZmYodGhpcy5fbWVzc2FnZUJveERpZmZlci5kaWZmKG1lc3NhZ2VCb3hPdXRsZXRzKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBMaXN0cyB0aGUgbWVzc2FnZSBib3hlcyBhZGRlZC9yZW1vdmVkIGluIHRoZSBjdXJyZW50IG5hdmlnYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hNZXNzYWdlQm94RGlmZiB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFkZGVkTWVzc2FnZUJveE91dGxldHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVtb3ZlZE1lc3NhZ2VCb3hPdXRsZXRzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihjaGFuZ2VzOiBJdGVyYWJsZUNoYW5nZXM8c3RyaW5nPiB8IG51bGwpIHtcbiAgICBjaGFuZ2VzPy5mb3JFYWNoQWRkZWRJdGVtKCh7aXRlbX0pID0+IHRoaXMuYWRkZWRNZXNzYWdlQm94T3V0bGV0cy5wdXNoKGl0ZW0pKTtcbiAgICBjaGFuZ2VzPy5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHtpdGVtfSkgPT4gdGhpcy5yZW1vdmVkTWVzc2FnZUJveE91dGxldHMucHVzaChpdGVtKSk7XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bmV3IEFycmF5PHN0cmluZz4oKVxuICAgICAgLmNvbmNhdCh0aGlzLmFkZGVkTWVzc2FnZUJveE91dGxldHMubGVuZ3RoID8gYGFkZGVkTWVzc2FnZUJveE91dGxldHM9WyR7dGhpcy5hZGRlZE1lc3NhZ2VCb3hPdXRsZXRzfV1gIDogW10pXG4gICAgICAuY29uY2F0KHRoaXMucmVtb3ZlZE1lc3NhZ2VCb3hPdXRsZXRzLmxlbmd0aCA/IGByZW1vdmVkTWVzc2FnZUJveE91dGxldHM9WyR7dGhpcy5yZW1vdmVkTWVzc2FnZUJveE91dGxldHN9XWAgOiBbXSlcbiAgICAgIC5qb2luKCcsICcpfWA7XG4gIH1cbn1cbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLW1lc3NhZ2UtYm94LWRpZmZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3JvdXRpbmcvd29ya2JlbmNoLW1lc3NhZ2UtYm94LWRpZmZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQW1ELE1BQU0sZUFBZSxDQUFDO0FBRTNGLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFdkM7O0dBRUc7QUFFSCxNQUFNLE9BQU8seUJBQXlCO0lBSXBDLFlBQVksT0FBd0I7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFVLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSSxDQUFDLE9BQWdCO1FBQzFCLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVoRyxPQUFPLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQzs4R0FmVSx5QkFBeUI7a0hBQXpCLHlCQUF5QixjQURiLE1BQU07OzJGQUNsQix5QkFBeUI7a0JBRHJDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOztBQW1CaEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUJBQXVCO0lBS2xDLFlBQVksT0FBdUM7UUFIbkMsMkJBQXNCLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUM3Qyw2QkFBd0IsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBRzdELE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5RSxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLEdBQUcsSUFBSSxLQUFLLEVBQVU7YUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQzNHLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyw2QkFBNkIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUNqSCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZSwgSXRlcmFibGVDaGFuZ2VzLCBJdGVyYWJsZURpZmZlciwgSXRlcmFibGVEaWZmZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VXJsVHJlZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Um91dGluZ30gZnJvbSAnLi9yb3V0aW5nLnV0aWwnO1xuXG4vKipcbiAqIFN0YXRlZnVsIGRpZmZlciBmb3IgZmluZGluZyBhZGRlZC9yZW1vdmVkIG1lc3NhZ2UgYm94ZXMuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaE1lc3NhZ2VCb3hEaWZmZXIge1xuXG4gIHByaXZhdGUgX21lc3NhZ2VCb3hEaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IoZGlmZmVyczogSXRlcmFibGVEaWZmZXJzKSB7XG4gICAgdGhpcy5fbWVzc2FnZUJveERpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlPHN0cmluZz4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBkaWZmZXJlbmNlcyBpbiB0aGUgVVJMIHNpbmNlIGxhc3QgdGltZSB7QGxpbmsgV29ya2JlbmNoTWVzc2FnZUJveERpZmZlciNkaWZmfSB3YXMgaW52b2tlZC5cbiAgICovXG4gIHB1YmxpYyBkaWZmKHVybFRyZWU6IFVybFRyZWUpOiBXb3JrYmVuY2hNZXNzYWdlQm94RGlmZiB7XG4gICAgY29uc3QgbWVzc2FnZUJveE91dGxldHMgPSBPYmplY3Qua2V5cyh1cmxUcmVlLnJvb3QuY2hpbGRyZW4pLmZpbHRlcihSb3V0aW5nLmlzTWVzc2FnZUJveE91dGxldCk7XG5cbiAgICByZXR1cm4gbmV3IFdvcmtiZW5jaE1lc3NhZ2VCb3hEaWZmKHRoaXMuX21lc3NhZ2VCb3hEaWZmZXIuZGlmZihtZXNzYWdlQm94T3V0bGV0cykpO1xuICB9XG59XG5cbi8qKlxuICogTGlzdHMgdGhlIG1lc3NhZ2UgYm94ZXMgYWRkZWQvcmVtb3ZlZCBpbiB0aGUgY3VycmVudCBuYXZpZ2F0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoTWVzc2FnZUJveERpZmYge1xuXG4gIHB1YmxpYyByZWFkb25seSBhZGRlZE1lc3NhZ2VCb3hPdXRsZXRzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHJlbW92ZWRNZXNzYWdlQm94T3V0bGV0cyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoY2hhbmdlczogSXRlcmFibGVDaGFuZ2VzPHN0cmluZz4gfCBudWxsKSB7XG4gICAgY2hhbmdlcz8uZm9yRWFjaEFkZGVkSXRlbSgoe2l0ZW19KSA9PiB0aGlzLmFkZGVkTWVzc2FnZUJveE91dGxldHMucHVzaChpdGVtKSk7XG4gICAgY2hhbmdlcz8uZm9yRWFjaFJlbW92ZWRJdGVtKCh7aXRlbX0pID0+IHRoaXMucmVtb3ZlZE1lc3NhZ2VCb3hPdXRsZXRzLnB1c2goaXRlbSkpO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke25ldyBBcnJheTxzdHJpbmc+KClcbiAgICAgIC5jb25jYXQodGhpcy5hZGRlZE1lc3NhZ2VCb3hPdXRsZXRzLmxlbmd0aCA/IGBhZGRlZE1lc3NhZ2VCb3hPdXRsZXRzPVske3RoaXMuYWRkZWRNZXNzYWdlQm94T3V0bGV0c31dYCA6IFtdKVxuICAgICAgLmNvbmNhdCh0aGlzLnJlbW92ZWRNZXNzYWdlQm94T3V0bGV0cy5sZW5ndGggPyBgcmVtb3ZlZE1lc3NhZ2VCb3hPdXRsZXRzPVske3RoaXMucmVtb3ZlZE1lc3NhZ2VCb3hPdXRsZXRzfV1gIDogW10pXG4gICAgICAuam9pbignLCAnKX1gO1xuICB9XG59XG4iXX0=