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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/_index.scss +7 -5
  2. package/design/_workbench-global-styles.scss +18 -0
  3. package/design/_workbench-icon-font.scss +1 -1
  4. package/design/_workbench-popup-global-styles.scss +1 -1
  5. package/design/{_workbench-view-drag-image-global-styles.scss → _workbench-view-global-styles.scss} +1 -2
  6. package/esm2022/lib/activation-instant.provider.mjs +3 -3
  7. package/esm2022/lib/common/asserts.util.mjs +1 -1
  8. package/esm2022/lib/common/class-list.mjs +67 -29
  9. package/esm2022/lib/common/coerce-observable.pipe.mjs +3 -3
  10. package/esm2022/lib/common/dom.util.mjs +1 -1
  11. package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +4 -4
  12. package/esm2022/lib/common/instanceof.pipe.mjs +3 -3
  13. package/esm2022/lib/common/map-coerce.pipe.mjs +3 -3
  14. package/esm2022/lib/common/math.util.mjs +16 -0
  15. package/esm2022/lib/common/null-if-empty.pipe.mjs +4 -4
  16. package/esm2022/lib/common/objects.util.mjs +7 -1
  17. package/esm2022/lib/common/observables.mjs +1 -1
  18. package/esm2022/lib/common/operators.mjs +1 -12
  19. package/esm2022/lib/common/stringify-error.util.mjs +1 -1
  20. package/esm2022/lib/common/typeof.pipe.mjs +3 -3
  21. package/esm2022/lib/common/uid.util.mjs +22 -0
  22. package/esm2022/lib/common//311/265destroy-ref.mjs +1 -1
  23. package/esm2022/lib/content-projection/content-as-overlay.component.mjs +87 -30
  24. package/esm2022/lib/content-projection/workbench-element-references.mjs +32 -0
  25. package/esm2022/lib/dialog/dialog-footer/dialog-action-filter.pipe.mjs +3 -3
  26. package/esm2022/lib/dialog/dialog-footer/dialog-footer.component.mjs +3 -3
  27. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-action.directive.mjs +3 -3
  28. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-footer.directive.mjs +3 -3
  29. package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +5 -10
  30. package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +3 -3
  31. package/esm2022/lib/dialog/movable.directive.mjs +6 -6
  32. package/esm2022/lib/dialog/resizable.directive.mjs +6 -6
  33. package/esm2022/lib/dialog/workbench-dialog.component.mjs +27 -25
  34. package/esm2022/lib/dialog/workbench-dialog.mjs +61 -1
  35. package/esm2022/lib/dialog/workbench-dialog.registry.mjs +4 -4
  36. package/esm2022/lib/dialog/workbench-dialog.service.mjs +3 -3
  37. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +99 -61
  38. package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +28 -25
  39. package/esm2022/lib/executor/latest-task-executor.mjs +55 -0
  40. package/esm2022/lib/executor/single-task-executor.mjs +9 -19
  41. package/esm2022/lib/filter-field/filter-field.component.mjs +8 -8
  42. package/esm2022/lib/glass-pane/glass-pane.directive.mjs +4 -4
  43. package/esm2022/lib/layout/grid-element/grid-element.component.mjs +10 -20
  44. package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +19 -22
  45. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +11 -0
  46. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v6.model.mjs +11 -0
  47. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +7 -7
  48. package/esm2022/lib/layout/migration/workbench-layout-migration-v4.service.mjs +4 -4
  49. package/esm2022/lib/layout/migration/workbench-layout-migration-v5.service.mjs +67 -0
  50. package/esm2022/lib/layout/migration/workbench-layout-migration-v6.service.mjs +59 -0
  51. package/esm2022/lib/layout/stringifier.mjs +70 -0
  52. package/esm2022/lib/layout/workbench-layout.component.mjs +19 -23
  53. package/esm2022/lib/layout/workbench-layout.factory.mjs +3 -3
  54. package/esm2022/lib/layout/workbench-layout.mjs +1 -1
  55. package/esm2022/lib/layout/workbench-layout.model.mjs +1 -1
  56. package/esm2022/lib/layout/workbench-layout.service.mjs +28 -26
  57. package/esm2022/lib/layout/workbench-layouts.util.mjs +1 -9
  58. package/esm2022/lib/layout/workench-layout-serializer.service.mjs +22 -32
  59. package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +6 -5
  60. package/esm2022/lib/layout//311/265workbench-layout.mjs +77 -66
  61. package/esm2022/lib/logging/console-appender.service.mjs +4 -4
  62. package/esm2022/lib/logging/logger.mjs +3 -3
  63. package/esm2022/lib/logging/logging-support.mjs +7 -13
  64. package/esm2022/lib/logging/logging.model.mjs +3 -3
  65. package/esm2022/lib/logging//311/265logger.mjs +12 -12
  66. package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +9 -8
  67. package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +5 -5
  68. package/esm2022/lib/message-box/workbench-message-box.component.mjs +5 -5
  69. package/esm2022/lib/message-box/workbench-message-box.service.mjs +3 -3
  70. package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +6 -5
  71. package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +22 -6
  72. package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +29 -22
  73. package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +6 -6
  74. package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +14 -4
  75. package/esm2022/lib/microfrontend-platform/manifest-object-cache.service.mjs +63 -0
  76. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +8 -7
  77. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +4 -4
  78. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +8 -12
  79. package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +21 -12
  80. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +10 -9
  81. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +6 -6
  82. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +17 -15
  83. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +6 -5
  84. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.mjs +4 -4
  85. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.mjs +4 -4
  86. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +10 -15
  87. package/esm2022/lib/microfrontend-platform/microfrontend-notification/microfrontend-notification-intent-handler.service.mjs +3 -3
  88. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.mjs +39 -0
  89. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.mjs +120 -0
  90. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.mjs +55 -0
  91. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.mjs +19 -0
  92. package/esm2022/lib/microfrontend-platform/microfrontend-platform-config-loader.mjs +3 -3
  93. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +7 -6
  94. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +13 -14
  95. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +14 -30
  96. package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +5 -5
  97. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +13 -29
  98. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +92 -72
  99. package/esm2022/lib/microfrontend-platform/public_api.mjs +2 -1
  100. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +8 -7
  101. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +20 -18
  102. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +30 -8
  103. package/esm2022/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.mjs +32 -0
  104. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +29 -11
  105. package/esm2022/lib/migration/workbench-migrator.mjs +1 -1
  106. package/esm2022/lib/notification/notification-css-classes.pipe.mjs +3 -3
  107. package/esm2022/lib/notification/notification-list.component.mjs +6 -10
  108. package/esm2022/lib/notification/notification.component.mjs +6 -7
  109. package/esm2022/lib/notification/notification.service.mjs +8 -7
  110. package/esm2022/lib/notification/text-notification.component.mjs +3 -3
  111. package/esm2022/lib/notification//311/265notification.mjs +1 -1
  112. package/esm2022/lib/page-not-found/page-not-found.component.mjs +7 -9
  113. package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +12 -20
  114. package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +7 -7
  115. package/esm2022/lib/part/part-bar/part-bar.component.mjs +334 -265
  116. package/esm2022/lib/part/part-portal.pipe.mjs +10 -10
  117. package/esm2022/lib/part/part.component.mjs +34 -43
  118. package/esm2022/lib/part/view-context-menu/accelerator-format.pipe.mjs +4 -4
  119. package/esm2022/lib/part/view-context-menu/text.component.mjs +17 -13
  120. package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +6 -8
  121. package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +5 -5
  122. package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +50 -51
  123. package/esm2022/lib/part/view-list/view-list.component.mjs +42 -49
  124. package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +23 -27
  125. package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +16 -18
  126. package/esm2022/lib/part/view-tab/view-tab.component.mjs +100 -111
  127. package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +5 -6
  128. package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +17 -18
  129. package/esm2022/lib/part/workbench-part-action.registry.mjs +18 -42
  130. package/esm2022/lib/part/workbench-part.model.mjs +10 -1
  131. package/esm2022/lib/part/workbench-part.registry.mjs +11 -45
  132. package/esm2022/lib/part//311/265workbench-part.model.mjs +71 -55
  133. package/esm2022/lib/perspective/migration/workbench-perspective-migration-v2.service.mjs +4 -4
  134. package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +6 -6
  135. package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +4 -4
  136. package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +4 -4
  137. package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
  138. package/esm2022/lib/perspective/workbench-perspective.registry.mjs +11 -43
  139. package/esm2022/lib/perspective/workbench-perspective.service.mjs +73 -64
  140. package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +5 -5
  141. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +62 -47
  142. package/esm2022/lib/popup/popup.component.mjs +6 -6
  143. package/esm2022/lib/popup/popup.config.mjs +27 -25
  144. package/esm2022/lib/popup/popup.service.mjs +171 -176
  145. package/esm2022/lib/portal/wb-component-portal.mjs +18 -17
  146. package/esm2022/lib/portal/workbench-portal-outlet.directive.mjs +4 -4
  147. package/esm2022/lib/public_api.mjs +1 -1
  148. package/esm2022/lib/registry/workbench-object-registry.mjs +38 -17
  149. package/esm2022/lib/routing/empty-outlet/empty-outlet.component.mjs +3 -3
  150. package/esm2022/lib/routing/public_api.mjs +2 -2
  151. package/esm2022/lib/routing/routing.model.mjs +1 -1
  152. package/esm2022/lib/routing/routing.util.mjs +215 -0
  153. package/esm2022/lib/routing/url-segment-matcher.mjs +1 -1
  154. package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +110 -0
  155. package/esm2022/lib/routing/workbench-dialog-differ.mjs +6 -6
  156. package/esm2022/lib/routing/workbench-layout-differ.mjs +6 -13
  157. package/esm2022/lib/routing/workbench-message-box-differ.mjs +6 -6
  158. package/esm2022/lib/routing/workbench-navigational-states.mjs +2 -2
  159. package/esm2022/lib/routing/workbench-popup-differ.mjs +6 -6
  160. package/esm2022/lib/routing/workbench-route-guards.mjs +57 -0
  161. package/esm2022/lib/routing/workbench-router-link.directive.mjs +5 -5
  162. package/esm2022/lib/routing/workbench-router.service.mjs +3 -3
  163. package/esm2022/lib/routing/workbench-url-observer.service.mjs +143 -151
  164. package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +58 -0
  165. package/esm2022/lib/routing//311/265location.mjs +3 -3
  166. package/esm2022/lib/routing//311/265workbench-router.service.mjs +121 -76
  167. package/esm2022/lib/startup/splash/splash.component.mjs +5 -5
  168. package/esm2022/lib/startup/workbench-initializer.mjs +1 -1
  169. package/esm2022/lib/startup/workbench-launcher.service.mjs +28 -16
  170. package/esm2022/lib/storage/workbench-storage.mjs +3 -3
  171. package/esm2022/lib/testing/workbench-testing.module.mjs +4 -4
  172. package/esm2022/lib/testing/workbench.provider.mjs +5 -5
  173. package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +18 -22
  174. package/esm2022/lib/view/public_api.mjs +1 -2
  175. package/esm2022/lib/view/view-move-handler.service.mjs +73 -58
  176. package/esm2022/lib/view/view-portal.pipe.mjs +9 -9
  177. package/esm2022/lib/view/view.component.mjs +55 -43
  178. package/esm2022/lib/view/workbench-view.model.mjs +1 -1
  179. package/esm2022/lib/view/workbench-view.registry.mjs +11 -45
  180. package/esm2022/lib/view//311/265workbench-view.model.mjs +183 -153
  181. package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +2 -2
  182. package/esm2022/lib/view-dnd/requires-drop-zone.pipe.mjs +4 -4
  183. package/esm2022/lib/view-dnd/view-drag.service.mjs +89 -73
  184. package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +9 -9
  185. package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +9 -9
  186. package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +45 -58
  187. package/esm2022/lib/workbench-config.mjs +2 -2
  188. package/esm2022/lib/workbench-id.mjs +3 -3
  189. package/esm2022/lib/workbench.component.mjs +67 -55
  190. package/esm2022/lib/workbench.constants.mjs +1 -5
  191. package/esm2022/lib/workbench.model.mjs +1 -1
  192. package/esm2022/lib/workbench.module.mjs +4 -4
  193. package/esm2022/lib/workbench.provider.mjs +3 -9
  194. package/esm2022/lib/workbench.service.mjs +4 -4
  195. package/esm2022/lib//311/265workbench.service.mjs +40 -44
  196. package/fesm2022/scion-workbench.mjs +4348 -3628
  197. package/fesm2022/scion-workbench.mjs.map +1 -1
  198. package/lib/common/class-list.d.ts +35 -22
  199. package/lib/common/math.util.d.ts +7 -0
  200. package/lib/common/objects.util.d.ts +6 -2
  201. package/lib/common/operators.d.ts +1 -6
  202. package/lib/common/uid.util.d.ts +9 -0
  203. package/lib/content-projection/content-as-overlay.component.d.ts +39 -22
  204. package/lib/content-projection/workbench-element-references.d.ts +13 -0
  205. package/lib/dialog/workbench-dialog.component.d.ts +3 -2
  206. package/lib/dialog/workbench-dialog.d.ts +57 -13
  207. package/lib/dialog//311/265workbench-dialog.d.ts +38 -24
  208. package/lib/dialog//311/265workbench-dialog.service.d.ts +10 -11
  209. package/lib/executor/latest-task-executor.d.ts +26 -0
  210. package/lib/executor/single-task-executor.d.ts +5 -8
  211. package/lib/filter-field/filter-field.component.d.ts +1 -1
  212. package/lib/layout/grid-element/grid-element.component.d.ts +1 -8
  213. package/lib/layout/main-area-layout/main-area-layout.component.d.ts +0 -4
  214. package/lib/layout/migration/model/workbench-layout-migration-v5.model.d.ts +36 -0
  215. package/lib/layout/migration/model/workbench-layout-migration-v6.model.d.ts +35 -0
  216. package/lib/layout/migration/{workbench-layout-migration-v2.service.d.ts → workbench-layout-migration-v5.service.d.ts} +4 -5
  217. package/lib/layout/migration/workbench-layout-migration-v6.service.d.ts +12 -0
  218. package/lib/layout/stringifier.d.ts +26 -0
  219. package/lib/layout/workbench-layout.component.d.ts +4 -5
  220. package/lib/layout/workbench-layout.d.ts +9 -6
  221. package/lib/layout/workbench-layout.model.d.ts +4 -3
  222. package/lib/layout/workbench-layout.service.d.ts +14 -16
  223. package/lib/layout/workbench-layouts.util.d.ts +0 -6
  224. package/lib/layout/workench-layout-serializer.service.d.ts +13 -16
  225. package/lib/layout//311/265workbench-layout.d.ts +18 -19
  226. package/lib/layout//311/265workbench-layout.factory.d.ts +3 -2
  227. package/lib/logging//311/265logger.d.ts +2 -3
  228. package/lib/microfrontend-platform/common/microfrontend.util.d.ts +5 -1
  229. package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +7 -3
  230. package/lib/microfrontend-platform/manifest-object-cache.service.d.ts +33 -0
  231. package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +3 -6
  232. package/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.d.ts +2 -1
  233. package/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.d.ts +1 -1
  234. package/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.d.ts +2 -1
  235. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.d.ts +10 -0
  236. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.d.ts +24 -0
  237. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.d.ts +20 -0
  238. package/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.d.ts +9 -0
  239. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.d.ts +4 -8
  240. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +0 -4
  241. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +5 -12
  242. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +23 -33
  243. package/lib/microfrontend-platform/public_api.d.ts +1 -0
  244. package/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.d.ts +1 -1
  245. package/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.d.ts +3 -7
  246. package/lib/microfrontend-platform/routing/microfrontend-view-routes.d.ts +9 -2
  247. package/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.d.ts +11 -0
  248. package/lib/notification/notification-list.component.d.ts +0 -2
  249. package/lib/page-not-found/page-not-found.component.d.ts +1 -0
  250. package/lib/part/part-action-bar/part-action-bar.component.d.ts +3 -4
  251. package/lib/part/part-action-bar/part-action.directive.d.ts +2 -2
  252. package/lib/part/part-bar/part-bar.component.d.ts +73 -63
  253. package/lib/part/part-portal.pipe.d.ts +3 -5
  254. package/lib/part/part.component.d.ts +9 -12
  255. package/lib/part/view-context-menu/text.component.d.ts +3 -4
  256. package/lib/part/view-context-menu/view-menu.directive.d.ts +1 -1
  257. package/lib/part/view-context-menu/view-menu.service.d.ts +13 -17
  258. package/lib/part/view-list/view-list.component.d.ts +8 -21
  259. package/lib/part/view-list-button/view-list-button.component.d.ts +8 -11
  260. package/lib/part/view-list-item/view-list-item.component.d.ts +3 -7
  261. package/lib/part/view-tab/view-tab.component.d.ts +19 -29
  262. package/lib/part/view-tab-drag-image/view-tab-drag-image.component.d.ts +4 -4
  263. package/lib/part/workbench-part-action.registry.d.ts +3 -23
  264. package/lib/part/workbench-part.model.d.ts +8 -27
  265. package/lib/part/workbench-part.registry.d.ts +3 -26
  266. package/lib/part//311/265workbench-part.model.d.ts +23 -17
  267. package/lib/perspective/workbench-perspective.model.d.ts +18 -25
  268. package/lib/perspective/workbench-perspective.registry.d.ts +3 -26
  269. package/lib/perspective/workbench-perspective.service.d.ts +16 -14
  270. package/lib/perspective/workench-perspective-serializer.service.d.ts +1 -1
  271. package/lib/perspective//311/265workbench-perspective.model.d.ts +30 -21
  272. package/lib/popup/popup.config.d.ts +11 -10
  273. package/lib/popup/popup.service.d.ts +15 -28
  274. package/lib/portal/wb-component-portal.d.ts +21 -5
  275. package/lib/public_api.d.ts +1 -1
  276. package/lib/registry/workbench-object-registry.d.ts +10 -6
  277. package/lib/routing/public_api.d.ts +2 -2
  278. package/lib/routing/routing.model.d.ts +25 -13
  279. package/lib/routing/{router.util.d.ts → routing.util.d.ts} +28 -1
  280. package/lib/routing/{workbench-auxiliary-routes-registrator.service.d.ts → workbench-auxiliary-route-installer.service.d.ts} +10 -3
  281. package/lib/routing/workbench-layout-differ.d.ts +1 -2
  282. package/lib/routing/workbench-navigational-states.d.ts +8 -4
  283. package/lib/{view/workbench-view-route-guards.d.ts → routing/workbench-route-guards.d.ts} +8 -2
  284. package/lib/routing/workbench-url-observer.service.d.ts +31 -55
  285. package/lib/routing/workbench-view-outlet-differ.d.ts +32 -0
  286. package/lib/routing//311/265workbench-router.service.d.ts +22 -18
  287. package/lib/startup/workbench-launcher.service.d.ts +4 -5
  288. package/lib/testing/workbench.provider.d.ts +3 -1
  289. package/lib/theme/workbench-theme-switcher.service.d.ts +4 -6
  290. package/lib/view/public_api.d.ts +0 -1
  291. package/lib/view/view-move-handler.service.d.ts +16 -14
  292. package/lib/view/view-portal.pipe.d.ts +1 -3
  293. package/lib/view/view.component.d.ts +21 -12
  294. package/lib/view/workbench-view.model.d.ts +88 -36
  295. package/lib/view/workbench-view.registry.d.ts +3 -27
  296. package/lib/view//311/265workbench-view.model.d.ts +62 -71
  297. package/lib/view-dnd/view-drag.service.d.ts +79 -49
  298. package/lib/view-dnd/view-drop-placeholder-renderer.service.d.ts +1 -1
  299. package/lib/view-dnd/view-tab-drag-image-renderer.service.d.ts +12 -36
  300. package/lib/workbench-config.d.ts +19 -7
  301. package/lib/workbench.component.d.ts +16 -30
  302. package/lib/workbench.constants.d.ts +0 -5
  303. package/lib/workbench.model.d.ts +31 -3
  304. package/lib/workbench.service.d.ts +58 -56
  305. package/lib//311/265workbench.service.d.ts +18 -31
  306. package/package.json +12 -12
  307. package/esm2022/lib/common/filter-by-predicate.pipe.mjs +0 -27
  308. package/esm2022/lib/common/filter-by-text.pipe.mjs +0 -39
  309. package/esm2022/lib/common/uuid.util.mjs +0 -17
  310. package/esm2022/lib/content-projection/content-projection.directive.mjs +0 -101
  311. package/esm2022/lib/content-projection/view-container.reference.mjs +0 -68
  312. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v1.model.mjs +0 -11
  313. package/esm2022/lib/layout/migration/workbench-layout-migration-v2.service.mjs +0 -59
  314. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +0 -41
  315. package/esm2022/lib/page-not-found/format-url.pipe.mjs +0 -26
  316. package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +0 -26
  317. package/esm2022/lib/routing/router.util.mjs +0 -126
  318. package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +0 -94
  319. package/esm2022/lib/view/workbench-view-route-guards.mjs +0 -47
  320. package/lib/common/filter-by-predicate.pipe.d.ts +0 -10
  321. package/lib/common/filter-by-text.pipe.d.ts +0 -12
  322. package/lib/common/uuid.util.d.ts +0 -8
  323. package/lib/content-projection/content-projection.directive.d.ts +0 -30
  324. package/lib/content-projection/view-container.reference.d.ts +0 -42
  325. package/lib/layout/migration/model/workbench-layout-migration-v1.model.d.ts +0 -16
  326. package/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.d.ts +0 -10
  327. package/lib/page-not-found/format-url.pipe.d.ts +0 -11
  328. package/lib/part/part-action-bar/part-action-filter.pipe.d.ts +0 -11
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import { Directive, EventEmitter, Input, Output } from '@angular/core';
11
11
  import { createElement, setStyle } from '../common/dom.util';
12
- import { subscribeInside } from '@scion/toolkit/operators';
12
+ import { subscribeIn } from '@scion/toolkit/operators';
13
13
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
14
14
  import { Subject } from 'rxjs';
15
15
  import { takeUntil } from 'rxjs/operators';
@@ -52,7 +52,7 @@ export class ViewDropZoneDirective {
52
52
  const disposables = new Array();
53
53
  // Create drop zones when entering the host element.
54
54
  this._viewDragService.viewDrag$(this._host, { eventType: 'dragenter' })
55
- .pipe(subscribeInside(fn => this._zone.runOutsideAngular(fn)), takeUntilDestroyed())
55
+ .pipe(subscribeIn(fn => this._zone.runOutsideAngular(fn)), takeUntilDestroyed())
56
56
  .subscribe(() => {
57
57
  if (!this.regions || this.regions.center) {
58
58
  disposables.push(...this.createDropZone('center'));
@@ -99,7 +99,7 @@ export class ViewDropZoneDirective {
99
99
  });
100
100
  // Install drag listener to render the drop placeholder and handle drop.
101
101
  this._viewDragService.viewDrag$(dropZoneElement, { eventType: ['dragenter', 'dragover', 'drop'] })
102
- .pipe(subscribeInside(fn => this._zone.runOutsideAngular(fn)), takeUntil(dispose$))
102
+ .pipe(subscribeIn(fn => this._zone.runOutsideAngular(fn)), takeUntil(dispose$))
103
103
  .subscribe((event) => {
104
104
  switch (event.type) {
105
105
  case 'dragenter':
@@ -111,14 +111,14 @@ export class ViewDropZoneDirective {
111
111
  case 'drop':
112
112
  this._zone.run(() => this.viewDrop.emit({
113
113
  dropRegion: region,
114
- dragData: this._viewDragService.viewDragData,
114
+ dragData: this._viewDragService.viewDragData(),
115
115
  }));
116
116
  break;
117
117
  }
118
118
  });
119
119
  // Disable the drop zone when dragging over the tab bar, allowing the user to change the tab order even for tabs covered by the drop zone.
120
120
  this._viewDragService.tabbarDragOver$
121
- .pipe(subscribeInside(fn => this._zone.runOutsideAngular(fn)), takeUntil(dispose$))
121
+ .pipe(subscribeIn(fn => this._zone.runOutsideAngular(fn)), takeUntil(dispose$))
122
122
  .subscribe(dragOverTabbar => {
123
123
  if (dragOverTabbar) {
124
124
  setStyle(dropZoneElement, { 'pointer-events': 'none' });
@@ -150,10 +150,10 @@ export class ViewDropZoneDirective {
150
150
  setStyle(this._host, { 'position': 'relative' });
151
151
  }
152
152
  }
153
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewDropZoneDirective, deps: [{ token: i0.ElementRef }, { token: i1.ViewDragService }, { token: i2.ViewDropPlaceholderRenderer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
154
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.6", type: ViewDropZoneDirective, isStandalone: true, selector: "[wbViewDropZone]", inputs: { regions: ["wbViewDropZoneRegions", "regions"], cssClass: ["wbViewDropZoneCssClass", "cssClass"], dropZoneSize: ["wbViewDropZoneSize", "dropZoneSize"], dropPlaceholderSize: ["wbViewDropZonePlaceholderSize", "dropPlaceholderSize"] }, outputs: { viewDrop: "wbViewDropZoneDrop" }, ngImport: i0 }); }
153
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewDropZoneDirective, deps: [{ token: i0.ElementRef }, { token: i1.ViewDragService }, { token: i2.ViewDropPlaceholderRenderer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
154
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: ViewDropZoneDirective, isStandalone: true, selector: "[wbViewDropZone]", inputs: { regions: ["wbViewDropZoneRegions", "regions"], cssClass: ["wbViewDropZoneCssClass", "cssClass"], dropZoneSize: ["wbViewDropZoneSize", "dropZoneSize"], dropPlaceholderSize: ["wbViewDropZonePlaceholderSize", "dropPlaceholderSize"] }, outputs: { viewDrop: "wbViewDropZoneDrop" }, ngImport: i0 }); }
155
155
  }
156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewDropZoneDirective, decorators: [{
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewDropZoneDirective, decorators: [{
157
157
  type: Directive,
158
158
  args: [{ selector: '[wbViewDropZone]', standalone: true }]
159
159
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.ViewDragService }, { type: i2.ViewDropPlaceholderRenderer }, { type: i0.NgZone }], propDecorators: { regions: [{
@@ -180,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
180
180
  function coercePixelValue(pixelOrRatio, options) {
181
181
  return (pixelOrRatio <= 1) ? options.containerSize * pixelOrRatio : pixelOrRatio;
182
182
  }
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1kcm9wLXpvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvdmlldy1kbmQvdmlldy1kcm9wLXpvbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFrQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUUzRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7O0FBRTNDOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQW1DaEMsWUFBWSxJQUE2QixFQUNyQixnQkFBaUMsRUFDakMsNEJBQXlELEVBQ3pELEtBQWE7UUFGYixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQ2pDLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBNkI7UUFDekQsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQXRCakM7O1dBRUc7UUFFSSxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQVN6Qjs7V0FFRztRQUVJLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQU1wRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFD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L0IsUUFBUTtzQkFEZCxNQUFNO3VCQUFDLG9CQUFvQjs7QUErSTlCOzs7O0dBSUc7QUFDSCxTQUFTLGdCQUFnQixDQUFDLFlBQW9CLEVBQUUsT0FBZ0M7SUFDOUUsT0FBTyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztBQUNuRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2NyZWF0ZUVsZW1lbnQsIHNldFN0eWxlfSBmcm9tICcuLi9jb21tb24vZG9tLnV0aWwnO1xuaW1wb3J0IHtWaWV3RHJhZ0RhdGEsIFZpZXdEcmFnU2VydmljZX0gZnJvbSAnLi92aWV3LWRyYWcuc2VydmljZSc7XG5pbXBvcnQge3N1YnNjcmliZUluc2lkZX0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb3BlcmF0b3JzJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1ZpZXdEcm9wUGxhY2Vob2xkZXJSZW5kZXJlcn0gZnJvbSAnLi92aWV3LWRyb3AtcGxhY2Vob2xkZXItcmVuZGVyZXIuc2VydmljZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXJyYXlzfSBmcm9tICdAc2Npb24vdG9vbGtpdC91dGlsJztcblxuLyoqXG4gKiBBZGRzIHZpZXcgZHJvcCB6b25lcyB0byB0aGUgaG9zdCBlbGVtZW50LCBhbGxvd2luZyB2aWV3cyB0byBiZSBkcm9wcGVkIGVpdGhlciBpbiB0aGUgbm9ydGgsIGVhc3QsIHNvdXRoLCB3ZXN0IG9yIGNlbnRlci5cbiAqXG4gKiBUaGUgZHJvcCB6b25lcyBhcmUgYWxpZ25lZCB3aXRoIHRoZSBib3VuZHMgb2YgdGhlIGhvc3QgZWxlbWVudCwgcmVxdWlyaW5nIHRoZSBob3N0IHRvIGRlZmluZSBhIHBvc2l0aW9uaW5nIGNvbnRleHQuXG4gKiBJZiBub3QgcG9zaXRpb25lZCwgdGhlIGVsZW1lbnQgaXMgY2hhbmdlZCB0byBiZSBwb3NpdGlvbmVkIHJlbGF0aXZlLlxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1t3YlZpZXdEcm9wWm9uZV0nLCBzdGFuZGFsb25lOiB0cnVlfSlcbmV4cG9ydCBjbGFzcyBWaWV3RHJvcFpvbmVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2hvc3Q6IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHJlZ2lvbnMgd2hlcmUgYSBkcm9wIHpvbmUgc2hvdWxkIGJlIGluc3RhbGxlZC4gSWYgbm90IHNldCwgaW5zdGFsbHMgYSBkcm9wIHpvbmUgaW4gZXZlcnkgcmVnaW9uLlxuICAgKi9cbiAgQElucHV0KCd3YlZpZXdEcm9wWm9uZVJlZ2lvbnMnKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgcHVibGljIHJlZ2lvbnM/OiBEcm9wWm9uZVJlZ2lvbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIENTUyBjbGFzcyhlcykgdG8gYWRkIHRvIHRoZSBkcm9wIHpvbmUuXG4gICAqL1xuICBASW5wdXQoJ3diVmlld0Ryb3Bab25lQ3NzQ2xhc3MnKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgcHVibGljIGNzc0NsYXNzPzogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgZHJvcCB6b25lLCBlaXRoZXIgYXMgcGVyY2VudGFnZSB2YWx1ZSBbMCwxXSBvciBhYnNvbHV0ZSBwaXhlbCB2YWx1ZS5cbiAgICovXG4gIEBJbnB1dCh7YWxpYXM6ICd3YlZpZXdEcm9wWm9uZVNpemUnLCByZXF1aXJlZDogdHJ1ZX0pIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBwdWJsaWMgZHJvcFpvbmVTaXplID0gLjU7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgdmlzdWFsIHBsYWNlaG9sZGVyIHdoZW4gZHJhZ2dpbmcgYSB2aWV3IG92ZXIgYSBkcm9wIHpvbmUuXG4gICAqIENhbiBiZSBhIHBlcmNlbnRhZ2UgdmFsdWUgWzAsMV0gb3IgYWJzb2x1dGUgcGl4ZWwgdmFsdWUuIElmIG5vdCBzZXQsIGRlZmF1bHRzIHRvIHtAbGluayBkcm9wWm9uZVNpemV9LlxuICAgKi9cbiAgQElucHV0KCd3YlZpZXdEcm9wWm9uZVBsYWNlaG9sZGVyU2l6ZScpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBwdWJsaWMgZHJvcFBsYWNlaG9sZGVyU2l6ZT86IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRW1pdHMgdXBvbiBhIHZpZXcgZHJvcCBhY3Rpb24uXG4gICAqL1xuICBAT3V0cHV0KCd3YlZpZXdEcm9wWm9uZURyb3AnKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lXG4gIHB1YmxpYyB2aWV3RHJvcCA9IG5ldyBFdmVudEVtaXR0ZXI8V2JWaWV3RHJvcEV2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKGhvc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICAgICAgICBwcml2YXRlIF92aWV3RHJhZ1NlcnZpY2U6IFZpZXdEcmFnU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlld0Ryb3BQbGFjZWhvbGRlclJlbmRlcmVyOiBWaWV3RHJvcFBsYWNlaG9sZGVyUmVuZGVyZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMuX2hvc3QgPSBob3N0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5pbnN0YWxsRHJvcFpvbmVzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVIb3N0RWxlbWVudFBvc2l0aW9uZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YWxscyBhIGRyb3Agem9uZSBmb3IgZWFjaCBzcGVjaWZpZWQgcmVnaW9uLlxuICAgKlxuICAgKiAtIERPTSBlbGVtZW50cyBmb3IgZHJvcCB6b25lcyBhcmUgY3JlYXRlZCBsYXppbHkgd2hlbiBkcmFnZ2luZyBhIHZpZXcgb3ZlciB0aGUgaG9zdCBlbGVtZW50LlxuICAgKiAtIFdoZW4gZHJhZ2dpbmcgYSB2aWV3IG92ZXIgYSBkcm9wIHpvbmUsIHJlbmRlcnMgdGhlIGRyb3AgcGxhY2Vob2xkZXIgdXNpbmcgdGhlIHtAbGluayBWaWV3RHJvcFBsYWNlaG9sZGVyUmVuZGVyZXJ9LlxuICAgKi9cbiAgcHJpdmF0ZSBpbnN0YWxsRHJvcFpvbmVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzID0gbmV3IEFycmF5PERpc3Bvc2VGbj4oKTtcblxuICAgIC8vIENyZWF0ZSBkcm9wIHpvbmVzIHdoZW4gZW50ZXJpbmcgdGhlIGhvc3QgZWxlbWVudC5cbiAgICB0aGlzLl92aWV3RHJhZ1NlcnZpY2Uudmlld0RyYWckKHRoaXMuX2hvc3QsIHtldmVudFR5cGU6ICdkcmFnZW50ZXInfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzdWJzY3JpYmVJbnNpZGUoZm4gPT4gdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcihmbikpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMucmVnaW9ucyB8fCB0aGlzLnJlZ2lvbnMuY2VudGVyKSB7XG4gICAgICAgICAgZGlzcG9zYWJsZXMucHVzaCguLi50aGlzLmNyZWF0ZURyb3Bab25lKCdjZW50ZXInKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnJlZ2lvbnMgfHwgdGhpcy5yZWdpb25zLm5vcnRoKSB7XG4gICAgICAgICAgZGlzcG9zYWJsZXMucHVzaCguLi50aGlzLmNyZWF0ZURyb3Bab25lKCdub3J0aCcpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMucmVnaW9ucyB8fCB0aGlzLnJlZ2lvbnMuc291dGgpIHtcbiAgICAgICAgICBkaXNwb3NhYmxlcy5wdXNoKC4uLnRoaXMuY3JlYXRlRHJvcFpvbmUoJ3NvdXRoJykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5yZWdpb25zIHx8IHRoaXMucmVnaW9ucy53ZXN0KSB7XG4gICAgICAgICAgZGlzcG9zYWJsZXMucHVzaCguLi50aGlzLmNyZWF0ZURyb3Bab25lKCd3ZXN0JykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5yZWdpb25zIHx8IHRoaXMucmVnaW9ucy5lYXN0KSB7XG4gICAgICAgICAgZGlzcG9zYWJsZXMucHVzaCguLi50aGlzLmNyZWF0ZURyb3Bab25lKCdlYXN0JykpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIC8vIERpc3Bvc2UgZHJvcCB6b25lcyB3aGVuIGxlYXZpbmcgdGhlIGhvc3QgZWxlbWVudCwgb3Igd2hlbiB0aGUgZHJhZyBvcGVyYXRpb24gY29tcGxldGVzLlxuICAgIHRoaXMuX3ZpZXdEcmFnU2VydmljZS52aWV3RHJhZyQodGhpcy5faG9zdCwge2V2ZW50VHlwZTogWydkcmFnbGVhdmUnLCAnZHJvcCddfSlcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGRpc3Bvc2FibGVzLmZvckVhY2goZGlzcG9zZUZuID0+IGRpc3Bvc2VGbigpKTtcbiAgICAgICAgZGlzcG9zYWJsZXMubGVuZ3RoID0gMDtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIGRyb3Agem9uZSBmb3IgdGhlIHNwZWNpZmllZCByZWdpb24uXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZURyb3Bab25lKHJlZ2lvbjogJ25vcnRoJyB8ICdlYXN0JyB8ICdzb3V0aCcgfCAnd2VzdCcgfCAnY2VudGVyJyk6IERpc3Bvc2VGbltdIHtcbiAgICBjb25zdCBkcm9wWm9uZUluc2V0ID0gdGhpcy5jYWxjdWxhdGVJbnNldChyZWdpb24sIHRoaXMuZHJvcFpvbmVTaXplKTtcbiAgICBjb25zdCBkcm9wUGxhY2Vob2xkZXJJbnNldCA9IHRoaXMuY2FsY3VsYXRlSW5zZXQocmVnaW9uLCB0aGlzLmRyb3BQbGFjZWhvbGRlclNpemUgPz8gdGhpcy5kcm9wWm9uZVNpemUpO1xuICAgIGNvbnN0IGRpc3Bvc2UkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgZHJvcCB6b25lIEhUTUwgZWxlbWVudC5cbiAgICBjb25zdCBkcm9wWm9uZUVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCB7XG4gICAgICBwYXJlbnQ6IHRoaXMuX2hvc3QsXG4gICAgICBjc3NDbGFzczogWydlMmUtdmlldy1kcm9wLXpvbmUnLCBgZTJlLSR7cmVnaW9ufWAsIC4uLkFycmF5cy5jb2VyY2UodGhpcy5jc3NDbGFzcyldLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIHRvcDogYCR7ZHJvcFpvbmVJbnNldC50b3B9cHhgLFxuICAgICAgICByaWdodDogYCR7ZHJvcFpvbmVJbnNldC5yaWdodH1weGAsXG4gICAgICAgIGJvdHRvbTogYCR7ZHJvcFpvbmVJbnNldC5ib3R0b219cHhgLFxuICAgICAgICBsZWZ0OiBgJHtkcm9wWm9uZUluc2V0LmxlZnR9cHhgLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEluc3RhbGwgZHJhZyBsaXN0ZW5lciB0byByZW5kZXIgdGhlIGRyb3AgcGxhY2Vob2xkZXIgYW5kIGhhbmRsZSBkcm9wLlxuICAgIHRoaXMuX3ZpZXdEcmFnU2VydmljZS52aWV3RHJhZyQoZHJvcFpvbmVFbGVtZW50LCB7ZXZlbnRUeXBlOiBbJ2RyYWdlbnRlcicsICdkcmFnb3ZlcicsICdkcm9wJ119KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN1YnNjcmliZUluc2lkZShmbiA9PiB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKGZuKSksXG4gICAgICAgIHRha2VVbnRpbChkaXNwb3NlJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ2RyYWdlbnRlcic6XG4gICAgICAgICAgICB0aGlzLl92aWV3RHJvcFBsYWNlaG9sZGVyUmVuZGVyZXIudXBkYXRlUG9zaXRpb24odGhpcy5faG9zdCwgZHJvcFBsYWNlaG9sZGVySW5zZXQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZHJhZ292ZXInOlxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gYWxsb3cgdmlldyBkcm9wXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdkcm9wJzpcbiAgICAgICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHRoaXMudmlld0Ryb3AuZW1pdCh7XG4gICAgICAgICAgICAgIGRyb3BSZWdpb246IHJlZ2lvbixcbiAgICAgICAgICAgICAgZHJhZ0RhdGE6IHRoaXMuX3ZpZXdEcmFnU2VydmljZS52aWV3RHJhZ0RhdGEhLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgLy8gRGlzYWJsZSB0aGUgZHJvcCB6b25lIHdoZW4gZHJhZ2dpbmcgb3ZlciB0aGUgdGFiIGJhciwgYWxsb3dpbmcgdGhlIHVzZXIgdG8gY2hhbmdlIHRoZSB0YWIgb3JkZXIgZXZlbiBmb3IgdGFicyBjb3ZlcmVkIGJ5IHRoZSBkcm9wIHpvbmUuXG4gICAgdGhpcy5fdmlld0RyYWdTZXJ2aWNlLnRhYmJhckRyYWdPdmVyJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN1YnNjcmliZUluc2lkZShmbiA9PiB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKGZuKSksXG4gICAgICAgIHRha2VVbnRpbChkaXNwb3NlJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGRyYWdPdmVyVGFiYmFyID0+IHtcbiAgICAgICAgaWYgKGRyYWdPdmVyVGFiYmFyKSB7XG4gICAgICAgICAgc2V0U3R5bGUoZHJvcFpvbmVFbGVtZW50LCB7J3BvaW50ZXItZXZlbnRzJzogJ25vbmUnfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgc2V0U3R5bGUoZHJvcFpvbmVFbGVtZW50LCB7J3BvaW50ZXItZXZlbnRzJzogbnVsbH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHJldHVybiBbXG4gICAgICAoKSA9PiBkaXNwb3NlJC5uZXh0KCksXG4gICAgICAoKSA9PiBkcm9wWm9uZUVsZW1lbnQucmVtb3ZlKCksXG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBpbnNldCBmb3IgdGhlIGRyb3AgcmVnaW9uIGJhc2VkIG9uIHRoZSBnaXZlbiBzaXplLlxuICAgKlxuICAgKiBJZiBwYXNzaW5nIGEgcmF0aW8gWzAsMV0gZm9yIHRoZSBzaXplLCB0aGUgc2l6ZSBpcyBpbnRlcnByZXRlZCBhcyBhIHBlcmNlbnRhZ2UgdmFsdWUgcmVsYXRpdmUgdG8gdGhlIHNpemUgb2YgdGhlIGhvc3QgZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgY2FsY3VsYXRlSW5zZXQocmVnaW9uOiAnbm9ydGgnIHwgJ2Vhc3QnIHwgJ3NvdXRoJyB8ICd3ZXN0JyB8ICdjZW50ZXInLCBzaXplOiBudW1iZXIpOiBJbnNldCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvcDogcmVnaW9uID09PSAnc291dGgnID8gdGhpcy5faG9zdC5jbGllbnRIZWlnaHQgLSBjb2VyY2VQaXhlbFZhbHVlKHNpemUsIHtjb250YWluZXJTaXplOiB0aGlzLl9ob3N0LmNsaWVudEhlaWdodH0pIDogMCxcbiAgICAgIHJpZ2h0OiByZWdpb24gPT09ICd3ZXN0JyA/IHRoaXMuX2hvc3QuY2xpZW50V2lkdGggLSBjb2VyY2VQaXhlbFZhbHVlKHNpemUsIHtjb250YWluZXJTaXplOiB0aGlzLl9ob3N0LmNsaWVudFdpZHRofSkgOiAwLFxuICAgICAgYm90dG9tOiByZWdpb24gPT09ICdub3J0aCcgPyB0aGlzLl9ob3N0LmNsaWVudEhlaWdodCAtIGNvZXJjZVBpeGVsVmFsdWUoc2l6ZSwge2NvbnRhaW5lclNpemU6IHRoaXMuX2hvc3QuY2xpZW50SGVpZ2h0fSkgOiAwLFxuICAgICAgbGVmdDogcmVnaW9uID09PSAnZWFzdCcgPyB0aGlzLl9ob3N0LmNsaWVudFdpZHRoIC0gY29lcmNlUGl4ZWxWYWx1ZShzaXplLCB7Y29udGFpbmVyU2l6ZTogdGhpcy5faG9zdC5jbGllbnRXaWR0aH0pIDogMCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVIb3N0RWxlbWVudFBvc2l0aW9uZWQoKTogdm9pZCB7XG4gICAgaWYgKGdldENvbXB1dGVkU3R5bGUodGhpcy5faG9zdCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgICBzZXRTdHlsZSh0aGlzLl9ob3N0LCB7J3Bvc2l0aW9uJzogJ3JlbGF0aXZlJ30pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENvZXJjZXMgZ2l2ZW4gdmFsdWUgdG8gYSBDU1MgcGl4ZWwgdmFsdWUuXG4gKlxuICogSWYgcGFzc2luZyBhIHJhdGlvIFswLDFdLCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIHBlcmNlbnRhZ2UgdmFsdWUgcmVsYXRpdmUgdG8gdGhlIHNpemUgb2YgdGhlIGNvbnRhaW5lci5cbiAqL1xuZnVuY3Rpb24gY29lcmNlUGl4ZWxWYWx1ZShwaXhlbE9yUmF0aW86IG51bWJlciwgb3B0aW9uczoge2NvbnRhaW5lclNpemU6IG51bWJlcn0pOiBudW1iZXIge1xuICByZXR1cm4gKHBpeGVsT3JSYXRpbyA8PSAxKSA/IG9wdGlvbnMuY29udGFpbmVyU2l6ZSAqIHBpeGVsT3JSYXRpbyA6IHBpeGVsT3JSYXRpbztcbn1cblxuLyoqXG4gKiBFdmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hlbiBkcm9wcGluZyBhIHZpZXcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2JWaWV3RHJvcEV2ZW50IHtcbiAgZHJvcFJlZ2lvbjogJ25vcnRoJyB8ICdlYXN0JyB8ICdzb3V0aCcgfCAnd2VzdCcgfCAnY2VudGVyJztcbiAgZHJhZ0RhdGE6IFZpZXdEcmFnRGF0YTtcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHJlZ2lvbnMgd2hlcmUgYSBkcm9wIHpvbmUgc2hvdWxkIGJlIGluc3RhbGxlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEcm9wWm9uZVJlZ2lvbiB7XG4gIG5vcnRoOiBib29sZWFuO1xuICBzb3V0aDogYm9vbGVhbjtcbiAgd2VzdDogYm9vbGVhbjtcbiAgZWFzdDogYm9vbGVhbjtcbiAgY2VudGVyOiBib29sZWFuO1xufVxuXG4vKipcbiAqIERpc3RhbmNlIGJldHdlZW4gYW4gZWxlbWVudCBhbmQgdGhlIHBhcmVudCBlbGVtZW50LlxuICovXG5pbnRlcmZhY2UgSW5zZXQge1xuICB0b3A6IG51bWJlcjtcbiAgcmlnaHQ6IG51bWJlcjtcbiAgYm90dG9tOiBudW1iZXI7XG4gIGxlZnQ6IG51bWJlcjtcbn1cblxudHlwZSBEaXNwb3NlRm4gPSAoKSA9PiB2b2lkO1xuIl19
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1kcm9wLXpvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvdmlldy1kbmQvdmlldy1kcm9wLXpvbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFrQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUUzRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7O0FBRTNDOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQW1DaEMsWUFBWSxJQUE2QixFQUNyQixnQkFBaUMsRUFDakMsNEJBQXlELEVBQ3pELEtBQWE7UUFGYixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQ2pDLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBNkI7UUFDekQsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQXRCakM7O1dBRUc7UUFFSSxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQVN6Qjs7V0FFRztRQUVJLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQU1wRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFD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QkFBQyxFQUFDLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDO2dCQVE3QyxtQkFBbUI7c0JBRHpCLEtBQUs7dUJBQUMsK0JBQStCO2dCQU8vQixRQUFRO3NCQURkLE1BQU07dUJBQUMsb0JBQW9COztBQStJOUI7Ozs7R0FJRztBQUNILFNBQVMsZ0JBQWdCLENBQUMsWUFBb0IsRUFBRSxPQUFnQztJQUM5RSxPQUFPLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0FBQ25GLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Y3JlYXRlRWxlbWVudCwgc2V0U3R5bGV9IGZyb20gJy4uL2NvbW1vbi9kb20udXRpbCc7XG5pbXBvcnQge1ZpZXdEcmFnRGF0YSwgVmlld0RyYWdTZXJ2aWNlfSBmcm9tICcuL3ZpZXctZHJhZy5zZXJ2aWNlJztcbmltcG9ydCB7c3Vic2NyaWJlSW59IGZyb20gJ0BzY2lvbi90b29sa2l0L29wZXJhdG9ycyc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtWaWV3RHJvcFBsYWNlaG9sZGVyUmVuZGVyZXJ9IGZyb20gJy4vdmlldy1kcm9wLXBsYWNlaG9sZGVyLXJlbmRlcmVyLnNlcnZpY2UnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FycmF5c30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5cbi8qKlxuICogQWRkcyB2aWV3IGRyb3Agem9uZXMgdG8gdGhlIGhvc3QgZWxlbWVudCwgYWxsb3dpbmcgdmlld3MgdG8gYmUgZHJvcHBlZCBlaXRoZXIgaW4gdGhlIG5vcnRoLCBlYXN0LCBzb3V0aCwgd2VzdCBvciBjZW50ZXIuXG4gKlxuICogVGhlIGRyb3Agem9uZXMgYXJlIGFsaWduZWQgd2l0aCB0aGUgYm91bmRzIG9mIHRoZSBob3N0IGVsZW1lbnQsIHJlcXVpcmluZyB0aGUgaG9zdCB0byBkZWZpbmUgYSBwb3NpdGlvbmluZyBjb250ZXh0LlxuICogSWYgbm90IHBvc2l0aW9uZWQsIHRoZSBlbGVtZW50IGlzIGNoYW5nZWQgdG8gYmUgcG9zaXRpb25lZCByZWxhdGl2ZS5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbd2JWaWV3RHJvcFpvbmVdJywgc3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgY2xhc3MgVmlld0Ryb3Bab25lRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9ob3N0OiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSByZWdpb25zIHdoZXJlIGEgZHJvcCB6b25lIHNob3VsZCBiZSBpbnN0YWxsZWQuIElmIG5vdCBzZXQsIGluc3RhbGxzIGEgZHJvcCB6b25lIGluIGV2ZXJ5IHJlZ2lvbi5cbiAgICovXG4gIEBJbnB1dCgnd2JWaWV3RHJvcFpvbmVSZWdpb25zJykgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIHB1YmxpYyByZWdpb25zPzogRHJvcFpvbmVSZWdpb247XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBDU1MgY2xhc3MoZXMpIHRvIGFkZCB0byB0aGUgZHJvcCB6b25lLlxuICAgKi9cbiAgQElucHV0KCd3YlZpZXdEcm9wWm9uZUNzc0NsYXNzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIHB1YmxpYyBjc3NDbGFzcz86IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGRyb3Agem9uZSwgZWl0aGVyIGFzIHBlcmNlbnRhZ2UgdmFsdWUgWzAsMV0gb3IgYWJzb2x1dGUgcGl4ZWwgdmFsdWUuXG4gICAqL1xuICBASW5wdXQoe2FsaWFzOiAnd2JWaWV3RHJvcFpvbmVTaXplJywgcmVxdWlyZWQ6IHRydWV9KSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgcHVibGljIGRyb3Bab25lU2l6ZSA9IC41O1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIHZpc3VhbCBwbGFjZWhvbGRlciB3aGVuIGRyYWdnaW5nIGEgdmlldyBvdmVyIGEgZHJvcCB6b25lLlxuICAgKiBDYW4gYmUgYSBwZXJjZW50YWdlIHZhbHVlIFswLDFdIG9yIGFic29sdXRlIHBpeGVsIHZhbHVlLiBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byB7QGxpbmsgZHJvcFpvbmVTaXplfS5cbiAgICovXG4gIEBJbnB1dCgnd2JWaWV3RHJvcFpvbmVQbGFjZWhvbGRlclNpemUnKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgcHVibGljIGRyb3BQbGFjZWhvbGRlclNpemU/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHVwb24gYSB2aWV3IGRyb3AgYWN0aW9uLlxuICAgKi9cbiAgQE91dHB1dCgnd2JWaWV3RHJvcFpvbmVEcm9wJykgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LXJlbmFtZVxuICBwdWJsaWMgdmlld0Ryb3AgPSBuZXcgRXZlbnRFbWl0dGVyPFdiVmlld0Ryb3BFdmVudD4oKTtcblxuICBjb25zdHJ1Y3Rvcihob3N0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlld0RyYWdTZXJ2aWNlOiBWaWV3RHJhZ1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3ZpZXdEcm9wUGxhY2Vob2xkZXJSZW5kZXJlcjogVmlld0Ryb3BQbGFjZWhvbGRlclJlbmRlcmVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF96b25lOiBOZ1pvbmUpIHtcbiAgICB0aGlzLl9ob3N0ID0gaG9zdC5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuaW5zdGFsbERyb3Bab25lcygpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlSG9zdEVsZW1lbnRQb3NpdGlvbmVkKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5zdGFsbHMgYSBkcm9wIHpvbmUgZm9yIGVhY2ggc3BlY2lmaWVkIHJlZ2lvbi5cbiAgICpcbiAgICogLSBET00gZWxlbWVudHMgZm9yIGRyb3Agem9uZXMgYXJlIGNyZWF0ZWQgbGF6aWx5IHdoZW4gZHJhZ2dpbmcgYSB2aWV3IG92ZXIgdGhlIGhvc3QgZWxlbWVudC5cbiAgICogLSBXaGVuIGRyYWdnaW5nIGEgdmlldyBvdmVyIGEgZHJvcCB6b25lLCByZW5kZXJzIHRoZSBkcm9wIHBsYWNlaG9sZGVyIHVzaW5nIHRoZSB7QGxpbmsgVmlld0Ryb3BQbGFjZWhvbGRlclJlbmRlcmVyfS5cbiAgICovXG4gIHByaXZhdGUgaW5zdGFsbERyb3Bab25lcygpOiB2b2lkIHtcbiAgICBjb25zdCBkaXNwb3NhYmxlcyA9IG5ldyBBcnJheTxEaXNwb3NlRm4+KCk7XG5cbiAgICAvLyBDcmVhdGUgZHJvcCB6b25lcyB3aGVuIGVudGVyaW5nIHRoZSBob3N0IGVsZW1lbnQuXG4gICAgdGhpcy5fdmlld0RyYWdTZXJ2aWNlLnZpZXdEcmFnJCh0aGlzLl9ob3N0LCB7ZXZlbnRUeXBlOiAnZHJhZ2VudGVyJ30pXG4gICAgICAucGlwZShcbiAgICAgICAgc3Vic2NyaWJlSW4oZm4gPT4gdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcihmbikpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMucmVnaW9ucyB8fCB0aGlzLnJlZ2lvbnMuY2VudGVyKSB7XG4gICAgICAgICAgZGlzcG9zYWJsZXMucHVzaCguLi50aGlzLmNyZWF0ZURyb3Bab25lKCdjZW50ZXInKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnJlZ2lvbnMgfHwgdGhpcy5yZWdpb25zLm5vcnRoKSB7XG4gICAgICAgICAgZGlzcG9zYWJsZXMucHVzaCguLi50aGlzLmNyZWF0ZURyb3Bab25lKCdub3J0aCcpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMucmVnaW9ucyB8fCB0aGlzLnJlZ2lvbnMuc291dGgpIHtcbiAgICAgICAgICBkaXNwb3NhYmxlcy5wdXNoKC4uLnRoaXMuY3JlYXRlRHJvcFpvbmUoJ3NvdXRoJykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5yZWdpb25zIHx8IHRoaXMucmVnaW9ucy53ZXN0KSB7XG4gICAgICAgICAgZGlzcG9zYWJsZXMucHVzaCguLi50aGlzLmNyZWF0ZURyb3Bab25lKCd3ZXN0JykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5yZWdpb25zIHx8IHRoaXMucmVnaW9ucy5lYXN0KSB7XG4gICAgICAgICAgZGlzcG9zYWJsZXMucHVzaCguLi50aGlzLmNyZWF0ZURyb3Bab25lKCdlYXN0JykpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIC8vIERpc3Bvc2UgZHJvcCB6b25lcyB3aGVuIGxlYXZpbmcgdGhlIGhvc3QgZWxlbWVudCwgb3Igd2hlbiB0aGUgZHJhZyBvcGVyYXRpb24gY29tcGxldGVzLlxuICAgIHRoaXMuX3ZpZXdEcmFnU2VydmljZS52aWV3RHJhZyQodGhpcy5faG9zdCwge2V2ZW50VHlwZTogWydkcmFnbGVhdmUnLCAnZHJvcCddfSlcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGRpc3Bvc2FibGVzLmZvckVhY2goZGlzcG9zZUZuID0+IGRpc3Bvc2VGbigpKTtcbiAgICAgICAgZGlzcG9zYWJsZXMubGVuZ3RoID0gMDtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIGRyb3Agem9uZSBmb3IgdGhlIHNwZWNpZmllZCByZWdpb24uXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZURyb3Bab25lKHJlZ2lvbjogJ25vcnRoJyB8ICdlYXN0JyB8ICdzb3V0aCcgfCAnd2VzdCcgfCAnY2VudGVyJyk6IERpc3Bvc2VGbltdIHtcbiAgICBjb25zdCBkcm9wWm9uZUluc2V0ID0gdGhpcy5jYWxjdWxhdGVJbnNldChyZWdpb24sIHRoaXMuZHJvcFpvbmVTaXplKTtcbiAgICBjb25zdCBkcm9wUGxhY2Vob2xkZXJJbnNldCA9IHRoaXMuY2FsY3VsYXRlSW5zZXQocmVnaW9uLCB0aGlzLmRyb3BQbGFjZWhvbGRlclNpemUgPz8gdGhpcy5kcm9wWm9uZVNpemUpO1xuICAgIGNvbnN0IGRpc3Bvc2UkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgZHJvcCB6b25lIEhUTUwgZWxlbWVudC5cbiAgICBjb25zdCBkcm9wWm9uZUVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCB7XG4gICAgICBwYXJlbnQ6IHRoaXMuX2hvc3QsXG4gICAgICBjc3NDbGFzczogWydlMmUtdmlldy1kcm9wLXpvbmUnLCBgZTJlLSR7cmVnaW9ufWAsIC4uLkFycmF5cy5jb2VyY2UodGhpcy5jc3NDbGFzcyldLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIHRvcDogYCR7ZHJvcFpvbmVJbnNldC50b3B9cHhgLFxuICAgICAgICByaWdodDogYCR7ZHJvcFpvbmVJbnNldC5yaWdodH1weGAsXG4gICAgICAgIGJvdHRvbTogYCR7ZHJvcFpvbmVJbnNldC5ib3R0b219cHhgLFxuICAgICAgICBsZWZ0OiBgJHtkcm9wWm9uZUluc2V0LmxlZnR9cHhgLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEluc3RhbGwgZHJhZyBsaXN0ZW5lciB0byByZW5kZXIgdGhlIGRyb3AgcGxhY2Vob2xkZXIgYW5kIGhhbmRsZSBkcm9wLlxuICAgIHRoaXMuX3ZpZXdEcmFnU2VydmljZS52aWV3RHJhZyQoZHJvcFpvbmVFbGVtZW50LCB7ZXZlbnRUeXBlOiBbJ2RyYWdlbnRlcicsICdkcmFnb3ZlcicsICdkcm9wJ119KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN1YnNjcmliZUluKGZuID0+IHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoZm4pKSxcbiAgICAgICAgdGFrZVVudGlsKGRpc3Bvc2UkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcbiAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnZHJhZ2VudGVyJzpcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdEcm9wUGxhY2Vob2xkZXJSZW5kZXJlci51cGRhdGVQb3NpdGlvbih0aGlzLl9ob3N0LCBkcm9wUGxhY2Vob2xkZXJJbnNldCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdkcmFnb3Zlcic6XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBhbGxvdyB2aWV3IGRyb3BcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2Ryb3AnOlxuICAgICAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4gdGhpcy52aWV3RHJvcC5lbWl0KHtcbiAgICAgICAgICAgICAgZHJvcFJlZ2lvbjogcmVnaW9uLFxuICAgICAgICAgICAgICBkcmFnRGF0YTogdGhpcy5fdmlld0RyYWdTZXJ2aWNlLnZpZXdEcmFnRGF0YSgpISxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIC8vIERpc2FibGUgdGhlIGRyb3Agem9uZSB3aGVuIGRyYWdnaW5nIG92ZXIgdGhlIHRhYiBiYXIsIGFsbG93aW5nIHRoZSB1c2VyIHRvIGNoYW5nZSB0aGUgdGFiIG9yZGVyIGV2ZW4gZm9yIHRhYnMgY292ZXJlZCBieSB0aGUgZHJvcCB6b25lLlxuICAgIHRoaXMuX3ZpZXdEcmFnU2VydmljZS50YWJiYXJEcmFnT3ZlciRcbiAgICAgIC5waXBlKFxuICAgICAgICBzdWJzY3JpYmVJbihmbiA9PiB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKGZuKSksXG4gICAgICAgIHRha2VVbnRpbChkaXNwb3NlJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGRyYWdPdmVyVGFiYmFyID0+IHtcbiAgICAgICAgaWYgKGRyYWdPdmVyVGFiYmFyKSB7XG4gICAgICAgICAgc2V0U3R5bGUoZHJvcFpvbmVFbGVtZW50LCB7J3BvaW50ZXItZXZlbnRzJzogJ25vbmUnfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgc2V0U3R5bGUoZHJvcFpvbmVFbGVtZW50LCB7J3BvaW50ZXItZXZlbnRzJzogbnVsbH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHJldHVybiBbXG4gICAgICAoKSA9PiBkaXNwb3NlJC5uZXh0KCksXG4gICAgICAoKSA9PiBkcm9wWm9uZUVsZW1lbnQucmVtb3ZlKCksXG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBpbnNldCBmb3IgdGhlIGRyb3AgcmVnaW9uIGJhc2VkIG9uIHRoZSBnaXZlbiBzaXplLlxuICAgKlxuICAgKiBJZiBwYXNzaW5nIGEgcmF0aW8gWzAsMV0gZm9yIHRoZSBzaXplLCB0aGUgc2l6ZSBpcyBpbnRlcnByZXRlZCBhcyBhIHBlcmNlbnRhZ2UgdmFsdWUgcmVsYXRpdmUgdG8gdGhlIHNpemUgb2YgdGhlIGhvc3QgZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgY2FsY3VsYXRlSW5zZXQocmVnaW9uOiAnbm9ydGgnIHwgJ2Vhc3QnIHwgJ3NvdXRoJyB8ICd3ZXN0JyB8ICdjZW50ZXInLCBzaXplOiBudW1iZXIpOiBJbnNldCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvcDogcmVnaW9uID09PSAnc291dGgnID8gdGhpcy5faG9zdC5jbGllbnRIZWlnaHQgLSBjb2VyY2VQaXhlbFZhbHVlKHNpemUsIHtjb250YWluZXJTaXplOiB0aGlzLl9ob3N0LmNsaWVudEhlaWdodH0pIDogMCxcbiAgICAgIHJpZ2h0OiByZWdpb24gPT09ICd3ZXN0JyA/IHRoaXMuX2hvc3QuY2xpZW50V2lkdGggLSBjb2VyY2VQaXhlbFZhbHVlKHNpemUsIHtjb250YWluZXJTaXplOiB0aGlzLl9ob3N0LmNsaWVudFdpZHRofSkgOiAwLFxuICAgICAgYm90dG9tOiByZWdpb24gPT09ICdub3J0aCcgPyB0aGlzLl9ob3N0LmNsaWVudEhlaWdodCAtIGNvZXJjZVBpeGVsVmFsdWUoc2l6ZSwge2NvbnRhaW5lclNpemU6IHRoaXMuX2hvc3QuY2xpZW50SGVpZ2h0fSkgOiAwLFxuICAgICAgbGVmdDogcmVnaW9uID09PSAnZWFzdCcgPyB0aGlzLl9ob3N0LmNsaWVudFdpZHRoIC0gY29lcmNlUGl4ZWxWYWx1ZShzaXplLCB7Y29udGFpbmVyU2l6ZTogdGhpcy5faG9zdC5jbGllbnRXaWR0aH0pIDogMCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVIb3N0RWxlbWVudFBvc2l0aW9uZWQoKTogdm9pZCB7XG4gICAgaWYgKGdldENvbXB1dGVkU3R5bGUodGhpcy5faG9zdCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgICBzZXRTdHlsZSh0aGlzLl9ob3N0LCB7J3Bvc2l0aW9uJzogJ3JlbGF0aXZlJ30pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENvZXJjZXMgZ2l2ZW4gdmFsdWUgdG8gYSBDU1MgcGl4ZWwgdmFsdWUuXG4gKlxuICogSWYgcGFzc2luZyBhIHJhdGlvIFswLDFdLCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIHBlcmNlbnRhZ2UgdmFsdWUgcmVsYXRpdmUgdG8gdGhlIHNpemUgb2YgdGhlIGNvbnRhaW5lci5cbiAqL1xuZnVuY3Rpb24gY29lcmNlUGl4ZWxWYWx1ZShwaXhlbE9yUmF0aW86IG51bWJlciwgb3B0aW9uczoge2NvbnRhaW5lclNpemU6IG51bWJlcn0pOiBudW1iZXIge1xuICByZXR1cm4gKHBpeGVsT3JSYXRpbyA8PSAxKSA/IG9wdGlvbnMuY29udGFpbmVyU2l6ZSAqIHBpeGVsT3JSYXRpbyA6IHBpeGVsT3JSYXRpbztcbn1cblxuLyoqXG4gKiBFdmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hlbiBkcm9wcGluZyBhIHZpZXcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2JWaWV3RHJvcEV2ZW50IHtcbiAgZHJvcFJlZ2lvbjogJ25vcnRoJyB8ICdlYXN0JyB8ICdzb3V0aCcgfCAnd2VzdCcgfCAnY2VudGVyJztcbiAgZHJhZ0RhdGE6IFZpZXdEcmFnRGF0YTtcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHJlZ2lvbnMgd2hlcmUgYSBkcm9wIHpvbmUgc2hvdWxkIGJlIGluc3RhbGxlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEcm9wWm9uZVJlZ2lvbiB7XG4gIG5vcnRoOiBib29sZWFuO1xuICBzb3V0aDogYm9vbGVhbjtcbiAgd2VzdDogYm9vbGVhbjtcbiAgZWFzdDogYm9vbGVhbjtcbiAgY2VudGVyOiBib29sZWFuO1xufVxuXG4vKipcbiAqIERpc3RhbmNlIGJldHdlZW4gYW4gZWxlbWVudCBhbmQgdGhlIHBhcmVudCBlbGVtZW50LlxuICovXG5pbnRlcmZhY2UgSW5zZXQge1xuICB0b3A6IG51bWJlcjtcbiAgcmlnaHQ6IG51bWJlcjtcbiAgYm90dG9tOiBudW1iZXI7XG4gIGxlZnQ6IG51bWJlcjtcbn1cblxudHlwZSBEaXNwb3NlRm4gPSAoKSA9PiB2b2lkO1xuIl19
@@ -7,18 +7,18 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { Injectable, Injector } from '@angular/core';
10
+ import { ApplicationRef, ComponentFactoryResolver, computed, inject, Injectable, Injector, NgZone, signal } from '@angular/core';
11
11
  import { take } from 'rxjs/operators';
12
12
  import { createElement, setStyle } from '../common/dom.util';
13
+ import { ViewDragService } from './view-drag.service';
13
14
  import { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';
14
- import { subscribeInside } from '@scion/toolkit/operators';
15
+ import { subscribeIn } from '@scion/toolkit/operators';
15
16
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
16
17
  import { ViewTabDragImageComponent } from '../part/view-tab-drag-image/view-tab-drag-image.component';
17
- import { of } from 'rxjs';
18
18
  import { WorkbenchView } from '../view/workbench-view.model';
19
19
  import { VIEW_TAB_RENDERING_CONTEXT } from '../workbench.constants';
20
+ import { throwError } from '../common/throw-error.util';
20
21
  import * as i0 from "@angular/core";
21
- import * as i1 from "./view-drag.service";
22
22
  /**
23
23
  * Renders a drag image during a view drag operation.
24
24
  *
@@ -26,14 +26,13 @@ import * as i1 from "./view-drag.service";
26
26
  * For instance, allows snapping the view tab into the view tab bar (drop zone) when being dragged over.
27
27
  */
28
28
  export class ViewTabDragImageRenderer {
29
- constructor(_viewDragService,
30
- // TODO [Angular 18][https://github.com/angular/components/issues/24334] Alternative constructor (ComponentFactoryResolver is deprecated)
31
- _componentFactoryResolver, _applicationRef, _injector, _zone) {
32
- this._viewDragService = _viewDragService;
33
- this._componentFactoryResolver = _componentFactoryResolver;
34
- this._applicationRef = _applicationRef;
35
- this._injector = _injector;
36
- this._zone = _zone;
29
+ constructor() {
30
+ this._viewDragService = inject(ViewDragService);
31
+ // TODO [Angular 19][https://github.com/angular/components/issues/24334] Alternative constructor (ComponentFactoryResolver is deprecated)
32
+ this._componentFactoryResolver = inject(ComponentFactoryResolver);
33
+ this._applicationRef = inject(ApplicationRef);
34
+ this._injector = inject(Injector);
35
+ this._zone = inject(NgZone);
37
36
  this._viewDragImagePortalOutlet = null;
38
37
  this._constrainDragImageRectFn = null;
39
38
  this.installWindowViewDragListener();
@@ -55,6 +54,9 @@ export class ViewTabDragImageRenderer {
55
54
  onWindowDragStart(event) {
56
55
  this.createDragImage(event);
57
56
  }
57
+ onWindowDragEnd() {
58
+ this.disposeDragImage();
59
+ }
58
60
  /**
59
61
  * Method invoked when dragging a view into the current window. It is invoked outside the Angular zone.
60
62
  *
@@ -68,7 +70,7 @@ export class ViewTabDragImageRenderer {
68
70
  * Method invoked while dragging a view over the current window. It is invoked outside the Angular zone.
69
71
  */
70
72
  onWindowDragOver(event) {
71
- const dragPosition = this.calculateDragImageRect(this._viewDragService.viewDragData, event);
73
+ const dragPosition = this.calculateDragImageRect(this._viewDragService.viewDragData(), event);
72
74
  // update the drag image position
73
75
  setStyle(this._viewDragImagePortalOutlet.outletElement, {
74
76
  left: `${dragPosition.x}px`,
@@ -99,7 +101,7 @@ export class ViewTabDragImageRenderer {
99
101
  if (this._viewDragImagePortalOutlet) {
100
102
  return;
101
103
  }
102
- const dragData = this._viewDragService.viewDragData;
104
+ const dragData = this._viewDragService.viewDragData();
103
105
  const dragPosition = this.calculateDragImageRect(dragData, event);
104
106
  // create the drag image
105
107
  const outletElement = createElement('div', {
@@ -124,24 +126,19 @@ export class ViewTabDragImageRenderer {
124
126
  componentRef.changeDetectorRef.detectChanges();
125
127
  }
126
128
  disposeDragImage() {
127
- this._viewDragImagePortalOutlet.dispose();
129
+ this._viewDragImagePortalOutlet?.dispose();
128
130
  this._viewDragImagePortalOutlet = null;
129
131
  }
130
132
  /**
131
133
  * Calculates client position and dimension for the drag image, accounting for any constraints.
132
134
  */
133
135
  calculateDragImageRect(dragData, event) {
134
- const rect = new ViewDragImageRect({
135
- x: event.clientX - dragData.viewTabPointerOffsetX,
136
- y: event.clientY - dragData.viewTabPointerOffsetY,
137
- height: dragData.viewTabHeight,
138
- width: dragData.viewTabWidth,
139
- });
136
+ const rect = new DOMRect(event.clientX - dragData.viewTabPointerOffsetX, event.clientY - dragData.viewTabPointerOffsetY, dragData.viewTabWidth, dragData.viewTabHeight);
140
137
  return this._constrainDragImageRectFn ? this._constrainDragImageRectFn(rect) : rect;
141
138
  }
142
139
  installWindowViewDragListener() {
143
140
  this._viewDragService.viewDrag$(window)
144
- .pipe(subscribeInside(fn => this._zone.runOutsideAngular(fn)), takeUntilDestroyed())
141
+ .pipe(subscribeIn(fn => this._zone.runOutsideAngular(fn)), takeUntilDestroyed())
145
142
  .subscribe((event) => {
146
143
  switch (event.type) {
147
144
  case 'dragstart':
@@ -159,53 +156,40 @@ export class ViewTabDragImageRenderer {
159
156
  case 'drop':
160
157
  this.onWindowDrop();
161
158
  break;
159
+ case 'dragend':
160
+ this.onWindowDragEnd();
161
+ break;
162
162
  }
163
163
  });
164
164
  }
165
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewTabDragImageRenderer, deps: [{ token: i1.ViewDragService }, { token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
166
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewTabDragImageRenderer, providedIn: 'root' }); }
165
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabDragImageRenderer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
166
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabDragImageRenderer, providedIn: 'root' }); }
167
167
  }
168
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewTabDragImageRenderer, decorators: [{
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabDragImageRenderer, decorators: [{
169
169
  type: Injectable,
170
170
  args: [{ providedIn: 'root' }]
171
- }], ctorParameters: () => [{ type: i1.ViewDragService }, { type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }, { type: i0.NgZone }] });
172
- /**
173
- * Represents the position and dimension of the drag image.
174
- */
175
- export class ViewDragImageRect {
176
- constructor(rect) {
177
- Object.assign(this, rect);
178
- }
179
- get left() {
180
- return this.x;
181
- }
182
- get right() {
183
- return this.x + this.width;
184
- }
185
- }
171
+ }], ctorParameters: () => [] });
186
172
  class DragImageWorkbenchView {
187
173
  constructor(dragData) {
188
174
  this.destroyed = false;
189
- this.active$ = of(true);
190
- this.active = true;
175
+ this.active = signal(true).asReadonly();
191
176
  this.blocked = false;
192
- this.cssClass = [];
193
- this.state = {};
194
- this.first = true;
195
- this.last = true;
196
- this.position = 0;
197
- this.scrolledIntoView = true;
177
+ this.cssClass = signal([]).asReadonly();
178
+ this.first = signal(true).asReadonly();
179
+ this.last = signal(true).asReadonly();
180
+ this.position = signal(0).asReadonly();
181
+ this.scrolledIntoView = signal(true).asReadonly();
198
182
  this.id = dragData.viewId;
199
183
  this.alternativeId = dragData.alternativeViewId;
200
- this.navigationHint = dragData.navigationHint;
201
- this.title = dragData.viewTitle;
202
- this.heading = dragData.viewHeading;
203
- this.closable = dragData.viewClosable;
204
- this.dirty = dragData.viewDirty;
205
- this.urlSegments = dragData.viewUrlSegments;
206
- }
207
- get part() {
208
- throw Error('[UnsupportedOperationError]');
184
+ this.part = computed(() => throwError('UnsupportedOperationError'));
185
+ this.navigationHint = signal(dragData.navigationHint).asReadonly();
186
+ this.navigationData = signal(dragData.navigationData ?? {}).asReadonly();
187
+ this.navigationState = signal({}).asReadonly();
188
+ this.title = signal(dragData.viewTitle).asReadonly();
189
+ this.heading = signal(dragData.viewHeading).asReadonly();
190
+ this.dirty = signal(dragData.viewDirty).asReadonly();
191
+ this.closable = signal(dragData.viewClosable).asReadonly();
192
+ this.urlSegments = signal(dragData.viewUrlSegments).asReadonly();
209
193
  }
210
194
  close() {
211
195
  throw Error('[UnsupportedOperationError]');
@@ -219,5 +203,8 @@ class DragImageWorkbenchView {
219
203
  activate() {
220
204
  throw Error('[UnsupportedOperationError]');
221
205
  }
206
+ canClose(canClose) {
207
+ throw Error('[UnsupportedOperationError]');
208
+ }
222
209
  }
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10YWItZHJhZy1pbWFnZS1yZW5kZXJlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvdmlldy1kbmQvdmlldy10YWItZHJhZy1pbWFnZS1yZW5kZXJlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUEyQyxVQUFVLEVBQUUsUUFBUSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwQyxPQUFPLEVBQUMsYUFBYSxFQUFFLFFBQVEsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRTNELE9BQU8sRUFBQyxlQUFlLEVBQUUsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHeEIsT0FBTyxFQUFTLGFBQWEsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBQywwQkFBMEIsRUFBMEIsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBTTNGOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLHdCQUF3QjtJQUtuQyxZQUFvQixnQkFBaUM7SUFDekMseUlBQXlJO0lBQ2pJLHlCQUFtRCxFQUNuRCxlQUErQixFQUMvQixTQUFtQixFQUNuQixLQUFhO1FBTGIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUVqQyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTBCO1FBQ25ELG9CQUFlLEdBQWYsZUFBZSxD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LFFBQTJCO1FBQ2pELE1BQU0sS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVNLFFBQVE7UUFDYixNQUFNLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBJbmplY3RhYmxlLCBJbmplY3RvciwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtjcmVhdGVFbGVtZW50LCBzZXRTdHlsZX0gZnJvbSAnLi4vY29tbW9uL2RvbS51dGlsJztcbmltcG9ydCB7Vmlld0RyYWdEYXRhLCBWaWV3RHJhZ1NlcnZpY2V9IGZyb20gJy4vdmlldy1kcmFnLnNlcnZpY2UnO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWwsIERvbVBvcnRhbE91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge3N1YnNjcmliZUluc2lkZX0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb3BlcmF0b3JzJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1ZpZXdUYWJEcmFnSW1hZ2VDb21wb25lbnR9IGZyb20gJy4uL3BhcnQvdmlldy10YWItZHJhZy1pbWFnZS92aWV3LXRhYi1kcmFnLWltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQge29mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7VXJsU2VnbWVudH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7V29ya2JlbmNoTWVudUl0ZW19IGZyb20gJy4uL3dvcmtiZW5jaC5tb2RlbCc7XG5pbXBvcnQge1ZpZXdJZCwgV29ya2JlbmNoVmlld30gZnJvbSAnLi4vdmlldy93b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5pbXBvcnQge1ZJRVdfVEFCX1JFTkRFUklOR19DT05URVhULCBWaWV3VGFiUmVuZGVyaW5nQ29udGV4dH0gZnJvbSAnLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5pbXBvcnQge1dvcmtiZW5jaFBhcnR9IGZyb20gJy4uL3BhcnQvd29ya2JlbmNoLXBhcnQubW9kZWwnO1xuaW1wb3J0IHtEaXNwb3NhYmxlfSBmcm9tICcuLi9jb21tb24vZGlzcG9zYWJsZSc7XG5cbmV4cG9ydCB0eXBlIENvbnN0cmFpbkZuID0gKHJlY3Q6IFZpZXdEcmFnSW1hZ2VSZWN0KSA9PiBWaWV3RHJhZ0ltYWdlUmVjdDtcblxuLyoqXG4gKiBSZW5kZXJzIGEgZHJhZyBpbWFnZSBkdXJpbmcgYSB2aWV3IGRyYWcgb3BlcmF0aW9uLlxuICpcbiAqIFVubGlrZSB3aGVuIHVzaW5nIHRoZSBuYXRpdmUgZHJhZyBpbWFnZSBzdXBwb3J0LCBpdCBhbGxvd3MgY29udHJvbGxpbmcgdGhlIGRyYWcgaW1hZ2UgcG9zaXRpb24gYW5kIGl0cyBzaXplIGR1cmluZyB0aGUgZHJhZyBvcGVyYXRpb24uXG4gKiBGb3IgaW5zdGFuY2UsIGFsbG93cyBzbmFwcGluZyB0aGUgdmlldyB0YWIgaW50byB0aGUgdmlldyB0YWIgYmFyIChkcm9wIHpvbmUpIHdoZW4gYmVpbmcgZHJhZ2dlZCBvdmVyLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBWaWV3VGFiRHJhZ0ltYWdlUmVuZGVyZXIge1xuXG4gIHByaXZhdGUgX3ZpZXdEcmFnSW1hZ2VQb3J0YWxPdXRsZXQ6IERvbVBvcnRhbE91dGxldCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9jb25zdHJhaW5EcmFnSW1hZ2VSZWN0Rm46ICgocmVjdDogVmlld0RyYWdJbWFnZVJlY3QpID0+IFZpZXdEcmFnSW1hZ2VSZWN0KSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3ZpZXdEcmFnU2VydmljZTogVmlld0RyYWdTZXJ2aWNlLFxuICAgICAgICAgICAgICAvLyBUT0RPIFtBbmd1bGFyIDE4XVtodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2lzc3Vlcy8yNDMzNF0gQWx0ZXJuYXRpdmUgY29uc3RydWN0b3IgKENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciBpcyBkZXByZWNhdGVkKVxuICAgICAgICAgICAgICBwcml2YXRlIF9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMuaW5zdGFsbFdpbmRvd1ZpZXdEcmFnTGlzdGVuZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gY29uc3RyYWluIHRoZSBwb3NpdGlvbiBhbmQgZGltZW5zaW9uIG9mIHRoZSBkcmFnIGltYWdlIGR1cmluZyBhIHZpZXcgZHJhZyBvcGVyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgc2V0Q29uc3RyYWluRHJhZ0ltYWdlUmVjdEZuKGZuOiAocmVjdDogVmlld0RyYWdJbWFnZVJlY3QpID0+IFZpZXdEcmFnSW1hZ2VSZWN0KTogdm9pZCB7XG4gICAgdGhpcy5fY29uc3RyYWluRHJhZ0ltYWdlUmVjdEZuID0gZm47XG4gIH1cblxuICAvKipcbiAgICogVW5zZXRzIHRoZSBkcmFnIGltYWdlIGNvbnN0cmFpbiBmdW5jdGlvbiwgaWYgcmVnaXN0ZXJlZC5cbiAgICovXG4gIHB1YmxpYyB1bnNldENvbnN0cmFpbkRyYWdJbWFnZVJlY3RGbihmbjogKHJlY3Q6IFZpZXdEcmFnSW1hZ2VSZWN0KSA9PiBWaWV3RHJhZ0ltYWdlUmVjdCk6IHZvaWQge1xuICAgIGlmIChmbiA9PT0gdGhpcy5fY29uc3RyYWluRHJhZ0ltYWdlUmVjdEZuKSB7XG4gICAgICB0aGlzLl9jb25zdHJhaW5EcmFnSW1hZ2VSZWN0Rm4gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25XaW5kb3dEcmFnU3RhcnQoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlRHJhZ0ltYWdlKGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgaW52b2tlZCB3aGVuIGRyYWdnaW5nIGEgdmlldyBpbnRvIHRoZSBjdXJyZW50IHdpbmRvdy4gSXQgaXMgaW52b2tlZCBvdXRzaWRlIHRoZSBBbmd1bGFyIHpvbmUuXG4gICAqXG4gICAqIElmIHRoZSB1c2VyIHN0YXJ0cyB0aGUgZHJhZyBvcGVyYXRpb24gaW4gdGhlIGN1cnJlbnQgd2luZG93LCB0aGlzIG1ldGhvZCBpcyBpbnZva2VkIGltbWVkaWF0ZWx5LFxuICAgKiBvciB3aGVuIGRyYWdnaW5nIHRoZSB2aWV3IHRhYiBpbnRvIHRoaXMgd2luZG93IGlmIHN0YXJ0ZWQgdGhlIGRyYWcgb3BlcmF0aW9uIGluIGFub3RoZXIgd2luZG93LlxuICAgKi9cbiAgcHJpdmF0ZSBvbldpbmRvd0RyYWdFbnRlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGVEcmFnSW1hZ2UoZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBpbnZva2VkIHdoaWxlIGRyYWdnaW5nIGEgdmlldyBvdmVyIHRoZSBjdXJyZW50IHdpbmRvdy4gSXQgaXMgaW52b2tlZCBvdXRzaWRlIHRoZSBBbmd1bGFyIHpvbmUuXG4gICAqL1xuICBwcml2YXRlIG9uV2luZG93RHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGRyYWdQb3NpdGlvbiA9IHRoaXMuY2FsY3VsYXRlRHJhZ0ltYWdlUmVjdCh0aGlzLl92aWV3RHJhZ1NlcnZpY2Uudmlld0RyYWdEYXRhISwgZXZlbnQpO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBkcmFnIGltYWdlIHBvc2l0aW9uXG4gICAgc2V0U3R5bGUodGhpcy5fdmlld0RyYWdJbWFnZVBvcnRhbE91dGxldCEub3V0bGV0RWxlbWVudCBhcyBIVE1MRWxlbWVudCwge1xuICAgICAgbGVmdDogYCR7ZHJhZ1Bvc2l0aW9uLnh9cHhgLFxuICAgICAgdG9wOiBgJHtkcmFnUG9zaXRpb24ueX1weGAsXG4gICAgICBoZWlnaHQ6IGAke2RyYWdQb3NpdGlvbi5oZWlnaHR9cHhgLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBpbnZva2VkIHdoZW4gdGhlIGRyYWcgb3BlcmF0aW9uIGVuZHMgZm9yIHRoZSBjdXJyZW50IHdpbmRvdywgd2hpY2ggaXMgd2hlbiB0aGUgdXNlciBkcmFncyB0aGUgdmlldyB0YWIgb3V0c2lkZSBvZlxuICAgKiB0aGUgY3VycmVudCB3aW5kb3cgb3Igd2hlbiB0aGUgdXNlciBjYW5jZWxzIHRoZSBkcmFnIG9wZXJhdGlvbiAoZS5nLiwgYnkgcHJlc3NpbmcgdGhlIGVzY2FwZSBrZXkpLlxuICAgKi9cbiAgcHJpdmF0ZSBvbldpbmRvd0RyYWdMZWF2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3Bvc2VEcmFnSW1hZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgaW52b2tlZCB3aGVuIHRoZSBkcmFnIG9wZXJhdGlvbiBlbmRzIGZvciB0aGUgY3VycmVudCB3aW5kb3cgd2hpY2ggaXMgd2hlbiB0aGUgdXNlciBkcm9wcyB0aGUgdmlldy5cbiAgICovXG4gIHByaXZhdGUgb25XaW5kb3dEcm9wKCk6IHZvaWQge1xuICAgIC8vIFdhaXQgZm9yIHRoZSB6b25lIHRvIHN0YWJpbGl6ZSBiZWZvcmUgZGlzcG9zaW5nIHRoZSB0YWIgZHJhZyBpbWFnZS4gT3RoZXJ3aXNlLCB0aGUgdGFiYmFyIHdvdWxkIGZsaWNrZXJcbiAgICAvLyBiZWNhdXNlIHRoZSB0YWIgaGFzIG5vdCB5ZXQgYmVlbiByZW5kZXJlZCBhdCBpdHMgbmV3IHBvc2l0aW9uLlxuICAgIHRoaXMuX3pvbmUub25TdGFibGVcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5kaXNwb3NlRHJhZ0ltYWdlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRHJhZ0ltYWdlKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmlld0RyYWdJbWFnZVBvcnRhbE91dGxldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRyYWdEYXRhID0gdGhpcy5fdmlld0RyYWdTZXJ2aWNlLnZpZXdEcmFnRGF0YSE7XG4gICAgY29uc3QgZHJhZ1Bvc2l0aW9uID0gdGhpcy5jYWxjdWxhdGVEcmFnSW1hZ2VSZWN0KGRyYWdEYXRhLCBldmVudCk7XG5cbiAgICAvLyBjcmVhdGUgdGhlIGRyYWcgaW1hZ2VcbiAgICBjb25zdCBvdXRsZXRFbGVtZW50ID0gY3JlYXRlRWxlbWVudCgnZGl2Jywge1xuICAgICAgcGFyZW50OiBkb2N1bWVudC5ib2R5LFxuICAgICAgY3NzQ2xhc3M6ICd3Yi12aWV3LXRhYi1kcmFnLWltYWdlJyxcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGxlZnQ6IGAke2RyYWdQb3NpdGlvbi54fXB4YCxcbiAgICAgICAgdG9wOiBgJHtkcmFnUG9zaXRpb24ueX1weGAsXG4gICAgICAgIHdpZHRoOiBgJHtkcmFnUG9zaXRpb24ud2lkdGh9cHhgLFxuICAgICAgICBoZWlnaHQ6IGAke2RyYWdQb3NpdGlvbi5oZWlnaHR9cHhgLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLl92aWV3RHJhZ0ltYWdlUG9ydGFsT3V0bGV0ID0gbmV3IERvbVBvcnRhbE91dGxldChvdXRsZXRFbGVtZW50LCB0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHRoaXMuX2FwcGxpY2F0aW9uUmVmLCB0aGlzLl9pbmplY3Rvcik7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5fdmlld0RyYWdJbWFnZVBvcnRhbE91dGxldC5hdHRhY2hDb21wb25lbnRQb3J0YWwobmV3IENvbXBvbmVudFBvcnRhbChWaWV3VGFiRHJhZ0ltYWdlQ29tcG9uZW50LCBudWxsLCBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiB0aGlzLl9pbmplY3RvcixcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7cHJvdmlkZTogV29ya2JlbmNoVmlldywgdXNlVmFsdWU6IG5ldyBEcmFnSW1hZ2VXb3JrYmVuY2hWaWV3KGRyYWdEYXRhKX0sXG4gICAgICAgIHtwcm92aWRlOiBWSUVXX1RBQl9SRU5ERVJJTkdfQ09OVEVYVCwgdXNlVmFsdWU6ICdkcmFnLWltYWdlJyBzYXRpc2ZpZXMgVmlld1RhYlJlbmRlcmluZ0NvbnRleHR9LFxuICAgICAgXSxcbiAgICB9KSkpO1xuICAgIC8vIERldGVjdCBmb3IgY2hhbmdlcyBiZWNhdXNlIGNvbnN0cnVjdGVkIG91dHNpZGUgb2YgQW5ndWxhci5cbiAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwb3NlRHJhZ0ltYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuX3ZpZXdEcmFnSW1hZ2VQb3J0YWxPdXRsZXQhLmRpc3Bvc2UoKTtcbiAgICB0aGlzLl92aWV3RHJhZ0ltYWdlUG9ydGFsT3V0bGV0ID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIGNsaWVudCBwb3NpdGlvbiBhbmQgZGltZW5zaW9uIGZvciB0aGUgZHJhZyBpbWFnZSwgYWNjb3VudGluZyBmb3IgYW55IGNvbnN0cmFpbnRzLlxuICAgKi9cbiAgcHVibGljIGNhbGN1bGF0ZURyYWdJbWFnZVJlY3QoZHJhZ0RhdGE6IFZpZXdEcmFnRGF0YSwgZXZlbnQ6IERyYWdFdmVudCk6IFZpZXdEcmFnSW1hZ2VSZWN0IHtcbiAgICBjb25zdCByZWN0ID0gbmV3IFZpZXdEcmFnSW1hZ2VSZWN0KHtcbiAgICAgIHg6IGV2ZW50LmNsaWVudFggLSBkcmFnRGF0YS52aWV3VGFiUG9pbnRlck9mZnNldFgsXG4gICAgICB5OiBldmVudC5jbGllbnRZIC0gZHJhZ0RhdGEudmlld1RhYlBvaW50ZXJPZmZzZXRZLFxuICAgICAgaGVpZ2h0OiBkcmFnRGF0YS52aWV3VGFiSGVpZ2h0LFxuICAgICAgd2lkdGg6IGRyYWdEYXRhLnZpZXdUYWJXaWR0aCxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5fY29uc3RyYWluRHJhZ0ltYWdlUmVjdEZuID8gdGhpcy5fY29uc3RyYWluRHJhZ0ltYWdlUmVjdEZuKHJlY3QpIDogcmVjdDtcbiAgfVxuXG4gIHByaXZhdGUgaW5zdGFsbFdpbmRvd1ZpZXdEcmFnTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fdmlld0RyYWdTZXJ2aWNlLnZpZXdEcmFnJCh3aW5kb3cpXG4gICAgICAucGlwZShcbiAgICAgICAgc3Vic2NyaWJlSW5zaWRlKGZuID0+IHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoZm4pKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ2RyYWdzdGFydCc6XG4gICAgICAgICAgICB0aGlzLm9uV2luZG93RHJhZ1N0YXJ0KGV2ZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2RyYWdlbnRlcic6XG4gICAgICAgICAgICB0aGlzLm9uV2luZG93RHJhZ0VudGVyKGV2ZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2RyYWdvdmVyJzpcbiAgICAgICAgICAgIHRoaXMub25XaW5kb3dEcmFnT3ZlcihldmVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdkcmFnbGVhdmUnOlxuICAgICAgICAgICAgdGhpcy5vbldpbmRvd0RyYWdMZWF2ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZHJvcCc6XG4gICAgICAgICAgICB0aGlzLm9uV2luZG93RHJvcCgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgcG9zaXRpb24gYW5kIGRpbWVuc2lvbiBvZiB0aGUgZHJhZyBpbWFnZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFZpZXdEcmFnSW1hZ2VSZWN0IHtcblxuICAvKipcbiAgICogQ29vcmRpbmF0ZSBvZiB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBkcmFnIGltYWdlIGluIHRoZSBcImNsaWVudFwiIGNvb3JkaW5hdGUgc3lzdGVtLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHghOiBudW1iZXI7XG4gIC8qKlxuICAgKiBDb29yZGluYXRlIG9mIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIGRyYWcgaW1hZ2UgaW4gdGhlIFwiY2xpZW50XCIgY29vcmRpbmF0ZSBzeXN0ZW0uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgeSE6IG51bWJlcjtcbiAgLyoqXG4gICAqIEhlaWdodCBvZiB0aGUgZHJhZyBpbWFnZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBoZWlnaHQhOiBudW1iZXI7XG4gIC8qKlxuICAgKiBXaWR0aCBvZiB0aGUgZHJhZyBpbWFnZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB3aWR0aCE6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihyZWN0OiBPbWl0PFZpZXdEcmFnSW1hZ2VSZWN0LCAnbGVmdCcgfCAncmlnaHQnPikge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgcmVjdCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxlZnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy54O1xuICB9XG5cbiAgcHVibGljIGdldCByaWdodCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnggKyB0aGlzLndpZHRoO1xuICB9XG59XG5cbmNsYXNzIERyYWdJbWFnZVdvcmtiZW5jaFZpZXcgaW1wbGVtZW50cyBXb3JrYmVuY2hWaWV3IHtcblxuICBwdWJsaWMgcmVhZG9ubHkgaWQ6IFZpZXdJZDtcbiAgcHVibGljIHJlYWRvbmx5IGFsdGVybmF0aXZlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IG5hdmlnYXRpb25IaW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSB0aXRsZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgaGVhZGluZzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgY2xvc2FibGU6IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSBkaXJ0eTogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5IGRlc3Ryb3llZCA9IGZhbHNlO1xuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlJCA9IG9mKHRydWUpO1xuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlID0gdHJ1ZTtcbiAgcHVibGljIHJlYWRvbmx5IGJsb2NrZWQgPSBmYWxzZTtcbiAgcHVibGljIHJlYWRvbmx5IGNzc0NsYXNzID0gW107XG4gIHB1YmxpYyByZWFkb25seSB1cmxTZWdtZW50czogVXJsU2VnbWVudFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdGUgPSB7fTtcbiAgcHVibGljIHJlYWRvbmx5IGZpcnN0ID0gdHJ1ZTtcbiAgcHVibGljIHJlYWRvbmx5IGxhc3QgPSB0cnVlO1xuICBwdWJsaWMgcmVhZG9ubHkgcG9zaXRpb24gPSAwO1xuICBwdWJsaWMgcmVhZG9ubHkgc2Nyb2xsZWRJbnRvVmlldyA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoZHJhZ0RhdGE6IFZpZXdEcmFnRGF0YSkge1xuICAgIHRoaXMuaWQgPSBkcmFnRGF0YS52aWV3SWQ7XG4gICAgdGhpcy5hbHRlcm5hdGl2ZUlkID0gZHJhZ0RhdGEuYWx0ZXJuYXRpdmVWaWV3SWQ7XG4gICAgdGhpcy5uYXZpZ2F0aW9uSGludCA9IGRyYWdEYXRhLm5hdmlnYXRpb25IaW50O1xuICAgIHRoaXMudGl0bGUgPSBkcmFnRGF0YS52aWV3VGl0bGU7XG4gICAgdGhpcy5oZWFkaW5nID0gZHJhZ0RhdGEudmlld0hlYWRpbmc7XG4gICAgdGhpcy5jbG9zYWJsZSA9IGRyYWdEYXRhLnZpZXdDbG9zYWJsZTtcbiAgICB0aGlzLmRpcnR5ID0gZHJhZ0RhdGEudmlld0RpcnR5O1xuICAgIHRoaXMudXJsU2VnbWVudHMgPSBkcmFnRGF0YS52aWV3VXJsU2VnbWVudHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhcnQoKTogV29ya2JlbmNoUGFydCB7XG4gICAgdGhyb3cgRXJyb3IoJ1tVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXScpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRocm93IEVycm9yKCdbVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvcl0nKTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlKHRhcmdldDogJ25ldy13aW5kb3cnIHwgc3RyaW5nLCBvcHRpb25zPzoge3JlZ2lvbj86ICdub3J0aCcgfCAnc291dGgnIHwgJ3dlc3QnIHwgJ2Vhc3QnOyB3b3JrYmVuY2hJZD86IHN0cmluZ30pOiB2b2lkIHtcbiAgICB0aHJvdyBFcnJvcignW1Vuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JdJyk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJNZW51SXRlbShtZW51SXRlbTogV29ya2JlbmNoTWVudUl0ZW0pOiBEaXNwb3NhYmxlIHtcbiAgICB0aHJvdyBFcnJvcignW1Vuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JdJyk7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZhdGUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhyb3cgRXJyb3IoJ1tVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXScpO1xuICB9XG59XG4iXX0=
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10YWItZHJhZy1pbWFnZS1yZW5kZXJlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvdmlldy1kbmQvdmlldy10YWItZHJhZy1pbWFnZS1yZW5kZXJlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLGNBQWMsRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEMsT0FBTyxFQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRCxPQUFPLEVBQWUsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxFQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFHcEcsT0FBTyxFQUFTLGFBQWEsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBQywwQkFBMEIsRUFBMEIsTUFBTSx3QkFBd0IsQ0FBQztBQUkzRixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7O0FBSXREOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLHdCQUF3QjtJQVluQztRQVZpQixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUQseUlBQXlJ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QUFRLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbkUsQ0FBQztJQUVNLEtBQUs7UUFDVixNQUFNLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxJQUFJLENBQUMsTUFBNkIsRUFBRSxPQUE4RTtRQUN2SCxNQUFNLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxRQUEyQjtRQUNqRCxNQUFNLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxRQUFRO1FBQ2IsTUFBTSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sUUFBUSxDQUFDLFFBQW9CO1FBQ2xDLE1BQU0sS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0FwcGxpY2F0aW9uUmVmLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIGNvbXB1dGVkLCBpbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBOZ1pvbmUsIHNpZ25hbCwgU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtjcmVhdGVFbGVtZW50LCBzZXRTdHlsZX0gZnJvbSAnLi4vY29tbW9uL2RvbS51dGlsJztcbmltcG9ydCB7Vmlld0RyYWdEYXRhLCBWaWV3RHJhZ1NlcnZpY2V9IGZyb20gJy4vdmlldy1kcmFnLnNlcnZpY2UnO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWwsIERvbVBvcnRhbE91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge3N1YnNjcmliZUlufSBmcm9tICdAc2Npb24vdG9vbGtpdC9vcGVyYXRvcnMnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Vmlld1RhYkRyYWdJbWFnZUNvbXBvbmVudH0gZnJvbSAnLi4vcGFydC92aWV3LXRhYi1kcmFnLWltYWdlL3ZpZXctdGFiLWRyYWctaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7VXJsU2VnbWVudH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Q2FuQ2xvc2VGbiwgQ2FuQ2xvc2VSZWYsIFdvcmtiZW5jaE1lbnVJdGVtfSBmcm9tICcuLi93b3JrYmVuY2gubW9kZWwnO1xuaW1wb3J0IHtWaWV3SWQsIFdvcmtiZW5jaFZpZXd9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtWSUVXX1RBQl9SRU5ERVJJTkdfQ09OVEVYVCwgVmlld1RhYlJlbmRlcmluZ0NvbnRleHR9IGZyb20gJy4uL3dvcmtiZW5jaC5jb25zdGFudHMnO1xuaW1wb3J0IHtXb3JrYmVuY2hQYXJ0fSBmcm9tICcuLi9wYXJ0L3dvcmtiZW5jaC1wYXJ0Lm1vZGVsJztcbmltcG9ydCB7RGlzcG9zYWJsZX0gZnJvbSAnLi4vY29tbW9uL2Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRGF0YSwgTmF2aWdhdGlvblN0YXRlfSBmcm9tICcuLi9yb3V0aW5nL3JvdXRpbmcubW9kZWwnO1xuaW1wb3J0IHt0aHJvd0Vycm9yfSBmcm9tICcuLi9jb21tb24vdGhyb3ctZXJyb3IudXRpbCc7XG5cbmV4cG9ydCB0eXBlIENvbnN0cmFpbkZuID0gKHJlY3Q6IERPTVJlY3QpID0+IERPTVJlY3Q7XG5cbi8qKlxuICogUmVuZGVycyBhIGRyYWcgaW1hZ2UgZHVyaW5nIGEgdmlldyBkcmFnIG9wZXJhdGlvbi5cbiAqXG4gKiBVbmxpa2Ugd2hlbiB1c2luZyB0aGUgbmF0aXZlIGRyYWcgaW1hZ2Ugc3VwcG9ydCwgaXQgYWxsb3dzIGNvbnRyb2xsaW5nIHRoZSBkcmFnIGltYWdlIHBvc2l0aW9uIGFuZCBpdHMgc2l6ZSBkdXJpbmcgdGhlIGRyYWcgb3BlcmF0aW9uLlxuICogRm9yIGluc3RhbmNlLCBhbGxvd3Mgc25hcHBpbmcgdGhlIHZpZXcgdGFiIGludG8gdGhlIHZpZXcgdGFiIGJhciAoZHJvcCB6b25lKSB3aGVuIGJlaW5nIGRyYWdnZWQgb3Zlci5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgVmlld1RhYkRyYWdJbWFnZVJlbmRlcmVyIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3RHJhZ1NlcnZpY2UgPSBpbmplY3QoVmlld0RyYWdTZXJ2aWNlKTtcbiAgLy8gVE9ETyBbQW5ndWxhciAxOV1baHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9pc3N1ZXMvMjQzMzRdIEFsdGVybmF0aXZlIGNvbnN0cnVjdG9yIChDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgaXMgZGVwcmVjYXRlZClcbiAgcHJpdmF0ZSByZWFkb25seSBfY29tcG9uZW50RmFjdG9yeVJlc29sdmVyID0gaW5qZWN0KENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uUmVmID0gaW5qZWN0KEFwcGxpY2F0aW9uUmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF96b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgcHJpdmF0ZSBfdmlld0RyYWdJbWFnZVBvcnRhbE91dGxldDogRG9tUG9ydGFsT3V0bGV0IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2NvbnN0cmFpbkRyYWdJbWFnZVJlY3RGbjogQ29uc3RyYWluRm4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmluc3RhbGxXaW5kb3dWaWV3RHJhZ0xpc3RlbmVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3dzIHRvIGNvbnN0cmFpbiB0aGUgcG9zaXRpb24gYW5kIGRpbWVuc2lvbiBvZiB0aGUgZHJhZyBpbWFnZSBkdXJpbmcgYSB2aWV3IGRyYWcgb3BlcmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHNldENvbnN0cmFpbkRyYWdJbWFnZVJlY3RGbihmbjogQ29uc3RyYWluRm4pOiB2b2lkIHtcbiAgICB0aGlzLl9jb25zdHJhaW5EcmFnSW1hZ2VSZWN0Rm4gPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnNldHMgdGhlIGRyYWcgaW1hZ2UgY29uc3RyYWluIGZ1bmN0aW9uLCBpZiByZWdpc3RlcmVkLlxuICAgKi9cbiAgcHVibGljIHVuc2V0Q29uc3RyYWluRHJhZ0ltYWdlUmVjdEZuKGZuOiBDb25zdHJhaW5Gbik6IHZvaWQge1xuICAgIGlmIChmbiA9PT0gdGhpcy5fY29uc3RyYWluRHJhZ0ltYWdlUmVjdEZuKSB7XG4gICAgICB0aGlzLl9jb25zdHJhaW5EcmFnSW1hZ2VSZWN0Rm4gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25XaW5kb3dEcmFnU3RhcnQoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlRHJhZ0ltYWdlKGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgb25XaW5kb3dEcmFnRW5kKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcG9zZURyYWdJbWFnZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBpbnZva2VkIHdoZW4gZHJhZ2dpbmcgYSB2aWV3IGludG8gdGhlIGN1cnJlbnQgd2luZG93LiBJdCBpcyBpbnZva2VkIG91dHNpZGUgdGhlIEFuZ3VsYXIgem9uZS5cbiAgICpcbiAgICogSWYgdGhlIHVzZXIgc3RhcnRzIHRoZSBkcmFnIG9wZXJhdGlvbiBpbiB0aGUgY3VycmVudCB3aW5kb3csIHRoaXMgbWV0aG9kIGlzIGludm9rZWQgaW1tZWRpYXRlbHksXG4gICAqIG9yIHdoZW4gZHJhZ2dpbmcgdGhlIHZpZXcgdGFiIGludG8gdGhpcyB3aW5kb3cgaWYgc3RhcnRlZCB0aGUgZHJhZyBvcGVyYXRpb24gaW4gYW5vdGhlciB3aW5kb3cuXG4gICAqL1xuICBwcml2YXRlIG9uV2luZG93RHJhZ0VudGVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZURyYWdJbWFnZShldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGludm9rZWQgd2hpbGUgZHJhZ2dpbmcgYSB2aWV3IG92ZXIgdGhlIGN1cnJlbnQgd2luZG93LiBJdCBpcyBpbnZva2VkIG91dHNpZGUgdGhlIEFuZ3VsYXIgem9uZS5cbiAgICovXG4gIHByaXZhdGUgb25XaW5kb3dEcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZHJhZ1Bvc2l0aW9uID0gdGhpcy5jYWxjdWxhdGVEcmFnSW1hZ2VSZWN0KHRoaXMuX3ZpZXdEcmFnU2VydmljZS52aWV3RHJhZ0RhdGEoKSEsIGV2ZW50KTtcblxuICAgIC8vIHVwZGF0ZSB0aGUgZHJhZyBpbWFnZSBwb3NpdGlvblxuICAgIHNldFN0eWxlKHRoaXMuX3ZpZXdEcmFnSW1hZ2VQb3J0YWxPdXRsZXQhLm91dGxldEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsIHtcbiAgICAgIGxlZnQ6IGAke2RyYWdQb3NpdGlvbi54fXB4YCxcbiAgICAgIHRvcDogYCR7ZHJhZ1Bvc2l0aW9uLnl9cHhgLFxuICAgICAgaGVpZ2h0OiBgJHtkcmFnUG9zaXRpb24uaGVpZ2h0fXB4YCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgaW52b2tlZCB3aGVuIHRoZSBkcmFnIG9wZXJhdGlvbiBlbmRzIGZvciB0aGUgY3VycmVudCB3aW5kb3csIHdoaWNoIGlzIHdoZW4gdGhlIHVzZXIgZHJhZ3MgdGhlIHZpZXcgdGFiIG91dHNpZGUgb2ZcbiAgICogdGhlIGN1cnJlbnQgd2luZG93IG9yIHdoZW4gdGhlIHVzZXIgY2FuY2VscyB0aGUgZHJhZyBvcGVyYXRpb24gKGUuZy4sIGJ5IHByZXNzaW5nIHRoZSBlc2NhcGUga2V5KS5cbiAgICovXG4gIHByaXZhdGUgb25XaW5kb3dEcmFnTGVhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwb3NlRHJhZ0ltYWdlKCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGludm9rZWQgd2hlbiB0aGUgZHJhZyBvcGVyYXRpb24gZW5kcyBmb3IgdGhlIGN1cnJlbnQgd2luZG93IHdoaWNoIGlzIHdoZW4gdGhlIHVzZXIgZHJvcHMgdGhlIHZpZXcuXG4gICAqL1xuICBwcml2YXRlIG9uV2luZG93RHJvcCgpOiB2b2lkIHtcbiAgICAvLyBXYWl0IGZvciB0aGUgem9uZSB0byBzdGFiaWxpemUgYmVmb3JlIGRpc3Bvc2luZyB0aGUgdGFiIGRyYWcgaW1hZ2UuIE90aGVyd2lzZSwgdGhlIHRhYmJhciB3b3VsZCBmbGlja2VyXG4gICAgLy8gYmVjYXVzZSB0aGUgdGFiIGhhcyBub3QgeWV0IGJlZW4gcmVuZGVyZWQgYXQgaXRzIG5ldyBwb3NpdGlvbi5cbiAgICB0aGlzLl96b25lLm9uU3RhYmxlXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcG9zZURyYWdJbWFnZSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURyYWdJbWFnZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3ZpZXdEcmFnSW1hZ2VQb3J0YWxPdXRsZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkcmFnRGF0YSA9IHRoaXMuX3ZpZXdEcmFnU2VydmljZS52aWV3RHJhZ0RhdGEoKSE7XG4gICAgY29uc3QgZHJhZ1Bvc2l0aW9uID0gdGhpcy5jYWxjdWxhdGVEcmFnSW1hZ2VSZWN0KGRyYWdEYXRhLCBldmVudCk7XG5cbiAgICAvLyBjcmVhdGUgdGhlIGRyYWcgaW1hZ2VcbiAgICBjb25zdCBvdXRsZXRFbGVtZW50ID0gY3JlYXRlRWxlbWVudCgnZGl2Jywge1xuICAgICAgcGFyZW50OiBkb2N1bWVudC5ib2R5LFxuICAgICAgY3NzQ2xhc3M6ICd3Yi12aWV3LXRhYi1kcmFnLWltYWdlJyxcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGxlZnQ6IGAke2RyYWdQb3NpdGlvbi54fXB4YCxcbiAgICAgICAgdG9wOiBgJHtkcmFnUG9zaXRpb24ueX1weGAsXG4gICAgICAgIHdpZHRoOiBgJHtkcmFnUG9zaXRpb24ud2lkdGh9cHhgLFxuICAgICAgICBoZWlnaHQ6IGAke2RyYWdQb3NpdGlvbi5oZWlnaHR9cHhgLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLl92aWV3RHJhZ0ltYWdlUG9ydGFsT3V0bGV0ID0gbmV3IERvbVBvcnRhbE91dGxldChvdXRsZXRFbGVtZW50LCB0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHRoaXMuX2FwcGxpY2F0aW9uUmVmLCB0aGlzLl9pbmplY3Rvcik7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5fdmlld0RyYWdJbWFnZVBvcnRhbE91dGxldC5hdHRhY2hDb21wb25lbnRQb3J0YWwobmV3IENvbXBvbmVudFBvcnRhbChWaWV3VGFiRHJhZ0ltYWdlQ29tcG9uZW50LCBudWxsLCBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiB0aGlzLl9pbmplY3RvcixcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7cHJvdmlkZTogV29ya2JlbmNoVmlldywgdXNlVmFsdWU6IG5ldyBEcmFnSW1hZ2VXb3JrYmVuY2hWaWV3KGRyYWdEYXRhKX0sXG4gICAgICAgIHtwcm92aWRlOiBWSUVXX1RBQl9SRU5ERVJJTkdfQ09OVEVYVCwgdXNlVmFsdWU6ICdkcmFnLWltYWdlJyBzYXRpc2ZpZXMgVmlld1RhYlJlbmRlcmluZ0NvbnRleHR9LFxuICAgICAgXSxcbiAgICB9KSkpO1xuICAgIC8vIERldGVjdCBmb3IgY2hhbmdlcyBiZWNhdXNlIGNvbnN0cnVjdGVkIG91dHNpZGUgb2YgQW5ndWxhci5cbiAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwb3NlRHJhZ0ltYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuX3ZpZXdEcmFnSW1hZ2VQb3J0YWxPdXRsZXQ/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLl92aWV3RHJhZ0ltYWdlUG9ydGFsT3V0bGV0ID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIGNsaWVudCBwb3NpdGlvbiBhbmQgZGltZW5zaW9uIGZvciB0aGUgZHJhZyBpbWFnZSwgYWNjb3VudGluZyBmb3IgYW55IGNvbnN0cmFpbnRzLlxuICAgKi9cbiAgcHVibGljIGNhbGN1bGF0ZURyYWdJbWFnZVJlY3QoZHJhZ0RhdGE6IFZpZXdEcmFnRGF0YSwgZXZlbnQ6IERyYWdFdmVudCk6IERPTVJlY3Qge1xuICAgIGNvbnN0IHJlY3QgPSBuZXcgRE9NUmVjdChcbiAgICAgIGV2ZW50LmNsaWVudFggLSBkcmFnRGF0YS52aWV3VGFiUG9pbnRlck9mZnNldFgsXG4gICAgICBldmVudC5jbGllbnRZIC0gZHJhZ0RhdGEudmlld1RhYlBvaW50ZXJPZmZzZXRZLFxuICAgICAgZHJhZ0RhdGEudmlld1RhYldpZHRoLFxuICAgICAgZHJhZ0RhdGEudmlld1RhYkhlaWdodCxcbiAgICApO1xuICAgIHJldHVybiB0aGlzLl9jb25zdHJhaW5EcmFnSW1hZ2VSZWN0Rm4gPyB0aGlzLl9jb25zdHJhaW5EcmFnSW1hZ2VSZWN0Rm4ocmVjdCkgOiByZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YWxsV2luZG93Vmlld0RyYWdMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICB0aGlzLl92aWV3RHJhZ1NlcnZpY2Uudmlld0RyYWckKHdpbmRvdylcbiAgICAgIC5waXBlKFxuICAgICAgICBzdWJzY3JpYmVJbihmbiA9PiB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKGZuKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdkcmFnc3RhcnQnOlxuICAgICAgICAgICAgdGhpcy5vbldpbmRvd0RyYWdTdGFydChldmVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdkcmFnZW50ZXInOlxuICAgICAgICAgICAgdGhpcy5vbldpbmRvd0RyYWdFbnRlcihldmVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdkcmFnb3Zlcic6XG4gICAgICAgICAgICB0aGlzLm9uV2luZG93RHJhZ092ZXIoZXZlbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZHJhZ2xlYXZlJzpcbiAgICAgICAgICAgIHRoaXMub25XaW5kb3dEcmFnTGVhdmUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2Ryb3AnOlxuICAgICAgICAgICAgdGhpcy5vbldpbmRvd0Ryb3AoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2RyYWdlbmQnOlxuICAgICAgICAgICAgdGhpcy5vbldpbmRvd0RyYWdFbmQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBEcmFnSW1hZ2VXb3JrYmVuY2hWaWV3IGltcGxlbWVudHMgV29ya2JlbmNoVmlldyB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlkOiBWaWV3SWQ7XG4gIHB1YmxpYyByZWFkb25seSBhbHRlcm5hdGl2ZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSBuYXZpZ2F0aW9uSGludDogU2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD47XG4gIHB1YmxpYyByZWFkb25seSBuYXZpZ2F0aW9uRGF0YTogU2lnbmFsPE5hdmlnYXRpb25EYXRhPjtcbiAgcHVibGljIHJlYWRvbmx5IG5hdmlnYXRpb25TdGF0ZTogU2lnbmFsPE5hdmlnYXRpb25TdGF0ZT47XG4gIHB1YmxpYyByZWFkb25seSBwYXJ0OiBTaWduYWw8V29ya2JlbmNoUGFydD47XG4gIHB1YmxpYyByZWFkb25seSB0aXRsZTogU2lnbmFsPHN0cmluZyB8IG51bGw+O1xuICBwdWJsaWMgcmVhZG9ubHkgaGVhZGluZzogU2lnbmFsPHN0cmluZyB8IG51bGw+O1xuICBwdWJsaWMgcmVhZG9ubHkgZGlydHk6IFNpZ25hbDxib29sZWFuPjtcbiAgcHVibGljIHJlYWRvbmx5IGNsb3NhYmxlOiBTaWduYWw8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBkZXN0cm95ZWQgPSBmYWxzZTtcbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZSA9IHNpZ25hbCh0cnVlKS5hc1JlYWRvbmx5KCk7XG4gIHB1YmxpYyByZWFkb25seSBibG9ja2VkID0gZmFsc2U7XG4gIHB1YmxpYyByZWFkb25seSBjc3NDbGFzcyA9IHNpZ25hbChbXSkuYXNSZWFkb25seSgpO1xuICBwdWJsaWMgcmVhZG9ubHkgdXJsU2VnbWVudHM6IFNpZ25hbDxVcmxTZWdtZW50W10+O1xuICBwdWJsaWMgcmVhZG9ubHkgZmlyc3QgPSBzaWduYWwodHJ1ZSkuYXNSZWFkb25seSgpO1xuICBwdWJsaWMgcmVhZG9ubHkgbGFzdCA9IHNpZ25hbCh0cnVlKS5hc1JlYWRvbmx5KCk7XG4gIHB1YmxpYyByZWFkb25seSBwb3NpdGlvbiA9IHNpZ25hbCgwKS5hc1JlYWRvbmx5KCk7XG4gIHB1YmxpYyByZWFkb25seSBzY3JvbGxlZEludG9WaWV3ID0gc2lnbmFsKHRydWUpLmFzUmVhZG9ubHkoKTtcblxuICBjb25zdHJ1Y3RvcihkcmFnRGF0YTogVmlld0RyYWdEYXRhKSB7XG4gICAgdGhpcy5pZCA9IGRyYWdEYXRhLnZpZXdJZDtcbiAgICB0aGlzLmFsdGVybmF0aXZlSWQgPSBkcmFnRGF0YS5hbHRlcm5hdGl2ZVZpZXdJZDtcbiAgICB0aGlzLnBhcnQgPSBjb21wdXRlZCgoKSA9PiB0aHJvd0Vycm9yKCdVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yJykpO1xuICAgIHRoaXMubmF2aWdhdGlvbkhpbnQgPSBzaWduYWwoZHJhZ0RhdGEubmF2aWdhdGlvbkhpbnQpLmFzUmVhZG9ubHkoKTtcbiAgICB0aGlzLm5hdmlnYXRpb25EYXRhID0gc2lnbmFsKGRyYWdEYXRhLm5hdmlnYXRpb25EYXRhID8/IHt9KS5hc1JlYWRvbmx5KCk7XG4gICAgdGhpcy5uYXZpZ2F0aW9uU3RhdGUgPSBzaWduYWwoe30pLmFzUmVhZG9ubHkoKTtcbiAgICB0aGlzLnRpdGxlID0gc2lnbmFsKGRyYWdEYXRhLnZpZXdUaXRsZSkuYXNSZWFkb25seSgpO1xuICAgIHRoaXMuaGVhZGluZyA9IHNpZ25hbChkcmFnRGF0YS52aWV3SGVhZGluZykuYXNSZWFkb25seSgpO1xuICAgIHRoaXMuZGlydHkgPSBzaWduYWwoZHJhZ0RhdGEudmlld0RpcnR5KS5hc1JlYWRvbmx5KCk7XG4gICAgdGhpcy5jbG9zYWJsZSA9IHNpZ25hbChkcmFnRGF0YS52aWV3Q2xvc2FibGUpLmFzUmVhZG9ubHkoKTtcbiAgICB0aGlzLnVybFNlZ21lbnRzID0gc2lnbmFsKGRyYWdEYXRhLnZpZXdVcmxTZWdtZW50cykuYXNSZWFkb25seSgpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRocm93IEVycm9yKCdbVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvcl0nKTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlKHRhcmdldDogJ25ldy13aW5kb3cnIHwgc3RyaW5nLCBvcHRpb25zPzoge3JlZ2lvbj86ICdub3J0aCcgfCAnc291dGgnIHwgJ3dlc3QnIHwgJ2Vhc3QnOyB3b3JrYmVuY2hJZD86IHN0cmluZ30pOiB2b2lkIHtcbiAgICB0aHJvdyBFcnJvcignW1Vuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JdJyk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJNZW51SXRlbShtZW51SXRlbTogV29ya2JlbmNoTWVudUl0ZW0pOiBEaXNwb3NhYmxlIHtcbiAgICB0aHJvdyBFcnJvcignW1Vuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JdJyk7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZhdGUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhyb3cgRXJyb3IoJ1tVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXScpO1xuICB9XG5cbiAgcHVibGljIGNhbkNsb3NlKGNhbkNsb3NlOiBDYW5DbG9zZUZuKTogQ2FuQ2xvc2VSZWYge1xuICAgIHRocm93IEVycm9yKCdbVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvcl0nKTtcbiAgfVxufVxuIl19
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2018-2022 Swiss Federal Railways
2
+ * Copyright (c) 2018-2024 Swiss Federal Railways
3
3
  *
4
4
  * This program and the accompanying materials are made
5
5
  * available under the terms of the Eclipse Public License 2.0
@@ -12,4 +12,4 @@
12
12
  */
13
13
  export class WorkbenchConfig {
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3dvcmtiZW5jaC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFVSDs7R0FFRztBQUNILE1BQU0sT0FBZ0IsZUFBZTtDQThIcEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMb2dBcHBlbmRlciwgTG9nTGV2ZWx9IGZyb20gJy4vbG9nZ2luZyc7XG5pbXBvcnQge01pY3JvZnJvbnRlbmRQbGF0Zm9ybUNvbmZpZ30gZnJvbSAnQHNjaW9uL21pY3JvZnJvbnRlbmQtcGxhdGZvcm0nO1xuaW1wb3J0IHtNaWNyb2Zyb250ZW5kUGxhdGZvcm1Db25maWdMb2FkZXJ9IGZyb20gJy4vbWljcm9mcm9udGVuZC1wbGF0Zm9ybS9taWNyb2Zyb250ZW5kLXBsYXRmb3JtLWNvbmZpZy1sb2FkZXInO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRGbiwgV29ya2JlbmNoUGVyc3BlY3RpdmVzfSBmcm9tICcuL3BlcnNwZWN0aXZlL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS5tb2RlbCc7XG5pbXBvcnQge1dvcmtiZW5jaFN0b3JhZ2V9IGZyb20gJy4vc3RvcmFnZS93b3JrYmVuY2gtc3RvcmFnZSc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvZiB0aGUgU0NJT04gV29ya2JlbmNoLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgV29ya2JlbmNoQ29uZmlnIHtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBjb21wb25lbnQgdG8gZGlzcGxheSBhIHZpZXcgdGFiLCBlbmFibGluZyBjdXN0b20gZGVzaWduIG9yIGZ1bmN0aW9uYWxpdHkuXG4gICAqXG4gICAqIFRoZSBjb21wb25lbnQgY2FuIGluamVjdCB7QGxpbmsgV29ya2JlbmNoVmlld30gYW5kIHtAbGluayBWSUVXX1RBQl9SRU5ERVJJTkdfQ09OVEVYVH0gdG8gZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZSB2aWV3IGFuZCB0aGUgcmVuZGVyaW5nIGNvbnRleHQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgdmlld1RhYkNvbXBvbmVudD86IENvbXBvbmVudFR5cGU8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgY29tcG9uZW50IHRvIGRpc3BsYXkgaWYgbm8gcm91dGUgbWF0Y2hlcyB0aGUgcmVxdWVzdGVkIFVSTC5cbiAgICpcbiAgICogVGhpcyBoYXBwZW5zIHdoZW4gbmF2aWdhdGluZyB0byBhIHJvdXRlIHRoYXQgZG9lcyBub3QgZXhpc3Qgb3Igd2hlbiBsb2FkaW5nIHRoZSBhcHBsaWNhdGlvbiwgYW5kIHRoZSByb3V0ZXMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IHVzZS5cbiAgICpcbiAgICogVGhlIGNvbXBvbmVudCBjYW4gaW5qZWN0IHtAbGluayBXb3JrYmVuY2hWaWV3fSB0byBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIHZpZXcsIGUuZy4sIHRvIG9idGFpbiB0aGUgcmVxdWVzdGVkIFVSTC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBwYWdlTm90Rm91bmRDb21wb25lbnQ/OiBDb21wb25lbnRUeXBlPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB3aGljaCBidWlsdC1pbiBtZW51IGl0ZW1zIHRvIGRpc3BsYXkgaW4gdGhlIHZpZXcgY29udGV4dCBtZW51LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHZpZXdNZW51SXRlbXM/OiBWaWV3TWVudUl0ZW1zQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmVzIHRoZSB3b3JrYmVuY2ggc3RhcnR1cC5cbiAgICpcbiAgICogVGhlIHtAbGluayBXb3JrYmVuY2hMYXVuY2hlcn0gaXMgdXNlZCB0byBzdGFydCB0aGUgd29ya2JlbmNoLiBEdXJpbmcgc3RhcnR1cCwgaXQgcnVucyByZWdpc3RlcmVkIHdvcmtiZW5jaCBpbml0aWFsaXplcnNcbiAgICogYW5kIHdhaXRzIGZvciB0aGVtIHRvIGNvbXBsZXRlLiBZb3UgY2FuIGluamVjdCB7QGxpbmsgV29ya2JlbmNoU3RhcnR1cH0gdG8gZ2V0IG5vdGlmaWVkIHdoZW4gdGhlIHN0YXJ0dXAgaXMgY29tcGxldGUuXG4gICAqXG4gICAqIFJlZmVyIHRvIHtAbGluayBXb3JrYmVuY2hJbml0aWFsaXplcn0gdG8gbGVhcm4gaG93IHRvIHJlZ2lzdGVyIGEgd29ya2JlbmNoIGluaXRpYWxpemVyLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHN0YXJ0dXA/OiB7XG4gICAgLyoqXG4gICAgICogQ29uZmlndXJlcyB0aGUgd29ya2JlbmNoIGxhdW5jaGluZyBzdHJhdGVneS5cbiAgICAgKlxuICAgICAqICAtICoqQVBQX0lOSVRJQUxJWkVSKipcbiAgICAgKiAgIExhdW5jaGVzIHRoZSB3b3JrYmVuY2ggaW4gYW4gQW5ndWxhciBgQVBQX0lOSVRJQUxJWkVSYCwgd2hpY2ggaXMgYmVmb3JlIGJvb3RzdHJhcHBpbmcgdGhlIGFwcCBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiAtICoqTEFaWSoqICh3aGljaCBpcyB0aGUgZGVmYXVsdClcbiAgICAgKiAgIExhdW5jaGVzIHRoZSB3b3JrYmVuY2ggYXQgdGhlIGxhdGVzdCB3aGVuIGJvb3RzdHJhcHBpbmcgdGhlIHdvcmtiZW5jaCByb290IGNvbXBvbmVudCBgPHdiLXdvcmtiZW5jaD5gLlxuICAgICAqXG4gICAgICogICBXaXRoIHRoaXMgc3RyYXRlZ3ksIHlvdSBhcmUgZmxleGlibGUgd2hlbiB0byBzdGFydCB0aGUgd29ya2JlbmNoLiBZb3UgY2FuIHN0YXJ0IHRoZSB3b3JrYmVuY2ggZXhwbGljaXRseSBieVxuICAgICAqICAgY2FsbGluZyB7QGxpbmsgV29ya2JlbmNoTGF1bmNoZXIjbGF1bmNofSwgZS5nLiwgdG8gbGF1bmNoIHRoZSB3b3JrYmVuY2ggZnJvbSBhIHJvdXRlIGd1YXJkIG9yIGFwcCBpbml0aWFsaXplcixcbiAgICAgKiAgIG9yIHN0YXJ0IGl0IGF1dG9tYXRpY2FsbHkgd2hlbiBhZGRpbmcgdGhlIHdvcmtiZW5jaCByb290IGNvbXBvbmVudCBgPHdiLXdvcmtiZW5jaD5gIHRvIHRoZSBBbmd1bGFyIGNvbXBvbmVudFxuICAgICAqICAgdHJlZS5cbiAgICAgKi9cbiAgICBsYXVuY2hlcj86ICdBUFBfSU5JVElBTElaRVInIHwgJ0xBWlknO1xuXG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBjb21wb25lbnQgdG8gZGlzcGxheSB3aGVuIG1vdW50aW5nIHRoZSB3b3JrYmVuY2ggcm9vdCBjb21wb25lbnQgYDx3Yi13b3JrYmVuY2g+YCB0byB0aGUgRE9NIGJlZm9yZSB0aGVcbiAgICAgKiB3b3JrYmVuY2ggc3RhcnR1cCBoYXMgZmluaXNoZWQuXG4gICAgICpcbiAgICAgKiBOb3RlIHRoYXQgd2hlbiBsYXVuY2hpbmcgdGhlIHdvcmtiZW5jaCBpbiBhbiBBbmd1bGFyIGBBUFBfSU5JVElBTElaRVJgLCBubyBzcGxhc2ggd2lsbCBkaXNwbGF5IHNpbmNlIHRoZSB3b3JrYmVuY2hcbiAgICAgKiB3aWxsIHN0YXJ0IHVwZnJvbnQuXG4gICAgICovXG4gICAgc3BsYXNoPzogQ29tcG9uZW50VHlwZTx1bmtub3duPjtcbiAgfTtcblxuICAvKipcbiAgICogQ29uZmlndXJlcyBtaWNyb2Zyb250ZW5kIHN1cHBvcnQgaW4gdGhlIHdvcmtiZW5jaCwgYWxsb3dpbmcgdGhlIGludGVncmF0aW9uIG9mIG1pY3JvZnJvbnRlbmRzIGFzIHdvcmtiZW5jaCB2aWV3cyBvclxuICAgKiB3b3JrYmVuY2ggcG9wdXBzLlxuICAgKlxuICAgKiBUaGUgd29ya2JlbmNoIHVzZXMgdGhlIFwiU0NJT04gTWljcm9mcm9udGVuZCBQbGF0Zm9ybVwiIGZvciBwcm92aWRpbmcgbWljcm9mcm9udGVuZCBzdXBwb3J0LiBUbyBsZWFybiBtb3JlIGFib3V0IHRoZVxuICAgKiBcIlNDSU9OIE1pY3JvZnJvbnRlbmQgUGxhdGZvcm1cIiwgcmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL1NjaHdlaXplcmlzY2hlQnVuZGVzYmFobmVuL3NjaW9uLW1pY3JvZnJvbnRlbmQtcGxhdGZvcm0uXG4gICAqXG4gICAqIFRoZSB3b3JrYmVuY2ggYWxsb3dzIGFueSB3ZWIgcGFnZSB0byBiZSBlbWJlZGRlZCBhcyBhIHdvcmtiZW5jaCB2aWV3IG9yIHdvcmtiZW5jaCBwb3B1cC4gVGhlIHdlYiBhcHAgaGFzIHRvIHByb3ZpZGVcbiAgICogYSBtYW5pZmVzdCBpbiB3aGljaCBpdCBkZXNjcmliZXMgaXRzIHZpZXdzIGFuZCBwb3B1cHMuIFRvIGludGVncmF0ZSBhIHRoaXJkLXBhcnR5IGFwcGxpY2F0aW9uIHdoZXJlIGN1c3RvbWl6YXRpb24gaXMgbm90XG4gICAqIHBvc3NpYmxlLCB0aGUgaG9zdCBhcHBsaWNhdGlvbiBjYW4gcHJvdmlkZSBhIG1hbmlmZXN0IGZvciB0aGF0IGFwcGxpY2F0aW9uLiBJZiBlbWJlZGRlZCBjb250ZW50IG5lZWRzIHRvIGludGVyYWN0IHdpdGhcbiAgICogdGhlIHdvcmtiZW5jaCwgdGhlIHdlYiBhcHAgY2FuIHVzZSB0aGUgbGlicmFyeSBgQHNjaW9uL3dvcmtiZW5jaC1jbGllbnRgLCBhIHB1cmUgVHlwZVNjcmlwdCBsaWJyYXJ5IGJhc2VkIG9uIHRoZVxuICAgKiB3ZWIgc3RhY2stYWdub3N0aWMgYEBzY2lvbi9taWNyb2Zyb250ZW5kLXBsYXRmb3JtYCBsaWJyYXJ5LlxuICAgKlxuICAgKiBUaGUgd29ya2JlbmNoIGludGVncmF0ZXMgbWljcm9mcm9udGVuZHMgdGhyb3VnaCBzby1jYWxsZWQgaW50ZW50cywgYSBtZWNoYW5pc20ga25vd24gZnJvbSBBbmRyb2lkIGRldmVsb3BtZW50LCBlbmFibGluZ1xuICAgKiBjb250cm9sbGVkIGNvbGxhYm9yYXRpb24gYWNyb3NzIGFwcGxpY2F0aW9uIGJvdW5kYXJpZXMuIFwiU0NJT04gTWljcm9mcm9udGVuZCBQbGF0Zm9ybSBEZXZUb29sc1wiIGNhbiBoZWxwIHRvIGluc3BlY3RcbiAgICogaW50ZWdyYXRlZCBhcHBsaWNhdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gVGhlIERldlRvb2xzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGZvcm0gb2YgYSBtaWNyb2Zyb250ZW5kIHRoYXQgY2FuIGJlIGVtYmVkZGVkXG4gICAqIGxpa2UgYW55IG90aGVyIG1pY3JvZnJvbnRlbmQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxlZCBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGludGVncmF0ZVxuICAgKiBcIlNDSU9OIE1pY3JvZnJvbnRlbmQgUGxhdGZvcm0gRGV2VG9vbHNcIi5cbiAgICpcbiAgICogVHlwaWNhbGx5LCB0aGUgaG9zdCBhcHAgcHJvdmlkZXMgQVBJIHRvIGludGVncmF0ZWQgbWljcm8gYXBwcyB2aWEgdGhlIGludGVudCBtZWNoYW5pc20uIENvbnNpZGVyIHJlZ2lzdGVyaW5nIGludGVudCBoYW5kbGVyc1xuICAgKiB1bmRlciB0aGUgREkgdG9rZW4ge0BsaW5rIE1JQ1JPRlJPTlRFTkRfUExBVEZPUk1fUE9TVF9TVEFSVFVQfS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBtaWNyb2Zyb250ZW5kUGxhdGZvcm0/OiBNaWNyb2Zyb250ZW5kUGxhdGZvcm1Db25maWcgfCBUeXBlPE1pY3JvZnJvbnRlbmRQbGF0Zm9ybUNvbmZpZ0xvYWRlcj47XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIHdvcmtiZW5jaCBsYXlvdXQuIE11bHRpcGxlIGxheW91dHMgY2FuIGJlIGRlZmluZWQgaW4gdGhlIGZvcm0gb2YgcGVyc3BlY3RpdmVzLlxuICAgKiBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBhIGxheW91dCB3aXRoIG9ubHkgYSBtYWluIGFyZWEuXG4gICAqXG4gICAqIFNlZSB7QGxpbmsgV29ya2JlbmNoTGF5b3V0Rm59IGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBhbiBleGFtcGxlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGxheW91dD86IFdvcmtiZW5jaExheW91dEZuIHwgV29ya2JlbmNoUGVyc3BlY3RpdmVzO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBwZXJzaXN0ZW50IHN0b3JhZ2UgdG8gdGhlIFNDSU9OIFdvcmtiZW5jaC5cbiAgICpcbiAgICogSWYgbm90IHNldCwgdGhlIHdvcmtiZW5jaCB1c2VzIHRoZSBicm93c2VyJ3MgbG9jYWwgc3RvcmFnZSBhcyBwZXJzaXN0ZW50IHN0b3JhZ2UuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgc3RvcmFnZT86IFR5cGU8V29ya2JlbmNoU3RvcmFnZT47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZXMgdGhlIGJlaGF2aW9yIG9mIHdvcmtiZW5jaCBkaWFsb2dzLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGRpYWxvZz86IHtcbiAgICAvKipcbiAgICAgKiBDb25maWd1cmVzIHRoZSBhcmVhIHRvIGJsb2NrIGZvciBhcHBsaWNhdGlvbi1tb2RhbCBkaWFsb2dzLiBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBgd29ya2JlbmNoYC5cbiAgICAgKlxuICAgICAqIC0gKip3b3JrYmVuY2g6KiogYmxvY2tzIHRoZSB7QGxpbmsgV29ya2JlbmNoQ29tcG9uZW50fHdvcmtiZW5jaCBlbGVtZW50fSwgc3RpbGwgYWxsb3dpbmcgaW50ZXJhY3Rpb24gd2l0aCBlbGVtZW50cyBvdXRzaWRlIHRoZSB3b3JrYmVuY2ggZWxlbWVudC5cbiAgICAgKlxuICAgICAqIC0gKip2aWV3cG9ydCoqIGJsb2NrcyB0aGUgYnJvd3NlciB2aWV3cG9ydCwgcHJldmVudGluZyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBhcHBsaWNhdGlvbiB1bnRpbCBhcHBsaWNhdGlvbi1tb2RhbCBkaWFsb2dzIGFyZSBjbG9zZWQuXG4gICAgICovXG4gICAgbW9kYWxpdHlTY29wZT86ICd3b3JrYmVuY2gnIHwgJ3ZpZXdwb3J0JztcbiAgfTtcblxuICAvKipcbiAgICogQ29uZmlndXJlcyBsb2dnaW5nIGZvciB0aGUgd29ya2JlbmNoLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGxvZ2dpbmc/OiB7XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbWluaW11bSBzZXZlcml0eSBsZXZlbCBhIGxvZyBtZXNzYWdlIG11c3QgaGF2ZSBpbiBvcmRlciB0byBiZSBsb2dnZWQuIEJ5IGRlZmF1bHQsIGlmIG5vdCBzcGVjaWZpZWQsIGl0IGlzIHNldCB0byB7QGxpbmsgTG9nTGV2ZWwjSU5GT30uXG4gICAgICpcbiAgICAgKiBBdCBydW50aW1lLCB5b3UgY2FuIGNoYW5nZSB0aGUgbWluaW11bSByZXF1aXJlZCBsb2cgbGV2ZWwgYnkgc2V0dGluZyB0aGUgYGxvZ2xldmVsYCBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICovXG4gICAgbG9nTGV2ZWw/OiBMb2dMZXZlbDtcbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgbG9nIGFwcGVuZGVycyB0byBvdXRwdXQgbG9nIG1lc3NhZ2VzLiBNdWx0aXBsZSBhcHBlbmRlcnMgYXJlIGFsbG93ZWQuIEJ5IGRlZmF1bHQsIGlmIG5vdCBzcGVjaWZpZWQsIGxvZyBtZXNzYWdlcyBhcmUgd3JpdHRlbiB0byB0aGUgY29uc29sZS5cbiAgICAgKi9cbiAgICBsb2dBcHBlbmRlcnM/OiBUeXBlPExvZ0FwcGVuZGVyPltdO1xuICB9O1xufVxuXG4vKipcbiAqIENvbnRyb2xzIHdoaWNoIGJ1aWx0LWluIG1lbnUgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgdmlldyBjb250ZXh0IG1lbnUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlld01lbnVJdGVtc0NvbmZpZyB7XG4gIGNsb3NlPzogTWVudUl0ZW1Db25maWc7XG4gIGNsb3NlT3RoZXJzPzogTWVudUl0ZW1Db25maWc7XG4gIGNsb3NlQWxsPzogTWVudUl0ZW1Db25maWc7XG4gIGNsb3NlVG9UaGVSaWdodD86IE1lbnVJdGVtQ29uZmlnO1xuICBjbG9zZVRvVGhlTGVmdD86IE1lbnVJdGVtQ29uZmlnO1xuICBtb3ZlVXA/OiBNZW51SXRlbUNvbmZpZztcbiAgbW92ZVJpZ2h0PzogTWVudUl0ZW1Db25maWc7XG4gIG1vdmVEb3duPzogTWVudUl0ZW1Db25maWc7XG4gIG1vdmVMZWZ0PzogTWVudUl0ZW1Db25maWc7XG4gIG1vdmVUb05ld1dpbmRvdz86IE1lbnVJdGVtQ29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVJdGVtQ29uZmlnIHtcbiAgdmlzaWJsZT86IGJvb2xlYW47XG4gIHRleHQ/OiBzdHJpbmc7XG4gIGFjY2VsZXJhdG9yPzogc3RyaW5nW107XG4gIGdyb3VwPzogc3RyaW5nO1xuICBjc3NDbGFzcz86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3dvcmtiZW5jaC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFVSDs7R0FFRztBQUNILE1BQU0sT0FBZ0IsZUFBZTtDQThIcEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1NpZ25hbCwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xvZ0FwcGVuZGVyLCBMb2dMZXZlbH0gZnJvbSAnLi9sb2dnaW5nJztcbmltcG9ydCB7TWljcm9mcm9udGVuZFBsYXRmb3JtQ29uZmlnfSBmcm9tICdAc2Npb24vbWljcm9mcm9udGVuZC1wbGF0Zm9ybSc7XG5pbXBvcnQge01pY3JvZnJvbnRlbmRQbGF0Zm9ybUNvbmZpZ0xvYWRlcn0gZnJvbSAnLi9taWNyb2Zyb250ZW5kLXBsYXRmb3JtL21pY3JvZnJvbnRlbmQtcGxhdGZvcm0tY29uZmlnLWxvYWRlcic7XG5pbXBvcnQge1dvcmtiZW5jaExheW91dEZuLCBXb3JrYmVuY2hQZXJzcGVjdGl2ZXN9IGZyb20gJy4vcGVyc3BlY3RpdmUvd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsJztcbmltcG9ydCB7V29ya2JlbmNoU3RvcmFnZX0gZnJvbSAnLi9zdG9yYWdlL3dvcmtiZW5jaC1zdG9yYWdlJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9mIHRoZSBTQ0lPTiBXb3JrYmVuY2guXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBXb3JrYmVuY2hDb25maWcge1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGNvbXBvbmVudCB0byBkaXNwbGF5IGEgdmlldyB0YWIsIGVuYWJsaW5nIGN1c3RvbSBkZXNpZ24gb3IgZnVuY3Rpb25hbGl0eS5cbiAgICpcbiAgICogVGhlIGNvbXBvbmVudCBjYW4gaW5qZWN0IHtAbGluayBXb3JrYmVuY2hWaWV3fSBhbmQge0BsaW5rIFZJRVdfVEFCX1JFTkRFUklOR19DT05URVhUfSB0byBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIHZpZXcgYW5kIHRoZSByZW5kZXJpbmcgY29udGV4dC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB2aWV3VGFiQ29tcG9uZW50PzogQ29tcG9uZW50VHlwZTx1bmtub3duPjtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgY29tcG9uZW50IHRvIGRpc3BsYXkgd2hlbiBubyByb3V0ZSBtYXRjaGVzIHRoZSByZXF1ZXN0ZWQgcGF0aC5cbiAgICpcbiAgICogVGhpcyBjYW4gaGFwcGVuIHdoZW4gbmF2aWdhdGluZyB0byBhIG5vbi1leGlzdGVudCByb3V0ZSBvciBhZnRlciBsb2FkaW5nIHRoZSBhcHBsaWNhdGlvbiwgaWYgdGhlIHJvdXRlcyBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIHVzZXIncyBsYXN0IHNlc3Npb24uXG4gICAqXG4gICAqIFRoZSBjb21wb25lbnQgY2FuIGluamVjdCB7QGxpbmsgV29ya2JlbmNoVmlld30gdG8gZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZSB2aWV3LCBlLmcuLCB0byBvYnRhaW4gdGhlIHJlcXVlc3RlZCBVUkwuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcGFnZU5vdEZvdW5kQ29tcG9uZW50PzogQ29tcG9uZW50VHlwZTx1bmtub3duPjtcblxuICAvKipcbiAgICogQ29udHJvbHMgd2hpY2ggYnVpbHQtaW4gbWVudSBpdGVtcyB0byBkaXNwbGF5IGluIHRoZSB2aWV3IGNvbnRleHQgbWVudS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB2aWV3TWVudUl0ZW1zPzogVmlld01lbnVJdGVtc0NvbmZpZztcblxuICAvKipcbiAgICogQ29uZmlndXJlcyB0aGUgd29ya2JlbmNoIHN0YXJ0dXAuXG4gICAqXG4gICAqIFRoZSB7QGxpbmsgV29ya2JlbmNoTGF1bmNoZXJ9IGlzIHVzZWQgdG8gc3RhcnQgdGhlIHdvcmtiZW5jaC4gRHVyaW5nIHN0YXJ0dXAsIGl0IHJ1bnMgcmVnaXN0ZXJlZCB3b3JrYmVuY2ggaW5pdGlhbGl6ZXJzXG4gICAqIGFuZCB3YWl0cyBmb3IgdGhlbSB0byBjb21wbGV0ZS4gWW91IGNhbiBpbmplY3Qge0BsaW5rIFdvcmtiZW5jaFN0YXJ0dXB9IHRvIGdldCBub3RpZmllZCB3aGVuIHRoZSBzdGFydHVwIGlzIGNvbXBsZXRlLlxuICAgKlxuICAgKiBSZWZlciB0byB7QGxpbmsgV29ya2JlbmNoSW5pdGlhbGl6ZXJ9IHRvIGxlYXJuIGhvdyB0byByZWdpc3RlciBhIHdvcmtiZW5jaCBpbml0aWFsaXplci5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBzdGFydHVwPzoge1xuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyZXMgdGhlIHdvcmtiZW5jaCBsYXVuY2hpbmcgc3RyYXRlZ3kuIERlZmF1bHRzIHRvIGBMQVpZYCBpZiBub3Qgc3BlY2lmaWVkLlxuICAgICAqXG4gICAgICogIC0gKipBUFBfSU5JVElBTElaRVIqKlxuICAgICAqICAgTGF1bmNoZXMgdGhlIHdvcmtiZW5jaCBpbiBhbiBBbmd1bGFyIGBBUFBfSU5JVElBTElaRVJgLCB3aGljaCBpcyBiZWZvcmUgYm9vdHN0cmFwcGluZyB0aGUgYXBwIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIC0gKipMQVpZKipcbiAgICAgKiAgIExhdW5jaGVzIHRoZSB3b3JrYmVuY2ggYXQgdGhlIGxhdGVzdCB3aGVuIGJvb3RzdHJhcHBpbmcgdGhlIHdvcmtiZW5jaCByb290IGNvbXBvbmVudCBgPHdiLXdvcmtiZW5jaD5gLlxuICAgICAqXG4gICAgICogICBXaXRoIHRoaXMgc3RyYXRlZ3ksIHlvdSBhcmUgZmxleGlibGUgd2hlbiB0byBzdGFydCB0aGUgd29ya2JlbmNoLiBZb3UgY2FuIHN0YXJ0IHRoZSB3b3JrYmVuY2ggZXhwbGljaXRseSBieVxuICAgICAqICAgY2FsbGluZyB7QGxpbmsgV29ya2JlbmNoTGF1bmNoZXIjbGF1bmNofSwgZS5nLiwgdG8gbGF1bmNoIHRoZSB3b3JrYmVuY2ggZnJvbSBhIHJvdXRlIGd1YXJkIG9yIGFwcCBpbml0aWFsaXplcixcbiAgICAgKiAgIG9yIHN0YXJ0IGl0IGF1dG9tYXRpY2FsbHkgd2hlbiBhZGRpbmcgdGhlIHdvcmtiZW5jaCByb290IGNvbXBvbmVudCBgPHdiLXdvcmtiZW5jaD5gIHRvIHRoZSBBbmd1bGFyIGNvbXBvbmVudFxuICAgICAqICAgdHJlZS5cbiAgICAgKi9cbiAgICBsYXVuY2hlcj86ICdBUFBfSU5JVElBTElaRVInIHwgJ0xBWlknO1xuXG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBjb21wb25lbnQgdG8gZGlzcGxheSB3aGVuIG1vdW50aW5nIHRoZSB3b3JrYmVuY2ggcm9vdCBjb21wb25lbnQgYDx3Yi13b3JrYmVuY2g+YCB0byB0aGUgRE9NIGJlZm9yZSB0aGVcbiAgICAgKiB3b3JrYmVuY2ggc3RhcnR1cCBoYXMgZmluaXNoZWQuXG4gICAgICpcbiAgICAgKiBOb3RlIHRoYXQgd2hlbiBsYXVuY2hpbmcgdGhlIHdvcmtiZW5jaCBpbiBhbiBBbmd1bGFyIGBBUFBfSU5JVElBTElaRVJgLCBubyBzcGxhc2ggd2lsbCBkaXNwbGF5IHNpbmNlIHRoZSB3b3JrYmVuY2hcbiAgICAgKiB3aWxsIHN0YXJ0IHVwZnJvbnQuXG4gICAgICovXG4gICAgc3BsYXNoPzogQ29tcG9uZW50VHlwZTx1bmtub3duPjtcbiAgfTtcblxuICAvKipcbiAgICogQ29uZmlndXJlcyBtaWNyb2Zyb250ZW5kIHN1cHBvcnQgaW4gdGhlIHdvcmtiZW5jaCwgYWxsb3dpbmcgdGhlIGludGVncmF0aW9uIG9mIG1pY3JvZnJvbnRlbmRzIGFzIHdvcmtiZW5jaCB2aWV3cyBvclxuICAgKiB3b3JrYmVuY2ggcG9wdXBzLlxuICAgKlxuICAgKiBUaGUgd29ya2JlbmNoIHVzZXMgdGhlIFwiU0NJT04gTWljcm9mcm9udGVuZCBQbGF0Zm9ybVwiIGZvciBwcm92aWRpbmcgbWljcm9mcm9udGVuZCBzdXBwb3J0LiBUbyBsZWFybiBtb3JlIGFib3V0IHRoZVxuICAgKiBcIlNDSU9OIE1pY3JvZnJvbnRlbmQgUGxhdGZvcm1cIiwgcmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL1NjaHdlaXplcmlzY2hlQnVuZGVzYmFobmVuL3NjaW9uLW1pY3JvZnJvbnRlbmQtcGxhdGZvcm0uXG4gICAqXG4gICAqIFRoZSB3b3JrYmVuY2ggYWxsb3dzIGFueSB3ZWIgcGFnZSB0byBiZSBlbWJlZGRlZCBhcyBhIHdvcmtiZW5jaCB2aWV3IG9yIHdvcmtiZW5jaCBwb3B1cC4gVGhlIHdlYiBhcHAgaGFzIHRvIHByb3ZpZGVcbiAgICogYSBtYW5pZmVzdCBpbiB3aGljaCBpdCBkZXNjcmliZXMgaXRzIHZpZXdzIGFuZCBwb3B1cHMuIFRvIGludGVncmF0ZSBhIHRoaXJkLXBhcnR5IGFwcGxpY2F0aW9uIHdoZXJlIGN1c3RvbWl6YXRpb24gaXMgbm90XG4gICAqIHBvc3NpYmxlLCB0aGUgaG9zdCBhcHBsaWNhdGlvbiBjYW4gcHJvdmlkZSBhIG1hbmlmZXN0IGZvciB0aGF0IGFwcGxpY2F0aW9uLiBJZiBlbWJlZGRlZCBjb250ZW50IG5lZWRzIHRvIGludGVyYWN0IHdpdGhcbiAgICogdGhlIHdvcmtiZW5jaCwgdGhlIHdlYiBhcHAgY2FuIHVzZSB0aGUgbGlicmFyeSBgQHNjaW9uL3dvcmtiZW5jaC1jbGllbnRgLCBhIHB1cmUgVHlwZVNjcmlwdCBsaWJyYXJ5IGJhc2VkIG9uIHRoZVxuICAgKiB3ZWIgc3RhY2stYWdub3N0aWMgYEBzY2lvbi9taWNyb2Zyb250ZW5kLXBsYXRmb3JtYCBsaWJyYXJ5LlxuICAgKlxuICAgKiBUaGUgd29ya2JlbmNoIGludGVncmF0ZXMgbWljcm9mcm9udGVuZHMgdGhyb3VnaCBzby1jYWxsZWQgaW50ZW50cywgYSBtZWNoYW5pc20ga25vd24gZnJvbSBBbmRyb2lkIGRldmVsb3BtZW50LCBlbmFibGluZ1xuICAgKiBjb250cm9sbGVkIGNvbGxhYm9yYXRpb24gYWNyb3NzIGFwcGxpY2F0aW9uIGJvdW5kYXJpZXMuIFwiU0NJT04gTWljcm9mcm9udGVuZCBQbGF0Zm9ybSBEZXZUb29sc1wiIGNhbiBoZWxwIHRvIGluc3BlY3RcbiAgICogaW50ZWdyYXRlZCBhcHBsaWNhdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gVGhlIERldlRvb2xzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGZvcm0gb2YgYSBtaWNyb2Zyb250ZW5kIHRoYXQgY2FuIGJlIGVtYmVkZGVkXG4gICAqIGxpa2UgYW55IG90aGVyIG1pY3JvZnJvbnRlbmQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxlZCBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGludGVncmF0ZVxuICAgKiBcIlNDSU9OIE1pY3JvZnJvbnRlbmQgUGxhdGZvcm0gRGV2VG9vbHNcIi5cbiAgICpcbiAgICogVHlwaWNhbGx5LCB0aGUgaG9zdCBhcHAgcHJvdmlkZXMgQVBJIHRvIGludGVncmF0ZWQgbWljcm8gYXBwcyB2aWEgdGhlIGludGVudCBtZWNoYW5pc20uIENvbnNpZGVyIHJlZ2lzdGVyaW5nIGludGVudCBoYW5kbGVyc1xuICAgKiB1bmRlciB0aGUgREkgdG9rZW4ge0BsaW5rIE1JQ1JPRlJPTlRFTkRfUExBVEZPUk1fUE9TVF9TVEFSVFVQfS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBtaWNyb2Zyb250ZW5kUGxhdGZvcm0/OiBNaWNyb2Zyb250ZW5kUGxhdGZvcm1Db25maWcgfCBUeXBlPE1pY3JvZnJvbnRlbmRQbGF0Zm9ybUNvbmZpZ0xvYWRlcj47XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIHdvcmtiZW5jaCBsYXlvdXQuIE11bHRpcGxlIGxheW91dHMgY2FuIGJlIGRlZmluZWQgaW4gdGhlIGZvcm0gb2YgcGVyc3BlY3RpdmVzLlxuICAgKiBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBhIGxheW91dCB3aXRoIG9ubHkgYSBtYWluIGFyZWEuXG4gICAqXG4gICAqIFNlZSB7QGxpbmsgV29ya2JlbmNoTGF5b3V0Rm59IGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBhbiBleGFtcGxlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGxheW91dD86IFdvcmtiZW5jaExheW91dEZuIHwgV29ya2JlbmNoUGVyc3BlY3RpdmVzO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBwZXJzaXN0ZW50IHN0b3JhZ2UgdG8gdGhlIFNDSU9OIFdvcmtiZW5jaC5cbiAgICpcbiAgICogSWYgbm90IHNldCwgdGhlIHdvcmtiZW5jaCB1c2VzIHRoZSBicm93c2VyJ3MgbG9jYWwgc3RvcmFnZSBhcyBwZXJzaXN0ZW50IHN0b3JhZ2UuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgc3RvcmFnZT86IFR5cGU8V29ya2JlbmNoU3RvcmFnZT47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZXMgdGhlIGJlaGF2aW9yIG9mIHdvcmtiZW5jaCBkaWFsb2dzLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGRpYWxvZz86IHtcbiAgICAvKipcbiAgICAgKiBDb25maWd1cmVzIHRoZSBhcmVhIHRvIGJsb2NrIGZvciBhcHBsaWNhdGlvbi1tb2RhbCBkaWFsb2dzLiBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBgd29ya2JlbmNoYC5cbiAgICAgKlxuICAgICAqIC0gKip3b3JrYmVuY2g6KiogYmxvY2tzIHRoZSB7QGxpbmsgV29ya2JlbmNoQ29tcG9uZW50fHdvcmtiZW5jaCBlbGVtZW50fSwgc3RpbGwgYWxsb3dpbmcgaW50ZXJhY3Rpb24gd2l0aCBlbGVtZW50cyBvdXRzaWRlIHRoZSB3b3JrYmVuY2ggZWxlbWVudC5cbiAgICAgKlxuICAgICAqIC0gKip2aWV3cG9ydCoqIGJsb2NrcyB0aGUgYnJvd3NlciB2aWV3cG9ydCwgcHJldmVudGluZyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBhcHBsaWNhdGlvbiB1bnRpbCBhcHBsaWNhdGlvbi1tb2RhbCBkaWFsb2dzIGFyZSBjbG9zZWQuXG4gICAgICovXG4gICAgbW9kYWxpdHlTY29wZT86ICd3b3JrYmVuY2gnIHwgJ3ZpZXdwb3J0JztcbiAgfTtcblxuICAvKipcbiAgICogQ29uZmlndXJlcyBsb2dnaW5nIGZvciB0aGUgd29ya2JlbmNoLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGxvZ2dpbmc/OiB7XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbWluaW11bSBzZXZlcml0eSBsZXZlbCBhIGxvZyBtZXNzYWdlIG11c3QgaGF2ZSBpbiBvcmRlciB0byBiZSBsb2dnZWQuIEJ5IGRlZmF1bHQsIGlmIG5vdCBzcGVjaWZpZWQsIGl0IGlzIHNldCB0byB7QGxpbmsgTG9nTGV2ZWwjSU5GT30uXG4gICAgICpcbiAgICAgKiBBdCBydW50aW1lLCB5b3UgY2FuIGNoYW5nZSB0aGUgbWluaW11bSByZXF1aXJlZCBsb2cgbGV2ZWwgYnkgc2V0dGluZyB0aGUgYGxvZ2xldmVsYCBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICovXG4gICAgbG9nTGV2ZWw/OiBMb2dMZXZlbDtcbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgbG9nIGFwcGVuZGVycyB0byBvdXRwdXQgbG9nIG1lc3NhZ2VzLiBNdWx0aXBsZSBhcHBlbmRlcnMgYXJlIGFsbG93ZWQuIEJ5IGRlZmF1bHQsIGlmIG5vdCBzcGVjaWZpZWQsIGxvZyBtZXNzYWdlcyBhcmUgd3JpdHRlbiB0byB0aGUgY29uc29sZS5cbiAgICAgKi9cbiAgICBsb2dBcHBlbmRlcnM/OiBUeXBlPExvZ0FwcGVuZGVyPltdO1xuICB9O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb2YgYnVpbHQtaW4gbWVudSBpdGVtcyBpbiB0aGUgdmlldydzIGNvbnRleHQgbWVudS5cbiAqXG4gKiBFYWNoIHByb3BlcnR5IHJlcHJlc2VudHMgYSBtZW51IGl0ZW0sIGFsbG93aW5nIGN1c3RvbWl6YXRpb24gb2YgdmlzaWJpbGl0eSwgdGV4dCwgYWNjZWxlcmF0b3JzLCBhbmQgbW9yZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaWV3TWVudUl0ZW1zQ29uZmlnIHtcbiAgY2xvc2U/OiBNZW51SXRlbUNvbmZpZztcbiAgY2xvc2VPdGhlcnM/OiBNZW51SXRlbUNvbmZpZztcbiAgY2xvc2VBbGw/OiBNZW51SXRlbUNvbmZpZztcbiAgY2xvc2VUb1RoZVJpZ2h0PzogTWVudUl0ZW1Db25maWc7XG4gIGNsb3NlVG9UaGVMZWZ0PzogTWVudUl0ZW1Db25maWc7XG4gIG1vdmVVcD86IE1lbnVJdGVtQ29uZmlnO1xuICBtb3ZlUmlnaHQ/OiBNZW51SXRlbUNvbmZpZztcbiAgbW92ZURvd24/OiBNZW51SXRlbUNvbmZpZztcbiAgbW92ZUxlZnQ/OiBNZW51SXRlbUNvbmZpZztcbiAgbW92ZVRvTmV3V2luZG93PzogTWVudUl0ZW1Db25maWc7XG59XG5cbi8qKlxuICogQ29uZmlndXJlcyBhIGJ1aWx0LWluIG1lbnUgaXRlbS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW51SXRlbUNvbmZpZyB7XG4gIHZpc2libGU/OiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0ZXh0IG9mIHRoaXMgbWVudSBpdGVtLlxuICAgKlxuICAgKiBDYW4gYmUgYSBzdHJpbmcgb3IgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBzdHJpbmcgb3IgYSB7QGxpbmsgU2lnbmFsfS5cbiAgICpcbiAgICogVGhlIGZ1bmN0aW9uIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLCBvciB1c2UgYHRvU2lnbmFsYCB0byBjb252ZXJ0IGFuIG9ic2VydmFibGUgdG8gYSBzaWduYWwuXG4gICAqL1xuICB0ZXh0Pzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyB8IFNpZ25hbDxzdHJpbmc+KTtcbiAgYWNjZWxlcmF0b3I/OiBzdHJpbmdbXTtcbiAgZ3JvdXA/OiBzdHJpbmc7XG4gIGNzc0NsYXNzPzogc3RyaW5nIHwgc3RyaW5nW107XG59XG4iXX0=
@@ -8,7 +8,7 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
10
  import { InjectionToken } from '@angular/core';
11
- import { randomUUID } from './common/uuid.util';
11
+ import { UUID } from '@scion/toolkit/uuid';
12
12
  /**
13
13
  * DI token to get a unique id of the workbench.
14
14
  *
@@ -16,6 +16,6 @@ import { randomUUID } from './common/uuid.util';
16
16
  */
17
17
  export const WORKBENCH_ID = new InjectionToken('WORKBENCH_ID', {
18
18
  providedIn: 'root',
19
- factory: () => randomUUID(),
19
+ factory: () => UUID.randomUUID(),
20
20
  });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvd29ya2JlbmNoLWlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFOUM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBUyxjQUFjLEVBQUU7SUFDckUsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRTtDQUM1QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtyYW5kb21VVUlEfSBmcm9tICcuL2NvbW1vbi91dWlkLnV0aWwnO1xuXG4vKipcbiAqIERJIHRva2VuIHRvIGdldCBhIHVuaXF1ZSBpZCBvZiB0aGUgd29ya2JlbmNoLlxuICpcbiAqIFRoZSBpZCBpcyBkaWZmZXJlbnQgZWFjaCB0aW1lIHRoZSBhcHAgaXMgcmVsb2FkZWQuIERpZmZlcmVudCB3b3JrYmVuY2ggd2luZG93cyBoYXZlIGRpZmZlcmVudCBpZHMuXG4gKi9cbmV4cG9ydCBjb25zdCBXT1JLQkVOQ0hfSUQgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignV09SS0JFTkNIX0lEJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHJhbmRvbVVVSUQoKSxcbn0pO1xuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvd29ya2JlbmNoLWlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFekM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBUyxjQUFjLEVBQUU7SUFDckUsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7Q0FDakMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VVVJRH0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXVpZCc7XG5cbi8qKlxuICogREkgdG9rZW4gdG8gZ2V0IGEgdW5pcXVlIGlkIG9mIHRoZSB3b3JrYmVuY2guXG4gKlxuICogVGhlIGlkIGlzIGRpZmZlcmVudCBlYWNoIHRpbWUgdGhlIGFwcCBpcyByZWxvYWRlZC4gRGlmZmVyZW50IHdvcmtiZW5jaCB3aW5kb3dzIGhhdmUgZGlmZmVyZW50IGlkcy5cbiAqL1xuZXhwb3J0IGNvbnN0IFdPUktCRU5DSF9JRCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdXT1JLQkVOQ0hfSUQnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gVVVJRC5yYW5kb21VVUlEKCksXG59KTtcbiJdfQ==