@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
@@ -7,22 +7,17 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { ChangeDetectionStrategy, Component, HostBinding, HostListener, Input, ViewChild } from '@angular/core';
11
- import { combineLatest, switchMap } from 'rxjs';
12
- import { map } from 'rxjs/operators';
13
- import { mapArray } from '@scion/toolkit/operators';
10
+ import { ChangeDetectionStrategy, Component, computed, HostBinding, HostListener, inject, Input, viewChild } from '@angular/core';
11
+ import { OverlayRef } from '@angular/cdk/overlay';
12
+ import { WORKBENCH_VIEW_REGISTRY } from '../../view/workbench-view.registry';
14
13
  import { FormControl, ReactiveFormsModule } from '@angular/forms';
15
14
  import { FilterFieldComponent } from '../../filter-field/filter-field.component';
16
- import { AsyncPipe, NgFor, NgIf } from '@angular/common';
17
- import { FilterByPredicatePipe } from '../../common/filter-by-predicate.pipe';
18
- import { FilterByTextPipe } from '../../common/filter-by-text.pipe';
15
+ import { WorkbenchPart } from '../workbench-part.model';
19
16
  import { SciViewportComponent } from '@scion/components/viewport';
20
17
  import { ViewListItemComponent } from '../view-list-item/view-list-item.component';
18
+ import { toSignal } from '@angular/core/rxjs-interop';
21
19
  import * as i0 from "@angular/core";
22
- import * as i1 from "../workbench-part.model";
23
- import * as i2 from "../../view/workbench-view.registry";
24
- import * as i3 from "@angular/cdk/overlay";
25
- import * as i4 from "@angular/forms";
20
+ import * as i1 from "@angular/forms";
26
21
  /**
27
22
  * Reference to inputs of {@link ViewListComponent}.
28
23
  */
@@ -36,33 +31,24 @@ export class ViewListComponent {
36
31
  get partId() {
37
32
  return this._part.id;
38
33
  }
39
- constructor(_part, viewRegistry, _overlayRef) {
40
- this._part = _part;
41
- this._overlayRef = _overlayRef;
34
+ constructor() {
35
+ this._filterFieldComponent = viewChild.required(FilterFieldComponent);
36
+ this._part = inject(WorkbenchPart);
37
+ this._overlayRef = inject(OverlayRef);
42
38
  this.filterFormControl = new FormControl('', { nonNullable: true });
43
- /**
44
- * Returns the filter text of given view.
45
- */
46
- this.viewTextFn = (view) => {
47
- return `${view.title ?? ''} ${view.heading ?? ''}`;
48
- };
49
- /**
50
- * Tests if given view is scrolled into view.
51
- */
52
- this.scrolledIntoViewFilterFn = (view) => {
53
- return view.scrolledIntoView;
54
- };
55
- /**
56
- * Tests if given view is scrolled out of view.
57
- */
58
- this.scrolledOutOfViewFilterFn = (view) => {
59
- return !view.scrolledIntoView;
60
- };
61
- this.views$ = this._part.viewIds$
62
- .pipe(mapArray(viewId => viewRegistry.get(viewId)), switchMap(views => combineLatest(views.map(view => view.scrolledIntoView$.pipe(map(() => view))))));
39
+ const viewRegistry = inject(WORKBENCH_VIEW_REGISTRY);
40
+ const filterText = toSignal(this.filterFormControl.valueChanges, { initialValue: this.filterFormControl.value });
41
+ this.viewsInsideTabbar = computed(() => this._part.viewIds()
42
+ .map(viewId => viewRegistry.get(viewId))
43
+ .filter(view => view.scrolledIntoView())
44
+ .filter(view => matchesView(filterText(), view)));
45
+ this.viewsOutsideTabbar = computed(() => this._part.viewIds()
46
+ .map(viewId => viewRegistry.get(viewId))
47
+ .filter(view => !view.scrolledIntoView())
48
+ .filter(view => matchesView(filterText(), view)));
63
49
  }
64
50
  ngOnInit() {
65
- this._filterFieldComponent.focus();
51
+ this._filterFieldComponent().focus();
66
52
  }
67
53
  onActivateView(view) {
68
54
  view.activate().then();
@@ -77,26 +63,18 @@ export class ViewListComponent {
77
63
  onDocumentCloseEvent() {
78
64
  this._overlayRef.dispose();
79
65
  }
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewListComponent, deps: [{ token: i1.WorkbenchPart }, { token: i2.WorkbenchViewRegistry }, { token: i3.OverlayRef }], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ViewListComponent, isStandalone: true, selector: "wb-view-list", inputs: { position: "position" }, host: { listeners: { "document:keydown.escape": "onEscape()", "mousedown": "onHostCloseEvent($event)", "sci-microfrontend-focusin": "onHostCloseEvent($event)", "document:mousedown": "onDocumentCloseEvent()", "document:sci-microfrontend-focusin": "onDocumentCloseEvent()" }, properties: { "class.south": "this.isSouthPosition", "attr.data-partid": "this.partId" } }, viewQueries: [{ propertyName: "_filterFieldComponent", first: true, predicate: FilterFieldComponent, descendants: true, static: true }], ngImport: i0, template: "<wb-filter-field [formControl]=\"filterFormControl\"/>\n<ng-container *ngIf=\"{\n scrolledOutOfView: views$ | async |\n wbFilterByPredicate:scrolledOutOfViewFilterFn |\n wbFilterByText$:filterFormControl:viewTextFn | async,\n scrolledIntoView: views$ | async |\n wbFilterByPredicate:scrolledIntoViewFilterFn |\n wbFilterByText$:filterFormControl:viewTextFn | async\n } as views\">\n <sci-viewport *ngIf=\"views.scrolledOutOfView?.length || views.scrolledIntoView?.length\">\n <wb-view-list-item *ngFor=\"let view of views.scrolledOutOfView\"\n [viewId]=\"view.id\"\n (click)=\"onActivateView(view)\">\n </wb-view-list-item>\n <hr *ngIf=\"views.scrolledOutOfView?.length && views.scrolledIntoView?.length\">\n <wb-view-list-item *ngFor=\"let view of views.scrolledIntoView\"\n [viewId]=\"view.id\"\n (click)=\"onActivateView(view)\">\n </wb-view-list-item>\n </sci-viewport>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;gap:.75em;width:var(--sci-workbench-contextmenu-width);border:1px solid var(--sci-color-border);color:var(--sci-color-text);background-color:var(--sci-color-background-elevation);border-radius:var(--sci-corner);overflow:hidden}:host.south{border-top:none}:host>wb-filter-field{flex:none;margin:.5em .25em}:host>sci-viewport{flex:auto;max-height:350px}:host>sci-viewport::part(content){display:flex;flex-direction:column;gap:1px;padding-top:1px}:host>sci-viewport>wb-view-list-item{position:relative}:host>sci-viewport>wb-view-list-item:hover{background-color:var(--sci-color-background-elevation-hover);box-shadow:0 0 0 1px var(--sci-color-border)}:host>sci-viewport>wb-view-list-item:has(+hr):after{position:absolute;left:0;right:0;bottom:-1px;height:1px;background-color:var(--sci-color-border);content:\"\"}:host>sci-viewport>hr{display:none}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: FilterFieldComponent, selector: "wb-filter-field", inputs: ["tabindex", "placeholder", "disabled"], outputs: ["filter"] }, { kind: "pipe", type: FilterByPredicatePipe, name: "wbFilterByPredicate" }, { kind: "pipe", type: FilterByTextPipe, name: "wbFilterByText$" }, { kind: "component", type: ViewListItemComponent, selector: "wb-view-list-item", inputs: ["viewId"] }, { kind: "component", type: SciViewportComponent, selector: "sci-viewport", inputs: ["scrollbarStyle"], outputs: ["scroll"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ViewListComponent, isStandalone: true, selector: "wb-view-list", inputs: { position: "position" }, host: { listeners: { "document:keydown.escape": "onEscape()", "mousedown": "onHostCloseEvent($event)", "sci-microfrontend-focusin": "onHostCloseEvent($event)", "document:mousedown": "onDocumentCloseEvent()", "document:sci-microfrontend-focusin": "onDocumentCloseEvent()" }, properties: { "class.south": "this.isSouthPosition", "attr.data-partid": "this.partId" } }, viewQueries: [{ propertyName: "_filterFieldComponent", first: true, predicate: FilterFieldComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<wb-filter-field [formControl]=\"filterFormControl\"/>\n\n@if (viewsOutsideTabbar().length || viewsInsideTabbar().length) {\n <sci-viewport>\n @for (view of viewsOutsideTabbar(); track view.id) {\n <wb-view-list-item [viewId]=\"view.id\" (click)=\"onActivateView(view)\"/>\n }\n @if (viewsOutsideTabbar().length && viewsInsideTabbar().length) {\n <hr>\n }\n @for (view of viewsInsideTabbar(); track view.id) {\n <wb-view-list-item [viewId]=\"view.id\" (click)=\"onActivateView(view)\"/>\n }\n </sci-viewport>\n}\n", styles: [":host{display:flex;flex-direction:column;gap:.75em;width:var(--sci-workbench-contextmenu-width);border:1px solid var(--sci-color-border);color:var(--sci-color-text);background-color:var(--sci-color-background-elevation);border-radius:var(--sci-corner);overflow:hidden}:host.south{border-top:none}:host>wb-filter-field{flex:none;margin:.5em .25em}:host>sci-viewport{flex:auto;max-height:350px}:host>sci-viewport::part(content){display:flex;flex-direction:column;gap:1px;padding-top:1px}:host>sci-viewport>wb-view-list-item{position:relative}:host>sci-viewport>wb-view-list-item:hover{background-color:var(--sci-color-background-elevation-hover);box-shadow:0 0 0 1px var(--sci-color-border)}:host>sci-viewport>wb-view-list-item:has(+hr):after{position:absolute;left:0;right:0;bottom:-1px;height:1px;background-color:var(--sci-color-border);content:\"\"}:host>sci-viewport>hr{display:none}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: FilterFieldComponent, selector: "wb-filter-field", inputs: ["tabindex", "placeholder", "disabled"], outputs: ["filter"] }, { kind: "component", type: ViewListItemComponent, selector: "wb-view-list-item", inputs: ["viewId"] }, { kind: "component", type: SciViewportComponent, selector: "sci-viewport", inputs: ["scrollbarStyle"], outputs: ["scroll"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
82
68
  }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewListComponent, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListComponent, decorators: [{
84
70
  type: Component,
85
71
  args: [{ selector: 'wb-view-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
86
- NgIf,
87
- NgFor,
88
- AsyncPipe,
89
72
  ReactiveFormsModule,
90
73
  FilterFieldComponent,
91
- FilterByPredicatePipe,
92
- FilterByTextPipe,
93
74
  ViewListItemComponent,
94
75
  SciViewportComponent,
95
- ], template: "<wb-filter-field [formControl]=\"filterFormControl\"/>\n<ng-container *ngIf=\"{\n scrolledOutOfView: views$ | async |\n wbFilterByPredicate:scrolledOutOfViewFilterFn |\n wbFilterByText$:filterFormControl:viewTextFn | async,\n scrolledIntoView: views$ | async |\n wbFilterByPredicate:scrolledIntoViewFilterFn |\n wbFilterByText$:filterFormControl:viewTextFn | async\n } as views\">\n <sci-viewport *ngIf=\"views.scrolledOutOfView?.length || views.scrolledIntoView?.length\">\n <wb-view-list-item *ngFor=\"let view of views.scrolledOutOfView\"\n [viewId]=\"view.id\"\n (click)=\"onActivateView(view)\">\n </wb-view-list-item>\n <hr *ngIf=\"views.scrolledOutOfView?.length && views.scrolledIntoView?.length\">\n <wb-view-list-item *ngFor=\"let view of views.scrolledIntoView\"\n [viewId]=\"view.id\"\n (click)=\"onActivateView(view)\">\n </wb-view-list-item>\n </sci-viewport>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;gap:.75em;width:var(--sci-workbench-contextmenu-width);border:1px solid var(--sci-color-border);color:var(--sci-color-text);background-color:var(--sci-color-background-elevation);border-radius:var(--sci-corner);overflow:hidden}:host.south{border-top:none}:host>wb-filter-field{flex:none;margin:.5em .25em}:host>sci-viewport{flex:auto;max-height:350px}:host>sci-viewport::part(content){display:flex;flex-direction:column;gap:1px;padding-top:1px}:host>sci-viewport>wb-view-list-item{position:relative}:host>sci-viewport>wb-view-list-item:hover{background-color:var(--sci-color-background-elevation-hover);box-shadow:0 0 0 1px var(--sci-color-border)}:host>sci-viewport>wb-view-list-item:has(+hr):after{position:absolute;left:0;right:0;bottom:-1px;height:1px;background-color:var(--sci-color-border);content:\"\"}:host>sci-viewport>hr{display:none}\n"] }]
96
- }], ctorParameters: () => [{ type: i1.WorkbenchPart }, { type: i2.WorkbenchViewRegistry }, { type: i3.OverlayRef }], propDecorators: { _filterFieldComponent: [{
97
- type: ViewChild,
98
- args: [FilterFieldComponent, { static: true }]
99
- }], position: [{
76
+ ], template: "<wb-filter-field [formControl]=\"filterFormControl\"/>\n\n@if (viewsOutsideTabbar().length || viewsInsideTabbar().length) {\n <sci-viewport>\n @for (view of viewsOutsideTabbar(); track view.id) {\n <wb-view-list-item [viewId]=\"view.id\" (click)=\"onActivateView(view)\"/>\n }\n @if (viewsOutsideTabbar().length && viewsInsideTabbar().length) {\n <hr>\n }\n @for (view of viewsInsideTabbar(); track view.id) {\n <wb-view-list-item [viewId]=\"view.id\" (click)=\"onActivateView(view)\"/>\n }\n </sci-viewport>\n}\n", styles: [":host{display:flex;flex-direction:column;gap:.75em;width:var(--sci-workbench-contextmenu-width);border:1px solid var(--sci-color-border);color:var(--sci-color-text);background-color:var(--sci-color-background-elevation);border-radius:var(--sci-corner);overflow:hidden}:host.south{border-top:none}:host>wb-filter-field{flex:none;margin:.5em .25em}:host>sci-viewport{flex:auto;max-height:350px}:host>sci-viewport::part(content){display:flex;flex-direction:column;gap:1px;padding-top:1px}:host>sci-viewport>wb-view-list-item{position:relative}:host>sci-viewport>wb-view-list-item:hover{background-color:var(--sci-color-background-elevation-hover);box-shadow:0 0 0 1px var(--sci-color-border)}:host>sci-viewport>wb-view-list-item:has(+hr):after{position:absolute;left:0;right:0;bottom:-1px;height:1px;background-color:var(--sci-color-border);content:\"\"}:host>sci-viewport>hr{display:none}\n"] }]
77
+ }], ctorParameters: () => [], propDecorators: { position: [{
100
78
  type: Input,
101
79
  args: [ViewListComponentInputs.POSITION]
102
80
  }], isSouthPosition: [{
@@ -121,4 +99,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
121
99
  type: HostListener,
122
100
  args: ['document:sci-microfrontend-focusin']
123
101
  }] } });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3BhcnQvdmlldy1saXN0L3ZpZXctbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctbGlzdC92aWV3LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0SCxPQUFPLEVBQUMsYUFBYSxFQUFjLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUUvRSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7O0FBRWpGOztHQUVHO0FBQ0gsTUFB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QUNyQixvQkFBb0I7cUJBQ3JCOytJQVFPLHFCQUFxQjtzQkFENUIsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBSXhDLFFBQVE7c0JBRGQsS0FBSzt1QkFBQyx1QkFBdUIsQ0FBQyxRQUFRO2dCQUk1QixlQUFlO3NCQUR6QixXQUFXO3VCQUFDLGFBQWE7Z0JBTWYsTUFBTTtzQkFEaEIsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBeUJ4QixRQUFRO3NCQURkLFlBQVk7dUJBQUMseUJBQXlCO2dCQU9oQyxnQkFBZ0I7c0JBRnRCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDcEMsWUFBWTt1QkFBQywyQkFBMkIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPOUMsb0JBQW9CO3NCQUYxQixZQUFZO3VCQUFDLG9CQUFvQjs7c0JBQ2pDLFlBQVk7dUJBQUMsb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge092ZXJsYXlSZWZ9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1dvcmtiZW5jaFZpZXdSZWdpc3RyeX0gZnJvbSAnLi4vLi4vdmlldy93b3JrYmVuY2gtdmlldy5yZWdpc3RyeSc7XG5pbXBvcnQge1dvcmtiZW5jaFZpZXd9IGZyb20gJy4uLy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHttYXBBcnJheX0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb3BlcmF0b3JzJztcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RmlsdGVyRmllbGRDb21wb25lbnR9IGZyb20gJy4uLy4uL2ZpbHRlci1maWVsZC9maWx0ZXItZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7V29ya2JlbmNoUGFydH0gZnJvbSAnLi4vd29ya2JlbmNoLXBhcnQubW9kZWwnO1xuaW1wb3J0IHtBc3luY1BpcGUsIE5nRm9yLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtGaWx0ZXJCeVByZWRpY2F0ZVBpcGV9IGZyb20gJy4uLy4uL2NvbW1vbi9maWx0ZXItYnktcHJlZGljYXRlLnBpcGUnO1xuaW1wb3J0IHtGaWx0ZXJCeVRleHRQaXBlfSBmcm9tICcuLi8uLi9jb21tb24vZmlsdGVyLWJ5LXRleHQucGlwZSc7XG5pbXBvcnQge1NjaVZpZXdwb3J0Q29tcG9uZW50fSBmcm9tICdAc2Npb24vY29tcG9uZW50cy92aWV3cG9ydCc7XG5pbXBvcnQge1ZpZXdMaXN0SXRlbUNvbXBvbmVudH0gZnJvbSAnLi4vdmlldy1saXN0LWl0ZW0vdmlldy1saXN0LWl0ZW0uY29tcG9uZW50JztcblxuLyoqXG4gKiBSZWZlcmVuY2UgdG8gaW5wdXRzIG9mIHtAbGluayBWaWV3TGlzdENvbXBvbmVudH0uXG4gKi9cbmV4cG9ydCBjb25zdCBWaWV3TGlzdENvbXBvbmVudElucHV0cyA9IHtcbiAgUE9TSVRJT046ICdwb3NpdGlvbicsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3Yi12aWV3LWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlldy1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBOZ0ZvcixcbiAgICBBc3luY1BpcGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGaWx0ZXJGaWVsZENvbXBvbmVudCxcbiAgICBGaWx0ZXJCeVByZWRpY2F0ZVBpcGUsXG4gICAgRmlsdGVyQnlUZXh0UGlwZSxcbiAgICBWaWV3TGlzdEl0ZW1Db21wb25lbnQsXG4gICAgU2NpVmlld3BvcnRDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgdmlld3MkOiBPYnNlcnZhYmxlPFdvcmtiZW5jaFZpZXdbXT47XG4gIHB1YmxpYyBmaWx0ZXJGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnLCB7bm9uTnVsbGFibGU6IHRydWV9KTtcblxuICBAVmlld0NoaWxkKEZpbHRlckZpZWxkQ29tcG9uZW50LCB7c3RhdGljOiB0cnVlfSlcbiAgcHJpdmF0ZSBfZmlsdGVyRmllbGRDb21wb25lbnQhOiBGaWx0ZXJGaWVsZENvbXBvbmVudDtcblxuICBASW5wdXQoVmlld0xpc3RDb21wb25lbnRJbnB1dHMuUE9TSVRJT04pXG4gIHB1YmxpYyBwb3NpdGlvbj86ICdub3J0aCcgfCAnc291dGgnIHwgdW5kZWZpbmVkO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc291dGgnKVxuICBwdWJsaWMgZ2V0IGlzU291dGhQb3NpdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbiA9PT0gJ3NvdXRoJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXBhcnRpZCcpXG4gIHB1YmxpYyBnZXQgcGFydElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnQuaWQ7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9wYXJ0OiBXb3JrYmVuY2hQYXJ0LFxuICAgICAgICAgICAgICB2aWV3UmVnaXN0cnk6IFdvcmtiZW5jaFZpZXdSZWdpc3RyeSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZikge1xuICAgIHRoaXMudmlld3MkID0gdGhpcy5fcGFydC52aWV3SWRzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcEFycmF5KHZpZXdJZCA9PiB2aWV3UmVnaXN0cnkuZ2V0KHZpZXdJZCkpLFxuICAgICAgICBzd2l0Y2hNYXAodmlld3MgPT4gY29tYmluZUxhdGVzdCh2aWV3cy5tYXAodmlldyA9PiB2aWV3LnNjcm9sbGVkSW50b1ZpZXckLnBpcGUobWFwKCgpID0+IHZpZXcpKSkpKSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsdGVyRmllbGRDb21wb25lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkFjdGl2YXRlVmlldyh2aWV3OiBXb3JrYmVuY2hWaWV3KTogdm9pZCB7XG4gICAgdmlldy5hY3RpdmF0ZSgpLnRoZW4oKTtcbiAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJylcbiAgcHVibGljIG9uRXNjYXBlKCk6IHZvaWQge1xuICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcignc2NpLW1pY3JvZnJvbnRlbmQtZm9jdXNpbicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbkhvc3RDbG9zZUV2ZW50KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBQcmV2ZW50IGNsb3NpbmcgdGhpcyBvdmVybGF5IGlmIGVtaXR0ZWQgZnJvbSBhIGNoaWxkIG9mIHRoaXMgb3ZlcmxheS5cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlZG93bicpXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnNjaS1taWNyb2Zyb250ZW5kLWZvY3VzaW4nKVxuICBwdWJsaWMgb25Eb2N1bWVudENsb3NlRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZmlsdGVyIHRleHQgb2YgZ2l2ZW4gdmlldy5cbiAgICovXG4gIHB1YmxpYyB2aWV3VGV4dEZuID0gKHZpZXc6IFdvcmtiZW5jaFZpZXcpOiBzdHJpbmcgPT4ge1xuICAgIHJldHVybiBgJHt2aWV3LnRpdGxlID8/ICcnfSAke3ZpZXcuaGVhZGluZyA/PyAnJ31gO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUZXN0cyBpZiBnaXZlbiB2aWV3IGlzIHNjcm9sbGVkIGludG8gdmlldy5cbiAgICovXG4gIHB1YmxpYyBzY3JvbGxlZEludG9WaWV3RmlsdGVyRm4gPSAodmlldzogV29ya2JlbmNoVmlldyk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiB2aWV3LnNjcm9sbGVkSW50b1ZpZXc7XG4gIH07XG5cbiAgLyoqXG4gICAqIFRlc3RzIGlmIGdpdmVuIHZpZXcgaXMgc2Nyb2xsZWQgb3V0IG9mIHZpZXcuXG4gICAqL1xuICBwdWJsaWMgc2Nyb2xsZWRPdXRPZlZpZXdGaWx0ZXJGbiA9ICh2aWV3OiBXb3JrYmVuY2hWaWV3KTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuICF2aWV3LnNjcm9sbGVkSW50b1ZpZXc7XG4gIH07XG59XG4iLCI8d2ItZmlsdGVyLWZpZWxkIFtmb3JtQ29udHJvbF09XCJmaWx0ZXJGb3JtQ29udHJvbFwiLz5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ7XG4gICAgc2Nyb2xsZWRPdXRPZlZpZXc6IHZpZXdzJCB8IGFzeW5jIHxcbiAgICAgICAgICAgICAgICAgICAgICAgd2JGaWx0ZXJCeVByZWRpY2F0ZTpzY3JvbGxlZE91dE9mVmlld0ZpbHRlckZuIHxcbiAgICAgICAgICAgICAgICAgICAgICAgd2JGaWx0ZXJCeVRleHQkOmZpbHRlckZvcm1Db250cm9sOnZpZXdUZXh0Rm4gfCBhc3luYyxcbiAgICBzY3JvbGxlZEludG9WaWV3OiB2aWV3cyQgfCBhc3luYyB8XG4gICAgICAgICAgICAgICAgICAgICAgd2JGaWx0ZXJCeVByZWRpY2F0ZTpzY3JvbGxlZEludG9WaWV3RmlsdGVyRm4gfFxuICAgICAgICAgICAgICAgICAgICAgIHdiRmlsdGVyQnlUZXh0JDpmaWx0ZXJGb3JtQ29udHJvbDp2aWV3VGV4dEZuIHwgYXN5bmNcbiAgfSBhcyB2aWV3c1wiPlxuICA8c2NpLXZpZXdwb3J0ICpuZ0lmPVwidmlld3Muc2Nyb2xsZWRPdXRPZlZpZXc/Lmxlbmd0aCB8fCB2aWV3cy5zY3JvbGxlZEludG9WaWV3Py5sZW5ndGhcIj5cbiAgICA8d2Itdmlldy1saXN0LWl0ZW0gKm5nRm9yPVwibGV0IHZpZXcgb2Ygdmlld3Muc2Nyb2xsZWRPdXRPZlZpZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICBbdmlld0lkXT1cInZpZXcuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25BY3RpdmF0ZVZpZXcodmlldylcIj5cbiAgICA8L3diLXZpZXctbGlzdC1pdGVtPlxuICAgIDxociAqbmdJZj1cInZpZXdzLnNjcm9sbGVkT3V0T2ZWaWV3Py5sZW5ndGggJiYgdmlld3Muc2Nyb2xsZWRJbnRvVmlldz8ubGVuZ3RoXCI+XG4gICAgPHdiLXZpZXctbGlzdC1pdGVtICpuZ0Zvcj1cImxldCB2aWV3IG9mIHZpZXdzLnNjcm9sbGVkSW50b1ZpZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICBbdmlld0lkXT1cInZpZXcuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25BY3RpdmF0ZVZpZXcodmlldylcIj5cbiAgICA8L3diLXZpZXctbGlzdC1pdGVtPlxuICA8L3NjaS12aWV3cG9ydD5cbjwvbmctY29udGFpbmVyPlxuIl19
102
+ /**
103
+ * Tests if given filter matches given view.
104
+ */
105
+ function matchesView(filterText, view) {
106
+ const viewText = `${view.title() ?? ''} ${view.heading() ?? ''}`;
107
+ return !filterText || !!viewText.match(toFilterRegExp(filterText));
108
+ }
109
+ /**
110
+ * Creates a regular expression of the given filter text.
111
+ */
112
+ function toFilterRegExp(filterText) {
113
+ // Escape the user input
114
+ const escapedString = filterText.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&');
115
+ return new RegExp(escapedString, 'i');
116
+ }
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3BhcnQvdmlldy1saXN0L3ZpZXctbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctbGlzdC92aWV3LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWtCLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoSixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFM0UsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNqRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7OztBQUVwRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ3JDLFFBQVEsRUFBRSxVQUFVO0NBQ3JCLENBQUM7QUFlRixNQUFNLE9BQU8saUJBQWlCO0lBZTVCLElBQ1csZUFBZTtRQUN4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QixDQUFDLFFBQVE7Z0JBSTVCLGVBQWU7c0JBRHpCLFdBQVc7dUJBQUMsYUFBYTtnQkFNZixNQUFNO3NCQURoQixXQUFXO3VCQUFDLGtCQUFrQjtnQkErQnhCLFFBQVE7c0JBRGQsWUFBWTt1QkFBQyx5QkFBeUI7Z0JBT2hDLGdCQUFnQjtzQkFGdEIsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNwQyxZQUFZO3VCQUFDLDJCQUEyQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU85QyxvQkFBb0I7c0JBRjFCLFlBQVk7dUJBQUMsb0JBQW9COztzQkFDakMsWUFBWTt1QkFBQyxvQ0FBb0M7O0FBTXBEOztHQUVHO0FBQ0gsU0FBUyxXQUFXLENBQUMsVUFBa0IsRUFBRSxJQUFtQjtJQUMxRCxNQUFNLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ2pFLE9BQU8sQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDckUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxjQUFjLENBQUMsVUFBa0I7SUFDeEMsd0JBQXdCO0lBQ3hCLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBTaWduYWwsIHZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge092ZXJsYXlSZWZ9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7V09SS0JFTkNIX1ZJRVdfUkVHSVNUUll9IGZyb20gJy4uLy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcucmVnaXN0cnknO1xuaW1wb3J0IHtXb3JrYmVuY2hWaWV3fSBmcm9tICcuLi8uLi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RmlsdGVyRmllbGRDb21wb25lbnR9IGZyb20gJy4uLy4uL2ZpbHRlci1maWVsZC9maWx0ZXItZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7V29ya2JlbmNoUGFydH0gZnJvbSAnLi4vd29ya2JlbmNoLXBhcnQubW9kZWwnO1xuaW1wb3J0IHtTY2lWaWV3cG9ydENvbXBvbmVudH0gZnJvbSAnQHNjaW9uL2NvbXBvbmVudHMvdmlld3BvcnQnO1xuaW1wb3J0IHtWaWV3TGlzdEl0ZW1Db21wb25lbnR9IGZyb20gJy4uL3ZpZXctbGlzdC1pdGVtL3ZpZXctbGlzdC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8qKlxuICogUmVmZXJlbmNlIHRvIGlucHV0cyBvZiB7QGxpbmsgVmlld0xpc3RDb21wb25lbnR9LlxuICovXG5leHBvcnQgY29uc3QgVmlld0xpc3RDb21wb25lbnRJbnB1dHMgPSB7XG4gIFBPU0lUSU9OOiAncG9zaXRpb24nLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2Itdmlldy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXctbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXctbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRmlsdGVyRmllbGRDb21wb25lbnQsXG4gICAgVmlld0xpc3RJdGVtQ29tcG9uZW50LFxuICAgIFNjaVZpZXdwb3J0Q29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHJpdmF0ZSBfZmlsdGVyRmllbGRDb21wb25lbnQgPSB2aWV3Q2hpbGQucmVxdWlyZWQoRmlsdGVyRmllbGRDb21wb25lbnQpO1xuICBwcml2YXRlIF9wYXJ0ID0gaW5qZWN0KFdvcmtiZW5jaFBhcnQpO1xuICBwcml2YXRlIF9vdmVybGF5UmVmID0gaW5qZWN0KE92ZXJsYXlSZWYpO1xuXG4gIC8qKiBWaWV3cyB0aGF0IGFyZSBzY3JvbGxlZCBpbnRvIHRoZSB0YWIgYmFyLiAqL1xuICBwcm90ZWN0ZWQgdmlld3NJbnNpZGVUYWJiYXI6IFNpZ25hbDxXb3JrYmVuY2hWaWV3W10+O1xuICAvKiogVmlld3MgdGhhdCBhcmUgc2Nyb2xsZWQgb3V0IG9mIHRoZSB0YWIgYmFyLiAqL1xuICBwcm90ZWN0ZWQgdmlld3NPdXRzaWRlVGFiYmFyOiBTaWduYWw8V29ya2JlbmNoVmlld1tdPjtcbiAgcHJvdGVjdGVkIGZpbHRlckZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycsIHtub25OdWxsYWJsZTogdHJ1ZX0pO1xuXG4gIEBJbnB1dChWaWV3TGlzdENvbXBvbmVudElucHV0cy5QT1NJVElPTilcbiAgcHVibGljIHBvc2l0aW9uPzogJ25vcnRoJyB8ICdzb3V0aCcgfCB1bmRlZmluZWQ7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zb3V0aCcpXG4gIHB1YmxpYyBnZXQgaXNTb3V0aFBvc2l0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uID09PSAnc291dGgnO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtcGFydGlkJylcbiAgcHVibGljIGdldCBwYXJ0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGFydC5pZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHZpZXdSZWdpc3RyeSA9IGluamVjdChXT1JLQkVOQ0hfVklFV19SRUdJU1RSWSk7XG4gICAgY29uc3QgZmlsdGVyVGV4dCA9IHRvU2lnbmFsKHRoaXMuZmlsdGVyRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLCB7aW5pdGlhbFZhbHVlOiB0aGlzLmZpbHRlckZvcm1Db250cm9sLnZhbHVlfSk7XG5cbiAgICB0aGlzLnZpZXdzSW5zaWRlVGFiYmFyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fcGFydC52aWV3SWRzKClcbiAgICAgIC5tYXAodmlld0lkID0+IHZpZXdSZWdpc3RyeS5nZXQodmlld0lkKSlcbiAgICAgIC5maWx0ZXIodmlldyA9PiB2aWV3LnNjcm9sbGVkSW50b1ZpZXcoKSlcbiAgICAgIC5maWx0ZXIodmlldyA9PiBtYXRjaGVzVmlldyhmaWx0ZXJUZXh0KCksIHZpZXcpKSxcbiAgICApO1xuICAgIHRoaXMudmlld3NPdXRzaWRlVGFiYmFyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fcGFydC52aWV3SWRzKClcbiAgICAgIC5tYXAodmlld0lkID0+IHZpZXdSZWdpc3RyeS5nZXQodmlld0lkKSlcbiAgICAgIC5maWx0ZXIodmlldyA9PiAhdmlldy5zY3JvbGxlZEludG9WaWV3KCkpXG4gICAgICAuZmlsdGVyKHZpZXcgPT4gbWF0Y2hlc1ZpZXcoZmlsdGVyVGV4dCgpLCB2aWV3KSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9maWx0ZXJGaWVsZENvbXBvbmVudCgpLmZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgb25BY3RpdmF0ZVZpZXcodmlldzogV29ya2JlbmNoVmlldyk6IHZvaWQge1xuICAgIHZpZXcuYWN0aXZhdGUoKS50aGVuKCk7XG4gICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScpXG4gIHB1YmxpYyBvbkVzY2FwZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3NjaS1taWNyb2Zyb250ZW5kLWZvY3VzaW4nLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25Ib3N0Q2xvc2VFdmVudChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gUHJldmVudCBjbG9zaW5nIHRoaXMgb3ZlcmxheSBpZiBlbWl0dGVkIGZyb20gYSBjaGlsZCBvZiB0aGlzIG92ZXJsYXkuXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZWRvd24nKVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpzY2ktbWljcm9mcm9udGVuZC1mb2N1c2luJylcbiAgcHVibGljIG9uRG9jdW1lbnRDbG9zZUV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICB9XG59XG5cbi8qKlxuICogVGVzdHMgaWYgZ2l2ZW4gZmlsdGVyIG1hdGNoZXMgZ2l2ZW4gdmlldy5cbiAqL1xuZnVuY3Rpb24gbWF0Y2hlc1ZpZXcoZmlsdGVyVGV4dDogc3RyaW5nLCB2aWV3OiBXb3JrYmVuY2hWaWV3KTogYm9vbGVhbiB7XG4gIGNvbnN0IHZpZXdUZXh0ID0gYCR7dmlldy50aXRsZSgpID8/ICcnfSAke3ZpZXcuaGVhZGluZygpID8/ICcnfWA7XG4gIHJldHVybiAhZmlsdGVyVGV4dCB8fCAhIXZpZXdUZXh0Lm1hdGNoKHRvRmlsdGVyUmVnRXhwKGZpbHRlclRleHQpKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVndWxhciBleHByZXNzaW9uIG9mIHRoZSBnaXZlbiBmaWx0ZXIgdGV4dC5cbiAqL1xuZnVuY3Rpb24gdG9GaWx0ZXJSZWdFeHAoZmlsdGVyVGV4dDogc3RyaW5nKTogUmVnRXhwIHtcbiAgLy8gRXNjYXBlIHRoZSB1c2VyIGlucHV0XG4gIGNvbnN0IGVzY2FwZWRTdHJpbmcgPSBmaWx0ZXJUZXh0LnJlcGxhY2UoL1stW1xcXS97fSgpKis/LlxcXFxeJHxdL2csICdcXFxcJCYnKTtcbiAgcmV0dXJuIG5ldyBSZWdFeHAoZXNjYXBlZFN0cmluZywgJ2knKTtcbn1cbiIsIjx3Yi1maWx0ZXItZmllbGQgW2Zvcm1Db250cm9sXT1cImZpbHRlckZvcm1Db250cm9sXCIvPlxuXG5AaWYgKHZpZXdzT3V0c2lkZVRhYmJhcigpLmxlbmd0aCB8fCB2aWV3c0luc2lkZVRhYmJhcigpLmxlbmd0aCkge1xuICA8c2NpLXZpZXdwb3J0PlxuICAgIEBmb3IgKHZpZXcgb2Ygdmlld3NPdXRzaWRlVGFiYmFyKCk7IHRyYWNrIHZpZXcuaWQpIHtcbiAgICAgIDx3Yi12aWV3LWxpc3QtaXRlbSBbdmlld0lkXT1cInZpZXcuaWRcIiAoY2xpY2spPVwib25BY3RpdmF0ZVZpZXcodmlldylcIi8+XG4gICAgfVxuICAgIEBpZiAodmlld3NPdXRzaWRlVGFiYmFyKCkubGVuZ3RoICYmIHZpZXdzSW5zaWRlVGFiYmFyKCkubGVuZ3RoKSB7XG4gICAgICA8aHI+XG4gICAgfVxuICAgIEBmb3IgKHZpZXcgb2Ygdmlld3NJbnNpZGVUYWJiYXIoKTsgdHJhY2sgdmlldy5pZCkge1xuICAgICAgPHdiLXZpZXctbGlzdC1pdGVtIFt2aWV3SWRdPVwidmlldy5pZFwiIChjbGljayk9XCJvbkFjdGl2YXRlVmlldyh2aWV3KVwiLz5cbiAgICB9XG4gIDwvc2NpLXZpZXdwb3J0PlxufVxuIl19
@@ -7,29 +7,28 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { Component, DestroyRef, HostListener, Injector } from '@angular/core';
11
- import { OverlayConfig, OverlayRef } from '@angular/cdk/overlay';
10
+ import { Component, computed, DestroyRef, ElementRef, HostListener, inject, Injector, NgZone } from '@angular/core';
11
+ import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';
12
12
  import { ComponentPortal } from '@angular/cdk/portal';
13
13
  import { ViewListComponent, ViewListComponentInputs } from '../view-list/view-list.component';
14
- import { mapArray, subscribeInside } from '@scion/toolkit/operators';
15
- import { combineLatest, switchMap } from 'rxjs';
16
- import { debounceTime, map } from 'rxjs/operators';
17
- import { AsyncPipe, NgIf } from '@angular/common';
14
+ import { WorkbenchPart } from '../workbench-part.model';
15
+ import { observeIn } from '@scion/toolkit/operators';
16
+ import { WORKBENCH_VIEW_REGISTRY } from '../../view/workbench-view.registry';
18
17
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
19
18
  import * as i0 from "@angular/core";
20
- import * as i1 from "@angular/cdk/overlay";
21
- import * as i2 from "../workbench-part.model";
22
- import * as i3 from "../../view/workbench-view.registry";
23
19
  export class ViewListButtonComponent {
24
20
  static { this.SOUTH = { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }; }
25
21
  static { this.NORTH = { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' }; }
26
- constructor(_host, _overlay, _injector, _zone, part, viewRegistry) {
27
- this._host = _host;
28
- this._overlay = _overlay;
29
- this._injector = _injector;
30
- this._zone = _zone;
31
- this.scrolledOutOfViewTabCount$ = part.viewIds$
32
- .pipe(mapArray(viewId => viewRegistry.get(viewId)), switchMap(views => combineLatest(views.map(view => view.scrolledIntoView$.pipe(map(() => view))))), map(views => views.reduce((count, view) => view.scrolledIntoView ? count : count + 1, 0)), debounceTime(25));
22
+ constructor() {
23
+ this._host = inject(ElementRef);
24
+ this._overlay = inject(Overlay);
25
+ this._injector = inject(Injector);
26
+ this._zone = inject(NgZone);
27
+ const part = inject(WorkbenchPart);
28
+ const viewRegistry = inject(WORKBENCH_VIEW_REGISTRY);
29
+ this.scrolledOutOfViewTabCount = computed(() => part.viewIds()
30
+ .map(viewId => viewRegistry.get(viewId))
31
+ .reduce((count, view) => view.scrolledIntoView() ? count : count + 1, 0));
33
32
  }
34
33
  onClick() {
35
34
  const positionStrategy = this._overlay.position()
@@ -53,9 +52,9 @@ export class ViewListButtonComponent {
53
52
  updatePositionInputOnPositionChange(componentRef, positionStrategy) {
54
53
  positionStrategy.positionChanges
55
54
  .pipe(
56
- // Run inside Angular as Angular CDK emits position changes outside the Angular zone.
55
+ // Ensure running inside Angular as Angular CDK emits position changes outside the Angular zone.
57
56
  // Otherwise, Angular would not invoke the `ngOnChanges` lifecycle hook when updating component input.
58
- subscribeInside(fn => this._zone.run(fn)), takeUntilDestroyed(componentRef.injector.get(DestroyRef)))
57
+ observeIn(fn => this._zone.run(fn)), takeUntilDestroyed(componentRef.injector.get(DestroyRef)))
59
58
  .subscribe(positionChange => {
60
59
  switch (positionChange.connectionPair) {
61
60
  case ViewListButtonComponent.NORTH:
@@ -70,17 +69,14 @@ export class ViewListButtonComponent {
70
69
  ngOnDestroy() {
71
70
  this._overlayRef?.dispose();
72
71
  }
73
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewListButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.Overlay }, { token: i0.Injector }, { token: i0.NgZone }, { token: i2.WorkbenchPart }, { token: i3.WorkbenchViewRegistry }], target: i0.ɵɵFactoryTarget.Component }); }
74
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ViewListButtonComponent, isStandalone: true, selector: "wb-view-list-button", host: { listeners: { "click": "onClick()" } }, ngImport: i0, template: "<span class=\"chevron scion-workbench-icons\">\n chevron_down\n</span>\n<span class=\"count\" *ngIf=\"scrolledOutOfViewTabCount$ | async as count\">{{count}}</span>\n", styles: [":host{display:flex;flex-direction:column;cursor:pointer;padding:.5em;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}:host>span.chevron{flex:none}:host>span.count{flex:none;font-size:var(--sci-workbench-part-hidden-tab-count-size)}@container style(--sci-workbench-part-hidden-tab-count-size: 0){:host>span.count{display:none}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
72
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
73
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ViewListButtonComponent, isStandalone: true, selector: "wb-view-list-button", host: { listeners: { "click": "onClick()" } }, ngImport: i0, template: "<span class=\"chevron scion-workbench-icons\">\n chevron_down\n</span>\n@if (scrolledOutOfViewTabCount(); as count) {\n <span class=\"count e2e-hidden-tab-count\">{{count}}</span>\n}\n", styles: [":host{display:flex;flex-direction:column;cursor:pointer;padding:.5em;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}:host>span.chevron{flex:none}:host>span.count{flex:none;font-size:var(--sci-workbench-part-hidden-tab-count-size)}@container style(--sci-workbench-part-hidden-tab-count-size: 0){:host>span.count{display:none}}\n"] }); }
75
74
  }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewListButtonComponent, decorators: [{
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListButtonComponent, decorators: [{
77
76
  type: Component,
78
- args: [{ selector: 'wb-view-list-button', standalone: true, imports: [
79
- NgIf,
80
- AsyncPipe,
81
- ], template: "<span class=\"chevron scion-workbench-icons\">\n chevron_down\n</span>\n<span class=\"count\" *ngIf=\"scrolledOutOfViewTabCount$ | async as count\">{{count}}</span>\n", styles: [":host{display:flex;flex-direction:column;cursor:pointer;padding:.5em;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}:host>span.chevron{flex:none}:host>span.count{flex:none;font-size:var(--sci-workbench-part-hidden-tab-count-size)}@container style(--sci-workbench-part-hidden-tab-count-size: 0){:host>span.count{display:none}}\n"] }]
82
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.Overlay }, { type: i0.Injector }, { type: i0.NgZone }, { type: i2.WorkbenchPart }, { type: i3.WorkbenchViewRegistry }], propDecorators: { onClick: [{
77
+ args: [{ selector: 'wb-view-list-button', standalone: true, template: "<span class=\"chevron scion-workbench-icons\">\n chevron_down\n</span>\n@if (scrolledOutOfViewTabCount(); as count) {\n <span class=\"count e2e-hidden-tab-count\">{{count}}</span>\n}\n", styles: [":host{display:flex;flex-direction:column;cursor:pointer;padding:.5em;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}:host>span.chevron{flex:none}:host>span.count{flex:none;font-size:var(--sci-workbench-part-hidden-tab-count-size)}@container style(--sci-workbench-part-hidden-tab-count-size: 0){:host>span.count{display:none}}\n"] }]
78
+ }], ctorParameters: () => [], propDecorators: { onClick: [{
83
79
  type: HostListener,
84
80
  args: ['click']
85
81
  }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1saXN0LWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctbGlzdC1idXR0b24vdmlldy1saXN0LWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctbGlzdC1idXR0b24vdmlldy1saXN0LWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQWdCLFVBQVUsRUFBYyxZQUFZLEVBQUUsUUFBUSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUN6SCxPQUFPLEVBQWdFLGFBQWEsRUFBRSxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5SCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGlCQUFpQixFQUFFLHVCQUF1QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFFNUYsT0FBTyxFQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsYUFBYSxFQUFjLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUMsWUFBWSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7O0FBWTlELE1BQU0sT0FBTyx1QkFBdUI7YUFFVixVQUFLLEdBQXNCLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQyxBQUEzRixDQUE0RjthQUNqRyxVQUFLLEdBQXNCLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBQyxBQUEzRixDQUE0RjtJQU16SCxZQUFvQixLQUFpQixFQUNqQixRQUFpQixFQUNqQixTQUFtQixFQUNuQixLQUFhLEVBQ3JCLElBQW1CLEVBQ25CLFlBQW1DO1FBTDNCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLFVBQUssR0FBTCxLQUFLLENBQVE7UUFHL0IsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxRQUFRO2FBQzVDLElBQUksQ0FDSCxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQzVDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbEcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ3pGLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FDakIsQ0FBQztJQUNOLENBQUM7SUFHTSxPQUFPO1FBQ1osTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTthQUM5QyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQy9CLHNCQUFzQixDQUFDLEtBQUssQ0FBQzthQUM3QixhQUFhLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVqRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksYUFBYSxDQUFDO1lBQ3hELGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUNyRCxtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLGdCQUFnQjtTQUNqQixDQUFDLENBQUMsQ0FBQztRQUVKLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksZUFBZSxDQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3hHLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUztZQUN0QixTQUFTLEVBQUUsQ0FBQyxFQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUMsQ0FBQztTQUMvRCxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7T0FFRztJQUNLLG1DQUFtQyxDQUFDLFlBQTZDLEVBQUUsZ0JBQW1EO1FBQzVJLGdCQUFnQixDQUFDLGVBQWU7YUFDN0IsSUFBSTtRQUNILHFGQUFxRjtRQUNyRixzR0FBc0c7UUFDdEcsZUFBZSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDekMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FDMUQ7YUFDQSxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDMUIsUUFBUSxjQUFjLENBQUMsY0FBYyxFQUFFO2dCQUNyQyxLQUFLLHVCQUF1QixDQUFDLEtBQUs7b0JBQ2hDLFlBQVksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUNqRSxNQUFNO2dCQUNSLEtBQUssdUJBQXVCLENBQUMsS0FBSztvQkFDaEMsWUFBWSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQ2pFLE1BQU07YUFDVDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM5QixDQUFDOzhHQXRFVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qiw4SENoQ3BDLHlLQUlBLHNhRHdCSSxJQUFJLHdGQUNKLFNBQVM7OzJGQUdBLHVCQUF1QjtrQkFWbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FHbkIsSUFBSSxXQUNQO3dCQUNQLElBQUk7d0JBQ0osU0FBUztxQkFDVjtpTkEyQk0sT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBDb21wb25lbnRSZWYsIERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIE5nWm9uZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29ubmVjdGVkUG9zaXRpb24sIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSwgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWx9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtWaWV3TGlzdENvbXBvbmVudCwgVmlld0xpc3RDb21wb25lbnRJbnB1dHN9IGZyb20gJy4uL3ZpZXctbGlzdC92aWV3LWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7V29ya2JlbmNoUGFydH0gZnJvbSAnLi4vd29ya2JlbmNoLXBhcnQubW9kZWwnO1xuaW1wb3J0IHttYXBBcnJheSwgc3Vic2NyaWJlSW5zaWRlfSBmcm9tICdAc2Npb24vdG9vbGtpdC9vcGVyYXRvcnMnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtXb3JrYmVuY2hWaWV3UmVnaXN0cnl9IGZyb20gJy4uLy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcucmVnaXN0cnknO1xuaW1wb3J0IHtBc3luY1BpcGUsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3Yi12aWV3LWxpc3QtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXctbGlzdC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92aWV3LWxpc3QtYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIEFzeW5jUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVmlld0xpc3RCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFNPVVRIOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ2JvdHRvbScsIG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICd0b3AnfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTk9SVEg6IENvbm5lY3RlZFBvc2l0aW9uID0ge29yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ2JvdHRvbSd9O1xuXG4gIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHNjcm9sbGVkT3V0T2ZWaWV3VGFiQ291bnQkOiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICAgICAgICBwcml2YXRlIF96b25lOiBOZ1pvbmUsXG4gICAgICAgICAgICAgIHBhcnQ6IFdvcmtiZW5jaFBhcnQsXG4gICAgICAgICAgICAgIHZpZXdSZWdpc3RyeTogV29ya2JlbmNoVmlld1JlZ2lzdHJ5KSB7XG4gICAgdGhpcy5zY3JvbGxlZE91dE9mVmlld1RhYkNvdW50JCA9IHBhcnQudmlld0lkcyRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXBBcnJheSh2aWV3SWQgPT4gdmlld1JlZ2lzdHJ5LmdldCh2aWV3SWQpKSxcbiAgICAgICAgc3dpdGNoTWFwKHZpZXdzID0+IGNvbWJpbmVMYXRlc3Qodmlld3MubWFwKHZpZXcgPT4gdmlldy5zY3JvbGxlZEludG9WaWV3JC5waXBlKG1hcCgoKSA9PiB2aWV3KSkpKSksXG4gICAgICAgIG1hcCh2aWV3cyA9PiB2aWV3cy5yZWR1Y2UoKGNvdW50LCB2aWV3KSA9PiB2aWV3LnNjcm9sbGVkSW50b1ZpZXcgPyBjb3VudCA6IGNvdW50ICsgMSwgMCkpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMjUpLFxuICAgICAgKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgcHVibGljIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX292ZXJsYXkucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5faG9zdClcbiAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgLndpdGhQb3NpdGlvbnMoW1ZpZXdMaXN0QnV0dG9uQ29tcG9uZW50LlNPVVRILCBWaWV3TGlzdEJ1dHRvbkNvbXBvbmVudC5OT1JUSF0pO1xuXG4gICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMubm9vcCgpLFxuICAgICAgZGlzcG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgfSkpO1xuXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5fb3ZlcmxheVJlZi5hdHRhY2gobmV3IENvbXBvbmVudFBvcnRhbChWaWV3TGlzdENvbXBvbmVudCwgbnVsbCwgSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IFt7cHJvdmlkZTogT3ZlcmxheVJlZiwgdXNlVmFsdWU6IHRoaXMuX292ZXJsYXlSZWZ9XSxcbiAgICB9KSkpO1xuXG4gICAgdGhpcy51cGRhdGVQb3NpdGlvbklucHV0T25Qb3NpdGlvbkNoYW5nZShjb21wb25lbnRSZWYsIHBvc2l0aW9uU3RyYXRlZ3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgJ3Bvc2l0aW9uJyBpbnB1dCBvZiB7QGxpbmsgVmlld0xpc3RDb21wb25lbnR9IHdoZW4gdGhlIG92ZXJsYXkgcG9zaXRpb24gY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlUG9zaXRpb25JbnB1dE9uUG9zaXRpb25DaGFuZ2UoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8Vmlld0xpc3RDb21wb25lbnQ+LCBwb3NpdGlvblN0cmF0ZWd5OiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpOiB2b2lkIHtcbiAgICBwb3NpdGlvblN0cmF0ZWd5LnBvc2l0aW9uQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIC8vIFJ1biBpbnNpZGUgQW5ndWxhciBhcyBBbmd1bGFyIENESyBlbWl0cyBwb3NpdGlvbiBjaGFuZ2VzIG91dHNpZGUgdGhlIEFuZ3VsYXIgem9uZS5cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBBbmd1bGFyIHdvdWxkIG5vdCBpbnZva2UgdGhlIGBuZ09uQ2hhbmdlc2AgbGlmZWN5Y2xlIGhvb2sgd2hlbiB1cGRhdGluZyBjb21wb25lbnQgaW5wdXQuXG4gICAgICAgIHN1YnNjcmliZUluc2lkZShmbiA9PiB0aGlzLl96b25lLnJ1bihmbikpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoY29tcG9uZW50UmVmLmluamVjdG9yLmdldChEZXN0cm95UmVmKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHBvc2l0aW9uQ2hhbmdlID0+IHtcbiAgICAgICAgc3dpdGNoIChwb3NpdGlvbkNoYW5nZS5jb25uZWN0aW9uUGFpcikge1xuICAgICAgICAgIGNhc2UgVmlld0xpc3RCdXR0b25Db21wb25lbnQuTk9SVEg6XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoVmlld0xpc3RDb21wb25lbnRJbnB1dHMuUE9TSVRJT04sICdub3J0aCcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBWaWV3TGlzdEJ1dHRvbkNvbXBvbmVudC5TT1VUSDpcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dChWaWV3TGlzdENvbXBvbmVudElucHV0cy5QT1NJVElPTiwgJ3NvdXRoJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fb3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cImNoZXZyb24gc2Npb24td29ya2JlbmNoLWljb25zXCI+XG4gIGNoZXZyb25fZG93blxuPC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwic2Nyb2xsZWRPdXRPZlZpZXdUYWJDb3VudCQgfCBhc3luYyBhcyBjb3VudFwiPnt7Y291bnR9fTwvc3Bhbj5cbiJdfQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1saXN0LWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctbGlzdC1idXR0b24vdmlldy1saXN0LWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctbGlzdC1idXR0b24vdmlldy1saXN0LWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQWdCLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDbkosT0FBTyxFQUF1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzlILE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDOztBQVE5RCxNQUFNLE9BQU8sdUJBQXVCO2FBRVYsVUFBSyxHQUFzQixFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEs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LEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQ2pFLE1BQU07Z0JBQ1IsS0FBSyx1QkFBdUIsQ0FBQyxLQUFLO29CQUNoQyxZQUFZLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDakUsTUFBTTtZQUNWLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDOUIsQ0FBQzs4R0FwRVUsdUJBQXVCO2tHQUF2Qix1QkFBdUIsOEhDekJwQyw0TEFNQTs7MkZEbUJhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FHbkIsSUFBSTt3REF5QlQsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBDb21wb25lbnRSZWYsIGNvbXB1dGVkLCBEZXN0cm95UmVmLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgSW5qZWN0b3IsIE5nWm9uZSwgT25EZXN0cm95LCBTaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb25uZWN0ZWRQb3NpdGlvbiwgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge0NvbXBvbmVudFBvcnRhbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1ZpZXdMaXN0Q29tcG9uZW50LCBWaWV3TGlzdENvbXBvbmVudElucHV0c30gZnJvbSAnLi4vdmlldy1saXN0L3ZpZXctbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHtXb3JrYmVuY2hQYXJ0fSBmcm9tICcuLi93b3JrYmVuY2gtcGFydC5tb2RlbCc7XG5pbXBvcnQge29ic2VydmVJbn0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb3BlcmF0b3JzJztcbmltcG9ydCB7V09SS0JFTkNIX1ZJRVdfUkVHSVNUUll9IGZyb20gJy4uLy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcucmVnaXN0cnknO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2Itdmlldy1saXN0LWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3LWxpc3QtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlldy1saXN0LWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3TGlzdEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgU09VVEg6IENvbm5lY3RlZFBvc2l0aW9uID0ge29yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ3RvcCd9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBOT1JUSDogQ29ubmVjdGVkUG9zaXRpb24gPSB7b3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICd0b3AnLCBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAnYm90dG9tJ307XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfaG9zdCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF96b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IHVuZGVmaW5lZDtcbiAgLyoqIE51bWJlciBvZiB2aWV3cyB0aGF0IGFyZSBzY3JvbGxlZCBvdXQgb2YgdGhlIHRhYiBiYXIuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxlZE91dE9mVmlld1RhYkNvdW50OiBTaWduYWw8bnVtYmVyPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBwYXJ0ID0gaW5qZWN0KFdvcmtiZW5jaFBhcnQpO1xuICAgIGNvbnN0IHZpZXdSZWdpc3RyeSA9IGluamVjdChXT1JLQkVOQ0hfVklFV19SRUdJU1RSWSk7XG4gICAgdGhpcy5zY3JvbGxlZE91dE9mVmlld1RhYkNvdW50ID0gY29tcHV0ZWQoKCkgPT4gcGFydC52aWV3SWRzKClcbiAgICAgIC5tYXAodmlld0lkID0+IHZpZXdSZWdpc3RyeS5nZXQodmlld0lkKSlcbiAgICAgIC5yZWR1Y2UoKGNvdW50LCB2aWV3KSA9PiB2aWV3LnNjcm9sbGVkSW50b1ZpZXcoKSA/IGNvdW50IDogY291bnQgKyAxLCAwKSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHB1YmxpYyBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuX2hvc3QpXG4gICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgIC53aXRoUG9zaXRpb25zKFtWaWV3TGlzdEJ1dHRvbkNvbXBvbmVudC5TT1VUSCwgVmlld0xpc3RCdXR0b25Db21wb25lbnQuTk9SVEhdKTtcblxuICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZShuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLm5vb3AoKSxcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgIH0pKTtcblxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuX292ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwoVmlld0xpc3RDb21wb25lbnQsIG51bGwsIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE92ZXJsYXlSZWYsIHVzZVZhbHVlOiB0aGlzLl9vdmVybGF5UmVmfV0sXG4gICAgfSkpKTtcblxuICAgIHRoaXMudXBkYXRlUG9zaXRpb25JbnB1dE9uUG9zaXRpb25DaGFuZ2UoY29tcG9uZW50UmVmLCBwb3NpdGlvblN0cmF0ZWd5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzICdwb3NpdGlvbicgaW5wdXQgb2Yge0BsaW5rIFZpZXdMaXN0Q29tcG9uZW50fSB3aGVuIHRoZSBvdmVybGF5IHBvc2l0aW9uIGNoYW5nZXMuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVBvc2l0aW9uSW5wdXRPblBvc2l0aW9uQ2hhbmdlKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFZpZXdMaXN0Q29tcG9uZW50PiwgcG9zaXRpb25TdHJhdGVneTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5KTogdm9pZCB7XG4gICAgcG9zaXRpb25TdHJhdGVneS5wb3NpdGlvbkNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICAvLyBFbnN1cmUgcnVubmluZyBpbnNpZGUgQW5ndWxhciBhcyBBbmd1bGFyIENESyBlbWl0cyBwb3NpdGlvbiBjaGFuZ2VzIG91dHNpZGUgdGhlIEFuZ3VsYXIgem9uZS5cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBBbmd1bGFyIHdvdWxkIG5vdCBpbnZva2UgdGhlIGBuZ09uQ2hhbmdlc2AgbGlmZWN5Y2xlIGhvb2sgd2hlbiB1cGRhdGluZyBjb21wb25lbnQgaW5wdXQuXG4gICAgICAgIG9ic2VydmVJbihmbiA9PiB0aGlzLl96b25lLnJ1bihmbikpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoY29tcG9uZW50UmVmLmluamVjdG9yLmdldChEZXN0cm95UmVmKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHBvc2l0aW9uQ2hhbmdlID0+IHtcbiAgICAgICAgc3dpdGNoIChwb3NpdGlvbkNoYW5nZS5jb25uZWN0aW9uUGFpcikge1xuICAgICAgICAgIGNhc2UgVmlld0xpc3RCdXR0b25Db21wb25lbnQuTk9SVEg6XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoVmlld0xpc3RDb21wb25lbnRJbnB1dHMuUE9TSVRJT04sICdub3J0aCcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBWaWV3TGlzdEJ1dHRvbkNvbXBvbmVudC5TT1VUSDpcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dChWaWV3TGlzdENvbXBvbmVudElucHV0cy5QT1NJVElPTiwgJ3NvdXRoJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fb3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cImNoZXZyb24gc2Npb24td29ya2JlbmNoLWljb25zXCI+XG4gIGNoZXZyb25fZG93blxuPC9zcGFuPlxuQGlmIChzY3JvbGxlZE91dE9mVmlld1RhYkNvdW50KCk7IGFzIGNvdW50KSB7XG4gIDxzcGFuIGNsYXNzPVwiY291bnQgZTJlLWhpZGRlbi10YWItY291bnRcIj57e2NvdW50fX08L3NwYW4+XG59XG4iXX0=
@@ -7,28 +7,27 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { ChangeDetectionStrategy, Component, HostBinding, Injector, Input } from '@angular/core';
10
+ import { ChangeDetectionStrategy, Component, HostBinding, inject, Injector, Input } from '@angular/core';
11
11
  import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
12
+ import { WORKBENCH_VIEW_REGISTRY } from '../../view/workbench-view.registry';
12
13
  import { ViewTabContentComponent } from '../view-tab-content/view-tab-content.component';
13
- import { NgIf } from '@angular/common';
14
+ import { WorkbenchConfig } from '../../workbench-config';
14
15
  import { WorkbenchView } from '../../view/workbench-view.model';
15
16
  import { VIEW_TAB_RENDERING_CONTEXT } from '../../workbench.constants';
16
17
  import * as i0 from "@angular/core";
17
- import * as i1 from "../../view/workbench-view.registry";
18
- import * as i2 from "../../workbench-config";
19
- import * as i3 from "@angular/cdk/portal";
18
+ import * as i1 from "@angular/cdk/portal";
20
19
  export class ViewListItemComponent {
20
+ constructor() {
21
+ this._viewRegistry = inject(WORKBENCH_VIEW_REGISTRY);
22
+ this._workbenchConfig = inject(WorkbenchConfig);
23
+ this._injector = inject(Injector);
24
+ }
21
25
  set viewId(viewId) {
22
26
  this.view = this._viewRegistry.get(viewId);
23
27
  this.viewTabContentPortal = this.createViewTabContentPortal();
24
28
  }
25
- constructor(_viewRegistry, _workbenchConfig, _injector) {
26
- this._viewRegistry = _viewRegistry;
27
- this._workbenchConfig = _workbenchConfig;
28
- this._injector = _injector;
29
- }
30
29
  get active() {
31
- return this.view.active;
30
+ return this.view.active();
32
31
  }
33
32
  onClose() {
34
33
  this.view.close().then();
@@ -43,20 +42,19 @@ export class ViewListItemComponent {
43
42
  ],
44
43
  }));
45
44
  }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewListItemComponent, deps: [{ token: i1.WorkbenchViewRegistry }, { token: i2.WorkbenchConfig }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
47
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ViewListItemComponent, isStandalone: true, selector: "wb-view-list-item", inputs: { viewId: "viewId" }, host: { properties: { "class.active": "this.active" } }, ngImport: i0, template: "<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal\"></ng-container>\n</div>\n\n<button *ngIf=\"view.closable\"\n class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose()\">\n close\n</button>\n", styles: [":host{display:flex;align-items:center;padding:.6em 1em;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;gap:1em}:host.active{color:var(--sci-color-accent)}:host.active:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:3px;background-color:var(--sci-color-accent)}:host>div.content{flex:auto;display:grid;position:relative}:host>button.close{all:unset;flex:none;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);opacity:.75}:host>button.close:hover{opacity:1;background-color:var(--sci-color-background-elevation-hover)}:host:hover>button.close{visibility:visible}\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
45
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ViewListItemComponent, isStandalone: true, selector: "wb-view-list-item", inputs: { viewId: "viewId" }, host: { properties: { "class.active": "this.active" } }, ngImport: i0, template: "<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal\"/>\n</div>\n\n@if (view.closable()) {\n <button class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose()\">\n close\n </button>\n}\n", styles: [":host{display:flex;align-items:center;padding:.6em 1em;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;gap:1em}:host.active{color:var(--sci-color-accent)}:host.active:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:3px;background-color:var(--sci-color-accent)}:host>div.content{flex:auto;display:grid;position:relative}:host>button.close{all:unset;flex:none;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);opacity:.75}:host>button.close:hover{opacity:1;background-color:var(--sci-color-background-elevation-hover)}:host:hover>button.close{visibility:visible}\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
48
47
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ViewListItemComponent, decorators: [{
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListItemComponent, decorators: [{
50
49
  type: Component,
51
50
  args: [{ selector: 'wb-view-list-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
52
51
  PortalModule,
53
- NgIf,
54
- ], template: "<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal\"></ng-container>\n</div>\n\n<button *ngIf=\"view.closable\"\n class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose()\">\n close\n</button>\n", styles: [":host{display:flex;align-items:center;padding:.6em 1em;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;gap:1em}:host.active{color:var(--sci-color-accent)}:host.active:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:3px;background-color:var(--sci-color-accent)}:host>div.content{flex:auto;display:grid;position:relative}:host>button.close{all:unset;flex:none;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);opacity:.75}:host>button.close:hover{opacity:1;background-color:var(--sci-color-background-elevation-hover)}:host:hover>button.close{visibility:visible}\n"] }]
55
- }], ctorParameters: () => [{ type: i1.WorkbenchViewRegistry }, { type: i2.WorkbenchConfig }, { type: i0.Injector }], propDecorators: { viewId: [{
52
+ ], template: "<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal\"/>\n</div>\n\n@if (view.closable()) {\n <button class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose()\">\n close\n </button>\n}\n", styles: [":host{display:flex;align-items:center;padding:.6em 1em;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;gap:1em}:host.active{color:var(--sci-color-accent)}:host.active:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:3px;background-color:var(--sci-color-accent)}:host>div.content{flex:auto;display:grid;position:relative}:host>button.close{all:unset;flex:none;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);opacity:.75}:host>button.close:hover{opacity:1;background-color:var(--sci-color-background-elevation-hover)}:host:hover>button.close{visibility:visible}\n"] }]
53
+ }], propDecorators: { viewId: [{
56
54
  type: Input,
57
55
  args: [{ required: true }]
58
56
  }], active: [{
59
57
  type: HostBinding,
60
58
  args: ['class.active']
61
59
  }] } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGFydC92aWV3LWxpc3QtaXRlbS92aWV3LWxpc3QtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctbGlzdC1pdGVtL3ZpZXctbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUMsZUFBZSxFQUFFLFlBQVksRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBR2xFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUVyQyxPQUFPLEVBQVMsYUFBYSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFDLDBCQUEwQixFQUEwQixNQUFNLDJCQUEyQixDQUFDOzs7OztBQWE5RixNQUFNLE9BQU8scUJBQXFCO0lBS2hDLElBQ1csTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVELFlBQW9CLGFBQW9DLEVBQ3BDLGdCQUFpQyxFQUNqQyxTQUFtQjtRQUZuQixrQkFBYSxHQUFiLGFBQWEsQ0FBdUI7UUFDcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxjQUFTLEdBQVQsU0FBUyxDQUFVO0lBQ3ZDLENBQUM7SUFFRCxJQUNXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzFCLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8sMEJBQTBCO1FBQ2hDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsSUFBSSx1QkFBdUIsQ0FBQztRQUN4RixPQUFPLElBQUksZUFBZSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUM5RCxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDdEIsU0FBUyxFQUFFO2dCQUNULEVBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBQztnQkFDN0MsRUFBQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxFQUFFLFdBQTZDLEVBQUM7YUFDL0Y7U0FDRixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7OEdBbENVLHFCQUFxQjtrR0FBckIscUJBQXFCLG9LQy9CbEMsOFBBU0EsNHJCRGtCSSxZQUFZLGtNQUNaLElBQUk7OzJGQUdLLHFCQUFxQjtrQkFYakMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixJQUFJO3FCQUNMOytJQVFVLE1BQU07c0JBRGhCLEtBQUs7dUJBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDO2dCQVlaLE1BQU07c0JBRGhCLFdBQVc7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5qZWN0b3IsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tcG9uZW50UG9ydGFsLCBQb3J0YWxNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaFZpZXd9IGZyb20gJy4uLy4uL3ZpZXcvybV3b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5pbXBvcnQge1dvcmtiZW5jaFZpZXdSZWdpc3RyeX0gZnJvbSAnLi4vLi4vdmlldy93b3JrYmVuY2gtdmlldy5yZWdpc3RyeSc7XG5pbXBvcnQge1ZpZXdUYWJDb250ZW50Q29tcG9uZW50fSBmcm9tICcuLi92aWV3LXRhYi1jb250ZW50L3ZpZXctdGFiLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7TmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7V29ya2JlbmNoQ29uZmlnfSBmcm9tICcuLi8uLi93b3JrYmVuY2gtY29uZmlnJztcbmltcG9ydCB7Vmlld0lkLCBXb3JrYmVuY2hWaWV3fSBmcm9tICcuLi8uLi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcbmltcG9ydCB7VklFV19UQUJfUkVOREVSSU5HX0NPTlRFWFQsIFZpZXdUYWJSZW5kZXJpbmdDb250ZXh0fSBmcm9tICcuLi8uLi93b3JrYmVuY2guY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2Itdmlldy1saXN0LWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92aWV3LWxpc3QtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFBvcnRhbE1vZHVsZSxcbiAgICBOZ0lmLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3TGlzdEl0ZW1Db21wb25lbnQge1xuXG4gIHB1YmxpYyB2aWV3ITogybVXb3JrYmVuY2hWaWV3O1xuICBwdWJsaWMgdmlld1RhYkNvbnRlbnRQb3J0YWwhOiBDb21wb25lbnRQb3J0YWw8dW5rbm93bj47XG5cbiAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pXG4gIHB1YmxpYyBzZXQgdmlld0lkKHZpZXdJZDogVmlld0lkKSB7XG4gICAgdGhpcy52aWV3ID0gdGhpcy5fdmlld1JlZ2lzdHJ5LmdldCh2aWV3SWQpO1xuICAgIHRoaXMudmlld1RhYkNvbnRlbnRQb3J0YWwgPSB0aGlzLmNyZWF0ZVZpZXdUYWJDb250ZW50UG9ydGFsKCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF92aWV3UmVnaXN0cnk6IFdvcmtiZW5jaFZpZXdSZWdpc3RyeSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfd29ya2JlbmNoQ29uZmlnOiBXb3JrYmVuY2hDb25maWcsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3Rvcikge1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY3RpdmUnKVxuICBwdWJsaWMgZ2V0IGFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52aWV3LmFjdGl2ZTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMudmlldy5jbG9zZSgpLnRoZW4oKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVmlld1RhYkNvbnRlbnRQb3J0YWwoKTogQ29tcG9uZW50UG9ydGFsPHVua25vd24+IHtcbiAgICBjb25zdCBjb21wb25lbnRUeXBlID0gdGhpcy5fd29ya2JlbmNoQ29uZmlnLnZpZXdUYWJDb21wb25lbnQgfHwgVmlld1RhYkNvbnRlbnRDb21wb25lbnQ7XG4gICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoY29tcG9uZW50VHlwZSwgbnVsbCwgSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge3Byb3ZpZGU6IFdvcmtiZW5jaFZpZXcsIHVzZVZhbHVlOiB0aGlzLnZpZXd9LFxuICAgICAgICB7cHJvdmlkZTogVklFV19UQUJfUkVOREVSSU5HX0NPTlRFWFQsIHVzZVZhbHVlOiAnbGlzdC1pdGVtJyBzYXRpc2ZpZXMgVmlld1RhYlJlbmRlcmluZ0NvbnRleHR9LFxuICAgICAgXSxcbiAgICB9KSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gIDxuZy1jb250YWluZXIgKmNka1BvcnRhbE91dGxldD1cInZpZXdUYWJDb250ZW50UG9ydGFsXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPGJ1dHRvbiAqbmdJZj1cInZpZXcuY2xvc2FibGVcIlxuICAgICAgICBjbGFzcz1cImNsb3NlIGUyZS1jbG9zZSBzY2lvbi13b3JrYmVuY2gtaWNvbnNcIlxuICAgICAgICAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gIGNsb3NlXG48L2J1dHRvbj5cbiJdfQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGFydC92aWV3LWxpc3QtaXRlbS92aWV3LWxpc3QtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctbGlzdC1pdGVtL3ZpZXctbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFTLGFBQWEsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQywwQkFBMEIsRUFBMEIsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBWTlGLE1BQU0sT0FBTyxxQkFBcUI7SUFWbEM7UUFZbUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0MsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztLQThCL0M7SUF6QkMsSUFDVyxNQUFNLENBQUMsTUFBYztRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUNoRSxDQUFDO0lBRUQsSUFDVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8sMEJBQTBCO1FBQ2hDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsSUFBSSx1QkFBdUIsQ0FBQztRQUN4RixPQUFPLElBQUksZUFBZSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUM5RCxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDdEIsU0FBUyxFQUFFO2dCQUNULEVBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBQztnQkFDN0MsRUFBQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxFQUFFLFdBQTZDLEVBQUM7YUFDL0Y7U0FDRixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7OEdBakNVLHFCQUFxQjtrR0FBckIscUJBQXFCLG9LQzdCbEMsbVBBVUEsNHJCRGdCSSxZQUFZOzsyRkFHSCxxQkFBcUI7a0JBVmpDLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7cUJBQ2I7OEJBWVUsTUFBTTtzQkFEaEIsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7Z0JBT1osTUFBTTtzQkFEaEIsV0FBVzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBpbmplY3QsIEluamVjdG9yLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbXBvbmVudFBvcnRhbCwgUG9ydGFsTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7ybVXb3JrYmVuY2hWaWV3fSBmcm9tICcuLi8uLi92aWV3L8m1d29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtXT1JLQkVOQ0hfVklFV19SRUdJU1RSWX0gZnJvbSAnLi4vLi4vdmlldy93b3JrYmVuY2gtdmlldy5yZWdpc3RyeSc7XG5pbXBvcnQge1ZpZXdUYWJDb250ZW50Q29tcG9uZW50fSBmcm9tICcuLi92aWV3LXRhYi1jb250ZW50L3ZpZXctdGFiLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7V29ya2JlbmNoQ29uZmlnfSBmcm9tICcuLi8uLi93b3JrYmVuY2gtY29uZmlnJztcbmltcG9ydCB7Vmlld0lkLCBXb3JrYmVuY2hWaWV3fSBmcm9tICcuLi8uLi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcbmltcG9ydCB7VklFV19UQUJfUkVOREVSSU5HX0NPTlRFWFQsIFZpZXdUYWJSZW5kZXJpbmdDb250ZXh0fSBmcm9tICcuLi8uLi93b3JrYmVuY2guY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2Itdmlldy1saXN0LWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92aWV3LWxpc3QtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFBvcnRhbE1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVmlld0xpc3RJdGVtQ29tcG9uZW50IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3UmVnaXN0cnkgPSBpbmplY3QoV09SS0JFTkNIX1ZJRVdfUkVHSVNUUlkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF93b3JrYmVuY2hDb25maWcgPSBpbmplY3QoV29ya2JlbmNoQ29uZmlnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIHB1YmxpYyB2aWV3ITogybVXb3JrYmVuY2hWaWV3O1xuICBwdWJsaWMgdmlld1RhYkNvbnRlbnRQb3J0YWwhOiBDb21wb25lbnRQb3J0YWw8dW5rbm93bj47XG5cbiAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pXG4gIHB1YmxpYyBzZXQgdmlld0lkKHZpZXdJZDogVmlld0lkKSB7XG4gICAgdGhpcy52aWV3ID0gdGhpcy5fdmlld1JlZ2lzdHJ5LmdldCh2aWV3SWQpO1xuICAgIHRoaXMudmlld1RhYkNvbnRlbnRQb3J0YWwgPSB0aGlzLmNyZWF0ZVZpZXdUYWJDb250ZW50UG9ydGFsKCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjdGl2ZScpXG4gIHB1YmxpYyBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZpZXcuYWN0aXZlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXcuY2xvc2UoKS50aGVuKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVZpZXdUYWJDb250ZW50UG9ydGFsKCk6IENvbXBvbmVudFBvcnRhbDx1bmtub3duPiB7XG4gICAgY29uc3QgY29tcG9uZW50VHlwZSA9IHRoaXMuX3dvcmtiZW5jaENvbmZpZy52aWV3VGFiQ29tcG9uZW50IHx8IFZpZXdUYWJDb250ZW50Q29tcG9uZW50O1xuICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbXBvbmVudFR5cGUsIG51bGwsIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtwcm92aWRlOiBXb3JrYmVuY2hWaWV3LCB1c2VWYWx1ZTogdGhpcy52aWV3fSxcbiAgICAgICAge3Byb3ZpZGU6IFZJRVdfVEFCX1JFTkRFUklOR19DT05URVhULCB1c2VWYWx1ZTogJ2xpc3QtaXRlbScgc2F0aXNmaWVzIFZpZXdUYWJSZW5kZXJpbmdDb250ZXh0fSxcbiAgICAgIF0sXG4gICAgfSkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICA8bmctY29udGFpbmVyICpjZGtQb3J0YWxPdXRsZXQ9XCJ2aWV3VGFiQ29udGVudFBvcnRhbFwiLz5cbjwvZGl2PlxuXG5AaWYgKHZpZXcuY2xvc2FibGUoKSkge1xuICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UgZTJlLWNsb3NlIHNjaW9uLXdvcmtiZW5jaC1pY29uc1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuICAgIGNsb3NlXG4gIDwvYnV0dG9uPlxufVxuIl19