@scion/workbench 18.0.0-beta.1 → 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 (275) 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/common/class-list.mjs +67 -29
  7. package/esm2022/lib/common/math.util.mjs +16 -0
  8. package/esm2022/lib/common/objects.util.mjs +7 -1
  9. package/esm2022/lib/common/operators.mjs +1 -12
  10. package/esm2022/lib/common/uid.util.mjs +22 -0
  11. package/esm2022/lib/content-projection/content-as-overlay.component.mjs +85 -28
  12. package/esm2022/lib/content-projection/workbench-element-references.mjs +32 -0
  13. package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +3 -8
  14. package/esm2022/lib/dialog/movable.directive.mjs +3 -3
  15. package/esm2022/lib/dialog/resizable.directive.mjs +3 -3
  16. package/esm2022/lib/dialog/workbench-dialog.component.mjs +25 -23
  17. package/esm2022/lib/dialog/workbench-dialog.mjs +61 -1
  18. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +98 -60
  19. package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +26 -23
  20. package/esm2022/lib/executor/latest-task-executor.mjs +55 -0
  21. package/esm2022/lib/executor/single-task-executor.mjs +9 -19
  22. package/esm2022/lib/filter-field/filter-field.component.mjs +5 -5
  23. package/esm2022/lib/layout/grid-element/grid-element.component.mjs +8 -18
  24. package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +18 -21
  25. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +11 -0
  26. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v6.model.mjs +11 -0
  27. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +4 -4
  28. package/esm2022/lib/layout/migration/workbench-layout-migration-v5.service.mjs +67 -0
  29. package/esm2022/lib/layout/migration/workbench-layout-migration-v6.service.mjs +59 -0
  30. package/esm2022/lib/layout/stringifier.mjs +70 -0
  31. package/esm2022/lib/layout/workbench-layout.component.mjs +18 -22
  32. package/esm2022/lib/layout/workbench-layout.mjs +1 -1
  33. package/esm2022/lib/layout/workbench-layout.model.mjs +1 -1
  34. package/esm2022/lib/layout/workbench-layout.service.mjs +26 -24
  35. package/esm2022/lib/layout/workbench-layouts.util.mjs +1 -9
  36. package/esm2022/lib/layout/workench-layout-serializer.service.mjs +19 -27
  37. package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +3 -2
  38. package/esm2022/lib/layout//311/265workbench-layout.mjs +73 -62
  39. package/esm2022/lib/logging/logging-support.mjs +7 -13
  40. package/esm2022/lib/logging//311/265logger.mjs +10 -10
  41. package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +7 -6
  42. package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +3 -3
  43. package/esm2022/lib/message-box/workbench-message-box.component.mjs +2 -2
  44. package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +3 -2
  45. package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +22 -6
  46. package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +28 -21
  47. package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +3 -3
  48. package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +11 -1
  49. package/esm2022/lib/microfrontend-platform/manifest-object-cache.service.mjs +63 -0
  50. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +5 -4
  51. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +6 -10
  52. package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +18 -9
  53. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +7 -6
  54. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +3 -3
  55. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +15 -13
  56. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +3 -2
  57. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +6 -11
  58. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.mjs +39 -0
  59. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.mjs +120 -0
  60. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.mjs +55 -0
  61. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.mjs +19 -0
  62. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +4 -3
  63. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +11 -12
  64. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +12 -28
  65. package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +3 -3
  66. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +11 -27
  67. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +91 -71
  68. package/esm2022/lib/microfrontend-platform/public_api.mjs +2 -1
  69. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +5 -4
  70. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +18 -16
  71. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +30 -8
  72. package/esm2022/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.mjs +32 -0
  73. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +26 -8
  74. package/esm2022/lib/notification/notification-list.component.mjs +4 -8
  75. package/esm2022/lib/notification/notification.component.mjs +4 -5
  76. package/esm2022/lib/notification/notification.service.mjs +5 -4
  77. package/esm2022/lib/page-not-found/page-not-found.component.mjs +5 -7
  78. package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +11 -19
  79. package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +4 -4
  80. package/esm2022/lib/part/part-bar/part-bar.component.mjs +333 -264
  81. package/esm2022/lib/part/part-portal.pipe.mjs +8 -8
  82. package/esm2022/lib/part/part.component.mjs +33 -42
  83. package/esm2022/lib/part/view-context-menu/text.component.mjs +16 -12
  84. package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +4 -6
  85. package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +2 -2
  86. package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +48 -49
  87. package/esm2022/lib/part/view-list/view-list.component.mjs +41 -48
  88. package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +22 -26
  89. package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +15 -17
  90. package/esm2022/lib/part/view-tab/view-tab.component.mjs +99 -110
  91. package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +3 -4
  92. package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +16 -17
  93. package/esm2022/lib/part/workbench-part-action.registry.mjs +18 -42
  94. package/esm2022/lib/part/workbench-part.model.mjs +10 -1
  95. package/esm2022/lib/part/workbench-part.registry.mjs +11 -45
  96. package/esm2022/lib/part//311/265workbench-part.model.mjs +71 -55
  97. package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +3 -3
  98. package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
  99. package/esm2022/lib/perspective/workbench-perspective.registry.mjs +11 -43
  100. package/esm2022/lib/perspective/workbench-perspective.service.mjs +71 -62
  101. package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +2 -2
  102. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +62 -47
  103. package/esm2022/lib/popup/popup.component.mjs +3 -3
  104. package/esm2022/lib/popup/popup.config.mjs +27 -25
  105. package/esm2022/lib/popup/popup.service.mjs +169 -174
  106. package/esm2022/lib/portal/wb-component-portal.mjs +18 -17
  107. package/esm2022/lib/public_api.mjs +1 -1
  108. package/esm2022/lib/registry/workbench-object-registry.mjs +38 -17
  109. package/esm2022/lib/routing/public_api.mjs +2 -2
  110. package/esm2022/lib/routing/routing.model.mjs +1 -1
  111. package/esm2022/lib/routing/routing.util.mjs +215 -0
  112. package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +110 -0
  113. package/esm2022/lib/routing/workbench-dialog-differ.mjs +3 -3
  114. package/esm2022/lib/routing/workbench-layout-differ.mjs +3 -10
  115. package/esm2022/lib/routing/workbench-message-box-differ.mjs +3 -3
  116. package/esm2022/lib/routing/workbench-navigational-states.mjs +2 -2
  117. package/esm2022/lib/routing/workbench-popup-differ.mjs +3 -3
  118. package/esm2022/lib/routing/workbench-route-guards.mjs +57 -0
  119. package/esm2022/lib/routing/workbench-url-observer.service.mjs +140 -148
  120. package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +58 -0
  121. package/esm2022/lib/routing//311/265workbench-router.service.mjs +119 -74
  122. package/esm2022/lib/startup/splash/splash.component.mjs +3 -3
  123. package/esm2022/lib/startup/workbench-launcher.service.mjs +22 -10
  124. package/esm2022/lib/testing/workbench.provider.mjs +2 -2
  125. package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +15 -19
  126. package/esm2022/lib/view/public_api.mjs +1 -2
  127. package/esm2022/lib/view/view-move-handler.service.mjs +71 -56
  128. package/esm2022/lib/view/view-portal.pipe.mjs +7 -7
  129. package/esm2022/lib/view/view.component.mjs +54 -42
  130. package/esm2022/lib/view/workbench-view.model.mjs +1 -1
  131. package/esm2022/lib/view/workbench-view.registry.mjs +11 -45
  132. package/esm2022/lib/view//311/265workbench-view.model.mjs +183 -153
  133. package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +2 -2
  134. package/esm2022/lib/view-dnd/view-drag.service.mjs +87 -71
  135. package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +6 -6
  136. package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +6 -6
  137. package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +43 -56
  138. package/esm2022/lib/workbench-config.mjs +2 -2
  139. package/esm2022/lib/workbench-id.mjs +3 -3
  140. package/esm2022/lib/workbench.component.mjs +66 -54
  141. package/esm2022/lib/workbench.constants.mjs +1 -5
  142. package/esm2022/lib/workbench.model.mjs +1 -1
  143. package/esm2022/lib/workbench.provider.mjs +3 -9
  144. package/esm2022/lib/workbench.service.mjs +1 -1
  145. package/esm2022/lib//311/265workbench.service.mjs +38 -42
  146. package/fesm2022/scion-workbench.mjs +4054 -3276
  147. package/fesm2022/scion-workbench.mjs.map +1 -1
  148. package/lib/common/class-list.d.ts +35 -22
  149. package/lib/common/math.util.d.ts +7 -0
  150. package/lib/common/objects.util.d.ts +4 -0
  151. package/lib/common/operators.d.ts +1 -6
  152. package/lib/common/uid.util.d.ts +9 -0
  153. package/lib/content-projection/content-as-overlay.component.d.ts +39 -22
  154. package/lib/content-projection/workbench-element-references.d.ts +13 -0
  155. package/lib/dialog/workbench-dialog.component.d.ts +3 -2
  156. package/lib/dialog/workbench-dialog.d.ts +57 -13
  157. package/lib/dialog//311/265workbench-dialog.d.ts +38 -24
  158. package/lib/dialog//311/265workbench-dialog.service.d.ts +10 -11
  159. package/lib/executor/latest-task-executor.d.ts +26 -0
  160. package/lib/executor/single-task-executor.d.ts +5 -8
  161. package/lib/filter-field/filter-field.component.d.ts +1 -1
  162. package/lib/layout/grid-element/grid-element.component.d.ts +1 -8
  163. package/lib/layout/main-area-layout/main-area-layout.component.d.ts +0 -4
  164. package/lib/layout/migration/model/workbench-layout-migration-v5.model.d.ts +36 -0
  165. package/lib/layout/migration/model/workbench-layout-migration-v6.model.d.ts +35 -0
  166. package/lib/layout/migration/workbench-layout-migration-v5.service.d.ts +12 -0
  167. package/lib/layout/migration/workbench-layout-migration-v6.service.d.ts +12 -0
  168. package/lib/layout/stringifier.d.ts +26 -0
  169. package/lib/layout/workbench-layout.component.d.ts +4 -5
  170. package/lib/layout/workbench-layout.d.ts +9 -6
  171. package/lib/layout/workbench-layout.model.d.ts +4 -3
  172. package/lib/layout/workbench-layout.service.d.ts +14 -16
  173. package/lib/layout/workbench-layouts.util.d.ts +0 -6
  174. package/lib/layout/workench-layout-serializer.service.d.ts +13 -16
  175. package/lib/layout//311/265workbench-layout.d.ts +18 -19
  176. package/lib/layout//311/265workbench-layout.factory.d.ts +3 -2
  177. package/lib/logging//311/265logger.d.ts +2 -3
  178. package/lib/microfrontend-platform/common/microfrontend.util.d.ts +5 -1
  179. package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +7 -3
  180. package/lib/microfrontend-platform/manifest-object-cache.service.d.ts +33 -0
  181. package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +3 -6
  182. package/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.d.ts +2 -1
  183. package/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.d.ts +1 -1
  184. package/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.d.ts +2 -1
  185. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.d.ts +10 -0
  186. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.d.ts +24 -0
  187. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.d.ts +20 -0
  188. package/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.d.ts +9 -0
  189. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.d.ts +4 -8
  190. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +0 -4
  191. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +5 -12
  192. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +23 -33
  193. package/lib/microfrontend-platform/public_api.d.ts +1 -0
  194. package/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.d.ts +1 -1
  195. package/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.d.ts +3 -7
  196. package/lib/microfrontend-platform/routing/microfrontend-view-routes.d.ts +9 -2
  197. package/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.d.ts +11 -0
  198. package/lib/notification/notification-list.component.d.ts +0 -2
  199. package/lib/page-not-found/page-not-found.component.d.ts +1 -0
  200. package/lib/part/part-action-bar/part-action-bar.component.d.ts +3 -4
  201. package/lib/part/part-action-bar/part-action.directive.d.ts +2 -2
  202. package/lib/part/part-bar/part-bar.component.d.ts +73 -63
  203. package/lib/part/part-portal.pipe.d.ts +3 -5
  204. package/lib/part/part.component.d.ts +9 -12
  205. package/lib/part/view-context-menu/text.component.d.ts +3 -4
  206. package/lib/part/view-context-menu/view-menu.directive.d.ts +1 -1
  207. package/lib/part/view-context-menu/view-menu.service.d.ts +13 -17
  208. package/lib/part/view-list/view-list.component.d.ts +8 -21
  209. package/lib/part/view-list-button/view-list-button.component.d.ts +8 -11
  210. package/lib/part/view-list-item/view-list-item.component.d.ts +3 -7
  211. package/lib/part/view-tab/view-tab.component.d.ts +19 -29
  212. package/lib/part/view-tab-drag-image/view-tab-drag-image.component.d.ts +4 -4
  213. package/lib/part/workbench-part-action.registry.d.ts +3 -23
  214. package/lib/part/workbench-part.model.d.ts +8 -27
  215. package/lib/part/workbench-part.registry.d.ts +3 -26
  216. package/lib/part//311/265workbench-part.model.d.ts +23 -17
  217. package/lib/perspective/workbench-perspective.model.d.ts +18 -25
  218. package/lib/perspective/workbench-perspective.registry.d.ts +3 -26
  219. package/lib/perspective/workbench-perspective.service.d.ts +16 -14
  220. package/lib/perspective/workench-perspective-serializer.service.d.ts +1 -1
  221. package/lib/perspective//311/265workbench-perspective.model.d.ts +30 -21
  222. package/lib/popup/popup.config.d.ts +11 -10
  223. package/lib/popup/popup.service.d.ts +15 -28
  224. package/lib/portal/wb-component-portal.d.ts +21 -5
  225. package/lib/public_api.d.ts +1 -1
  226. package/lib/registry/workbench-object-registry.d.ts +10 -6
  227. package/lib/routing/public_api.d.ts +2 -2
  228. package/lib/routing/routing.model.d.ts +25 -13
  229. package/lib/routing/{router.util.d.ts → routing.util.d.ts} +28 -1
  230. package/lib/routing/{workbench-auxiliary-routes-registrator.service.d.ts → workbench-auxiliary-route-installer.service.d.ts} +10 -3
  231. package/lib/routing/workbench-layout-differ.d.ts +1 -2
  232. package/lib/routing/workbench-navigational-states.d.ts +8 -4
  233. package/lib/{view/workbench-view-route-guards.d.ts → routing/workbench-route-guards.d.ts} +8 -2
  234. package/lib/routing/workbench-url-observer.service.d.ts +31 -55
  235. package/lib/routing/workbench-view-outlet-differ.d.ts +32 -0
  236. package/lib/routing//311/265workbench-router.service.d.ts +22 -18
  237. package/lib/startup/workbench-launcher.service.d.ts +4 -5
  238. package/lib/testing/workbench.provider.d.ts +3 -1
  239. package/lib/theme/workbench-theme-switcher.service.d.ts +4 -6
  240. package/lib/view/public_api.d.ts +0 -1
  241. package/lib/view/view-move-handler.service.d.ts +16 -14
  242. package/lib/view/view-portal.pipe.d.ts +1 -3
  243. package/lib/view/view.component.d.ts +21 -12
  244. package/lib/view/workbench-view.model.d.ts +88 -36
  245. package/lib/view/workbench-view.registry.d.ts +3 -27
  246. package/lib/view//311/265workbench-view.model.d.ts +62 -71
  247. package/lib/view-dnd/view-drag.service.d.ts +79 -49
  248. package/lib/view-dnd/view-drop-placeholder-renderer.service.d.ts +1 -1
  249. package/lib/view-dnd/view-tab-drag-image-renderer.service.d.ts +12 -36
  250. package/lib/workbench-config.d.ts +19 -7
  251. package/lib/workbench.component.d.ts +16 -30
  252. package/lib/workbench.constants.d.ts +0 -5
  253. package/lib/workbench.model.d.ts +31 -3
  254. package/lib/workbench.service.d.ts +58 -56
  255. package/lib//311/265workbench.service.d.ts +18 -31
  256. package/package.json +5 -5
  257. package/esm2022/lib/common/filter-by-predicate.pipe.mjs +0 -27
  258. package/esm2022/lib/common/filter-by-text.pipe.mjs +0 -39
  259. package/esm2022/lib/common/uuid.util.mjs +0 -17
  260. package/esm2022/lib/content-projection/content-projection.directive.mjs +0 -101
  261. package/esm2022/lib/content-projection/view-container.reference.mjs +0 -68
  262. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +0 -41
  263. package/esm2022/lib/page-not-found/format-url.pipe.mjs +0 -26
  264. package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +0 -26
  265. package/esm2022/lib/routing/router.util.mjs +0 -126
  266. package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +0 -94
  267. package/esm2022/lib/view/workbench-view-route-guards.mjs +0 -47
  268. package/lib/common/filter-by-predicate.pipe.d.ts +0 -10
  269. package/lib/common/filter-by-text.pipe.d.ts +0 -12
  270. package/lib/common/uuid.util.d.ts +0 -8
  271. package/lib/content-projection/content-projection.directive.d.ts +0 -30
  272. package/lib/content-projection/view-container.reference.d.ts +0 -42
  273. package/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.d.ts +0 -10
  274. package/lib/page-not-found/format-url.pipe.d.ts +0 -11
  275. package/lib/part/part-action-bar/part-action-filter.pipe.d.ts +0 -11
@@ -19,8 +19,8 @@ export class WorkbenchGridMerger {
19
19
  * Performs a merge of given local and remote layouts, using the base layout as the common ancestor.
20
20
  */
21
21
  merge(grids) {
22
- const serializedBaseLayout = grids.base.serialize();
23
- const serializedRemoteLayout = grids.remote.serialize();
22
+ const serializedBaseLayout = grids.base.serialize({ excludeTreeNodeId: true, excludeViewNavigationId: true });
23
+ const serializedRemoteLayout = grids.remote.serialize({ excludeTreeNodeId: true, excludeViewNavigationId: true });
24
24
  if (serializedBaseLayout.workbenchGrid !== serializedRemoteLayout.workbenchGrid) {
25
25
  return grids.remote;
26
26
  }
@@ -36,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
36
36
  type: Injectable,
37
37
  args: [{ providedIn: 'root' }]
38
38
  }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWdyaWQtbWVyZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wZXJzcGVjdGl2ZS93b3JrYmVuY2gtZ3JpZC1tZXJnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBR3pDOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCOztPQUVHO0lBQ0ksS0FBSyxDQUFDLEtBQWtGO1FBQzdGLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNwRCxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFeEQsSUFBSSxvQkFBb0IsQ0FBQyxhQUFhLEtBQUssc0JBQXNCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEYsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLG9CQUFvQixDQUFDLG9CQUFvQixLQUFLLHNCQUFzQixDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDOUYsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQzs4R0FoQlUsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FEUCxNQUFNOzsyRkFDbEIsbUJBQW1CO2tCQUQvQixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoTGF5b3V0fSBmcm9tICcuLi9sYXlvdXQvybV3b3JrYmVuY2gtbGF5b3V0JztcblxuLyoqXG4gKiBQZXJmb3JtcyBhIHRocmVlLXdheSBtZXJnZSBvZiB0aGUgbG9jYWwgYW5kIHJlbW90ZSBsYXlvdXRzLCB1c2luZyB0aGUgYmFzZSBsYXlvdXQgKGNvbW1vbiBhbmNlc3RvcikgYXMgdGhlIGJhc2Ugb2YgdGhlIG1lcmdlIG9wZXJhdGlvbi5cbiAqXG4gKiBUT0RPIFsjNDUyXSBUaGlzIGltcGxlbWVudGF0aW9uIGRpc2NhcmRzIGxvY2FsIGNoYW5nZXMgd2hlbiBhIG5ldyBsYXlvdXQgaXMgYXZhaWxhYmxlLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hHcmlkTWVyZ2VyIHtcblxuICAvKipcbiAgICogUGVyZm9ybXMgYSBtZXJnZSBvZiBnaXZlbiBsb2NhbCBhbmQgcmVtb3RlIGxheW91dHMsIHVzaW5nIHRoZSBiYXNlIGxheW91dCBhcyB0aGUgY29tbW9uIGFuY2VzdG9yLlxuICAgKi9cbiAgcHVibGljIG1lcmdlKGdyaWRzOiB7bG9jYWw6IMm1V29ya2JlbmNoTGF5b3V0OyByZW1vdGU6IMm1V29ya2JlbmNoTGF5b3V0OyBiYXNlOiDJtVdvcmtiZW5jaExheW91dH0pOiDJtVdvcmtiZW5jaExheW91dCB7XG4gICAgY29uc3Qgc2VyaWFsaXplZEJhc2VMYXlvdXQgPSBncmlkcy5iYXNlLnNlcmlhbGl6ZSgpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRSZW1vdGVMYXlvdXQgPSBncmlkcy5yZW1vdGUuc2VyaWFsaXplKCk7XG5cbiAgICBpZiAoc2VyaWFsaXplZEJhc2VMYXlvdXQud29ya2JlbmNoR3JpZCAhPT0gc2VyaWFsaXplZFJlbW90ZUxheW91dC53b3JrYmVuY2hHcmlkKSB7XG4gICAgICByZXR1cm4gZ3JpZHMucmVtb3RlO1xuICAgIH1cbiAgICBpZiAoc2VyaWFsaXplZEJhc2VMYXlvdXQud29ya2JlbmNoVmlld091dGxldHMgIT09IHNlcmlhbGl6ZWRSZW1vdGVMYXlvdXQud29ya2JlbmNoVmlld091dGxldHMpIHtcbiAgICAgIHJldHVybiBncmlkcy5yZW1vdGU7XG4gICAgfVxuICAgIHJldHVybiBncmlkcy5sb2NhbDtcbiAgfVxufVxuIl19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWdyaWQtbWVyZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wZXJzcGVjdGl2ZS93b3JrYmVuY2gtZ3JpZC1tZXJnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBR3pDOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCOztPQUVHO0lBQ0ksS0FBSyxDQUFDLEtBQWtGO1FBQzdGLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUM1RyxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFFaEgsSUFBSSxvQkFBb0IsQ0FBQyxhQUFhLEtBQUssc0JBQXNCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEYsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLG9CQUFvQixDQUFDLG9CQUFvQixLQUFLLHNCQUFzQixDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDOUYsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQzs4R0FoQlUsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FEUCxNQUFNOzsyRkFDbEIsbUJBQW1CO2tCQUQvQixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoTGF5b3V0fSBmcm9tICcuLi9sYXlvdXQvybV3b3JrYmVuY2gtbGF5b3V0JztcblxuLyoqXG4gKiBQZXJmb3JtcyBhIHRocmVlLXdheSBtZXJnZSBvZiB0aGUgbG9jYWwgYW5kIHJlbW90ZSBsYXlvdXRzLCB1c2luZyB0aGUgYmFzZSBsYXlvdXQgKGNvbW1vbiBhbmNlc3RvcikgYXMgdGhlIGJhc2Ugb2YgdGhlIG1lcmdlIG9wZXJhdGlvbi5cbiAqXG4gKiBUT0RPIFsjNDUyXSBUaGlzIGltcGxlbWVudGF0aW9uIGRpc2NhcmRzIGxvY2FsIGNoYW5nZXMgd2hlbiBhIG5ldyBsYXlvdXQgaXMgYXZhaWxhYmxlLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hHcmlkTWVyZ2VyIHtcblxuICAvKipcbiAgICogUGVyZm9ybXMgYSBtZXJnZSBvZiBnaXZlbiBsb2NhbCBhbmQgcmVtb3RlIGxheW91dHMsIHVzaW5nIHRoZSBiYXNlIGxheW91dCBhcyB0aGUgY29tbW9uIGFuY2VzdG9yLlxuICAgKi9cbiAgcHVibGljIG1lcmdlKGdyaWRzOiB7bG9jYWw6IMm1V29ya2JlbmNoTGF5b3V0OyByZW1vdGU6IMm1V29ya2JlbmNoTGF5b3V0OyBiYXNlOiDJtVdvcmtiZW5jaExheW91dH0pOiDJtVdvcmtiZW5jaExheW91dCB7XG4gICAgY29uc3Qgc2VyaWFsaXplZEJhc2VMYXlvdXQgPSBncmlkcy5iYXNlLnNlcmlhbGl6ZSh7ZXhjbHVkZVRyZWVOb2RlSWQ6IHRydWUsIGV4Y2x1ZGVWaWV3TmF2aWdhdGlvbklkOiB0cnVlfSk7XG4gICAgY29uc3Qgc2VyaWFsaXplZFJlbW90ZUxheW91dCA9IGdyaWRzLnJlbW90ZS5zZXJpYWxpemUoe2V4Y2x1ZGVUcmVlTm9kZUlkOiB0cnVlLCBleGNsdWRlVmlld05hdmlnYXRpb25JZDogdHJ1ZX0pO1xuXG4gICAgaWYgKHNlcmlhbGl6ZWRCYXNlTGF5b3V0LndvcmtiZW5jaEdyaWQgIT09IHNlcmlhbGl6ZWRSZW1vdGVMYXlvdXQud29ya2JlbmNoR3JpZCkge1xuICAgICAgcmV0dXJuIGdyaWRzLnJlbW90ZTtcbiAgICB9XG4gICAgaWYgKHNlcmlhbGl6ZWRCYXNlTGF5b3V0LndvcmtiZW5jaFZpZXdPdXRsZXRzICE9PSBzZXJpYWxpemVkUmVtb3RlTGF5b3V0LndvcmtiZW5jaFZpZXdPdXRsZXRzKSB7XG4gICAgICByZXR1cm4gZ3JpZHMucmVtb3RlO1xuICAgIH1cbiAgICByZXR1cm4gZ3JpZHMubG9jYWw7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGVyc3BlY3RpdmUvd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXR9IGZyb20gJy4uL2xheW91dC93b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0RmFjdG9yeX0gZnJvbSAnLi4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQuZmFjdG9yeSc7XG5cbi8qKlxuICogQSBwZXJzcGVjdGl2ZSBpcyBhIG5hbWVkIHdvcmtiZW5jaCBsYXlvdXQuXG4gKlxuICogTXVsdGlwbGUgcGVyc3BlY3RpdmVzIGFyZSBzdXBwb3J0ZWQuIFBlcnNwZWN0aXZlcyBjYW4gYmUgc3dpdGNoZWQuIE9ubHkgb25lIHBlcnNwZWN0aXZlIGlzIGFjdGl2ZSBhdCBhIHRpbWUuXG4gKiBQZXJzcGVjdGl2ZXMgc2hhcmUgdGhlIHNhbWUgbWFpbiBhcmVhLCBpZiBhbnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmUge1xuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhpcyBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBcmJpdHJhcnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGE6IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBwZXJzcGVjdGl2ZSBpcyBhY3RpdmUuXG4gICAqIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBwZXJzcGVjdGl2ZSBhY3RpdmUgYXQgYSB0aW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aXZlOiBib29sZWFuO1xuICAvKipcbiAgICogVXBvbiBzdWJzY3JpcHRpb24sIGVtaXRzIHRoZSBjdXJyZW50IGFjdGl2ZSBzdGF0ZSBvZiB0aGlzIHBlcnNwZWN0aXZlLCBhbmQgdGhlblxuICAgKiBlbWl0cyBjb250aW51b3VzbHkgd2hlbiBpdHMgYWN0aXZlIHN0YXRlIGNoYW5nZXMuIFRoZSBPYnNlcnZhYmxlIG5ldmVyIGNvbXBsZXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGl2ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHBlcnNwZWN0aXZlIGlzIHRyYW5zaWVudCwgd2l0aCBpdHMgbGF5b3V0IG9ubHkgbWVtb2l6ZWQsIG5vdCBwZXJzaXN0ZWQuXG4gICAqL1xuICByZWFkb25seSB0cmFuc2llbnQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogRGVmaW5lcyBwZXJzcGVjdGl2ZXMgdG8gcmVnaXN0ZXIgaW4gdGhlIHdvcmtiZW5jaC5cbiAqXG4gKiBBIHBlcnNwZWN0aXZlIGlzIGFuIGFycmFuZ2VtZW50IG9mIHZpZXdzIGFyb3VuZCB0aGUgbWFpbiBhcmVhLiBNdWx0aXBsZSBwZXJzcGVjdGl2ZXMgYXJlIHN1cHBvcnRlZC5cbiAqIERpZmZlcmVudCBwZXJzcGVjdGl2ZXMgcHJvdmlkZSBhIGRpZmZlcmVudCBwZXJzcGVjdGl2ZSBvbiB0aGUgYXBwbGljYXRpb24gd2hpbGUgc2hhcmluZyB0aGUgbWFpbiBhcmVhLlxuICogT25seSBvbmUgcGVyc3BlY3RpdmUgY2FuIGJlIGFjdGl2ZSBhdCBhIHRpbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmVzIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBwZXJzcGVjdGl2ZXMgdG8gcmVnaXN0ZXIgaW4gdGhlIHdvcmtiZW5jaC5cbiAgICovXG4gIHBlcnNwZWN0aXZlczogV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uW107XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHBlcnNwZWN0aXZlIGZvciB0aGUgaW5pdGlhbCB3b3JrYmVuY2ggbGF5b3V0LlxuICAgKlxuICAgKiBDYW4gYmUgZWl0aGVyIHRoZSBpZGVudGl0eSBvZiBhIHBlcnNwZWN0aXZlIG9yIGEgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgcGVyc3BlY3RpdmUuXG4gICAqL1xuICBpbml0aWFsUGVyc3BlY3RpdmU/OiBzdHJpbmcgfCBXb3JrYmVuY2hQZXJzcGVjdGl2ZVNlbGVjdGlvbkZuO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIHBlcnNwZWN0aXZlIHRvIHJlZ2lzdGVyIGluIHRoZSB3b3JrYmVuY2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdW5pcXVlIGlkZW50aXR5IG9mIHRoZSBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBjcmVhdGUgdGhlIGluaXRpYWwgbGF5b3V0IGZvciB0aGUgcGVyc3BlY3RpdmUuIFRoZSBmdW5jdGlvbiBjYW4gY2FsbCBgaW5qZWN0YCB0byBnZXQgYW55IHJlcXVpcmVkIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogU2VlIHtAbGluayBXb3JrYmVuY2hMYXlvdXRGbn0gZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGFuIGV4YW1wbGUuXG4gICAqL1xuICBsYXlvdXQ6IFdvcmtiZW5jaExheW91dEZuO1xuICAvKipcbiAgICogQXNzb2NpYXRlcyBhcmJpdHJhcnkgZGF0YSB3aXRoIHRoZSBwZXJzcGVjdGl2ZSwgZS5nLiwgYSBsYWJlbCwgaWNvbiBvciB0b29sdGlwLlxuICAgKi9cbiAgZGF0YT86IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICAvKipcbiAgICogRGVjaWRlcyBpZiB0aGUgcGVyc3BlY3RpdmUgY2FuIGJlIGFjdGl2YXRlZC4gVGhlIGZ1bmN0aW9uIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgY2FuQWN0aXZhdGU/OiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIHBlcnNwZWN0aXZlIGFzIHRyYW5zaWVudCwgd2l0aCBpdHMgbGF5b3V0IG9ubHkgbWVtb2l6ZWQsIG5vdCBwZXJzaXN0ZWQuXG4gICAqL1xuICB0cmFuc2llbnQ/OiB0cnVlO1xufVxuXG4vKipcbiAqIFNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uIHRvIHByb3ZpZGUgYSB3b3JrYmVuY2ggbGF5b3V0LlxuICpcbiAqIFRoZSB3b3JrYmVuY2ggd2lsbCBpbnZva2UgdGhpcyBmdW5jdGlvbiB3aXRoIGEgZmFjdG9yeSB0byBjcmVhdGUgdGhlIGxheW91dC4gVGhlIGxheW91dCBpcyBpbW11dGFibGUsIHNvIGVhY2ggbW9kaWZpY2F0aW9uIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UuXG4gKiBVc2UgdGhlIGluc3RhbmNlIGZvciBmdXJ0aGVyIG1vZGlmaWNhdGlvbnMgYW5kIGZpbmFsbHkgcmV0dXJuIGl0LlxuICpcbiAqIFRoZSBmdW5jdGlvbiBjYW4gY2FsbCBgaW5qZWN0YCB0byBnZXQgYW55IHJlcXVpcmVkIGRlcGVuZGVuY2llcy5cbiAqXG4gKiAjIyBXb3JrYmVuY2ggTGF5b3V0XG4gKiBUaGUgd29ya2JlbmNoIGxheW91dCBpcyBhIGdyaWQgb2YgcGFydHMuIFBhcnRzIGFyZSBhbGlnbmVkIHJlbGF0aXZlIHRvIGVhY2ggb3RoZXIuIEEgcGFydCBpcyBhIHN0YWNrIG9mIHZpZXdzLiBDb250ZW50IGlzIGRpc3BsYXllZCBpbiB2aWV3cy5cbiAqXG4gKiBUaGUgbGF5b3V0IGNhbiBiZSBkaXZpZGVkIGludG8gYSBtYWluIGFuZCBhIHBlcmlwaGVyYWwgYXJlYSwgd2l0aCB0aGUgbWFpbiBhcmVhIGFzIHRoZSBwcmltYXJ5IHBsYWNlIGZvciBvcGVuaW5nIHZpZXdzLlxuICogVGhlIHBlcmlwaGVyYWwgYXJlYSBhcnJhbmdlcyBwYXJ0cyBhcm91bmQgdGhlIG1haW4gYXJlYSB0byBwcm92aWRlIG5hdmlnYXRpb24gb3IgY29udGV4dC1zZW5zaXRpdmUgYXNzaXN0YW5jZSB0byBzdXBwb3J0XG4gKiB0aGUgdXNlcidzIHdvcmtmbG93LiBEZWZpbmluZyBhIG1haW4gYXJlYSBpcyBvcHRpb25hbCBhbmQgcmVjb21tZW5kZWQgZm9yIGFwcGxpY2F0aW9ucyByZXF1aXJpbmcgYSBkZWRpY2F0ZWQgYW5kIG1heGltaXphYmxlXG4gKiBhcmVhIGZvciB1c2VyIGludGVyYWN0aW9uLlxuICpcbiAqICMjIFN0ZXBzIHRvIGNyZWF0ZSB0aGUgbGF5b3V0XG4gKiBTdGFydCBieSBhZGRpbmcgdGhlIGZpcnN0IHBhcnQuIEZyb20gdGhlcmUsIHlvdSBjYW4gZ3JhZHVhbGx5IGFkZCBtb3JlIHBhcnRzIGFuZCBhbGlnbiB0aGVtIHJlbGF0aXZlIHRvIGVhY2ggb3RoZXIuXG4gKiBOZXh0LCBhZGQgdmlld3MgdG8gdGhlIGxheW91dCwgc3BlY2lmeWluZyB0byB3aGljaCBwYXJ0IHRvIGFkZCB0aGUgdmlld3MuXG4gKiBUaGUgZmluYWwgc3RlcCBpcyB0byBuYXZpZ2F0ZSB0aGUgdmlld3MuIEEgdmlldyBjYW4gYmUgbmF2aWdhdGVkIHRvIGFueSByb3V0ZS5cbiAqXG4gKiBUbyBhdm9pZCBjbHV0dGVyaW5nIHRoZSBpbml0aWFsIFVSTCwgd2UgcmVjb21tZW5kIG5hdmlnYXRpbmcgdGhlIHZpZXdzIG9mIHRoZSBpbml0aWFsIGxheW91dCB0byBlbXB0eSBwYXRoIHJvdXRlcyBhbmQgdXNpbmcgYSBuYXZpZ2F0aW9uIGhpbnQgdG8gZGlmZmVyZW50aWF0ZS5cbiAqXG4gKiAjIyBFeGFtcGxlXG4gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVmaW5lcyBhIGxheW91dCB3aXRoIGEgbWFpbiBhcmVhIGFuZCB0aHJlZSBwYXJ0cyBpbiB0aGUgcGVyaXBoZXJhbCBhcmVhOlxuICpcbiAqIGBgYHBsYWluXG4gKiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLStcbiAqIHwgIHRvcCAgIHwgICBtYWluIGFyZWEgICAgfFxuICogfCAgbGVmdCAgfCAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0rICAgICAgICAgICAgICAgIHxcbiAqIHwgYm90dG9tIHwgICAgICAgICAgICAgICAgfFxuICogfCAgbGVmdCAgfCAgICAgICAgICAgICAgICB8XG4gKiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLStcbiAqIHwgICAgICAgICAgYm90dG9tICAgICAgICAgfFxuICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gKiBgYGBcbiAqXG4gKiBgYGB0c1xuICogZnVuY3Rpb24gZGVmaW5lTGF5b3V0KGZhY3Rvcnk6IFdvcmtiZW5jaExheW91dEZhY3RvcnkpOiBXb3JrYmVuY2hMYXlvdXQge1xuICogICByZXR1cm4gZmFjdG9yeVxuICogICAgIC8vIEFkZCBwYXJ0cyB0byB0aGUgbGF5b3V0LlxuICogICAgIC5hZGRQYXJ0KE1BSU5fQVJFQSlcbiAqICAgICAuYWRkUGFydCgndG9wTGVmdCcsIHtyZWxhdGl2ZVRvOiBNQUlOX0FSRUEsIGFsaWduOiAnbGVmdCcsIHJhdGlvOiAuMjV9KVxuICogICAgIC5hZGRQYXJ0KCdib3R0b21MZWZ0Jywge3JlbGF0aXZlVG86ICd0b3BMZWZ0JywgYWxpZ246ICdib3R0b20nLCByYXRpbzogLjV9KVxuICogICAgIC5hZGRQYXJ0KCdib3R0b20nLCB7YWxpZ246ICdib3R0b20nLCByYXRpbzogLjN9KVxuICpcbiAqICAgICAvLyBBZGQgdmlld3MgdG8gdGhlIGxheW91dC5cbiAqICAgICAuYWRkVmlldygnbmF2aWdhdG9yJywge3BhcnRJZDogJ3RvcExlZnQnfSlcbiAqICAgICAuYWRkVmlldygnZXhwbG9yZXInLCB7cGFydElkOiAnYm90dG9tTGVmdCd9KVxuICogICAgIC5hZGRWaWV3KCdjb25zb2xlJywge3BhcnRJZDogJ2JvdHRvbSd9KVxuICogICAgIC5hZGRWaWV3KCdwcm9ibGVtcycsIHtwYXJ0SWQ6ICdib3R0b20nfSlcbiAqICAgICAuYWRkVmlldygnc2VhcmNoJywge3BhcnRJZDogJ2JvdHRvbSd9KVxuICpcbiAqICAgICAvLyBOYXZpZ2F0ZSB2aWV3cy5cbiAqICAgICAubmF2aWdhdGVWaWV3KCduYXZpZ2F0b3InLCBbJ3BhdGgvdG8vbmF2aWdhdG9yJ10pXG4gKiAgICAgLm5hdmlnYXRlVmlldygnZXhwbG9yZXInLCBbJ3BhdGgvdG8vZXhwbG9yZXInXSlcbiAqICAgICAubmF2aWdhdGVWaWV3KCdjb25zb2xlJywgW10sIHtoaW50OiAnY29uc29sZSd9KSAvLyBTZXQgaGludCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gcm91dGVzIHdpdGggYW4gZW1wdHkgcGF0aC5cbiAqICAgICAubmF2aWdhdGVWaWV3KCdwcm9ibGVtcycsIFtdLCB7aGludDogJ3Byb2JsZW1zJ30pIC8vIFNldCBoaW50IHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiByb3V0ZXMgd2l0aCBhbiBlbXB0eSBwYXRoLlxuICogICAgIC5uYXZpZ2F0ZVZpZXcoJ3NlYXJjaCcsIFsncGF0aC90by9zZWFyY2gnXSlcbiAqXG4gKiAgICAgLy8gRGVjaWRlIHdoaWNoIHZpZXdzIHRvIGFjdGl2YXRlLlxuICogICAgIC5hY3RpdmF0ZVZpZXcoJ25hdmlnYXRvcicpXG4gKiAgICAgLmFjdGl2YXRlVmlldygnZXhwbG9yZXInKVxuICogICAgIC5hY3RpdmF0ZVZpZXcoJ2NvbnNvbGUnKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoZSBsYXlvdXQgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyByb3V0ZXMuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7Ym9vdHN0cmFwQXBwbGljYXRpb259IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuICogaW1wb3J0IHtwcm92aWRlUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuICogaW1wb3J0IHtjYW5NYXRjaFdvcmtiZW5jaFZpZXd9IGZyb20gJ0BzY2lvbi93b3JrYmVuY2gnO1xuICpcbiAqIGJvb3RzdHJhcEFwcGxpY2F0aW9uKEFwcENvbXBvbmVudCwge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlUm91dGVyKFtcbiAqICAgICAgIC8vIE5hdmlnYXRvciBWaWV3XG4gKiAgICAgICB7cGF0aDogJ3BhdGgvdG8vbmF2aWdhdG9yJywgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL25hdmlnYXRvci9uYXZpZ2F0b3IuY29tcG9uZW50Jyl9LFxuICogICAgICAgLy8gRXhwbG9yZXIgVmlld1xuICogICAgICAge3BhdGg6ICdwYXRoL3RvL2V4cGxvcmVyJywgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2V4cGxvcmVyL2V4cGxvcmVyLmNvbXBvbmVudCcpfSxcbiAqICAgICAgIC8vIFNlYXJjaCB2aWV3XG4gKiAgICAgICB7cGF0aDogJ3BhdGgvdG8vc2VhcmNoJywgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL3NlYXJjaC9zZWFyY2guY29tcG9uZW50Jyl9LFxuICogICAgICAgLy8gQ29uc29sZSB2aWV3XG4gKiAgICAgICB7cGF0aDogJycsIGNhbk1hdGNoOiBbY2FuTWF0Y2hXb3JrYmVuY2hWaWV3KCdjb25zb2xlJyldLCBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vY29uc29sZS9jb25zb2xlLmNvbXBvbmVudCcpfSxcbiAqICAgICAgIC8vIFByb2JsZW1zIHZpZXdcbiAqICAgICAgIHtwYXRoOiAnJywgY2FuTWF0Y2g6IFtjYW5NYXRjaFdvcmtiZW5jaFZpZXcoJ3Byb2JsZW1zJyldLCBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vcHJvYmxlbXMvcHJvYmxlbXMuY29tcG9uZW50Jyl9LFxuICogICAgIF0pLFxuICogICBdLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgV29ya2JlbmNoTGF5b3V0Rm4gPSAoZmFjdG9yeTogV29ya2JlbmNoTGF5b3V0RmFjdG9yeSkgPT4gUHJvbWlzZTxXb3JrYmVuY2hMYXlvdXQ+IHwgV29ya2JlbmNoTGF5b3V0O1xuXG4vKipcbiAqIFNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHByb3ZpZGVkIGluIHtAbGluayBXb3JrYmVuY2hQZXJzcGVjdGl2ZXMjaW5pdGlhbFBlcnNwZWN0aXZlfSB0byBzZWxlY3QgdGhlIHBlcnNwZWN0aXZlIGZvciB0aGUgaW5pdGlhbCB3b3JrYmVuY2ggbGF5b3V0LlxuICpcbiAqIFRoZSBmdW5jdGlvbiBpcyBwYXNzZWQgYSBsaXN0IG9mIHJlZ2lzdGVyZWQgcGVyc3BlY3RpdmVzLiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFdvcmtiZW5jaFBlcnNwZWN0aXZlU2VsZWN0aW9uRm4gPSAocGVyc3BlY3RpdmVzOiBXb3JrYmVuY2hQZXJzcGVjdGl2ZVtdKSA9PiBQcm9taXNlPFdvcmtiZW5jaFBlcnNwZWN0aXZlIHwgbnVsbD4gfCBXb3JrYmVuY2hQZXJzcGVjdGl2ZSB8IG51bGw7XG5cbi8qKlxuICogQ29udGFpbnMgZGlmZmVyZW50IHZlcnNpb25zIG9mIGEgcGVyc3BlY3RpdmUgbGF5b3V0LlxuICpcbiAqIFRoZSBNLXByZWZpeCBpbmRpY2F0ZXMgdGhpcyBvYmplY3QgaXMgYSBtb2RlbCBvYmplY3QgdGhhdCBpcyBzZXJpYWxpemVkIGFuZCBzdG9yZWQsIHJlcXVpcmluZyBtaWdyYXRpb24gb24gYnJlYWtpbmcgY2hhbmdlLlxuICpcbiAqIEBzZWUgV09SS0JFTkNIX1BFUlNQRUNUSVZFX01PREVMX1ZFUlNJT05cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNUGVyc3BlY3RpdmVMYXlvdXQge1xuICAvKipcbiAgICogTGF5b3V0IGJlZm9yZSBhbnkgdXNlciBwZXJzb25hbGl6YXRpb24gKGluaXRpYWwgbGF5b3V0KS5cbiAgICovXG4gIHJlZmVyZW5jZUxheW91dDoge1xuICAgIC8qKlxuICAgICAqIEBzZWUgV29ya2JlbmNoTGF5b3V0U2VyaWFsaXplci5zZXJpYWxpemVHcmlkXG4gICAgICogQHNlZSBXb3JrYmVuY2hMYXlvdXRTZXJpYWxpemVyLmRlc2VyaWFsaXplR3JpZFxuICAgICAqL1xuICAgIHdvcmtiZW5jaEdyaWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuc2VyaWFsaXplVmlld091dGxldHNcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuZGVzZXJpYWxpemVWaWV3T3V0bGV0c1xuICAgICAqL1xuICAgIHZpZXdPdXRsZXRzOiBzdHJpbmc7XG4gIH07XG4gIC8qKlxuICAgKiBMYXlvdXQgcGVyc29uYWxpemVkIGJ5IHRoZSB1c2VyLlxuICAgKi9cbiAgdXNlckxheW91dDoge1xuICAgIC8qKlxuICAgICAqIEBzZWUgV29ya2JlbmNoTGF5b3V0U2VyaWFsaXplci5zZXJpYWxpemVHcmlkXG4gICAgICogQHNlZSBXb3JrYmVuY2hMYXlvdXRTZXJpYWxpemVyLmRlc2VyaWFsaXplR3JpZFxuICAgICAqL1xuICAgIHdvcmtiZW5jaEdyaWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuc2VyaWFsaXplVmlld091dGxldHNcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuZGVzZXJpYWxpemVWaWV3T3V0bGV0c1xuICAgICAqL1xuICAgIHZpZXdPdXRsZXRzOiBzdHJpbmc7XG4gIH07XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGVyc3BlY3RpdmUvd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5pbXBvcnQge1dvcmtiZW5jaExheW91dH0gZnJvbSAnLi4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRGYWN0b3J5fSBmcm9tICcuLi9sYXlvdXQvd29ya2JlbmNoLWxheW91dC5mYWN0b3J5JztcbmltcG9ydCB7U2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgd29ya2JlbmNoIHBlcnNwZWN0aXZlLlxuICpcbiAqIEEgcGVyc3BlY3RpdmUgaXMgYSBuYW1lZCBhcnJhbmdlbWVudCBvZiB2aWV3cy4gRGlmZmVyZW50IHBlcnNwZWN0aXZlcyBwcm92aWRlIGEgZGlmZmVyZW50IHBlcnNwZWN0aXZlIG9uIHRoZSBhcHBsaWNhdGlvbi5cbiAqIEEgcGVyc3BlY3RpdmUgY2FuIGJlIGRpdmlkZWQgaW50byBhIG1haW4gYW5kIGEgcGVyaXBoZXJhbCBhcmVhLCB3aXRoIHRoZSBtYWluIGFyZWEgYXMgdGhlIHByaW1hcnkgcGxhY2UgZm9yIG9wZW5pbmcgdmlld3MuXG4gKiBWaWV3cyBpbiB0aGUgbWFpbiBhcmVhIGFyZSByZXRhaW5lZCB3aGVuIHN3aXRjaGluZyBwZXJzcGVjdGl2ZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmUge1xuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhpcyBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBcmJpdHJhcnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGE6IHtba2V5OiBzdHJpbmddOiB1bmtub3dufTtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgcGVyc3BlY3RpdmUgaXMgYWN0aXZlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aXZlOiBTaWduYWw8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHBlcnNwZWN0aXZlIGlzIHRyYW5zaWVudCwgd2l0aCBpdHMgbGF5b3V0IG9ubHkgbWVtb2l6ZWQsIG5vdCBwZXJzaXN0ZWQuXG4gICAqL1xuICByZWFkb25seSB0cmFuc2llbnQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogRGVmaW5lcyBwZXJzcGVjdGl2ZXMgdG8gcmVnaXN0ZXIgaW4gdGhlIHdvcmtiZW5jaC5cbiAqXG4gKiBBIHBlcnNwZWN0aXZlIGlzIGEgbmFtZWQgYXJyYW5nZW1lbnQgb2Ygdmlld3MuIERpZmZlcmVudCBwZXJzcGVjdGl2ZXMgcHJvdmlkZSBhIGRpZmZlcmVudCBwZXJzcGVjdGl2ZSBvbiB0aGUgYXBwbGljYXRpb24uXG4gKiBBIHBlcnNwZWN0aXZlIGNhbiBiZSBkaXZpZGVkIGludG8gYSBtYWluIGFuZCBhIHBlcmlwaGVyYWwgYXJlYSwgd2l0aCB0aGUgbWFpbiBhcmVhIGFzIHRoZSBwcmltYXJ5IHBsYWNlIGZvciBvcGVuaW5nIHZpZXdzLlxuICogVmlld3MgaW4gdGhlIG1haW4gYXJlYSBhcmUgcmV0YWluZWQgd2hlbiBzd2l0Y2hpbmcgcGVyc3BlY3RpdmVzLiBBIHBlcnNwZWN0aXZlIGNhbm5vdCBhZGQgdmlld3MgdG8gdGhlIG1haW4gYXJlYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrYmVuY2hQZXJzcGVjdGl2ZXMge1xuICAvKipcbiAgICogU3BlY2lmaWVzIHBlcnNwZWN0aXZlcyB0byByZWdpc3RlciBpbiB0aGUgd29ya2JlbmNoLlxuICAgKi9cbiAgcGVyc3BlY3RpdmVzPzogV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uW107XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hpY2ggcGVyc3BlY3RpdmUgdG8gYWN0aXZhdGUuIERlZmF1bHRzIHRvIHRoZSBmaXJzdCByZWdpc3RlcmVkIHBlcnNwZWN0aXZlLlxuICAgKlxuICAgKiBUaGUgd29ya2JlbmNoIHJlbWVtYmVycyB0aGUgYWN0aXZlIHBlcnNwZWN0aXZlIGFuZCBvbmx5IGV2YWx1YXRlcyB0aGlzIHByb3BlcnR5IHdoZW4gc3RhcnRpbmcgdGhlIHdvcmtiZW5jaFxuICAgKiBmb3IgdGhlIGZpcnN0IHRpbWUsIGFmdGVyIGNsZWFyaW5nIHN0b3JhZ2UsIG9yIGlmIHRoZSBhY3RpdmUgcGVyc3BlY3RpdmUgbm8gbG9uZ2VyIGV4aXN0cy5cbiAgICpcbiAgICogQ2FuIGJlIGVpdGhlciB0aGUgaWRlbnRpdHkgb2YgYSBwZXJzcGVjdGl2ZSBvciBhIGZ1bmN0aW9uIHRvIHJlc29sdmUgdGhlIHBlcnNwZWN0aXZlLlxuICAgKi9cbiAgaW5pdGlhbFBlcnNwZWN0aXZlPzogc3RyaW5nIHwgV29ya2JlbmNoUGVyc3BlY3RpdmVTZWxlY3Rpb25Gbjtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYSBwZXJzcGVjdGl2ZSB0byByZWdpc3RlciBpbiB0aGUgd29ya2JlbmNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtiZW5jaFBlcnNwZWN0aXZlRGVmaW5pdGlvbiB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHVuaXF1ZSBpZGVudGl0eSBvZiB0aGUgcGVyc3BlY3RpdmUuXG4gICAqL1xuICBpZDogc3RyaW5nO1xuICAvKipcbiAgICogRnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBpbml0aWFsIGxheW91dCBmb3IgdGhlIHBlcnNwZWN0aXZlLiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gICAqXG4gICAqIFNlZSB7QGxpbmsgV29ya2JlbmNoTGF5b3V0Rm59IGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBhbiBleGFtcGxlLlxuICAgKi9cbiAgbGF5b3V0OiBXb3JrYmVuY2hMYXlvdXRGbjtcbiAgLyoqXG4gICAqIEFzc29jaWF0ZXMgYXJiaXRyYXJ5IGRhdGEgd2l0aCB0aGUgcGVyc3BlY3RpdmUsIGUuZy4sIGEgbGFiZWwsIGljb24gb3IgdG9vbHRpcC5cbiAgICovXG4gIGRhdGE/OiB7W2tleTogc3RyaW5nXTogdW5rbm93bn07XG4gIC8qKlxuICAgKiBEZWNpZGVzIGlmIHRoZSBwZXJzcGVjdGl2ZSBjYW4gYmUgYWN0aXZhdGVkLiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICBjYW5BY3RpdmF0ZT86ICgpID0+IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuO1xuICAvKipcbiAgICogRGVmaW5lcyB0aGUgcGVyc3BlY3RpdmUgYXMgdHJhbnNpZW50LCB3aXRoIGl0cyBsYXlvdXQgb25seSBtZW1vaXplZCwgbm90IHBlcnNpc3RlZC5cbiAgICovXG4gIHRyYW5zaWVudD86IHRydWU7XG59XG5cbi8qKlxuICogU2lnbmF0dXJlIG9mIGEgZnVuY3Rpb24gdG8gcHJvdmlkZSBhIHdvcmtiZW5jaCBsYXlvdXQuXG4gKlxuICogVGhlIHdvcmtiZW5jaCB3aWxsIGludm9rZSB0aGlzIGZ1bmN0aW9uIHdpdGggYSBmYWN0b3J5IHRvIGNyZWF0ZSB0aGUgbGF5b3V0LiBUaGUgbGF5b3V0IGlzIGltbXV0YWJsZSwgc28gZWFjaCBtb2RpZmljYXRpb24gY3JlYXRlcyBhIG5ldyBpbnN0YW5jZS5cbiAqIFVzZSB0aGUgaW5zdGFuY2UgZm9yIGZ1cnRoZXIgbW9kaWZpY2F0aW9ucyBhbmQgZmluYWxseSByZXR1cm4gaXQuXG4gKlxuICogVGhlIGZ1bmN0aW9uIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLlxuICpcbiAqICMjIFdvcmtiZW5jaCBMYXlvdXRcbiAqIFRoZSB3b3JrYmVuY2ggbGF5b3V0IGlzIGEgZ3JpZCBvZiBwYXJ0cy4gUGFydHMgYXJlIGFsaWduZWQgcmVsYXRpdmUgdG8gZWFjaCBvdGhlci4gQSBwYXJ0IGlzIGEgc3RhY2sgb2Ygdmlld3MuIENvbnRlbnQgaXMgZGlzcGxheWVkIGluIHZpZXdzLlxuICpcbiAqIFRoZSBsYXlvdXQgY2FuIGJlIGRpdmlkZWQgaW50byBhIG1haW4gYW5kIGEgcGVyaXBoZXJhbCBhcmVhLCB3aXRoIHRoZSBtYWluIGFyZWEgYXMgdGhlIHByaW1hcnkgcGxhY2UgZm9yIG9wZW5pbmcgdmlld3MuXG4gKiBUaGUgcGVyaXBoZXJhbCBhcmVhIGFycmFuZ2VzIHBhcnRzIGFyb3VuZCB0aGUgbWFpbiBhcmVhIHRvIHByb3ZpZGUgbmF2aWdhdGlvbiBvciBjb250ZXh0LXNlbnNpdGl2ZSBhc3Npc3RhbmNlIHRvIHN1cHBvcnRcbiAqIHRoZSB1c2VyJ3Mgd29ya2Zsb3cuIERlZmluaW5nIGEgbWFpbiBhcmVhIGlzIG9wdGlvbmFsIGFuZCByZWNvbW1lbmRlZCBmb3IgYXBwbGljYXRpb25zIHJlcXVpcmluZyBhIGRlZGljYXRlZCBhbmQgbWF4aW1pemFibGVcbiAqIGFyZWEgZm9yIHVzZXIgaW50ZXJhY3Rpb24uXG4gKlxuICogIyMgU3RlcHMgdG8gY3JlYXRlIHRoZSBsYXlvdXRcbiAqIFN0YXJ0IGJ5IGFkZGluZyB0aGUgZmlyc3QgcGFydC4gRnJvbSB0aGVyZSwgeW91IGNhbiBncmFkdWFsbHkgYWRkIG1vcmUgcGFydHMgYW5kIGFsaWduIHRoZW0gcmVsYXRpdmUgdG8gZWFjaCBvdGhlci5cbiAqIE5leHQsIGFkZCB2aWV3cyB0byB0aGUgbGF5b3V0LCBzcGVjaWZ5aW5nIHRvIHdoaWNoIHBhcnQgdG8gYWRkIHRoZSB2aWV3cy5cbiAqIFRoZSBmaW5hbCBzdGVwIGlzIHRvIG5hdmlnYXRlIHRoZSB2aWV3cy4gQSB2aWV3IGNhbiBiZSBuYXZpZ2F0ZWQgdG8gYW55IHJvdXRlLlxuICpcbiAqIFRvIGF2b2lkIGNsdXR0ZXJpbmcgdGhlIGluaXRpYWwgVVJMLCB3ZSByZWNvbW1lbmQgbmF2aWdhdGluZyB0aGUgdmlld3Mgb2YgdGhlIGluaXRpYWwgbGF5b3V0IHRvIGVtcHR5IHBhdGggcm91dGVzIGFuZCB1c2luZyBhIG5hdmlnYXRpb24gaGludCB0byBkaWZmZXJlbnRpYXRlLlxuICpcbiAqICMjIEV4YW1wbGVcbiAqIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZWZpbmVzIGEgbGF5b3V0IHdpdGggYSBtYWluIGFyZWEgYW5kIHRocmVlIHBhcnRzIGluIHRoZSBwZXJpcGhlcmFsIGFyZWE6XG4gKlxuICogYGBgcGxhaW5cbiAqICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tK1xuICogfCAgdG9wICAgfCAgIG1haW4gYXJlYSAgICB8XG4gKiB8ICBsZWZ0ICB8ICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLSsgICAgICAgICAgICAgICAgfFxuICogfCBib3R0b20gfCAgICAgICAgICAgICAgICB8XG4gKiB8ICBsZWZ0ICB8ICAgICAgICAgICAgICAgIHxcbiAqICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tK1xuICogfCAgICAgICAgICBib3R0b20gICAgICAgICB8XG4gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAqIGBgYFxuICpcbiAqIGBgYHRzXG4gKiBmdW5jdGlvbiBkZWZpbmVMYXlvdXQoZmFjdG9yeTogV29ya2JlbmNoTGF5b3V0RmFjdG9yeSk6IFdvcmtiZW5jaExheW91dCB7XG4gKiAgIHJldHVybiBmYWN0b3J5XG4gKiAgICAgLy8gQWRkIHBhcnRzIHRvIHRoZSBsYXlvdXQuXG4gKiAgICAgLmFkZFBhcnQoTUFJTl9BUkVBKVxuICogICAgIC5hZGRQYXJ0KCd0b3BMZWZ0Jywge3JlbGF0aXZlVG86IE1BSU5fQVJFQSwgYWxpZ246ICdsZWZ0JywgcmF0aW86IC4yNX0pXG4gKiAgICAgLmFkZFBhcnQoJ2JvdHRvbUxlZnQnLCB7cmVsYXRpdmVUbzogJ3RvcExlZnQnLCBhbGlnbjogJ2JvdHRvbScsIHJhdGlvOiAuNX0pXG4gKiAgICAgLmFkZFBhcnQoJ2JvdHRvbScsIHthbGlnbjogJ2JvdHRvbScsIHJhdGlvOiAuM30pXG4gKlxuICogICAgIC8vIEFkZCB2aWV3cyB0byB0aGUgbGF5b3V0LlxuICogICAgIC5hZGRWaWV3KCduYXZpZ2F0b3InLCB7cGFydElkOiAndG9wTGVmdCd9KVxuICogICAgIC5hZGRWaWV3KCdleHBsb3JlcicsIHtwYXJ0SWQ6ICdib3R0b21MZWZ0J30pXG4gKiAgICAgLmFkZFZpZXcoJ2NvbnNvbGUnLCB7cGFydElkOiAnYm90dG9tJ30pXG4gKiAgICAgLmFkZFZpZXcoJ3Byb2JsZW1zJywge3BhcnRJZDogJ2JvdHRvbSd9KVxuICogICAgIC5hZGRWaWV3KCdzZWFyY2gnLCB7cGFydElkOiAnYm90dG9tJ30pXG4gKlxuICogICAgIC8vIE5hdmlnYXRlIHZpZXdzLlxuICogICAgIC5uYXZpZ2F0ZVZpZXcoJ25hdmlnYXRvcicsIFsncGF0aC90by9uYXZpZ2F0b3InXSlcbiAqICAgICAubmF2aWdhdGVWaWV3KCdleHBsb3JlcicsIFsncGF0aC90by9leHBsb3JlciddKVxuICogICAgIC5uYXZpZ2F0ZVZpZXcoJ2NvbnNvbGUnLCBbXSwge2hpbnQ6ICdjb25zb2xlJ30pIC8vIFNldCBoaW50IHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiByb3V0ZXMgd2l0aCBhbiBlbXB0eSBwYXRoLlxuICogICAgIC5uYXZpZ2F0ZVZpZXcoJ3Byb2JsZW1zJywgW10sIHtoaW50OiAncHJvYmxlbXMnfSkgLy8gU2V0IGhpbnQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHJvdXRlcyB3aXRoIGFuIGVtcHR5IHBhdGguXG4gKiAgICAgLm5hdmlnYXRlVmlldygnc2VhcmNoJywgWydwYXRoL3RvL3NlYXJjaCddKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoZSBsYXlvdXQgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyByb3V0ZXMuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7Ym9vdHN0cmFwQXBwbGljYXRpb259IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuICogaW1wb3J0IHtwcm92aWRlUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuICogaW1wb3J0IHtjYW5NYXRjaFdvcmtiZW5jaFZpZXd9IGZyb20gJ0BzY2lvbi93b3JrYmVuY2gnO1xuICpcbiAqIGJvb3RzdHJhcEFwcGxpY2F0aW9uKEFwcENvbXBvbmVudCwge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlUm91dGVyKFtcbiAqICAgICAgIC8vIE5hdmlnYXRvciBWaWV3XG4gKiAgICAgICB7cGF0aDogJ3BhdGgvdG8vbmF2aWdhdG9yJywgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL25hdmlnYXRvci9uYXZpZ2F0b3IuY29tcG9uZW50Jyl9LFxuICogICAgICAgLy8gRXhwbG9yZXIgVmlld1xuICogICAgICAge3BhdGg6ICdwYXRoL3RvL2V4cGxvcmVyJywgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2V4cGxvcmVyL2V4cGxvcmVyLmNvbXBvbmVudCcpfSxcbiAqICAgICAgIC8vIFNlYXJjaCB2aWV3XG4gKiAgICAgICB7cGF0aDogJ3BhdGgvdG8vc2VhcmNoJywgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL3NlYXJjaC9zZWFyY2guY29tcG9uZW50Jyl9LFxuICogICAgICAgLy8gQ29uc29sZSB2aWV3XG4gKiAgICAgICB7cGF0aDogJycsIGNhbk1hdGNoOiBbY2FuTWF0Y2hXb3JrYmVuY2hWaWV3KCdjb25zb2xlJyldLCBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vY29uc29sZS9jb25zb2xlLmNvbXBvbmVudCcpfSxcbiAqICAgICAgIC8vIFByb2JsZW1zIHZpZXdcbiAqICAgICAgIHtwYXRoOiAnJywgY2FuTWF0Y2g6IFtjYW5NYXRjaFdvcmtiZW5jaFZpZXcoJ3Byb2JsZW1zJyldLCBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vcHJvYmxlbXMvcHJvYmxlbXMuY29tcG9uZW50Jyl9LFxuICogICAgIF0pLFxuICogICBdLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgV29ya2JlbmNoTGF5b3V0Rm4gPSAoZmFjdG9yeTogV29ya2JlbmNoTGF5b3V0RmFjdG9yeSkgPT4gUHJvbWlzZTxXb3JrYmVuY2hMYXlvdXQ+IHwgV29ya2JlbmNoTGF5b3V0O1xuXG4vKipcbiAqIFNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHByb3ZpZGVkIGluIHtAbGluayBXb3JrYmVuY2hQZXJzcGVjdGl2ZXMjaW5pdGlhbFBlcnNwZWN0aXZlfSB0byBzZWxlY3QgdGhlIHBlcnNwZWN0aXZlIGZvciB0aGUgaW5pdGlhbCB3b3JrYmVuY2ggbGF5b3V0LlxuICpcbiAqIFRoZSBmdW5jdGlvbiBpcyBwYXNzZWQgYSBsaXN0IG9mIHJlZ2lzdGVyZWQgcGVyc3BlY3RpdmVzLiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFdvcmtiZW5jaFBlcnNwZWN0aXZlU2VsZWN0aW9uRm4gPSAocGVyc3BlY3RpdmVzOiBXb3JrYmVuY2hQZXJzcGVjdGl2ZVtdKSA9PiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4gfCBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ29udGFpbnMgZGlmZmVyZW50IHZlcnNpb25zIG9mIGEgcGVyc3BlY3RpdmUgbGF5b3V0LlxuICpcbiAqIFRoZSBNLXByZWZpeCBpbmRpY2F0ZXMgdGhpcyBvYmplY3QgaXMgYSBtb2RlbCBvYmplY3QgdGhhdCBpcyBzZXJpYWxpemVkIGFuZCBzdG9yZWQsIHJlcXVpcmluZyBtaWdyYXRpb24gb24gYnJlYWtpbmcgY2hhbmdlLlxuICpcbiAqIEBzZWUgV09SS0JFTkNIX1BFUlNQRUNUSVZFX01PREVMX1ZFUlNJT05cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNUGVyc3BlY3RpdmVMYXlvdXQge1xuICAvKipcbiAgICogTGF5b3V0IGJlZm9yZSBhbnkgdXNlciBwZXJzb25hbGl6YXRpb24gKGluaXRpYWwgbGF5b3V0KS5cbiAgICovXG4gIHJlZmVyZW5jZUxheW91dDoge1xuICAgIC8qKlxuICAgICAqIEBzZWUgV29ya2JlbmNoTGF5b3V0U2VyaWFsaXplci5zZXJpYWxpemVHcmlkXG4gICAgICogQHNlZSBXb3JrYmVuY2hMYXlvdXRTZXJpYWxpemVyLmRlc2VyaWFsaXplR3JpZFxuICAgICAqL1xuICAgIHdvcmtiZW5jaEdyaWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuc2VyaWFsaXplVmlld091dGxldHNcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuZGVzZXJpYWxpemVWaWV3T3V0bGV0c1xuICAgICAqL1xuICAgIHZpZXdPdXRsZXRzOiBzdHJpbmc7XG4gIH07XG4gIC8qKlxuICAgKiBMYXlvdXQgcGVyc29uYWxpemVkIGJ5IHRoZSB1c2VyLlxuICAgKi9cbiAgdXNlckxheW91dDoge1xuICAgIC8qKlxuICAgICAqIEBzZWUgV29ya2JlbmNoTGF5b3V0U2VyaWFsaXplci5zZXJpYWxpemVHcmlkXG4gICAgICogQHNlZSBXb3JrYmVuY2hMYXlvdXRTZXJpYWxpemVyLmRlc2VyaWFsaXplR3JpZFxuICAgICAqL1xuICAgIHdvcmtiZW5jaEdyaWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuc2VyaWFsaXplVmlld091dGxldHNcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuZGVzZXJpYWxpemVWaWV3T3V0bGV0c1xuICAgICAqL1xuICAgIHZpZXdPdXRsZXRzOiBzdHJpbmc7XG4gIH07XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2018-2023 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
@@ -7,49 +7,17 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { Injectable } from '@angular/core';
10
+ import { InjectionToken } from '@angular/core';
11
11
  import { WorkbenchObjectRegistry } from '../registry/workbench-object-registry';
12
- import * as i0 from "@angular/core";
13
12
  /**
14
13
  * Registry for {@link ɵWorkbenchPerspective} model objects.
15
14
  */
16
- export class WorkbenchPerspectiveRegistry {
17
- constructor() {
18
- this._registry = new WorkbenchObjectRegistry({
19
- keyFn: perspective => perspective.id,
20
- nullObjectErrorFn: perspectiveId => Error(`[NullPerspectiveError] Perspective '${perspectiveId}' not found.`),
21
- });
22
- }
23
- /**
24
- * Registers given perspective.
25
- */
26
- register(perspective) {
27
- this._registry.register(perspective);
28
- }
29
- get(perspectiveId, options) {
30
- return this._registry.get(perspectiveId, options);
31
- }
32
- /**
33
- * Indicates whether a perspective with the specified identity exists or not.
34
- */
35
- has(perspectiveId) {
36
- return this._registry.has(perspectiveId);
37
- }
38
- get perspectives() {
39
- return this._registry.objects;
40
- }
41
- get perspectives$() {
42
- return this._registry.objects$;
43
- }
44
- ngOnDestroy() {
45
- this._registry.objects.forEach(perspective => perspective.destroy());
46
- this._registry.clear();
47
- }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
49
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveRegistry, providedIn: 'root' }); }
50
- }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveRegistry, decorators: [{
52
- type: Injectable,
53
- args: [{ providedIn: 'root' }]
54
- }] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLnJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGVyc3BlY3RpdmUvd29ya2JlbmNoLXBlcnNwZWN0aXZlLnJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFHOUU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sNEJBQTRCO0lBRHpDO1FBR1UsY0FBUyxHQUFHLElBQUksdUJBQXVCLENBQWdDO1lBQzdFLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3BDLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxhQUFhLGNBQWMsQ0FBQztTQUM5RyxDQUFDLENBQUM7S0FxQ0o7SUFuQ0M7O09BRUc7SUFDSSxRQUFRLENBQUMsV0FBa0M7UUFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQU9NLEdBQUcsQ0FBQyxhQUFxQixFQUFFLE9BQXdCO1FBQ3hELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7T0FFRztJQUNJLEdBQUcsQ0FBQyxhQUFxQjtRQUM5QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDOzhHQXpDVSw0QkFBNEI7a0hBQTVCLDRCQUE0QixjQURoQixNQUFNOzsyRkFDbEIsNEJBQTRCO2tCQUR4QyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7V29ya2JlbmNoT2JqZWN0UmVnaXN0cnl9IGZyb20gJy4uL3JlZ2lzdHJ5L3dvcmtiZW5jaC1vYmplY3QtcmVnaXN0cnknO1xuaW1wb3J0IHvJtVdvcmtiZW5jaFBlcnNwZWN0aXZlfSBmcm9tICcuL8m1d29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsJztcblxuLyoqXG4gKiBSZWdpc3RyeSBmb3Ige0BsaW5rIMm1V29ya2JlbmNoUGVyc3BlY3RpdmV9IG1vZGVsIG9iamVjdHMuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaFBlcnNwZWN0aXZlUmVnaXN0cnkgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX3JlZ2lzdHJ5ID0gbmV3IFdvcmtiZW5jaE9iamVjdFJlZ2lzdHJ5PHN0cmluZywgybVXb3JrYmVuY2hQZXJzcGVjdGl2ZT4oe1xuICAgIGtleUZuOiBwZXJzcGVjdGl2ZSA9PiBwZXJzcGVjdGl2ZS5pZCxcbiAgICBudWxsT2JqZWN0RXJyb3JGbjogcGVyc3BlY3RpdmVJZCA9PiBFcnJvcihgW051bGxQZXJzcGVjdGl2ZUVycm9yXSBQZXJzcGVjdGl2ZSAnJHtwZXJzcGVjdGl2ZUlkfScgbm90IGZvdW5kLmApLFxuICB9KTtcblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGdpdmVuIHBlcnNwZWN0aXZlLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyKHBlcnNwZWN0aXZlOiDJtVdvcmtiZW5jaFBlcnNwZWN0aXZlKTogdm9pZCB7XG4gICAgdGhpcy5fcmVnaXN0cnkucmVnaXN0ZXIocGVyc3BlY3RpdmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHtAbGluayDJtVdvcmtiZW5jaFBlcnNwZWN0aXZlfSBvZiB0aGUgZ2l2ZW4gaWRlbnRpdHkuIElmIG5vdCBmb3VuZCwgYnkgZGVmYXVsdCwgdGhyb3dzIGFuIGVycm9yIHVubGVzcyBzZXR0aW5nIHRoZSBgb3JFbHNlTnVsbGAgb3B0aW9uLlxuICAgKi9cbiAgcHVibGljIGdldChwZXJzcGVjdGl2ZUlkOiBzdHJpbmcpOiDJtVdvcmtiZW5jaFBlcnNwZWN0aXZlO1xuICBwdWJsaWMgZ2V0KHBlcnNwZWN0aXZlSWQ6IHN0cmluZywgb3B0aW9uczoge29yRWxzZTogbnVsbH0pOiDJtVdvcmtiZW5jaFBlcnNwZWN0aXZlIHwgbnVsbDtcbiAgcHVibGljIGdldChwZXJzcGVjdGl2ZUlkOiBzdHJpbmcsIG9wdGlvbnM/OiB7b3JFbHNlOiBudWxsfSk6IMm1V29ya2JlbmNoUGVyc3BlY3RpdmUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcmVnaXN0cnkuZ2V0KHBlcnNwZWN0aXZlSWQsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGEgcGVyc3BlY3RpdmUgd2l0aCB0aGUgc3BlY2lmaWVkIGlkZW50aXR5IGV4aXN0cyBvciBub3QuXG4gICAqL1xuICBwdWJsaWMgaGFzKHBlcnNwZWN0aXZlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZWdpc3RyeS5oYXMocGVyc3BlY3RpdmVJZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBlcnNwZWN0aXZlcygpOiByZWFkb25seSDJtVdvcmtiZW5jaFBlcnNwZWN0aXZlW10ge1xuICAgIHJldHVybiB0aGlzLl9yZWdpc3RyeS5vYmplY3RzO1xuICB9XG5cbiAgcHVibGljIGdldCBwZXJzcGVjdGl2ZXMkKCk6IE9ic2VydmFibGU8cmVhZG9ubHkgybVXb3JrYmVuY2hQZXJzcGVjdGl2ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5Lm9iamVjdHMkO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3JlZ2lzdHJ5Lm9iamVjdHMuZm9yRWFjaChwZXJzcGVjdGl2ZSA9PiBwZXJzcGVjdGl2ZS5kZXN0cm95KCkpO1xuICAgIHRoaXMuX3JlZ2lzdHJ5LmNsZWFyKCk7XG4gIH1cbn1cbiJdfQ==
15
+ export const WORKBENCH_PERSPECTIVE_REGISTRY = new InjectionToken('WORKBENCH_PERSPECTIVE_REGISTRY', {
16
+ providedIn: 'root',
17
+ factory: () => new WorkbenchObjectRegistry({
18
+ keyFn: perspective => perspective.id,
19
+ nullObjectErrorFn: perspectiveId => Error(`[NullPerspectiveError] Perspective '${perspectiveId}' not found.`),
20
+ onUnregister: perspective => perspective.destroy(),
21
+ }),
22
+ });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLnJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGVyc3BlY3RpdmUvd29ya2JlbmNoLXBlcnNwZWN0aXZlLnJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUc5RTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUF5RCxnQ0FBZ0MsRUFBRTtJQUN6SixVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSx1QkFBdUIsQ0FBZ0M7UUFDeEUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUU7UUFDcEMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsdUNBQXVDLGFBQWEsY0FBYyxDQUFDO1FBQzdHLFlBQVksRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7S0FDbkQsQ0FBQztDQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dvcmtiZW5jaE9iamVjdFJlZ2lzdHJ5fSBmcm9tICcuLi9yZWdpc3RyeS93b3JrYmVuY2gtb2JqZWN0LXJlZ2lzdHJ5JztcbmltcG9ydCB7ybVXb3JrYmVuY2hQZXJzcGVjdGl2ZX0gZnJvbSAnLi/JtXdvcmtiZW5jaC1wZXJzcGVjdGl2ZS5tb2RlbCc7XG5cbi8qKlxuICogUmVnaXN0cnkgZm9yIHtAbGluayDJtVdvcmtiZW5jaFBlcnNwZWN0aXZlfSBtb2RlbCBvYmplY3RzLlxuICovXG5leHBvcnQgY29uc3QgV09SS0JFTkNIX1BFUlNQRUNUSVZFX1JFR0lTVFJZID0gbmV3IEluamVjdGlvblRva2VuPFdvcmtiZW5jaE9iamVjdFJlZ2lzdHJ5PHN0cmluZywgybVXb3JrYmVuY2hQZXJzcGVjdGl2ZT4+KCdXT1JLQkVOQ0hfUEVSU1BFQ1RJVkVfUkVHSVNUUlknLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gbmV3IFdvcmtiZW5jaE9iamVjdFJlZ2lzdHJ5PHN0cmluZywgybVXb3JrYmVuY2hQZXJzcGVjdGl2ZT4oe1xuICAgIGtleUZuOiBwZXJzcGVjdGl2ZSA9PiBwZXJzcGVjdGl2ZS5pZCxcbiAgICBudWxsT2JqZWN0RXJyb3JGbjogcGVyc3BlY3RpdmVJZCA9PiBFcnJvcihgW051bGxQZXJzcGVjdGl2ZUVycm9yXSBQZXJzcGVjdGl2ZSAnJHtwZXJzcGVjdGl2ZUlkfScgbm90IGZvdW5kLmApLFxuICAgIG9uVW5yZWdpc3RlcjogcGVyc3BlY3RpdmUgPT4gcGVyc3BlY3RpdmUuZGVzdHJveSgpLFxuICB9KSxcbn0pO1xuIl19
@@ -7,46 +7,50 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { Inject, Injectable, runInInjectionContext } from '@angular/core';
11
- import { ɵWorkbenchPerspective } from './ɵworkbench-perspective.model';
12
- import { WORKBENCH_LAYOUT_CONFIG } from '../workbench.constants';
10
+ import { ApplicationInitStatus, createEnvironmentInjector, EnvironmentInjector, inject, Injectable, runInInjectionContext } from '@angular/core';
11
+ import { ACTIVE_PERSPECTIVE, ɵWorkbenchPerspective } from './ɵworkbench-perspective.model';
12
+ import { WorkbenchPerspectiveStorageService } from './workbench-perspective-storage.service';
13
13
  import { ANONYMOUS_PERSPECTIVE_ID_PREFIX } from '../workbench.constants';
14
14
  import { MAIN_AREA } from '../layout/workbench-layout';
15
+ import { WorkbenchConfig } from '../workbench-config';
16
+ import { WORKBENCH_PERSPECTIVE_REGISTRY } from './workbench-perspective.registry';
15
17
  import * as i0 from "@angular/core";
16
- import * as i1 from "./workbench-perspective.registry";
17
- import * as i2 from "./workbench-perspective-storage.service";
18
- import * as i3 from "../startup/workbench-launcher.service";
19
- import * as i4 from "../logging/logger";
20
18
  /**
21
19
  * Enables registration and activation of perspectives.
22
20
  */
23
21
  export class WorkbenchPerspectiveService {
24
- constructor(_layoutConfig, _perspectiveRegistry, _environmentInjector, _workbenchPerspectiveStorageService, workbenchStartup, logger) {
25
- this._layoutConfig = _layoutConfig;
26
- this._perspectiveRegistry = _perspectiveRegistry;
27
- this._environmentInjector = _environmentInjector;
28
- this._workbenchPerspectiveStorageService = _workbenchPerspectiveStorageService;
29
- workbenchStartup.whenStarted
30
- .then(() => this.activateInitialPerspective())
31
- .catch(error => logger.error(() => 'Failed to initialize perspectives', error));
22
+ constructor() {
23
+ this._workbenchConfig = inject(WorkbenchConfig);
24
+ this._perspectiveRegistry = inject(WORKBENCH_PERSPECTIVE_REGISTRY);
25
+ this._environmentInjector = inject(EnvironmentInjector);
26
+ this._applicationInitStatus = inject(ApplicationInitStatus);
27
+ this._workbenchPerspectiveStorageService = inject(WorkbenchPerspectiveStorageService);
28
+ this.activePerspective = inject(ACTIVE_PERSPECTIVE);
32
29
  }
33
30
  async init() {
34
31
  await this.registerPerspectivesFromConfig();
35
32
  await this.registerAnonymousPerspectiveFromWindowName();
33
+ await this.activateInitialPerspective();
36
34
  }
37
35
  /**
38
36
  * Registers perspectives configured in {@link WorkbenchConfig}.
39
37
  */
40
38
  async registerPerspectivesFromConfig() {
41
- // Register perspective either from function or object config.
42
- if (typeof this._layoutConfig === 'function') {
43
- await this.registerPerspective({ id: DEFAULT_WORKBENCH_PERSPECTIVE_ID, layout: this._layoutConfig });
39
+ const layout = this._workbenchConfig.layout;
40
+ // Create perspective from layout (if any).
41
+ if (typeof layout === 'function') {
42
+ await this.registerPerspective({ id: DEFAULT_WORKBENCH_PERSPECTIVE_ID, layout });
44
43
  }
45
- else {
46
- for (const perspective of this._layoutConfig.perspectives) {
44
+ // Register configured perspectives (if any).
45
+ else if (layout?.perspectives?.length) {
46
+ for (const perspective of layout.perspectives) {
47
47
  await this.registerPerspective(perspective);
48
48
  }
49
49
  }
50
+ // Register default perspective if no perspective is registered.
51
+ else if (this._perspectiveRegistry.isEmpty()) {
52
+ await this.registerPerspective({ id: DEFAULT_WORKBENCH_PERSPECTIVE_ID, layout: ((factory) => factory.addPart(MAIN_AREA)) });
53
+ }
50
54
  }
51
55
  /**
52
56
  * Registers an anonymous perspective if the window name indicates it.
@@ -73,8 +77,12 @@ export class WorkbenchPerspectiveService {
73
77
  if (definition.canActivate && !(await runInInjectionContext(this._environmentInjector, () => definition.canActivate()))) {
74
78
  return;
75
79
  }
76
- const perspective = runInInjectionContext(this._environmentInjector, () => new ɵWorkbenchPerspective(definition));
77
- this._perspectiveRegistry.register(perspective);
80
+ this._perspectiveRegistry.register(this.createPerspective(definition));
81
+ }
82
+ createPerspective(definition) {
83
+ // Construct the handle in an injection context that shares the perspective's lifecycle, allowing for automatic cleanup of effects and RxJS interop functions.
84
+ const perspectiveEnvironmentInjector = createEnvironmentInjector([], this._environmentInjector, `Workbench Perspective ${definition.id}`);
85
+ return runInInjectionContext(perspectiveEnvironmentInjector, () => new ɵWorkbenchPerspective(definition));
78
86
  }
79
87
  /**
80
88
  * Switches to the specified perspective. The main area will not change, if any.
@@ -85,7 +93,7 @@ export class WorkbenchPerspectiveService {
85
93
  * @return `true` if activated the perspective, otherwise `false`.
86
94
  */
87
95
  async switchPerspective(id, options) {
88
- if (this.activePerspective?.id === id) {
96
+ if (this.activePerspective()?.id === id) {
89
97
  return true;
90
98
  }
91
99
  const activated = await this._perspectiveRegistry.get(id).activate();
@@ -99,58 +107,59 @@ export class WorkbenchPerspectiveService {
99
107
  * Resets the currently active perspective to its initial layout. The main area will not change.
100
108
  */
101
109
  async resetPerspective() {
102
- await this.activePerspective?.reset();
110
+ await this.activePerspective()?.reset();
103
111
  }
104
112
  /**
105
- * Activates the initial perspective, if any.
113
+ * Activates the initial perspective.
106
114
  */
107
115
  async activateInitialPerspective() {
108
- // Determine the initial perspective.
109
- const initialPerspectiveId = await (async () => {
110
- // Determine the initial perspective using information from the window name.
111
- const perspectiveFromWindow = parsePerspectiveIdFromWindowName();
112
- if (perspectiveFromWindow && this._perspectiveRegistry.has(perspectiveFromWindow)) {
113
- return perspectiveFromWindow;
114
- }
115
- // Determine the initial perspective using information from the storage.
116
- const perspectiveFromStorage = await this._workbenchPerspectiveStorageService.loadActivePerspectiveId();
117
- if (perspectiveFromStorage && this._perspectiveRegistry.has(perspectiveFromStorage)) {
118
- return perspectiveFromStorage;
119
- }
120
- // Determine the initial perspective using information from the config.
121
- const perspectiveFromConfig = typeof this._layoutConfig === 'object' ? this._layoutConfig.initialPerspective : null;
122
- if (!perspectiveFromConfig) {
123
- return this._perspectiveRegistry.perspectives[0]?.id;
124
- }
125
- if (typeof perspectiveFromConfig === 'string') {
126
- return perspectiveFromConfig;
127
- }
128
- if (typeof perspectiveFromConfig === 'function') {
129
- return (await runInInjectionContext(this._environmentInjector, () => perspectiveFromConfig([...this._perspectiveRegistry.perspectives])))?.id;
130
- }
131
- return undefined;
132
- })();
133
- // Select initial perspective.
134
- if (initialPerspectiveId) {
135
- await this.switchPerspective(initialPerspectiveId, { storePerspectiveAsActive: false });
116
+ if (this._perspectiveRegistry.isEmpty()) {
117
+ throw Error('[NullPerspectiveError] No perspective found to activate.');
118
+ }
119
+ const perspectiveId = await this.determineInitialPerspective() ?? this._perspectiveRegistry.objects()[0].id;
120
+ const activation = this.switchPerspective(perspectiveId, { storePerspectiveAsActive: false });
121
+ // Switching perspective blocks until the initial navigation has been performed. By default, Angular performs
122
+ // the initial navigation after running app initializers. Therefore, do not await perspective activation when
123
+ // starting the workbench during app initialization. Otherwise, Angular would never complete app initialization.
124
+ if (this._applicationInitStatus.done) {
125
+ await activation;
136
126
  }
137
127
  }
138
128
  /**
139
- * Returns the currently active perspective, or `null` if there is no current perspective.
129
+ * Determines which perspective to activate, with the following precedence:
130
+ *
131
+ * 1. Perspective defined as window name.
132
+ * 2. Perspective defined in storage.
133
+ * 3. Perspective configured in the workbench config.
140
134
  */
141
- get activePerspective() {
142
- return this._perspectiveRegistry.perspectives.find(perspective => perspective.active) ?? null;
135
+ async determineInitialPerspective() {
136
+ // Find perspective in window name.
137
+ const perspectiveFromWindow = parsePerspectiveIdFromWindowName();
138
+ if (perspectiveFromWindow && this._perspectiveRegistry.has(perspectiveFromWindow)) {
139
+ return perspectiveFromWindow;
140
+ }
141
+ // Find perspective in storage.
142
+ const perspectiveFromStorage = await this._workbenchPerspectiveStorageService.loadActivePerspectiveId();
143
+ if (perspectiveFromStorage && this._perspectiveRegistry.has(perspectiveFromStorage)) {
144
+ return perspectiveFromStorage;
145
+ }
146
+ // Find perspective in config.
147
+ const perspectiveFromConfig = typeof this._workbenchConfig.layout === 'object' && this._workbenchConfig.layout.initialPerspective;
148
+ if (typeof perspectiveFromConfig === 'string') {
149
+ return perspectiveFromConfig;
150
+ }
151
+ if (typeof perspectiveFromConfig === 'function') {
152
+ return (await runInInjectionContext(this._environmentInjector, () => perspectiveFromConfig([...this._perspectiveRegistry.objects()])));
153
+ }
154
+ return undefined;
143
155
  }
144
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveService, deps: [{ token: WORKBENCH_LAYOUT_CONFIG }, { token: i1.WorkbenchPerspectiveRegistry }, { token: i0.EnvironmentInjector }, { token: i2.WorkbenchPerspectiveStorageService }, { token: i3.WorkbenchStartup }, { token: i4.Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
156
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
145
157
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveService, providedIn: 'root' }); }
146
158
  }
147
159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPerspectiveService, decorators: [{
148
160
  type: Injectable,
149
161
  args: [{ providedIn: 'root' }]
150
- }], ctorParameters: () => [{ type: undefined, decorators: [{
151
- type: Inject,
152
- args: [WORKBENCH_LAYOUT_CONFIG]
153
- }] }, { type: i1.WorkbenchPerspectiveRegistry }, { type: i0.EnvironmentInjector }, { type: i2.WorkbenchPerspectiveStorageService }, { type: i3.WorkbenchStartup }, { type: i4.Logger }] });
162
+ }] });
154
163
  /**
155
164
  * Identifier for the "default" perspective that the workbench creates if not providing a named layout.
156
165
  */
@@ -168,4 +177,4 @@ function parsePerspectiveIdFromWindowName() {
168
177
  const windowNameRegex = new RegExp(`^${generatePerspectiveWindowName('(?<perspective>.+)')}$`);
169
178
  return window.name.match(windowNameRegex)?.groups['perspective'] ?? null;
170
179
  }
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wZXJzcGVjdGl2ZS93b3JrYmVuY2gtcGVyc3BlY3RpdmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBc0IsTUFBTSxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQU9yRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQUVyRDs7R0FFRztBQUVILE1BQU0sT0FBTywyQkFBMkI7SUFFdEMsWUFBcUQsYUFBd0QsRUFDekYsb0JBQWtELEVBQ2xELG9CQUF5QyxFQUN6QyxtQ0FBdUUsRUFDL0UsZ0JBQWtDLEVBQ2xDLE1BQWM7UUFMMkIsa0JBQWEsR0FBYixhQUFhLENBQTJDO1FBQ3pGLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBOEI7UUFDbEQseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6Qyx3Q0FBbUMsR0FBbkMsbUNBQW1DLENBQW9DO1FBR3pGLGdCQUFnQixDQUFDLFdBQVc7YUFDekIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO2FBQzdDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFD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ZSxDQUFDLEVBQUUsTUFBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuaW1wb3J0IHtFbnZpcm9ubWVudEluamVjdG9yLCBJbmplY3QsIEluamVjdGFibGUsIHJ1bkluSW5qZWN0aW9uQ29udGV4dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoUGVyc3BlY3RpdmV9IGZyb20gJy4vybV3b3JrYmVuY2gtcGVyc3BlY3RpdmUubW9kZWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRGbiwgV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uLCBXb3JrYmVuY2hQZXJzcGVjdGl2ZXN9IGZyb20gJy4vd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsJztcbmltcG9ydCB7V29ya2JlbmNoSW5pdGlhbGl6ZXJ9IGZyb20gJy4uL3N0YXJ0dXAvd29ya2JlbmNoLWluaXRpYWxpemVyJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQge1dvcmtiZW5jaFN0YXJ0dXB9IGZyb20gJy4uL3N0YXJ0dXAvd29ya2JlbmNoLWxhdW5jaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtXb3JrYmVuY2hQZXJzcGVjdGl2ZVJlZ2lzdHJ5fSBmcm9tICcuL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS5yZWdpc3RyeSc7XG5pbXBvcnQge1dvcmtiZW5jaFBlcnNwZWN0aXZlU3RvcmFnZVNlcnZpY2V9IGZyb20gJy4vd29ya2JlbmNoLXBlcnNwZWN0aXZlLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1dPUktCRU5DSF9MQVlPVVRfQ09ORklHfSBmcm9tICcuLi93b3JrYmVuY2guY29uc3RhbnRzJztcbmltcG9ydCB7QU5PTllNT1VTX1BFUlNQRUNUSVZFX0lEX1BSRUZJWH0gZnJvbSAnLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5pbXBvcnQge01BSU5fQVJFQX0gZnJvbSAnLi4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQnO1xuXG4vKipcbiAqIEVuYWJsZXMgcmVnaXN0cmF0aW9uIGFuZCBhY3RpdmF0aW9uIG9mIHBlcnNwZWN0aXZlcy5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoUGVyc3BlY3RpdmVTZXJ2aWNlIGltcGxlbWVudHMgV29ya2JlbmNoSW5pdGlhbGl6ZXIge1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoV09SS0JFTkNIX0xBWU9VVF9DT05GSUcpIHByaXZhdGUgX2xheW91dENvbmZpZzogV29ya2JlbmNoTGF5b3V0Rm4gfCBXb3JrYmVuY2hQZXJzcGVjdGl2ZXMsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3BlcnNwZWN0aXZlUmVnaXN0cnk6IFdvcmtiZW5jaFBlcnNwZWN0aXZlUmVnaXN0cnksXG4gICAgICAgICAgICAgIHByaXZhdGUgX2Vudmlyb25tZW50SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3dvcmtiZW5jaFBlcnNwZWN0aXZlU3RvcmFnZVNlcnZpY2U6IFdvcmtiZW5jaFBlcnNwZWN0aXZlU3RvcmFnZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHdvcmtiZW5jaFN0YXJ0dXA6IFdvcmtiZW5jaFN0YXJ0dXAsXG4gICAgICAgICAgICAgIGxvZ2dlcjogTG9nZ2VyKSB7XG4gICAgd29ya2JlbmNoU3RhcnR1cC53aGVuU3RhcnRlZFxuICAgICAgLnRoZW4oKCkgPT4gdGhpcy5hY3RpdmF0ZUluaXRpYWxQZXJzcGVjdGl2ZSgpKVxuICAgICAgLmNhdGNoKGVycm9yID0+IGxvZ2dlci5lcnJvcigoKSA9PiAnRmFpbGVkIHRvIGluaXRpYWxpemUgcGVyc3BlY3RpdmVzJywgZXJyb3IpKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJQZXJzcGVjdGl2ZXNGcm9tQ29uZmlnKCk7XG4gICAgYXdhaXQgdGhpcy5yZWdpc3RlckFub255bW91c1BlcnNwZWN0aXZlRnJvbVdpbmRvd05hbWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgcGVyc3BlY3RpdmVzIGNvbmZpZ3VyZWQgaW4ge0BsaW5rIFdvcmtiZW5jaENvbmZpZ30uXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlZ2lzdGVyUGVyc3BlY3RpdmVzRnJvbUNvbmZpZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBSZWdpc3RlciBwZXJzcGVjdGl2ZSBlaXRoZXIgZnJvbSBmdW5jdGlvbiBvciBvYmplY3QgY29uZmlnLlxuICAgIGlmICh0eXBlb2YgdGhpcy5fbGF5b3V0Q29uZmlnID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyUGVyc3BlY3RpdmUoe2lkOiBERUZBVUxUX1dPUktCRU5DSF9QRVJTUEVDVElWRV9JRCwgbGF5b3V0OiB0aGlzLl9sYXlvdXRDb25maWd9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IHBlcnNwZWN0aXZlIG9mIHRoaXMuX2xheW91dENvbmZpZy5wZXJzcGVjdGl2ZXMpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWdpc3RlclBlcnNwZWN0aXZlKHBlcnNwZWN0aXZlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGFuIGFub255bW91cyBwZXJzcGVjdGl2ZSBpZiB0aGUgd2luZG93IG5hbWUgaW5kaWNhdGVzIGl0LlxuICAgKiBUaGUgcGVyc3BlY3RpdmUgaXMgbWFya2VkIHRyYW5zaWVudCwgd2l0aCBpdHMgbGF5b3V0IG9ubHkgbWVtb2l6ZWQsIG5vdCBwZXJzaXN0ZWQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlZ2lzdGVyQW5vbnltb3VzUGVyc3BlY3RpdmVGcm9tV2luZG93TmFtZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB3aW5kb3dQZXJzcGVjdGl2ZUlkID0gcGFyc2VQZXJzcGVjdGl2ZUlkRnJvbVdpbmRvd05hbWUoKTtcbiAgICBpZiAod2luZG93UGVyc3BlY3RpdmVJZD8uc3RhcnRzV2l0aChBTk9OWU1PVVNfUEVSU1BFQ1RJVkVfSURfUFJFRklYKSkge1xuICAgICAgYXdhaXQgdGhpcy5yZWdpc3RlclBlcnNwZWN0aXZlKHtcbiAgICAgICAgaWQ6IHdpbmRvd1BlcnNwZWN0aXZlSWQsXG4gICAgICAgIGxheW91dDogZmFjdG9yeSA9PiBmYWN0b3J5LmFkZFBhcnQoTUFJTl9BUkVBKSxcbiAgICAgICAgdHJhbnNpZW50OiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGUgZ2l2ZW4gcGVyc3BlY3RpdmUgdG8gYXJyYW5nZSB2aWV3cyBhcm91bmQgdGhlIG1haW4gYXJlYS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZWdpc3RlclBlcnNwZWN0aXZlKGRlZmluaXRpb246IFdvcmtiZW5jaFBlcnNwZWN0aXZlRGVmaW5pdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBlcnNwZWN0aXZlSWQgPSBkZWZpbml0aW9uLmlkO1xuXG4gICAgaWYgKHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkuaGFzKHBlcnNwZWN0aXZlSWQpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgRmFpbGVkIHRvIHJlZ2lzdGVyIHBlcnNwZWN0aXZlICcke3BlcnNwZWN0aXZlSWR9Jy4gQW5vdGhlciBwZXJzcGVjdGl2ZSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgdW5kZXIgdGhhdCBpZGVudGl0eS5gKTtcbiAgICB9XG4gICAgaWYgKGRlZmluaXRpb24uY2FuQWN0aXZhdGUgJiYgIShhd2FpdCBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5fZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4gZGVmaW5pdGlvbi5jYW5BY3RpdmF0ZSEoKSkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGVyc3BlY3RpdmUgPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5fZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4gbmV3IMm1V29ya2JlbmNoUGVyc3BlY3RpdmUoZGVmaW5pdGlvbikpO1xuICAgIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkucmVnaXN0ZXIocGVyc3BlY3RpdmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN3aXRjaGVzIHRvIHRoZSBzcGVjaWZpZWQgcGVyc3BlY3RpdmUuIFRoZSBtYWluIGFyZWEgd2lsbCBub3QgY2hhbmdlLCBpZiBhbnkuXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIFNwZWNpZmllcyB0aGUgaWQgb2YgdGhlIHBlcnNwZWN0aXZlIHRvIGFjdGl2YXRlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbnRyb2xzIGFjdGl2YXRpb24gb2YgdGhlIHBlcnNwZWN0aXZlLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5zdG9yZVBlcnNwZWN0aXZlQXNBY3RpdmUgLSBDb250cm9scyBpZiB0byBzdG9yZSB0aGUgcGVyc3BlY3RpdmUgYXMgdGhlIGFjdGl2ZSBwZXJzcGVjdGl2ZS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqIEByZXR1cm4gYHRydWVgIGlmIGFjdGl2YXRlZCB0aGUgcGVyc3BlY3RpdmUsIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHN3aXRjaFBlcnNwZWN0aXZlKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiB7c3RvcmVQZXJzcGVjdGl2ZUFzQWN0aXZlPzogYm9vbGVhbn0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5hY3RpdmVQZXJzcGVjdGl2ZT8uaWQgPT09IGlkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgYWN0aXZhdGVkID0gYXdhaXQgdGhpcy5fcGVyc3BlY3RpdmVSZWdpc3RyeS5nZXQoaWQpLmFjdGl2YXRlKCk7XG4gICAgaWYgKGFjdGl2YXRlZCAmJiAob3B0aW9ucz8uc3RvcmVQZXJzcGVjdGl2ZUFzQWN0aXZlID8/IHRydWUpKSB7XG4gICAgICBhd2FpdCB0aGlzLl93b3JrYmVuY2hQZXJzcGVjdGl2ZVN0b3JhZ2VTZXJ2aWNlLnN0b3JlQWN0aXZlUGVyc3BlY3RpdmVJZChpZCk7XG4gICAgICB3aW5kb3cubmFtZSA9IGdlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKGlkKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGl2YXRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGN1cnJlbnRseSBhY3RpdmUgcGVyc3BlY3RpdmUgdG8gaXRzIGluaXRpYWwgbGF5b3V0LiBUaGUgbWFpbiBhcmVhIHdpbGwgbm90IGNoYW5nZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZXNldFBlcnNwZWN0aXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuYWN0aXZlUGVyc3BlY3RpdmU/LnJlc2V0KCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIHRoZSBpbml0aWFsIHBlcnNwZWN0aXZlLCBpZiBhbnkuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGFjdGl2YXRlSW5pdGlhbFBlcnNwZWN0aXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIERldGVybWluZSB0aGUgaW5pdGlhbCBwZXJzcGVjdGl2ZS5cbiAgICBjb25zdCBpbml0aWFsUGVyc3BlY3RpdmVJZCA9IGF3YWl0IChhc3luYyAoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICAgIC8vIERldGVybWluZSB0aGUgaW5pdGlhbCBwZXJzcGVjdGl2ZSB1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSB3aW5kb3cgbmFtZS5cbiAgICAgIGNvbnN0IHBlcnNwZWN0aXZlRnJvbVdpbmRvdyA9IHBhcnNlUGVyc3BlY3RpdmVJZEZyb21XaW5kb3dOYW1lKCk7XG4gICAgICBpZiAocGVyc3BlY3RpdmVGcm9tV2luZG93ICYmIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkuaGFzKHBlcnNwZWN0aXZlRnJvbVdpbmRvdykpIHtcbiAgICAgICAgcmV0dXJuIHBlcnNwZWN0aXZlRnJvbVdpbmRvdztcbiAgICAgIH1cblxuICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBpbml0aWFsIHBlcnNwZWN0aXZlIHVzaW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIHN0b3JhZ2UuXG4gICAgICBjb25zdCBwZXJzcGVjdGl2ZUZyb21TdG9yYWdlID0gYXdhaXQgdGhpcy5fd29ya2JlbmNoUGVyc3BlY3RpdmVTdG9yYWdlU2VydmljZS5sb2FkQWN0aXZlUGVyc3BlY3RpdmVJZCgpO1xuICAgICAgaWYgKHBlcnNwZWN0aXZlRnJvbVN0b3JhZ2UgJiYgdGhpcy5fcGVyc3BlY3RpdmVSZWdpc3RyeS5oYXMocGVyc3BlY3RpdmVGcm9tU3RvcmFnZSkpIHtcbiAgICAgICAgcmV0dXJuIHBlcnNwZWN0aXZlRnJvbVN0b3JhZ2U7XG4gICAgICB9XG5cbiAgICAgIC8vIERldGVybWluZSB0aGUgaW5pdGlhbCBwZXJzcGVjdGl2ZSB1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjb25maWcuXG4gICAgICBjb25zdCBwZXJzcGVjdGl2ZUZyb21Db25maWcgPSB0eXBlb2YgdGhpcy5fbGF5b3V0Q29uZmlnID09PSAnb2JqZWN0JyA/IHRoaXMuX2xheW91dENvbmZpZy5pbml0aWFsUGVyc3BlY3RpdmUgOiBudWxsO1xuICAgICAgaWYgKCFwZXJzcGVjdGl2ZUZyb21Db25maWcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkucGVyc3BlY3RpdmVzWzBdPy5pZDtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgcGVyc3BlY3RpdmVGcm9tQ29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gcGVyc3BlY3RpdmVGcm9tQ29uZmlnO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBwZXJzcGVjdGl2ZUZyb21Db25maWcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5fZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4gcGVyc3BlY3RpdmVGcm9tQ29uZmlnKFsuLi50aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LnBlcnNwZWN0aXZlc10pKSk/LmlkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KSgpO1xuXG4gICAgLy8gU2VsZWN0IGluaXRpYWwgcGVyc3BlY3RpdmUuXG4gICAgaWYgKGluaXRpYWxQZXJzcGVjdGl2ZUlkKSB7XG4gICAgICBhd2FpdCB0aGlzLnN3aXRjaFBlcnNwZWN0aXZlKGluaXRpYWxQZXJzcGVjdGl2ZUlkLCB7c3RvcmVQZXJzcGVjdGl2ZUFzQWN0aXZlOiBmYWxzZX0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50bHkgYWN0aXZlIHBlcnNwZWN0aXZlLCBvciBgbnVsbGAgaWYgdGhlcmUgaXMgbm8gY3VycmVudCBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIHByaXZhdGUgZ2V0IGFjdGl2ZVBlcnNwZWN0aXZlKCk6IMm1V29ya2JlbmNoUGVyc3BlY3RpdmUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVyc3BlY3RpdmVSZWdpc3RyeS5wZXJzcGVjdGl2ZXMuZmluZChwZXJzcGVjdGl2ZSA9PiBwZXJzcGVjdGl2ZS5hY3RpdmUpID8/IG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBJZGVudGlmaWVyIGZvciB0aGUgXCJkZWZhdWx0XCIgcGVyc3BlY3RpdmUgdGhhdCB0aGUgd29ya2JlbmNoIGNyZWF0ZXMgaWYgbm90IHByb3ZpZGluZyBhIG5hbWVkIGxheW91dC5cbiAqL1xuY29uc3QgREVGQVVMVF9XT1JLQkVOQ0hfUEVSU1BFQ1RJVkVfSUQgPSAnZGVmYXVsdCc7XG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSB3aW5kb3cgbmFtZSBmb3IgZ2l2ZW4gcGVyc3BlY3RpdmUgdG8gY29udHJvbCB3aGljaCBwZXJzcGVjdGl2ZSB0byBkaXNwbGF5IGluIGEgd2luZG93LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQZXJzcGVjdGl2ZVdpbmRvd05hbWUocGVyc3BlY3RpdmVJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBzY2lvbi53b3JrYmVuY2gucGVyc3BlY3RpdmUuJHtwZXJzcGVjdGl2ZUlkfWA7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBwZXJzcGVjdGl2ZSBpZGVudGl0eSBmcm9tIHRoZSB3aW5kb3cgbmFtZSwgcmV0dXJuaW5nIGBudWxsYCBpZiBub3Qgc2V0LlxuICovXG5mdW5jdGlvbiBwYXJzZVBlcnNwZWN0aXZlSWRGcm9tV2luZG93TmFtZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3Qgd2luZG93TmFtZVJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7Z2VuZXJhdGVQZXJzcGVjdGl2ZVdpbmRvd05hbWUoJyg/PHBlcnNwZWN0aXZlPi4rKScpfSRgKTtcbiAgcmV0dXJuIHdpbmRvdy5uYW1lLm1hdGNoKHdpbmRvd05hbWVSZWdleCk/Lmdyb3VwcyFbJ3BlcnNwZWN0aXZlJ10gPz8gbnVsbDtcbn1cbiJdfQ==
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wZXJzcGVjdGl2ZS93b3JrYmVuY2gtcGVyc3BlY3RpdmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBQyxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9JLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBR3pGLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzNGLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFcEQsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7O0FBRWhGOztHQUVHO0FBRUgsTUFBTSxPQUFPLDJCQUEyQjtJQUR4QztRQUdtQixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0MseUJBQW9CLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDOUQseUJBQW9CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbkQsMkJBQXNCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdkQsd0NBQW1DLEdBQUcsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFFbEYsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFD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LENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekksQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7OEdBdEpVLDJCQUEyQjtrSEFBM0IsMkJBQTJCLGNBRGYsTUFBTTs7MkZBQ2xCLDJCQUEyQjtrQkFEdkMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBMEpoQzs7R0FFRztBQUNILE1BQU0sZ0NBQWdDLEdBQUcsU0FBUyxDQUFDO0FBRW5EOztHQUVHO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QixDQUFDLGFBQXFCO0lBQ2pFLE9BQU8sK0JBQStCLGFBQWEsRUFBRSxDQUFDO0FBQ3hELENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZ0NBQWdDO0lBQ3ZDLE1BQU0sZUFBZSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksNkJBQTZCLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0YsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsRUFBRSxNQUFPLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDO0FBQzVFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5pbXBvcnQge0FwcGxpY2F0aW9uSW5pdFN0YXR1cywgY3JlYXRlRW52aXJvbm1lbnRJbmplY3RvciwgRW52aXJvbm1lbnRJbmplY3RvciwgaW5qZWN0LCBJbmplY3RhYmxlLCBydW5JbkluamVjdGlvbkNvbnRleHR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBQ1RJVkVfUEVSU1BFQ1RJVkUsIMm1V29ya2JlbmNoUGVyc3BlY3RpdmV9IGZyb20gJy4vybV3b3JrYmVuY2gtcGVyc3BlY3RpdmUubW9kZWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hQZXJzcGVjdGl2ZURlZmluaXRpb259IGZyb20gJy4vd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsJztcbmltcG9ydCB7V29ya2JlbmNoSW5pdGlhbGl6ZXJ9IGZyb20gJy4uL3N0YXJ0dXAvd29ya2JlbmNoLWluaXRpYWxpemVyJztcbmltcG9ydCB7V29ya2JlbmNoUGVyc3BlY3RpdmVTdG9yYWdlU2VydmljZX0gZnJvbSAnLi93b3JrYmVuY2gtcGVyc3BlY3RpdmUtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7QU5PTllNT1VTX1BFUlNQRUNUSVZFX0lEX1BSRUZJWH0gZnJvbSAnLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5pbXBvcnQge01BSU5fQVJFQX0gZnJvbSAnLi4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQnO1xuaW1wb3J0IHtXb3JrYmVuY2hDb25maWd9IGZyb20gJy4uL3dvcmtiZW5jaC1jb25maWcnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRGYWN0b3J5fSBmcm9tICcuLi9sYXlvdXQvd29ya2JlbmNoLWxheW91dC5mYWN0b3J5JztcbmltcG9ydCB7V09SS0JFTkNIX1BFUlNQRUNUSVZFX1JFR0lTVFJZfSBmcm9tICcuL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS5yZWdpc3RyeSc7XG5cbi8qKlxuICogRW5hYmxlcyByZWdpc3RyYXRpb24gYW5kIGFjdGl2YXRpb24gb2YgcGVyc3BlY3RpdmVzLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hQZXJzcGVjdGl2ZVNlcnZpY2UgaW1wbGVtZW50cyBXb3JrYmVuY2hJbml0aWFsaXplciB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfd29ya2JlbmNoQ29uZmlnID0gaW5qZWN0KFdvcmtiZW5jaENvbmZpZyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlcnNwZWN0aXZlUmVnaXN0cnkgPSBpbmplY3QoV09SS0JFTkNIX1BFUlNQRUNUSVZFX1JFR0lTVFJZKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZW52aXJvbm1lbnRJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25Jbml0U3RhdHVzID0gaW5qZWN0KEFwcGxpY2F0aW9uSW5pdFN0YXR1cyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dvcmtiZW5jaFBlcnNwZWN0aXZlU3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoV29ya2JlbmNoUGVyc3BlY3RpdmVTdG9yYWdlU2VydmljZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZVBlcnNwZWN0aXZlID0gaW5qZWN0KEFDVElWRV9QRVJTUEVDVElWRSk7XG5cbiAgcHVibGljIGFzeW5jIGluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5yZWdpc3RlclBlcnNwZWN0aXZlc0Zyb21Db25maWcoKTtcbiAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyQW5vbnltb3VzUGVyc3BlY3RpdmVGcm9tV2luZG93TmFtZSgpO1xuICAgIGF3YWl0IHRoaXMuYWN0aXZhdGVJbml0aWFsUGVyc3BlY3RpdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgcGVyc3BlY3RpdmVzIGNvbmZpZ3VyZWQgaW4ge0BsaW5rIFdvcmtiZW5jaENvbmZpZ30uXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlZ2lzdGVyUGVyc3BlY3RpdmVzRnJvbUNvbmZpZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsYXlvdXQgPSB0aGlzLl93b3JrYmVuY2hDb25maWcubGF5b3V0O1xuXG4gICAgLy8gQ3JlYXRlIHBlcnNwZWN0aXZlIGZyb20gbGF5b3V0IChpZiBhbnkpLlxuICAgIGlmICh0eXBlb2YgbGF5b3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyUGVyc3BlY3RpdmUoe2lkOiBERUZBVUxUX1dPUktCRU5DSF9QRVJTUEVDVElWRV9JRCwgbGF5b3V0fSk7XG4gICAgfVxuICAgIC8vIFJlZ2lzdGVyIGNvbmZpZ3VyZWQgcGVyc3BlY3RpdmVzIChpZiBhbnkpLlxuICAgIGVsc2UgaWYgKGxheW91dD8ucGVyc3BlY3RpdmVzPy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgcGVyc3BlY3RpdmUgb2YgbGF5b3V0LnBlcnNwZWN0aXZlcykge1xuICAgICAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyUGVyc3BlY3RpdmUocGVyc3BlY3RpdmUpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBSZWdpc3RlciBkZWZhdWx0IHBlcnNwZWN0aXZlIGlmIG5vIHBlcnNwZWN0aXZlIGlzIHJlZ2lzdGVyZWQuXG4gICAgZWxzZSBpZiAodGhpcy5fcGVyc3BlY3RpdmVSZWdpc3RyeS5pc0VtcHR5KCkpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJQZXJzcGVjdGl2ZSh7aWQ6IERFRkFVTFRfV09SS0JFTkNIX1BFUlNQRUNUSVZFX0lELCBsYXlvdXQ6ICgoZmFjdG9yeTogV29ya2JlbmNoTGF5b3V0RmFjdG9yeSkgPT4gZmFjdG9yeS5hZGRQYXJ0KE1BSU5fQVJFQSkpfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhbiBhbm9ueW1vdXMgcGVyc3BlY3RpdmUgaWYgdGhlIHdpbmRvdyBuYW1lIGluZGljYXRlcyBpdC5cbiAgICogVGhlIHBlcnNwZWN0aXZlIGlzIG1hcmtlZCB0cmFuc2llbnQsIHdpdGggaXRzIGxheW91dCBvbmx5IG1lbW9pemVkLCBub3QgcGVyc2lzdGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZWdpc3RlckFub255bW91c1BlcnNwZWN0aXZlRnJvbVdpbmRvd05hbWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgd2luZG93UGVyc3BlY3RpdmVJZCA9IHBhcnNlUGVyc3BlY3RpdmVJZEZyb21XaW5kb3dOYW1lKCk7XG4gICAgaWYgKHdpbmRvd1BlcnNwZWN0aXZlSWQ/LnN0YXJ0c1dpdGgoQU5PTllNT1VTX1BFUlNQRUNUSVZFX0lEX1BSRUZJWCkpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJQZXJzcGVjdGl2ZSh7XG4gICAgICAgIGlkOiB3aW5kb3dQZXJzcGVjdGl2ZUlkLFxuICAgICAgICBsYXlvdXQ6IGZhY3RvcnkgPT4gZmFjdG9yeS5hZGRQYXJ0KE1BSU5fQVJFQSksXG4gICAgICAgIHRyYW5zaWVudDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgdGhlIGdpdmVuIHBlcnNwZWN0aXZlIHRvIGFycmFuZ2Ugdmlld3MgYXJvdW5kIHRoZSBtYWluIGFyZWEuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVnaXN0ZXJQZXJzcGVjdGl2ZShkZWZpbml0aW9uOiBXb3JrYmVuY2hQZXJzcGVjdGl2ZURlZmluaXRpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwZXJzcGVjdGl2ZUlkID0gZGVmaW5pdGlvbi5pZDtcblxuICAgIGlmICh0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LmhhcyhwZXJzcGVjdGl2ZUlkKSkge1xuICAgICAgdGhyb3cgRXJyb3IoYEZhaWxlZCB0byByZWdpc3RlciBwZXJzcGVjdGl2ZSAnJHtwZXJzcGVjdGl2ZUlkfScuIEFub3RoZXIgcGVyc3BlY3RpdmUgaXMgYWxyZWFkeSByZWdpc3RlcmVkIHVuZGVyIHRoYXQgaWRlbnRpdHkuYCk7XG4gICAgfVxuICAgIGlmIChkZWZpbml0aW9uLmNhbkFjdGl2YXRlICYmICEoYXdhaXQgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuX2Vudmlyb25tZW50SW5qZWN0b3IsICgpID0+IGRlZmluaXRpb24uY2FuQWN0aXZhdGUhKCkpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkucmVnaXN0ZXIodGhpcy5jcmVhdGVQZXJzcGVjdGl2ZShkZWZpbml0aW9uKSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVBlcnNwZWN0aXZlKGRlZmluaXRpb246IFdvcmtiZW5jaFBlcnNwZWN0aXZlRGVmaW5pdGlvbik6IMm1V29ya2JlbmNoUGVyc3BlY3RpdmUge1xuICAgIC8vIENvbnN0cnVjdCB0aGUgaGFuZGxlIGluIGFuIGluamVjdGlvbiBjb250ZXh0IHRoYXQgc2hhcmVzIHRoZSBwZXJzcGVjdGl2ZSdzIGxpZmVjeWNsZSwgYWxsb3dpbmcgZm9yIGF1dG9tYXRpYyBjbGVhbnVwIG9mIGVmZmVjdHMgYW5kIFJ4SlMgaW50ZXJvcCBmdW5jdGlvbnMuXG4gICAgY29uc3QgcGVyc3BlY3RpdmVFbnZpcm9ubWVudEluamVjdG9yID0gY3JlYXRlRW52aXJvbm1lbnRJbmplY3RvcihbXSwgdGhpcy5fZW52aXJvbm1lbnRJbmplY3RvciwgYFdvcmtiZW5jaCBQZXJzcGVjdGl2ZSAke2RlZmluaXRpb24uaWR9YCk7XG4gICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dChwZXJzcGVjdGl2ZUVudmlyb25tZW50SW5qZWN0b3IsICgpID0+IG5ldyDJtVdvcmtiZW5jaFBlcnNwZWN0aXZlKGRlZmluaXRpb24pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTd2l0Y2hlcyB0byB0aGUgc3BlY2lmaWVkIHBlcnNwZWN0aXZlLiBUaGUgbWFpbiBhcmVhIHdpbGwgbm90IGNoYW5nZSwgaWYgYW55LlxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBTcGVjaWZpZXMgdGhlIGlkIG9mIHRoZSBwZXJzcGVjdGl2ZSB0byBhY3RpdmF0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb250cm9scyBhY3RpdmF0aW9uIG9mIHRoZSBwZXJzcGVjdGl2ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMuc3RvcmVQZXJzcGVjdGl2ZUFzQWN0aXZlIC0gQ29udHJvbHMgaWYgdG8gc3RvcmUgdGhlIHBlcnNwZWN0aXZlIGFzIHRoZSBhY3RpdmUgcGVyc3BlY3RpdmUuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKiBAcmV0dXJuIGB0cnVlYCBpZiBhY3RpdmF0ZWQgdGhlIHBlcnNwZWN0aXZlLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzd2l0Y2hQZXJzcGVjdGl2ZShpZDogc3RyaW5nLCBvcHRpb25zPzoge3N0b3JlUGVyc3BlY3RpdmVBc0FjdGl2ZT86IGJvb2xlYW59KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuYWN0aXZlUGVyc3BlY3RpdmUoKT8uaWQgPT09IGlkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgYWN0aXZhdGVkID0gYXdhaXQgdGhpcy5fcGVyc3BlY3RpdmVSZWdpc3RyeS5nZXQoaWQpLmFjdGl2YXRlKCk7XG4gICAgaWYgKGFjdGl2YXRlZCAmJiAob3B0aW9ucz8uc3RvcmVQZXJzcGVjdGl2ZUFzQWN0aXZlID8/IHRydWUpKSB7XG4gICAgICBhd2FpdCB0aGlzLl93b3JrYmVuY2hQZXJzcGVjdGl2ZVN0b3JhZ2VTZXJ2aWNlLnN0b3JlQWN0aXZlUGVyc3BlY3RpdmVJZChpZCk7XG4gICAgICB3aW5kb3cubmFtZSA9IGdlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKGlkKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGl2YXRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGN1cnJlbnRseSBhY3RpdmUgcGVyc3BlY3RpdmUgdG8gaXRzIGluaXRpYWwgbGF5b3V0LiBUaGUgbWFpbiBhcmVhIHdpbGwgbm90IGNoYW5nZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZXNldFBlcnNwZWN0aXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuYWN0aXZlUGVyc3BlY3RpdmUoKT8ucmVzZXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgdGhlIGluaXRpYWwgcGVyc3BlY3RpdmUuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGFjdGl2YXRlSW5pdGlhbFBlcnNwZWN0aXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LmlzRW1wdHkoKSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1tOdWxsUGVyc3BlY3RpdmVFcnJvcl0gTm8gcGVyc3BlY3RpdmUgZm91bmQgdG8gYWN0aXZhdGUuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcGVyc3BlY3RpdmVJZCA9IGF3YWl0IHRoaXMuZGV0ZXJtaW5lSW5pdGlhbFBlcnNwZWN0aXZlKCkgPz8gdGhpcy5fcGVyc3BlY3RpdmVSZWdpc3RyeS5vYmplY3RzKClbMF0uaWQ7XG4gICAgY29uc3QgYWN0aXZhdGlvbiA9IHRoaXMuc3dpdGNoUGVyc3BlY3RpdmUocGVyc3BlY3RpdmVJZCwge3N0b3JlUGVyc3BlY3RpdmVBc0FjdGl2ZTogZmFsc2V9KTtcblxuICAgIC8vIFN3aXRjaGluZyBwZXJzcGVjdGl2ZSBibG9ja3MgdW50aWwgdGhlIGluaXRpYWwgbmF2aWdhdGlvbiBoYXMgYmVlbiBwZXJmb3JtZWQuIEJ5IGRlZmF1bHQsIEFuZ3VsYXIgcGVyZm9ybXNcbiAgICAvLyB0aGUgaW5pdGlhbCBuYXZpZ2F0aW9uIGFmdGVyIHJ1bm5pbmcgYXBwIGluaXRpYWxpemVycy4gVGhlcmVmb3JlLCBkbyBub3QgYXdhaXQgcGVyc3BlY3RpdmUgYWN0aXZhdGlvbiB3aGVuXG4gICAgLy8gc3RhcnRpbmcgdGhlIHdvcmtiZW5jaCBkdXJpbmcgYXBwIGluaXRpYWxpemF0aW9uLiBPdGhlcndpc2UsIEFuZ3VsYXIgd291bGQgbmV2ZXIgY29tcGxldGUgYXBwIGluaXRpYWxpemF0aW9uLlxuICAgIGlmICh0aGlzLl9hcHBsaWNhdGlvbkluaXRTdGF0dXMuZG9uZSkge1xuICAgICAgYXdhaXQgYWN0aXZhdGlvbjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGljaCBwZXJzcGVjdGl2ZSB0byBhY3RpdmF0ZSwgd2l0aCB0aGUgZm9sbG93aW5nIHByZWNlZGVuY2U6XG4gICAqXG4gICAqIDEuIFBlcnNwZWN0aXZlIGRlZmluZWQgYXMgd2luZG93IG5hbWUuXG4gICAqIDIuIFBlcnNwZWN0aXZlIGRlZmluZWQgaW4gc3RvcmFnZS5cbiAgICogMy4gUGVyc3BlY3RpdmUgY29uZmlndXJlZCBpbiB0aGUgd29ya2JlbmNoIGNvbmZpZy5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZGV0ZXJtaW5lSW5pdGlhbFBlcnNwZWN0aXZlKCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgLy8gRmluZCBwZXJzcGVjdGl2ZSBpbiB3aW5kb3cgbmFtZS5cbiAgICBjb25zdCBwZXJzcGVjdGl2ZUZyb21XaW5kb3cgPSBwYXJzZVBlcnNwZWN0aXZlSWRGcm9tV2luZG93TmFtZSgpO1xuICAgIGlmIChwZXJzcGVjdGl2ZUZyb21XaW5kb3cgJiYgdGhpcy5fcGVyc3BlY3RpdmVSZWdpc3RyeS5oYXMocGVyc3BlY3RpdmVGcm9tV2luZG93KSkge1xuICAgICAgcmV0dXJuIHBlcnNwZWN0aXZlRnJvbVdpbmRvdztcbiAgICB9XG5cbiAgICAvLyBGaW5kIHBlcnNwZWN0aXZlIGluIHN0b3JhZ2UuXG4gICAgY29uc3QgcGVyc3BlY3RpdmVGcm9tU3RvcmFnZSA9IGF3YWl0IHRoaXMuX3dvcmtiZW5jaFBlcnNwZWN0aXZlU3RvcmFnZVNlcnZpY2UubG9hZEFjdGl2ZVBlcnNwZWN0aXZlSWQoKTtcbiAgICBpZiAocGVyc3BlY3RpdmVGcm9tU3RvcmFnZSAmJiB0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LmhhcyhwZXJzcGVjdGl2ZUZyb21TdG9yYWdlKSkge1xuICAgICAgcmV0dXJuIHBlcnNwZWN0aXZlRnJvbVN0b3JhZ2U7XG4gICAgfVxuXG4gICAgLy8gRmluZCBwZXJzcGVjdGl2ZSBpbiBjb25maWcuXG4gICAgY29uc3QgcGVyc3BlY3RpdmVGcm9tQ29uZmlnID0gdHlwZW9mIHRoaXMuX3dvcmtiZW5jaENvbmZpZy5sYXlvdXQgPT09ICdvYmplY3QnICYmIHRoaXMuX3dvcmtiZW5jaENvbmZpZy5sYXlvdXQuaW5pdGlhbFBlcnNwZWN0aXZlO1xuICAgIGlmICh0eXBlb2YgcGVyc3BlY3RpdmVGcm9tQ29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHBlcnNwZWN0aXZlRnJvbUNvbmZpZztcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBwZXJzcGVjdGl2ZUZyb21Db25maWcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiAoYXdhaXQgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuX2Vudmlyb25tZW50SW5qZWN0b3IsICgpID0+IHBlcnNwZWN0aXZlRnJvbUNvbmZpZyhbLi4udGhpcy5fcGVyc3BlY3RpdmVSZWdpc3RyeS5vYmplY3RzKCldKSkpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogSWRlbnRpZmllciBmb3IgdGhlIFwiZGVmYXVsdFwiIHBlcnNwZWN0aXZlIHRoYXQgdGhlIHdvcmtiZW5jaCBjcmVhdGVzIGlmIG5vdCBwcm92aWRpbmcgYSBuYW1lZCBsYXlvdXQuXG4gKi9cbmNvbnN0IERFRkFVTFRfV09SS0JFTkNIX1BFUlNQRUNUSVZFX0lEID0gJ2RlZmF1bHQnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgd2luZG93IG5hbWUgZm9yIGdpdmVuIHBlcnNwZWN0aXZlIHRvIGNvbnRyb2wgd2hpY2ggcGVyc3BlY3RpdmUgdG8gZGlzcGxheSBpbiBhIHdpbmRvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKHBlcnNwZWN0aXZlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgc2Npb24ud29ya2JlbmNoLnBlcnNwZWN0aXZlLiR7cGVyc3BlY3RpdmVJZH1gO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgcGVyc3BlY3RpdmUgaWRlbnRpdHkgZnJvbSB0aGUgd2luZG93IG5hbWUsIHJldHVybmluZyBgbnVsbGAgaWYgbm90IHNldC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VQZXJzcGVjdGl2ZUlkRnJvbVdpbmRvd05hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHdpbmRvd05hbWVSZWdleCA9IG5ldyBSZWdFeHAoYF4ke2dlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKCcoPzxwZXJzcGVjdGl2ZT4uKyknKX0kYCk7XG4gIHJldHVybiB3aW5kb3cubmFtZS5tYXRjaCh3aW5kb3dOYW1lUmVnZXgpPy5ncm91cHMhWydwZXJzcGVjdGl2ZSddID8/IG51bGw7XG59XG4iXX0=
@@ -48,7 +48,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
48
48
  /**
49
49
  * Represents the current version of the workbench perspective layout.
50
50
  *
51
- * Increment this version and write a migrator when introducting a breaking change.
51
+ * Increment this version and write a migrator when introducing a breaking change.
52
52
  *
53
53
  * @see WorkbenchMigrator
54
54
  */
@@ -59,4 +59,4 @@ export const WORKBENCH_PERSPECTIVE_LAYOUT_VERSION = 2;
59
59
  * Format: <json>//<version>
60
60
  */
61
61
  const VERSION_SEPARATOR = '//';
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VuY2gtcGVyc3BlY3RpdmUtc2VyaWFsaXplci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGVyc3BlY3RpdmUvd29ya2VuY2gtcGVyc3BlY3RpdmUtc2VyaWFsaXplci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sd0RBQXdELENBQUM7O0FBRXZHOztHQUVHO0FBRUgsTUFBTSxPQUFPLDhCQUE4QjtJQUQzQztRQUdVLGtDQUE2QixHQUFHLElBQUksaUJBQWlCLEVBQUU7YUFDNUQsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUM7S0F1QmxFO0lBckJDOztPQUVHO0lBQ0ksU0FBUyxDQUFDLElBQXdCO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLGlCQUFpQixHQUFHLG9DQUFvQyxFQUFFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXLENBQUMsVUFBcUM7UUFDdEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLG9DQUFvQyxFQUFDLENBQUMsQ0FBQztRQUN2SSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0F6QlUsOEJBQThCO2tIQUE5Qiw4QkFBOEIsY0FEbEIsTUFBTTs7MkZBQ2xCLDhCQUE4QjtrQkFEMUMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBNkJoQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxDQUFDLENBQUM7QUFFdEQ7Ozs7R0FJRztBQUNILE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01QZXJzcGVjdGl2ZUxheW91dH0gZnJvbSAnLi4vcGVyc3BlY3RpdmUvd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsJztcbmltcG9ydCB7V29ya2JlbmNoTWlncmF0b3J9IGZyb20gJy4uL21pZ3JhdGlvbi93b3JrYmVuY2gtbWlncmF0b3InO1xuaW1wb3J0IHtXb3JrYmVuY2hQZXJzcGVjdGl2ZU1pZ3JhdGlvblYyfSBmcm9tICcuL21pZ3JhdGlvbi93b3JrYmVuY2gtcGVyc3BlY3RpdmUtbWlncmF0aW9uLXYyLnNlcnZpY2UnO1xuXG4vKipcbiAqIFNlcmlhbGl6ZXMgYW5kIGRlc2VyaWFsaXplcyBhIGJhc2U2NC1lbmNvZGVkIEpTT04gaW50byBhIHtAbGluayBNUGVyc3BlY3RpdmVMYXlvdXR9LlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hQZXJzcGVjdGl2ZVNlcmlhbGl6ZXIge1xuXG4gIHByaXZhdGUgX3dvcmtiZW5jaFBlcnNwZWN0aXZlTWlncmF0b3IgPSBuZXcgV29ya2JlbmNoTWlncmF0b3IoKVxuICAgIC5yZWdpc3Rlck1pZ3JhdGlvbigxLCBpbmplY3QoV29ya2JlbmNoUGVyc3BlY3RpdmVNaWdyYXRpb25WMikpO1xuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIHRoZSBnaXZlbiBwZXJzcGVjdGl2ZSBsYXlvdXQgaW50byBhIFVSTC1zYWZlIGJhc2U2NCBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgc2VyaWFsaXplKGRhdGE6IE1QZXJzcGVjdGl2ZUxheW91dCk6IHN0cmluZyB7XG4gICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgIHJldHVybiB3aW5kb3cuYnRvYShgJHtqc29ufSR7VkVSU0lPTl9TRVBBUkFUT1J9JHtXT1JLQkVOQ0hfUEVSU1BFQ1RJVkVfTEFZT1VUX1ZFUlNJT059YCk7XG4gIH1cblxuICAvKipcbiAgICogRGVzZXJpYWxpemVzIHRoZSBnaXZlbiBiYXNlNjQtc2VyaWFsaXplZCBwZXJzcGVjdGl2ZSBsYXlvdXQsIGFwcGx5aW5nIG5lY2Vzc2FyeSBtaWdyYXRpb25zIGlmIHRoZSBzZXJpYWxpemVkIGxheW91dCBpcyBvdXRkYXRlZC5cbiAgICovXG4gIHB1YmxpYyBkZXNlcmlhbGl6ZShzZXJpYWxpemVkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogTVBlcnNwZWN0aXZlTGF5b3V0IHwgbnVsbCB7XG4gICAgaWYgKCFzZXJpYWxpemVkPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IFtqc29uLCB2ZXJzaW9uXSA9IHdpbmRvdy5hdG9iKHNlcmlhbGl6ZWQpLnNwbGl0KFZFUlNJT05fU0VQQVJBVE9SLCAyKTtcbiAgICBjb25zdCBzZXJpYWxpemVkVmVyc2lvbiA9IE51bWJlci5pc05hTihOdW1iZXIodmVyc2lvbikpID8gMSA6IE51bWJlcih2ZXJzaW9uKTtcbiAgICBjb25zdCBtaWdyYXRlZCA9IHRoaXMuX3dvcmtiZW5jaFBlcnNwZWN0aXZlTWlncmF0b3IubWlncmF0ZShqc29uLCB7ZnJvbTogc2VyaWFsaXplZFZlcnNpb24sIHRvOiBXT1JLQkVOQ0hfUEVSU1BFQ1RJVkVfTEFZT1VUX1ZFUlNJT059KTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShtaWdyYXRlZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIHdvcmtiZW5jaCBwZXJzcGVjdGl2ZSBsYXlvdXQuXG4gKlxuICogSW5jcmVtZW50IHRoaXMgdmVyc2lvbiBhbmQgd3JpdGUgYSBtaWdyYXRvciB3aGVuIGludHJvZHVjdGluZyBhIGJyZWFraW5nIGNoYW5nZS5cbiAqXG4gKiBAc2VlIFdvcmtiZW5jaE1pZ3JhdG9yXG4gKi9cbmV4cG9ydCBjb25zdCBXT1JLQkVOQ0hfUEVSU1BFQ1RJVkVfTEFZT1VUX1ZFUlNJT04gPSAyO1xuXG4vKipcbiAqIFNlcGFyYXRlcyB0aGUgc2VyaWFsaXplZCBKU09OIG1vZGVsIGFuZCBpdHMgdmVyc2lvbiBpbiB0aGUgYmFzZTY0LWVuY29kZWQgc3RyaW5nLlxuICpcbiAqIEZvcm1hdDogPGpzb24+Ly88dmVyc2lvbj5cbiAqL1xuY29uc3QgVkVSU0lPTl9TRVBBUkFUT1IgPSAnLy8nO1xuIl19
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VuY2gtcGVyc3BlY3RpdmUtc2VyaWFsaXplci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGVyc3BlY3RpdmUvd29ya2VuY2gtcGVyc3BlY3RpdmUtc2VyaWFsaXplci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sd0RBQXdELENBQUM7O0FBRXZHOztHQUVHO0FBRUgsTUFBTSxPQUFPLDhCQUE4QjtJQUQzQztRQUdVLGtDQUE2QixHQUFHLElBQUksaUJBQWlCLEVBQUU7YUFDNUQsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUM7S0F1QmxFO0lBckJDOztPQUVHO0lBQ0ksU0FBUyxDQUFDLElBQXdCO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLGlCQUFpQixHQUFHLG9DQUFvQyxFQUFFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXLENBQUMsVUFBcUM7UUFDdEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLG9DQUFvQyxFQUFDLENBQUMsQ0FBQztRQUN2SSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0F6QlUsOEJBQThCO2tIQUE5Qiw4QkFBOEIsY0FEbEIsTUFBTTs7MkZBQ2xCLDhCQUE4QjtrQkFEMUMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBNkJoQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxDQUFDLENBQUM7QUFFdEQ7Ozs7R0FJRztBQUNILE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01QZXJzcGVjdGl2ZUxheW91dH0gZnJvbSAnLi4vcGVyc3BlY3RpdmUvd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsJztcbmltcG9ydCB7V29ya2JlbmNoTWlncmF0b3J9IGZyb20gJy4uL21pZ3JhdGlvbi93b3JrYmVuY2gtbWlncmF0b3InO1xuaW1wb3J0IHtXb3JrYmVuY2hQZXJzcGVjdGl2ZU1pZ3JhdGlvblYyfSBmcm9tICcuL21pZ3JhdGlvbi93b3JrYmVuY2gtcGVyc3BlY3RpdmUtbWlncmF0aW9uLXYyLnNlcnZpY2UnO1xuXG4vKipcbiAqIFNlcmlhbGl6ZXMgYW5kIGRlc2VyaWFsaXplcyBhIGJhc2U2NC1lbmNvZGVkIEpTT04gaW50byBhIHtAbGluayBNUGVyc3BlY3RpdmVMYXlvdXR9LlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hQZXJzcGVjdGl2ZVNlcmlhbGl6ZXIge1xuXG4gIHByaXZhdGUgX3dvcmtiZW5jaFBlcnNwZWN0aXZlTWlncmF0b3IgPSBuZXcgV29ya2JlbmNoTWlncmF0b3IoKVxuICAgIC5yZWdpc3Rlck1pZ3JhdGlvbigxLCBpbmplY3QoV29ya2JlbmNoUGVyc3BlY3RpdmVNaWdyYXRpb25WMikpO1xuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIHRoZSBnaXZlbiBwZXJzcGVjdGl2ZSBsYXlvdXQgaW50byBhIFVSTC1zYWZlIGJhc2U2NCBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgc2VyaWFsaXplKGRhdGE6IE1QZXJzcGVjdGl2ZUxheW91dCk6IHN0cmluZyB7XG4gICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgIHJldHVybiB3aW5kb3cuYnRvYShgJHtqc29ufSR7VkVSU0lPTl9TRVBBUkFUT1J9JHtXT1JLQkVOQ0hfUEVSU1BFQ1RJVkVfTEFZT1VUX1ZFUlNJT059YCk7XG4gIH1cblxuICAvKipcbiAgICogRGVzZXJpYWxpemVzIHRoZSBnaXZlbiBiYXNlNjQtc2VyaWFsaXplZCBwZXJzcGVjdGl2ZSBsYXlvdXQsIGFwcGx5aW5nIG5lY2Vzc2FyeSBtaWdyYXRpb25zIGlmIHRoZSBzZXJpYWxpemVkIGxheW91dCBpcyBvdXRkYXRlZC5cbiAgICovXG4gIHB1YmxpYyBkZXNlcmlhbGl6ZShzZXJpYWxpemVkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogTVBlcnNwZWN0aXZlTGF5b3V0IHwgbnVsbCB7XG4gICAgaWYgKCFzZXJpYWxpemVkPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IFtqc29uLCB2ZXJzaW9uXSA9IHdpbmRvdy5hdG9iKHNlcmlhbGl6ZWQpLnNwbGl0KFZFUlNJT05fU0VQQVJBVE9SLCAyKTtcbiAgICBjb25zdCBzZXJpYWxpemVkVmVyc2lvbiA9IE51bWJlci5pc05hTihOdW1iZXIodmVyc2lvbikpID8gMSA6IE51bWJlcih2ZXJzaW9uKTtcbiAgICBjb25zdCBtaWdyYXRlZCA9IHRoaXMuX3dvcmtiZW5jaFBlcnNwZWN0aXZlTWlncmF0b3IubWlncmF0ZShqc29uLCB7ZnJvbTogc2VyaWFsaXplZFZlcnNpb24sIHRvOiBXT1JLQkVOQ0hfUEVSU1BFQ1RJVkVfTEFZT1VUX1ZFUlNJT059KTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShtaWdyYXRlZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIHdvcmtiZW5jaCBwZXJzcGVjdGl2ZSBsYXlvdXQuXG4gKlxuICogSW5jcmVtZW50IHRoaXMgdmVyc2lvbiBhbmQgd3JpdGUgYSBtaWdyYXRvciB3aGVuIGludHJvZHVjaW5nIGEgYnJlYWtpbmcgY2hhbmdlLlxuICpcbiAqIEBzZWUgV29ya2JlbmNoTWlncmF0b3JcbiAqL1xuZXhwb3J0IGNvbnN0IFdPUktCRU5DSF9QRVJTUEVDVElWRV9MQVlPVVRfVkVSU0lPTiA9IDI7XG5cbi8qKlxuICogU2VwYXJhdGVzIHRoZSBzZXJpYWxpemVkIEpTT04gbW9kZWwgYW5kIGl0cyB2ZXJzaW9uIGluIHRoZSBiYXNlNjQtZW5jb2RlZCBzdHJpbmcuXG4gKlxuICogRm9ybWF0OiA8anNvbj4vLzx2ZXJzaW9uPlxuICovXG5jb25zdCBWRVJTSU9OX1NFUEFSQVRPUiA9ICcvLyc7XG4iXX0=