@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,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2018-2022 Swiss Federal Railways
2
+ * Copyright (c) 2018-2024 Swiss Federal Railways
3
3
  *
4
4
  * This program and the accompanying materials are made
5
5
  * available under the terms of the Eclipse Public License 2.0
@@ -7,26 +7,28 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { Component, HostBinding, HostListener, Inject, inject, Injector, Input, NgZone } from '@angular/core';
11
- import { fromEvent, merge, Subject, withLatestFrom } from 'rxjs';
12
- import { filter, map, switchMap } from 'rxjs/operators';
13
- import { VIEW_DRAG_TRANSFER_TYPE } from '../../view-dnd/view-drag.service';
10
+ import { Component, computed, effect, ElementRef, HostBinding, HostListener, inject, Injector, input, NgZone } from '@angular/core';
11
+ import { fromEvent, merge, withLatestFrom } from 'rxjs';
12
+ import { WORKBENCH_VIEW_REGISTRY } from '../../view/workbench-view.registry';
13
+ import { map, switchMap } from 'rxjs/operators';
14
+ import { VIEW_DRAG_TRANSFER_TYPE, ViewDragService } from '../../view-dnd/view-drag.service';
14
15
  import { createElement } from '../../common/dom.util';
15
16
  import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
16
17
  import { VIEW_TAB_RENDERING_CONTEXT } from '../../workbench.constants';
18
+ import { WorkbenchConfig } from '../../workbench-config';
17
19
  import { ViewTabContentComponent } from '../view-tab-content/view-tab-content.component';
20
+ import { ViewMenuService } from '../view-context-menu/view-menu.service';
18
21
  import { WorkbenchView } from '../../view/workbench-view.model';
19
- import { subscribeInside } from '@scion/toolkit/operators';
20
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
21
- import { NgIf } from '@angular/common';
22
+ import { ɵWorkbenchRouter } from '../../routing/ɵworkbench-router.service';
23
+ import { subscribeIn } from '@scion/toolkit/operators';
24
+ import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
22
25
  import { WORKBENCH_ID } from '../../workbench-id';
26
+ import { NgClass } from '@angular/common';
27
+ import { boundingClientRect } from '@scion/components/dimension';
28
+ import { UUID } from '@scion/toolkit/uuid';
23
29
  import * as i0 from "@angular/core";
24
- import * as i1 from "../../workbench-config";
25
- import * as i2 from "../../view/workbench-view.registry";
26
- import * as i3 from "../../routing/\u0275workbench-router.service";
27
- import * as i4 from "../../view-dnd/view-drag.service";
28
- import * as i5 from "../view-context-menu/view-menu.service";
29
- import * as i6 from "@angular/cdk/portal";
30
+ import * as i1 from "@angular/common";
31
+ import * as i2 from "@angular/cdk/portal";
30
32
  /**
31
33
  * IMPORTANT: HTML and CSS also used by {@link ViewTabDragImageComponent}.
32
34
  *
@@ -37,91 +39,90 @@ export class ViewTabComponent {
37
39
  * Indicates if dragging a view tab over this view tab's tabbar.
38
40
  */
39
41
  get isDragOverTabbar() {
40
- return this._viewDragService.isDragOverTabbar === this.view.part.id;
41
- }
42
- constructor(host, _workbenchId, _workbenchConfig, _viewRegistry, _router, _viewDragService, _differs, _viewContextMenuService, _injector) {
43
- this._workbenchId = _workbenchId;
44
- this._workbenchConfig = _workbenchConfig;
45
- this._viewRegistry = _viewRegistry;
46
- this._router = _router;
47
- this._viewDragService = _viewDragService;
48
- this._differs = _differs;
49
- this._viewContextMenuService = _viewContextMenuService;
50
- this._injector = _injector;
51
- this._ngOnChanges$ = new Subject();
42
+ return this._viewDragService.isDragOverTabbar === this.view().part().id;
43
+ }
44
+ get viewId() {
45
+ return this.view().id;
46
+ }
47
+ constructor() {
48
+ this._workbenchId = inject(WORKBENCH_ID);
49
+ this._workbenchConfig = inject(WorkbenchConfig);
50
+ this._viewRegistry = inject(WORKBENCH_VIEW_REGISTRY);
51
+ this._router = inject(ɵWorkbenchRouter);
52
+ this._viewDragService = inject(ViewDragService);
53
+ this._viewContextMenuService = inject(ViewMenuService);
54
+ this._injector = inject(Injector);
55
+ this.host = inject((ElementRef)).nativeElement;
56
+ this.view = input.required({ alias: 'viewId', transform: ((viewId) => this._viewRegistry.get(viewId)) });
57
+ this.boundingClientRect = boundingClientRect(inject(ElementRef));
52
58
  this.draggable = true;
53
59
  this.tabindex = -1; // make the view focusable to install view menu accelerators
54
- this.host = host.nativeElement;
55
60
  this.installMaximizeListener();
56
- this.installViewCssClassListener();
61
+ this.addHostCssClasses();
57
62
  this.installViewMenuItemAccelerators();
58
- }
59
- ngOnChanges(changes) {
60
- this.view = this._viewRegistry.get(this.viewId);
61
63
  this.viewTabContentPortal = this.createViewTabContentPortal();
62
- this._ngOnChanges$.next();
63
64
  }
64
65
  get active() {
65
- return this.view.active;
66
+ return this.view().active();
66
67
  }
67
68
  get partActive() {
68
- return this.view.part.active;
69
+ return this.view().part().active();
69
70
  }
70
71
  get dirty() {
71
- return this.view.dirty;
72
+ return this.view().dirty();
72
73
  }
73
74
  onClick() {
74
- this.view.activate().then();
75
+ this.view().activate().then();
75
76
  }
76
77
  onClose(event) {
77
78
  event.stopPropagation(); // prevent the view from being activated
78
- this.view.close().then();
79
+ this.view().close().then();
79
80
  }
80
81
  onMousedown(event) {
81
82
  if (event.buttons === AUXILARY_MOUSE_BUTTON) {
82
- this.view.close().then();
83
+ this.view().close().then();
83
84
  event.stopPropagation();
84
85
  event.preventDefault();
85
86
  }
86
87
  }
87
88
  onContextmenu(event) {
88
- this._viewContextMenuService.showMenu({ x: event.clientX, y: event.clientY }, this.view.id).then();
89
+ this._viewContextMenuService.showMenu({ x: event.clientX, y: event.clientY }, this.view().id).then();
89
90
  event.stopPropagation();
90
91
  event.preventDefault();
91
92
  }
92
93
  onDragStart(event) {
93
- this.view.activate().then(() => {
94
- if (!event.dataTransfer) {
95
- return;
96
- }
97
- event.dataTransfer.effectAllowed = 'move';
98
- event.dataTransfer.setData(VIEW_DRAG_TRANSFER_TYPE, this.view.id);
99
- // Use an invisible <div> as the native drag image because the effective drag image is rendered by {ViewTabDragImageRenderer}.
100
- event.dataTransfer.setDragImage(createElement('div', { style: { display: 'none' } }), 0, 0);
101
- this._viewDragService.setViewDragData({
102
- viewId: this.view.id,
103
- viewTitle: this.view.title ?? '',
104
- viewHeading: this.view.heading ?? '',
105
- viewClosable: this.view.closable,
106
- viewDirty: this.view.dirty,
107
- viewUrlSegments: this.view.urlSegments,
108
- alternativeViewId: this.view.alternativeId,
109
- navigationHint: this.view.navigationHint,
110
- partId: this.view.part.id,
111
- viewTabPointerOffsetX: event.offsetX,
112
- viewTabPointerOffsetY: event.offsetY,
113
- viewTabWidth: this.host.getBoundingClientRect().width,
114
- viewTabHeight: this.host.getBoundingClientRect().height,
115
- workbenchId: this._workbenchId,
116
- classList: this.view.classList.toMap(),
117
- });
94
+ if (!event.dataTransfer) {
95
+ return;
96
+ }
97
+ const view = this.view();
98
+ event.dataTransfer.effectAllowed = 'move';
99
+ event.dataTransfer.setData(VIEW_DRAG_TRANSFER_TYPE, view.id);
100
+ // Use an invisible <div> as the native drag image because the workbench renders the drag image in {@link ViewTabDragImageRenderer}.
101
+ event.dataTransfer.setDragImage(createElement('div', { style: { display: 'none' } }), 0, 0);
102
+ this._viewDragService.setViewDragData({
103
+ uid: UUID.randomUUID(),
104
+ viewId: view.id,
105
+ viewTitle: view.title(),
106
+ viewHeading: view.heading(),
107
+ viewDirty: view.dirty(),
108
+ viewClosable: view.closable(),
109
+ viewUrlSegments: view.urlSegments(),
110
+ alternativeViewId: view.alternativeId,
111
+ navigationHint: view.navigationHint(),
112
+ navigationData: view.navigationData(),
113
+ partId: view.part().id,
114
+ viewTabPointerOffsetX: event.offsetX,
115
+ viewTabPointerOffsetY: event.offsetY,
116
+ viewTabWidth: this.host.getBoundingClientRect().width,
117
+ viewTabHeight: this.host.getBoundingClientRect().height,
118
+ workbenchId: this._workbenchId,
119
+ classList: view.classList.asMap(),
118
120
  });
119
- }
120
- onDragEnd(event) {
121
- // Ensure this view stays activated if the user cancels the drag operation. But, do not push the navigation into browsing history stack.
122
- if (event.dataTransfer?.dropEffect === 'none') {
123
- this.view.activate({ skipLocationChange: true }).then();
121
+ if (!view.active()) {
122
+ view.activate().then();
124
123
  }
124
+ }
125
+ onDragEnd() {
125
126
  this._viewDragService.unsetViewDragData();
126
127
  }
127
128
  /**
@@ -133,63 +134,48 @@ export class ViewTabComponent {
133
134
  installMaximizeListener() {
134
135
  const zone = inject(NgZone);
135
136
  const enabled$ = merge(fromEvent(this.host, 'mouseenter'), fromEvent(this.host, 'mousemove'), fromEvent(this.host, 'mouseleave'))
136
- .pipe(map(event => event.type === 'mousemove'), // the 'mousemove' event arms the listener
137
- subscribeInside(continueFn => zone.runOutsideAngular(continueFn)));
137
+ .pipe(subscribeIn(fn => zone.runOutsideAngular(fn)), map(event => event.type === 'mousemove'));
138
138
  fromEvent(this.host, 'dblclick')
139
139
  .pipe(withLatestFrom(enabled$), takeUntilDestroyed())
140
140
  .subscribe(([event, enabled]) => {
141
141
  event.stopPropagation(); // prevent `PartBarComponent` handling the dblclick event which would undo maximization/minimization
142
- if (enabled && this.view.part.isInMainArea) {
142
+ if (enabled && this.view().part().isInMainArea) {
143
143
  this._router.navigate(layout => layout.toggleMaximized()).then();
144
144
  }
145
145
  });
146
146
  }
147
- /**
148
- * Adds view specific CSS classes to the view-tab.
149
- */
150
- installViewCssClassListener() {
151
- const differ = this._differs.find([]).create();
152
- this._ngOnChanges$
153
- .pipe(switchMap(() => this.view.classList.value$), map(cssClasses => differ.diff(cssClasses)), filter((diff) => diff !== null), takeUntilDestroyed())
154
- .subscribe((diff) => {
155
- diff.forEachAddedItem(({ item }) => this.host.classList.add(item));
156
- diff.forEachRemovedItem(({ item }) => this.host.classList.remove(item));
157
- });
147
+ addHostCssClasses() {
148
+ const ngClass = inject(NgClass);
149
+ effect(() => ngClass.ngClass = this.view().classList.asList());
158
150
  }
159
151
  installViewMenuItemAccelerators() {
160
- this._ngOnChanges$
161
- .pipe(switchMap(() => this._viewContextMenuService.installMenuItemAccelerators$(this.host, this.view)), takeUntilDestroyed())
152
+ toObservable(this.view)
153
+ .pipe(switchMap(view => this._viewContextMenuService.installMenuItemAccelerators$(this.host, view)), takeUntilDestroyed())
162
154
  .subscribe();
163
155
  }
164
156
  createViewTabContentPortal() {
165
- const componentType = this._workbenchConfig.viewTabComponent || ViewTabContentComponent;
166
- return new ComponentPortal(componentType, null, Injector.create({
167
- parent: this._injector,
168
- providers: [
169
- { provide: WorkbenchView, useValue: this.view },
170
- { provide: VIEW_TAB_RENDERING_CONTEXT, useValue: 'tab' },
171
- ],
172
- }));
173
- }
174
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewTabComponent, deps: [{ token: i0.ElementRef }, { token: WORKBENCH_ID }, { token: i1.WorkbenchConfig }, { token: i2.WorkbenchViewRegistry }, { token: i3.ɵWorkbenchRouter }, { token: i4.ViewDragService }, { token: i0.IterableDiffers }, { token: i5.ViewMenuService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
175
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ViewTabComponent, isStandalone: true, selector: "wb-view-tab", inputs: { viewId: "viewId" }, host: { listeners: { "click": "onClick()", "mousedown": "onMousedown($event)", "contextmenu": "onContextmenu($event)", "dragstart": "onDragStart($event)", "dragend": "onDragEnd($event)" }, properties: { "attr.data-viewid": "this.viewId", "attr.draggable": "this.draggable", "attr.tabindex": "this.tabindex", "class.drag-over-tabbar": "this.isDragOverTabbar", "class.active": "this.active", "class.part-active": "this.partActive", "class.e2e-dirty": "this.dirty" } }, usesOnChanges: true, ngImport: i0, template: "<!-- IMPORTANT: THIS HTML FILE IS ALSO USED BY `ViewTabDragImageComponent` -->\n\n<div class=\"corner-radius start\" *ngIf=\"view.active\">\n <div class=\"circle\"></div>\n</div>\n\n<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal\"></ng-container>\n</div>\n\n<div class=\"corner-radius end\" *ngIf=\"view.active\">\n <div class=\"circle\"></div>\n</div>\n\n<button *ngIf=\"view.closable\"\n class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose($event)\">\n close\n</button>\n", styles: [":host{display:grid;align-items:center;padding-left:var(--sci-workbench-tab-padding-inline);padding-right:var(--sci-workbench-tab-padding-inline);position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;box-sizing:border-box;outline:none;border-top:1px solid transparent;border-left:1px solid transparent;border-right:1px solid transparent;border-top-left-radius:var(--sci-workbench-tab-border-radius);border-top-right-radius:var(--sci-workbench-tab-border-radius)}:host.active{cursor:default;color:var(--sci-workbench-tab-active-text-color);border-left-color:var(--sci-workbench-tab-border-color);border-right-color:var(--sci-workbench-tab-border-color);border-top-color:var(--sci-workbench-tab-border-color);background-color:var(--sci-workbench-view-background-color)}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host.active{background-color:var(--sci-workbench-view-peripheral-background-color)}:host.active.part-active>div.content{color:var(--sci-workbench-part-active-tab-active-text-color)}:host>div.content{min-width:var(--sci-workbench-tab-min-width);max-width:var(--sci-workbench-tab-max-width);isolation:isolate}:host>button.close{all:unset;position:absolute;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);right:.2em}:host>button.close:not(:hover){opacity:.75}:host.active>button.close,:host:hover:not(.drag-over-tabbar)>button.close{visibility:visible}:host.active>button.close:hover{background-color:var(--sci-workbench-tab-hover-background-color)}:host:hover:not(.active):not(.drag-over-tabbar):before{content:\"\";background-color:var(--sci-workbench-tab-hover-background-color);position:absolute;inset:0 0 .125em .125em;border-radius:var(--sci-workbench-tab-border-radius);pointer-events:none}:host>div.corner-radius{height:var(--sci-workbench-tab-border-radius);width:var(--sci-workbench-tab-border-radius);overflow:hidden;position:absolute;bottom:0}:host>div.corner-radius>div.circle{position:absolute;top:calc(-2 * var(--sci-workbench-tab-border-radius));width:calc(2 * var(--sci-workbench-tab-border-radius));height:calc(2 * var(--sci-workbench-tab-border-radius));border:var(--sci-workbench-tab-border-radius) solid var(--sci-workbench-view-background-color);border-radius:50%;box-shadow:inset 0 0 0 1px var(--sci-workbench-tab-border-color);box-sizing:content-box}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host>div.corner-radius>div.circle{border-color:var(--sci-workbench-view-peripheral-background-color)}:host>div.corner-radius.start{left:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.start>div.circle{left:calc(-2 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end{right:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end>div.circle{right:calc(-2 * var(--sci-workbench-tab-border-radius))}@container viewtab (height >= 3.5rem){:host>button.close{align-self:start;top:.125em;right:.125em}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i6.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] }); }
157
+ return computed(() => {
158
+ const componentType = this._workbenchConfig.viewTabComponent || ViewTabContentComponent;
159
+ return new ComponentPortal(componentType, null, Injector.create({
160
+ parent: this._injector,
161
+ providers: [
162
+ { provide: WorkbenchView, useValue: this.view() },
163
+ { provide: VIEW_TAB_RENDERING_CONTEXT, useValue: 'tab' },
164
+ ],
165
+ }));
166
+ });
167
+ }
168
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
169
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ViewTabComponent, isStandalone: true, selector: "wb-view-tab", inputs: { view: { classPropertyName: "view", publicName: "viewId", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "onClick()", "mousedown": "onMousedown($event)", "contextmenu": "onContextmenu($event)", "dragstart": "onDragStart($event)", "dragend": "onDragEnd()" }, properties: { "attr.draggable": "this.draggable", "attr.tabindex": "this.tabindex", "class.drag-over-tabbar": "this.isDragOverTabbar", "attr.data-viewid": "this.viewId", "class.active": "this.active", "class.part-active": "this.partActive", "class.e2e-dirty": "this.dirty" } }, hostDirectives: [{ directive: i1.NgClass }], ngImport: i0, template: "<!-- IMPORTANT: THIS HTML FILE IS ALSO USED BY `ViewTabDragImageComponent` -->\n\n@if (view().active()) {\n <div class=\"corner-radius start\">\n <div class=\"circle\"></div>\n </div>\n}\n\n<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal()\"/>\n</div>\n\n@if (view().active()) {\n <div class=\"corner-radius end\">\n <div class=\"circle\"></div>\n </div>\n}\n\n@if (view().closable()) {\n <button class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose($event)\">\n close\n </button>\n}\n", styles: [":host{display:grid;align-items:center;padding-left:var(--sci-workbench-tab-padding-inline);padding-right:var(--sci-workbench-tab-padding-inline);position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;box-sizing:border-box;outline:none;border-top:1px solid transparent;border-left:1px solid transparent;border-right:1px solid transparent;border-top-left-radius:var(--sci-workbench-tab-border-radius);border-top-right-radius:var(--sci-workbench-tab-border-radius)}:host.active{cursor:default;color:var(--sci-workbench-tab-active-text-color);border-left-color:var(--sci-workbench-tab-border-color);border-right-color:var(--sci-workbench-tab-border-color);border-top-color:var(--sci-workbench-tab-border-color);background-color:var(--sci-workbench-view-background-color)}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host.active{background-color:var(--sci-workbench-view-peripheral-background-color)}:host.active.part-active>div.content{color:var(--sci-workbench-part-active-tab-active-text-color)}:host>div.content{min-width:var(--sci-workbench-tab-min-width);max-width:var(--sci-workbench-tab-max-width);isolation:isolate}:host>button.close{all:unset;position:absolute;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);right:.2em}:host>button.close:not(:hover){opacity:.75}:host.active>button.close,:host:hover:not(.drag-over-tabbar)>button.close{visibility:visible}:host.active>button.close:hover{background-color:var(--sci-workbench-tab-hover-background-color)}:host:hover:not(.active):not(.drag-over-tabbar):before{content:\"\";background-color:var(--sci-workbench-tab-hover-background-color);position:absolute;inset:0 0 .125em .125em;border-radius:var(--sci-workbench-tab-border-radius);pointer-events:none}:host>div.corner-radius{height:var(--sci-workbench-tab-border-radius);width:var(--sci-workbench-tab-border-radius);overflow:hidden;position:absolute;bottom:0}:host>div.corner-radius>div.circle{position:absolute;top:calc(-2 * var(--sci-workbench-tab-border-radius));width:calc(2 * var(--sci-workbench-tab-border-radius));height:calc(2 * var(--sci-workbench-tab-border-radius));border:var(--sci-workbench-tab-border-radius) solid var(--sci-workbench-view-background-color);border-radius:50%;box-shadow:inset 0 0 0 1px var(--sci-workbench-tab-border-color);box-sizing:content-box}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host>div.corner-radius>div.circle{border-color:var(--sci-workbench-view-peripheral-background-color)}:host>div.corner-radius.start{left:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.start>div.circle{left:calc(-2 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end{right:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end>div.circle{right:calc(-2 * var(--sci-workbench-tab-border-radius))}@container viewtab (height >= 3.5rem){:host>button.close{align-self:start;top:.125em;right:.125em}}\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] }); }
176
170
  }
177
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewTabComponent, decorators: [{
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabComponent, decorators: [{
178
172
  type: Component,
179
173
  args: [{ selector: 'wb-view-tab', standalone: true, imports: [
180
- NgIf,
181
174
  PortalModule,
182
- ], template: "<!-- IMPORTANT: THIS HTML FILE IS ALSO USED BY `ViewTabDragImageComponent` -->\n\n<div class=\"corner-radius start\" *ngIf=\"view.active\">\n <div class=\"circle\"></div>\n</div>\n\n<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal\"></ng-container>\n</div>\n\n<div class=\"corner-radius end\" *ngIf=\"view.active\">\n <div class=\"circle\"></div>\n</div>\n\n<button *ngIf=\"view.closable\"\n class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose($event)\">\n close\n</button>\n", styles: [":host{display:grid;align-items:center;padding-left:var(--sci-workbench-tab-padding-inline);padding-right:var(--sci-workbench-tab-padding-inline);position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;box-sizing:border-box;outline:none;border-top:1px solid transparent;border-left:1px solid transparent;border-right:1px solid transparent;border-top-left-radius:var(--sci-workbench-tab-border-radius);border-top-right-radius:var(--sci-workbench-tab-border-radius)}:host.active{cursor:default;color:var(--sci-workbench-tab-active-text-color);border-left-color:var(--sci-workbench-tab-border-color);border-right-color:var(--sci-workbench-tab-border-color);border-top-color:var(--sci-workbench-tab-border-color);background-color:var(--sci-workbench-view-background-color)}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host.active{background-color:var(--sci-workbench-view-peripheral-background-color)}:host.active.part-active>div.content{color:var(--sci-workbench-part-active-tab-active-text-color)}:host>div.content{min-width:var(--sci-workbench-tab-min-width);max-width:var(--sci-workbench-tab-max-width);isolation:isolate}:host>button.close{all:unset;position:absolute;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);right:.2em}:host>button.close:not(:hover){opacity:.75}:host.active>button.close,:host:hover:not(.drag-over-tabbar)>button.close{visibility:visible}:host.active>button.close:hover{background-color:var(--sci-workbench-tab-hover-background-color)}:host:hover:not(.active):not(.drag-over-tabbar):before{content:\"\";background-color:var(--sci-workbench-tab-hover-background-color);position:absolute;inset:0 0 .125em .125em;border-radius:var(--sci-workbench-tab-border-radius);pointer-events:none}:host>div.corner-radius{height:var(--sci-workbench-tab-border-radius);width:var(--sci-workbench-tab-border-radius);overflow:hidden;position:absolute;bottom:0}:host>div.corner-radius>div.circle{position:absolute;top:calc(-2 * var(--sci-workbench-tab-border-radius));width:calc(2 * var(--sci-workbench-tab-border-radius));height:calc(2 * var(--sci-workbench-tab-border-radius));border:var(--sci-workbench-tab-border-radius) solid var(--sci-workbench-view-background-color);border-radius:50%;box-shadow:inset 0 0 0 1px var(--sci-workbench-tab-border-color);box-sizing:content-box}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host>div.corner-radius>div.circle{border-color:var(--sci-workbench-view-peripheral-background-color)}:host>div.corner-radius.start{left:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.start>div.circle{left:calc(-2 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end{right:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end>div.circle{right:calc(-2 * var(--sci-workbench-tab-border-radius))}@container viewtab (height >= 3.5rem){:host>button.close{align-self:start;top:.125em;right:.125em}}\n"] }]
183
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
184
- type: Inject,
185
- args: [WORKBENCH_ID]
186
- }] }, { type: i1.WorkbenchConfig }, { type: i2.WorkbenchViewRegistry }, { type: i3.ɵWorkbenchRouter }, { type: i4.ViewDragService }, { type: i0.IterableDiffers }, { type: i5.ViewMenuService }, { type: i0.Injector }], propDecorators: { viewId: [{
187
- type: Input,
188
- args: [{ required: true }]
189
- }, {
190
- type: HostBinding,
191
- args: ['attr.data-viewid']
192
- }], draggable: [{
175
+ ], hostDirectives: [
176
+ NgClass,
177
+ ], template: "<!-- IMPORTANT: THIS HTML FILE IS ALSO USED BY `ViewTabDragImageComponent` -->\n\n@if (view().active()) {\n <div class=\"corner-radius start\">\n <div class=\"circle\"></div>\n </div>\n}\n\n<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal()\"/>\n</div>\n\n@if (view().active()) {\n <div class=\"corner-radius end\">\n <div class=\"circle\"></div>\n </div>\n}\n\n@if (view().closable()) {\n <button class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose($event)\">\n close\n </button>\n}\n", styles: [":host{display:grid;align-items:center;padding-left:var(--sci-workbench-tab-padding-inline);padding-right:var(--sci-workbench-tab-padding-inline);position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;box-sizing:border-box;outline:none;border-top:1px solid transparent;border-left:1px solid transparent;border-right:1px solid transparent;border-top-left-radius:var(--sci-workbench-tab-border-radius);border-top-right-radius:var(--sci-workbench-tab-border-radius)}:host.active{cursor:default;color:var(--sci-workbench-tab-active-text-color);border-left-color:var(--sci-workbench-tab-border-color);border-right-color:var(--sci-workbench-tab-border-color);border-top-color:var(--sci-workbench-tab-border-color);background-color:var(--sci-workbench-view-background-color)}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host.active{background-color:var(--sci-workbench-view-peripheral-background-color)}:host.active.part-active>div.content{color:var(--sci-workbench-part-active-tab-active-text-color)}:host>div.content{min-width:var(--sci-workbench-tab-min-width);max-width:var(--sci-workbench-tab-max-width);isolation:isolate}:host>button.close{all:unset;position:absolute;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);right:.2em}:host>button.close:not(:hover){opacity:.75}:host.active>button.close,:host:hover:not(.drag-over-tabbar)>button.close{visibility:visible}:host.active>button.close:hover{background-color:var(--sci-workbench-tab-hover-background-color)}:host:hover:not(.active):not(.drag-over-tabbar):before{content:\"\";background-color:var(--sci-workbench-tab-hover-background-color);position:absolute;inset:0 0 .125em .125em;border-radius:var(--sci-workbench-tab-border-radius);pointer-events:none}:host>div.corner-radius{height:var(--sci-workbench-tab-border-radius);width:var(--sci-workbench-tab-border-radius);overflow:hidden;position:absolute;bottom:0}:host>div.corner-radius>div.circle{position:absolute;top:calc(-2 * var(--sci-workbench-tab-border-radius));width:calc(2 * var(--sci-workbench-tab-border-radius));height:calc(2 * var(--sci-workbench-tab-border-radius));border:var(--sci-workbench-tab-border-radius) solid var(--sci-workbench-view-background-color);border-radius:50%;box-shadow:inset 0 0 0 1px var(--sci-workbench-tab-border-color);box-sizing:content-box}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host>div.corner-radius>div.circle{border-color:var(--sci-workbench-view-peripheral-background-color)}:host>div.corner-radius.start{left:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.start>div.circle{left:calc(-2 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end{right:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end>div.circle{right:calc(-2 * var(--sci-workbench-tab-border-radius))}@container viewtab (height >= 3.5rem){:host>button.close{align-self:start;top:.125em;right:.125em}}\n"] }]
178
+ }], ctorParameters: () => [], propDecorators: { draggable: [{
193
179
  type: HostBinding,
194
180
  args: ['attr.draggable']
195
181
  }], tabindex: [{
@@ -198,6 +184,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
198
184
  }], isDragOverTabbar: [{
199
185
  type: HostBinding,
200
186
  args: ['class.drag-over-tabbar']
187
+ }], viewId: [{
188
+ type: HostBinding,
189
+ args: ['attr.data-viewid']
201
190
  }], active: [{
202
191
  type: HostBinding,
203
192
  args: ['class.active']
@@ -221,10 +210,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
221
210
  args: ['dragstart', ['$event']]
222
211
  }], onDragEnd: [{
223
212
  type: HostListener,
224
- args: ['dragend', ['$event']]
213
+ args: ['dragend']
225
214
  }] } });
226
215
  /**
227
216
  * Indicates that the auxilary mouse button is pressed (usually the mouse wheel button or middle button).
228
217
  */
229
218
  const AUXILARY_MOUSE_BUTTON = 4;
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10YWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGFydC92aWV3LXRhYi92aWV3LXRhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctdGFiL3ZpZXctdGFiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBYyxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBb0MsTUFBTSxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUNwTCxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRS9ELE9BQU8sRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBQyx1QkFBdUIsRUFBa0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRSxPQUFPLEVBQUMsMEJBQTBCLEVBQTBCLE1BQU0sMkJBQTJCLENBQUM7QUFFOUYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFHdkYsT0FBTyxFQUFTLGFBQWEsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRXRFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFB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QWpNVSxnQkFBZ0IsNENBMkJQLFlBQVk7a0dBM0JyQixnQkFBZ0IsNmtCQzVDN0IsOGhCQW1CQSxrK0ZEcUJJLElBQUksNEZBQ0osWUFBWTs7MkZBR0gsZ0JBQWdCO2tCQVY1QixTQUFTOytCQUNFLGFBQWEsY0FHWCxJQUFJLFdBQ1A7d0JBQ1AsSUFBSTt3QkFDSixZQUFZO3FCQUNiOzswQkE2QlksTUFBTTsyQkFBQyxZQUFZOzJQQWpCekIsTUFBTTtzQkFGWixLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQzs7c0JBQ3RCLFdBQVc7dUJBQUMsa0JBQWtCO2dCQUl4QixTQUFTO3NCQURmLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUl0QixRQUFRO3NCQURkLFdBQVc7dUJBQUMsZUFBZTtnQkFPakIsZ0JBQWdCO3NCQUQxQixXQUFXO3VCQUFDLHdCQUF3QjtnQkEyQjFCLE1BQU07c0JBRGhCLFdBQVc7dUJBQUMsY0FBYztnQkFNaEIsVUFBVTtzQkFEcEIsV0FBVzt1QkFBQyxtQkFBbUI7Z0JBTXJCLEtBQUs7c0JBRGYsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBTXZCLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxPQUFPO2dCQVdkLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVU5QixhQUFhO3NCQURuQixZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRaEMsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBaUM5QixTQUFTO3NCQURmLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDOztBQTRFckM7O0dBRUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgaW5qZWN0LCBJbmplY3RvciwgSW5wdXQsIEl0ZXJhYmxlQ2hhbmdlcywgSXRlcmFibGVEaWZmZXJzLCBOZ1pvbmUsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2Zyb21FdmVudCwgbWVyZ2UsIFN1YmplY3QsIHdpdGhMYXRlc3RGcm9tfSBmcm9tICdyeGpzJztcbmltcG9ydCB7V29ya2JlbmNoVmlld1JlZ2lzdHJ5fSBmcm9tICcuLi8uLi92aWV3L3dvcmtiZW5jaC12aWV3LnJlZ2lzdHJ5JztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtWSUVXX0RSQUdfVFJBTlNGRVJfVFlQRSwgVmlld0RyYWdTZXJ2aWNlfSBmcm9tICcuLi8uLi92aWV3LWRuZC92aWV3LWRyYWcuc2VydmljZSc7XG5pbXBvcnQge2NyZWF0ZUVsZW1lbnR9IGZyb20gJy4uLy4uL2NvbW1vbi9kb20udXRpbCc7XG5pbXBvcnQge0NvbXBvbmVudFBvcnRhbCwgUG9ydGFsTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7VklFV19UQUJfUkVOREVSSU5HX0NPTlRFWFQsIFZpZXdUYWJSZW5kZXJpbmdDb250ZXh0fSBmcm9tICcuLi8uLi93b3JrYmVuY2guY29uc3RhbnRzJztcbmltcG9ydCB7V29ya2JlbmNoQ29uZmlnfSBmcm9tICcuLi8uLi93b3JrYmVuY2gtY29uZmlnJztcbmltcG9ydCB7Vmlld1RhYkNvbnRlbnRDb21wb25lbnR9IGZyb20gJy4uL3ZpZXctdGFiLWNvbnRlbnQvdmlldy10YWItY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHtWaWV3TWVudVNlcnZpY2V9IGZyb20gJy4uL3ZpZXctY29udGV4dC1tZW51L3ZpZXctbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7ybVXb3JrYmVuY2hWaWV3fSBmcm9tICcuLi8uLi92aWV3L8m1d29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtWaWV3SWQsIFdvcmtiZW5jaFZpZXd9IGZyb20gJy4uLy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaFJvdXRlcn0gZnJvbSAnLi4vLi4vcm91dGluZy/JtXdvcmtiZW5jaC1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQge3N1YnNjcmliZUluc2lkZX0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb3BlcmF0b3JzJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge05nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1dPUktCRU5DSF9JRH0gZnJvbSAnLi4vLi4vd29ya2JlbmNoLWlkJztcblxuLyoqXG4gKiBJTVBPUlRBTlQ6IEhUTUwgYW5kIENTUyBhbHNvIHVzZWQgYnkge0BsaW5rIFZpZXdUYWJEcmFnSW1hZ2VDb21wb25lbnR9LlxuICpcbiAqIEBzZWUgVmlld1RhYkRyYWdJbWFnZUNvbXBvbmVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3Yi12aWV3LXRhYicsXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3LXRhYi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXctdGFiLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIFBvcnRhbE1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVmlld1RhYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgcHJpdmF0ZSBfbmdPbkNoYW5nZXMkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgaG9zdDogSFRNTEVsZW1lbnQ7XG4gIHB1YmxpYyB2aWV3ITogybVXb3JrYmVuY2hWaWV3O1xuICBwdWJsaWMgdmlld1RhYkNvbnRlbnRQb3J0YWwhOiBDb21wb25lbnRQb3J0YWw8dW5rbm93bj47XG5cbiAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXZpZXdpZCcpXG4gIHB1YmxpYyB2aWV3SWQhOiBWaWV3SWQ7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRyYWdnYWJsZScpXG4gIHB1YmxpYyBkcmFnZ2FibGUgPSB0cnVlO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gIHB1YmxpYyB0YWJpbmRleCA9IC0xOyAvLyBtYWtlIHRoZSB2aWV3IGZvY3VzYWJsZSB0byBpbnN0YWxsIHZpZXcgbWVudSBhY2NlbGVyYXRvcnNcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGRyYWdnaW5nIGEgdmlldyB0YWIgb3ZlciB0aGlzIHZpZXcgdGFiJ3MgdGFiYmFyLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kcmFnLW92ZXItdGFiYmFyJylcbiAgcHVibGljIGdldCBpc0RyYWdPdmVyVGFiYmFyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92aWV3RHJhZ1NlcnZpY2UuaXNEcmFnT3ZlclRhYmJhciA9PT0gdGhpcy52aWV3LnBhcnQuaWQ7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihob3N0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgICAgICAgQEluamVjdChXT1JLQkVOQ0hfSUQpIHByaXZhdGUgX3dvcmtiZW5jaElkOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3dvcmtiZW5jaENvbmZpZzogV29ya2JlbmNoQ29uZmlnLFxuICAgICAgICAgICAgICBwcml2YXRlIF92aWV3UmVnaXN0cnk6IFdvcmtiZW5jaFZpZXdSZWdpc3RyeSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfcm91dGVyOiDJtVdvcmtiZW5jaFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlld0RyYWdTZXJ2aWNlOiBWaWV3RHJhZ1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2RpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycyxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlld0NvbnRleHRNZW51U2VydmljZTogVmlld01lbnVTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLmhvc3QgPSBob3N0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5pbnN0YWxsTWF4aW1pemVMaXN0ZW5lcigpO1xuICAgIHRoaXMuaW5zdGFsbFZpZXdDc3NDbGFzc0xpc3RlbmVyKCk7XG4gICAgdGhpcy5pbnN0YWxsVmlld01lbnVJdGVtQWNjZWxlcmF0b3JzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMudmlldyA9IHRoaXMuX3ZpZXdSZWdpc3RyeS5nZXQodGhpcy52aWV3SWQpO1xuICAgIHRoaXMudmlld1RhYkNvbnRlbnRQb3J0YWwgPSB0aGlzLmNyZWF0ZVZpZXdUYWJDb250ZW50UG9ydGFsKCk7XG4gICAgdGhpcy5fbmdPbkNoYW5nZXMkLm5leHQoKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJylcbiAgcHVibGljIGdldCBhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlldy5hY3RpdmU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBhcnQtYWN0aXZlJylcbiAgcHVibGljIGdldCBwYXJ0QWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZpZXcucGFydC5hY3RpdmU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmUyZS1kaXJ0eScpXG4gIHB1YmxpYyBnZXQgZGlydHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlldy5kaXJ0eTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgcHVibGljIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy52aWV3LmFjdGl2YXRlKCkudGhlbigpO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIHByZXZlbnQgdGhlIHZpZXcgZnJvbSBiZWluZyBhY3RpdmF0ZWRcbiAgICB0aGlzLnZpZXcuY2xvc2UoKS50aGVuKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25Nb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYnV0dG9ucyA9PT0gQVVYSUxBUllfTU9VU0VfQlVUVE9OKSB7XG4gICAgICB0aGlzLnZpZXcuY2xvc2UoKS50aGVuKCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY29udGV4dG1lbnUnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25Db250ZXh0bWVudShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0TWVudVNlcnZpY2Uuc2hvd01lbnUoe3g6IGV2ZW50LmNsaWVudFgsIHk6IGV2ZW50LmNsaWVudFl9LCB0aGlzLnZpZXcuaWQpLnRoZW4oKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ3N0YXJ0JywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXcuYWN0aXZhdGUoKS50aGVuKCgpID0+IHtcbiAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAnbW92ZSc7XG4gICAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShWSUVXX0RSQUdfVFJBTlNGRVJfVFlQRSwgdGhpcy52aWV3LmlkKTtcbiAgICAgIC8vIFVzZSBhbiBpbnZpc2libGUgPGRpdj4gYXMgdGhlIG5hdGl2ZSBkcmFnIGltYWdlIGJlY2F1c2UgdGhlIGVmZmVjdGl2ZSBkcmFnIGltYWdlIGlzIHJlbmRlcmVkIGJ5IHtWaWV3VGFiRHJhZ0ltYWdlUmVuZGVyZXJ9LlxuICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShjcmVhdGVFbGVtZW50KCdkaXYnLCB7c3R5bGU6IHtkaXNwbGF5OiAnbm9uZSd9fSksIDAsIDApO1xuXG4gICAgICB0aGlzLl92aWV3RHJhZ1NlcnZpY2Uuc2V0Vmlld0RyYWdEYXRhKHtcbiAgICAgICAgdmlld0lkOiB0aGlzLnZpZXcuaWQsXG4gICAgICAgIHZpZXdUaXRsZTogdGhpcy52aWV3LnRpdGxlID8/ICcnLFxuICAgICAgICB2aWV3SGVhZGluZzogdGhpcy52aWV3LmhlYWRpbmcgPz8gJycsXG4gICAgICAgIHZpZXdDbG9zYWJsZTogdGhpcy52aWV3LmNsb3NhYmxlLFxuICAgICAgICB2aWV3RGlydHk6IHRoaXMudmlldy5kaXJ0eSxcbiAgICAgICAgdmlld1VybFNlZ21lbnRzOiB0aGlzLnZpZXcudXJsU2VnbWVudHMsXG4gICAgICAgIGFsdGVybmF0aXZlVmlld0lkOiB0aGlzLnZpZXcuYWx0ZXJuYXRpdmVJZCxcbiAgICAgICAgbmF2aWdhdGlvbkhpbnQ6IHRoaXMudmlldy5uYXZpZ2F0aW9uSGludCxcbiAgICAgICAgcGFydElkOiB0aGlzLnZpZXcucGFydC5pZCxcbiAgICAgICAgdmlld1RhYlBvaW50ZXJPZmZzZXRYOiBldmVudC5vZmZzZXRYLFxuICAgICAgICB2aWV3VGFiUG9pbnRlck9mZnNldFk6IGV2ZW50Lm9mZnNldFksXG4gICAgICAgIHZpZXdUYWJXaWR0aDogdGhpcy5ob3N0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLFxuICAgICAgICB2aWV3VGFiSGVpZ2h0OiB0aGlzLmhvc3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LFxuICAgICAgICB3b3JrYmVuY2hJZDogdGhpcy5fd29ya2JlbmNoSWQsXG4gICAgICAgIGNsYXNzTGlzdDogdGhpcy52aWV3LmNsYXNzTGlzdC50b01hcCgpLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnZW5kJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRHJhZ0VuZChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgLy8gRW5zdXJlIHRoaXMgdmlldyBzdGF5cyBhY3RpdmF0ZWQgaWYgdGhlIHVzZXIgY2FuY2VscyB0aGUgZHJhZyBvcGVyYXRpb24uIEJ1dCwgZG8gbm90IHB1c2ggdGhlIG5hdmlnYXRpb24gaW50byBicm93c2luZyBoaXN0b3J5IHN0YWNrLlxuICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXI/LmRyb3BFZmZlY3QgPT09ICdub25lJykge1xuICAgICAgdGhpcy52aWV3LmFjdGl2YXRlKHtza2lwTG9jYXRpb25DaGFuZ2U6IHRydWV9KS50aGVuKCk7XG4gICAgfVxuICAgIHRoaXMuX3ZpZXdEcmFnU2VydmljZS51bnNldFZpZXdEcmFnRGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgZm9yICdkYmxjbGljaycgZXZlbnRzIHRvIG1heGltaXplIG9yIG1pbmltaXplIHRoZSBtYWluIGFyZWEuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgbGlzdGVuZXIgaXMgbm90IGFjdGl2YXRlZCB1bnRpbCB0aGUgbW91c2UgaXMgbW92ZWQuIE90aGVyd2lzZSwgY2xvc2luZyBzdWNjZXNzaXZlXG4gICAqIHZpZXdzIChpZiB0aGV5IGhhdmUgZGlmZmVyZW50IHRhYiB3aWR0aHMpIGNvdWxkIHJlc3VsdCBpbiB1bmludGVuZGVkIG1heGltaXphdGlvbiBvciBtaW5pbWl6YXRpb24uXG4gICAqL1xuICBwcml2YXRlIGluc3RhbGxNYXhpbWl6ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHpvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICBjb25zdCBlbmFibGVkJCA9IG1lcmdlKGZyb21FdmVudCh0aGlzLmhvc3QsICdtb3VzZWVudGVyJyksIGZyb21FdmVudCh0aGlzLmhvc3QsICdtb3VzZW1vdmUnKSwgZnJvbUV2ZW50KHRoaXMuaG9zdCwgJ21vdXNlbGVhdmUnKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoZXZlbnQgPT4gZXZlbnQudHlwZSA9PT0gJ21vdXNlbW92ZScpLCAvLyB0aGUgJ21vdXNlbW92ZScgZXZlbnQgYXJtcyB0aGUgbGlzdGVuZXJcbiAgICAgICAgc3Vic2NyaWJlSW5zaWRlKGNvbnRpbnVlRm4gPT4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcihjb250aW51ZUZuKSksXG4gICAgICApO1xuXG4gICAgZnJvbUV2ZW50KHRoaXMuaG9zdCwgJ2RibGNsaWNrJylcbiAgICAgIC5waXBlKFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbShlbmFibGVkJCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW2V2ZW50LCBlbmFibGVkXSkgPT4ge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gcHJldmVudCBgUGFydEJhckNvbXBvbmVudGAgaGFuZGxpbmcgdGhlIGRibGNsaWNrIGV2ZW50IHdoaWNoIHdvdWxkIHVuZG8gbWF4aW1pemF0aW9uL21pbmltaXphdGlvblxuICAgICAgICBpZiAoZW5hYmxlZCAmJiB0aGlzLnZpZXcucGFydC5pc0luTWFpbkFyZWEpIHtcbiAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUobGF5b3V0ID0+IGxheW91dC50b2dnbGVNYXhpbWl6ZWQoKSkudGhlbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHZpZXcgc3BlY2lmaWMgQ1NTIGNsYXNzZXMgdG8gdGhlIHZpZXctdGFiLlxuICAgKi9cbiAgcHJpdmF0ZSBpbnN0YWxsVmlld0Nzc0NsYXNzTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgY29uc3QgZGlmZmVyID0gdGhpcy5fZGlmZmVycy5maW5kKFtdKS5jcmVhdGU8c3RyaW5nPigpO1xuXG4gICAgdGhpcy5fbmdPbkNoYW5nZXMkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudmlldy5jbGFzc0xpc3QudmFsdWUkKSxcbiAgICAgICAgbWFwKGNzc0NsYXNzZXMgPT4gZGlmZmVyLmRpZmYoY3NzQ2xhc3NlcykpLFxuICAgICAgICBmaWx0ZXIoKGRpZmYpOiBkaWZmIGlzIEl0ZXJhYmxlQ2hhbmdlczxzdHJpbmc+ID0+IGRpZmYgIT09IG51bGwpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGRpZmY6IEl0ZXJhYmxlQ2hhbmdlczxzdHJpbmc+KSA9PiB7XG4gICAgICAgIGRpZmYuZm9yRWFjaEFkZGVkSXRlbSgoe2l0ZW19KSA9PiB0aGlzLmhvc3QuY2xhc3NMaXN0LmFkZChpdGVtKSk7XG4gICAgICAgIGRpZmYuZm9yRWFjaFJlbW92ZWRJdGVtKCh7aXRlbX0pID0+IHRoaXMuaG9zdC5jbGFzc0xpc3QucmVtb3ZlKGl0ZW0pKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YWxsVmlld01lbnVJdGVtQWNjZWxlcmF0b3JzKCk6IHZvaWQge1xuICAgIHRoaXMuX25nT25DaGFuZ2VzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl92aWV3Q29udGV4dE1lbnVTZXJ2aWNlLmluc3RhbGxNZW51SXRlbUFjY2VsZXJhdG9ycyQodGhpcy5ob3N0LCB0aGlzLnZpZXcpKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVZpZXdUYWJDb250ZW50UG9ydGFsKCk6IENvbXBvbmVudFBvcnRhbDx1bmtub3duPiB7XG4gICAgY29uc3QgY29tcG9uZW50VHlwZSA9IHRoaXMuX3dvcmtiZW5jaENvbmZpZy52aWV3VGFiQ29tcG9uZW50IHx8IFZpZXdUYWJDb250ZW50Q29tcG9uZW50O1xuICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbXBvbmVudFR5cGUsIG51bGwsIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtwcm92aWRlOiBXb3JrYmVuY2hWaWV3LCB1c2VWYWx1ZTogdGhpcy52aWV3fSxcbiAgICAgICAge3Byb3ZpZGU6IFZJRVdfVEFCX1JFTkRFUklOR19DT05URVhULCB1c2VWYWx1ZTogJ3RhYicgc2F0aXNmaWVzIFZpZXdUYWJSZW5kZXJpbmdDb250ZXh0fSxcbiAgICAgIF0sXG4gICAgfSkpO1xuICB9XG59XG5cbi8qKlxuICogSW5kaWNhdGVzIHRoYXQgdGhlIGF1eGlsYXJ5IG1vdXNlIGJ1dHRvbiBpcyBwcmVzc2VkICh1c3VhbGx5IHRoZSBtb3VzZSB3aGVlbCBidXR0b24gb3IgbWlkZGxlIGJ1dHRvbikuXG4gKi9cbmNvbnN0IEFVWElMQVJZX01PVVNFX0JVVFRPTiA9IDQ7XG4iLCI8IS0tIElNUE9SVEFOVDogVEhJUyBIVE1MIEZJTEUgSVMgQUxTTyBVU0VEIEJZIGBWaWV3VGFiRHJhZ0ltYWdlQ29tcG9uZW50YCAtLT5cblxuPGRpdiBjbGFzcz1cImNvcm5lci1yYWRpdXMgc3RhcnRcIiAqbmdJZj1cInZpZXcuYWN0aXZlXCI+XG4gIDxkaXYgY2xhc3M9XCJjaXJjbGVcIj48L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICA8bmctY29udGFpbmVyICpjZGtQb3J0YWxPdXRsZXQ9XCJ2aWV3VGFiQ29udGVudFBvcnRhbFwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJjb3JuZXItcmFkaXVzIGVuZFwiICpuZ0lmPVwidmlldy5hY3RpdmVcIj5cbiAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuPC9kaXY+XG5cbjxidXR0b24gKm5nSWY9XCJ2aWV3LmNsb3NhYmxlXCJcbiAgICAgICAgY2xhc3M9XCJjbG9zZSBlMmUtY2xvc2Ugc2Npb24td29ya2JlbmNoLWljb25zXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoJGV2ZW50KVwiPlxuICBjbG9zZVxuPC9idXR0b24+XG4iXX0=
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10YWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGFydC92aWV3LXRhYi92aWV3LXRhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctdGFiL3ZpZXctdGFiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsZUFBZSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDMUYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxFQUFDLDBCQUEwQixFQUEwQixNQUFNLDJCQUEyQixDQUFDO0FBQzlGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1B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a0JBQ2U7d0JBQ2QsT0FBTztxQkFDUjt3REFrQk0sU0FBUztzQkFEZixXQUFXO3VCQUFDLGdCQUFnQjtnQkFJdEIsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLGVBQWU7Z0JBT2pCLGdCQUFnQjtzQkFEMUIsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBTTFCLE1BQU07c0JBRGhCLFdBQVc7dUJBQUMsa0JBQWtCO2dCQWFwQixNQUFNO3NCQURoQixXQUFXO3VCQUFDLGNBQWM7Z0JBTWhCLFVBQVU7c0JBRHBCLFdBQVc7dUJBQUMsbUJBQW1CO2dCQU1yQixLQUFLO3NCQURmLFdBQVc7dUJBQUMsaUJBQWlCO2dCQU12QixPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTztnQkFXZCxXQUFXO3NCQURqQixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVOUIsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUWhDLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXNDOUIsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVM7O0FBNER6Qjs7R0FFRztBQUNILE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbmplY3RvciwgaW5wdXQsIE5nWm9uZSwgU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7ZnJvbUV2ZW50LCBtZXJnZSwgd2l0aExhdGVzdEZyb219IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtXT1JLQkVOQ0hfVklFV19SRUdJU1RSWX0gZnJvbSAnLi4vLi4vdmlldy93b3JrYmVuY2gtdmlldy5yZWdpc3RyeSc7XG5pbXBvcnQge21hcCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1ZJRVdfRFJBR19UUkFOU0ZFUl9UWVBFLCBWaWV3RHJhZ1NlcnZpY2V9IGZyb20gJy4uLy4uL3ZpZXctZG5kL3ZpZXctZHJhZy5zZXJ2aWNlJztcbmltcG9ydCB7Y3JlYXRlRWxlbWVudH0gZnJvbSAnLi4vLi4vY29tbW9uL2RvbS51dGlsJztcbmltcG9ydCB7Q29tcG9uZW50UG9ydGFsLCBQb3J0YWxNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtWSUVXX1RBQl9SRU5ERVJJTkdfQ09OVEVYVCwgVmlld1RhYlJlbmRlcmluZ0NvbnRleHR9IGZyb20gJy4uLy4uL3dvcmtiZW5jaC5jb25zdGFudHMnO1xuaW1wb3J0IHtXb3JrYmVuY2hDb25maWd9IGZyb20gJy4uLy4uL3dvcmtiZW5jaC1jb25maWcnO1xuaW1wb3J0IHtWaWV3VGFiQ29udGVudENvbXBvbmVudH0gZnJvbSAnLi4vdmlldy10YWItY29udGVudC92aWV3LXRhYi1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQge1ZpZXdNZW51U2VydmljZX0gZnJvbSAnLi4vdmlldy1jb250ZXh0LW1lbnUvdmlldy1tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHtWaWV3SWQsIFdvcmtiZW5jaFZpZXd9IGZyb20gJy4uLy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaFJvdXRlcn0gZnJvbSAnLi4vLi4vcm91dGluZy/JtXdvcmtiZW5jaC1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQge3N1YnNjcmliZUlufSBmcm9tICdAc2Npb24vdG9vbGtpdC9vcGVyYXRvcnMnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtXT1JLQkVOQ0hfSUR9IGZyb20gJy4uLy4uL3dvcmtiZW5jaC1pZCc7XG5pbXBvcnQge05nQ2xhc3N9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge2JvdW5kaW5nQ2xpZW50UmVjdH0gZnJvbSAnQHNjaW9uL2NvbXBvbmVudHMvZGltZW5zaW9uJztcbmltcG9ydCB7VVVJRH0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXVpZCc7XG5cbi8qKlxuICogSU1QT1JUQU5UOiBIVE1MIGFuZCBDU1MgYWxzbyB1c2VkIGJ5IHtAbGluayBWaWV3VGFiRHJhZ0ltYWdlQ29tcG9uZW50fS5cbiAqXG4gKiBAc2VlIFZpZXdUYWJEcmFnSW1hZ2VDb21wb25lbnRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2Itdmlldy10YWInLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy10YWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92aWV3LXRhYi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUG9ydGFsTW9kdWxlLFxuICBdLFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIE5nQ2xhc3MsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdUYWJDb21wb25lbnQge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3dvcmtiZW5jaElkID0gaW5qZWN0KFdPUktCRU5DSF9JRCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dvcmtiZW5jaENvbmZpZyA9IGluamVjdChXb3JrYmVuY2hDb25maWcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3UmVnaXN0cnkgPSBpbmplY3QoV09SS0JFTkNIX1ZJRVdfUkVHSVNUUlkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb3V0ZXIgPSBpbmplY3QoybVXb3JrYmVuY2hSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3RHJhZ1NlcnZpY2UgPSBpbmplY3QoVmlld0RyYWdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld0NvbnRleHRNZW51U2VydmljZSA9IGluamVjdChWaWV3TWVudVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgcHVibGljIHJlYWRvbmx5IGhvc3QgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pLm5hdGl2ZUVsZW1lbnQ7XG4gIHB1YmxpYyByZWFkb25seSB2aWV3ID0gaW5wdXQucmVxdWlyZWQoe2FsaWFzOiAndmlld0lkJywgdHJhbnNmb3JtOiAoKHZpZXdJZDogVmlld0lkKSA9PiB0aGlzLl92aWV3UmVnaXN0cnkuZ2V0KHZpZXdJZCkpfSk7XG4gIHB1YmxpYyByZWFkb25seSB2aWV3VGFiQ29udGVudFBvcnRhbDogU2lnbmFsPENvbXBvbmVudFBvcnRhbDx1bmtub3duPj47XG4gIHB1YmxpYyByZWFkb25seSBib3VuZGluZ0NsaWVudFJlY3QgPSBib3VuZGluZ0NsaWVudFJlY3QoaW5qZWN0KEVsZW1lbnRSZWYpKTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZHJhZ2dhYmxlJylcbiAgcHVibGljIGRyYWdnYWJsZSA9IHRydWU7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgcHVibGljIHRhYmluZGV4ID0gLTE7IC8vIG1ha2UgdGhlIHZpZXcgZm9jdXNhYmxlIHRvIGluc3RhbGwgdmlldyBtZW51IGFjY2VsZXJhdG9yc1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgZHJhZ2dpbmcgYSB2aWV3IHRhYiBvdmVyIHRoaXMgdmlldyB0YWIncyB0YWJiYXIuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRyYWctb3Zlci10YWJiYXInKVxuICBwdWJsaWMgZ2V0IGlzRHJhZ092ZXJUYWJiYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdEcmFnU2VydmljZS5pc0RyYWdPdmVyVGFiYmFyID09PSB0aGlzLnZpZXcoKS5wYXJ0KCkuaWQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS12aWV3aWQnKVxuICBwdWJsaWMgZ2V0IHZpZXdJZCgpOiBWaWV3SWQge1xuICAgIHJldHVybiB0aGlzLnZpZXcoKS5pZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaW5zdGFsbE1heGltaXplTGlzdGVuZXIoKTtcbiAgICB0aGlzLmFkZEhvc3RDc3NDbGFzc2VzKCk7XG4gICAgdGhpcy5pbnN0YWxsVmlld01lbnVJdGVtQWNjZWxlcmF0b3JzKCk7XG4gICAgdGhpcy52aWV3VGFiQ29udGVudFBvcnRhbCA9IHRoaXMuY3JlYXRlVmlld1RhYkNvbnRlbnRQb3J0YWwoKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJylcbiAgcHVibGljIGdldCBhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlldygpLmFjdGl2ZSgpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wYXJ0LWFjdGl2ZScpXG4gIHB1YmxpYyBnZXQgcGFydEFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52aWV3KCkucGFydCgpLmFjdGl2ZSgpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5lMmUtZGlydHknKVxuICBwdWJsaWMgZ2V0IGRpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZpZXcoKS5kaXJ0eSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXcoKS5hY3RpdmF0ZSgpLnRoZW4oKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBwcmV2ZW50IHRoZSB2aWV3IGZyb20gYmVpbmcgYWN0aXZhdGVkXG4gICAgdGhpcy52aWV3KCkuY2xvc2UoKS50aGVuKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25Nb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYnV0dG9ucyA9PT0gQVVYSUxBUllfTU9VU0VfQlVUVE9OKSB7XG4gICAgICB0aGlzLnZpZXcoKS5jbG9zZSgpLnRoZW4oKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjb250ZXh0bWVudScsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbkNvbnRleHRtZW51KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5fdmlld0NvbnRleHRNZW51U2VydmljZS5zaG93TWVudSh7eDogZXZlbnQuY2xpZW50WCwgeTogZXZlbnQuY2xpZW50WX0sIHRoaXMudmlldygpLmlkKS50aGVuKCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdzdGFydCcsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbkRyYWdTdGFydChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgaWYgKCFldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2aWV3ID0gdGhpcy52aWV3KCk7XG4gICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAnbW92ZSc7XG4gICAgZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoVklFV19EUkFHX1RSQU5TRkVSX1RZUEUsIHZpZXcuaWQpO1xuICAgIC8vIFVzZSBhbiBpbnZpc2libGUgPGRpdj4gYXMgdGhlIG5hdGl2ZSBkcmFnIGltYWdlIGJlY2F1c2UgdGhlIHdvcmtiZW5jaCByZW5kZXJzIHRoZSBkcmFnIGltYWdlIGluIHtAbGluayBWaWV3VGFiRHJhZ0ltYWdlUmVuZGVyZXJ9LlxuICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREcmFnSW1hZ2UoY3JlYXRlRWxlbWVudCgnZGl2Jywge3N0eWxlOiB7ZGlzcGxheTogJ25vbmUnfX0pLCAwLCAwKTtcblxuICAgIHRoaXMuX3ZpZXdEcmFnU2VydmljZS5zZXRWaWV3RHJhZ0RhdGEoe1xuICAgICAgdWlkOiBVVUlELnJhbmRvbVVVSUQoKSxcbiAgICAgIHZpZXdJZDogdmlldy5pZCxcbiAgICAgIHZpZXdUaXRsZTogdmlldy50aXRsZSgpLFxuICAgICAgdmlld0hlYWRpbmc6IHZpZXcuaGVhZGluZygpLFxuICAgICAgdmlld0RpcnR5OiB2aWV3LmRpcnR5KCksXG4gICAgICB2aWV3Q2xvc2FibGU6IHZpZXcuY2xvc2FibGUoKSxcbiAgICAgIHZpZXdVcmxTZWdtZW50czogdmlldy51cmxTZWdtZW50cygpLFxuICAgICAgYWx0ZXJuYXRpdmVWaWV3SWQ6IHZpZXcuYWx0ZXJuYXRpdmVJZCxcbiAgICAgIG5hdmlnYXRpb25IaW50OiB2aWV3Lm5hdmlnYXRpb25IaW50KCksXG4gICAgICBuYXZpZ2F0aW9uRGF0YTogdmlldy5uYXZpZ2F0aW9uRGF0YSgpLFxuICAgICAgcGFydElkOiB2aWV3LnBhcnQoKS5pZCxcbiAgICAgIHZpZXdUYWJQb2ludGVyT2Zmc2V0WDogZXZlbnQub2Zmc2V0WCxcbiAgICAgIHZpZXdUYWJQb2ludGVyT2Zmc2V0WTogZXZlbnQub2Zmc2V0WSxcbiAgICAgIHZpZXdUYWJXaWR0aDogdGhpcy5ob3N0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLFxuICAgICAgdmlld1RhYkhlaWdodDogdGhpcy5ob3N0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCxcbiAgICAgIHdvcmtiZW5jaElkOiB0aGlzLl93b3JrYmVuY2hJZCxcbiAgICAgIGNsYXNzTGlzdDogdmlldy5jbGFzc0xpc3QuYXNNYXAoKSxcbiAgICB9KTtcblxuICAgIGlmICghdmlldy5hY3RpdmUoKSkge1xuICAgICAgdmlldy5hY3RpdmF0ZSgpLnRoZW4oKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnZW5kJylcbiAgcHVibGljIG9uRHJhZ0VuZCgpOiB2b2lkIHtcbiAgICB0aGlzLl92aWV3RHJhZ1NlcnZpY2UudW5zZXRWaWV3RHJhZ0RhdGEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW5zIGZvciAnZGJsY2xpY2snIGV2ZW50cyB0byBtYXhpbWl6ZSBvciBtaW5pbWl6ZSB0aGUgbWFpbiBhcmVhLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIGxpc3RlbmVyIGlzIG5vdCBhY3RpdmF0ZWQgdW50aWwgdGhlIG1vdXNlIGlzIG1vdmVkLiBPdGhlcndpc2UsIGNsb3Npbmcgc3VjY2Vzc2l2ZVxuICAgKiB2aWV3cyAoaWYgdGhleSBoYXZlIGRpZmZlcmVudCB0YWIgd2lkdGhzKSBjb3VsZCByZXN1bHQgaW4gdW5pbnRlbmRlZCBtYXhpbWl6YXRpb24gb3IgbWluaW1pemF0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBpbnN0YWxsTWF4aW1pemVMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBjb25zdCB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgY29uc3QgZW5hYmxlZCQgPSBtZXJnZShmcm9tRXZlbnQ8RXZlbnQ+KHRoaXMuaG9zdCwgJ21vdXNlZW50ZXInKSwgZnJvbUV2ZW50PEV2ZW50Pih0aGlzLmhvc3QsICdtb3VzZW1vdmUnKSwgZnJvbUV2ZW50PEV2ZW50Pih0aGlzLmhvc3QsICdtb3VzZWxlYXZlJykpXG4gICAgICAucGlwZShcbiAgICAgICAgc3Vic2NyaWJlSW4oZm4gPT4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcihmbikpLFxuICAgICAgICBtYXAoZXZlbnQgPT4gZXZlbnQudHlwZSA9PT0gJ21vdXNlbW92ZScpLCAvLyB0aGUgJ21vdXNlbW92ZScgZXZlbnQgYXJtcyB0aGUgbGlzdGVuZXJcbiAgICAgICk7XG5cbiAgICBmcm9tRXZlbnQ8RXZlbnQ+KHRoaXMuaG9zdCwgJ2RibGNsaWNrJylcbiAgICAgIC5waXBlKFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbShlbmFibGVkJCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW2V2ZW50LCBlbmFibGVkXSkgPT4ge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gcHJldmVudCBgUGFydEJhckNvbXBvbmVudGAgaGFuZGxpbmcgdGhlIGRibGNsaWNrIGV2ZW50IHdoaWNoIHdvdWxkIHVuZG8gbWF4aW1pemF0aW9uL21pbmltaXphdGlvblxuICAgICAgICBpZiAoZW5hYmxlZCAmJiB0aGlzLnZpZXcoKS5wYXJ0KCkuaXNJbk1haW5BcmVhKSB7XG4gICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKGxheW91dCA9PiBsYXlvdXQudG9nZ2xlTWF4aW1pemVkKCkpLnRoZW4oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEhvc3RDc3NDbGFzc2VzKCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ2xhc3MgPSBpbmplY3QoTmdDbGFzcyk7XG4gICAgZWZmZWN0KCgpID0+IG5nQ2xhc3MubmdDbGFzcyA9IHRoaXMudmlldygpLmNsYXNzTGlzdC5hc0xpc3QoKSk7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbGxWaWV3TWVudUl0ZW1BY2NlbGVyYXRvcnMoKTogdm9pZCB7XG4gICAgdG9PYnNlcnZhYmxlKHRoaXMudmlldylcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAodmlldyA9PiB0aGlzLl92aWV3Q29udGV4dE1lbnVTZXJ2aWNlLmluc3RhbGxNZW51SXRlbUFjY2VsZXJhdG9ycyQodGhpcy5ob3N0LCB2aWV3KSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVWaWV3VGFiQ29udGVudFBvcnRhbCgpOiBTaWduYWw8Q29tcG9uZW50UG9ydGFsPHVua25vd24+PiB7XG4gICAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSB0aGlzLl93b3JrYmVuY2hDb25maWcudmlld1RhYkNvbXBvbmVudCB8fCBWaWV3VGFiQ29udGVudENvbXBvbmVudDtcbiAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbXBvbmVudFR5cGUsIG51bGwsIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3IsXG4gICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgIHtwcm92aWRlOiBXb3JrYmVuY2hWaWV3LCB1c2VWYWx1ZTogdGhpcy52aWV3KCl9LFxuICAgICAgICAgIHtwcm92aWRlOiBWSUVXX1RBQl9SRU5ERVJJTkdfQ09OVEVYVCwgdXNlVmFsdWU6ICd0YWInIHNhdGlzZmllcyBWaWV3VGFiUmVuZGVyaW5nQ29udGV4dH0sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbmRpY2F0ZXMgdGhhdCB0aGUgYXV4aWxhcnkgbW91c2UgYnV0dG9uIGlzIHByZXNzZWQgKHVzdWFsbHkgdGhlIG1vdXNlIHdoZWVsIGJ1dHRvbiBvciBtaWRkbGUgYnV0dG9uKS5cbiAqL1xuY29uc3QgQVVYSUxBUllfTU9VU0VfQlVUVE9OID0gNDtcbiIsIjwhLS0gSU1QT1JUQU5UOiBUSElTIEhUTUwgRklMRSBJUyBBTFNPIFVTRUQgQlkgYFZpZXdUYWJEcmFnSW1hZ2VDb21wb25lbnRgIC0tPlxuXG5AaWYgKHZpZXcoKS5hY3RpdmUoKSkge1xuICA8ZGl2IGNsYXNzPVwiY29ybmVyLXJhZGl1cyBzdGFydFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVcIj48L2Rpdj5cbiAgPC9kaXY+XG59XG5cbjxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gIDxuZy1jb250YWluZXIgKmNka1BvcnRhbE91dGxldD1cInZpZXdUYWJDb250ZW50UG9ydGFsKClcIi8+XG48L2Rpdj5cblxuQGlmICh2aWV3KCkuYWN0aXZlKCkpIHtcbiAgPGRpdiBjbGFzcz1cImNvcm5lci1yYWRpdXMgZW5kXCI+XG4gICAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuICA8L2Rpdj5cbn1cblxuQGlmICh2aWV3KCkuY2xvc2FibGUoKSkge1xuICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UgZTJlLWNsb3NlIHNjaW9uLXdvcmtiZW5jaC1pY29uc1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoJGV2ZW50KVwiPlxuICAgIGNsb3NlXG4gIDwvYnV0dG9uPlxufVxuIl19
@@ -8,7 +8,6 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
10
  import { Component, HostBinding, inject } from '@angular/core';
11
- import { NgIf } from '@angular/common';
12
11
  import { VIEW_TAB_RENDERING_CONTEXT } from '../../workbench.constants';
13
12
  import * as i0 from "@angular/core";
14
13
  import * as i1 from "../../view/workbench-view.model";
@@ -17,14 +16,14 @@ export class ViewTabContentComponent {
17
16
  this.view = view;
18
17
  this.context = inject(VIEW_TAB_RENDERING_CONTEXT);
19
18
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewTabContentComponent, deps: [{ token: i1.WorkbenchView }], target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ViewTabContentComponent, isStandalone: true, selector: "wb-view-tab-content", host: { properties: { "attr.context": "this.context" } }, ngImport: i0, template: "<span class=\"title e2e-title\">\n <span *ngIf=\"view.dirty\" class=\"scion-workbench-icons dirty e2e-dirty\">dirty</span>\n {{view.title}}\n</span>\n\n<span class=\"heading e2e-heading\" *ngIf=\"view.heading\">\n {{view.heading}}\n</span>\n", styles: [":host{display:flex;flex-direction:column;gap:.25em;overflow:hidden}:host>span.title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-weight:400;font-size:1em}:host>span.title>span.dirty{padding-right:.2em}:host>span.heading{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:.9em;font-weight:300}:host[context=tab] span.title,:host[context=drag-image] span.title{margin-right:1em}@container viewtab (height < 3.5rem){:host>span.heading{display:none}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabContentComponent, deps: [{ token: i1.WorkbenchView }], target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ViewTabContentComponent, isStandalone: true, selector: "wb-view-tab-content", host: { properties: { "attr.context": "this.context" } }, ngImport: i0, template: "<span class=\"title e2e-title\">\n @if (view.dirty()) {\n <span class=\"scion-workbench-icons dirty e2e-dirty\">dirty</span>\n }\n {{view.title()}}\n</span>\n\n@if (view.heading()) {\n <span class=\"heading e2e-heading\">\n {{view.heading()}}\n </span>\n}\n", styles: [":host{display:flex;flex-direction:column;gap:.25em;overflow:hidden}:host>span.title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-weight:400;font-size:1em}:host>span.title>span.dirty{padding-right:.2em}:host>span.heading{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:.9em;font-weight:300}:host[context=tab] span.title,:host[context=drag-image] span.title{margin-right:1em}@container viewtab (height < 3.5rem){:host>span.heading{display:none}}\n"] }); }
22
21
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewTabContentComponent, decorators: [{
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabContentComponent, decorators: [{
24
23
  type: Component,
25
- args: [{ selector: 'wb-view-tab-content', standalone: true, imports: [NgIf], template: "<span class=\"title e2e-title\">\n <span *ngIf=\"view.dirty\" class=\"scion-workbench-icons dirty e2e-dirty\">dirty</span>\n {{view.title}}\n</span>\n\n<span class=\"heading e2e-heading\" *ngIf=\"view.heading\">\n {{view.heading}}\n</span>\n", styles: [":host{display:flex;flex-direction:column;gap:.25em;overflow:hidden}:host>span.title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-weight:400;font-size:1em}:host>span.title>span.dirty{padding-right:.2em}:host>span.heading{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:.9em;font-weight:300}:host[context=tab] span.title,:host[context=drag-image] span.title{margin-right:1em}@container viewtab (height < 3.5rem){:host>span.heading{display:none}}\n"] }]
24
+ args: [{ selector: 'wb-view-tab-content', standalone: true, template: "<span class=\"title e2e-title\">\n @if (view.dirty()) {\n <span class=\"scion-workbench-icons dirty e2e-dirty\">dirty</span>\n }\n {{view.title()}}\n</span>\n\n@if (view.heading()) {\n <span class=\"heading e2e-heading\">\n {{view.heading()}}\n </span>\n}\n", styles: [":host{display:flex;flex-direction:column;gap:.25em;overflow:hidden}:host>span.title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-weight:400;font-size:1em}:host>span.title>span.dirty{padding-right:.2em}:host>span.heading{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:.9em;font-weight:300}:host[context=tab] span.title,:host[context=drag-image] span.title{margin-right:1em}@container viewtab (height < 3.5rem){:host>span.heading{display:none}}\n"] }]
26
25
  }], ctorParameters: () => [{ type: i1.WorkbenchView }], propDecorators: { context: [{
27
26
  type: HostBinding,
28
27
  args: ['attr.context']
29
28
  }] } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10YWItY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctdGFiLWNvbnRlbnQvdmlldy10YWItY29udGVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctdGFiLWNvbnRlbnQvdmlldy10YWItY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxFQUFDLDBCQUEwQixFQUEwQixNQUFNLDJCQUEyQixDQUFDOzs7QUFTOUYsTUFBTSxPQUFPLHVCQUF1QjtJQUtsQyxZQUFtQixJQUFtQjtRQUFuQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBRnRCLFlBQU8sR0FBRyxNQUFNLENBQTBCLDBCQUEwQixDQUFDLENBQUM7SUFHdEYsQ0FBQzs4R0FOVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qix5SUN0QnBDLHNQQVFBLDZoQkRZWSxJQUFJOzsyRkFFSCx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CLElBQUksV0FDUCxDQUFDLElBQUksQ0FBQztrRkFLQyxPQUFPO3NCQUR0QixXQUFXO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBIb3N0QmluZGluZywgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V29ya2JlbmNoVmlld30gZnJvbSAnLi4vLi4vdmlldy93b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5pbXBvcnQge05nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1ZJRVdfVEFCX1JFTkRFUklOR19DT05URVhULCBWaWV3VGFiUmVuZGVyaW5nQ29udGV4dH0gZnJvbSAnLi4vLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3diLXZpZXctdGFiLWNvbnRlbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy10YWItY29udGVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXctdGFiLWNvbnRlbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWZdLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3VGFiQ29udGVudENvbXBvbmVudCB7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmNvbnRleHQnKVxuICBwdWJsaWMgcmVhZG9ubHkgY29udGV4dCA9IGluamVjdDxWaWV3VGFiUmVuZGVyaW5nQ29udGV4dD4oVklFV19UQUJfUkVOREVSSU5HX0NPTlRFWFQpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2aWV3OiBXb3JrYmVuY2hWaWV3KSB7XG4gIH1cbn1cbiIsIjxzcGFuIGNsYXNzPVwidGl0bGUgZTJlLXRpdGxlXCI+XG4gIDxzcGFuICpuZ0lmPVwidmlldy5kaXJ0eVwiIGNsYXNzPVwic2Npb24td29ya2JlbmNoLWljb25zIGRpcnR5IGUyZS1kaXJ0eVwiPmRpcnR5PC9zcGFuPlxuICB7e3ZpZXcudGl0bGV9fVxuPC9zcGFuPlxuXG48c3BhbiBjbGFzcz1cImhlYWRpbmcgZTJlLWhlYWRpbmdcIiAqbmdJZj1cInZpZXcuaGVhZGluZ1wiPlxuICB7e3ZpZXcuaGVhZGluZ319XG48L3NwYW4+XG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10YWItY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctdGFiLWNvbnRlbnQvdmlldy10YWItY29udGVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctdGFiLWNvbnRlbnQvdmlldy10YWItY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUMsMEJBQTBCLEVBQTBCLE1BQU0sMkJBQTJCLENBQUM7OztBQVE5RixNQUFNLE9BQU8sdUJBQXVCO0lBS2xDLFlBQW1CLElBQW1CO1FBQW5CLFNBQUksR0FBSixJQUFJLENBQWU7UUFGdEIsWUFBTyxHQUFHLE1BQU0sQ0FBMEIsMEJBQTBCLENBQUMsQ0FBQztJQUd0RixDQUFDOzhHQU5VLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHlJQ3BCcEMsOFFBWUE7OzJGRFFhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FHbkIsSUFBSTtrRkFLQSxPQUFPO3NCQUR0QixXQUFXO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBIb3N0QmluZGluZywgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V29ya2JlbmNoVmlld30gZnJvbSAnLi4vLi4vdmlldy93b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5pbXBvcnQge1ZJRVdfVEFCX1JFTkRFUklOR19DT05URVhULCBWaWV3VGFiUmVuZGVyaW5nQ29udGV4dH0gZnJvbSAnLi4vLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3diLXZpZXctdGFiLWNvbnRlbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy10YWItY29udGVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXctdGFiLWNvbnRlbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVmlld1RhYkNvbnRlbnRDb21wb25lbnQge1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5jb250ZXh0JylcbiAgcHVibGljIHJlYWRvbmx5IGNvbnRleHQgPSBpbmplY3Q8Vmlld1RhYlJlbmRlcmluZ0NvbnRleHQ+KFZJRVdfVEFCX1JFTkRFUklOR19DT05URVhUKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlldzogV29ya2JlbmNoVmlldykge1xuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cInRpdGxlIGUyZS10aXRsZVwiPlxuICBAaWYgKHZpZXcuZGlydHkoKSkge1xuICAgIDxzcGFuIGNsYXNzPVwic2Npb24td29ya2JlbmNoLWljb25zIGRpcnR5IGUyZS1kaXJ0eVwiPmRpcnR5PC9zcGFuPlxuICB9XG4gIHt7dmlldy50aXRsZSgpfX1cbjwvc3Bhbj5cblxuQGlmICh2aWV3LmhlYWRpbmcoKSkge1xuICA8c3BhbiBjbGFzcz1cImhlYWRpbmcgZTJlLWhlYWRpbmdcIj5cbiAgICB7e3ZpZXcuaGVhZGluZygpfX1cbiAgPC9zcGFuPlxufVxuIl19