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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/_index.scss +7 -5
  2. package/design/_workbench-global-styles.scss +18 -0
  3. package/design/_workbench-icon-font.scss +1 -1
  4. package/design/_workbench-popup-global-styles.scss +1 -1
  5. package/design/{_workbench-view-drag-image-global-styles.scss → _workbench-view-global-styles.scss} +1 -2
  6. package/esm2022/lib/activation-instant.provider.mjs +3 -3
  7. package/esm2022/lib/common/asserts.util.mjs +1 -1
  8. package/esm2022/lib/common/class-list.mjs +67 -29
  9. package/esm2022/lib/common/coerce-observable.pipe.mjs +3 -3
  10. package/esm2022/lib/common/dom.util.mjs +1 -1
  11. package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +4 -4
  12. package/esm2022/lib/common/instanceof.pipe.mjs +3 -3
  13. package/esm2022/lib/common/map-coerce.pipe.mjs +3 -3
  14. package/esm2022/lib/common/math.util.mjs +16 -0
  15. package/esm2022/lib/common/null-if-empty.pipe.mjs +4 -4
  16. package/esm2022/lib/common/objects.util.mjs +7 -1
  17. package/esm2022/lib/common/observables.mjs +1 -1
  18. package/esm2022/lib/common/operators.mjs +1 -12
  19. package/esm2022/lib/common/stringify-error.util.mjs +1 -1
  20. package/esm2022/lib/common/typeof.pipe.mjs +3 -3
  21. package/esm2022/lib/common/uid.util.mjs +22 -0
  22. package/esm2022/lib/common//311/265destroy-ref.mjs +1 -1
  23. package/esm2022/lib/content-projection/content-as-overlay.component.mjs +87 -30
  24. package/esm2022/lib/content-projection/workbench-element-references.mjs +32 -0
  25. package/esm2022/lib/dialog/dialog-footer/dialog-action-filter.pipe.mjs +3 -3
  26. package/esm2022/lib/dialog/dialog-footer/dialog-footer.component.mjs +3 -3
  27. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-action.directive.mjs +3 -3
  28. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-footer.directive.mjs +3 -3
  29. package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +5 -10
  30. package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +3 -3
  31. package/esm2022/lib/dialog/movable.directive.mjs +6 -6
  32. package/esm2022/lib/dialog/resizable.directive.mjs +6 -6
  33. package/esm2022/lib/dialog/workbench-dialog.component.mjs +27 -25
  34. package/esm2022/lib/dialog/workbench-dialog.mjs +61 -1
  35. package/esm2022/lib/dialog/workbench-dialog.registry.mjs +4 -4
  36. package/esm2022/lib/dialog/workbench-dialog.service.mjs +3 -3
  37. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +99 -61
  38. package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +28 -25
  39. package/esm2022/lib/executor/latest-task-executor.mjs +55 -0
  40. package/esm2022/lib/executor/single-task-executor.mjs +9 -19
  41. package/esm2022/lib/filter-field/filter-field.component.mjs +8 -8
  42. package/esm2022/lib/glass-pane/glass-pane.directive.mjs +4 -4
  43. package/esm2022/lib/layout/grid-element/grid-element.component.mjs +10 -20
  44. package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +19 -22
  45. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +11 -0
  46. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v6.model.mjs +11 -0
  47. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +7 -7
  48. package/esm2022/lib/layout/migration/workbench-layout-migration-v4.service.mjs +4 -4
  49. package/esm2022/lib/layout/migration/workbench-layout-migration-v5.service.mjs +67 -0
  50. package/esm2022/lib/layout/migration/workbench-layout-migration-v6.service.mjs +59 -0
  51. package/esm2022/lib/layout/stringifier.mjs +70 -0
  52. package/esm2022/lib/layout/workbench-layout.component.mjs +19 -23
  53. package/esm2022/lib/layout/workbench-layout.factory.mjs +3 -3
  54. package/esm2022/lib/layout/workbench-layout.mjs +1 -1
  55. package/esm2022/lib/layout/workbench-layout.model.mjs +1 -1
  56. package/esm2022/lib/layout/workbench-layout.service.mjs +28 -26
  57. package/esm2022/lib/layout/workbench-layouts.util.mjs +1 -9
  58. package/esm2022/lib/layout/workench-layout-serializer.service.mjs +22 -32
  59. package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +6 -5
  60. package/esm2022/lib/layout//311/265workbench-layout.mjs +77 -66
  61. package/esm2022/lib/logging/console-appender.service.mjs +4 -4
  62. package/esm2022/lib/logging/logger.mjs +3 -3
  63. package/esm2022/lib/logging/logging-support.mjs +7 -13
  64. package/esm2022/lib/logging/logging.model.mjs +3 -3
  65. package/esm2022/lib/logging//311/265logger.mjs +12 -12
  66. package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +9 -8
  67. package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +5 -5
  68. package/esm2022/lib/message-box/workbench-message-box.component.mjs +5 -5
  69. package/esm2022/lib/message-box/workbench-message-box.service.mjs +3 -3
  70. package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +6 -5
  71. package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +22 -6
  72. package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +29 -22
  73. package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +6 -6
  74. package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +14 -4
  75. package/esm2022/lib/microfrontend-platform/manifest-object-cache.service.mjs +63 -0
  76. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +8 -7
  77. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +4 -4
  78. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +8 -12
  79. package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +21 -12
  80. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +10 -9
  81. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +6 -6
  82. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +17 -15
  83. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +6 -5
  84. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.mjs +4 -4
  85. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.mjs +4 -4
  86. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +10 -15
  87. package/esm2022/lib/microfrontend-platform/microfrontend-notification/microfrontend-notification-intent-handler.service.mjs +3 -3
  88. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.mjs +39 -0
  89. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.mjs +120 -0
  90. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.mjs +55 -0
  91. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.mjs +19 -0
  92. package/esm2022/lib/microfrontend-platform/microfrontend-platform-config-loader.mjs +3 -3
  93. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +7 -6
  94. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +13 -14
  95. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +14 -30
  96. package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +5 -5
  97. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +13 -29
  98. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +92 -72
  99. package/esm2022/lib/microfrontend-platform/public_api.mjs +2 -1
  100. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +8 -7
  101. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +20 -18
  102. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +30 -8
  103. package/esm2022/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.mjs +32 -0
  104. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +29 -11
  105. package/esm2022/lib/migration/workbench-migrator.mjs +1 -1
  106. package/esm2022/lib/notification/notification-css-classes.pipe.mjs +3 -3
  107. package/esm2022/lib/notification/notification-list.component.mjs +6 -10
  108. package/esm2022/lib/notification/notification.component.mjs +6 -7
  109. package/esm2022/lib/notification/notification.service.mjs +8 -7
  110. package/esm2022/lib/notification/text-notification.component.mjs +3 -3
  111. package/esm2022/lib/notification//311/265notification.mjs +1 -1
  112. package/esm2022/lib/page-not-found/page-not-found.component.mjs +7 -9
  113. package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +12 -20
  114. package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +7 -7
  115. package/esm2022/lib/part/part-bar/part-bar.component.mjs +334 -265
  116. package/esm2022/lib/part/part-portal.pipe.mjs +10 -10
  117. package/esm2022/lib/part/part.component.mjs +34 -43
  118. package/esm2022/lib/part/view-context-menu/accelerator-format.pipe.mjs +4 -4
  119. package/esm2022/lib/part/view-context-menu/text.component.mjs +17 -13
  120. package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +6 -8
  121. package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +5 -5
  122. package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +50 -51
  123. package/esm2022/lib/part/view-list/view-list.component.mjs +42 -49
  124. package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +23 -27
  125. package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +16 -18
  126. package/esm2022/lib/part/view-tab/view-tab.component.mjs +100 -111
  127. package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +5 -6
  128. package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +17 -18
  129. package/esm2022/lib/part/workbench-part-action.registry.mjs +18 -42
  130. package/esm2022/lib/part/workbench-part.model.mjs +10 -1
  131. package/esm2022/lib/part/workbench-part.registry.mjs +11 -45
  132. package/esm2022/lib/part//311/265workbench-part.model.mjs +71 -55
  133. package/esm2022/lib/perspective/migration/workbench-perspective-migration-v2.service.mjs +4 -4
  134. package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +6 -6
  135. package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +4 -4
  136. package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +4 -4
  137. package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
  138. package/esm2022/lib/perspective/workbench-perspective.registry.mjs +11 -43
  139. package/esm2022/lib/perspective/workbench-perspective.service.mjs +73 -64
  140. package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +5 -5
  141. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +62 -47
  142. package/esm2022/lib/popup/popup.component.mjs +6 -6
  143. package/esm2022/lib/popup/popup.config.mjs +27 -25
  144. package/esm2022/lib/popup/popup.service.mjs +171 -176
  145. package/esm2022/lib/portal/wb-component-portal.mjs +18 -17
  146. package/esm2022/lib/portal/workbench-portal-outlet.directive.mjs +4 -4
  147. package/esm2022/lib/public_api.mjs +1 -1
  148. package/esm2022/lib/registry/workbench-object-registry.mjs +38 -17
  149. package/esm2022/lib/routing/empty-outlet/empty-outlet.component.mjs +3 -3
  150. package/esm2022/lib/routing/public_api.mjs +2 -2
  151. package/esm2022/lib/routing/routing.model.mjs +1 -1
  152. package/esm2022/lib/routing/routing.util.mjs +215 -0
  153. package/esm2022/lib/routing/url-segment-matcher.mjs +1 -1
  154. package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +110 -0
  155. package/esm2022/lib/routing/workbench-dialog-differ.mjs +6 -6
  156. package/esm2022/lib/routing/workbench-layout-differ.mjs +6 -13
  157. package/esm2022/lib/routing/workbench-message-box-differ.mjs +6 -6
  158. package/esm2022/lib/routing/workbench-navigational-states.mjs +2 -2
  159. package/esm2022/lib/routing/workbench-popup-differ.mjs +6 -6
  160. package/esm2022/lib/routing/workbench-route-guards.mjs +57 -0
  161. package/esm2022/lib/routing/workbench-router-link.directive.mjs +5 -5
  162. package/esm2022/lib/routing/workbench-router.service.mjs +3 -3
  163. package/esm2022/lib/routing/workbench-url-observer.service.mjs +143 -151
  164. package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +58 -0
  165. package/esm2022/lib/routing//311/265location.mjs +3 -3
  166. package/esm2022/lib/routing//311/265workbench-router.service.mjs +121 -76
  167. package/esm2022/lib/startup/splash/splash.component.mjs +5 -5
  168. package/esm2022/lib/startup/workbench-initializer.mjs +1 -1
  169. package/esm2022/lib/startup/workbench-launcher.service.mjs +28 -16
  170. package/esm2022/lib/storage/workbench-storage.mjs +3 -3
  171. package/esm2022/lib/testing/workbench-testing.module.mjs +4 -4
  172. package/esm2022/lib/testing/workbench.provider.mjs +5 -5
  173. package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +18 -22
  174. package/esm2022/lib/view/public_api.mjs +1 -2
  175. package/esm2022/lib/view/view-move-handler.service.mjs +73 -58
  176. package/esm2022/lib/view/view-portal.pipe.mjs +9 -9
  177. package/esm2022/lib/view/view.component.mjs +55 -43
  178. package/esm2022/lib/view/workbench-view.model.mjs +1 -1
  179. package/esm2022/lib/view/workbench-view.registry.mjs +11 -45
  180. package/esm2022/lib/view//311/265workbench-view.model.mjs +183 -153
  181. package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +2 -2
  182. package/esm2022/lib/view-dnd/requires-drop-zone.pipe.mjs +4 -4
  183. package/esm2022/lib/view-dnd/view-drag.service.mjs +89 -73
  184. package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +9 -9
  185. package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +9 -9
  186. package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +45 -58
  187. package/esm2022/lib/workbench-config.mjs +2 -2
  188. package/esm2022/lib/workbench-id.mjs +3 -3
  189. package/esm2022/lib/workbench.component.mjs +67 -55
  190. package/esm2022/lib/workbench.constants.mjs +1 -5
  191. package/esm2022/lib/workbench.model.mjs +1 -1
  192. package/esm2022/lib/workbench.module.mjs +4 -4
  193. package/esm2022/lib/workbench.provider.mjs +3 -9
  194. package/esm2022/lib/workbench.service.mjs +4 -4
  195. package/esm2022/lib//311/265workbench.service.mjs +40 -44
  196. package/fesm2022/scion-workbench.mjs +4348 -3628
  197. package/fesm2022/scion-workbench.mjs.map +1 -1
  198. package/lib/common/class-list.d.ts +35 -22
  199. package/lib/common/math.util.d.ts +7 -0
  200. package/lib/common/objects.util.d.ts +6 -2
  201. package/lib/common/operators.d.ts +1 -6
  202. package/lib/common/uid.util.d.ts +9 -0
  203. package/lib/content-projection/content-as-overlay.component.d.ts +39 -22
  204. package/lib/content-projection/workbench-element-references.d.ts +13 -0
  205. package/lib/dialog/workbench-dialog.component.d.ts +3 -2
  206. package/lib/dialog/workbench-dialog.d.ts +57 -13
  207. package/lib/dialog//311/265workbench-dialog.d.ts +38 -24
  208. package/lib/dialog//311/265workbench-dialog.service.d.ts +10 -11
  209. package/lib/executor/latest-task-executor.d.ts +26 -0
  210. package/lib/executor/single-task-executor.d.ts +5 -8
  211. package/lib/filter-field/filter-field.component.d.ts +1 -1
  212. package/lib/layout/grid-element/grid-element.component.d.ts +1 -8
  213. package/lib/layout/main-area-layout/main-area-layout.component.d.ts +0 -4
  214. package/lib/layout/migration/model/workbench-layout-migration-v5.model.d.ts +36 -0
  215. package/lib/layout/migration/model/workbench-layout-migration-v6.model.d.ts +35 -0
  216. package/lib/layout/migration/{workbench-layout-migration-v2.service.d.ts → workbench-layout-migration-v5.service.d.ts} +4 -5
  217. package/lib/layout/migration/workbench-layout-migration-v6.service.d.ts +12 -0
  218. package/lib/layout/stringifier.d.ts +26 -0
  219. package/lib/layout/workbench-layout.component.d.ts +4 -5
  220. package/lib/layout/workbench-layout.d.ts +9 -6
  221. package/lib/layout/workbench-layout.model.d.ts +4 -3
  222. package/lib/layout/workbench-layout.service.d.ts +14 -16
  223. package/lib/layout/workbench-layouts.util.d.ts +0 -6
  224. package/lib/layout/workench-layout-serializer.service.d.ts +13 -16
  225. package/lib/layout//311/265workbench-layout.d.ts +18 -19
  226. package/lib/layout//311/265workbench-layout.factory.d.ts +3 -2
  227. package/lib/logging//311/265logger.d.ts +2 -3
  228. package/lib/microfrontend-platform/common/microfrontend.util.d.ts +5 -1
  229. package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +7 -3
  230. package/lib/microfrontend-platform/manifest-object-cache.service.d.ts +33 -0
  231. package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +3 -6
  232. package/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.d.ts +2 -1
  233. package/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.d.ts +1 -1
  234. package/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.d.ts +2 -1
  235. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.d.ts +10 -0
  236. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.d.ts +24 -0
  237. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.d.ts +20 -0
  238. package/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.d.ts +9 -0
  239. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.d.ts +4 -8
  240. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +0 -4
  241. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +5 -12
  242. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +23 -33
  243. package/lib/microfrontend-platform/public_api.d.ts +1 -0
  244. package/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.d.ts +1 -1
  245. package/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.d.ts +3 -7
  246. package/lib/microfrontend-platform/routing/microfrontend-view-routes.d.ts +9 -2
  247. package/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.d.ts +11 -0
  248. package/lib/notification/notification-list.component.d.ts +0 -2
  249. package/lib/page-not-found/page-not-found.component.d.ts +1 -0
  250. package/lib/part/part-action-bar/part-action-bar.component.d.ts +3 -4
  251. package/lib/part/part-action-bar/part-action.directive.d.ts +2 -2
  252. package/lib/part/part-bar/part-bar.component.d.ts +73 -63
  253. package/lib/part/part-portal.pipe.d.ts +3 -5
  254. package/lib/part/part.component.d.ts +9 -12
  255. package/lib/part/view-context-menu/text.component.d.ts +3 -4
  256. package/lib/part/view-context-menu/view-menu.directive.d.ts +1 -1
  257. package/lib/part/view-context-menu/view-menu.service.d.ts +13 -17
  258. package/lib/part/view-list/view-list.component.d.ts +8 -21
  259. package/lib/part/view-list-button/view-list-button.component.d.ts +8 -11
  260. package/lib/part/view-list-item/view-list-item.component.d.ts +3 -7
  261. package/lib/part/view-tab/view-tab.component.d.ts +19 -29
  262. package/lib/part/view-tab-drag-image/view-tab-drag-image.component.d.ts +4 -4
  263. package/lib/part/workbench-part-action.registry.d.ts +3 -23
  264. package/lib/part/workbench-part.model.d.ts +8 -27
  265. package/lib/part/workbench-part.registry.d.ts +3 -26
  266. package/lib/part//311/265workbench-part.model.d.ts +23 -17
  267. package/lib/perspective/workbench-perspective.model.d.ts +18 -25
  268. package/lib/perspective/workbench-perspective.registry.d.ts +3 -26
  269. package/lib/perspective/workbench-perspective.service.d.ts +16 -14
  270. package/lib/perspective/workench-perspective-serializer.service.d.ts +1 -1
  271. package/lib/perspective//311/265workbench-perspective.model.d.ts +30 -21
  272. package/lib/popup/popup.config.d.ts +11 -10
  273. package/lib/popup/popup.service.d.ts +15 -28
  274. package/lib/portal/wb-component-portal.d.ts +21 -5
  275. package/lib/public_api.d.ts +1 -1
  276. package/lib/registry/workbench-object-registry.d.ts +10 -6
  277. package/lib/routing/public_api.d.ts +2 -2
  278. package/lib/routing/routing.model.d.ts +25 -13
  279. package/lib/routing/{router.util.d.ts → routing.util.d.ts} +28 -1
  280. package/lib/routing/{workbench-auxiliary-routes-registrator.service.d.ts → workbench-auxiliary-route-installer.service.d.ts} +10 -3
  281. package/lib/routing/workbench-layout-differ.d.ts +1 -2
  282. package/lib/routing/workbench-navigational-states.d.ts +8 -4
  283. package/lib/{view/workbench-view-route-guards.d.ts → routing/workbench-route-guards.d.ts} +8 -2
  284. package/lib/routing/workbench-url-observer.service.d.ts +31 -55
  285. package/lib/routing/workbench-view-outlet-differ.d.ts +32 -0
  286. package/lib/routing//311/265workbench-router.service.d.ts +22 -18
  287. package/lib/startup/workbench-launcher.service.d.ts +4 -5
  288. package/lib/testing/workbench.provider.d.ts +3 -1
  289. package/lib/theme/workbench-theme-switcher.service.d.ts +4 -6
  290. package/lib/view/public_api.d.ts +0 -1
  291. package/lib/view/view-move-handler.service.d.ts +16 -14
  292. package/lib/view/view-portal.pipe.d.ts +1 -3
  293. package/lib/view/view.component.d.ts +21 -12
  294. package/lib/view/workbench-view.model.d.ts +88 -36
  295. package/lib/view/workbench-view.registry.d.ts +3 -27
  296. package/lib/view//311/265workbench-view.model.d.ts +62 -71
  297. package/lib/view-dnd/view-drag.service.d.ts +79 -49
  298. package/lib/view-dnd/view-drop-placeholder-renderer.service.d.ts +1 -1
  299. package/lib/view-dnd/view-tab-drag-image-renderer.service.d.ts +12 -36
  300. package/lib/workbench-config.d.ts +19 -7
  301. package/lib/workbench.component.d.ts +16 -30
  302. package/lib/workbench.constants.d.ts +0 -5
  303. package/lib/workbench.model.d.ts +31 -3
  304. package/lib/workbench.service.d.ts +58 -56
  305. package/lib//311/265workbench.service.d.ts +18 -31
  306. package/package.json +12 -12
  307. package/esm2022/lib/common/filter-by-predicate.pipe.mjs +0 -27
  308. package/esm2022/lib/common/filter-by-text.pipe.mjs +0 -39
  309. package/esm2022/lib/common/uuid.util.mjs +0 -17
  310. package/esm2022/lib/content-projection/content-projection.directive.mjs +0 -101
  311. package/esm2022/lib/content-projection/view-container.reference.mjs +0 -68
  312. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v1.model.mjs +0 -11
  313. package/esm2022/lib/layout/migration/workbench-layout-migration-v2.service.mjs +0 -59
  314. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +0 -41
  315. package/esm2022/lib/page-not-found/format-url.pipe.mjs +0 -26
  316. package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +0 -26
  317. package/esm2022/lib/routing/router.util.mjs +0 -126
  318. package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +0 -94
  319. package/esm2022/lib/view/workbench-view-route-guards.mjs +0 -47
  320. package/lib/common/filter-by-predicate.pipe.d.ts +0 -10
  321. package/lib/common/filter-by-text.pipe.d.ts +0 -12
  322. package/lib/common/uuid.util.d.ts +0 -8
  323. package/lib/content-projection/content-projection.directive.d.ts +0 -30
  324. package/lib/content-projection/view-container.reference.d.ts +0 -42
  325. package/lib/layout/migration/model/workbench-layout-migration-v1.model.d.ts +0 -16
  326. package/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.d.ts +0 -10
  327. package/lib/page-not-found/format-url.pipe.d.ts +0 -11
  328. package/lib/part/part-action-bar/part-action-filter.pipe.d.ts +0 -11
@@ -1,71 +1,75 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { RouterUtils } from '../routing/router.util';
1
+ /*
2
+ * Copyright (c) 2018-2024 Swiss Federal Railways
3
+ *
4
+ * This program and the accompanying materials are made
5
+ * available under the terms of the Eclipse Public License 2.0
6
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
7
+ *
8
+ * SPDX-License-Identifier: EPL-2.0
9
+ */
10
+ import { inject, Injectable } from '@angular/core';
11
+ import { ViewDragService } from '../view-dnd/view-drag.service';
12
+ import { Router } from '@angular/router';
13
+ import { LocationStrategy } from '@angular/common';
14
+ import { ɵWorkbenchRouter } from '../routing/ɵworkbench-router.service';
15
+ import { Routing } from '../routing/routing.util';
16
+ import { ɵWorkbenchLayoutFactory } from '../layout/ɵworkbench-layout.factory';
3
17
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
18
  import { Defined } from '@scion/toolkit/util';
5
19
  import { generatePerspectiveWindowName } from '../perspective/workbench-perspective.service';
6
20
  import { ANONYMOUS_PERSPECTIVE_ID_PREFIX } from '../workbench.constants';
7
21
  import { WORKBENCH_ID } from '../workbench-id';
8
- import { randomUUID } from '../common/uuid.util';
22
+ import { UID } from '../common/uid.util';
23
+ import { filter } from 'rxjs/operators';
9
24
  import * as i0 from "@angular/core";
10
- import * as i1 from "../routing/\u0275workbench-router.service";
11
- import * as i2 from "../layout/\u0275workbench-layout.factory";
12
- import * as i3 from "../view-dnd/view-drag.service";
13
- import * as i4 from "@angular/router";
14
- import * as i5 from "@angular/common";
15
25
  /**
16
- * Updates the workbench layout when the user moves a view.
26
+ * Updates the workbench layout when receiving a {@link ViewMoveEvent} event relevant for this application.
17
27
  */
18
28
  export class ViewMoveHandler {
19
- constructor(_workbenchId, _workbenchRouter, _workbenchLayoutFactory, _viewDragService, _router, _locationStrategy) {
20
- this._workbenchId = _workbenchId;
21
- this._workbenchRouter = _workbenchRouter;
22
- this._workbenchLayoutFactory = _workbenchLayoutFactory;
23
- this._viewDragService = _viewDragService;
24
- this._router = _router;
25
- this._locationStrategy = _locationStrategy;
26
- this.installViewMoveListener();
29
+ constructor() {
30
+ this._workbenchId = inject(WORKBENCH_ID);
31
+ this._workbenchRouter = inject(ɵWorkbenchRouter);
32
+ this._workbenchLayoutFactory = inject(ɵWorkbenchLayoutFactory);
33
+ this._router = inject(Router);
34
+ this._locationStrategy = inject(LocationStrategy);
35
+ this.installViewMoveHandler();
27
36
  }
28
- installViewMoveListener() {
29
- this._viewDragService.viewMove$
30
- .pipe(takeUntilDestroyed())
31
- .subscribe(async (event) => {
32
- // Check if this workbench instance takes part in the view drag operation. If not, do nothing.
33
- if (event.source.workbenchId !== this._workbenchId && event.target.workbenchId !== this._workbenchId) {
34
- return;
35
- }
36
- const crossWorkbenchViewDrag = (event.source.workbenchId !== event.target.workbenchId);
37
- // Check if to remove the view from this workbench instance if being moved to another workbench instance.
38
- if (crossWorkbenchViewDrag && event.source.workbenchId === this._workbenchId) {
39
- // Check if to add the view to a new browser window.
40
- if (event.target.workbenchId === 'new-window') {
41
- await this.moveViewToNewWindow(event);
42
- }
43
- else {
44
- await this.removeView(event);
45
- }
46
- }
47
- // Check if to add the view to this workbench instance if being moved from another workbench instance to this workbench instance.
48
- else if (crossWorkbenchViewDrag && event.target.workbenchId === this._workbenchId) {
49
- await this.addView(event);
37
+ /**
38
+ * Updates the workbench layout when receiving a {@link ViewMoveEvent} event relevant for this application.
39
+ */
40
+ async onViewMove(event) {
41
+ const crossWorkbenchViewDrag = (event.source.workbenchId !== event.target.workbenchId);
42
+ // Check if to remove the view from this workbench instance if being moved to another workbench instance.
43
+ if (crossWorkbenchViewDrag && event.source.workbenchId === this._workbenchId) {
44
+ // Check if to add the view to a new browser window.
45
+ if (event.target.workbenchId === 'new-window') {
46
+ await this.moveViewToNewWindow(event);
50
47
  }
51
- // Move the view within the same workbench instance.
52
48
  else {
53
- await this.moveView(event);
49
+ await this.removeView(event);
54
50
  }
55
- });
51
+ }
52
+ // Check if to add the view to this workbench instance if being moved from another workbench instance to this workbench instance.
53
+ else if (crossWorkbenchViewDrag && event.target.workbenchId === this._workbenchId) {
54
+ await this.addView(event);
55
+ }
56
+ // Move the view within the same workbench instance.
57
+ else {
58
+ await this.moveView(event);
59
+ }
56
60
  }
57
61
  async addView(event) {
58
62
  const region = event.target.region;
59
63
  const addToNewPart = !!region;
60
- const commands = RouterUtils.segmentsToCommands(event.source.viewUrlSegments);
64
+ const commands = Routing.segmentsToCommands(event.source.viewUrlSegments);
61
65
  await this._workbenchRouter.navigate(layout => {
62
66
  const newViewId = event.source.alternativeViewId ?? layout.computeNextViewId();
63
67
  if (addToNewPart) {
64
- const newPartId = event.target.newPart?.id ?? randomUUID();
68
+ const newPartId = event.target.newPart?.id ?? UID.randomUID();
65
69
  return layout
66
70
  .addPart(newPartId, { relativeTo: event.target.elementId, align: coerceAlignProperty(region), ratio: event.target.newPart?.ratio }, { structural: false })
67
71
  .addView(newViewId, { partId: newPartId, activateView: true, activatePart: true, cssClass: event.source.classList?.get('layout') })
68
- .navigateView(newViewId, commands, { hint: event.source.navigationHint, cssClass: event.source.classList?.get('navigation') });
72
+ .navigateView(newViewId, commands, { hint: event.source.navigationHint, cssClass: event.source.classList?.get('navigation'), data: event.source.navigationData });
69
73
  }
70
74
  else {
71
75
  return layout
@@ -76,7 +80,7 @@ export class ViewMoveHandler {
76
80
  activateView: true,
77
81
  activatePart: true,
78
82
  })
79
- .navigateView(newViewId, commands, { hint: event.source.navigationHint, cssClass: event.source.classList?.get('navigation') });
83
+ .navigateView(newViewId, commands, { hint: event.source.navigationHint, cssClass: event.source.classList?.get('navigation'), data: event.source.navigationData });
80
84
  }
81
85
  });
82
86
  }
@@ -85,16 +89,16 @@ export class ViewMoveHandler {
85
89
  const urlTree = await this._workbenchRouter.createUrlTree(() => {
86
90
  const newLayout = this._workbenchLayoutFactory.create();
87
91
  const newViewId = event.source.alternativeViewId ?? newLayout.computeNextViewId();
88
- const commands = RouterUtils.segmentsToCommands(event.source.viewUrlSegments);
92
+ const commands = Routing.segmentsToCommands(event.source.viewUrlSegments);
89
93
  return newLayout
90
94
  .addView(newViewId, {
91
95
  partId: newLayout.activePart({ grid: 'mainArea' }).id,
92
96
  activateView: true,
93
97
  cssClass: event.source.classList?.get('layout'),
94
98
  })
95
- .navigateView(newViewId, commands, { hint: event.source.navigationHint, cssClass: event.source.classList?.get('navigation') });
99
+ .navigateView(newViewId, commands, { hint: event.source.navigationHint, cssClass: event.source.classList?.get('navigation'), data: event.source.navigationData });
96
100
  });
97
- const target = generatePerspectiveWindowName(`${ANONYMOUS_PERSPECTIVE_ID_PREFIX}${randomUUID()}`);
101
+ const target = generatePerspectiveWindowName(`${ANONYMOUS_PERSPECTIVE_ID_PREFIX}${UID.randomUID()}`);
98
102
  if (window.open(this._locationStrategy.prepareExternalUrl(this._router.serializeUrl(urlTree)), target)) {
99
103
  await this.removeView(event);
100
104
  }
@@ -105,7 +109,7 @@ export class ViewMoveHandler {
105
109
  async moveView(event) {
106
110
  const addToNewPart = !!event.target.region;
107
111
  if (addToNewPart) {
108
- const newPartId = event.target.newPart?.id ?? randomUUID();
112
+ const newPartId = event.target.newPart?.id ?? UID.randomUID();
109
113
  await this._workbenchRouter.navigate(layout => layout
110
114
  .addPart(newPartId, { relativeTo: event.target.elementId, align: coerceAlignProperty(event.target.region), ratio: event.target.newPart?.ratio }, { structural: false })
111
115
  .moveView(event.source.viewId, newPartId, { activatePart: true, activateView: true }));
@@ -119,15 +123,26 @@ export class ViewMoveHandler {
119
123
  }));
120
124
  }
121
125
  }
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewMoveHandler, deps: [{ token: WORKBENCH_ID }, { token: i1.ɵWorkbenchRouter }, { token: i2.ɵWorkbenchLayoutFactory }, { token: i3.ViewDragService }, { token: i4.Router }, { token: i5.LocationStrategy }], target: i0.ɵɵFactoryTarget.Injectable }); }
123
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewMoveHandler }); }
126
+ /**
127
+ * Subscribes to {@link ViewMoveEvent} events relevant for this app instance,
128
+ * invoking {@link onViewMove} for each event and signaling completion once the view has been moved.
129
+ */
130
+ installViewMoveHandler() {
131
+ const viewDragService = inject(ViewDragService);
132
+ viewDragService.viewMove$
133
+ .pipe(
134
+ // Skip events not relevant for this app instance.
135
+ filter(event => event.source.workbenchId === this._workbenchId || event.target.workbenchId === this._workbenchId), takeUntilDestroyed())
136
+ .subscribe(event => {
137
+ this.onViewMove(event).finally(() => viewDragService.signalViewMoved(event));
138
+ });
139
+ }
140
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewMoveHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
141
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewMoveHandler }); }
124
142
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewMoveHandler, decorators: [{
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewMoveHandler, decorators: [{
126
144
  type: Injectable
127
- }], ctorParameters: () => [{ type: undefined, decorators: [{
128
- type: Inject,
129
- args: [WORKBENCH_ID]
130
- }] }, { type: i1.ɵWorkbenchRouter }, { type: i2.ɵWorkbenchLayoutFactory }, { type: i3.ViewDragService }, { type: i4.Router }, { type: i5.LocationStrategy }] });
145
+ }], ctorParameters: () => [] });
131
146
  function coerceAlignProperty(region) {
132
147
  switch (region) {
133
148
  case 'west':
@@ -142,4 +157,4 @@ function coerceAlignProperty(region) {
142
157
  throw Error(`[UnsupportedRegionError] Supported regions are 'north', 'east', 'south' or 'west', but is '${region}'.`);
143
158
  }
144
159
  }
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1tb3ZlLWhhbmRsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3ZpZXcvdmlldy1tb3ZlLWhhbmRsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUtqRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzNGLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFFL0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQUUxQixZQUEwQyxZQUFvQixFQUMxQyxnQkFBa0MsRUFDbEMsdUJBQWdELEVBQ2hELGdCQUFpQyxFQUNqQyxPQUFlLEVBQ2YsaUJBQW1DO1FBTGIsaUJBQVksR0FBWixZQUFZLENBQVE7UUFDMUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDckQsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLHVCQUF1QjtR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QUFtQixDQUFDO2dCQUMzRyxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsWUFBWSxFQUFFLElBQUk7YUFDbkIsQ0FBQyxDQUFDLENBQUM7U0FDTDtJQUNILENBQUM7OEdBaEhVLGVBQWUsa0JBRU4sWUFBWTtrSEFGckIsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBR0ksTUFBTTsyQkFBQyxZQUFZOztBQWlIbEMsU0FBUyxtQkFBbUIsQ0FBQyxNQUFzRDtJQUNqRixRQUFRLE1BQU0sRUFBRTtRQUNkLEtBQUssTUFBTTtZQUNULE9BQU8sTUFBTSxDQUFDO1FBQ2hCLEtBQUssTUFBTTtZQUNULE9BQU8sT0FBTyxDQUFDO1FBQ2pCLEtBQUssT0FBTztZQUNWLE9BQU8sS0FBSyxDQUFDO1FBQ2YsS0FBSyxPQUFPO1lBQ1YsT0FBTyxRQUFRLENBQUM7UUFDbEI7WUFDRSxNQUFNLEtBQUssQ0FBQyw4RkFBOEYsTUFBTSxJQUFJLENBQUMsQ0FBQztLQUN6SDtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1ZpZXdEcmFnU2VydmljZSwgVmlld01vdmVFdmVudH0gZnJvbSAnLi4vdmlldy1kbmQvdmlldy1kcmFnLnNlcnZpY2UnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0xvY2F0aW9uU3RyYXRlZ3l9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge8m1V29ya2JlbmNoUm91dGVyfSBmcm9tICcuLi9yb3V0aW5nL8m1d29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7Um91dGVyVXRpbHN9IGZyb20gJy4uL3JvdXRpbmcvcm91dGVyLnV0aWwnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaExheW91dEZhY3Rvcnl9IGZyb20gJy4uL2xheW91dC/JtXdvcmtiZW5jaC1sYXlvdXQuZmFjdG9yeSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtEZWZpbmVkfSBmcm9tICdAc2Npb24vdG9vbGtpdC91dGlsJztcbmltcG9ydCB7Z2VuZXJhdGVQZXJzcGVjdGl2ZVdpbmRvd05hbWV9IGZyb20gJy4uL3BlcnNwZWN0aXZlL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS5zZXJ2aWNlJztcbmltcG9ydCB7QU5PTllNT1VTX1BFUlNQRUNUSVZFX0lEX1BSRUZJWH0gZnJvbSAnLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5pbXBvcnQge1dPUktCRU5DSF9JRH0gZnJvbSAnLi4vd29ya2JlbmNoLWlkJztcbmltcG9ydCB7cmFuZG9tVVVJRH0gZnJvbSAnLi4vY29tbW9uL3V1aWQudXRpbCc7XG5cbi8qKlxuICogVXBkYXRlcyB0aGUgd29ya2JlbmNoIGxheW91dCB3aGVuIHRoZSB1c2VyIG1vdmVzIGEgdmlldy5cbiAqL1xuQEluamVjdGFibGUoLyogRE8gTk9UIFBST1ZJREUgdmlhICdwcm92aWRlZEluJyBtZXRhZGF0YSBhcyByZWdpc3RlcmVkIHZpYSB3b3JrYmVuY2ggc3RhcnR1cCBob29rLiAqLylcbmV4cG9ydCBjbGFzcyBWaWV3TW92ZUhhbmRsZXIge1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoV09SS0JFTkNIX0lEKSBwcml2YXRlIF93b3JrYmVuY2hJZDogc3RyaW5nLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hSb3V0ZXI6IMm1V29ya2JlbmNoUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hMYXlvdXRGYWN0b3J5OiDJtVdvcmtiZW5jaExheW91dEZhY3RvcnksXG4gICAgICAgICAgICAgIHByaXZhdGUgX3ZpZXdEcmFnU2VydmljZTogVmlld0RyYWdTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9jYXRpb25TdHJhdGVneTogTG9jYXRpb25TdHJhdGVneSkge1xuICAgIHRoaXMuaW5zdGFsbFZpZXdNb3ZlTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5zdGFsbFZpZXdNb3ZlTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fdmlld0RyYWdTZXJ2aWNlLnZpZXdNb3ZlJFxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jIChldmVudDogVmlld01vdmVFdmVudCkgPT4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJ4anMvbm8tYXN5bmMtc3Vic2NyaWJlXG4gICAgICAgIC8vIENoZWNrIGlmIHRoaXMgd29ya2JlbmNoIGluc3RhbmNlIHRha2VzIHBhcnQgaW4gdGhlIHZpZXcgZHJhZyBvcGVyYXRpb24uIElmIG5vdCwgZG8gbm90aGluZy5cbiAgICAgICAgaWYgKGV2ZW50LnNvdXJjZS53b3JrYmVuY2hJZCAhPT0gdGhpcy5fd29ya2JlbmNoSWQgJiYgZXZlbnQudGFyZ2V0LndvcmtiZW5jaElkICE9PSB0aGlzLl93b3JrYmVuY2hJZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNyb3NzV29ya2JlbmNoVmlld0RyYWcgPSAoZXZlbnQuc291cmNlLndvcmtiZW5jaElkICE9PSBldmVudC50YXJnZXQud29ya2JlbmNoSWQpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHRvIHJlbW92ZSB0aGUgdmlldyBmcm9tIHRoaXMgd29ya2JlbmNoIGluc3RhbmNlIGlmIGJlaW5nIG1vdmVkIHRvIGFub3RoZXIgd29ya2JlbmNoIGluc3RhbmNlLlxuICAgICAgICBpZiAoY3Jvc3NXb3JrYmVuY2hWaWV3RHJhZyAmJiBldmVudC5zb3VyY2Uud29ya2JlbmNoSWQgPT09IHRoaXMuX3dvcmtiZW5jaElkKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdG8gYWRkIHRoZSB2aWV3IHRvIGEgbmV3IGJyb3dzZXIgd2luZG93LlxuICAgICAgICAgIGlmIChldmVudC50YXJnZXQud29ya2JlbmNoSWQgPT09ICduZXctd2luZG93Jykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5tb3ZlVmlld1RvTmV3V2luZG93KGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlbW92ZVZpZXcoZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBDaGVjayBpZiB0byBhZGQgdGhlIHZpZXcgdG8gdGhpcyB3b3JrYmVuY2ggaW5zdGFuY2UgaWYgYmVpbmcgbW92ZWQgZnJvbSBhbm90aGVyIHdvcmtiZW5jaCBpbnN0YW5jZSB0byB0aGlzIHdvcmtiZW5jaCBpbnN0YW5jZS5cbiAgICAgICAgZWxzZSBpZiAoY3Jvc3NXb3JrYmVuY2hWaWV3RHJhZyAmJiBldmVudC50YXJnZXQud29ya2JlbmNoSWQgPT09IHRoaXMuX3dvcmtiZW5jaElkKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGRWaWV3KGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBNb3ZlIHRoZSB2aWV3IHdpdGhpbiB0aGUgc2FtZSB3b3JrYmVuY2ggaW5zdGFuY2UuXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGF3YWl0IHRoaXMubW92ZVZpZXcoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYWRkVmlldyhldmVudDogVmlld01vdmVFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlZ2lvbiA9IGV2ZW50LnRhcmdldC5yZWdpb247XG4gICAgY29uc3QgYWRkVG9OZXdQYXJ0ID0gISFyZWdpb247XG4gICAgY29uc3QgY29tbWFuZHMgPSBSb3V0ZXJVdGlscy5zZWdtZW50c1RvQ29tbWFuZHMoZXZlbnQuc291cmNlLnZpZXdVcmxTZWdtZW50cyk7XG5cbiAgICBhd2FpdCB0aGlzLl93b3JrYmVuY2hSb3V0ZXIubmF2aWdhdGUobGF5b3V0ID0+IHtcbiAgICAgIGNvbnN0IG5ld1ZpZXdJZCA9IGV2ZW50LnNvdXJjZS5hbHRlcm5hdGl2ZVZpZXdJZCA/PyBsYXlvdXQuY29tcHV0ZU5leHRWaWV3SWQoKTtcbiAgICAgIGlmIChhZGRUb05ld1BhcnQpIHtcbiAgICAgICAgY29uc3QgbmV3UGFydElkID0gZXZlbnQudGFyZ2V0Lm5ld1BhcnQ/LmlkID8/IHJhbmRvbVVVSUQoKTtcbiAgICAgICAgcmV0dXJuIGxheW91dFxuICAgICAgICAgIC5hZGRQYXJ0KG5ld1BhcnRJZCwge3JlbGF0aXZlVG86IGV2ZW50LnRhcmdldC5lbGVtZW50SWQsIGFsaWduOiBjb2VyY2VBbGlnblByb3BlcnR5KHJlZ2lvbiEpLCByYXRpbzogZXZlbnQudGFyZ2V0Lm5ld1BhcnQ/LnJhdGlvfSwge3N0cnVjdHVyYWw6IGZhbHNlfSlcbiAgICAgICAgICAuYWRkVmlldyhuZXdWaWV3SWQsIHtwYXJ0SWQ6IG5ld1BhcnRJZCwgYWN0aXZhdGVWaWV3OiB0cnVlLCBhY3RpdmF0ZVBhcnQ6IHRydWUsIGNzc0NsYXNzOiBldmVudC5zb3VyY2UuY2xhc3NMaXN0Py5nZXQoJ2xheW91dCcpfSlcbiAgICAgICAgICAubmF2aWdhdGVWaWV3KG5ld1ZpZXdJZCwgY29tbWFuZHMsIHtoaW50OiBldmVudC5zb3VyY2UubmF2aWdhdGlvbkhpbnQsIGNzc0NsYXNzOiBldmVudC5zb3VyY2UuY2xhc3NMaXN0Py5nZXQoJ25hdmlnYXRpb24nKX0pO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBsYXlvdXRcbiAgICAgICAgICAuYWRkVmlldyhuZXdWaWV3SWQsIHtcbiAgICAgICAgICAgIHBhcnRJZDogRGVmaW5lZC5vckVsc2VUaHJvdyhldmVudC50YXJnZXQuZWxlbWVudElkLCAoKSA9PiBFcnJvcihgW1ZpZXdNb3ZlRXJyb3JdIFRhcmdldCBwYXJ0IHJlcXVpcmVkIGZvciByZWdpb24gJ2NlbnRlcicuYCkpLFxuICAgICAgICAgICAgcG9zaXRpb246IGV2ZW50LnRhcmdldC5wb3NpdGlvbiA/PyAnYWZ0ZXItYWN0aXZlLXZpZXcnLFxuICAgICAgICAgICAgY3NzQ2xhc3M6IGV2ZW50LnNvdXJjZS5jbGFzc0xpc3Q/LmdldCgnbGF5b3V0JyksXG4gICAgICAgICAgICBhY3RpdmF0ZVZpZXc6IHRydWUsXG4gICAgICAgICAgICBhY3RpdmF0ZVBhcnQ6IHRydWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAubmF2aWdhdGVWaWV3KG5ld1ZpZXdJZCwgY29tbWFuZHMsIHtoaW50OiBldmVudC5zb3VyY2UubmF2aWdhdGlvbkhpbnQsIGNzc0NsYXNzOiBldmVudC5zb3VyY2UuY2xhc3NMaXN0Py5nZXQoJ25hdmlnYXRpb24nKX0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBtb3ZlVmlld1RvTmV3V2luZG93KGV2ZW50OiBWaWV3TW92ZUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gT3BlbiB0aGUgdmlldyBcInN0YW5kYWxvbmVcIiBpbiBhIGJsYW5rIHdpbmRvdyBpbiBhbiBhbm9ueW1vdXMgcGVyc3BlY3RpdmUuXG4gICAgY29uc3QgdXJsVHJlZSA9IGF3YWl0IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5jcmVhdGVVcmxUcmVlKCgpID0+IHtcbiAgICAgIGNvbnN0IG5ld0xheW91dCA9IHRoaXMuX3dvcmtiZW5jaExheW91dEZhY3RvcnkuY3JlYXRlKCk7XG4gICAgICBjb25zdCBuZXdWaWV3SWQgPSBldmVudC5zb3VyY2UuYWx0ZXJuYXRpdmVWaWV3SWQgPz8gbmV3TGF5b3V0LmNvbXB1dGVOZXh0Vmlld0lkKCk7XG4gICAgICBjb25zdCBjb21tYW5kcyA9IFJvdXRlclV0aWxzLnNlZ21lbnRzVG9Db21tYW5kcyhldmVudC5zb3VyY2Uudmlld1VybFNlZ21lbnRzKTtcbiAgICAgIHJldHVybiBuZXdMYXlvdXRcbiAgICAgICAgLmFkZFZpZXcobmV3Vmlld0lkLCB7XG4gICAgICAgICAgcGFydElkOiBuZXdMYXlvdXQuYWN0aXZlUGFydCh7Z3JpZDogJ21haW5BcmVhJ30pIS5pZCxcbiAgICAgICAgICBhY3RpdmF0ZVZpZXc6IHRydWUsXG4gICAgICAgICAgY3NzQ2xhc3M6IGV2ZW50LnNvdXJjZS5jbGFzc0xpc3Q/LmdldCgnbGF5b3V0JyksXG4gICAgICAgIH0pXG4gICAgICAgIC5uYXZpZ2F0ZVZpZXcobmV3Vmlld0lkLCBjb21tYW5kcywge2hpbnQ6IGV2ZW50LnNvdXJjZS5uYXZpZ2F0aW9uSGludCwgY3NzQ2xhc3M6IGV2ZW50LnNvdXJjZS5jbGFzc0xpc3Q/LmdldCgnbmF2aWdhdGlvbicpfSk7XG4gICAgfSk7XG4gICAgY29uc3QgdGFyZ2V0ID0gZ2VuZXJhdGVQZXJzcGVjdGl2ZVdpbmRvd05hbWUoYCR7QU5PTllNT1VTX1BFUlNQRUNUSVZFX0lEX1BSRUZJWH0ke3JhbmRvbVVVSUQoKX1gKTtcbiAgICBpZiAod2luZG93Lm9wZW4odGhpcy5fbG9jYXRpb25TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwodGhpcy5fcm91dGVyLnNlcmlhbGl6ZVVybCh1cmxUcmVlISkpLCB0YXJnZXQpKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlbW92ZVZpZXcoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVtb3ZlVmlldyhldmVudDogVmlld01vdmVFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5uYXZpZ2F0ZShsYXlvdXQgPT4gbGF5b3V0LnJlbW92ZVZpZXcoZXZlbnQuc291cmNlLnZpZXdJZCwge2ZvcmNlOiB0cnVlfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBtb3ZlVmlldyhldmVudDogVmlld01vdmVFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGFkZFRvTmV3UGFydCA9ICEhZXZlbnQudGFyZ2V0LnJlZ2lvbjtcbiAgICBpZiAoYWRkVG9OZXdQYXJ0KSB7XG4gICAgICBjb25zdCBuZXdQYXJ0SWQgPSBldmVudC50YXJnZXQubmV3UGFydD8uaWQgPz8gcmFuZG9tVVVJRCgpO1xuICAgICAgYXdhaXQgdGhpcy5fd29ya2JlbmNoUm91dGVyLm5hdmlnYXRlKGxheW91dCA9PiBsYXlvdXRcbiAgICAgICAgLmFkZFBhcnQobmV3UGFydElkLCB7cmVsYXRpdmVUbzogZXZlbnQudGFyZ2V0LmVsZW1lbnRJZCwgYWxpZ246IGNvZXJjZUFsaWduUHJvcGVydHkoZXZlbnQudGFyZ2V0LnJlZ2lvbiEpLCByYXRpbzogZXZlbnQudGFyZ2V0Lm5ld1BhcnQ/LnJhdGlvfSwge3N0cnVjdHVyYWw6IGZhbHNlfSlcbiAgICAgICAgLm1vdmVWaWV3KGV2ZW50LnNvdXJjZS52aWV3SWQsIG5ld1BhcnRJZCwge2FjdGl2YXRlUGFydDogdHJ1ZSwgYWN0aXZhdGVWaWV3OiB0cnVlfSksXG4gICAgICApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IHRhcmdldFBhcnRJZCA9IERlZmluZWQub3JFbHNlVGhyb3coZXZlbnQudGFyZ2V0LmVsZW1lbnRJZCwgKCkgPT4gRXJyb3IoYFtWaWV3TW92ZUVycm9yXSBUYXJnZXQgcGFydCByZXF1aXJlZCBmb3IgcmVnaW9uICdjZW50ZXInLmApKTtcbiAgICAgIGF3YWl0IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5uYXZpZ2F0ZShsYXlvdXQgPT4gbGF5b3V0Lm1vdmVWaWV3KGV2ZW50LnNvdXJjZS52aWV3SWQsIHRhcmdldFBhcnRJZCwge1xuICAgICAgICBwb3NpdGlvbjogZXZlbnQudGFyZ2V0LnBvc2l0aW9uID8/IChldmVudC5zb3VyY2UucGFydElkID09PSB0YXJnZXRQYXJ0SWQgPyB1bmRlZmluZWQgOiAnYWZ0ZXItYWN0aXZlLXZpZXcnKSxcbiAgICAgICAgYWN0aXZhdGVWaWV3OiB0cnVlLFxuICAgICAgICBhY3RpdmF0ZVBhcnQ6IHRydWUsXG4gICAgICB9KSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvZXJjZUFsaWduUHJvcGVydHkocmVnaW9uOiAnbm9ydGgnIHwgJ2Vhc3QnIHwgJ3NvdXRoJyB8ICd3ZXN0JyB8ICdjZW50ZXInKTogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ2JvdHRvbScge1xuICBzd2l0Y2ggKHJlZ2lvbikge1xuICAgIGNhc2UgJ3dlc3QnOlxuICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICBjYXNlICdlYXN0JzpcbiAgICAgIHJldHVybiAncmlnaHQnO1xuICAgIGNhc2UgJ25vcnRoJzpcbiAgICAgIHJldHVybiAndG9wJztcbiAgICBjYXNlICdzb3V0aCc6XG4gICAgICByZXR1cm4gJ2JvdHRvbSc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IEVycm9yKGBbVW5zdXBwb3J0ZWRSZWdpb25FcnJvcl0gU3VwcG9ydGVkIHJlZ2lvbnMgYXJlICdub3J0aCcsICdlYXN0JywgJ3NvdXRoJyBvciAnd2VzdCcsIGJ1dCBpcyAnJHtyZWdpb259Jy5gKTtcbiAgfVxufVxuIl19
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1tb3ZlLWhhbmRsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3ZpZXcvdmlldy1tb3ZlLWhhbmRsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxlQUFlLEVBQWdCLE1BQU0sK0JBQStCLENBQUM7QUFDN0UsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBRXRDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFRMUI7UUFOaUIsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxD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T0FBTyxNQUFNLENBQUM7UUFDaEIsS0FBSyxNQUFNO1lBQ1QsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxPQUFPO1lBQ1YsT0FBTyxLQUFLLENBQUM7UUFDZixLQUFLLE9BQU87WUFDVixPQUFPLFFBQVEsQ0FBQztRQUNsQjtZQUNFLE1BQU0sS0FBSyxDQUFDLDhGQUE4RixNQUFNLElBQUksQ0FBQyxDQUFDO0lBQzFILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1ZpZXdEcmFnU2VydmljZSwgVmlld01vdmVFdmVudH0gZnJvbSAnLi4vdmlldy1kbmQvdmlldy1kcmFnLnNlcnZpY2UnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0xvY2F0aW9uU3RyYXRlZ3l9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge8m1V29ya2JlbmNoUm91dGVyfSBmcm9tICcuLi9yb3V0aW5nL8m1d29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7Um91dGluZ30gZnJvbSAnLi4vcm91dGluZy9yb3V0aW5nLnV0aWwnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaExheW91dEZhY3Rvcnl9IGZyb20gJy4uL2xheW91dC/JtXdvcmtiZW5jaC1sYXlvdXQuZmFjdG9yeSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtEZWZpbmVkfSBmcm9tICdAc2Npb24vdG9vbGtpdC91dGlsJztcbmltcG9ydCB7Z2VuZXJhdGVQZXJzcGVjdGl2ZVdpbmRvd05hbWV9IGZyb20gJy4uL3BlcnNwZWN0aXZlL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS5zZXJ2aWNlJztcbmltcG9ydCB7QU5PTllNT1VTX1BFUlNQRUNUSVZFX0lEX1BSRUZJWH0gZnJvbSAnLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5pbXBvcnQge1dPUktCRU5DSF9JRH0gZnJvbSAnLi4vd29ya2JlbmNoLWlkJztcbmltcG9ydCB7VUlEfSBmcm9tICcuLi9jb21tb24vdWlkLnV0aWwnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBVcGRhdGVzIHRoZSB3b3JrYmVuY2ggbGF5b3V0IHdoZW4gcmVjZWl2aW5nIGEge0BsaW5rIFZpZXdNb3ZlRXZlbnR9IGV2ZW50IHJlbGV2YW50IGZvciB0aGlzIGFwcGxpY2F0aW9uLlxuICovXG5ASW5qZWN0YWJsZSgvKiBETyBOT1QgUFJPVklERSB2aWEgJ3Byb3ZpZGVkSW4nIG1ldGFkYXRhIGFzIHJlZ2lzdGVyZWQgdmlhIHdvcmtiZW5jaCBzdGFydHVwIGhvb2suICovKVxuZXhwb3J0IGNsYXNzIFZpZXdNb3ZlSGFuZGxlciB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfd29ya2JlbmNoSWQgPSBpbmplY3QoV09SS0JFTkNIX0lEKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfd29ya2JlbmNoUm91dGVyID0gaW5qZWN0KMm1V29ya2JlbmNoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfd29ya2JlbmNoTGF5b3V0RmFjdG9yeSA9IGluamVjdCjJtVdvcmtiZW5jaExheW91dEZhY3RvcnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9jYXRpb25TdHJhdGVneSA9IGluamVjdChMb2NhdGlvblN0cmF0ZWd5KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmluc3RhbGxWaWV3TW92ZUhhbmRsZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSB3b3JrYmVuY2ggbGF5b3V0IHdoZW4gcmVjZWl2aW5nIGEge0BsaW5rIFZpZXdNb3ZlRXZlbnR9IGV2ZW50IHJlbGV2YW50IGZvciB0aGlzIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBvblZpZXdNb3ZlKGV2ZW50OiBWaWV3TW92ZUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY3Jvc3NXb3JrYmVuY2hWaWV3RHJhZyA9IChldmVudC5zb3VyY2Uud29ya2JlbmNoSWQgIT09IGV2ZW50LnRhcmdldC53b3JrYmVuY2hJZCk7XG5cbiAgICAvLyBDaGVjayBpZiB0byByZW1vdmUgdGhlIHZpZXcgZnJvbSB0aGlzIHdvcmtiZW5jaCBpbnN0YW5jZSBpZiBiZWluZyBtb3ZlZCB0byBhbm90aGVyIHdvcmtiZW5jaCBpbnN0YW5jZS5cbiAgICBpZiAoY3Jvc3NXb3JrYmVuY2hWaWV3RHJhZyAmJiBldmVudC5zb3VyY2Uud29ya2JlbmNoSWQgPT09IHRoaXMuX3dvcmtiZW5jaElkKSB7XG4gICAgICAvLyBDaGVjayBpZiB0byBhZGQgdGhlIHZpZXcgdG8gYSBuZXcgYnJvd3NlciB3aW5kb3cuXG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LndvcmtiZW5jaElkID09PSAnbmV3LXdpbmRvdycpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5tb3ZlVmlld1RvTmV3V2luZG93KGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLnJlbW92ZVZpZXcoZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBDaGVjayBpZiB0byBhZGQgdGhlIHZpZXcgdG8gdGhpcyB3b3JrYmVuY2ggaW5zdGFuY2UgaWYgYmVpbmcgbW92ZWQgZnJvbSBhbm90aGVyIHdvcmtiZW5jaCBpbnN0YW5jZSB0byB0aGlzIHdvcmtiZW5jaCBpbnN0YW5jZS5cbiAgICBlbHNlIGlmIChjcm9zc1dvcmtiZW5jaFZpZXdEcmFnICYmIGV2ZW50LnRhcmdldC53b3JrYmVuY2hJZCA9PT0gdGhpcy5fd29ya2JlbmNoSWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRkVmlldyhldmVudCk7XG4gICAgfVxuICAgIC8vIE1vdmUgdGhlIHZpZXcgd2l0aGluIHRoZSBzYW1lIHdvcmtiZW5jaCBpbnN0YW5jZS5cbiAgICBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMubW92ZVZpZXcoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYWRkVmlldyhldmVudDogVmlld01vdmVFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlZ2lvbiA9IGV2ZW50LnRhcmdldC5yZWdpb247XG4gICAgY29uc3QgYWRkVG9OZXdQYXJ0ID0gISFyZWdpb247XG4gICAgY29uc3QgY29tbWFuZHMgPSBSb3V0aW5nLnNlZ21lbnRzVG9Db21tYW5kcyhldmVudC5zb3VyY2Uudmlld1VybFNlZ21lbnRzKTtcblxuICAgIGF3YWl0IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5uYXZpZ2F0ZShsYXlvdXQgPT4ge1xuICAgICAgY29uc3QgbmV3Vmlld0lkID0gZXZlbnQuc291cmNlLmFsdGVybmF0aXZlVmlld0lkID8/IGxheW91dC5jb21wdXRlTmV4dFZpZXdJZCgpO1xuICAgICAgaWYgKGFkZFRvTmV3UGFydCkge1xuICAgICAgICBjb25zdCBuZXdQYXJ0SWQgPSBldmVudC50YXJnZXQubmV3UGFydD8uaWQgPz8gVUlELnJhbmRvbVVJRCgpO1xuICAgICAgICByZXR1cm4gbGF5b3V0XG4gICAgICAgICAgLmFkZFBhcnQobmV3UGFydElkLCB7cmVsYXRpdmVUbzogZXZlbnQudGFyZ2V0LmVsZW1lbnRJZCwgYWxpZ246IGNvZXJjZUFsaWduUHJvcGVydHkocmVnaW9uISksIHJhdGlvOiBldmVudC50YXJnZXQubmV3UGFydD8ucmF0aW99LCB7c3RydWN0dXJhbDogZmFsc2V9KVxuICAgICAgICAgIC5hZGRWaWV3KG5ld1ZpZXdJZCwge3BhcnRJZDogbmV3UGFydElkLCBhY3RpdmF0ZVZpZXc6IHRydWUsIGFjdGl2YXRlUGFydDogdHJ1ZSwgY3NzQ2xhc3M6IGV2ZW50LnNvdXJjZS5jbGFzc0xpc3Q/LmdldCgnbGF5b3V0Jyl9KVxuICAgICAgICAgIC5uYXZpZ2F0ZVZpZXcobmV3Vmlld0lkLCBjb21tYW5kcywge2hpbnQ6IGV2ZW50LnNvdXJjZS5uYXZpZ2F0aW9uSGludCwgY3NzQ2xhc3M6IGV2ZW50LnNvdXJjZS5jbGFzc0xpc3Q/LmdldCgnbmF2aWdhdGlvbicpLCBkYXRhOiBldmVudC5zb3VyY2UubmF2aWdhdGlvbkRhdGF9KTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gbGF5b3V0XG4gICAgICAgICAgLmFkZFZpZXcobmV3Vmlld0lkLCB7XG4gICAgICAgICAgICBwYXJ0SWQ6IERlZmluZWQub3JFbHNlVGhyb3coZXZlbnQudGFyZ2V0LmVsZW1lbnRJZCwgKCkgPT4gRXJyb3IoYFtWaWV3TW92ZUVycm9yXSBUYXJnZXQgcGFydCByZXF1aXJlZCBmb3IgcmVnaW9uICdjZW50ZXInLmApKSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBldmVudC50YXJnZXQucG9zaXRpb24gPz8gJ2FmdGVyLWFjdGl2ZS12aWV3JyxcbiAgICAgICAgICAgIGNzc0NsYXNzOiBldmVudC5zb3VyY2UuY2xhc3NMaXN0Py5nZXQoJ2xheW91dCcpLFxuICAgICAgICAgICAgYWN0aXZhdGVWaWV3OiB0cnVlLFxuICAgICAgICAgICAgYWN0aXZhdGVQYXJ0OiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLm5hdmlnYXRlVmlldyhuZXdWaWV3SWQsIGNvbW1hbmRzLCB7aGludDogZXZlbnQuc291cmNlLm5hdmlnYXRpb25IaW50LCBjc3NDbGFzczogZXZlbnQuc291cmNlLmNsYXNzTGlzdD8uZ2V0KCduYXZpZ2F0aW9uJyksIGRhdGE6IGV2ZW50LnNvdXJjZS5uYXZpZ2F0aW9uRGF0YX0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBtb3ZlVmlld1RvTmV3V2luZG93KGV2ZW50OiBWaWV3TW92ZUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gT3BlbiB0aGUgdmlldyBcInN0YW5kYWxvbmVcIiBpbiBhIGJsYW5rIHdpbmRvdyBpbiBhbiBhbm9ueW1vdXMgcGVyc3BlY3RpdmUuXG4gICAgY29uc3QgdXJsVHJlZSA9IGF3YWl0IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5jcmVhdGVVcmxUcmVlKCgpID0+IHtcbiAgICAgIGNvbnN0IG5ld0xheW91dCA9IHRoaXMuX3dvcmtiZW5jaExheW91dEZhY3RvcnkuY3JlYXRlKCk7XG4gICAgICBjb25zdCBuZXdWaWV3SWQgPSBldmVudC5zb3VyY2UuYWx0ZXJuYXRpdmVWaWV3SWQgPz8gbmV3TGF5b3V0LmNvbXB1dGVOZXh0Vmlld0lkKCk7XG4gICAgICBjb25zdCBjb21tYW5kcyA9IFJvdXRpbmcuc2VnbWVudHNUb0NvbW1hbmRzKGV2ZW50LnNvdXJjZS52aWV3VXJsU2VnbWVudHMpO1xuICAgICAgcmV0dXJuIG5ld0xheW91dFxuICAgICAgICAuYWRkVmlldyhuZXdWaWV3SWQsIHtcbiAgICAgICAgICBwYXJ0SWQ6IG5ld0xheW91dC5hY3RpdmVQYXJ0KHtncmlkOiAnbWFpbkFyZWEnfSkhLmlkLFxuICAgICAgICAgIGFjdGl2YXRlVmlldzogdHJ1ZSxcbiAgICAgICAgICBjc3NDbGFzczogZXZlbnQuc291cmNlLmNsYXNzTGlzdD8uZ2V0KCdsYXlvdXQnKSxcbiAgICAgICAgfSlcbiAgICAgICAgLm5hdmlnYXRlVmlldyhuZXdWaWV3SWQsIGNvbW1hbmRzLCB7aGludDogZXZlbnQuc291cmNlLm5hdmlnYXRpb25IaW50LCBjc3NDbGFzczogZXZlbnQuc291cmNlLmNsYXNzTGlzdD8uZ2V0KCduYXZpZ2F0aW9uJyksIGRhdGE6IGV2ZW50LnNvdXJjZS5uYXZpZ2F0aW9uRGF0YX0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHRhcmdldCA9IGdlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKGAke0FOT05ZTU9VU19QRVJTUEVDVElWRV9JRF9QUkVGSVh9JHtVSUQucmFuZG9tVUlEKCl9YCk7XG4gICAgaWYgKHdpbmRvdy5vcGVuKHRoaXMuX2xvY2F0aW9uU3RyYXRlZ3kucHJlcGFyZUV4dGVybmFsVXJsKHRoaXMuX3JvdXRlci5zZXJpYWxpemVVcmwodXJsVHJlZSEpKSwgdGFyZ2V0KSkge1xuICAgICAgYXdhaXQgdGhpcy5yZW1vdmVWaWV3KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlbW92ZVZpZXcoZXZlbnQ6IFZpZXdNb3ZlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLl93b3JrYmVuY2hSb3V0ZXIubmF2aWdhdGUobGF5b3V0ID0+IGxheW91dC5yZW1vdmVWaWV3KGV2ZW50LnNvdXJjZS52aWV3SWQsIHtmb3JjZTogdHJ1ZX0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbW92ZVZpZXcoZXZlbnQ6IFZpZXdNb3ZlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBhZGRUb05ld1BhcnQgPSAhIWV2ZW50LnRhcmdldC5yZWdpb247XG4gICAgaWYgKGFkZFRvTmV3UGFydCkge1xuICAgICAgY29uc3QgbmV3UGFydElkID0gZXZlbnQudGFyZ2V0Lm5ld1BhcnQ/LmlkID8/IFVJRC5yYW5kb21VSUQoKTtcbiAgICAgIGF3YWl0IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5uYXZpZ2F0ZShsYXlvdXQgPT4gbGF5b3V0XG4gICAgICAgIC5hZGRQYXJ0KG5ld1BhcnRJZCwge3JlbGF0aXZlVG86IGV2ZW50LnRhcmdldC5lbGVtZW50SWQsIGFsaWduOiBjb2VyY2VBbGlnblByb3BlcnR5KGV2ZW50LnRhcmdldC5yZWdpb24hKSwgcmF0aW86IGV2ZW50LnRhcmdldC5uZXdQYXJ0Py5yYXRpb30sIHtzdHJ1Y3R1cmFsOiBmYWxzZX0pXG4gICAgICAgIC5tb3ZlVmlldyhldmVudC5zb3VyY2Uudmlld0lkLCBuZXdQYXJ0SWQsIHthY3RpdmF0ZVBhcnQ6IHRydWUsIGFjdGl2YXRlVmlldzogdHJ1ZX0pLFxuICAgICAgKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zdCB0YXJnZXRQYXJ0SWQgPSBEZWZpbmVkLm9yRWxzZVRocm93KGV2ZW50LnRhcmdldC5lbGVtZW50SWQsICgpID0+IEVycm9yKGBbVmlld01vdmVFcnJvcl0gVGFyZ2V0IHBhcnQgcmVxdWlyZWQgZm9yIHJlZ2lvbiAnY2VudGVyJy5gKSk7XG4gICAgICBhd2FpdCB0aGlzLl93b3JrYmVuY2hSb3V0ZXIubmF2aWdhdGUobGF5b3V0ID0+IGxheW91dC5tb3ZlVmlldyhldmVudC5zb3VyY2Uudmlld0lkLCB0YXJnZXRQYXJ0SWQsIHtcbiAgICAgICAgcG9zaXRpb246IGV2ZW50LnRhcmdldC5wb3NpdGlvbiA/PyAoZXZlbnQuc291cmNlLnBhcnRJZCA9PT0gdGFyZ2V0UGFydElkID8gdW5kZWZpbmVkIDogJ2FmdGVyLWFjdGl2ZS12aWV3JyksXG4gICAgICAgIGFjdGl2YXRlVmlldzogdHJ1ZSxcbiAgICAgICAgYWN0aXZhdGVQYXJ0OiB0cnVlLFxuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmVzIHRvIHtAbGluayBWaWV3TW92ZUV2ZW50fSBldmVudHMgcmVsZXZhbnQgZm9yIHRoaXMgYXBwIGluc3RhbmNlLFxuICAgKiBpbnZva2luZyB7QGxpbmsgb25WaWV3TW92ZX0gZm9yIGVhY2ggZXZlbnQgYW5kIHNpZ25hbGluZyBjb21wbGV0aW9uIG9uY2UgdGhlIHZpZXcgaGFzIGJlZW4gbW92ZWQuXG4gICAqL1xuICBwcml2YXRlIGluc3RhbGxWaWV3TW92ZUhhbmRsZXIoKTogdm9pZCB7XG4gICAgY29uc3Qgdmlld0RyYWdTZXJ2aWNlID0gaW5qZWN0KFZpZXdEcmFnU2VydmljZSk7XG5cbiAgICB2aWV3RHJhZ1NlcnZpY2Uudmlld01vdmUkXG4gICAgICAucGlwZShcbiAgICAgICAgLy8gU2tpcCBldmVudHMgbm90IHJlbGV2YW50IGZvciB0aGlzIGFwcCBpbnN0YW5jZS5cbiAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50LnNvdXJjZS53b3JrYmVuY2hJZCA9PT0gdGhpcy5fd29ya2JlbmNoSWQgfHwgZXZlbnQudGFyZ2V0LndvcmtiZW5jaElkID09PSB0aGlzLl93b3JrYmVuY2hJZCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIHRoaXMub25WaWV3TW92ZShldmVudCkuZmluYWxseSgoKSA9PiB2aWV3RHJhZ1NlcnZpY2Uuc2lnbmFsVmlld01vdmVkKGV2ZW50KSk7XG4gICAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb2VyY2VBbGlnblByb3BlcnR5KHJlZ2lvbjogJ25vcnRoJyB8ICdlYXN0JyB8ICdzb3V0aCcgfCAnd2VzdCcgfCAnY2VudGVyJyk6ICdsZWZ0JyB8ICdyaWdodCcgfCAndG9wJyB8ICdib3R0b20nIHtcbiAgc3dpdGNoIChyZWdpb24pIHtcbiAgICBjYXNlICd3ZXN0JzpcbiAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgY2FzZSAnZWFzdCc6XG4gICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICBjYXNlICdub3J0aCc6XG4gICAgICByZXR1cm4gJ3RvcCc7XG4gICAgY2FzZSAnc291dGgnOlxuICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBFcnJvcihgW1Vuc3VwcG9ydGVkUmVnaW9uRXJyb3JdIFN1cHBvcnRlZCByZWdpb25zIGFyZSAnbm9ydGgnLCAnZWFzdCcsICdzb3V0aCcgb3IgJ3dlc3QnLCBidXQgaXMgJyR7cmVnaW9ufScuYCk7XG4gIH1cbn1cbiJdfQ==
@@ -7,15 +7,15 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { Pipe } from '@angular/core';
10
+ import { inject, Pipe } from '@angular/core';
11
+ import { WORKBENCH_VIEW_REGISTRY } from './workbench-view.registry';
11
12
  import * as i0 from "@angular/core";
12
- import * as i1 from "./workbench-view.registry";
13
13
  /**
14
14
  * Resolves the portal for the given view, or throws an error if the view is not registered.
15
15
  */
16
16
  export class ViewPortalPipe {
17
- constructor(_viewRegistry) {
18
- this._viewRegistry = _viewRegistry;
17
+ constructor() {
18
+ this._viewRegistry = inject(WORKBENCH_VIEW_REGISTRY);
19
19
  }
20
20
  transform(viewId) {
21
21
  if (!viewId) {
@@ -23,11 +23,11 @@ export class ViewPortalPipe {
23
23
  }
24
24
  return this._viewRegistry.get(viewId).portal;
25
25
  }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewPortalPipe, deps: [{ token: i1.WorkbenchViewRegistry }], target: i0.ɵɵFactoryTarget.Pipe }); }
27
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.6", ngImport: i0, type: ViewPortalPipe, isStandalone: true, name: "wbViewPortal" }); }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewPortalPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
27
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: ViewPortalPipe, isStandalone: true, name: "wbViewPortal" }); }
28
28
  }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewPortalPipe, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewPortalPipe, decorators: [{
30
30
  type: Pipe,
31
31
  args: [{ name: 'wbViewPortal', standalone: true }]
32
- }], ctorParameters: () => [{ type: i1.WorkbenchViewRegistry }] });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1wb3J0YWwucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3ZpZXcvdmlldy1wb3J0YWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDOzs7QUFNbEQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUFvQixhQUFvQztRQUFwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBdUI7SUFDeEQsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFxQjtRQUNwQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQy9DLENBQUM7OEdBVlUsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixJQUFJO21CQUFDLEVBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hWaWV3UmVnaXN0cnl9IGZyb20gJy4vd29ya2JlbmNoLXZpZXcucmVnaXN0cnknO1xuaW1wb3J0IHtXYkNvbXBvbmVudFBvcnRhbH0gZnJvbSAnLi4vcG9ydGFsL3diLWNvbXBvbmVudC1wb3J0YWwnO1xuaW1wb3J0IHR5cGUge1ZpZXdDb21wb25lbnR9IGZyb20gJy4uL3ZpZXcvdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHtWaWV3SWR9IGZyb20gJy4vd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBwb3J0YWwgZm9yIHRoZSBnaXZlbiB2aWV3LCBvciB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHZpZXcgaXMgbm90IHJlZ2lzdGVyZWQuXG4gKi9cbkBQaXBlKHtuYW1lOiAnd2JWaWV3UG9ydGFsJywgc3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgY2xhc3MgVmlld1BvcnRhbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF92aWV3UmVnaXN0cnk6IFdvcmtiZW5jaFZpZXdSZWdpc3RyeSkge1xuICB9XG5cbiAgcHVibGljIHRyYW5zZm9ybSh2aWV3SWQ6IFZpZXdJZCB8IG51bGwpOiBXYkNvbXBvbmVudFBvcnRhbDxWaWV3Q29tcG9uZW50PiB8IG51bGwge1xuICAgIGlmICghdmlld0lkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdSZWdpc3RyeS5nZXQodmlld0lkKS5wb3J0YWw7XG4gIH1cbn1cbiJdfQ==
32
+ }] });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1wb3J0YWwucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3ZpZXcvdmlldy1wb3J0YWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7QUFLbEU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUdtQixrQkFBYSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0tBUWxFO0lBTlEsU0FBUyxDQUFDLE1BQXFCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQy9DLENBQUM7OEdBVFUsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixJQUFJO21CQUFDLEVBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge2luamVjdCwgUGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dPUktCRU5DSF9WSUVXX1JFR0lTVFJZfSBmcm9tICcuL3dvcmtiZW5jaC12aWV3LnJlZ2lzdHJ5JztcbmltcG9ydCB7V2JDb21wb25lbnRQb3J0YWx9IGZyb20gJy4uL3BvcnRhbC93Yi1jb21wb25lbnQtcG9ydGFsJztcbmltcG9ydCB0eXBlIHtWaWV3Q29tcG9uZW50fSBmcm9tICcuLi92aWV3L3ZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7Vmlld0lkfSBmcm9tICcuL3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgcG9ydGFsIGZvciB0aGUgZ2l2ZW4gdmlldywgb3IgdGhyb3dzIGFuIGVycm9yIGlmIHRoZSB2aWV3IGlzIG5vdCByZWdpc3RlcmVkLlxuICovXG5AUGlwZSh7bmFtZTogJ3diVmlld1BvcnRhbCcsIHN0YW5kYWxvbmU6IHRydWV9KVxuZXhwb3J0IGNsYXNzIFZpZXdQb3J0YWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld1JlZ2lzdHJ5ID0gaW5qZWN0KFdPUktCRU5DSF9WSUVXX1JFR0lTVFJZKTtcblxuICBwdWJsaWMgdHJhbnNmb3JtKHZpZXdJZDogVmlld0lkIHwgbnVsbCk6IFdiQ29tcG9uZW50UG9ydGFsPFZpZXdDb21wb25lbnQ+IHwgbnVsbCB7XG4gICAgaWYgKCF2aWV3SWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdmlld1JlZ2lzdHJ5LmdldCh2aWV3SWQpLnBvcnRhbDtcbiAgfVxufVxuIl19
@@ -7,74 +7,91 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { Component, HostBinding, inject, ViewChild } from '@angular/core';
11
- import { AsyncSubject, combineLatest } from 'rxjs';
10
+ import { Component, effect, ElementRef, HostBinding, inject, untracked, viewChild } from '@angular/core';
12
11
  import { RouterOutlet } from '@angular/router';
13
12
  import { SciViewportComponent } from '@scion/components/viewport';
13
+ import { ViewMenuService } from '../part/view-context-menu/view-menu.service';
14
14
  import { ɵWorkbenchView } from './ɵworkbench-view.model';
15
15
  import { LoggerNames } from '../logging';
16
16
  import { A11yModule } from '@angular/cdk/a11y';
17
17
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
18
18
  import { GLASS_PANE_BLOCKABLE, GLASS_PANE_OPTIONS, GlassPaneDirective } from '../glass-pane/glass-pane.directive';
19
19
  import { WorkbenchView } from './workbench-view.model';
20
+ import { NgClass } from '@angular/common';
20
21
  import * as i0 from "@angular/core";
21
22
  import * as i1 from "./\u0275workbench-view.model";
22
- import * as i2 from "../logging";
23
- import * as i3 from "../view-dnd/view-drag.service";
24
- import * as i4 from "../part/view-context-menu/view-menu.service";
25
- import * as i5 from "../glass-pane/glass-pane.directive";
23
+ import * as i2 from "../view-dnd/view-drag.service";
24
+ import * as i3 from "../logging";
25
+ import * as i4 from "../glass-pane/glass-pane.directive";
26
+ import * as i5 from "@angular/common";
26
27
  import * as i6 from "@angular/cdk/a11y";
27
28
  /**
28
29
  * Renders the workbench view, using a router-outlet to display view content.
29
30
  */
30
31
  export class ViewComponent {
31
- set setViewport(viewport) {
32
- if (viewport) {
33
- this._viewport$.next(viewport);
34
- this._viewport$.complete();
35
- }
36
- }
37
32
  get viewId() {
38
33
  return this._view.id;
39
34
  }
40
- get cssClasses() {
41
- return this._view.classList.value.join(' ');
42
- }
43
35
  get isViewDragActive() {
44
- return this._viewDragService.viewDragData !== null;
36
+ return this._viewDragService.viewDragData() !== null;
45
37
  }
46
- constructor(_view, _logger, _host, _viewDragService, viewContextMenuService) {
38
+ constructor(_view, _viewDragService, _logger) {
47
39
  this._view = _view;
48
- this._logger = _logger;
49
- this._host = _host;
50
40
  this._viewDragService = _viewDragService;
51
- this._viewport$ = new AsyncSubject();
41
+ this._logger = _logger;
42
+ this._viewport = viewChild.required(SciViewportComponent);
43
+ this._scrollTop = 0;
44
+ this._scrollLeft = 0;
52
45
  this._logger.debug(() => `Constructing ViewComponent. [viewId=${this.viewId}]`, LoggerNames.LIFECYCLE);
53
- viewContextMenuService.installMenuItemAccelerators$(this._host, this._view)
46
+ this.installMenuItemAccelerators();
47
+ this.installOnActivateView();
48
+ this.addHostCssClasses();
49
+ }
50
+ /**
51
+ * Method invoked after attached this component to the DOM.
52
+ */
53
+ onAttach() {
54
+ this._viewport().scrollTop = this._scrollTop;
55
+ this._viewport().scrollLeft = this._scrollLeft;
56
+ }
57
+ /**
58
+ * Method invoked before detaching this component from the DOM.
59
+ */
60
+ onDetach() {
61
+ this._scrollTop = this._viewport().scrollTop;
62
+ this._scrollLeft = this._viewport().scrollLeft;
63
+ }
64
+ onActivateView() {
65
+ // Gain focus only if in the active part.
66
+ if (this._view.part().active()) {
67
+ this._viewport().focus();
68
+ }
69
+ }
70
+ installMenuItemAccelerators() {
71
+ inject(ViewMenuService).installMenuItemAccelerators$(inject((ElementRef)), this._view)
54
72
  .pipe(takeUntilDestroyed())
55
73
  .subscribe();
56
- combineLatest([this._view.active$, this._viewport$])
57
- .pipe(takeUntilDestroyed())
58
- .subscribe(([active, viewport]) => active ? this.onActivateView(viewport) : this.onDeactivateView(viewport));
59
74
  }
60
- onActivateView(viewport) {
61
- viewport.focus();
62
- viewport.scrollTop = this._view.scrollTop;
63
- viewport.scrollLeft = this._view.scrollLeft;
75
+ installOnActivateView() {
76
+ effect(() => {
77
+ if (this._view.active()) {
78
+ untracked(() => this.onActivateView());
79
+ }
80
+ });
64
81
  }
65
- onDeactivateView(viewport) {
66
- this._view.scrollTop = viewport.scrollTop;
67
- this._view.scrollLeft = viewport.scrollLeft;
82
+ addHostCssClasses() {
83
+ const ngClass = inject(NgClass);
84
+ effect(() => ngClass.ngClass = this._view.classList.asList());
68
85
  }
69
86
  ngOnDestroy() {
70
87
  this._logger.debug(() => `Destroying ViewComponent [viewId=${this.viewId}]'`, LoggerNames.LIFECYCLE);
71
88
  }
72
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewComponent, deps: [{ token: i1.ɵWorkbenchView }, { token: i2.Logger }, { token: i0.ElementRef }, { token: i3.ViewDragService }, { token: i4.ViewMenuService }], target: i0.ɵɵFactoryTarget.Component }); }
73
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ViewComponent, isStandalone: true, selector: "wb-view", host: { properties: { "attr.data-viewid": "this.viewId", "attr.class": "this.cssClasses", "class.view-drag": "this.isViewDragActive" } }, providers: [
89
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewComponent, deps: [{ token: i1.ɵWorkbenchView }, { token: i2.ViewDragService }, { token: i3.Logger }], target: i0.ɵɵFactoryTarget.Component }); }
90
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.0.2", type: ViewComponent, isStandalone: true, selector: "wb-view", host: { properties: { "attr.data-viewid": "this.viewId", "class.view-drag": "this.isViewDragActive" } }, providers: [
74
91
  configureViewGlassPane(),
75
- ], viewQueries: [{ propertyName: "setViewport", first: true, predicate: SciViewportComponent, descendants: true }], hostDirectives: [{ directive: i5.GlassPaneDirective }], ngImport: i0, template: "<sci-viewport cdkTrapFocus>\n <router-outlet [name]=\"viewId\"/>\n</sci-viewport>\n", styles: [":host{display:flex;flex-direction:column;background-color:var(--sci-workbench-view-background-color);color:var(--sci-color-text)}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host{background-color:var(--sci-workbench-view-peripheral-background-color)}:host.view-drag{pointer-events:none}:host>sci-viewport{flex:1 1 0}:host>sci-viewport>router-outlet{position:absolute}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i6.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: SciViewportComponent, selector: "sci-viewport", inputs: ["scrollbarStyle"], outputs: ["scroll"] }] }); }
92
+ ], viewQueries: [{ propertyName: "_viewport", first: true, predicate: SciViewportComponent, descendants: true, isSignal: true }], hostDirectives: [{ directive: i4.GlassPaneDirective }, { directive: i5.NgClass }], ngImport: i0, template: "<sci-viewport cdkTrapFocus>\n <router-outlet [name]=\"viewId\"/>\n</sci-viewport>\n", styles: [":host{display:flex;flex-direction:column;background-color:var(--sci-workbench-view-background-color);color:var(--sci-color-text)}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host{background-color:var(--sci-workbench-view-peripheral-background-color)}:host.view-drag{pointer-events:none}:host>sci-viewport{flex:1 1 0}:host>sci-viewport>router-outlet{position:absolute}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i6.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: SciViewportComponent, selector: "sci-viewport", inputs: ["scrollbarStyle"], outputs: ["scroll"] }] }); }
76
93
  }
77
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewComponent, decorators: [{
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewComponent, decorators: [{
78
95
  type: Component,
79
96
  args: [{ selector: 'wb-view', standalone: true, imports: [
80
97
  RouterOutlet,
@@ -82,18 +99,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
82
99
  SciViewportComponent,
83
100
  ], hostDirectives: [
84
101
  GlassPaneDirective,
102
+ NgClass,
85
103
  ], providers: [
86
104
  configureViewGlassPane(),
87
105
  ], template: "<sci-viewport cdkTrapFocus>\n <router-outlet [name]=\"viewId\"/>\n</sci-viewport>\n", styles: [":host{display:flex;flex-direction:column;background-color:var(--sci-workbench-view-background-color);color:var(--sci-color-text)}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host{background-color:var(--sci-workbench-view-peripheral-background-color)}:host.view-drag{pointer-events:none}:host>sci-viewport{flex:1 1 0}:host>sci-viewport>router-outlet{position:absolute}\n"] }]
88
- }], ctorParameters: () => [{ type: i1.ɵWorkbenchView }, { type: i2.Logger }, { type: i0.ElementRef }, { type: i3.ViewDragService }, { type: i4.ViewMenuService }], propDecorators: { setViewport: [{
89
- type: ViewChild,
90
- args: [SciViewportComponent]
91
- }], viewId: [{
106
+ }], ctorParameters: () => [{ type: i1.ɵWorkbenchView }, { type: i2.ViewDragService }, { type: i3.Logger }], propDecorators: { viewId: [{
92
107
  type: HostBinding,
93
108
  args: ['attr.data-viewid']
94
- }], cssClasses: [{
95
- type: HostBinding,
96
- args: ['attr.class']
97
109
  }], isViewDragActive: [{
98
110
  type: HostBinding,
99
111
  args: ['class.view-drag']
@@ -113,4 +125,4 @@ function configureViewGlassPane() {
113
125
  },
114
126
  ];
115
127
  }
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi92aWV3L3ZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvdmlldy92aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBYyxXQUFXLEVBQUUsTUFBTSxFQUF1QixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFDLFlBQVksRUFBRSxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQVMsV0FBVyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQW1CLE1BQU0sb0NBQW9DLENBQUM7QUFDbEksT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQUVyRDs7R0FFRztBQWtCSCxNQUFNLE9BQU8sYUFBYTtJQUl4QixJQUNXLFdBQVcsQ0FBQyxRQUE4QjtRQUNuRCxJQUFJLFFBQVEsRUFBRTtZQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9C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RGhCLFdBQVc7dUJBQUMsa0JBQWtCO2dCQU1wQixVQUFVO3NCQURwQixXQUFXO3VCQUFDLFlBQVk7Z0JBTWQsZ0JBQWdCO3NCQUQxQixXQUFXO3VCQUFDLGlCQUFpQjs7QUFxQ2hDOztHQUVHO0FBQ0gsU0FBUyxzQkFBc0I7SUFDN0IsT0FBTztRQUNMO1lBQ0UsT0FBTyxFQUFFLG9CQUFvQjtZQUM3QixXQUFXLEVBQUUsY0FBYztTQUM1QjtRQUNEO1lBQ0UsT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixVQUFVLEVBQUUsR0FBcUIsRUFBRSxDQUFDLENBQUMsRUFBQyxVQUFVLEVBQUUsRUFBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFDLENBQUM7U0FDOUY7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBpbmplY3QsIE9uRGVzdHJveSwgUHJvdmlkZXIsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FzeW5jU3ViamVjdCwgY29tYmluZUxhdGVzdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1JvdXRlck91dGxldH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7U2NpVmlld3BvcnRDb21wb25lbnR9IGZyb20gJ0BzY2lvbi9jb21wb25lbnRzL3ZpZXdwb3J0JztcbmltcG9ydCB7Vmlld01lbnVTZXJ2aWNlfSBmcm9tICcuLi9wYXJ0L3ZpZXctY29udGV4dC1tZW51L3ZpZXctbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7ybVXb3JrYmVuY2hWaWV3fSBmcm9tICcuL8m1d29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtMb2dnZXIsIExvZ2dlck5hbWVzfSBmcm9tICcuLi9sb2dnaW5nJztcbmltcG9ydCB7QTExeU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Vmlld0RyYWdTZXJ2aWNlfSBmcm9tICcuLi92aWV3LWRuZC92aWV3LWRyYWcuc2VydmljZSc7XG5pbXBvcnQge0dMQVNTX1BBTkVfQkxPQ0tBQkxFLCBHTEFTU19QQU5FX09QVElPTlMsIEdsYXNzUGFuZURpcmVjdGl2ZSwgR2xhc3NQYW5lT3B0aW9uc30gZnJvbSAnLi4vZ2xhc3MtcGFuZS9nbGFzcy1wYW5lLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1dvcmtiZW5jaFZpZXd9IGZyb20gJy4vd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuXG4vKipcbiAqIFJlbmRlcnMgdGhlIHdvcmtiZW5jaCB2aWV3LCB1c2luZyBhIHJvdXRlci1vdXRsZXQgdG8gZGlzcGxheSB2aWV3IGNvbnRlbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3diLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlck91dGxldCxcbiAgICBBMTF5TW9kdWxlLFxuICAgIFNjaVZpZXdwb3J0Q29tcG9uZW50LFxuICBdLFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIEdsYXNzUGFuZURpcmVjdGl2ZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgY29uZmlndXJlVmlld0dsYXNzUGFuZSgpLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF92aWV3cG9ydCQgPSBuZXcgQXN5bmNTdWJqZWN0PFNjaVZpZXdwb3J0Q29tcG9uZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoU2NpVmlld3BvcnRDb21wb25lbnQpXG4gIHB1YmxpYyBzZXQgc2V0Vmlld3BvcnQodmlld3BvcnQ6IFNjaVZpZXdwb3J0Q29tcG9uZW50KSB7XG4gICAgaWYgKHZpZXdwb3J0KSB7XG4gICAgICB0aGlzLl92aWV3cG9ydCQubmV4dCh2aWV3cG9ydCk7XG4gICAgICB0aGlzLl92aWV3cG9ydCQuY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS12aWV3aWQnKVxuICBwdWJsaWMgZ2V0IHZpZXdJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92aWV3LmlkO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmNsYXNzJylcbiAgcHVibGljIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXcuY2xhc3NMaXN0LnZhbHVlLmpvaW4oJyAnKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mudmlldy1kcmFnJylcbiAgcHVibGljIGdldCBpc1ZpZXdEcmFnQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92aWV3RHJhZ1NlcnZpY2Uudmlld0RyYWdEYXRhICE9PSBudWxsO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdmlldzogybVXb3JrYmVuY2hWaWV3LFxuICAgICAgICAgICAgICBwcml2YXRlIF9sb2dnZXI6IExvZ2dlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfaG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgICAgICAgIHByaXZhdGUgX3ZpZXdEcmFnU2VydmljZTogVmlld0RyYWdTZXJ2aWNlLFxuICAgICAgICAgICAgICB2aWV3Q29udGV4dE1lbnVTZXJ2aWNlOiBWaWV3TWVudVNlcnZpY2UpIHtcbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoKCkgPT4gYENvbnN0cnVjdGluZyBWaWV3Q29tcG9uZW50LiBbdmlld0lkPSR7dGhpcy52aWV3SWR9XWAsIExvZ2dlck5hbWVzLkxJRkVDWUNMRSk7XG5cbiAgICB2aWV3Q29udGV4dE1lbnVTZXJ2aWNlLmluc3RhbGxNZW51SXRlbUFjY2VsZXJhdG9ycyQodGhpcy5faG9zdCwgdGhpcy5fdmlldylcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5fdmlldy5hY3RpdmUkLCB0aGlzLl92aWV3cG9ydCRdKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChbYWN0aXZlLCB2aWV3cG9ydF0pID0+IGFjdGl2ZSA/IHRoaXMub25BY3RpdmF0ZVZpZXcodmlld3BvcnQpIDogdGhpcy5vbkRlYWN0aXZhdGVWaWV3KHZpZXdwb3J0KSk7XG4gIH1cblxuICBwcml2YXRlIG9uQWN0aXZhdGVWaWV3KHZpZXdwb3J0OiBTY2lWaWV3cG9ydENvbXBvbmVudCk6IHZvaWQge1xuICAgIHZpZXdwb3J0LmZvY3VzKCk7XG4gICAgdmlld3BvcnQuc2Nyb2xsVG9wID0gdGhpcy5fdmlldy5zY3JvbGxUb3A7XG4gICAgdmlld3BvcnQuc2Nyb2xsTGVmdCA9IHRoaXMuX3ZpZXcuc2Nyb2xsTGVmdDtcbiAgfVxuXG4gIHByaXZhdGUgb25EZWFjdGl2YXRlVmlldyh2aWV3cG9ydDogU2NpVmlld3BvcnRDb21wb25lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl92aWV3LnNjcm9sbFRvcCA9IHZpZXdwb3J0LnNjcm9sbFRvcDtcbiAgICB0aGlzLl92aWV3LnNjcm9sbExlZnQgPSB2aWV3cG9ydC5zY3JvbGxMZWZ0O1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiBgRGVzdHJveWluZyBWaWV3Q29tcG9uZW50IFt2aWV3SWQ9JHt0aGlzLnZpZXdJZH1dJ2AsIExvZ2dlck5hbWVzLkxJRkVDWUNMRSk7XG4gIH1cbn1cblxuLyoqXG4gKiBCbG9ja3MgdGhpcyB2aWV3IHdoZW4gZGlhbG9nKHMpIG92ZXJsYXkgaXQuXG4gKi9cbmZ1bmN0aW9uIGNvbmZpZ3VyZVZpZXdHbGFzc1BhbmUoKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogR0xBU1NfUEFORV9CTE9DS0FCTEUsXG4gICAgICB1c2VFeGlzdGluZzogybVXb3JrYmVuY2hWaWV3LFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogR0xBU1NfUEFORV9PUFRJT05TLFxuICAgICAgdXNlRmFjdG9yeTogKCk6IEdsYXNzUGFuZU9wdGlvbnMgPT4gKHthdHRyaWJ1dGVzOiB7J2RhdGEtdmlld2lkJzogaW5qZWN0KFdvcmtiZW5jaFZpZXcpLmlkfX0pLFxuICAgIH0sXG4gIF07XG59XG4iLCI8c2NpLXZpZXdwb3J0IGNka1RyYXBGb2N1cz5cbiAgPHJvdXRlci1vdXRsZXQgW25hbWVdPVwidmlld0lkXCIvPlxuPC9zY2ktdmlld3BvcnQ+XG4iXX0=
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi92aWV3L3ZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvdmlldy92aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQXVCLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFTLFdBQVcsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsT0FBTyxFQUFDLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFtQixNQUFNLG9DQUFvQyxDQUFDO0FBQ2xJLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7O0FBR3hDOztHQUVHO0FBbUJILE1BQU0sT0FBTyxhQUFhO0lBTXhCLElBQ1csTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLEtB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LG9CQUFvQjs7MkZBVVgsYUFBYTtrQkFsQnpCLFNBQVM7K0JBQ0UsU0FBUyxjQUdQLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFVBQVU7d0JBQ1Ysb0JBQW9CO3FCQUNyQixrQkFDZTt3QkFDZCxrQkFBa0I7d0JBQ2xCLE9BQU87cUJBQ1IsYUFDVTt3QkFDVCxzQkFBc0IsRUFBRTtxQkFDekI7c0lBU1UsTUFBTTtzQkFEaEIsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBTXBCLGdCQUFnQjtzQkFEMUIsV0FBVzt1QkFBQyxpQkFBaUI7O0FBNkRoQzs7R0FFRztBQUNILFNBQVMsc0JBQXNCO0lBQzdCLE9BQU87UUFDTDtZQUNFLE9BQU8sRUFBRSxvQkFBb0I7WUFDN0IsV0FBVyxFQUFFLGNBQWM7U0FDNUI7UUFDRDtZQUNFLE9BQU8sRUFBRSxrQkFBa0I7WUFDM0IsVUFBVSxFQUFFLEdBQXFCLEVBQUUsQ0FBQyxDQUFDLEVBQUMsVUFBVSxFQUFFLEVBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBQyxDQUFDO1NBQzlGO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBlZmZlY3QsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBpbmplY3QsIE9uRGVzdHJveSwgUHJvdmlkZXIsIHVudHJhY2tlZCwgdmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyT3V0bGV0fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtTY2lWaWV3cG9ydENvbXBvbmVudH0gZnJvbSAnQHNjaW9uL2NvbXBvbmVudHMvdmlld3BvcnQnO1xuaW1wb3J0IHtWaWV3TWVudVNlcnZpY2V9IGZyb20gJy4uL3BhcnQvdmlldy1jb250ZXh0LW1lbnUvdmlldy1tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaFZpZXd9IGZyb20gJy4vybV3b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5pbXBvcnQge0xvZ2dlciwgTG9nZ2VyTmFtZXN9IGZyb20gJy4uL2xvZ2dpbmcnO1xuaW1wb3J0IHtBMTF5TW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtWaWV3RHJhZ1NlcnZpY2V9IGZyb20gJy4uL3ZpZXctZG5kL3ZpZXctZHJhZy5zZXJ2aWNlJztcbmltcG9ydCB7R0xBU1NfUEFORV9CTE9DS0FCTEUsIEdMQVNTX1BBTkVfT1BUSU9OUywgR2xhc3NQYW5lRGlyZWN0aXZlLCBHbGFzc1BhbmVPcHRpb25zfSBmcm9tICcuLi9nbGFzcy1wYW5lL2dsYXNzLXBhbmUuZGlyZWN0aXZlJztcbmltcG9ydCB7V29ya2JlbmNoVmlld30gZnJvbSAnLi93b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5pbXBvcnQge05nQ2xhc3N9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge09uQXR0YWNoLCBPbkRldGFjaH0gZnJvbSAnLi4vcG9ydGFsL3diLWNvbXBvbmVudC1wb3J0YWwnO1xuXG4vKipcbiAqIFJlbmRlcnMgdGhlIHdvcmtiZW5jaCB2aWV3LCB1c2luZyBhIHJvdXRlci1vdXRsZXQgdG8gZGlzcGxheSB2aWV3IGNvbnRlbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3diLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlck91dGxldCxcbiAgICBBMTF5TW9kdWxlLFxuICAgIFNjaVZpZXdwb3J0Q29tcG9uZW50LFxuICBdLFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIEdsYXNzUGFuZURpcmVjdGl2ZSxcbiAgICBOZ0NsYXNzLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBjb25maWd1cmVWaWV3R2xhc3NQYW5lKCksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQXR0YWNoLCBPbkRldGFjaCB7XG5cbiAgcHJpdmF0ZSBfdmlld3BvcnQgPSB2aWV3Q2hpbGQucmVxdWlyZWQoU2NpVmlld3BvcnRDb21wb25lbnQpO1xuICBwcml2YXRlIF9zY3JvbGxUb3AgPSAwO1xuICBwcml2YXRlIF9zY3JvbGxMZWZ0ID0gMDtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS12aWV3aWQnKVxuICBwdWJsaWMgZ2V0IHZpZXdJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92aWV3LmlkO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy52aWV3LWRyYWcnKVxuICBwdWJsaWMgZ2V0IGlzVmlld0RyYWdBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdEcmFnU2VydmljZS52aWV3RHJhZ0RhdGEoKSAhPT0gbnVsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3ZpZXc6IMm1V29ya2JlbmNoVmlldyxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlld0RyYWdTZXJ2aWNlOiBWaWV3RHJhZ1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2xvZ2dlcjogTG9nZ2VyKSB7XG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+IGBDb25zdHJ1Y3RpbmcgVmlld0NvbXBvbmVudC4gW3ZpZXdJZD0ke3RoaXMudmlld0lkfV1gLCBMb2dnZXJOYW1lcy5MSUZFQ1lDTEUpO1xuICAgIHRoaXMuaW5zdGFsbE1lbnVJdGVtQWNjZWxlcmF0b3JzKCk7XG4gICAgdGhpcy5pbnN0YWxsT25BY3RpdmF0ZVZpZXcoKTtcbiAgICB0aGlzLmFkZEhvc3RDc3NDbGFzc2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGludm9rZWQgYWZ0ZXIgYXR0YWNoZWQgdGhpcyBjb21wb25lbnQgdG8gdGhlIERPTS5cbiAgICovXG4gIHB1YmxpYyBvbkF0dGFjaCgpOiB2b2lkIHtcbiAgICB0aGlzLl92aWV3cG9ydCgpLnNjcm9sbFRvcCA9IHRoaXMuX3Njcm9sbFRvcDtcbiAgICB0aGlzLl92aWV3cG9ydCgpLnNjcm9sbExlZnQgPSB0aGlzLl9zY3JvbGxMZWZ0O1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBpbnZva2VkIGJlZm9yZSBkZXRhY2hpbmcgdGhpcyBjb21wb25lbnQgZnJvbSB0aGUgRE9NLlxuICAgKi9cbiAgcHVibGljIG9uRGV0YWNoKCk6IHZvaWQge1xuICAgIHRoaXMuX3Njcm9sbFRvcCA9IHRoaXMuX3ZpZXdwb3J0KCkuc2Nyb2xsVG9wO1xuICAgIHRoaXMuX3Njcm9sbExlZnQgPSB0aGlzLl92aWV3cG9ydCgpLnNjcm9sbExlZnQ7XG4gIH1cblxuICBwcml2YXRlIG9uQWN0aXZhdGVWaWV3KCk6IHZvaWQge1xuICAgIC8vIEdhaW4gZm9jdXMgb25seSBpZiBpbiB0aGUgYWN0aXZlIHBhcnQuXG4gICAgaWYgKHRoaXMuX3ZpZXcucGFydCgpLmFjdGl2ZSgpKSB7XG4gICAgICB0aGlzLl92aWV3cG9ydCgpLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YWxsTWVudUl0ZW1BY2NlbGVyYXRvcnMoKTogdm9pZCB7XG4gICAgaW5qZWN0KFZpZXdNZW51U2VydmljZSkuaW5zdGFsbE1lbnVJdGVtQWNjZWxlcmF0b3JzJChpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pLCB0aGlzLl92aWV3KVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbGxPbkFjdGl2YXRlVmlldygpOiB2b2lkIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX3ZpZXcuYWN0aXZlKCkpIHtcbiAgICAgICAgdW50cmFja2VkKCgpID0+IHRoaXMub25BY3RpdmF0ZVZpZXcoKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEhvc3RDc3NDbGFzc2VzKCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ2xhc3MgPSBpbmplY3QoTmdDbGFzcyk7XG4gICAgZWZmZWN0KCgpID0+IG5nQ2xhc3MubmdDbGFzcyA9IHRoaXMuX3ZpZXcuY2xhc3NMaXN0LmFzTGlzdCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoKCkgPT4gYERlc3Ryb3lpbmcgVmlld0NvbXBvbmVudCBbdmlld0lkPSR7dGhpcy52aWV3SWR9XSdgLCBMb2dnZXJOYW1lcy5MSUZFQ1lDTEUpO1xuICB9XG59XG5cbi8qKlxuICogQmxvY2tzIHRoaXMgdmlldyB3aGVuIGRpYWxvZyhzKSBvdmVybGF5IGl0LlxuICovXG5mdW5jdGlvbiBjb25maWd1cmVWaWV3R2xhc3NQYW5lKCk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEdMQVNTX1BBTkVfQkxPQ0tBQkxFLFxuICAgICAgdXNlRXhpc3Rpbmc6IMm1V29ya2JlbmNoVmlldyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEdMQVNTX1BBTkVfT1BUSU9OUyxcbiAgICAgIHVzZUZhY3Rvcnk6ICgpOiBHbGFzc1BhbmVPcHRpb25zID0+ICh7YXR0cmlidXRlczogeydkYXRhLXZpZXdpZCc6IGluamVjdChXb3JrYmVuY2hWaWV3KS5pZH19KSxcbiAgICB9LFxuICBdO1xufVxuIiwiPHNjaS12aWV3cG9ydCBjZGtUcmFwRm9jdXM+XG4gIDxyb3V0ZXItb3V0bGV0IFtuYW1lXT1cInZpZXdJZFwiLz5cbjwvc2NpLXZpZXdwb3J0PlxuIl19
@@ -9,4 +9,4 @@
9
9
  */
10
10
  export class WorkbenchView {
11
11
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXZpZXcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFnQixhQUFhO0NBNEpsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1VybFNlZ21lbnR9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0Rpc3Bvc2FibGV9IGZyb20gJy4uL2NvbW1vbi9kaXNwb3NhYmxlJztcbmltcG9ydCB7V29ya2JlbmNoTWVudUl0ZW19IGZyb20gJy4uL3dvcmtiZW5jaC5tb2RlbCc7XG5pbXBvcnQge1dvcmtiZW5jaFBhcnR9IGZyb20gJy4uL3BhcnQvd29ya2JlbmNoLXBhcnQubW9kZWwnO1xuaW1wb3J0IHtWaWV3U3RhdGV9IGZyb20gJy4uL3JvdXRpbmcvcm91dGluZy5tb2RlbCc7XG5cbi8qKlxuICogSGFuZGxlIHRvIGludGVyYWN0IHdpdGggYSB2aWV3IG9wZW5lZCB2aWEge0BsaW5rIFdvcmtiZW5jaFJvdXRlcn0uXG4gKlxuICogVGhlIHZpZXcgY29tcG9uZW50IGNhbiBpbmplY3QgdGhpcyBoYW5kbGUgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgdmlldywgc3VjaCBhcyBzZXR0aW5nIHRoZSB0aXRsZSBvciBjbG9zaW5nIHRoZSB2aWV3LlxuICpcbiAqIFRoZSB2aWV3IGNvbXBvbmVudCBjYW4gaW5qZWN0IGBBY3RpdmF0ZWRSb3V0ZWAgdG8gb2J0YWluIHBhcmFtZXRlcnMgcGFzc2VkIHRvIHRoZSBuYXZpZ2F0aW9uIGFuZC9vciByZWFkIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSByb3V0ZS5cbiAqXG4gKiBAc2VlIFdvcmtiZW5jaFJvdXRlclxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgV29ya2JlbmNoVmlldyB7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSBpZGVudGl0eSBvZiB0aGlzIHZpZXcuXG4gICAqXG4gICAqIEVhY2ggdmlldyBpcyBhc3NpZ25lZCBhIHVuaXF1ZSBpZGVudGlmaWVyIChlLmcuLCBgdmlldy4xYCwgYHZpZXcuMmAsIGV0Yy4pLlxuICAgKlxuICAgKiBAc2VlIGFsdGVybmF0aXZlSWRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpZDogVmlld0lkO1xuXG4gIC8qKlxuICAgKiBBbHRlcm5hdGl2ZSBpZGVudGl0eSBvZiB0aGlzIHZpZXcuXG4gICAqXG4gICAqIEEgdmlldyBjYW4gaGF2ZSBhbiBhbHRlcm5hdGl2ZSBpZCwgYSBtZWFuaW5nZnVsIGJ1dCBub3QgbmVjZXNzYXJpbHkgdW5pcXVlIG5hbWUuIEEgdmlldyBjYW5cbiAgICogYmUgaWRlbnRpZmllZCBlaXRoZXIgYnkgaXRzIHVuaXF1ZSBvciBhbHRlcm5hdGl2ZSBpZC5cbiAgICpcbiAgICogQHNlZSBpZFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGFsdGVybmF0aXZlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSGludCBwYXNzZWQgdG8gdGhlIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIEEgaGludCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBuYXZpZ2F0aW9uIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiByb3V0ZXMgd2l0aCBpZGVudGljYWwgcGF0aHMuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCB0aGUgdmlld3Mgb2YgdGhlIGluaXRpYWwgbGF5b3V0IG9yIGEgcGVyc3BlY3RpdmUgYXJlIHVzdWFsbHkgbmF2aWdhdGVkIHRvIHRoZSBlbXB0eSBwYXRoIHJvdXRlIHRvIGF2b2lkIGNsdXR0ZXJpbmcgdGhlIFVSTCxcbiAgICogcmVxdWlyaW5nIGEgbmF2aWdhdGlvbiBoaW50IHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiB0aGUgcm91dGVzLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IG5hdmlnYXRpb25IaW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgcGFydCB3aGljaCBjb250YWlucyB0aGlzIHZpZXcuXG4gICAqXG4gICAqIE5vdGU6IHRoZSBwYXJ0IG9mIGEgdmlldyBjYW4gY2hhbmdlLCBlLmcuIHdoZW4gdGhlIHZpZXcgaXMgbW92ZWQgdG8gYW5vdGhlciBwYXJ0LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHBhcnQ6IFdvcmtiZW5jaFBhcnQ7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdGl0bGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB2aWV3IHRhYi5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB0aXRsZTogc3RyaW5nIHwgbnVsbDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBzdWJ0aXRsZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHZpZXcgdGFiLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGhlYWRpbmc6IHN0cmluZyB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBDU1MgY2xhc3MoZXMpIHRvIGFkZCB0byB0aGUgdmlldywgZS5nLiwgdG8gbG9jYXRlIHRoZSB2aWV3IGluIHRlc3RzLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGNzc0NsYXNzOiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGlmIHRoZSBjb250ZW50IG9mIHRoZSBjdXJyZW50IHZpZXcgaXMgZGlydHkuXG4gICAqIElmIGRpcnR5LCBhIGRpcnR5IG1hcmtlciBpcyBkaXNwbGF5ZWQgaW4gdGhlIHZpZXcgdGFiLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGRpcnR5OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaWYgYSBjbG9zZSBidXR0b24gc2hvdWxkIGJlIGRpc3BsYXllZCBpbiB0aGUgdmlldyB0YWIuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY2xvc2FibGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgdmlldyBpcyBhY3RpdmUgb3IgaW5hY3RpdmUuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYWN0aXZlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBOb3RpZmllcyB3aGVuIHRoaXMgdmlldyBiZWNvbWVzIGFjdGl2ZSBvciBpbmFjdGl2ZS5cbiAgICpcbiAgICogVXBvbiBzdWJzY3JpcHRpb24sIGVtaXRzIHRoZSBjdXJyZW50IHN0YXRlLCBhbmQgdGhlbiBlYWNoIHRpbWUgdGhlIHN0YXRlIGNoYW5nZXMuIFRoZSBvYnNlcnZhYmxlIG5ldmVyIGNvbXBsZXRlcy5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhY3RpdmUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhpcyB2aWV3IGluIHRoZSB0YWJiYXIuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcG9zaXRpb246IG51bWJlcjtcblxuICAvKipcbiAgICogYFRydWVgIHdoZW4gdGhpcyB2aWV3IGlzIHRoZSBmaXJzdCB2aWV3IGluIHRoZSB0YWJiYXIuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZmlyc3Q6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGBUcnVlYCB3aGVuIHRoaXMgdmlldyBpcyB0aGUgbGFzdCB2aWV3IGluIHRoZSB0YWJiYXIuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgbGFzdDogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5pZGNhdGVzIHdoZXRoZXIgdGhlIHRhYiBvZiB0aGlzIHZpZXcgaXMgc2Nyb2xsZWQgaW50byB2aWV3IGluIHRoZSB0YWJiYXIuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgc2Nyb2xsZWRJbnRvVmlldzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyB2aWV3IGlzIGRlc3Ryb3llZC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBkZXN0cm95ZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFVSTCBhc3NvY2lhdGVkIHdpdGggdGhpcyB2aWV3LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHVybFNlZ21lbnRzOiBVcmxTZWdtZW50W107XG5cbiAgLyoqXG4gICAqIFN0YXRlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHZpZXcuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBzdGF0ZSBpcyB2b2xhdGlsZSwgbWVhbmluZyBpdCBpcyBub3QgZW5jb2RlZCBpbiB0aGUgVVJMIGJ1dCByZWFkIGZyb20gdGhlIGJyb3dzZXIgc2Vzc2lvbiBoaXN0b3J5OyB0aHVzLCBpdCB3aWxsIGJlIGxvc3Qgd2hlbiB0aGUgcGFnZSBpcyByZWxvYWRlZC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBzdGF0ZTogVmlld1N0YXRlO1xuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgdGhpcyB2aWV3LlxuICAgKlxuICAgKiBOb3RlOiBUaGlzIGluc3RydWN0aW9uIHJ1bnMgYXN5bmNocm9ub3VzbHkgdmlhIFVSTCByb3V0aW5nLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGFjdGl2YXRlKCk6IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoaXMgdmlldyAob3Igc2libGluZyB2aWV3cykgYW5kIHRoZSBhc3NvY2lhdGVkIHJvdXRlZCBjb21wb25lbnQuXG4gICAqXG4gICAqIE5vdGU6IFRoaXMgaW5zdHJ1Y3Rpb24gcnVucyBhc3luY2hyb25vdXNseSB2aWEgVVJMIHJvdXRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB0YXJnZXRcbiAgICogICAgICAgIEFsbG93cyB0byBjb250cm9sIHdoaWNoIHZpZXcocykgdG8gY2xvc2U6XG4gICAqXG4gICAqICAgICAgICAtIHNlbGY6IGNsb3NlcyB0aGlzIHZpZXdcbiAgICogICAgICAgIC0gYWxsLXZpZXdzOiBjbG9zZXMgYWxsIHZpZXdzIG9mIHRoaXMgcGFydFxuICAgKiAgICAgICAgLSBvdGhlci12aWV3czogY2xvc2VzIHRoZSBvdGhlciB2aWV3cyBvZiB0aGlzIHBhcnRcbiAgICogICAgICAgIC0gdmlld3MtdG8tdGhlLXJpZ2h0OiBjbG9zZXMgdGhlIHZpZXdzIHRvIHRoZSByaWdodCBvZiB0aGlzIHZpZXdcbiAgICogICAgICAgIC0gdmlld3MtdG8tdGhlLWxlZnQ6IGNsb3NlcyB0aGUgdmlld3MgdG8gdGhlIGxlZnQgb2YgdGhpcyB2aWV3XG4gICAqXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY2xvc2UodGFyZ2V0PzogJ3NlbGYnIHwgJ2FsbC12aWV3cycgfCAnb3RoZXItdmlld3MnIHwgJ3ZpZXdzLXRvLXRoZS1yaWdodCcgfCAndmlld3MtdG8tdGhlLWxlZnQnKTogUHJvbWlzZTxib29sZWFuPjtcblxuICAvKipcbiAgICogTW92ZXMgdGhpcyB2aWV3IHRvIGEgbmV3IGJyb3dzZXIgd2luZG93LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IG1vdmUodGFyZ2V0OiAnbmV3LXdpbmRvdycpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGlzIHZpZXcgdG8gYSBkaWZmZXJlbnQgb3IgbmV3IHBhcnQgaW4gdGhlIHNwZWNpZmllZCByZWdpb24uXG4gICAqXG4gICAqIFNwZWNpZnlpbmcgYSB0YXJnZXQgd29ya2JlbmNoIGlkZW50aWZpZXIgYWxsb3dzIHRoZSB2aWV3IHRvIGJlIG1vdmVkIHRvIGEgd29ya2JlbmNoIGluIGEgZGlmZmVyZW50IGJyb3dzZXIgd2luZG93LlxuICAgKiBUaGUgdGFyZ2V0IHdvcmtiZW5jaCBJRCBpcyBhdmFpbGFibGUgdmlhIHtAbGluayBXT1JLQkVOQ0hfSUR9IERJIHRva2VuIGluIHRoZSB0YXJnZXQgYXBwbGljYXRpb24uXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgbW92ZShwYXJ0SWQ6IHN0cmluZywgb3B0aW9ucz86IHtyZWdpb24/OiAnbm9ydGgnIHwgJ3NvdXRoJyB8ICd3ZXN0JyB8ICdlYXN0Jzsgd29ya2JlbmNoSWQ/OiBzdHJpbmd9KTogdm9pZDtcblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgbWVudSBpdGVtIHdoaWNoIGlzIGFkZGVkIHRvIHRoZSBjb250ZXh0IG1lbnUgb2YgdGhlIHZpZXcgdGFiLlxuICAgKlxuICAgKiBAcmV0dXJuIGhhbmRsZSB0byB1bnJlZ2lzdGVyIHRoZSBtZW51IGl0ZW0uXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVnaXN0ZXJNZW51SXRlbShtZW51SXRlbTogV29ya2JlbmNoTWVudUl0ZW0pOiBEaXNwb3NhYmxlO1xufVxuXG4vKipcbiAqIEZvcm1hdCBvZiBhIHZpZXcgaWRlbnRpZmllci5cbiAqXG4gKiBFYWNoIHZpZXcgaXMgYXNzaWduZWQgYSB1bmlxdWUgaWRlbnRpZmllciAoZS5nLiwgYHZpZXcuMWAsIGB2aWV3LjJgLCBldGMuKS5cbiAqIEEgdmlldyBjYW4gYWxzbyBoYXZlIGFuIGFsdGVybmF0aXZlIGlkLCBhIG1lYW5pbmdmdWwgYnV0IG5vdCBuZWNlc3NhcmlseSB1bmlxdWUgbmFtZS4gQSB2aWV3IGNhblxuICogYmUgaWRlbnRpZmllZCBlaXRoZXIgYnkgaXRzIHVuaXF1ZSBvciBhbHRlcm5hdGl2ZSBpZC5cbiAqL1xuZXhwb3J0IHR5cGUgVmlld0lkID0gYHZpZXcuJHtudW1iZXJ9YDtcbiJdfQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXZpZXcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFnQixhQUFhO0NBaU5sQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VXJsU2VnbWVudH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RGlzcG9zYWJsZX0gZnJvbSAnLi4vY29tbW9uL2Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtDYW5DbG9zZUZuLCBDYW5DbG9zZVJlZiwgV29ya2JlbmNoTWVudUl0ZW19IGZyb20gJy4uL3dvcmtiZW5jaC5tb2RlbCc7XG5pbXBvcnQge1dvcmtiZW5jaFBhcnR9IGZyb20gJy4uL3BhcnQvd29ya2JlbmNoLXBhcnQubW9kZWwnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRGF0YSwgTmF2aWdhdGlvblN0YXRlfSBmcm9tICcuLi9yb3V0aW5nL3JvdXRpbmcubW9kZWwnO1xuaW1wb3J0IHtTaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEhhbmRsZSB0byBpbnRlcmFjdCB3aXRoIGEgdmlldyBvcGVuZWQgdmlhIHtAbGluayBXb3JrYmVuY2hSb3V0ZXJ9LlxuICpcbiAqIFRoZSB2aWV3IGNvbXBvbmVudCBjYW4gaW5qZWN0IHRoaXMgaGFuZGxlIHRvIGludGVyYWN0IHdpdGggdGhlIHZpZXcsIHN1Y2ggYXMgc2V0dGluZyB0aGUgdGl0bGUgb3IgY2xvc2luZyB0aGUgdmlldy5cbiAqXG4gKiBUaGUgdmlldyBjb21wb25lbnQgY2FuIGluamVjdCBgQWN0aXZhdGVkUm91dGVgIHRvIG9idGFpbiBwYXJhbWV0ZXJzIHBhc3NlZCB0byB0aGUgbmF2aWdhdGlvbiBhbmQvb3IgcmVhZCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm91dGUuXG4gKlxuICogQHNlZSBXb3JrYmVuY2hSb3V0ZXJcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFdvcmtiZW5jaFZpZXcge1xuXG4gIC8qKlxuICAgKiBVbmlxdWUgaWRlbnRpdHkgb2YgdGhpcyB2aWV3LlxuICAgKlxuICAgKiBFYWNoIHZpZXcgaXMgYXNzaWduZWQgYSB1bmlxdWUgaWRlbnRpZmllciAoZS5nLiwgYHZpZXcuMWAsIGB2aWV3LjJgLCBldGMuKS5cbiAgICpcbiAgICogQHNlZSBhbHRlcm5hdGl2ZUlkXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgaWQ6IFZpZXdJZDtcblxuICAvKipcbiAgICogQWx0ZXJuYXRpdmUgaWRlbnRpdHkgb2YgdGhpcyB2aWV3LlxuICAgKlxuICAgKiBBIHZpZXcgY2FuIGhhdmUgYW4gYWx0ZXJuYXRpdmUgaWQsIGEgbWVhbmluZ2Z1bCBidXQgbm90IG5lY2Vzc2FyaWx5IHVuaXF1ZSBuYW1lLiBBIHZpZXcgY2FuXG4gICAqIGJlIGlkZW50aWZpZWQgZWl0aGVyIGJ5IGl0cyB1bmlxdWUgb3IgYWx0ZXJuYXRpdmUgaWQuXG4gICAqXG4gICAqIEBzZWUgaWRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhbHRlcm5hdGl2ZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEhpbnQgcGFzc2VkIHRvIHRoZSBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBBIGhpbnQgY2FuIGJlIHBhc3NlZCB0byB0aGUgbmF2aWdhdGlvbiB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gcm91dGVzIHdpdGggaWRlbnRpY2FsIHBhdGhzLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgdGhlIHZpZXdzIG9mIHRoZSBpbml0aWFsIGxheW91dCBvciBhIHBlcnNwZWN0aXZlIGFyZSB1c3VhbGx5IG5hdmlnYXRlZCB0byB0aGUgZW1wdHkgcGF0aCByb3V0ZSB0byBhdm9pZCBjbHV0dGVyaW5nIHRoZSBVUkwsXG4gICAqIHJlcXVpcmluZyBhIG5hdmlnYXRpb24gaGludCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlIHJvdXRlcy5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBuYXZpZ2F0aW9uSGludDogU2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD47XG5cbiAgLyoqXG4gICAqIERhdGEgcGFzc2VkIHRvIHRoZSBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IG5hdmlnYXRpb25EYXRhOiBTaWduYWw8TmF2aWdhdGlvbkRhdGE+O1xuXG4gIC8qKlxuICAgKiBTdGF0ZSBwYXNzZWQgdG8gdGhlIG5hdmlnYXRpb24uXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgbmF2aWdhdGlvblN0YXRlOiBTaWduYWw8TmF2aWdhdGlvblN0YXRlPjtcblxuICAvKipcbiAgICogUGFydCB3aGljaCBjb250YWlucyB0aGlzIHZpZXcuXG4gICAqXG4gICAqIE5vdGU6IHRoZSBwYXJ0IG9mIGEgdmlldyBjYW4gY2hhbmdlLCBlLmcuLCB3aGVuIHRoZSB2aWV3IGlzIG1vdmVkIHRvIGFub3RoZXIgcGFydC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBwYXJ0OiBTaWduYWw8V29ya2JlbmNoUGFydD47XG5cbiAgLyoqXG4gICAqIFRpdGxlIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgdmlldyB0YWIuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0IHRpdGxlKCk6IFNpZ25hbDxzdHJpbmcgfCBudWxsPjtcbiAgcHVibGljIGFic3RyYWN0IHNldCB0aXRsZSh0aXRsZTogc3RyaW5nIHwgbnVsbCk7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgc3VidGl0bGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB2aWV3IHRhYi5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXQgaGVhZGluZygpOiBTaWduYWw8c3RyaW5nIHwgbnVsbD47XG4gIHB1YmxpYyBhYnN0cmFjdCBzZXQgaGVhZGluZyhoZWFkaW5nOiBzdHJpbmcgfCBudWxsKTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIENTUyBjbGFzcyhlcykgdG8gYWRkIHRvIHRoZSB2aWV3LCBlLmcuLCB0byBsb2NhdGUgdGhlIHZpZXcgaW4gdGVzdHMuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0IGNzc0NsYXNzKCk6IFNpZ25hbDxzdHJpbmdbXT47XG4gIHB1YmxpYyBhYnN0cmFjdCBzZXQgY3NzQ2xhc3MoY3NzQ2xhc3M6IHN0cmluZyB8IHN0cmluZ1tdKTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHZpZXcgaGFzIHVuc2F2ZWQgY2hhbmdlcy5cbiAgICogSWYgbWFya2VkIGFzIGRpcnR5LCBhIHZpc3VhbCBpbmRpY2F0b3IgaXMgZGlzcGxheWVkIGluIHRoZSB2aWV3IHRhYi5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXQgZGlydHkoKTogU2lnbmFsPGJvb2xlYW4+O1xuICBwdWJsaWMgYWJzdHJhY3Qgc2V0IGRpcnR5KGRpcnR5OiBib29sZWFuKTtcblxuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciB0aGUgdmlldyBjYW4gYmUgY2xvc2VkLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXQgY2xvc2FibGUoKTogU2lnbmFsPGJvb2xlYW4+O1xuICBwdWJsaWMgYWJzdHJhY3Qgc2V0IGNsb3NhYmxlKGNsb3NhYmxlOiBib29sZWFuKTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyB2aWV3IGlzIGFjdGl2ZSBvciBpbmFjdGl2ZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhY3RpdmU6IFNpZ25hbDxib29sZWFuPjtcblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoaXMgdmlldyBpbiB0aGUgdGFiYmFyLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHBvc2l0aW9uOiBTaWduYWw8bnVtYmVyPjtcblxuICAvKipcbiAgICogYFRydWVgIHdoZW4gdGhpcyB2aWV3IGlzIHRoZSBmaXJzdCB2aWV3IGluIHRoZSB0YWJiYXIuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZmlyc3Q6IFNpZ25hbDxib29sZWFuPjtcblxuICAvKipcbiAgICogYFRydWVgIHdoZW4gdGhpcyB2aWV3IGlzIHRoZSBsYXN0IHZpZXcgaW4gdGhlIHRhYmJhci5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBsYXN0OiBTaWduYWw8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSB0YWIgb2YgdGhpcyB2aWV3IGlzIHNjcm9sbGVkIGludG8gdGhlIHRhYmJhci5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBzY3JvbGxlZEludG9WaWV3OiBTaWduYWw8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgdmlldyBpcyBkZXN0cm95ZWQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZGVzdHJveWVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBVUkwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdmlldy5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1cmxTZWdtZW50czogU2lnbmFsPFVybFNlZ21lbnRbXT47XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlcyB0aGlzIHZpZXcuXG4gICAqXG4gICAqIE5vdGU6IFRoaXMgaW5zdHJ1Y3Rpb24gcnVucyBhc3luY2hyb25vdXNseSB2aWEgVVJMIHJvdXRpbmcuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYWN0aXZhdGUoKTogUHJvbWlzZTxib29sZWFuPjtcblxuICAvKipcbiAgICogRGVzdHJveXMgdGhpcyB2aWV3IChvciBzaWJsaW5nIHZpZXdzKSBhbmQgdGhlIGFzc29jaWF0ZWQgcm91dGVkIGNvbXBvbmVudC5cbiAgICpcbiAgICogTm90ZTogVGhpcyBpbnN0cnVjdGlvbiBydW5zIGFzeW5jaHJvbm91c2x5IHZpYSBVUkwgcm91dGluZy5cbiAgICpcbiAgICogQHBhcmFtIHRhcmdldFxuICAgKiAgICAgICAgQWxsb3dzIHRvIGNvbnRyb2wgd2hpY2ggdmlldyhzKSB0byBjbG9zZTpcbiAgICpcbiAgICogICAgICAgIC0gc2VsZjogY2xvc2VzIHRoaXMgdmlld1xuICAgKiAgICAgICAgLSBhbGwtdmlld3M6IGNsb3NlcyBhbGwgdmlld3Mgb2YgdGhpcyBwYXJ0XG4gICAqICAgICAgICAtIG90aGVyLXZpZXdzOiBjbG9zZXMgdGhlIG90aGVyIHZpZXdzIG9mIHRoaXMgcGFydFxuICAgKiAgICAgICAgLSB2aWV3cy10by10aGUtcmlnaHQ6IGNsb3NlcyB0aGUgdmlld3MgdG8gdGhlIHJpZ2h0IG9mIHRoaXMgdmlld1xuICAgKiAgICAgICAgLSB2aWV3cy10by10aGUtbGVmdDogY2xvc2VzIHRoZSB2aWV3cyB0byB0aGUgbGVmdCBvZiB0aGlzIHZpZXdcbiAgICpcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBjbG9zZSh0YXJnZXQ/OiAnc2VsZicgfCAnYWxsLXZpZXdzJyB8ICdvdGhlci12aWV3cycgfCAndmlld3MtdG8tdGhlLXJpZ2h0JyB8ICd2aWV3cy10by10aGUtbGVmdCcpOiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGlzIHZpZXcgdG8gYSBuZXcgYnJvd3NlciB3aW5kb3cuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgbW92ZSh0YXJnZXQ6ICduZXctd2luZG93Jyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoaXMgdmlldyB0byBhIGRpZmZlcmVudCBvciBuZXcgcGFydCBpbiB0aGUgc3BlY2lmaWVkIHJlZ2lvbi5cbiAgICpcbiAgICogU3BlY2lmeWluZyBhIHRhcmdldCB3b3JrYmVuY2ggaWRlbnRpZmllciBhbGxvd3MgdGhlIHZpZXcgdG8gYmUgbW92ZWQgdG8gYSB3b3JrYmVuY2ggaW4gYSBkaWZmZXJlbnQgYnJvd3NlciB3aW5kb3cuXG4gICAqIFRoZSB0YXJnZXQgd29ya2JlbmNoIElEIGlzIGF2YWlsYWJsZSB2aWEge0BsaW5rIFdPUktCRU5DSF9JRH0gREkgdG9rZW4gaW4gdGhlIHRhcmdldCBhcHBsaWNhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBtb3ZlKHBhcnRJZDogc3RyaW5nLCBvcHRpb25zPzoge3JlZ2lvbj86ICdub3J0aCcgfCAnc291dGgnIHwgJ3dlc3QnIHwgJ2Vhc3QnOyB3b3JrYmVuY2hJZD86IHN0cmluZ30pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBndWFyZCB0byBjb25maXJtIGNsb3NpbmcgdGhlIHZpZXcsIHJlcGxhY2luZyBhbnkgcHJldmlvdXMgZ3VhcmQuXG4gICAqXG4gICAqIFRoZSBjYWxsYmFjayBjYW4gY2FsbCBgaW5qZWN0YCB0byBnZXQgZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBgYGB0c1xuICAgKiBpbXBvcnQge2luamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4gICAqIGltcG9ydCB7V29ya2JlbmNoTWVzc2FnZUJveFNlcnZpY2UsIFdvcmtiZW5jaFZpZXd9IGZyb20gJ0BzY2lvbi93b3JrYmVuY2gnO1xuICAgKlxuICAgKiBpbmplY3QoV29ya2JlbmNoVmlldykuY2FuQ2xvc2UoYXN5bmMgKCkgPT4ge1xuICAgKiAgIGlmICghaW5qZWN0KFdvcmtiZW5jaFZpZXcpLmRpcnR5KCkpIHtcbiAgICogICAgIHJldHVybiB0cnVlO1xuICAgKiAgIH1cbiAgICogICBjb25zdCBhY3Rpb24gPSBhd2FpdCBpbmplY3QoV29ya2JlbmNoTWVzc2FnZUJveFNlcnZpY2UpLm9wZW4oJ0RvIHlvdSB3YW50IHRvIHNhdmUgY2hhbmdlcz8nLCB7XG4gICAqICAgICBhY3Rpb25zOiB7XG4gICAqICAgICAgIHllczogJ1llcycsXG4gICAqICAgICAgIG5vOiAnTm8nLFxuICAgKiAgICAgICBjYW5jZWw6ICdDYW5jZWwnXG4gICAqICAgICB9XG4gICAqICAgfSk7XG4gICAqXG4gICAqICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICogICAgIGNhc2UgJ3llcyc6XG4gICAqICAgICAgIC8vIFN0b3JlIGNoYW5nZXMgLi4uXG4gICAqICAgICAgIHJldHVybiB0cnVlO1xuICAgKiAgICAgY2FzZSAnbm8nOlxuICAgKiAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICogICAgIGRlZmF1bHQ6XG4gICAqICAgICAgIHJldHVybiBmYWxzZTtcbiAgICogICB9XG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIGNhbkNsb3NlIC0gQ2FsbGJhY2sgdG8gY29uZmlybSBjbG9zaW5nIHRoZSB2aWV3LlxuICAgKiBAcmV0dXJucyBSZWZlcmVuY2UgdG8gdGhlIGBDYW5DbG9zZWAgZ3VhcmQsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHVucmVnaXN0ZXIgdGhlIGd1YXJkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGNhbkNsb3NlKGNhbkNsb3NlOiBDYW5DbG9zZUZuKTogQ2FuQ2xvc2VSZWY7XG5cbiAgLyoqXG4gICAqIENvbnRyaWJ1dGVzIGEgbWVudSBpdGVtIHRvIHRoaXMgdmlldydzIGNvbnRleHQgbWVudS5cbiAgICpcbiAgICogLS0tXG4gICAqIEFzIGFuIGFsdGVybmF0aXZlIHRvIHByb2dyYW1tYXRpYyByZWdpc3RyYXRpb24sIG1lbnUgaXRlbXMgY2FuIGJlIGNvbnRyaWJ1dGVkIGRlY2xhcmF0aXZlbHkgZnJvbSBhbiBIVE1MIHRlbXBsYXRlLlxuICAgKiBEZWNsYXJpbmcgYSBtZW51IGl0ZW0gaW4gdGhlIEhUTUwgdGVtcGxhdGUgb2YgYSB3b3JrYmVuY2ggdmlldyBhZGRzIGl0IHRvIHRoYXQgdmlldyBvbmx5LiBUbyBhZGQgaXQgdG8gZXZlcnkgdmlldyxcbiAgICogZGVjbGFyZSBpdCBvdXRzaWRlIGEgdmlldyBjb250ZXh0LCBzdWNoIGFzIGluIGBhcHAuY29tcG9uZW50Lmh0bWxgLCBvciByZWdpc3RlciBpdCBwcm9ncmFtbWF0aWNhbGx5LlxuICAgKiBSZWZlciB0byB7QGxpbmsgV29ya2JlbmNoVmlld01lbnVJdGVtRGlyZWN0aXZlfSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogYGBgaHRtbFxuICAgKiA8bmctdGVtcGxhdGUgd2JWaWV3TWVudUl0ZW0gW2FjY2VsZXJhdG9yXT1cIlsnY3RybCcsICdiJ11cIiAoYWN0aW9uKT1cIi4uLlwiIGxldC12aWV3PlxuICAgKiAgIC4uLlxuICAgKiA8L25nLXRlbXBsYXRlPlxuICAgKiBgYGBcbiAgICpcbiAgICogQHJldHVybiBoYW5kbGUgdG8gdW5yZWdpc3RlciB0aGUgbWVudSBpdGVtLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlZ2lzdGVyTWVudUl0ZW0obWVudUl0ZW06IFdvcmtiZW5jaE1lbnVJdGVtKTogRGlzcG9zYWJsZTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgb2YgYSB2aWV3IGlkZW50aWZpZXIuXG4gKlxuICogRWFjaCB2aWV3IGlzIGFzc2lnbmVkIGEgdW5pcXVlIGlkZW50aWZpZXIgKGUuZy4sIGB2aWV3LjFgLCBgdmlldy4yYCwgZXRjLikuXG4gKiBBIHZpZXcgY2FuIGFsc28gaGF2ZSBhbiBhbHRlcm5hdGl2ZSBpZCwgYSBtZWFuaW5nZnVsIGJ1dCBub3QgbmVjZXNzYXJpbHkgdW5pcXVlIG5hbWUuIEEgdmlldyBjYW5cbiAqIGJlIGlkZW50aWZpZWQgZWl0aGVyIGJ5IGl0cyB1bmlxdWUgb3IgYWx0ZXJuYXRpdmUgaWQuXG4gKi9cbmV4cG9ydCB0eXBlIFZpZXdJZCA9IGB2aWV3LiR7bnVtYmVyfWA7XG4iXX0=