@scion/workbench 17.0.0-beta.7 → 17.0.0-beta.9

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 (304) hide show
  1. package/README.md +1 -1
  2. package/esm2022/lib/activation-instant.provider.mjs +3 -3
  3. package/esm2022/lib/common/asserts.util.mjs +2 -2
  4. package/esm2022/lib/common/coerce-observable.pipe.mjs +3 -3
  5. package/esm2022/lib/common/filter-by-predicate.pipe.mjs +3 -3
  6. package/esm2022/lib/common/filter-by-text.pipe.mjs +3 -3
  7. package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +6 -6
  8. package/esm2022/lib/common/instanceof.pipe.mjs +3 -3
  9. package/esm2022/lib/common/map-coerce.pipe.mjs +3 -3
  10. package/esm2022/lib/common/null-if-empty.pipe.mjs +3 -3
  11. package/esm2022/lib/common/objects.util.mjs +34 -0
  12. package/esm2022/lib/common/typeof.pipe.mjs +3 -3
  13. package/esm2022/lib/common/uuid.util.mjs +17 -0
  14. package/esm2022/lib/content-projection/content-as-overlay.component.mjs +3 -3
  15. package/esm2022/lib/content-projection/content-projection.directive.mjs +3 -3
  16. package/esm2022/lib/dialog/dialog-footer/dialog-action-filter.pipe.mjs +3 -3
  17. package/esm2022/lib/dialog/dialog-footer/dialog-footer.component.mjs +3 -3
  18. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-action.directive.mjs +9 -6
  19. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-footer.directive.mjs +9 -6
  20. package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +3 -3
  21. package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +9 -6
  22. package/esm2022/lib/dialog/movable.directive.mjs +3 -3
  23. package/esm2022/lib/dialog/resizable.directive.mjs +3 -3
  24. package/esm2022/lib/dialog/workbench-dialog.component.mjs +53 -24
  25. package/esm2022/lib/dialog/workbench-dialog.mjs +1 -1
  26. package/esm2022/lib/dialog/workbench-dialog.options.mjs +1 -1
  27. package/esm2022/lib/dialog/workbench-dialog.registry.mjs +4 -4
  28. package/esm2022/lib/dialog/workbench-dialog.service.mjs +5 -5
  29. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +7 -7
  30. package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +3 -3
  31. package/esm2022/lib/executor/single-task-executor.mjs +26 -7
  32. package/esm2022/lib/filter-field/filter-field.component.mjs +6 -6
  33. package/esm2022/lib/glass-pane/glass-pane.directive.mjs +15 -7
  34. package/esm2022/lib/layout/grid-element/grid-element.component.mjs +10 -10
  35. package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +6 -4
  36. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v1.model.mjs +11 -0
  37. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v2.model.mjs +11 -0
  38. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v3.model.mjs +11 -0
  39. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v4.model.mjs +11 -0
  40. package/esm2022/lib/layout/migration/workbench-layout-migration-v2.service.mjs +59 -0
  41. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +117 -0
  42. package/esm2022/lib/layout/migration/workbench-layout-migration-v4.service.mjs +57 -0
  43. package/esm2022/lib/layout/workbench-layout.component.mjs +6 -4
  44. package/esm2022/lib/layout/workbench-layout.factory.mjs +4 -4
  45. package/esm2022/lib/layout/workbench-layout.mjs +1 -1
  46. package/esm2022/lib/layout/workbench-layout.model.mjs +5 -6
  47. package/esm2022/lib/layout/workbench-layout.service.mjs +3 -3
  48. package/esm2022/lib/layout/workbench-layouts.util.mjs +37 -1
  49. package/esm2022/lib/layout/workench-layout-serializer.service.mjs +53 -21
  50. package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +8 -5
  51. package/esm2022/lib/layout//311/265workbench-layout.mjs +382 -195
  52. package/esm2022/lib/logging/console-appender.service.mjs +3 -3
  53. package/esm2022/lib/logging/logger.mjs +3 -3
  54. package/esm2022/lib/logging/logging-support.mjs +4 -4
  55. package/esm2022/lib/logging/logging.model.mjs +3 -3
  56. package/esm2022/lib/logging//311/265logger.mjs +3 -3
  57. package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +18 -20
  58. package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +3 -3
  59. package/esm2022/lib/message-box/workbench-message-box.component.mjs +15 -6
  60. package/esm2022/lib/message-box/workbench-message-box.options.mjs +1 -1
  61. package/esm2022/lib/message-box/workbench-message-box.service.mjs +5 -5
  62. package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +5 -5
  63. package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +26 -13
  64. package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +3 -3
  65. package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +25 -13
  66. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +3 -3
  67. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +11 -11
  68. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +5 -5
  69. package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +11 -9
  70. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +112 -0
  71. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +43 -0
  72. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +16 -13
  73. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +34 -0
  74. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.mjs +88 -0
  75. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.mjs +32 -0
  76. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +121 -0
  77. package/esm2022/lib/microfrontend-platform/microfrontend-notification/microfrontend-notification-intent-handler.service.mjs +3 -3
  78. package/esm2022/lib/microfrontend-platform/microfrontend-platform-config-loader.mjs +3 -3
  79. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +3 -3
  80. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +9 -6
  81. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +9 -15
  82. package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +3 -3
  83. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +4 -4
  84. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +37 -32
  85. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +3 -3
  86. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +3 -3
  87. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +13 -11
  88. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +14 -9
  89. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +54 -23
  90. package/esm2022/lib/migration/workbench-migration.mjs +11 -0
  91. package/esm2022/lib/migration/workbench-migrator.mjs +38 -0
  92. package/esm2022/lib/notification/notification-css-classes.pipe.mjs +3 -3
  93. package/esm2022/lib/notification/notification-list.component.mjs +3 -3
  94. package/esm2022/lib/notification/notification.component.mjs +3 -3
  95. package/esm2022/lib/notification/notification.config.mjs +1 -1
  96. package/esm2022/lib/notification/notification.mjs +1 -1
  97. package/esm2022/lib/notification/notification.service.mjs +9 -9
  98. package/esm2022/lib/notification/text-notification.component.mjs +3 -3
  99. package/esm2022/lib/page-not-found/format-url.pipe.mjs +26 -0
  100. package/esm2022/lib/page-not-found/page-not-found.component.mjs +28 -0
  101. package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +3 -3
  102. package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +3 -3
  103. package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +4 -4
  104. package/esm2022/lib/part/part-bar/part-bar.component.mjs +10 -8
  105. package/esm2022/lib/part/part-portal.pipe.mjs +3 -3
  106. package/esm2022/lib/part/part.component.mjs +6 -4
  107. package/esm2022/lib/part/view-context-menu/accelerator-format.pipe.mjs +3 -3
  108. package/esm2022/lib/part/view-context-menu/text.component.mjs +3 -3
  109. package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +3 -3
  110. package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +4 -4
  111. package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +18 -18
  112. package/esm2022/lib/part/view-list/view-list.component.mjs +3 -3
  113. package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +3 -3
  114. package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +9 -9
  115. package/esm2022/lib/part/view-tab/view-tab.component.mjs +13 -11
  116. package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +5 -5
  117. package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +9 -9
  118. package/esm2022/lib/part/workbench-part-action.registry.mjs +3 -3
  119. package/esm2022/lib/part/workbench-part.model.mjs +1 -1
  120. package/esm2022/lib/part/workbench-part.registry.mjs +3 -3
  121. package/esm2022/lib/part//311/265workbench-part.model.mjs +3 -3
  122. package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v1.model.mjs +11 -0
  123. package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v2.model.mjs +11 -0
  124. package/esm2022/lib/perspective/migration/workbench-perspective-migration-v2.service.mjs +57 -0
  125. package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +19 -51
  126. package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +23 -18
  127. package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +27 -42
  128. package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
  129. package/esm2022/lib/perspective/workbench-perspective.registry.mjs +3 -3
  130. package/esm2022/lib/perspective/workbench-perspective.service.mjs +15 -10
  131. package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +62 -0
  132. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +98 -78
  133. package/esm2022/lib/popup/popup.component.mjs +22 -10
  134. package/esm2022/lib/popup/popup.config.mjs +3 -1
  135. package/esm2022/lib/popup/popup.service.mjs +4 -4
  136. package/esm2022/lib/portal/workbench-portal-outlet.directive.mjs +6 -6
  137. package/esm2022/lib/public_api.mjs +3 -2
  138. package/esm2022/lib/registry/workbench-object-registry.mjs +3 -3
  139. package/esm2022/lib/routing/empty-outlet/empty-outlet.component.mjs +31 -0
  140. package/esm2022/lib/routing/public_api.mjs +1 -1
  141. package/esm2022/lib/routing/router.util.mjs +89 -35
  142. package/esm2022/lib/routing/routing.model.mjs +1 -1
  143. package/esm2022/lib/routing/url-segment-matcher.mjs +46 -0
  144. package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +58 -49
  145. package/esm2022/lib/routing/workbench-dialog-differ.mjs +6 -6
  146. package/esm2022/lib/routing/workbench-layout-differ.mjs +14 -17
  147. package/esm2022/lib/routing/workbench-message-box-differ.mjs +51 -0
  148. package/esm2022/lib/routing/workbench-navigational-states.mjs +4 -28
  149. package/esm2022/lib/routing/workbench-popup-differ.mjs +6 -6
  150. package/esm2022/lib/routing/workbench-route-data.mjs +14 -4
  151. package/esm2022/lib/routing/workbench-router-link.directive.mjs +24 -32
  152. package/esm2022/lib/routing/workbench-router.service.mjs +13 -378
  153. package/esm2022/lib/routing/workbench-url-observer.service.mjs +69 -82
  154. package/esm2022/lib/routing//311/265location.mjs +3 -3
  155. package/esm2022/lib/routing//311/265workbench-router.service.mjs +314 -0
  156. package/esm2022/lib/startup/splash/splash.component.mjs +3 -3
  157. package/esm2022/lib/startup/workbench-launcher.service.mjs +11 -11
  158. package/esm2022/lib/storage/workbench-storage.mjs +3 -3
  159. package/esm2022/lib/testing/public_api.mjs +2 -1
  160. package/esm2022/lib/testing/workbench-testing.module.mjs +13 -39
  161. package/esm2022/lib/testing/workbench.provider.mjs +60 -0
  162. package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +3 -3
  163. package/esm2022/lib/view/public_api.mjs +2 -1
  164. package/esm2022/lib/view/view-move-handler.service.mjs +42 -62
  165. package/esm2022/lib/view/view-portal.pipe.mjs +4 -4
  166. package/esm2022/lib/view/view.component.mjs +20 -40
  167. package/esm2022/lib/view/workbench-view-route-guards.mjs +47 -0
  168. package/esm2022/lib/view/workbench-view.model.mjs +6 -4
  169. package/esm2022/lib/view/workbench-view.registry.mjs +4 -4
  170. package/esm2022/lib/view//311/265workbench-view.model.mjs +106 -27
  171. package/esm2022/lib/view-dnd/requires-drop-zone.pipe.mjs +7 -7
  172. package/esm2022/lib/view-dnd/view-drag.service.mjs +6 -6
  173. package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +3 -3
  174. package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +4 -4
  175. package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +6 -4
  176. package/esm2022/lib/workbench-config.mjs +15 -0
  177. package/esm2022/lib/workbench-id.mjs +3 -3
  178. package/esm2022/lib/workbench.component.mjs +20 -12
  179. package/esm2022/lib/workbench.constants.mjs +7 -9
  180. package/esm2022/lib/workbench.model.mjs +1 -1
  181. package/esm2022/lib/workbench.module.mjs +15 -86
  182. package/esm2022/lib/workbench.provider.mjs +117 -0
  183. package/esm2022/lib/workbench.service.mjs +5 -5
  184. package/esm2022/lib//311/265workbench.service.mjs +15 -21
  185. package/fesm2022/scion-workbench.mjs +5490 -4166
  186. package/fesm2022/scion-workbench.mjs.map +1 -1
  187. package/lib/common/objects.util.d.ts +17 -0
  188. package/lib/common/uuid.util.d.ts +8 -0
  189. package/lib/dialog/workbench-dialog.component.d.ts +16 -7
  190. package/lib/dialog/workbench-dialog.d.ts +1 -1
  191. package/lib/dialog/workbench-dialog.options.d.ts +4 -3
  192. package/lib/dialog/workbench-dialog.registry.d.ts +4 -3
  193. package/lib/dialog/workbench-dialog.service.d.ts +1 -1
  194. package/lib/dialog//311/265workbench-dialog.d.ts +2 -2
  195. package/lib/executor/single-task-executor.d.ts +6 -1
  196. package/lib/filter-field/filter-field.component.d.ts +1 -1
  197. package/lib/glass-pane/glass-pane.directive.d.ts +21 -0
  198. package/lib/layout/grid-element/grid-element.component.d.ts +2 -2
  199. package/lib/layout/migration/model/workbench-layout-migration-v1.model.d.ts +16 -0
  200. package/lib/layout/migration/model/workbench-layout-migration-v2.model.d.ts +22 -0
  201. package/lib/layout/migration/model/workbench-layout-migration-v3.model.d.ts +30 -0
  202. package/lib/layout/migration/model/workbench-layout-migration-v4.model.d.ts +31 -0
  203. package/lib/layout/migration/workbench-layout-migration-v2.service.d.ts +13 -0
  204. package/lib/layout/migration/workbench-layout-migration-v3.service.d.ts +16 -0
  205. package/lib/layout/migration/workbench-layout-migration-v4.service.d.ts +12 -0
  206. package/lib/layout/workbench-layout.d.ts +61 -7
  207. package/lib/layout/workbench-layout.factory.d.ts +1 -1
  208. package/lib/layout/workbench-layout.model.d.ts +19 -9
  209. package/lib/layout/workbench-layouts.util.d.ts +18 -0
  210. package/lib/layout/workench-layout-serializer.service.d.ts +28 -7
  211. package/lib/layout//311/265workbench-layout.d.ts +172 -98
  212. package/lib/layout//311/265workbench-layout.factory.d.ts +4 -0
  213. package/lib/logging/logging-support.d.ts +2 -2
  214. package/lib/message-box/workbench-message-box.component.d.ts +3 -0
  215. package/lib/message-box/workbench-message-box.options.d.ts +4 -3
  216. package/lib/message-box/workbench-message-box.service.d.ts +1 -1
  217. package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +7 -1
  218. package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +1 -0
  219. package/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.d.ts +39 -0
  220. package/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.d.ts +25 -0
  221. package/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.d.ts +4 -2
  222. package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.d.ts +10 -0
  223. package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.d.ts +28 -0
  224. package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.d.ts +11 -0
  225. package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.d.ts +48 -0
  226. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +3 -7
  227. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +4 -9
  228. package/lib/microfrontend-platform/workbench-microfrontend-support.d.ts +3 -3
  229. package/lib/migration/workbench-migration.d.ts +9 -0
  230. package/lib/migration/workbench-migrator.d.ts +18 -0
  231. package/lib/notification/notification.config.d.ts +1 -1
  232. package/lib/notification/notification.d.ts +1 -3
  233. package/lib/page-not-found/format-url.pipe.d.ts +11 -0
  234. package/lib/page-not-found/page-not-found.component.d.ts +8 -0
  235. package/lib/part/part-action-bar/part-action.directive.d.ts +1 -1
  236. package/lib/part/part-bar/part-bar.component.d.ts +4 -3
  237. package/lib/part/view-context-menu/view-menu.directive.d.ts +1 -1
  238. package/lib/part/view-context-menu/view-menu.service.d.ts +5 -4
  239. package/lib/part/view-list-item/view-list-item.component.d.ts +5 -4
  240. package/lib/part/view-tab/view-tab.component.d.ts +6 -5
  241. package/lib/part/view-tab-drag-image/view-tab-drag-image.component.d.ts +3 -3
  242. package/lib/part/workbench-part.model.d.ts +5 -4
  243. package/lib/part//311/265workbench-part.model.d.ts +5 -4
  244. package/lib/perspective/migration/model/workbench-perspective-migration-v1.model.d.ts +8 -0
  245. package/lib/perspective/migration/model/workbench-perspective-migration-v2.model.d.ts +10 -0
  246. package/lib/perspective/migration/workbench-perspective-migration-v2.service.d.ts +13 -0
  247. package/lib/perspective/workbench-grid-merger.service.d.ts +9 -16
  248. package/lib/perspective/workbench-perspective-storage.service.d.ts +10 -28
  249. package/lib/perspective/workbench-perspective-view-conflict-resolver.service.d.ts +8 -25
  250. package/lib/perspective/workbench-perspective.model.d.ts +123 -14
  251. package/lib/perspective/workbench-perspective.service.d.ts +10 -3
  252. package/lib/perspective/workench-perspective-serializer.service.d.ts +26 -0
  253. package/lib/perspective//311/265workbench-perspective.model.d.ts +16 -14
  254. package/lib/popup/popup.component.d.ts +1 -0
  255. package/lib/popup/popup.config.d.ts +4 -3
  256. package/lib/portal/workbench-portal-outlet.directive.d.ts +2 -2
  257. package/lib/public_api.d.ts +4 -3
  258. package/lib/registry/workbench-object-registry.d.ts +2 -2
  259. package/lib/routing/empty-outlet/empty-outlet.component.d.ts +15 -0
  260. package/lib/routing/public_api.d.ts +2 -2
  261. package/lib/routing/router.util.d.ts +45 -19
  262. package/lib/routing/routing.model.d.ts +107 -8
  263. package/lib/routing/url-segment-matcher.d.ts +20 -0
  264. package/lib/routing/workbench-auxiliary-routes-registrator.service.d.ts +25 -15
  265. package/lib/routing/workbench-layout-differ.d.ts +4 -7
  266. package/lib/routing/workbench-message-box-differ.d.ts +25 -0
  267. package/lib/routing/workbench-navigational-states.d.ts +6 -19
  268. package/lib/routing/workbench-route-data.d.ts +13 -3
  269. package/lib/routing/workbench-router-link.directive.d.ts +22 -7
  270. package/lib/routing/workbench-router.service.d.ts +42 -142
  271. package/lib/routing/workbench-url-observer.service.d.ts +10 -28
  272. package/lib/routing//311/265workbench-router.service.d.ts +74 -0
  273. package/lib/startup/workbench-launcher.service.d.ts +4 -4
  274. package/lib/testing/public_api.d.ts +1 -0
  275. package/lib/testing/workbench-testing.module.d.ts +7 -6
  276. package/lib/testing/workbench.provider.d.ts +29 -0
  277. package/lib/view/public_api.d.ts +2 -1
  278. package/lib/view/view-move-handler.service.d.ts +2 -4
  279. package/lib/view/view-portal.pipe.d.ts +2 -1
  280. package/lib/view/view.component.d.ts +1 -11
  281. package/lib/view/workbench-view-route-guards.d.ts +36 -0
  282. package/lib/view/workbench-view.model.d.ts +37 -5
  283. package/lib/view/workbench-view.registry.d.ts +4 -3
  284. package/lib/view//311/265workbench-view.model.d.ts +61 -15
  285. package/lib/view-dnd/view-drag.service.d.ts +9 -4
  286. package/lib/view-dnd/view-drop-zone.directive.d.ts +1 -1
  287. package/lib/{workbench-module-config.d.ts → workbench-config.d.ts} +29 -71
  288. package/lib/workbench.component.d.ts +2 -2
  289. package/lib/workbench.constants.d.ts +6 -8
  290. package/lib/workbench.model.d.ts +20 -8
  291. package/lib/workbench.module.d.ts +12 -7
  292. package/lib/workbench.provider.d.ts +38 -0
  293. package/lib/workbench.service.d.ts +32 -8
  294. package/lib//311/265workbench.service.d.ts +9 -3
  295. package/package.json +8 -8
  296. package/esm2022/lib/layout/migration/workbench-layout-migrator.service.mjs +0 -38
  297. package/esm2022/lib/layout/migration/workbench-layout-v1-migrator.service.mjs +0 -59
  298. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.service.mjs +0 -46
  299. package/esm2022/lib/view/workbench-view-pre-destroy.guard.mjs +0 -36
  300. package/esm2022/lib/workbench-module-config.mjs +0 -15
  301. package/lib/layout/migration/workbench-layout-migrator.service.d.ts +0 -15
  302. package/lib/layout/migration/workbench-layout-v1-migrator.service.d.ts +0 -12
  303. package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.service.d.ts +0 -17
  304. package/lib/view/workbench-view-pre-destroy.guard.d.ts +0 -5
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import { Component, ElementRef, inject, ViewChild, ViewContainerRef } from '@angular/core';
11
11
  import { IFRAME_HOST, VIEW_DROP_PLACEHOLDER_HOST, WORKBENCH_ELEMENT_REF } from './content-projection/view-container.reference';
12
- import { WorkbenchModuleConfig } from './workbench-module-config';
12
+ import { WorkbenchConfig } from './workbench-config';
13
13
  import { SplashComponent } from './startup/splash/splash.component';
14
14
  import { LoggerNames } from './logging';
15
15
  import { AsyncPipe, DOCUMENT, NgComponentOutlet } from '@angular/common';
@@ -17,10 +17,11 @@ import { WorkbenchLayoutComponent } from './layout/workbench-layout.component';
17
17
  import { NotificationListComponent } from './notification/notification-list.component';
18
18
  import { combineLatest, lastValueFrom } from 'rxjs';
19
19
  import { first, map } from 'rxjs/operators';
20
- import { GLASS_PANE_BLOCKABLE, GLASS_PANE_TARGET_ELEMENT, GlassPaneDirective } from './glass-pane/glass-pane.directive';
20
+ import { GLASS_PANE_BLOCKABLE, GLASS_PANE_OPTIONS, GLASS_PANE_TARGET_ELEMENT, GlassPaneDirective } from './glass-pane/glass-pane.directive';
21
21
  import { WorkbenchDialogRegistry } from './dialog/workbench-dialog.registry';
22
+ import { WORKBENCH_AUXILIARY_ROUTE_OUTLET } from './routing/workbench-auxiliary-routes-registrator.service';
22
23
  import * as i0 from "@angular/core";
23
- import * as i1 from "./workbench-module-config";
24
+ import * as i1 from "./workbench-config";
24
25
  import * as i2 from "./startup/workbench-launcher.service";
25
26
  import * as i3 from "./logging";
26
27
  /**
@@ -33,7 +34,7 @@ export class WorkbenchComponent {
33
34
  set injectViewDropPlaceholderHost(vcr) {
34
35
  vcr && this.viewContainerReferences.viewDropPlaceholderHost.set(vcr);
35
36
  }
36
- constructor(workbenchModuleConfig, _workbenchLauncher, _logger, workbenchStartup) {
37
+ constructor(workbenchConfig, _workbenchLauncher, _logger, workbenchStartup) {
37
38
  this._workbenchLauncher = _workbenchLauncher;
38
39
  this._logger = _logger;
39
40
  this.workbenchStartup = workbenchStartup;
@@ -46,8 +47,11 @@ export class WorkbenchComponent {
46
47
  viewDropPlaceholderHost: inject(VIEW_DROP_PLACEHOLDER_HOST),
47
48
  };
48
49
  this._logger.debug(() => 'Constructing WorkbenchComponent.', LoggerNames.LIFECYCLE);
50
+ if (inject(WORKBENCH_AUXILIARY_ROUTE_OUTLET, { optional: true })) {
51
+ throw Error(`[WorkbenchError] Workbench must not be loaded into a view. Did you navigate to the empty path route? Make sure that the application's root route is guarded with 'canMatchWorkbenchView(false)'. Example: "{path: '', canMatch: [canMatchWorkbenchView(false), ...]}"`);
52
+ }
49
53
  this.viewContainerReferences.workbenchElement.set(inject(ViewContainerRef));
50
- this.splash = workbenchModuleConfig?.startup?.splash || SplashComponent;
54
+ this.splash = workbenchConfig?.startup?.splash || SplashComponent;
51
55
  this.whenViewContainersInjected = this.createHostViewContainersInjectedPromise();
52
56
  this.startWorkbench();
53
57
  }
@@ -76,12 +80,12 @@ export class WorkbenchComponent {
76
80
  ngOnDestroy() {
77
81
  this.unsetViewContainerReferences();
78
82
  }
79
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchComponent, deps: [{ token: i1.WorkbenchModuleConfig }, { token: i2.WorkbenchLauncher }, { token: i3.Logger }, { token: i2.WorkbenchStartup }], target: i0.ɵɵFactoryTarget.Component }); }
80
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.3", type: WorkbenchComponent, isStandalone: true, selector: "wb-workbench", viewQueries: [{ propertyName: "injectIframeHost", first: true, predicate: ["iframe_host"], descendants: true, read: ViewContainerRef }, { propertyName: "injectViewDropPlaceholderHost", first: true, predicate: ["view_drop_placeholder_host"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "@if (workbenchStartup.whenStarted | async) {\n <div class=\"stacking-context-barrier\" wbGlassPane>\n @if (whenViewContainersInjected | async) {\n <wb-workbench-layout/>\n }\n <!-- Achor to attach iframes of embedded microfrontends -->\n <ng-container #iframe_host/>\n </div>\n\n <!-- Anchor to attach the visual placeholder when dragging a view over a valid drop zone -->\n <div #view_drop_placeholder_host class=\"view-drop-placeholder-host\"></div>\n\n <!-- Notifications -->\n <wb-notification-list/>\n}\n@else {\n <ng-container *ngComponentOutlet=\"splash\"/>\n}\n", styles: [":host{display:grid;position:relative;overflow:hidden;color:var(--sci-color-text);background-color:var(--sci-color-background-primary)}:host>div.stacking-context-barrier{display:flex;isolation:isolate}:host>div.stacking-context-barrier>wb-workbench-layout{flex:auto}:host>div.view-drop-placeholder-host{position:absolute}:host>wb-notification-list{position:absolute;inset:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: WorkbenchLayoutComponent, selector: "wb-workbench-layout" }, { kind: "component", type: NotificationListComponent, selector: "wb-notification-list" }, { kind: "directive", type: GlassPaneDirective, selector: "[wbGlassPane]" }], viewProviders: [
83
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchComponent, deps: [{ token: i1.WorkbenchConfig }, { token: i2.WorkbenchLauncher }, { token: i3.Logger }, { token: i2.WorkbenchStartup }], target: i0.ɵɵFactoryTarget.Component }); }
84
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.6", type: WorkbenchComponent, isStandalone: true, selector: "wb-workbench", viewQueries: [{ propertyName: "injectIframeHost", first: true, predicate: ["iframe_host"], descendants: true, read: ViewContainerRef }, { propertyName: "injectViewDropPlaceholderHost", first: true, predicate: ["view_drop_placeholder_host"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "@if (workbenchStartup.whenStarted | async) {\n <div class=\"stacking-context-barrier\" wbGlassPane>\n @if (whenViewContainersInjected | async) {\n <wb-workbench-layout/>\n }\n <!-- Achor to attach iframes of embedded microfrontends -->\n <ng-container #iframe_host/>\n </div>\n\n <!-- Anchor to attach the visual placeholder when dragging a view over a valid drop zone -->\n <div #view_drop_placeholder_host class=\"view-drop-placeholder-host\"></div>\n\n <!-- Notifications -->\n <wb-notification-list/>\n} @else {\n <ng-container *ngComponentOutlet=\"splash\"/>\n}\n", styles: [":host{display:grid;position:relative;overflow:hidden;color:var(--sci-color-text);background-color:var(--sci-color-background-primary)}:host>div.stacking-context-barrier{display:flex;isolation:isolate}:host>div.stacking-context-barrier>wb-workbench-layout{flex:auto}:host>div.view-drop-placeholder-host{position:absolute}:host>wb-notification-list{position:absolute;inset:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: WorkbenchLayoutComponent, selector: "wb-workbench-layout" }, { kind: "component", type: NotificationListComponent, selector: "wb-notification-list" }, { kind: "directive", type: GlassPaneDirective, selector: "[wbGlassPane]" }], viewProviders: [
81
85
  configureWorkbenchGlassPane(),
82
86
  ] }); }
83
87
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchComponent, decorators: [{
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchComponent, decorators: [{
85
89
  type: Component,
86
90
  args: [{ selector: 'wb-workbench', standalone: true, imports: [
87
91
  AsyncPipe,
@@ -91,8 +95,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
91
95
  GlassPaneDirective,
92
96
  ], viewProviders: [
93
97
  configureWorkbenchGlassPane(),
94
- ], template: "@if (workbenchStartup.whenStarted | async) {\n <div class=\"stacking-context-barrier\" wbGlassPane>\n @if (whenViewContainersInjected | async) {\n <wb-workbench-layout/>\n }\n <!-- Achor to attach iframes of embedded microfrontends -->\n <ng-container #iframe_host/>\n </div>\n\n <!-- Anchor to attach the visual placeholder when dragging a view over a valid drop zone -->\n <div #view_drop_placeholder_host class=\"view-drop-placeholder-host\"></div>\n\n <!-- Notifications -->\n <wb-notification-list/>\n}\n@else {\n <ng-container *ngComponentOutlet=\"splash\"/>\n}\n", styles: [":host{display:grid;position:relative;overflow:hidden;color:var(--sci-color-text);background-color:var(--sci-color-background-primary)}:host>div.stacking-context-barrier{display:flex;isolation:isolate}:host>div.stacking-context-barrier>wb-workbench-layout{flex:auto}:host>div.view-drop-placeholder-host{position:absolute}:host>wb-notification-list{position:absolute;inset:0}\n"] }]
95
- }], ctorParameters: () => [{ type: i1.WorkbenchModuleConfig }, { type: i2.WorkbenchLauncher }, { type: i3.Logger }, { type: i2.WorkbenchStartup }], propDecorators: { injectIframeHost: [{
98
+ ], template: "@if (workbenchStartup.whenStarted | async) {\n <div class=\"stacking-context-barrier\" wbGlassPane>\n @if (whenViewContainersInjected | async) {\n <wb-workbench-layout/>\n }\n <!-- Achor to attach iframes of embedded microfrontends -->\n <ng-container #iframe_host/>\n </div>\n\n <!-- Anchor to attach the visual placeholder when dragging a view over a valid drop zone -->\n <div #view_drop_placeholder_host class=\"view-drop-placeholder-host\"></div>\n\n <!-- Notifications -->\n <wb-notification-list/>\n} @else {\n <ng-container *ngComponentOutlet=\"splash\"/>\n}\n", styles: [":host{display:grid;position:relative;overflow:hidden;color:var(--sci-color-text);background-color:var(--sci-color-background-primary)}:host>div.stacking-context-barrier{display:flex;isolation:isolate}:host>div.stacking-context-barrier>wb-workbench-layout{flex:auto}:host>div.view-drop-placeholder-host{position:absolute}:host>wb-notification-list{position:absolute;inset:0}\n"] }]
99
+ }], ctorParameters: () => [{ type: i1.WorkbenchConfig }, { type: i2.WorkbenchLauncher }, { type: i3.Logger }, { type: i2.WorkbenchStartup }], propDecorators: { injectIframeHost: [{
96
100
  type: ViewChild,
97
101
  args: ['iframe_host', { read: ViewContainerRef }]
98
102
  }], injectViewDropPlaceholderHost: [{
@@ -113,7 +117,7 @@ function configureWorkbenchGlassPane() {
113
117
  {
114
118
  provide: GLASS_PANE_TARGET_ELEMENT,
115
119
  useFactory: () => {
116
- if (inject(WorkbenchModuleConfig).dialog?.modalityScope === 'viewport') {
120
+ if (inject(WorkbenchConfig).dialog?.modalityScope === 'viewport') {
117
121
  return inject(DOCUMENT).body;
118
122
  }
119
123
  else {
@@ -121,6 +125,10 @@ function configureWorkbenchGlassPane() {
121
125
  }
122
126
  },
123
127
  },
128
+ {
129
+ provide: GLASS_PANE_OPTIONS,
130
+ useValue: { cssClass: 'e2e-workbench' },
131
+ },
124
132
  ];
125
133
  }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3dvcmtiZW5jaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi93b3JrYmVuY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQXVCLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUMsV0FBVyxFQUFFLDBCQUEwQixFQUFFLHFCQUFxQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFFN0gsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFaEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBUyxXQUFXLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNyRixPQUFPLEVBQUMsYUFBYSxFQUFFLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSx5QkFBeUIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RILE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFN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RUFDekIsa0JBQWtCLCtDQUVMO1lBQ2IsMkJBQTJCLEVBQUU7U0FDOUI7OzJGQUVVLGtCQUFrQjtrQkFoQjlCLFNBQVM7K0JBQ0UsY0FBYyxjQUdaLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULGlCQUFpQjt3QkFDakIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLGtCQUFrQjtxQkFDbkIsaUJBQ2M7d0JBQ2IsMkJBQTJCLEVBQUU7cUJBQzlCOzhLQTRCYSxnQkFBZ0I7c0JBRDdCLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFDO2dCQU1wQyw2QkFBNkI7c0JBRDFDLFNBQVM7dUJBQUMsNEJBQTRCLEVBQUUsRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUM7O0FBaURuRTs7R0FFRztBQUNILFNBQVMsMkJBQTJCO0lBQ2xDLE9BQU87UUFDTDtZQUNFLE9BQU8sRUFBRSxvQkFBb0I7WUFDN0IsVUFBVSxFQUFFLEdBQWMsRUFBRSxDQUFDLENBQUM7Z0JBQzVCLFVBQVUsRUFBRSxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxJQUFJLEVBQUU7YUFDbkQsQ0FBQztTQUNIO1FBQ0Q7WUFDRSxPQUFPLEVBQUUseUJBQXlCO1lBQ2xDLFVBQVUsRUFBRSxHQUFHLEVBQUU7Z0JBQ2YsSUFBSSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLEVBQUUsYUFBYSxLQUFLLFVBQVUsRUFBRTtvQkFDdEUsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDO2lCQUM5QjtxQkFDSTtvQkFDSCxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDM0I7WUFDSCxDQUFDO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIGluamVjdCwgT25EZXN0cm95LCBQcm92aWRlciwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SUZSQU1FX0hPU1QsIFZJRVdfRFJPUF9QTEFDRUhPTERFUl9IT1NULCBXT1JLQkVOQ0hfRUxFTUVOVF9SRUZ9IGZyb20gJy4vY29udGVudC1wcm9qZWN0aW9uL3ZpZXctY29udGFpbmVyLnJlZmVyZW5jZSc7XG5pbXBvcnQge1dvcmtiZW5jaExhdW5jaGVyLCBXb3JrYmVuY2hTdGFydHVwfSBmcm9tICcuL3N0YXJ0dXAvd29ya2JlbmNoLWxhdW5jaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtXb3JrYmVuY2hNb2R1bGVDb25maWd9IGZyb20gJy4vd29ya2JlbmNoLW1vZHVsZS1jb25maWcnO1xuaW1wb3J0IHtDb21wb25lbnRUeXBlfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7U3BsYXNoQ29tcG9uZW50fSBmcm9tICcuL3N0YXJ0dXAvc3BsYXNoL3NwbGFzaC5jb21wb25lbnQnO1xuaW1wb3J0IHtMb2dnZXIsIExvZ2dlck5hbWVzfSBmcm9tICcuL2xvZ2dpbmcnO1xuaW1wb3J0IHtBc3luY1BpcGUsIERPQ1VNRU5ULCBOZ0NvbXBvbmVudE91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0Q29tcG9uZW50fSBmcm9tICcuL2xheW91dC93b3JrYmVuY2gtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQge05vdGlmaWNhdGlvbkxpc3RDb21wb25lbnR9IGZyb20gJy4vbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge2NvbWJpbmVMYXRlc3QsIGxhc3RWYWx1ZUZyb219IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaXJzdCwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0dMQVNTX1BBTkVfQkxPQ0tBQkxFLCBHTEFTU19QQU5FX1RBUkdFVF9FTEVNRU5ULCBHbGFzc1BhbmVEaXJlY3RpdmV9IGZyb20gJy4vZ2xhc3MtcGFuZS9nbGFzcy1wYW5lLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1dvcmtiZW5jaERpYWxvZ1JlZ2lzdHJ5fSBmcm9tICcuL2RpYWxvZy93b3JrYmVuY2gtZGlhbG9nLnJlZ2lzdHJ5JztcbmltcG9ydCB7QmxvY2thYmxlfSBmcm9tICcuL2dsYXNzLXBhbmUvYmxvY2thYmxlJztcblxuLyoqXG4gKiBNYWluIGVudHJ5IHBvaW50IGNvbXBvbmVudCBvZiB0aGUgU0NJT04gV29ya2JlbmNoLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3Yi13b3JrYmVuY2gnLFxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2JlbmNoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2JlbmNoLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgTmdDb21wb25lbnRPdXRsZXQsXG4gICAgV29ya2JlbmNoTGF5b3V0Q29tcG9uZW50LFxuICAgIE5vdGlmaWNhdGlvbkxpc3RDb21wb25lbnQsXG4gICAgR2xhc3NQYW5lRGlyZWN0aXZlLFxuICBdLFxuICB2aWV3UHJvdmlkZXJzOiBbXG4gICAgY29uZmlndXJlV29ya2JlbmNoR2xhc3NQYW5lKCksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgLyoqXG4gICAqIFZpZXcgY29udGFpbmVycyByZXF1aXJlZCBmb3IgdGhlIHdvcmtiZW5jaCB0byBhdHRhY2ggZWxlbWVudHMuXG4gICAqL1xuICBwcml2YXRlIHZpZXdDb250YWluZXJSZWZlcmVuY2VzID0ge1xuICAgIHdvcmtiZW5jaEVsZW1lbnQ6IGluamVjdChXT1JLQkVOQ0hfRUxFTUVOVF9SRUYpLFxuICAgIGlmcmFtZUhvc3Q6IGluamVjdChJRlJBTUVfSE9TVCksXG4gICAgdmlld0Ryb3BQbGFjZWhvbGRlckhvc3Q6IGluamVjdChWSUVXX0RST1BfUExBQ0VIT0xERVJfSE9TVCksXG4gIH07XG5cbiAgLyoqXG4gICAqIFNwbGFzaCB0byBkaXNwbGF5IGR1cmluZyB3b3JrYmVuY2ggc3RhcnR1cC5cbiAgICovXG4gIHByb3RlY3RlZCBzcGxhc2g6IENvbXBvbmVudFR5cGU8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFByb21pc2UgdGhhdCByZXNvbHZlcyBvbmNlIGFsbCB0aGUgcmVxdWlyZWQgdmlldyBjb250YWluZXJzIGZvciB0aGUgd29ya2JlbmNoIHRvIGF0dGFjaCBlbGVtZW50cyBoYXZlIGJlZW4gaW5qZWN0ZWQgZnJvbSB0aGUgdGVtcGxhdGUuXG4gICAqXG4gICAqIFRvIGF2b2lkIGFuIGBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yYCwgbWFrZSBzdXJlIG5vdCB0byBhZGQgdGhlIHtAbGluayBXb3JrYmVuY2hMYXlvdXRDb21wb25lbnR9IGJlZm9yZSB0aGUgcmVsZXZhbnRcbiAgICogdmlldyBjb250YWluZXJzIGhhdmUgYmVlbiBpbmplY3RlZC4gT3RoZXJ3aXNlLCB3aGVuIGxvYWRpbmcgYW4gZXhpc3Rpbmcgd29ya2JlbmNoIGxheW91dCAoZS5nLiwgZnJvbSBVUkwpIGludG8gdGhlIHdvcmtiZW5jaCwgQW5ndWxhclxuICAgKiB3aWxsIHRocm93IHRoaXMgZXJyb3IgYmVjYXVzZSB2aWV3cyBhcmUgcmVuZGVyZWQgYmVmb3JlIHZpZXcgY29udGFpbmVycyBhcmUgYXZhaWxhYmxlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHdoZW5WaWV3Q29udGFpbmVyc0luamVjdGVkOiBQcm9taXNlPHRydWU+O1xuXG4gIEBWaWV3Q2hpbGQoJ2lmcmFtZV9ob3N0Jywge3JlYWQ6IFZpZXdDb250YWluZXJSZWZ9KVxuICBwcm90ZWN0ZWQgc2V0IGluamVjdElmcmFtZUhvc3QodmNyOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgdmNyICYmIHRoaXMudmlld0NvbnRhaW5lclJlZmVyZW5jZXMuaWZyYW1lSG9zdC5zZXQodmNyKTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3ZpZXdfZHJvcF9wbGFjZWhvbGRlcl9ob3N0Jywge3JlYWQ6IFZpZXdDb250YWluZXJSZWZ9KVxuICBwcm90ZWN0ZWQgc2V0IGluamVjdFZpZXdEcm9wUGxhY2Vob2xkZXJIb3N0KHZjcjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIHZjciAmJiB0aGlzLnZpZXdDb250YWluZXJSZWZlcmVuY2VzLnZpZXdEcm9wUGxhY2Vob2xkZXJIb3N0LnNldCh2Y3IpO1xuICB9XG5cbiAgY29uc3RydWN0b3Iod29ya2JlbmNoTW9kdWxlQ29uZmlnOiBXb3JrYmVuY2hNb2R1bGVDb25maWcsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3dvcmtiZW5jaExhdW5jaGVyOiBXb3JrYmVuY2hMYXVuY2hlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9nZ2VyOiBMb2dnZXIsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCB3b3JrYmVuY2hTdGFydHVwOiBXb3JrYmVuY2hTdGFydHVwKSB7XG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+ICdDb25zdHJ1Y3RpbmcgV29ya2JlbmNoQ29tcG9uZW50LicsIExvZ2dlck5hbWVzLkxJRkVDWUNMRSk7XG4gICAgdGhpcy52aWV3Q29udGFpbmVyUmVmZXJlbmNlcy53b3JrYmVuY2hFbGVtZW50LnNldChpbmplY3QoVmlld0NvbnRhaW5lclJlZikpO1xuICAgIHRoaXMuc3BsYXNoID0gd29ya2JlbmNoTW9kdWxlQ29uZmlnPy5zdGFydHVwPy5zcGxhc2ggfHwgU3BsYXNoQ29tcG9uZW50O1xuICAgIHRoaXMud2hlblZpZXdDb250YWluZXJzSW5qZWN0ZWQgPSB0aGlzLmNyZWF0ZUhvc3RWaWV3Q29udGFpbmVyc0luamVjdGVkUHJvbWlzZSgpO1xuICAgIHRoaXMuc3RhcnRXb3JrYmVuY2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgdGhlIFNDSU9OIFdvcmtiZW5jaC4gSGFzIG5vIGVmZmVjdCBpZiBhbHJlYWR5IHN0YXJ0ZWQsIGUuZy4sIGluIGFuIGFwcCBpbml0aWFsaXplciBvciByb3V0ZSBndWFyZC5cbiAgICovXG4gIHByaXZhdGUgc3RhcnRXb3JrYmVuY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLndvcmtiZW5jaFN0YXJ0dXAuaXNTdGFydGVkKCkpIHtcbiAgICAgIHRoaXMuX3dvcmtiZW5jaExhdW5jaGVyLmxhdW5jaCgpLmNhdGNoKGVycm9yID0+IHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IFNDSU9OIFdvcmtiZW5jaCcsIGVycm9yKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSBhbGwgdGhlIHJlcXVpcmVkIHZpZXcgY29udGFpbmVycyBmb3IgdGhlIHdvcmtiZW5jaCB0byBhdHRhY2ggZWxlbWVudHMgaGF2ZSBiZWVuIGluamVjdGVkIGZyb20gdGhlIHRlbXBsYXRlLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVIb3N0Vmlld0NvbnRhaW5lcnNJbmplY3RlZFByb21pc2UoKTogUHJvbWlzZTx0cnVlPiB7XG4gICAgY29uc3QgcmVmZXJlbmNlcyA9IE9iamVjdC52YWx1ZXModGhpcy52aWV3Q29udGFpbmVyUmVmZXJlbmNlcyk7XG4gICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20oY29tYmluZUxhdGVzdChyZWZlcmVuY2VzLm1hcChyZWZlcmVuY2UgPT4gcmVmZXJlbmNlLnJlZiQpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpcnN0KHZjcnMgPT4gdmNycy5ldmVyeShCb29sZWFuKSksXG4gICAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgICkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc2V0cyB2aWV3IGNvbnRhaW5lciByZWZlcmVuY2VzIHdoZW4gdGhpcyBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxuICAgKi9cbiAgcHJpdmF0ZSB1bnNldFZpZXdDb250YWluZXJSZWZlcmVuY2VzKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy52aWV3Q29udGFpbmVyUmVmZXJlbmNlcykuZm9yRWFjaChyZWYgPT4gcmVmLnVuc2V0KCkpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zZXRWaWV3Q29udGFpbmVyUmVmZXJlbmNlcygpO1xuICB9XG59XG5cbi8qKlxuICogQmxvY2tzIHRoZSB3b3JrYmVuY2ggb3IgdGhlIGJyb3dzZXIncyB2aWV3cG9ydCB3aGVuIG9wZW5pbmcgYW4gYXBwbGljYXRpb24tbW9kYWwgZGlhbG9nLlxuICovXG5mdW5jdGlvbiBjb25maWd1cmVXb3JrYmVuY2hHbGFzc1BhbmUoKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogR0xBU1NfUEFORV9CTE9DS0FCTEUsXG4gICAgICB1c2VGYWN0b3J5OiAoKTogQmxvY2thYmxlID0+ICh7XG4gICAgICAgIGJsb2NrZWRCeSQ6IGluamVjdChXb3JrYmVuY2hEaWFsb2dSZWdpc3RyeSkudG9wJCgpLFxuICAgICAgfSksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBHTEFTU19QQU5FX1RBUkdFVF9FTEVNRU5ULFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICBpZiAoaW5qZWN0KFdvcmtiZW5jaE1vZHVsZUNvbmZpZykuZGlhbG9nPy5tb2RhbGl0eVNjb3BlID09PSAndmlld3BvcnQnKSB7XG4gICAgICAgICAgcmV0dXJuIGluamVjdChET0NVTUVOVCkuYm9keTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG4iLCJAaWYgKHdvcmtiZW5jaFN0YXJ0dXAud2hlblN0YXJ0ZWQgfCBhc3luYykge1xuICA8ZGl2IGNsYXNzPVwic3RhY2tpbmctY29udGV4dC1iYXJyaWVyXCIgd2JHbGFzc1BhbmU+XG4gICAgQGlmICh3aGVuVmlld0NvbnRhaW5lcnNJbmplY3RlZCB8IGFzeW5jKSB7XG4gICAgICA8d2Itd29ya2JlbmNoLWxheW91dC8+XG4gICAgfVxuICAgIDwhLS0gQWNob3IgdG8gYXR0YWNoIGlmcmFtZXMgb2YgZW1iZWRkZWQgbWljcm9mcm9udGVuZHMgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAjaWZyYW1lX2hvc3QvPlxuICA8L2Rpdj5cblxuICA8IS0tIEFuY2hvciB0byBhdHRhY2ggdGhlIHZpc3VhbCBwbGFjZWhvbGRlciB3aGVuIGRyYWdnaW5nIGEgdmlldyBvdmVyIGEgdmFsaWQgZHJvcCB6b25lIC0tPlxuICA8ZGl2ICN2aWV3X2Ryb3BfcGxhY2Vob2xkZXJfaG9zdCBjbGFzcz1cInZpZXctZHJvcC1wbGFjZWhvbGRlci1ob3N0XCI+PC9kaXY+XG5cbiAgPCEtLSBOb3RpZmljYXRpb25zIC0tPlxuICA8d2Itbm90aWZpY2F0aW9uLWxpc3QvPlxufVxuQGVsc2Uge1xuICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cInNwbGFzaFwiLz5cbn1cbiJdfQ==
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3dvcmtiZW5jaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi93b3JrYmVuY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQXVCLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUMsV0FBVyxFQUFFLDBCQUEwQixFQUFFLHFCQUFxQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFFN0gsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQVMsV0FBVyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzlDLE9BQU8sRUFBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDckYsT0FBTyxFQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFDLEtBQUssRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLEVBQW1CLE1BQU0sbUNBQW1DLENBQUM7QUFDNUosT0FBTyxFQUFDLHVCQUF1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WUFDSCxDQUFDO1NBQ0Y7UUFDRDtZQUNFLE9BQU8sRUFBRSxrQkFBa0I7WUFDM0IsUUFBUSxFQUFFLEVBQUMsUUFBUSxFQUFFLGVBQWUsRUFBNEI7U0FDakU7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIGluamVjdCwgT25EZXN0cm95LCBQcm92aWRlciwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SUZSQU1FX0hPU1QsIFZJRVdfRFJPUF9QTEFDRUhPTERFUl9IT1NULCBXT1JLQkVOQ0hfRUxFTUVOVF9SRUZ9IGZyb20gJy4vY29udGVudC1wcm9qZWN0aW9uL3ZpZXctY29udGFpbmVyLnJlZmVyZW5jZSc7XG5pbXBvcnQge1dvcmtiZW5jaExhdW5jaGVyLCBXb3JrYmVuY2hTdGFydHVwfSBmcm9tICcuL3N0YXJ0dXAvd29ya2JlbmNoLWxhdW5jaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtXb3JrYmVuY2hDb25maWd9IGZyb20gJy4vd29ya2JlbmNoLWNvbmZpZyc7XG5pbXBvcnQge0NvbXBvbmVudFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtTcGxhc2hDb21wb25lbnR9IGZyb20gJy4vc3RhcnR1cC9zcGxhc2gvc3BsYXNoLmNvbXBvbmVudCc7XG5pbXBvcnQge0xvZ2dlciwgTG9nZ2VyTmFtZXN9IGZyb20gJy4vbG9nZ2luZyc7XG5pbXBvcnQge0FzeW5jUGlwZSwgRE9DVU1FTlQsIE5nQ29tcG9uZW50T3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRDb21wb25lbnR9IGZyb20gJy4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7Tm90aWZpY2F0aW9uTGlzdENvbXBvbmVudH0gZnJvbSAnLi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgbGFzdFZhbHVlRnJvbX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpcnN0LCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7R0xBU1NfUEFORV9CTE9DS0FCTEUsIEdMQVNTX1BBTkVfT1BUSU9OUywgR0xBU1NfUEFORV9UQVJHRVRfRUxFTUVOVCwgR2xhc3NQYW5lRGlyZWN0aXZlLCBHbGFzc1BhbmVPcHRpb25zfSBmcm9tICcuL2dsYXNzLXBhbmUvZ2xhc3MtcGFuZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hEaWFsb2dSZWdpc3RyeX0gZnJvbSAnLi9kaWFsb2cvd29ya2JlbmNoLWRpYWxvZy5yZWdpc3RyeSc7XG5pbXBvcnQge0Jsb2NrYWJsZX0gZnJvbSAnLi9nbGFzcy1wYW5lL2Jsb2NrYWJsZSc7XG5pbXBvcnQge1dPUktCRU5DSF9BVVhJTElBUllfUk9VVEVfT1VUTEVUfSBmcm9tICcuL3JvdXRpbmcvd29ya2JlbmNoLWF1eGlsaWFyeS1yb3V0ZXMtcmVnaXN0cmF0b3Iuc2VydmljZSc7XG5cbi8qKlxuICogTWFpbiBlbnRyeSBwb2ludCBjb21wb25lbnQgb2YgdGhlIFNDSU9OIFdvcmtiZW5jaC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2Itd29ya2JlbmNoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtiZW5jaC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dvcmtiZW5jaC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxuICAgIFdvcmtiZW5jaExheW91dENvbXBvbmVudCxcbiAgICBOb3RpZmljYXRpb25MaXN0Q29tcG9uZW50LFxuICAgIEdsYXNzUGFuZURpcmVjdGl2ZSxcbiAgXSxcbiAgdmlld1Byb3ZpZGVyczogW1xuICAgIGNvbmZpZ3VyZVdvcmtiZW5jaEdsYXNzUGFuZSgpLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBWaWV3IGNvbnRhaW5lcnMgcmVxdWlyZWQgZm9yIHRoZSB3b3JrYmVuY2ggdG8gYXR0YWNoIGVsZW1lbnRzLlxuICAgKi9cbiAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmZXJlbmNlcyA9IHtcbiAgICB3b3JrYmVuY2hFbGVtZW50OiBpbmplY3QoV09SS0JFTkNIX0VMRU1FTlRfUkVGKSxcbiAgICBpZnJhbWVIb3N0OiBpbmplY3QoSUZSQU1FX0hPU1QpLFxuICAgIHZpZXdEcm9wUGxhY2Vob2xkZXJIb3N0OiBpbmplY3QoVklFV19EUk9QX1BMQUNFSE9MREVSX0hPU1QpLFxuICB9O1xuXG4gIC8qKlxuICAgKiBTcGxhc2ggdG8gZGlzcGxheSBkdXJpbmcgd29ya2JlbmNoIHN0YXJ0dXAuXG4gICAqL1xuICBwcm90ZWN0ZWQgc3BsYXNoOiBDb21wb25lbnRUeXBlPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSBhbGwgdGhlIHJlcXVpcmVkIHZpZXcgY29udGFpbmVycyBmb3IgdGhlIHdvcmtiZW5jaCB0byBhdHRhY2ggZWxlbWVudHMgaGF2ZSBiZWVuIGluamVjdGVkIGZyb20gdGhlIHRlbXBsYXRlLlxuICAgKlxuICAgKiBUbyBhdm9pZCBhbiBgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcmAsIG1ha2Ugc3VyZSBub3QgdG8gYWRkIHRoZSB7QGxpbmsgV29ya2JlbmNoTGF5b3V0Q29tcG9uZW50fSBiZWZvcmUgdGhlIHJlbGV2YW50XG4gICAqIHZpZXcgY29udGFpbmVycyBoYXZlIGJlZW4gaW5qZWN0ZWQuIE90aGVyd2lzZSwgd2hlbiBsb2FkaW5nIGFuIGV4aXN0aW5nIHdvcmtiZW5jaCBsYXlvdXQgKGUuZy4sIGZyb20gVVJMKSBpbnRvIHRoZSB3b3JrYmVuY2gsIEFuZ3VsYXJcbiAgICogd2lsbCB0aHJvdyB0aGlzIGVycm9yIGJlY2F1c2Ugdmlld3MgYXJlIHJlbmRlcmVkIGJlZm9yZSB2aWV3IGNvbnRhaW5lcnMgYXJlIGF2YWlsYWJsZS5cbiAgICovXG4gIHByb3RlY3RlZCB3aGVuVmlld0NvbnRhaW5lcnNJbmplY3RlZDogUHJvbWlzZTx0cnVlPjtcblxuICBAVmlld0NoaWxkKCdpZnJhbWVfaG9zdCcsIHtyZWFkOiBWaWV3Q29udGFpbmVyUmVmfSlcbiAgcHJvdGVjdGVkIHNldCBpbmplY3RJZnJhbWVIb3N0KHZjcjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIHZjciAmJiB0aGlzLnZpZXdDb250YWluZXJSZWZlcmVuY2VzLmlmcmFtZUhvc3Quc2V0KHZjcik7XG4gIH1cblxuICBAVmlld0NoaWxkKCd2aWV3X2Ryb3BfcGxhY2Vob2xkZXJfaG9zdCcsIHtyZWFkOiBWaWV3Q29udGFpbmVyUmVmfSlcbiAgcHJvdGVjdGVkIHNldCBpbmplY3RWaWV3RHJvcFBsYWNlaG9sZGVySG9zdCh2Y3I6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICB2Y3IgJiYgdGhpcy52aWV3Q29udGFpbmVyUmVmZXJlbmNlcy52aWV3RHJvcFBsYWNlaG9sZGVySG9zdC5zZXQodmNyKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHdvcmtiZW5jaENvbmZpZzogV29ya2JlbmNoQ29uZmlnLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hMYXVuY2hlcjogV29ya2JlbmNoTGF1bmNoZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2xvZ2dlcjogTG9nZ2VyLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgd29ya2JlbmNoU3RhcnR1cDogV29ya2JlbmNoU3RhcnR1cCkge1xuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiAnQ29uc3RydWN0aW5nIFdvcmtiZW5jaENvbXBvbmVudC4nLCBMb2dnZXJOYW1lcy5MSUZFQ1lDTEUpO1xuICAgIGlmIChpbmplY3QoV09SS0JFTkNIX0FVWElMSUFSWV9ST1VURV9PVVRMRVQsIHtvcHRpb25hbDogdHJ1ZX0pKSB7XG4gICAgICB0aHJvdyBFcnJvcihgW1dvcmtiZW5jaEVycm9yXSBXb3JrYmVuY2ggbXVzdCBub3QgYmUgbG9hZGVkIGludG8gYSB2aWV3LiBEaWQgeW91IG5hdmlnYXRlIHRvIHRoZSBlbXB0eSBwYXRoIHJvdXRlPyBNYWtlIHN1cmUgdGhhdCB0aGUgYXBwbGljYXRpb24ncyByb290IHJvdXRlIGlzIGd1YXJkZWQgd2l0aCAnY2FuTWF0Y2hXb3JrYmVuY2hWaWV3KGZhbHNlKScuIEV4YW1wbGU6IFwie3BhdGg6ICcnLCBjYW5NYXRjaDogW2Nhbk1hdGNoV29ya2JlbmNoVmlldyhmYWxzZSksIC4uLl19XCJgKTtcbiAgICB9XG4gICAgdGhpcy52aWV3Q29udGFpbmVyUmVmZXJlbmNlcy53b3JrYmVuY2hFbGVtZW50LnNldChpbmplY3QoVmlld0NvbnRhaW5lclJlZikpO1xuICAgIHRoaXMuc3BsYXNoID0gd29ya2JlbmNoQ29uZmlnPy5zdGFydHVwPy5zcGxhc2ggfHwgU3BsYXNoQ29tcG9uZW50O1xuICAgIHRoaXMud2hlblZpZXdDb250YWluZXJzSW5qZWN0ZWQgPSB0aGlzLmNyZWF0ZUhvc3RWaWV3Q29udGFpbmVyc0luamVjdGVkUHJvbWlzZSgpO1xuICAgIHRoaXMuc3RhcnRXb3JrYmVuY2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgdGhlIFNDSU9OIFdvcmtiZW5jaC4gSGFzIG5vIGVmZmVjdCBpZiBhbHJlYWR5IHN0YXJ0ZWQsIGUuZy4sIGluIGFuIGFwcCBpbml0aWFsaXplciBvciByb3V0ZSBndWFyZC5cbiAgICovXG4gIHByaXZhdGUgc3RhcnRXb3JrYmVuY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLndvcmtiZW5jaFN0YXJ0dXAuaXNTdGFydGVkKCkpIHtcbiAgICAgIHRoaXMuX3dvcmtiZW5jaExhdW5jaGVyLmxhdW5jaCgpLmNhdGNoKGVycm9yID0+IHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IFNDSU9OIFdvcmtiZW5jaCcsIGVycm9yKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSBhbGwgdGhlIHJlcXVpcmVkIHZpZXcgY29udGFpbmVycyBmb3IgdGhlIHdvcmtiZW5jaCB0byBhdHRhY2ggZWxlbWVudHMgaGF2ZSBiZWVuIGluamVjdGVkIGZyb20gdGhlIHRlbXBsYXRlLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVIb3N0Vmlld0NvbnRhaW5lcnNJbmplY3RlZFByb21pc2UoKTogUHJvbWlzZTx0cnVlPiB7XG4gICAgY29uc3QgcmVmZXJlbmNlcyA9IE9iamVjdC52YWx1ZXModGhpcy52aWV3Q29udGFpbmVyUmVmZXJlbmNlcyk7XG4gICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20oY29tYmluZUxhdGVzdChyZWZlcmVuY2VzLm1hcChyZWZlcmVuY2UgPT4gcmVmZXJlbmNlLnJlZiQpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpcnN0KHZjcnMgPT4gdmNycy5ldmVyeShCb29sZWFuKSksXG4gICAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgICkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc2V0cyB2aWV3IGNvbnRhaW5lciByZWZlcmVuY2VzIHdoZW4gdGhpcyBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxuICAgKi9cbiAgcHJpdmF0ZSB1bnNldFZpZXdDb250YWluZXJSZWZlcmVuY2VzKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy52aWV3Q29udGFpbmVyUmVmZXJlbmNlcykuZm9yRWFjaChyZWYgPT4gcmVmLnVuc2V0KCkpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zZXRWaWV3Q29udGFpbmVyUmVmZXJlbmNlcygpO1xuICB9XG59XG5cbi8qKlxuICogQmxvY2tzIHRoZSB3b3JrYmVuY2ggb3IgdGhlIGJyb3dzZXIncyB2aWV3cG9ydCB3aGVuIG9wZW5pbmcgYW4gYXBwbGljYXRpb24tbW9kYWwgZGlhbG9nLlxuICovXG5mdW5jdGlvbiBjb25maWd1cmVXb3JrYmVuY2hHbGFzc1BhbmUoKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogR0xBU1NfUEFORV9CTE9DS0FCTEUsXG4gICAgICB1c2VGYWN0b3J5OiAoKTogQmxvY2thYmxlID0+ICh7XG4gICAgICAgIGJsb2NrZWRCeSQ6IGluamVjdChXb3JrYmVuY2hEaWFsb2dSZWdpc3RyeSkudG9wJCgpLFxuICAgICAgfSksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBHTEFTU19QQU5FX1RBUkdFVF9FTEVNRU5ULFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICBpZiAoaW5qZWN0KFdvcmtiZW5jaENvbmZpZykuZGlhbG9nPy5tb2RhbGl0eVNjb3BlID09PSAndmlld3BvcnQnKSB7XG4gICAgICAgICAgcmV0dXJuIGluamVjdChET0NVTUVOVCkuYm9keTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogR0xBU1NfUEFORV9PUFRJT05TLFxuICAgICAgdXNlVmFsdWU6IHtjc3NDbGFzczogJ2UyZS13b3JrYmVuY2gnfSBzYXRpc2ZpZXMgR2xhc3NQYW5lT3B0aW9ucyxcbiAgICB9LFxuICBdO1xufVxuIiwiQGlmICh3b3JrYmVuY2hTdGFydHVwLndoZW5TdGFydGVkIHwgYXN5bmMpIHtcbiAgPGRpdiBjbGFzcz1cInN0YWNraW5nLWNvbnRleHQtYmFycmllclwiIHdiR2xhc3NQYW5lPlxuICAgIEBpZiAod2hlblZpZXdDb250YWluZXJzSW5qZWN0ZWQgfCBhc3luYykge1xuICAgICAgPHdiLXdvcmtiZW5jaC1sYXlvdXQvPlxuICAgIH1cbiAgICA8IS0tIEFjaG9yIHRvIGF0dGFjaCBpZnJhbWVzIG9mIGVtYmVkZGVkIG1pY3JvZnJvbnRlbmRzIC0tPlxuICAgIDxuZy1jb250YWluZXIgI2lmcmFtZV9ob3N0Lz5cbiAgPC9kaXY+XG5cbiAgPCEtLSBBbmNob3IgdG8gYXR0YWNoIHRoZSB2aXN1YWwgcGxhY2Vob2xkZXIgd2hlbiBkcmFnZ2luZyBhIHZpZXcgb3ZlciBhIHZhbGlkIGRyb3Agem9uZSAtLT5cbiAgPGRpdiAjdmlld19kcm9wX3BsYWNlaG9sZGVyX2hvc3QgY2xhc3M9XCJ2aWV3LWRyb3AtcGxhY2Vob2xkZXItaG9zdFwiPjwvZGl2PlxuXG4gIDwhLS0gTm90aWZpY2F0aW9ucyAtLT5cbiAgPHdiLW5vdGlmaWNhdGlvbi1saXN0Lz5cbn0gQGVsc2Uge1xuICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cInNwbGFzaFwiLz5cbn1cbiJdfQ==
@@ -9,15 +9,9 @@
9
9
  */
10
10
  import { InjectionToken } from '@angular/core';
11
11
  /**
12
- * DI token to ensure `WorkbenchModule.forRoot()` is not used in a lazy context.
13
- */
14
- export const WORKBENCH_FORROOT_GUARD = new InjectionToken('WORKBENCH_FORROOT_GUARD');
15
- /**
16
- * Prefix for views that are target of a primary route.
12
+ * Represents the id prefix of views.
17
13
  *
18
- * Views with an id that begins with the view prefix can be the target of any primary route. A primary route does not declare an outlet.
19
- * On the other hand, views with an id that does not begin with the view prefix can only be the target of secondary routes having the view
20
- * id as their target outlet.
14
+ * @see ViewId
21
15
  */
22
16
  export const VIEW_ID_PREFIX = 'view.';
23
17
  /**
@@ -28,6 +22,10 @@ export const POPUP_ID_PREFIX = 'popup.';
28
22
  * Represents the id prefix of dialogs.
29
23
  */
30
24
  export const DIALOG_ID_PREFIX = 'dialog.';
25
+ /**
26
+ * Represents the id prefix of message boxes.
27
+ */
28
+ export const MESSAGE_BOX_ID_PREFIX = 'messagebox.';
31
29
  /**
32
30
  * Name of the query parameter that contains the layout of the main area.
33
31
  */
@@ -44,4 +42,4 @@ export const WORKBENCH_LAYOUT_CONFIG = new InjectionToken('WORKBENCH_LAYOUT_CONF
44
42
  * Prefix used to identify an anonymous perspective that the workbench creates for views moved to a new window.
45
43
  */
46
44
  export const ANONYMOUS_PERSPECTIVE_ID_PREFIX = 'anonymous.';
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3dvcmtiZW5jaC5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRzdDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQU8seUJBQXlCLENBQUMsQ0FBQztBQUUzRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBRXRDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQztBQUV4Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztBQUUxQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLFdBQVcsQ0FBQztBQVd4RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLElBQUksY0FBYyxDQUEwQiw0QkFBNEIsQ0FBQyxDQUFDO0FBRXBIOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQTRDLHlCQUF5QixDQUFDLENBQUM7QUFFaEk7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRGbiwgV29ya2JlbmNoUGVyc3BlY3RpdmVzfSBmcm9tICcuL3BlcnNwZWN0aXZlL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS5tb2RlbCc7XG5cbi8qKlxuICogREkgdG9rZW4gdG8gZW5zdXJlIGBXb3JrYmVuY2hNb2R1bGUuZm9yUm9vdCgpYCBpcyBub3QgdXNlZCBpbiBhIGxhenkgY29udGV4dC5cbiAqL1xuZXhwb3J0IGNvbnN0IFdPUktCRU5DSF9GT1JST09UX0dVQVJEID0gbmV3IEluamVjdGlvblRva2VuPHZvaWQ+KCdXT1JLQkVOQ0hfRk9SUk9PVF9HVUFSRCcpO1xuXG4vKipcbiAqIFByZWZpeCBmb3Igdmlld3MgdGhhdCBhcmUgdGFyZ2V0IG9mIGEgcHJpbWFyeSByb3V0ZS5cbiAqXG4gKiBWaWV3cyB3aXRoIGFuIGlkIHRoYXQgYmVnaW5zIHdpdGggdGhlIHZpZXcgcHJlZml4IGNhbiBiZSB0aGUgdGFyZ2V0IG9mIGFueSBwcmltYXJ5IHJvdXRlLiBBIHByaW1hcnkgcm91dGUgZG9lcyBub3QgZGVjbGFyZSBhbiBvdXRsZXQuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgdmlld3Mgd2l0aCBhbiBpZCB0aGF0IGRvZXMgbm90IGJlZ2luIHdpdGggdGhlIHZpZXcgcHJlZml4IGNhbiBvbmx5IGJlIHRoZSB0YXJnZXQgb2Ygc2Vjb25kYXJ5IHJvdXRlcyBoYXZpbmcgdGhlIHZpZXdcbiAqIGlkIGFzIHRoZWlyIHRhcmdldCBvdXRsZXQuXG4gKi9cbmV4cG9ydCBjb25zdCBWSUVXX0lEX1BSRUZJWCA9ICd2aWV3Lic7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgaWQgcHJlZml4IG9mIHBvcHVwcy5cbiAqL1xuZXhwb3J0IGNvbnN0IFBPUFVQX0lEX1BSRUZJWCA9ICdwb3B1cC4nO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGlkIHByZWZpeCBvZiBkaWFsb2dzLlxuICovXG5leHBvcnQgY29uc3QgRElBTE9HX0lEX1BSRUZJWCA9ICdkaWFsb2cuJztcblxuLyoqXG4gKiBOYW1lIG9mIHRoZSBxdWVyeSBwYXJhbWV0ZXIgdGhhdCBjb250YWlucyB0aGUgbGF5b3V0IG9mIHRoZSBtYWluIGFyZWEuXG4gKi9cbmV4cG9ydCBjb25zdCBNQUlOX0FSRUFfTEFZT1VUX1FVRVJZX1BBUkFNID0gJ21haW5fYXJlYSc7XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgY29udGV4dCBpbiB3aGljaCBhIHZpZXd0YWIgaXMgcmVuZGVyZWQuXG4gKlxuICogLSBgdGFiYDogaWYgcmVuZGVyZWQgYXMgdmlldyB0YWIgaW4gdGhlIHRhYmJhclxuICogLSBgbGlzdC1pdGVtYDogIGlmIHJlbmRlcmVkIGFzIGxpc3QgaXRlbSBpbiB0aGUgdmlldyBsaXN0IG1lbnVcbiAqIC0gYGRyYWctaW1hZ2VgOiBpZiByZW5kZXJlZCBhcyBkcmFnIGltYWdlIHdoaWxlIGRyYWdnaW5nIGEgdmlldyB0YWJcbiAqL1xuZXhwb3J0IHR5cGUgVmlld1RhYlJlbmRlcmluZ0NvbnRleHQgPSAndGFiJyB8ICdsaXN0LWl0ZW0nIHwgJ2RyYWctaW1hZ2UnO1xuXG4vKipcbiAqIERJIHRva2VuIHRvIGluamVjdCB0aGUgY29udGV4dCBpbiB3aGljaCB0aGUgdmlldyB0YWIgaXMgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBWSUVXX1RBQl9SRU5ERVJJTkdfQ09OVEVYVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxWaWV3VGFiUmVuZGVyaW5nQ29udGV4dD4oJ1ZJRVdfVEFCX1JFTkRFUklOR19DT05URVhUJyk7XG5cbi8qKlxuICogREkgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBjb25maWd1cmVkIHdvcmtiZW5jaCBsYXlvdXQuXG4gKi9cbmV4cG9ydCBjb25zdCBXT1JLQkVOQ0hfTEFZT1VUX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxXb3JrYmVuY2hMYXlvdXRGbiB8IFdvcmtiZW5jaFBlcnNwZWN0aXZlcz4oJ1dPUktCRU5DSF9MQVlPVVRfQ09ORklHJyk7XG5cbi8qKlxuICogUHJlZml4IHVzZWQgdG8gaWRlbnRpZnkgYW4gYW5vbnltb3VzIHBlcnNwZWN0aXZlIHRoYXQgdGhlIHdvcmtiZW5jaCBjcmVhdGVzIGZvciB2aWV3cyBtb3ZlZCB0byBhIG5ldyB3aW5kb3cuXG4gKi9cbmV4cG9ydCBjb25zdCBBTk9OWU1PVVNfUEVSU1BFQ1RJVkVfSURfUFJFRklYID0gJ2Fub255bW91cy4nO1xuIl19
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3dvcmtiZW5jaC5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRzdDOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBRXRDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQztBQUV4Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztBQUUxQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLGFBQWEsQ0FBQztBQUVuRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLFdBQVcsQ0FBQztBQVd4RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLElBQUksY0FBYyxDQUEwQiw0QkFBNEIsQ0FBQyxDQUFDO0FBRXBIOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQTRDLHlCQUF5QixDQUFDLENBQUM7QUFFaEk7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRGbiwgV29ya2JlbmNoUGVyc3BlY3RpdmVzfSBmcm9tICcuL3BlcnNwZWN0aXZlL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS5tb2RlbCc7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgaWQgcHJlZml4IG9mIHZpZXdzLlxuICpcbiAqIEBzZWUgVmlld0lkXG4gKi9cbmV4cG9ydCBjb25zdCBWSUVXX0lEX1BSRUZJWCA9ICd2aWV3Lic7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgaWQgcHJlZml4IG9mIHBvcHVwcy5cbiAqL1xuZXhwb3J0IGNvbnN0IFBPUFVQX0lEX1BSRUZJWCA9ICdwb3B1cC4nO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGlkIHByZWZpeCBvZiBkaWFsb2dzLlxuICovXG5leHBvcnQgY29uc3QgRElBTE9HX0lEX1BSRUZJWCA9ICdkaWFsb2cuJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBpZCBwcmVmaXggb2YgbWVzc2FnZSBib3hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfQk9YX0lEX1BSRUZJWCA9ICdtZXNzYWdlYm94Lic7XG5cbi8qKlxuICogTmFtZSBvZiB0aGUgcXVlcnkgcGFyYW1ldGVyIHRoYXQgY29udGFpbnMgdGhlIGxheW91dCBvZiB0aGUgbWFpbiBhcmVhLlxuICovXG5leHBvcnQgY29uc3QgTUFJTl9BUkVBX0xBWU9VVF9RVUVSWV9QQVJBTSA9ICdtYWluX2FyZWEnO1xuXG4vKipcbiAqIERlZmluZXMgdGhlIGNvbnRleHQgaW4gd2hpY2ggYSB2aWV3dGFiIGlzIHJlbmRlcmVkLlxuICpcbiAqIC0gYHRhYmA6IGlmIHJlbmRlcmVkIGFzIHZpZXcgdGFiIGluIHRoZSB0YWJiYXJcbiAqIC0gYGxpc3QtaXRlbWA6ICBpZiByZW5kZXJlZCBhcyBsaXN0IGl0ZW0gaW4gdGhlIHZpZXcgbGlzdCBtZW51XG4gKiAtIGBkcmFnLWltYWdlYDogaWYgcmVuZGVyZWQgYXMgZHJhZyBpbWFnZSB3aGlsZSBkcmFnZ2luZyBhIHZpZXcgdGFiXG4gKi9cbmV4cG9ydCB0eXBlIFZpZXdUYWJSZW5kZXJpbmdDb250ZXh0ID0gJ3RhYicgfCAnbGlzdC1pdGVtJyB8ICdkcmFnLWltYWdlJztcblxuLyoqXG4gKiBESSB0b2tlbiB0byBpbmplY3QgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIHZpZXcgdGFiIGlzIHJlbmRlcmVkLlxuICovXG5leHBvcnQgY29uc3QgVklFV19UQUJfUkVOREVSSU5HX0NPTlRFWFQgPSBuZXcgSW5qZWN0aW9uVG9rZW48Vmlld1RhYlJlbmRlcmluZ0NvbnRleHQ+KCdWSUVXX1RBQl9SRU5ERVJJTkdfQ09OVEVYVCcpO1xuXG4vKipcbiAqIERJIHRva2VuIHJlcHJlc2VudGluZyB0aGUgY29uZmlndXJlZCB3b3JrYmVuY2ggbGF5b3V0LlxuICovXG5leHBvcnQgY29uc3QgV09SS0JFTkNIX0xBWU9VVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48V29ya2JlbmNoTGF5b3V0Rm4gfCBXb3JrYmVuY2hQZXJzcGVjdGl2ZXM+KCdXT1JLQkVOQ0hfTEFZT1VUX0NPTkZJRycpO1xuXG4vKipcbiAqIFByZWZpeCB1c2VkIHRvIGlkZW50aWZ5IGFuIGFub255bW91cyBwZXJzcGVjdGl2ZSB0aGF0IHRoZSB3b3JrYmVuY2ggY3JlYXRlcyBmb3Igdmlld3MgbW92ZWQgdG8gYSBuZXcgd2luZG93LlxuICovXG5leHBvcnQgY29uc3QgQU5PTllNT1VTX1BFUlNQRUNUSVZFX0lEX1BSRUZJWCA9ICdhbm9ueW1vdXMuJztcbiJdfQ==
@@ -8,4 +8,4 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
10
  export {};
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvd29ya2JlbmNoLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWwsIFBvcnRhbCwgVGVtcGxhdGVQb3J0YWx9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hWaWV3fSBmcm9tICcuL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hQYXJ0fSBmcm9tICcuL3BhcnQvd29ya2JlbmNoLXBhcnQubW9kZWwnO1xuXG4vKipcbiAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIHdoZW4gYSB2aWV3IGNvbXBvbmVudCBpcyB0byBiZSBkZXN0cm95ZWQsIGFuZCB3aGljaCBpcyBjYWxsZWQgYmVmb3JlICduZ09uRGVzdHJveScuXG4gKlxuICogVGhlIHJldHVybiB2YWx1ZSBjb250cm9scyB3aGV0aGVyIGRlc3RydWN0aW9uIHNob3VsZCBiZSBjb250aW51ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoVmlld1ByZURlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBMaWZlY3ljbGUgaG9vayB3aGljaCBpcyBjYWxsZWQgdXBvbiB2aWV3IGRlc3RydWN0aW9uLlxuICAgKlxuICAgKiBSZXR1cm4gYSBmYWxzeSB2YWx1ZSB0byBwcmV2ZW50IHZpZXcgZGVzdHJ1Y3Rpb24sIGVpdGhlciBhcyBhIGJvb2xlYW4gdmFsdWUgb3IgYXMgYW4gb2JzZXJ2YWJsZSB3aGljaCBlbWl0cyBhIGJvb2xlYW4gdmFsdWUuXG4gICAqL1xuICBvbldvcmtiZW5jaFZpZXdQcmVEZXN0cm95KCk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYW4gYWN0aW9uIGNvbnRyaWJ1dGVkIHRvIGEgcGFydC5cbiAqXG4gKiBQYXJ0IGFjdGlvbnMgYXJlIGRpc3BsYXllZCB0byB0aGUgcmlnaHQgb2YgdGhlIHZpZXcgdGFiIGJhciBhbmQgZW5hYmxlIGludGVyYWN0aW9uIHdpdGggdGhlIHBhcnQgYW5kIGl0cyBjb250ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtiZW5jaFBhcnRBY3Rpb24ge1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBwb3J0YWwgdG8gcmVuZGVyIHRoZSBhY3Rpb24uXG4gICAqXG4gICAqIFVzZSBhIHtAbGluayBDb21wb25lbnRQb3J0YWx9IHRvIHJlbmRlciBhIGNvbXBvbmVudCwgb3IgYSB7QGxpbmsgVGVtcGxhdGVQb3J0YWx9IHRvIHJlbmRlciBhIHRlbXBsYXRlLlxuICAgKi9cbiAgcG9ydGFsOiBQb3J0YWw8dW5rbm93bj47XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hlcmUgdG8gcGxhY2UgdGhpcyBhY3Rpb24gaW4gdGhlIGFjdGlvbiBiYXIuXG4gICAqL1xuICBhbGlnbj86ICdzdGFydCcgfCAnZW5kJztcbiAgLyoqXG4gICAqIFByZWRpY2F0ZSB0byBtYXRjaCBhIHNwZWNpZmljIHBhcnQsIHBhcnRzIGluIGEgc3BlY2lmaWMgYXJlYSwgb3IgcGFydHMgZnJvbSBhIHNwZWNpZmljIHBlcnNwZWN0aXZlLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBpZiBub3Qgc3BlY2lmaWVkLCBtYXRjaGVzIGFueSBwYXJ0LlxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICBjYW5NYXRjaD86IENhbk1hdGNoUGFydEZuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIENTUyBjbGFzcyhlcykgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBhY3Rpb24sIHVzZWZ1bCBpbiBlbmQtdG8tZW5kIHRlc3RzIGZvciBsb2NhdGluZyBpdC5cbiAgICovXG4gIGNzc0NsYXNzPzogc3RyaW5nIHwgc3RyaW5nW107XG59XG5cbi8qKlxuICogVGhlIHNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uIHVzZWQgYXMgYSBgY2FuTWF0Y2hgIGNvbmRpdGlvbiBmb3IgYSBwYXJ0LlxuICpcbiAqIFRoZSBmdW5jdGlvbiBjYW4gY2FsbCBgaW5qZWN0YCB0byBnZXQgYW55IHJlcXVpcmVkIGRlcGVuZGVuY2llcy5cbiAqL1xuZXhwb3J0IHR5cGUgQ2FuTWF0Y2hQYXJ0Rm4gPSAocGFydDogV29ya2JlbmNoUGFydCkgPT4gYm9vbGVhbjtcblxuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIHtAbGluayBXb3JrYmVuY2hNZW51SXRlbX0uXG4gKi9cbmV4cG9ydCB0eXBlIFdvcmtiZW5jaE1lbnVJdGVtRmFjdG9yeUZuID0gKHZpZXc6IFdvcmtiZW5jaFZpZXcpID0+IFdvcmtiZW5jaE1lbnVJdGVtIHwgbnVsbDtcblxuLyoqXG4gKiBNZW51IGl0ZW0gaW4gYSBtZW51IG9yIGNvbnRleHQgbWVudS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrYmVuY2hNZW51SXRlbSB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGNvbnRlbnQgb2YgdGhlIG1lbnUgaXRlbS5cbiAgICovXG4gIHBvcnRhbDogVGVtcGxhdGVQb3J0YWwgfCBDb21wb25lbnRQb3J0YWw8YW55PjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgY2FsbGJhY2sgdHJpZ2dlcmVkIHdoZW4gY2xpY2tpbmcgdGhpcyBtZW51IGl0ZW0uXG4gICAqXG4gICAqIFRoZSBmdW5jdGlvbiBjYW4gY2FsbCBgaW5qZWN0YCB0byBnZXQgYW55IHJlcXVpcmVkIGRlcGVuZGVuY2llcy5cbiAgICovXG4gIG9uQWN0aW9uOiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogQWxsb3dzIHRoZSB1c2VyIHRvIGludGVyYWN0IHdpdGggdGhlIG1lbnUgaXRlbSB1c2luZyBrZXlzIG9uIHRoZSBrZXlib2FyZCwgZS5nLiwgWydjdHJsJywgJ2FsdCcsIDFdLlxuICAgKlxuICAgKiBTdXBwb3J0ZWQgbW9kaWZpZXJzIGFyZSAnY3RybCcsICdzaGlmdCcsICdhbHQnIGFuZCAnbWV0YScuXG4gICAqL1xuICBhY2NlbGVyYXRvcj86IHN0cmluZ1tdO1xuICAvKipcbiAgICogQWxsb3dzIGdyb3VwaW5nIG1lbnUgaXRlbXMgb2YgdGhlIHNhbWUgZ3JvdXAuXG4gICAqL1xuICBncm91cD86IHN0cmluZztcbiAgLyoqXG4gICAqIEFsbG93cyBkaXNhYmxpbmcgdGhlIG1lbnUgaXRlbSBiYXNlZCBvbiBhIGNvbmRpdGlvbi5cbiAgICovXG4gIGlzRGlzYWJsZWQ/OiAoKSA9PiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIENTUyBjbGFzcyhlcykgdG8gYmUgYWRkZWQgdG8gdGhlIG1lbnUgaXRlbSwgdXNlZnVsIGluIGVuZC10by1lbmQgdGVzdHMgZm9yIGxvY2F0aW5nIHRoZSBtZW51IGl0ZW0uXG4gICAqL1xuICBjc3NDbGFzcz86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IGEgd29ya2JlbmNoIHRoZW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtiZW5jaFRoZW1lIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0aGVtZS5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBzY2hlbWUgb2YgdGhlIHRoZW1lLlxuICAgKi9cbiAgY29sb3JTY2hlbWU6ICdsaWdodCcgfCAnZGFyayc7XG59XG4iXX0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvd29ya2JlbmNoLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWwsIFBvcnRhbCwgVGVtcGxhdGVQb3J0YWx9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hWaWV3fSBmcm9tICcuL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hQYXJ0fSBmcm9tICcuL3BhcnQvd29ya2JlbmNoLXBhcnQubW9kZWwnO1xuXG4vKipcbiAqIEd1YXJkIHRoYXQgYSB2aWV3IGNhbiBpbXBsZW1lbnQgdG8gZGVjaWRlIHdoZXRoZXIgaXQgY2FuIGJlIGNsb3NlZC5cbiAqXG4gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgaW1wbGVtZW50cyBhIGBDYW5DbG9zZWAgZ3VhcmQgdGhhdCBhc2tzIHRoZSB1c2VyIHdoZXRoZXIgdGhlIHZpZXcgY2FuIGJlIGNsb3NlZC5cbiAqXG4gKiBgYGB0c1xuICogY2xhc3MgVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIENhbkNsb3NlIHtcbiAqXG4gKiAgIHB1YmxpYyBhc3luYyBjYW5DbG9zZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAqICAgICBjb25zdCBhY3Rpb24gPSBhd2FpdCBpbmplY3QoV29ya2JlbmNoTWVzc2FnZUJveFNlcnZpY2UpLm9wZW4oJ0RvIHlvdSB3YW50IHRvIGNsb3NlIHRoaXMgdmlldz8nLCB7XG4gKiAgICAgICBhY3Rpb25zOiB7eWVzOiAnWWVzJywgbm86ICdObyd9LFxuICogICAgIH0pO1xuICogICAgIHJldHVybiBhY3Rpb24gPT09ICd5ZXMnO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYW5DbG9zZSB7XG5cbiAgLyoqXG4gICAqIERlY2lkZXMgd2hldGhlciB0aGlzIHZpZXcgY2FuIGJlIGNsb3NlZC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBjYW4gY2FsbCBgaW5qZWN0YCB0byBnZXQgYW55IHJlcXVpcmVkIGRlcGVuZGVuY2llcy5cbiAgICovXG4gIGNhbkNsb3NlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYW4gYWN0aW9uIGNvbnRyaWJ1dGVkIHRvIGEgcGFydC5cbiAqXG4gKiBQYXJ0IGFjdGlvbnMgYXJlIGRpc3BsYXllZCB0byB0aGUgcmlnaHQgb2YgdGhlIHZpZXcgdGFiIGJhciBhbmQgZW5hYmxlIGludGVyYWN0aW9uIHdpdGggdGhlIHBhcnQgYW5kIGl0cyBjb250ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtiZW5jaFBhcnRBY3Rpb24ge1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBwb3J0YWwgdG8gcmVuZGVyIHRoZSBhY3Rpb24uXG4gICAqXG4gICAqIFVzZSBhIHtAbGluayBDb21wb25lbnRQb3J0YWx9IHRvIHJlbmRlciBhIGNvbXBvbmVudCwgb3IgYSB7QGxpbmsgVGVtcGxhdGVQb3J0YWx9IHRvIHJlbmRlciBhIHRlbXBsYXRlLlxuICAgKi9cbiAgcG9ydGFsOiBQb3J0YWw8dW5rbm93bj47XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hlcmUgdG8gcGxhY2UgdGhpcyBhY3Rpb24gaW4gdGhlIGFjdGlvbiBiYXIuXG4gICAqL1xuICBhbGlnbj86ICdzdGFydCcgfCAnZW5kJztcbiAgLyoqXG4gICAqIFByZWRpY2F0ZSB0byBtYXRjaCBhIHNwZWNpZmljIHBhcnQsIHBhcnRzIGluIGEgc3BlY2lmaWMgYXJlYSwgb3IgcGFydHMgZnJvbSBhIHNwZWNpZmljIHBlcnNwZWN0aXZlLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBpZiBub3Qgc3BlY2lmaWVkLCBtYXRjaGVzIGFueSBwYXJ0LlxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICBjYW5NYXRjaD86IENhbk1hdGNoUGFydEZuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIENTUyBjbGFzcyhlcykgdG8gYWRkIHRvIHRoZSBhY3Rpb24sIGUuZy4sIHRvIGxvY2F0ZSB0aGUgYWN0aW9uIGluIHRlc3RzLlxuICAgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBUaGUgc2lnbmF0dXJlIG9mIGEgZnVuY3Rpb24gdXNlZCBhcyBhIGBjYW5NYXRjaGAgY29uZGl0aW9uIGZvciBhIHBhcnQuXG4gKlxuICogVGhlIGZ1bmN0aW9uIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLlxuICovXG5leHBvcnQgdHlwZSBDYW5NYXRjaFBhcnRGbiA9IChwYXJ0OiBXb3JrYmVuY2hQYXJ0KSA9PiBib29sZWFuO1xuXG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEge0BsaW5rIFdvcmtiZW5jaE1lbnVJdGVtfS5cbiAqL1xuZXhwb3J0IHR5cGUgV29ya2JlbmNoTWVudUl0ZW1GYWN0b3J5Rm4gPSAodmlldzogV29ya2JlbmNoVmlldykgPT4gV29ya2JlbmNoTWVudUl0ZW0gfCBudWxsO1xuXG4vKipcbiAqIE1lbnUgaXRlbSBpbiBhIG1lbnUgb3IgY29udGV4dCBtZW51LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtiZW5jaE1lbnVJdGVtIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgY29udGVudCBvZiB0aGUgbWVudSBpdGVtLlxuICAgKi9cbiAgcG9ydGFsOiBUZW1wbGF0ZVBvcnRhbCB8IENvbXBvbmVudFBvcnRhbDxhbnk+O1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBjYWxsYmFjayB0cmlnZ2VyZWQgd2hlbiBjbGlja2luZyB0aGlzIG1lbnUgaXRlbS5cbiAgICpcbiAgICogVGhlIGZ1bmN0aW9uIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgb25BY3Rpb246ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBBbGxvd3MgdGhlIHVzZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgbWVudSBpdGVtIHVzaW5nIGtleXMgb24gdGhlIGtleWJvYXJkLCBlLmcuLCBbJ2N0cmwnLCAnYWx0JywgMV0uXG4gICAqXG4gICAqIFN1cHBvcnRlZCBtb2RpZmllcnMgYXJlICdjdHJsJywgJ3NoaWZ0JywgJ2FsdCcgYW5kICdtZXRhJy5cbiAgICovXG4gIGFjY2VsZXJhdG9yPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBBbGxvd3MgZ3JvdXBpbmcgbWVudSBpdGVtcyBvZiB0aGUgc2FtZSBncm91cC5cbiAgICovXG4gIGdyb3VwPzogc3RyaW5nO1xuICAvKipcbiAgICogQWxsb3dzIGRpc2FibGluZyB0aGUgbWVudSBpdGVtIGJhc2VkIG9uIGEgY29uZGl0aW9uLlxuICAgKi9cbiAgaXNEaXNhYmxlZD86ICgpID0+IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgQ1NTIGNsYXNzKGVzKSB0byBhZGQgdG8gdGhlIG1lbnUgaXRlbSwgZS5nLiwgdG8gbG9jYXRlIHRoZSBtZW51IGl0ZW0gaW4gdGVzdHMuXG4gICAqL1xuICBjc3NDbGFzcz86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IGEgd29ya2JlbmNoIHRoZW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtiZW5jaFRoZW1lIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0aGVtZS5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBzY2hlbWUgb2YgdGhlIHRoZW1lLlxuICAgKi9cbiAgY29sb3JTY2hlbWU6ICdsaWdodCcgfCAnZGFyayc7XG59XG4iXX0=
@@ -7,26 +7,12 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { ENVIRONMENT_INITIALIZER, inject, Inject, NgModule, Optional, SkipSelf } from '@angular/core';
10
+ import { NgModule } from '@angular/core';
11
11
  import { WorkbenchComponent } from './workbench.component';
12
- import { WorkbenchService } from './workbench.service';
13
12
  import { WorkbenchRouterLinkDirective } from './routing/workbench-router-link.directive';
14
- import { WorkbenchUrlObserver } from './routing/workbench-url-observer.service';
15
- import { WorkbenchModuleConfig } from './workbench-module-config';
16
- import { WORKBENCH_FORROOT_GUARD, WORKBENCH_LAYOUT_CONFIG } from './workbench.constants';
17
13
  import { WorkbenchPartActionDirective } from './part/part-action-bar/part-action.directive';
18
14
  import { WorkbenchViewMenuItemDirective } from './part/view-context-menu/view-menu.directive';
19
- import { ViewMenuService } from './part/view-context-menu/view-menu.service';
20
- import { ViewMoveHandler } from './view/view-move-handler.service';
21
- import { provideWorkbenchMicrofrontendSupport } from './microfrontend-platform/workbench-microfrontend-support';
22
- import { provideWorkbenchLauncher } from './startup/workbench-launcher.service';
23
- import { provideLogging } from './logging';
24
- import { WORKBENCH_POST_STARTUP, WORKBENCH_PRE_STARTUP, WORKBENCH_STARTUP } from './startup/workbench-initializer';
25
- import { WorkbenchPerspectiveService } from './perspective/workbench-perspective.service';
26
- import { DefaultWorkbenchStorage, WorkbenchStorage } from './storage/workbench-storage';
27
- import { provideLocationPatch } from './routing/ɵlocation';
28
- import { MAIN_AREA } from './layout/workbench-layout';
29
- import { WorkbenchThemeSwitcher } from './theme/workbench-theme-switcher.service';
15
+ import { provideWorkbench } from './workbench.provider';
30
16
  import * as i0 from "@angular/core";
31
17
  /**
32
18
  * Module of the SCION Workbench.
@@ -42,12 +28,12 @@ import * as i0 from "@angular/core";
42
28
  * the user's workflow. Defining a main area is optional and recommended for applications requiring a dedicated and maximizable
43
29
  * area for user interaction.
44
30
  *
45
- * Multiple layouts, called perspectives, are supported. Perspectives can be switched with one perspective active at a time.
31
+ * Multiple layouts, called perspectives, are supported. Perspectives can be switched. Only one perspective is active at a time.
46
32
  * Perspectives share the same main area, if any.
33
+ *
34
+ * @deprecated since version 17.0.0-beta.8; Register SCION Workbench providers using `provideWorkbench` function and import standalone components and directives instead; API will be removed in a future release.
47
35
  */
48
36
  export class WorkbenchModule {
49
- constructor(guard) {
50
- }
51
37
  /**
52
38
  * To manifest a dependency to the workbench module from the application module.
53
39
  *
@@ -63,64 +49,19 @@ export class WorkbenchModule {
63
49
  * })
64
50
  * export class AppModule { }
65
51
  * ```
52
+ *
53
+ * @deprecated since version 17.0.0-beta.8; Register SCION Workbench providers using `provideWorkbench` function and import standalone components and directives instead; API will be removed in a future release.
66
54
  */
67
55
  static forRoot(config = {}) {
68
56
  return {
69
57
  ngModule: WorkbenchModule,
70
- providers: [
71
- {
72
- provide: WorkbenchModuleConfig,
73
- useValue: config,
74
- },
75
- {
76
- provide: WorkbenchStorage,
77
- useClass: config.storage ?? DefaultWorkbenchStorage,
78
- },
79
- {
80
- provide: WORKBENCH_LAYOUT_CONFIG,
81
- useFactory: () => config.layout ?? ((factory) => factory.addPart(MAIN_AREA)),
82
- },
83
- {
84
- provide: WORKBENCH_FORROOT_GUARD,
85
- useFactory: provideForRootGuard,
86
- deps: [[WorkbenchService, new Optional(), new SkipSelf()]],
87
- },
88
- {
89
- provide: WORKBENCH_PRE_STARTUP,
90
- useExisting: WorkbenchThemeSwitcher,
91
- multi: true,
92
- },
93
- {
94
- provide: WORKBENCH_STARTUP,
95
- multi: true,
96
- useExisting: WorkbenchPerspectiveService,
97
- },
98
- {
99
- provide: WORKBENCH_POST_STARTUP,
100
- useExisting: ViewMenuService,
101
- multi: true,
102
- },
103
- {
104
- provide: WORKBENCH_POST_STARTUP,
105
- useClass: ViewMoveHandler,
106
- multi: true,
107
- },
108
- {
109
- provide: ENVIRONMENT_INITIALIZER,
110
- multi: true,
111
- useValue: () => inject(WorkbenchUrlObserver),
112
- },
113
- provideWorkbenchLauncher(config),
114
- provideLogging(config),
115
- provideLocationPatch(),
116
- provideWorkbenchMicrofrontendSupport(config),
117
- ],
58
+ providers: [provideWorkbench(config)],
118
59
  };
119
60
  }
120
61
  /**
121
62
  * To manifest a dependency to the workbench module from a feature module.
122
63
  *
123
- * @deprecated since version 16.0.0-beta.1; Import {@link WorkbenchModule} or standalone directives directly; API will be removed in a future release.
64
+ * @deprecated since version 16.0.0-beta.1; use standalone workbench component and directives instead; API will be removed in a future release.
124
65
  *
125
66
  * TODO [#312]: Remove when fixed issue https://github.com/SchweizerischeBundesbahnen/scion-workbench/issues/312
126
67
  */
@@ -130,17 +71,17 @@ export class WorkbenchModule {
130
71
  providers: [], // do not register any providers in 'forChild' but in 'forRoot' instead
131
72
  };
132
73
  }
133
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchModule, deps: [{ token: WORKBENCH_FORROOT_GUARD }], target: i0.ɵɵFactoryTarget.NgModule }); }
134
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchModule, imports: [WorkbenchComponent,
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
75
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchModule, imports: [WorkbenchComponent,
135
76
  WorkbenchRouterLinkDirective,
136
77
  WorkbenchPartActionDirective,
137
78
  WorkbenchViewMenuItemDirective], exports: [WorkbenchComponent,
138
79
  WorkbenchRouterLinkDirective,
139
80
  WorkbenchPartActionDirective,
140
81
  WorkbenchViewMenuItemDirective] }); }
141
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchModule, imports: [WorkbenchComponent] }); }
82
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchModule, imports: [WorkbenchComponent] }); }
142
83
  }
143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchModule, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchModule, decorators: [{
144
85
  type: NgModule,
145
86
  args: [{
146
87
  imports: [
@@ -156,17 +97,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
156
97
  WorkbenchViewMenuItemDirective,
157
98
  ],
158
99
  }]
159
- }], ctorParameters: () => [{ type: undefined, decorators: [{
160
- type: Inject,
161
- args: [WORKBENCH_FORROOT_GUARD]
162
- }] }] });
163
- /**
164
- * @docs-private Not public API, intended for internal use only.
165
- */
166
- export function provideForRootGuard(workbenchService) {
167
- if (workbenchService) {
168
- throw new Error('[ModuleForRootError] WorkbenchModule.forRoot() called twice. Lazy loaded modules should use WorkbenchModule.forChild() instead.');
169
- }
170
- return 'guarded';
171
- }
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3dvcmtiZW5jaC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBdUIsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekgsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDdkYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDOUUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFDLHVCQUF1QixFQUFFLHVCQUF1QixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDdkYsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDMUYsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDNUYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMsb0NBQW9DLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUM5RyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxxQkFBcUIsRUFB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QTRCO3dCQUM1Qiw0QkFBNEI7d0JBQzVCLDhCQUE4QjtxQkFDL0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGtCQUFrQjt3QkFDbEIsNEJBQTRCO3dCQUM1Qiw0QkFBNEI7d0JBQzVCLDhCQUE4QjtxQkFDL0I7aUJBQ0Y7OzBCQUdjLE1BQU07MkJBQUMsdUJBQXVCOztBQXdGN0M7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsZ0JBQWtDO0lBQ3BFLElBQUksZ0JBQWdCLEVBQUU7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpSUFBaUksQ0FBQyxDQUFDO0tBQ3BKO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtFTlZJUk9OTUVOVF9JTklUSUFMSVpFUiwgaW5qZWN0LCBJbmplY3QsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBPcHRpb25hbCwgU2tpcFNlbGZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hDb21wb25lbnR9IGZyb20gJy4vd29ya2JlbmNoLmNvbXBvbmVudCc7XG5pbXBvcnQge1dvcmtiZW5jaFNlcnZpY2V9IGZyb20gJy4vd29ya2JlbmNoLnNlcnZpY2UnO1xuaW1wb3J0IHtXb3JrYmVuY2hSb3V0ZXJMaW5rRGlyZWN0aXZlfSBmcm9tICcuL3JvdXRpbmcvd29ya2JlbmNoLXJvdXRlci1saW5rLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1dvcmtiZW5jaFVybE9ic2VydmVyfSBmcm9tICcuL3JvdXRpbmcvd29ya2JlbmNoLXVybC1vYnNlcnZlci5zZXJ2aWNlJztcbmltcG9ydCB7V29ya2JlbmNoTW9kdWxlQ29uZmlnfSBmcm9tICcuL3dvcmtiZW5jaC1tb2R1bGUtY29uZmlnJztcbmltcG9ydCB7V09SS0JFTkNIX0ZPUlJPT1RfR1VBUkQsIFdPUktCRU5DSF9MQVlPVVRfQ09ORklHfSBmcm9tICcuL3dvcmtiZW5jaC5jb25zdGFudHMnO1xuaW1wb3J0IHtXb3JrYmVuY2hQYXJ0QWN0aW9uRGlyZWN0aXZlfSBmcm9tICcuL3BhcnQvcGFydC1hY3Rpb24tYmFyL3BhcnQtYWN0aW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1dvcmtiZW5jaFZpZXdNZW51SXRlbURpcmVjdGl2ZX0gZnJvbSAnLi9wYXJ0L3ZpZXctY29udGV4dC1tZW51L3ZpZXctbWVudS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtWaWV3TWVudVNlcnZpY2V9IGZyb20gJy4vcGFydC92aWV3LWNvbnRleHQtbWVudS92aWV3LW1lbnUuc2VydmljZSc7XG5pbXBvcnQge1ZpZXdNb3ZlSGFuZGxlcn0gZnJvbSAnLi92aWV3L3ZpZXctbW92ZS1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtwcm92aWRlV29ya2JlbmNoTWljcm9mcm9udGVuZFN1cHBvcnR9IGZyb20gJy4vbWljcm9mcm9udGVuZC1wbGF0Zm9ybS93b3JrYmVuY2gtbWljcm9mcm9udGVuZC1zdXBwb3J0JztcbmltcG9ydCB7cHJvdmlkZVdvcmtiZW5jaExhdW5jaGVyfSBmcm9tICcuL3N0YXJ0dXAvd29ya2JlbmNoLWxhdW5jaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtwcm92aWRlTG9nZ2luZ30gZnJvbSAnLi9sb2dnaW5nJztcbmltcG9ydCB7V09SS0JFTkNIX1BPU1RfU1RBUlRVUCwgV09SS0JFTkNIX1BSRV9TVEFSVFVQLCBXT1JLQkVOQ0hfU1RBUlRVUH0gZnJvbSAnLi9zdGFydHVwL3dvcmtiZW5jaC1pbml0aWFsaXplcic7XG5pbXBvcnQge1dvcmtiZW5jaFBlcnNwZWN0aXZlU2VydmljZX0gZnJvbSAnLi9wZXJzcGVjdGl2ZS93b3JrYmVuY2gtcGVyc3BlY3RpdmUuc2VydmljZSc7XG5pbXBvcnQge0RlZmF1bHRXb3JrYmVuY2hTdG9yYWdlLCBXb3JrYmVuY2hTdG9yYWdlfSBmcm9tICcuL3N0b3JhZ2Uvd29ya2JlbmNoLXN0b3JhZ2UnO1xuaW1wb3J0IHtwcm92aWRlTG9jYXRpb25QYXRjaH0gZnJvbSAnLi9yb3V0aW5nL8m1bG9jYXRpb24nO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRGYWN0b3J5fSBmcm9tICcuL2xheW91dC93b3JrYmVuY2gtbGF5b3V0LmZhY3RvcnknO1xuaW1wb3J0IHtNQUlOX0FSRUF9IGZyb20gJy4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQnO1xuaW1wb3J0IHtXb3JrYmVuY2hUaGVtZVN3aXRjaGVyfSBmcm9tICcuL3RoZW1lL3dvcmtiZW5jaC10aGVtZS1zd2l0Y2hlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBNb2R1bGUgb2YgdGhlIFNDSU9OIFdvcmtiZW5jaC5cbiAqXG4gKiBTQ0lPTiBXb3JrYmVuY2ggZW5hYmxlcyB0aGUgY3JlYXRpb24gb2YgQW5ndWxhciB3ZWIgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBhIGZsZXhpYmxlIGxheW91dCB0byBhcnJhbmdlIGNvbnRlbnQgc2lkZS1ieS1zaWRlXG4gKiBvciBzdGFja2VkLCBhbGwgcGVyc29uYWxpemFibGUgYnkgdGhlIHVzZXIgdmlhIGRyYWcgJiBkcm9wLiBUaGlzIHR5cGUgb2YgbGF5b3V0IGlzIGlkZWFsIGZvciBhcHBsaWNhdGlvbnMgd2l0aCBub24tbGluZWFyIHdvcmtmbG93cyxcbiAqIGVuYWJsaW5nIHVzZXJzIHRvIHdvcmsgb24gY29udGVudCBpbiBwYXJhbGxlbC5cbiAqXG4gKiBUaGUgd29ya2JlbmNoIGxheW91dCBpcyBhIGdyaWQgb2YgcGFydHMuIFBhcnRzIGFyZSBhbGlnbmVkIHJlbGF0aXZlIHRvIGVhY2ggb3RoZXIuIEEgcGFydCBpcyBhIHN0YWNrIG9mIHZpZXdzLiBDb250ZW50IGlzIGRpc3BsYXllZCBpbiB2aWV3cy5cbiAqXG4gKiBUaGUgbGF5b3V0IGNhbiBiZSBkaXZpZGVkIGludG8gYSBtYWluIGFuZCBhIHBlcmlwaGVyYWwgYXJlYSwgd2l0aCB0aGUgbWFpbiBhcmVhIGFzIHRoZSBwcmltYXJ5IHBsYWNlIGZvciBvcGVuaW5nIHZpZXdzLlxuICogVGhlIHBlcmlwaGVyYWwgYXJlYSBhcnJhbmdlcyBwYXJ0cyBhcm91bmQgdGhlIG1haW4gYXJlYSB0byBwcm92aWRlIG5hdmlnYXRpb24gb3IgY29udGV4dC1zZW5zaXRpdmUgYXNzaXN0YW5jZSB0byBzdXBwb3J0XG4gKiB0aGUgdXNlcidzIHdvcmtmbG93LiBEZWZpbmluZyBhIG1haW4gYXJlYSBpcyBvcHRpb25hbCBhbmQgcmVjb21tZW5kZWQgZm9yIGFwcGxpY2F0aW9ucyByZXF1aXJpbmcgYSBkZWRpY2F0ZWQgYW5kIG1heGltaXphYmxlXG4gKiBhcmVhIGZvciB1c2VyIGludGVyYWN0aW9uLlxuICpcbiAqIE11bHRpcGxlIGxheW91dHMsIGNhbGxlZCBwZXJzcGVjdGl2ZXMsIGFyZSBzdXBwb3J0ZWQuIFBlcnNwZWN0aXZlcyBjYW4gYmUgc3dpdGNoZWQgd2l0aCBvbmUgcGVyc3BlY3RpdmUgYWN0aXZlIGF0IGEgdGltZS5cbiAqIFBlcnNwZWN0aXZlcyBzaGFyZSB0aGUgc2FtZSBtYWluIGFyZWEsIGlmIGFueS5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIFdvcmtiZW5jaENvbXBvbmVudCxcbiAgICBXb3JrYmVuY2hSb3V0ZXJMaW5rRGlyZWN0aXZlLFxuICAgIFdvcmtiZW5jaFBhcnRBY3Rpb25EaXJlY3RpdmUsXG4gICAgV29ya2JlbmNoVmlld01lbnVJdGVtRGlyZWN0aXZlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgV29ya2JlbmNoQ29tcG9uZW50LFxuICAgIFdvcmtiZW5jaFJvdXRlckxpbmtEaXJlY3RpdmUsXG4gICAgV29ya2JlbmNoUGFydEFjdGlvbkRpcmVjdGl2ZSxcbiAgICBXb3JrYmVuY2hWaWV3TWVudUl0ZW1EaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaE1vZHVsZSB7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChXT1JLQkVOQ0hfRk9SUk9PVF9HVUFSRCkgZ3VhcmQ6IGFueSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICB9XG5cbiAgLyoqXG4gICAqIFRvIG1hbmlmZXN0IGEgZGVwZW5kZW5jeSB0byB0aGUgd29ya2JlbmNoIG1vZHVsZSBmcm9tIHRoZSBhcHBsaWNhdGlvbiBtb2R1bGUuXG4gICAqXG4gICAqIENhbGwgYGZvclJvb3RgIG9ubHkgaW4gdGhlIHJvb3QgYXBwbGljYXRpb24gbW9kdWxlLiBDYWxsaW5nIGl0IGluIGFueSBvdGhlciBtb2R1bGUsIHBhcnRpY3VsYXJseSBpbiBhIGxhenktbG9hZGVkIG1vZHVsZSwgd2lsbCBwcm9kdWNlIGEgcnVudGltZSBlcnJvci5cbiAgICpcbiAgICogYGBgXG4gICAqIEBOZ01vZHVsZSh7XG4gICAqICAgaW1wb3J0czogW1xuICAgKiAgICAgLi4uXG4gICAqICAgICBXb3JrYmVuY2hNb2R1bGUuZm9yUm9vdCgpXG4gICAqICAgXSxcbiAgICogICBib290c3RyYXA6IFtBcHBDb21wb25lbnRdLFxuICAgKiB9KVxuICAgKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHsgfVxuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChjb25maWc6IFdvcmtiZW5jaE1vZHVsZUNvbmZpZyA9IHt9KTogTW9kdWxlV2l0aFByb3ZpZGVyczxXb3JrYmVuY2hNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFdvcmtiZW5jaE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogV29ya2JlbmNoTW9kdWxlQ29uZmlnLFxuICAgICAgICAgIHVzZVZhbHVlOiBjb25maWcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBXb3JrYmVuY2hTdG9yYWdlLFxuICAgICAgICAgIHVzZUNsYXNzOiBjb25maWcuc3RvcmFnZSA/PyBEZWZhdWx0V29ya2JlbmNoU3RvcmFnZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFdPUktCRU5DSF9MQVlPVVRfQ09ORklHLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IGNvbmZpZy5sYXlvdXQgPz8gKChmYWN0b3J5OiBXb3JrYmVuY2hMYXlvdXRGYWN0b3J5KSA9PiBmYWN0b3J5LmFkZFBhcnQoTUFJTl9BUkVBKSksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBXT1JLQkVOQ0hfRk9SUk9PVF9HVUFSRCxcbiAgICAgICAgICB1c2VGYWN0b3J5OiBwcm92aWRlRm9yUm9vdEd1YXJkLFxuICAgICAgICAgIGRlcHM6IFtbV29ya2JlbmNoU2VydmljZSwgbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpXV0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBXT1JLQkVOQ0hfUFJFX1NUQVJUVVAsXG4gICAgICAgICAgdXNlRXhpc3Rpbmc6IFdvcmtiZW5jaFRoZW1lU3dpdGNoZXIsXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBXT1JLQkVOQ0hfU1RBUlRVUCxcbiAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICB1c2VFeGlzdGluZzogV29ya2JlbmNoUGVyc3BlY3RpdmVTZXJ2aWNlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogV09SS0JFTkNIX1BPU1RfU1RBUlRVUCxcbiAgICAgICAgICB1c2VFeGlzdGluZzogVmlld01lbnVTZXJ2aWNlLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogV09SS0JFTkNIX1BPU1RfU1RBUlRVUCxcbiAgICAgICAgICB1c2VDbGFzczogVmlld01vdmVIYW5kbGVyLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgdXNlVmFsdWU6ICgpID0+IGluamVjdChXb3JrYmVuY2hVcmxPYnNlcnZlciksXG4gICAgICAgIH0sXG4gICAgICAgIHByb3ZpZGVXb3JrYmVuY2hMYXVuY2hlcihjb25maWcpLFxuICAgICAgICBwcm92aWRlTG9nZ2luZyhjb25maWcpLFxuICAgICAgICBwcm92aWRlTG9jYXRpb25QYXRjaCgpLFxuICAgICAgICBwcm92aWRlV29ya2JlbmNoTWljcm9mcm9udGVuZFN1cHBvcnQoY29uZmlnKSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUbyBtYW5pZmVzdCBhIGRlcGVuZGVuY3kgdG8gdGhlIHdvcmtiZW5jaCBtb2R1bGUgZnJvbSBhIGZlYXR1cmUgbW9kdWxlLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDE2LjAuMC1iZXRhLjE7IEltcG9ydCB7QGxpbmsgV29ya2JlbmNoTW9kdWxlfSBvciBzdGFuZGFsb25lIGRpcmVjdGl2ZXMgZGlyZWN0bHk7IEFQSSB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cbiAgICpcbiAgICogVE9ETyBbIzMxMl06IFJlbW92ZSB3aGVuIGZpeGVkIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS9TY2h3ZWl6ZXJpc2NoZUJ1bmRlc2JhaG5lbi9zY2lvbi13b3JrYmVuY2gvaXNzdWVzLzMxMlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JDaGlsZCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFdvcmtiZW5jaE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogV29ya2JlbmNoTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXSwgLy8gZG8gbm90IHJlZ2lzdGVyIGFueSBwcm92aWRlcnMgaW4gJ2ZvckNoaWxkJyBidXQgaW4gJ2ZvclJvb3QnIGluc3RlYWRcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQGRvY3MtcHJpdmF0ZSBOb3QgcHVibGljIEFQSSwgaW50ZW5kZWQgZm9yIGludGVybmFsIHVzZSBvbmx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUZvclJvb3RHdWFyZCh3b3JrYmVuY2hTZXJ2aWNlOiBXb3JrYmVuY2hTZXJ2aWNlKTogYW55IHtcbiAgaWYgKHdvcmtiZW5jaFNlcnZpY2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1tNb2R1bGVGb3JSb290RXJyb3JdIFdvcmtiZW5jaE1vZHVsZS5mb3JSb290KCkgY2FsbGVkIHR3aWNlLiBMYXp5IGxvYWRlZCBtb2R1bGVzIHNob3VsZCB1c2UgV29ya2JlbmNoTW9kdWxlLmZvckNoaWxkKCkgaW5zdGVhZC4nKTtcbiAgfVxuICByZXR1cm4gJ2d1YXJkZWQnO1xufVxuIl19
100
+ }] });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3dvcmtiZW5jaC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUV2RixPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUMxRixPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUM1RixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFdEQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQWVILE1BQU0sT0FBTyxlQUFlO0lBRTFCOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBZ0MsRUFBRTtRQUN0RCxPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQWU7WUFDekIsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdEMsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsUUFBUTtRQUNwQixPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQWU7WUFDekIsU0FBUyxFQUFFLEVBQUUsRUFBRSx1RUFBdUU7U0FDdkYsQ0FBQztJQUNKLENBQUM7OEdBdkNVLGVBQWU7K0dBQWYsZUFBZSxZQVp4QixrQkFBa0I7WUFDbEIsNEJBQTRCO1lBQzVCLDRCQUE0QjtZQUM1Qiw4QkFBOEIsYUFHOUIsa0JBQWtCO1lBQ2xCLDRCQUE0QjtZQUM1Qiw0QkFBNEI7WUFDNUIsOEJBQThCOytHQUdyQixlQUFlLFlBWnhCLGtCQUFrQjs7MkZBWVQsZUFBZTtrQkFkM0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3dCQUNsQiw0QkFBNEI7d0JBQzVCLDRCQUE0Qjt3QkFDNUIsOEJBQThCO3FCQUMvQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3dCQUNsQiw0QkFBNEI7d0JBQzVCLDRCQUE0Qjt3QkFDNUIsOEJBQThCO3FCQUMvQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dvcmtiZW5jaENvbXBvbmVudH0gZnJvbSAnLi93b3JrYmVuY2guY29tcG9uZW50JztcbmltcG9ydCB7V29ya2JlbmNoUm91dGVyTGlua0RpcmVjdGl2ZX0gZnJvbSAnLi9yb3V0aW5nL3dvcmtiZW5jaC1yb3V0ZXItbGluay5kaXJlY3RpdmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hDb25maWd9IGZyb20gJy4vd29ya2JlbmNoLWNvbmZpZyc7XG5pbXBvcnQge1dvcmtiZW5jaFBhcnRBY3Rpb25EaXJlY3RpdmV9IGZyb20gJy4vcGFydC9wYXJ0LWFjdGlvbi1iYXIvcGFydC1hY3Rpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7V29ya2JlbmNoVmlld01lbnVJdGVtRGlyZWN0aXZlfSBmcm9tICcuL3BhcnQvdmlldy1jb250ZXh0LW1lbnUvdmlldy1tZW51LmRpcmVjdGl2ZSc7XG5pbXBvcnQge3Byb3ZpZGVXb3JrYmVuY2h9IGZyb20gJy4vd29ya2JlbmNoLnByb3ZpZGVyJztcblxuLyoqXG4gKiBNb2R1bGUgb2YgdGhlIFNDSU9OIFdvcmtiZW5jaC5cbiAqXG4gKiBTQ0lPTiBXb3JrYmVuY2ggZW5hYmxlcyB0aGUgY3JlYXRpb24gb2YgQW5ndWxhciB3ZWIgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBhIGZsZXhpYmxlIGxheW91dCB0byBhcnJhbmdlIGNvbnRlbnQgc2lkZS1ieS1zaWRlXG4gKiBvciBzdGFja2VkLCBhbGwgcGVyc29uYWxpemFibGUgYnkgdGhlIHVzZXIgdmlhIGRyYWcgJiBkcm9wLiBUaGlzIHR5cGUgb2YgbGF5b3V0IGlzIGlkZWFsIGZvciBhcHBsaWNhdGlvbnMgd2l0aCBub24tbGluZWFyIHdvcmtmbG93cyxcbiAqIGVuYWJsaW5nIHVzZXJzIHRvIHdvcmsgb24gY29udGVudCBpbiBwYXJhbGxlbC5cbiAqXG4gKiBUaGUgd29ya2JlbmNoIGxheW91dCBpcyBhIGdyaWQgb2YgcGFydHMuIFBhcnRzIGFyZSBhbGlnbmVkIHJlbGF0aXZlIHRvIGVhY2ggb3RoZXIuIEEgcGFydCBpcyBhIHN0YWNrIG9mIHZpZXdzLiBDb250ZW50IGlzIGRpc3BsYXllZCBpbiB2aWV3cy5cbiAqXG4gKiBUaGUgbGF5b3V0IGNhbiBiZSBkaXZpZGVkIGludG8gYSBtYWluIGFuZCBhIHBlcmlwaGVyYWwgYXJlYSwgd2l0aCB0aGUgbWFpbiBhcmVhIGFzIHRoZSBwcmltYXJ5IHBsYWNlIGZvciBvcGVuaW5nIHZpZXdzLlxuICogVGhlIHBlcmlwaGVyYWwgYXJlYSBhcnJhbmdlcyBwYXJ0cyBhcm91bmQgdGhlIG1haW4gYXJlYSB0byBwcm92aWRlIG5hdmlnYXRpb24gb3IgY29udGV4dC1zZW5zaXRpdmUgYXNzaXN0YW5jZSB0byBzdXBwb3J0XG4gKiB0aGUgdXNlcidzIHdvcmtmbG93LiBEZWZpbmluZyBhIG1haW4gYXJlYSBpcyBvcHRpb25hbCBhbmQgcmVjb21tZW5kZWQgZm9yIGFwcGxpY2F0aW9ucyByZXF1aXJpbmcgYSBkZWRpY2F0ZWQgYW5kIG1heGltaXphYmxlXG4gKiBhcmVhIGZvciB1c2VyIGludGVyYWN0aW9uLlxuICpcbiAqIE11bHRpcGxlIGxheW91dHMsIGNhbGxlZCBwZXJzcGVjdGl2ZXMsIGFyZSBzdXBwb3J0ZWQuIFBlcnNwZWN0aXZlcyBjYW4gYmUgc3dpdGNoZWQuIE9ubHkgb25lIHBlcnNwZWN0aXZlIGlzIGFjdGl2ZSBhdCBhIHRpbWUuXG4gKiBQZXJzcGVjdGl2ZXMgc2hhcmUgdGhlIHNhbWUgbWFpbiBhcmVhLCBpZiBhbnkuXG4gKlxuICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxNy4wLjAtYmV0YS44OyBSZWdpc3RlciBTQ0lPTiBXb3JrYmVuY2ggcHJvdmlkZXJzIHVzaW5nIGBwcm92aWRlV29ya2JlbmNoYCBmdW5jdGlvbiBhbmQgaW1wb3J0IHN0YW5kYWxvbmUgY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcyBpbnN0ZWFkOyBBUEkgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBXb3JrYmVuY2hDb21wb25lbnQsXG4gICAgV29ya2JlbmNoUm91dGVyTGlua0RpcmVjdGl2ZSxcbiAgICBXb3JrYmVuY2hQYXJ0QWN0aW9uRGlyZWN0aXZlLFxuICAgIFdvcmtiZW5jaFZpZXdNZW51SXRlbURpcmVjdGl2ZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFdvcmtiZW5jaENvbXBvbmVudCxcbiAgICBXb3JrYmVuY2hSb3V0ZXJMaW5rRGlyZWN0aXZlLFxuICAgIFdvcmtiZW5jaFBhcnRBY3Rpb25EaXJlY3RpdmUsXG4gICAgV29ya2JlbmNoVmlld01lbnVJdGVtRGlyZWN0aXZlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hNb2R1bGUge1xuXG4gIC8qKlxuICAgKiBUbyBtYW5pZmVzdCBhIGRlcGVuZGVuY3kgdG8gdGhlIHdvcmtiZW5jaCBtb2R1bGUgZnJvbSB0aGUgYXBwbGljYXRpb24gbW9kdWxlLlxuICAgKlxuICAgKiBDYWxsIGBmb3JSb290YCBvbmx5IGluIHRoZSByb290IGFwcGxpY2F0aW9uIG1vZHVsZS4gQ2FsbGluZyBpdCBpbiBhbnkgb3RoZXIgbW9kdWxlLCBwYXJ0aWN1bGFybHkgaW4gYSBsYXp5LWxvYWRlZCBtb2R1bGUsIHdpbGwgcHJvZHVjZSBhIHJ1bnRpbWUgZXJyb3IuXG4gICAqXG4gICAqIGBgYFxuICAgKiBATmdNb2R1bGUoe1xuICAgKiAgIGltcG9ydHM6IFtcbiAgICogICAgIC4uLlxuICAgKiAgICAgV29ya2JlbmNoTW9kdWxlLmZvclJvb3QoKVxuICAgKiAgIF0sXG4gICAqICAgYm9vdHN0cmFwOiBbQXBwQ29tcG9uZW50XSxcbiAgICogfSlcbiAgICogZXhwb3J0IGNsYXNzIEFwcE1vZHVsZSB7IH1cbiAgICogYGBgXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMTcuMC4wLWJldGEuODsgUmVnaXN0ZXIgU0NJT04gV29ya2JlbmNoIHByb3ZpZGVycyB1c2luZyBgcHJvdmlkZVdvcmtiZW5jaGAgZnVuY3Rpb24gYW5kIGltcG9ydCBzdGFuZGFsb25lIGNvbXBvbmVudHMgYW5kIGRpcmVjdGl2ZXMgaW5zdGVhZDsgQVBJIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JSb290KGNvbmZpZzogV29ya2JlbmNoTW9kdWxlQ29uZmlnID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFdvcmtiZW5jaE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogV29ya2JlbmNoTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbcHJvdmlkZVdvcmtiZW5jaChjb25maWcpXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRvIG1hbmlmZXN0IGEgZGVwZW5kZW5jeSB0byB0aGUgd29ya2JlbmNoIG1vZHVsZSBmcm9tIGEgZmVhdHVyZSBtb2R1bGUuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMTYuMC4wLWJldGEuMTsgdXNlIHN0YW5kYWxvbmUgd29ya2JlbmNoIGNvbXBvbmVudCBhbmQgZGlyZWN0aXZlcyBpbnN0ZWFkOyBBUEkgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXG4gICAqXG4gICAqIFRPRE8gWyMzMTJdOiBSZW1vdmUgd2hlbiBmaXhlZCBpc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vU2Nod2VpemVyaXNjaGVCdW5kZXNiYWhuZW4vc2Npb24td29ya2JlbmNoL2lzc3Vlcy8zMTJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZm9yQ2hpbGQoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxXb3JrYmVuY2hNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFdvcmtiZW5jaE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW10sIC8vIGRvIG5vdCByZWdpc3RlciBhbnkgcHJvdmlkZXJzIGluICdmb3JDaGlsZCcgYnV0IGluICdmb3JSb290JyBpbnN0ZWFkXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb2YgdGhlIFNDSU9OIFdvcmtiZW5jaC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDE3LjAuMC1iZXRhLjg7IFJlZ2lzdGVyIFNDSU9OIFdvcmtiZW5jaCBwcm92aWRlcnMgdXNpbmcgYHByb3ZpZGVXb3JrYmVuY2hgIGZ1bmN0aW9uIGFuZCBpbXBvcnQgc3RhbmRhbG9uZSB3b3JrYmVuY2ggY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcyBpbnN0ZWFkOyBBUEkgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoTW9kdWxlQ29uZmlnIGV4dGVuZHMgV29ya2JlbmNoQ29uZmlnIHtcbn1cbiJdfQ==
@@ -0,0 +1,117 @@
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 { ENVIRONMENT_INITIALIZER, inject, makeEnvironmentProviders } from '@angular/core';
11
+ import { WorkbenchService } from './workbench.service';
12
+ import { WorkbenchUrlObserver } from './routing/workbench-url-observer.service';
13
+ import { WorkbenchConfig } from './workbench-config';
14
+ import { WORKBENCH_LAYOUT_CONFIG } from './workbench.constants';
15
+ import { ViewMenuService } from './part/view-context-menu/view-menu.service';
16
+ import { ViewMoveHandler } from './view/view-move-handler.service';
17
+ import { provideWorkbenchMicrofrontendSupport } from './microfrontend-platform/workbench-microfrontend-support';
18
+ import { provideWorkbenchLauncher } from './startup/workbench-launcher.service';
19
+ import { provideLogging } from './logging';
20
+ import { WORKBENCH_POST_STARTUP, WORKBENCH_PRE_STARTUP, WORKBENCH_STARTUP } from './startup/workbench-initializer';
21
+ import { WorkbenchPerspectiveService } from './perspective/workbench-perspective.service';
22
+ import { DefaultWorkbenchStorage, WorkbenchStorage } from './storage/workbench-storage';
23
+ import { provideLocationPatch } from './routing/ɵlocation';
24
+ import { MAIN_AREA } from './layout/workbench-layout';
25
+ import { WorkbenchThemeSwitcher } from './theme/workbench-theme-switcher.service';
26
+ /**
27
+ * Enables and configures the SCION Workbench in an application, returning a set of dependency-injection providers to be registered in Angular.
28
+ *
29
+ * SCION Workbench enables the creation of Angular web applications that require a flexible layout to arrange content side-by-side
30
+ * or stacked, all personalizable by the user via drag & drop. This type of layout is ideal for applications with non-linear workflows,
31
+ * enabling users to work on content in parallel.
32
+ *
33
+ * The workbench layout is a grid of parts. Parts are aligned relative to each other. A part is a stack of views. Content is displayed in views.
34
+ *
35
+ * The layout can be divided into a main and a peripheral area, with the main area as the primary place for opening views.
36
+ * The peripheral area arranges parts around the main area to provide navigation or context-sensitive assistance to support
37
+ * the user's workflow. Defining a main area is optional and recommended for applications requiring a dedicated and maximizable
38
+ * area for user interaction.
39
+ *
40
+ * Multiple layouts, called perspectives, are supported. Perspectives can be switched. Only one perspective is active at a time.
41
+ * Perspectives share the same main area, if any.
42
+ *
43
+ * ---
44
+ * Usage:
45
+ *
46
+ * ```ts
47
+ * import {bootstrapApplication} from '@angular/platform-browser';
48
+ * import {provideRouter} from '@angular/router';
49
+ * import {provideAnimations} from '@angular/platform-browser/animations';
50
+ * import {provideWorkbench} from '@scion/workbench';
51
+ *
52
+ * bootstrapApplication(AppComponent, {
53
+ * providers: [
54
+ * provideWorkbench(),
55
+ * provideRouter([]), // required by the SCION Workbench
56
+ * provideAnimations(), // required by the SCION Workbench
57
+ * ],
58
+ * });
59
+ * ```
60
+ */
61
+ export function provideWorkbench(config) {
62
+ config ??= {};
63
+ return makeEnvironmentProviders([
64
+ {
65
+ provide: WorkbenchConfig,
66
+ useValue: config,
67
+ },
68
+ {
69
+ provide: WorkbenchStorage,
70
+ useClass: config.storage ?? DefaultWorkbenchStorage,
71
+ },
72
+ {
73
+ provide: WORKBENCH_LAYOUT_CONFIG,
74
+ useFactory: () => config.layout ?? ((factory) => factory.addPart(MAIN_AREA)),
75
+ },
76
+ {
77
+ provide: WORKBENCH_PRE_STARTUP,
78
+ useExisting: WorkbenchThemeSwitcher,
79
+ multi: true,
80
+ },
81
+ {
82
+ provide: WORKBENCH_STARTUP,
83
+ multi: true,
84
+ useExisting: WorkbenchPerspectiveService,
85
+ },
86
+ {
87
+ provide: WORKBENCH_POST_STARTUP,
88
+ useExisting: ViewMenuService,
89
+ multi: true,
90
+ },
91
+ {
92
+ provide: WORKBENCH_POST_STARTUP,
93
+ useClass: ViewMoveHandler,
94
+ multi: true,
95
+ },
96
+ {
97
+ provide: ENVIRONMENT_INITIALIZER,
98
+ multi: true,
99
+ useValue: () => inject(WorkbenchUrlObserver),
100
+ },
101
+ {
102
+ provide: ENVIRONMENT_INITIALIZER,
103
+ multi: true,
104
+ useValue: () => {
105
+ if (inject(WorkbenchService, { optional: true, skipSelf: true })) {
106
+ throw Error('[ProvideWorkbenchError] SCION Workbench must be provided in root environment.');
107
+ }
108
+ return 'root';
109
+ },
110
+ },
111
+ provideWorkbenchLauncher(config),
112
+ provideLogging(config),
113
+ provideLocationPatch(),
114
+ provideWorkbenchMicrofrontendSupport(config),
115
+ ]);
116
+ }
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvd29ya2JlbmNoLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLHVCQUF1QixFQUF3QixNQUFNLEVBQUUsd0JBQXdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDOUUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFDLG9DQUFvQyxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDOUcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUMsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqSCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUN4RixPQUFPLEVBQUMsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFFaEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBd0I7SUFDdkQsTUFBTSxLQUFLLEVBQUUsQ0FBQztJQUVkLE9BQU8sd0JBQXdCLENBQUM7UUFDOUI7WUFDRSxPQUFPLEVBQUUsZUFBZTtZQUN4QixRQUFRLEVBQUUsTUFBTTtTQUNqQjtRQUNEO1lBQ0UsT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSx1QkFBdUI7U0FDcEQ7UUFDRDtZQUNFLE9BQU8sRUFBRSx1QkFBdUI7WUFDaEMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQStCLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdEc7UUFDRDtZQUNFLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsV0FBVyxFQUFFLHNCQUFzQjtZQUNuQyxLQUFLLEVBQUUsSUFBSTtTQUNaO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLEtBQUssRUFBRSxJQUFJO1lBQ1gsV0FBVyxFQUFFLDJCQUEyQjtTQUN6QztRQUNEO1lBQ0UsT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixXQUFXLEVBQUUsZUFBZTtZQUM1QixLQUFLLEVBQUUsSUFBSTtTQUNaO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsc0JBQXNCO1lBQy9CLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLEtBQUssRUFBRSxJQUFJO1NBQ1o7UUFDRDtZQUNFLE9BQU8sRUFBRSx1QkFBdUI7WUFDaEMsS0FBSyxFQUFFLElBQUk7WUFDWCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDO1NBQzdDO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLEtBQUssRUFBRSxJQUFJO1lBQ1gsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLEVBQUU7b0JBQzlELE1BQU0sS0FBSyxDQUFDLCtFQUErRSxDQUFDLENBQUM7aUJBQzlGO2dCQUNELE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7U0FDRjtRQUNELHdCQUF3QixDQUFDLE1BQU0sQ0FBQztRQUNoQyxjQUFjLENBQUMsTUFBTSxDQUFDO1FBQ3RCLG9CQUFvQixFQUFFO1FBQ3RCLG9DQUFvQyxDQUFDLE1BQU0sQ0FBQztLQUM3QyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0VOVklST05NRU5UX0lOSVRJQUxJWkVSLCBFbnZpcm9ubWVudFByb3ZpZGVycywgaW5qZWN0LCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hTZXJ2aWNlfSBmcm9tICcuL3dvcmtiZW5jaC5zZXJ2aWNlJztcbmltcG9ydCB7V29ya2JlbmNoVXJsT2JzZXJ2ZXJ9IGZyb20gJy4vcm91dGluZy93b3JrYmVuY2gtdXJsLW9ic2VydmVyLnNlcnZpY2UnO1xuaW1wb3J0IHtXb3JrYmVuY2hDb25maWd9IGZyb20gJy4vd29ya2JlbmNoLWNvbmZpZyc7XG5pbXBvcnQge1dPUktCRU5DSF9MQVlPVVRfQ09ORklHfSBmcm9tICcuL3dvcmtiZW5jaC5jb25zdGFudHMnO1xuaW1wb3J0IHtWaWV3TWVudVNlcnZpY2V9IGZyb20gJy4vcGFydC92aWV3LWNvbnRleHQtbWVudS92aWV3LW1lbnUuc2VydmljZSc7XG5pbXBvcnQge1ZpZXdNb3ZlSGFuZGxlcn0gZnJvbSAnLi92aWV3L3ZpZXctbW92ZS1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtwcm92aWRlV29ya2JlbmNoTWljcm9mcm9udGVuZFN1cHBvcnR9IGZyb20gJy4vbWljcm9mcm9udGVuZC1wbGF0Zm9ybS93b3JrYmVuY2gtbWljcm9mcm9udGVuZC1zdXBwb3J0JztcbmltcG9ydCB7cHJvdmlkZVdvcmtiZW5jaExhdW5jaGVyfSBmcm9tICcuL3N0YXJ0dXAvd29ya2JlbmNoLWxhdW5jaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtwcm92aWRlTG9nZ2luZ30gZnJvbSAnLi9sb2dnaW5nJztcbmltcG9ydCB7V09SS0JFTkNIX1BPU1RfU1RBUlRVUCwgV09SS0JFTkNIX1BSRV9TVEFSVFVQLCBXT1JLQkVOQ0hfU1RBUlRVUH0gZnJvbSAnLi9zdGFydHVwL3dvcmtiZW5jaC1pbml0aWFsaXplcic7XG5pbXBvcnQge1dvcmtiZW5jaFBlcnNwZWN0aXZlU2VydmljZX0gZnJvbSAnLi9wZXJzcGVjdGl2ZS93b3JrYmVuY2gtcGVyc3BlY3RpdmUuc2VydmljZSc7XG5pbXBvcnQge0RlZmF1bHRXb3JrYmVuY2hTdG9yYWdlLCBXb3JrYmVuY2hTdG9yYWdlfSBmcm9tICcuL3N0b3JhZ2Uvd29ya2JlbmNoLXN0b3JhZ2UnO1xuaW1wb3J0IHtwcm92aWRlTG9jYXRpb25QYXRjaH0gZnJvbSAnLi9yb3V0aW5nL8m1bG9jYXRpb24nO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRGYWN0b3J5fSBmcm9tICcuL2xheW91dC93b3JrYmVuY2gtbGF5b3V0LmZhY3RvcnknO1xuaW1wb3J0IHtNQUlOX0FSRUF9IGZyb20gJy4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQnO1xuaW1wb3J0IHtXb3JrYmVuY2hUaGVtZVN3aXRjaGVyfSBmcm9tICcuL3RoZW1lL3dvcmtiZW5jaC10aGVtZS1zd2l0Y2hlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBFbmFibGVzIGFuZCBjb25maWd1cmVzIHRoZSBTQ0lPTiBXb3JrYmVuY2ggaW4gYW4gYXBwbGljYXRpb24sIHJldHVybmluZyBhIHNldCBvZiBkZXBlbmRlbmN5LWluamVjdGlvbiBwcm92aWRlcnMgdG8gYmUgcmVnaXN0ZXJlZCBpbiBBbmd1bGFyLlxuICpcbiAqIFNDSU9OIFdvcmtiZW5jaCBlbmFibGVzIHRoZSBjcmVhdGlvbiBvZiBBbmd1bGFyIHdlYiBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIGEgZmxleGlibGUgbGF5b3V0IHRvIGFycmFuZ2UgY29udGVudCBzaWRlLWJ5LXNpZGVcbiAqIG9yIHN0YWNrZWQsIGFsbCBwZXJzb25hbGl6YWJsZSBieSB0aGUgdXNlciB2aWEgZHJhZyAmIGRyb3AuIFRoaXMgdHlwZSBvZiBsYXlvdXQgaXMgaWRlYWwgZm9yIGFwcGxpY2F0aW9ucyB3aXRoIG5vbi1saW5lYXIgd29ya2Zsb3dzLFxuICogZW5hYmxpbmcgdXNlcnMgdG8gd29yayBvbiBjb250ZW50IGluIHBhcmFsbGVsLlxuICpcbiAqIFRoZSB3b3JrYmVuY2ggbGF5b3V0IGlzIGEgZ3JpZCBvZiBwYXJ0cy4gUGFydHMgYXJlIGFsaWduZWQgcmVsYXRpdmUgdG8gZWFjaCBvdGhlci4gQSBwYXJ0IGlzIGEgc3RhY2sgb2Ygdmlld3MuIENvbnRlbnQgaXMgZGlzcGxheWVkIGluIHZpZXdzLlxuICpcbiAqIFRoZSBsYXlvdXQgY2FuIGJlIGRpdmlkZWQgaW50byBhIG1haW4gYW5kIGEgcGVyaXBoZXJhbCBhcmVhLCB3aXRoIHRoZSBtYWluIGFyZWEgYXMgdGhlIHByaW1hcnkgcGxhY2UgZm9yIG9wZW5pbmcgdmlld3MuXG4gKiBUaGUgcGVyaXBoZXJhbCBhcmVhIGFycmFuZ2VzIHBhcnRzIGFyb3VuZCB0aGUgbWFpbiBhcmVhIHRvIHByb3ZpZGUgbmF2aWdhdGlvbiBvciBjb250ZXh0LXNlbnNpdGl2ZSBhc3Npc3RhbmNlIHRvIHN1cHBvcnRcbiAqIHRoZSB1c2VyJ3Mgd29ya2Zsb3cuIERlZmluaW5nIGEgbWFpbiBhcmVhIGlzIG9wdGlvbmFsIGFuZCByZWNvbW1lbmRlZCBmb3IgYXBwbGljYXRpb25zIHJlcXVpcmluZyBhIGRlZGljYXRlZCBhbmQgbWF4aW1pemFibGVcbiAqIGFyZWEgZm9yIHVzZXIgaW50ZXJhY3Rpb24uXG4gKlxuICogTXVsdGlwbGUgbGF5b3V0cywgY2FsbGVkIHBlcnNwZWN0aXZlcywgYXJlIHN1cHBvcnRlZC4gUGVyc3BlY3RpdmVzIGNhbiBiZSBzd2l0Y2hlZC4gT25seSBvbmUgcGVyc3BlY3RpdmUgaXMgYWN0aXZlIGF0IGEgdGltZS5cbiAqIFBlcnNwZWN0aXZlcyBzaGFyZSB0aGUgc2FtZSBtYWluIGFyZWEsIGlmIGFueS5cbiAqXG4gKiAtLS1cbiAqIFVzYWdlOlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQge2Jvb3RzdHJhcEFwcGxpY2F0aW9ufSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbiAqIGltcG9ydCB7cHJvdmlkZVJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbiAqIGltcG9ydCB7cHJvdmlkZUFuaW1hdGlvbnN9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG4gKiBpbXBvcnQge3Byb3ZpZGVXb3JrYmVuY2h9IGZyb20gJ0BzY2lvbi93b3JrYmVuY2gnO1xuICpcbiAqIGJvb3RzdHJhcEFwcGxpY2F0aW9uKEFwcENvbXBvbmVudCwge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlV29ya2JlbmNoKCksXG4gKiAgICAgcHJvdmlkZVJvdXRlcihbXSksIC8vIHJlcXVpcmVkIGJ5IHRoZSBTQ0lPTiBXb3JrYmVuY2hcbiAqICAgICBwcm92aWRlQW5pbWF0aW9ucygpLCAvLyByZXF1aXJlZCBieSB0aGUgU0NJT04gV29ya2JlbmNoXG4gKiAgIF0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVdvcmtiZW5jaChjb25maWc/OiBXb3JrYmVuY2hDb25maWcpOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIGNvbmZpZyA/Pz0ge307XG5cbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAge1xuICAgICAgcHJvdmlkZTogV29ya2JlbmNoQ29uZmlnLFxuICAgICAgdXNlVmFsdWU6IGNvbmZpZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFdvcmtiZW5jaFN0b3JhZ2UsXG4gICAgICB1c2VDbGFzczogY29uZmlnLnN0b3JhZ2UgPz8gRGVmYXVsdFdvcmtiZW5jaFN0b3JhZ2UsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBXT1JLQkVOQ0hfTEFZT1VUX0NPTkZJRyxcbiAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IGNvbmZpZyEubGF5b3V0ID8/ICgoZmFjdG9yeTogV29ya2JlbmNoTGF5b3V0RmFjdG9yeSkgPT4gZmFjdG9yeS5hZGRQYXJ0KE1BSU5fQVJFQSkpLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogV09SS0JFTkNIX1BSRV9TVEFSVFVQLFxuICAgICAgdXNlRXhpc3Rpbmc6IFdvcmtiZW5jaFRoZW1lU3dpdGNoZXIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFdPUktCRU5DSF9TVEFSVFVQLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogV29ya2JlbmNoUGVyc3BlY3RpdmVTZXJ2aWNlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogV09SS0JFTkNIX1BPU1RfU1RBUlRVUCxcbiAgICAgIHVzZUV4aXN0aW5nOiBWaWV3TWVudVNlcnZpY2UsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFdPUktCRU5DSF9QT1NUX1NUQVJUVVAsXG4gICAgICB1c2VDbGFzczogVmlld01vdmVIYW5kbGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlVmFsdWU6ICgpID0+IGluamVjdChXb3JrYmVuY2hVcmxPYnNlcnZlciksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlVmFsdWU6ICgpID0+IHtcbiAgICAgICAgaWYgKGluamVjdChXb3JrYmVuY2hTZXJ2aWNlLCB7b3B0aW9uYWw6IHRydWUsIHNraXBTZWxmOiB0cnVlfSkpIHtcbiAgICAgICAgICB0aHJvdyBFcnJvcignW1Byb3ZpZGVXb3JrYmVuY2hFcnJvcl0gU0NJT04gV29ya2JlbmNoIG11c3QgYmUgcHJvdmlkZWQgaW4gcm9vdCBlbnZpcm9ubWVudC4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ3Jvb3QnO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHByb3ZpZGVXb3JrYmVuY2hMYXVuY2hlcihjb25maWcpLFxuICAgIHByb3ZpZGVMb2dnaW5nKGNvbmZpZyksXG4gICAgcHJvdmlkZUxvY2F0aW9uUGF0Y2goKSxcbiAgICBwcm92aWRlV29ya2JlbmNoTWljcm9mcm9udGVuZFN1cHBvcnQoY29uZmlnKSxcbiAgXSk7XG59XG4iXX0=