@scion/workbench 18.0.0-beta.1 → 18.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_index.scss +7 -5
- package/design/_workbench-global-styles.scss +18 -0
- package/design/_workbench-icon-font.scss +1 -1
- package/design/_workbench-popup-global-styles.scss +1 -1
- package/design/{_workbench-view-drag-image-global-styles.scss → _workbench-view-global-styles.scss} +1 -2
- package/esm2022/lib/common/class-list.mjs +67 -29
- package/esm2022/lib/common/math.util.mjs +16 -0
- package/esm2022/lib/common/objects.util.mjs +7 -1
- package/esm2022/lib/common/operators.mjs +1 -12
- package/esm2022/lib/common/uid.util.mjs +22 -0
- package/esm2022/lib/content-projection/content-as-overlay.component.mjs +85 -28
- package/esm2022/lib/content-projection/workbench-element-references.mjs +32 -0
- package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +3 -8
- package/esm2022/lib/dialog/movable.directive.mjs +3 -3
- package/esm2022/lib/dialog/resizable.directive.mjs +3 -3
- package/esm2022/lib/dialog/workbench-dialog.component.mjs +25 -23
- package/esm2022/lib/dialog/workbench-dialog.mjs +61 -1
- package/esm2022/lib/dialog//311/265workbench-dialog.mjs +98 -60
- package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +26 -23
- package/esm2022/lib/executor/latest-task-executor.mjs +55 -0
- package/esm2022/lib/executor/single-task-executor.mjs +9 -19
- package/esm2022/lib/filter-field/filter-field.component.mjs +5 -5
- package/esm2022/lib/layout/grid-element/grid-element.component.mjs +8 -18
- package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +18 -21
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +11 -0
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v6.model.mjs +11 -0
- package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +4 -4
- package/esm2022/lib/layout/migration/workbench-layout-migration-v5.service.mjs +67 -0
- package/esm2022/lib/layout/migration/workbench-layout-migration-v6.service.mjs +59 -0
- package/esm2022/lib/layout/stringifier.mjs +70 -0
- package/esm2022/lib/layout/workbench-layout.component.mjs +18 -22
- package/esm2022/lib/layout/workbench-layout.mjs +1 -1
- package/esm2022/lib/layout/workbench-layout.model.mjs +1 -1
- package/esm2022/lib/layout/workbench-layout.service.mjs +26 -24
- package/esm2022/lib/layout/workbench-layouts.util.mjs +1 -9
- package/esm2022/lib/layout/workench-layout-serializer.service.mjs +19 -27
- package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +3 -2
- package/esm2022/lib/layout//311/265workbench-layout.mjs +73 -62
- package/esm2022/lib/logging/logging-support.mjs +7 -13
- package/esm2022/lib/logging//311/265logger.mjs +10 -10
- package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +7 -6
- package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +3 -3
- package/esm2022/lib/message-box/workbench-message-box.component.mjs +2 -2
- package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +3 -2
- package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +22 -6
- package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +28 -21
- package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +11 -1
- package/esm2022/lib/microfrontend-platform/manifest-object-cache.service.mjs +63 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +5 -4
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +6 -10
- package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +18 -9
- package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +7 -6
- package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +15 -13
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +3 -2
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +6 -11
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.mjs +39 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.mjs +120 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.mjs +55 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.mjs +19 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +4 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +11 -12
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +12 -28
- package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +11 -27
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +91 -71
- package/esm2022/lib/microfrontend-platform/public_api.mjs +2 -1
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +5 -4
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +18 -16
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +30 -8
- package/esm2022/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.mjs +32 -0
- package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +26 -8
- package/esm2022/lib/notification/notification-list.component.mjs +4 -8
- package/esm2022/lib/notification/notification.component.mjs +4 -5
- package/esm2022/lib/notification/notification.service.mjs +5 -4
- package/esm2022/lib/page-not-found/page-not-found.component.mjs +5 -7
- package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +11 -19
- package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +4 -4
- package/esm2022/lib/part/part-bar/part-bar.component.mjs +333 -264
- package/esm2022/lib/part/part-portal.pipe.mjs +8 -8
- package/esm2022/lib/part/part.component.mjs +33 -42
- package/esm2022/lib/part/view-context-menu/text.component.mjs +16 -12
- package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +4 -6
- package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +2 -2
- package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +48 -49
- package/esm2022/lib/part/view-list/view-list.component.mjs +41 -48
- package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +22 -26
- package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +15 -17
- package/esm2022/lib/part/view-tab/view-tab.component.mjs +99 -110
- package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +3 -4
- package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +16 -17
- package/esm2022/lib/part/workbench-part-action.registry.mjs +18 -42
- package/esm2022/lib/part/workbench-part.model.mjs +10 -1
- package/esm2022/lib/part/workbench-part.registry.mjs +11 -45
- package/esm2022/lib/part//311/265workbench-part.model.mjs +71 -55
- package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +3 -3
- package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
- package/esm2022/lib/perspective/workbench-perspective.registry.mjs +11 -43
- package/esm2022/lib/perspective/workbench-perspective.service.mjs +71 -62
- package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +2 -2
- package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +62 -47
- package/esm2022/lib/popup/popup.component.mjs +3 -3
- package/esm2022/lib/popup/popup.config.mjs +27 -25
- package/esm2022/lib/popup/popup.service.mjs +169 -174
- package/esm2022/lib/portal/wb-component-portal.mjs +18 -17
- package/esm2022/lib/public_api.mjs +1 -1
- package/esm2022/lib/registry/workbench-object-registry.mjs +38 -17
- package/esm2022/lib/routing/public_api.mjs +2 -2
- package/esm2022/lib/routing/routing.model.mjs +1 -1
- package/esm2022/lib/routing/routing.util.mjs +215 -0
- package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +110 -0
- package/esm2022/lib/routing/workbench-dialog-differ.mjs +3 -3
- package/esm2022/lib/routing/workbench-layout-differ.mjs +3 -10
- package/esm2022/lib/routing/workbench-message-box-differ.mjs +3 -3
- package/esm2022/lib/routing/workbench-navigational-states.mjs +2 -2
- package/esm2022/lib/routing/workbench-popup-differ.mjs +3 -3
- package/esm2022/lib/routing/workbench-route-guards.mjs +57 -0
- package/esm2022/lib/routing/workbench-url-observer.service.mjs +140 -148
- package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +58 -0
- package/esm2022/lib/routing//311/265workbench-router.service.mjs +119 -74
- package/esm2022/lib/startup/splash/splash.component.mjs +3 -3
- package/esm2022/lib/startup/workbench-launcher.service.mjs +22 -10
- package/esm2022/lib/testing/workbench.provider.mjs +2 -2
- package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +15 -19
- package/esm2022/lib/view/public_api.mjs +1 -2
- package/esm2022/lib/view/view-move-handler.service.mjs +71 -56
- package/esm2022/lib/view/view-portal.pipe.mjs +7 -7
- package/esm2022/lib/view/view.component.mjs +54 -42
- package/esm2022/lib/view/workbench-view.model.mjs +1 -1
- package/esm2022/lib/view/workbench-view.registry.mjs +11 -45
- package/esm2022/lib/view//311/265workbench-view.model.mjs +183 -153
- package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +2 -2
- package/esm2022/lib/view-dnd/view-drag.service.mjs +87 -71
- package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +6 -6
- package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +6 -6
- package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +43 -56
- package/esm2022/lib/workbench-config.mjs +2 -2
- package/esm2022/lib/workbench-id.mjs +3 -3
- package/esm2022/lib/workbench.component.mjs +66 -54
- package/esm2022/lib/workbench.constants.mjs +1 -5
- package/esm2022/lib/workbench.model.mjs +1 -1
- package/esm2022/lib/workbench.provider.mjs +3 -9
- package/esm2022/lib/workbench.service.mjs +1 -1
- package/esm2022/lib//311/265workbench.service.mjs +38 -42
- package/fesm2022/scion-workbench.mjs +4054 -3276
- package/fesm2022/scion-workbench.mjs.map +1 -1
- package/lib/common/class-list.d.ts +35 -22
- package/lib/common/math.util.d.ts +7 -0
- package/lib/common/objects.util.d.ts +4 -0
- package/lib/common/operators.d.ts +1 -6
- package/lib/common/uid.util.d.ts +9 -0
- package/lib/content-projection/content-as-overlay.component.d.ts +39 -22
- package/lib/content-projection/workbench-element-references.d.ts +13 -0
- package/lib/dialog/workbench-dialog.component.d.ts +3 -2
- package/lib/dialog/workbench-dialog.d.ts +57 -13
- package/lib/dialog//311/265workbench-dialog.d.ts +38 -24
- package/lib/dialog//311/265workbench-dialog.service.d.ts +10 -11
- package/lib/executor/latest-task-executor.d.ts +26 -0
- package/lib/executor/single-task-executor.d.ts +5 -8
- package/lib/filter-field/filter-field.component.d.ts +1 -1
- package/lib/layout/grid-element/grid-element.component.d.ts +1 -8
- package/lib/layout/main-area-layout/main-area-layout.component.d.ts +0 -4
- package/lib/layout/migration/model/workbench-layout-migration-v5.model.d.ts +36 -0
- package/lib/layout/migration/model/workbench-layout-migration-v6.model.d.ts +35 -0
- package/lib/layout/migration/workbench-layout-migration-v5.service.d.ts +12 -0
- package/lib/layout/migration/workbench-layout-migration-v6.service.d.ts +12 -0
- package/lib/layout/stringifier.d.ts +26 -0
- package/lib/layout/workbench-layout.component.d.ts +4 -5
- package/lib/layout/workbench-layout.d.ts +9 -6
- package/lib/layout/workbench-layout.model.d.ts +4 -3
- package/lib/layout/workbench-layout.service.d.ts +14 -16
- package/lib/layout/workbench-layouts.util.d.ts +0 -6
- package/lib/layout/workench-layout-serializer.service.d.ts +13 -16
- package/lib/layout//311/265workbench-layout.d.ts +18 -19
- package/lib/layout//311/265workbench-layout.factory.d.ts +3 -2
- package/lib/logging//311/265logger.d.ts +2 -3
- package/lib/microfrontend-platform/common/microfrontend.util.d.ts +5 -1
- package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +7 -3
- package/lib/microfrontend-platform/manifest-object-cache.service.d.ts +33 -0
- package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +3 -6
- package/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.d.ts +2 -1
- package/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.d.ts +1 -1
- package/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.d.ts +2 -1
- package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.d.ts +10 -0
- package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.d.ts +24 -0
- package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.d.ts +20 -0
- package/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.d.ts +9 -0
- package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.d.ts +4 -8
- package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +0 -4
- package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +5 -12
- package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +23 -33
- package/lib/microfrontend-platform/public_api.d.ts +1 -0
- package/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.d.ts +1 -1
- package/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.d.ts +3 -7
- package/lib/microfrontend-platform/routing/microfrontend-view-routes.d.ts +9 -2
- package/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.d.ts +11 -0
- package/lib/notification/notification-list.component.d.ts +0 -2
- package/lib/page-not-found/page-not-found.component.d.ts +1 -0
- package/lib/part/part-action-bar/part-action-bar.component.d.ts +3 -4
- package/lib/part/part-action-bar/part-action.directive.d.ts +2 -2
- package/lib/part/part-bar/part-bar.component.d.ts +73 -63
- package/lib/part/part-portal.pipe.d.ts +3 -5
- package/lib/part/part.component.d.ts +9 -12
- package/lib/part/view-context-menu/text.component.d.ts +3 -4
- package/lib/part/view-context-menu/view-menu.directive.d.ts +1 -1
- package/lib/part/view-context-menu/view-menu.service.d.ts +13 -17
- package/lib/part/view-list/view-list.component.d.ts +8 -21
- package/lib/part/view-list-button/view-list-button.component.d.ts +8 -11
- package/lib/part/view-list-item/view-list-item.component.d.ts +3 -7
- package/lib/part/view-tab/view-tab.component.d.ts +19 -29
- package/lib/part/view-tab-drag-image/view-tab-drag-image.component.d.ts +4 -4
- package/lib/part/workbench-part-action.registry.d.ts +3 -23
- package/lib/part/workbench-part.model.d.ts +8 -27
- package/lib/part/workbench-part.registry.d.ts +3 -26
- package/lib/part//311/265workbench-part.model.d.ts +23 -17
- package/lib/perspective/workbench-perspective.model.d.ts +18 -25
- package/lib/perspective/workbench-perspective.registry.d.ts +3 -26
- package/lib/perspective/workbench-perspective.service.d.ts +16 -14
- package/lib/perspective/workench-perspective-serializer.service.d.ts +1 -1
- package/lib/perspective//311/265workbench-perspective.model.d.ts +30 -21
- package/lib/popup/popup.config.d.ts +11 -10
- package/lib/popup/popup.service.d.ts +15 -28
- package/lib/portal/wb-component-portal.d.ts +21 -5
- package/lib/public_api.d.ts +1 -1
- package/lib/registry/workbench-object-registry.d.ts +10 -6
- package/lib/routing/public_api.d.ts +2 -2
- package/lib/routing/routing.model.d.ts +25 -13
- package/lib/routing/{router.util.d.ts → routing.util.d.ts} +28 -1
- package/lib/routing/{workbench-auxiliary-routes-registrator.service.d.ts → workbench-auxiliary-route-installer.service.d.ts} +10 -3
- package/lib/routing/workbench-layout-differ.d.ts +1 -2
- package/lib/routing/workbench-navigational-states.d.ts +8 -4
- package/lib/{view/workbench-view-route-guards.d.ts → routing/workbench-route-guards.d.ts} +8 -2
- package/lib/routing/workbench-url-observer.service.d.ts +31 -55
- package/lib/routing/workbench-view-outlet-differ.d.ts +32 -0
- package/lib/routing//311/265workbench-router.service.d.ts +22 -18
- package/lib/startup/workbench-launcher.service.d.ts +4 -5
- package/lib/testing/workbench.provider.d.ts +3 -1
- package/lib/theme/workbench-theme-switcher.service.d.ts +4 -6
- package/lib/view/public_api.d.ts +0 -1
- package/lib/view/view-move-handler.service.d.ts +16 -14
- package/lib/view/view-portal.pipe.d.ts +1 -3
- package/lib/view/view.component.d.ts +21 -12
- package/lib/view/workbench-view.model.d.ts +88 -36
- package/lib/view/workbench-view.registry.d.ts +3 -27
- package/lib/view//311/265workbench-view.model.d.ts +62 -71
- package/lib/view-dnd/view-drag.service.d.ts +79 -49
- package/lib/view-dnd/view-drop-placeholder-renderer.service.d.ts +1 -1
- package/lib/view-dnd/view-tab-drag-image-renderer.service.d.ts +12 -36
- package/lib/workbench-config.d.ts +19 -7
- package/lib/workbench.component.d.ts +16 -30
- package/lib/workbench.constants.d.ts +0 -5
- package/lib/workbench.model.d.ts +31 -3
- package/lib/workbench.service.d.ts +58 -56
- package/lib//311/265workbench.service.d.ts +18 -31
- package/package.json +5 -5
- package/esm2022/lib/common/filter-by-predicate.pipe.mjs +0 -27
- package/esm2022/lib/common/filter-by-text.pipe.mjs +0 -39
- package/esm2022/lib/common/uuid.util.mjs +0 -17
- package/esm2022/lib/content-projection/content-projection.directive.mjs +0 -101
- package/esm2022/lib/content-projection/view-container.reference.mjs +0 -68
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +0 -41
- package/esm2022/lib/page-not-found/format-url.pipe.mjs +0 -26
- package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +0 -26
- package/esm2022/lib/routing/router.util.mjs +0 -126
- package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +0 -94
- package/esm2022/lib/view/workbench-view-route-guards.mjs +0 -47
- package/lib/common/filter-by-predicate.pipe.d.ts +0 -10
- package/lib/common/filter-by-text.pipe.d.ts +0 -12
- package/lib/common/uuid.util.d.ts +0 -8
- package/lib/content-projection/content-projection.directive.d.ts +0 -30
- package/lib/content-projection/view-container.reference.d.ts +0 -42
- package/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.d.ts +0 -10
- package/lib/page-not-found/format-url.pipe.d.ts +0 -11
- package/lib/part/part-action-bar/part-action-filter.pipe.d.ts +0 -11
|
@@ -7,25 +7,25 @@
|
|
|
7
7
|
*
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
*/
|
|
10
|
-
import { Component, HostBinding, inject } from '@angular/core';
|
|
10
|
+
import { Component, HostBinding, inject, signal } from '@angular/core';
|
|
11
11
|
import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
|
|
12
12
|
import { ViewTabContentComponent } from '../view-tab-content/view-tab-content.component';
|
|
13
13
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
14
|
-
import { DOCUMENT
|
|
14
|
+
import { DOCUMENT } from '@angular/common';
|
|
15
|
+
import { WorkbenchView } from '../../view/workbench-view.model';
|
|
15
16
|
import * as i0 from "@angular/core";
|
|
16
|
-
import * as i1 from "../../
|
|
17
|
-
import * as i2 from "../../
|
|
18
|
-
import * as i3 from "
|
|
19
|
-
import * as i4 from "@angular/cdk/portal";
|
|
17
|
+
import * as i1 from "../../workbench-config";
|
|
18
|
+
import * as i2 from "../../view-dnd/view-drag.service";
|
|
19
|
+
import * as i3 from "@angular/cdk/portal";
|
|
20
20
|
/**
|
|
21
21
|
* @see ViewTabComponent
|
|
22
22
|
*/
|
|
23
23
|
export class ViewTabDragImageComponent {
|
|
24
|
-
constructor(
|
|
25
|
-
this.view = view;
|
|
24
|
+
constructor(_workbenchConfig, _viewDragService, _injector) {
|
|
26
25
|
this._workbenchConfig = _workbenchConfig;
|
|
27
26
|
this._viewDragService = _viewDragService;
|
|
28
27
|
this._injector = _injector;
|
|
28
|
+
this.view = signal(inject(WorkbenchView));
|
|
29
29
|
this.active = true;
|
|
30
30
|
this.partActive = true;
|
|
31
31
|
/**
|
|
@@ -37,7 +37,7 @@ export class ViewTabDragImageComponent {
|
|
|
37
37
|
*/
|
|
38
38
|
this.isDragOverPeripheralTabbar = false;
|
|
39
39
|
this.installDragOverTabbarDetector();
|
|
40
|
-
this.viewTabContentPortal = this.createViewTabContentPortal();
|
|
40
|
+
this.viewTabContentPortal = signal(this.createViewTabContentPortal());
|
|
41
41
|
}
|
|
42
42
|
onClose(..._) {
|
|
43
43
|
throw Error('[UnsupportedOperationError]');
|
|
@@ -52,21 +52,20 @@ export class ViewTabDragImageComponent {
|
|
|
52
52
|
.pipe(takeUntilDestroyed())
|
|
53
53
|
.subscribe(partId => {
|
|
54
54
|
// Compute if dragging this view tab over a tabbar.
|
|
55
|
-
this.isDragOverTabbar = partId
|
|
55
|
+
this.isDragOverTabbar = !!partId;
|
|
56
56
|
// Compute if dragging this view tab over a tabbar located in the peripheral area.
|
|
57
|
-
this.isDragOverPeripheralTabbar = partId
|
|
57
|
+
this.isDragOverPeripheralTabbar = !!partId && documentRoot.querySelector(`wb-workbench:has(wb-main-area-layout) wb-part[data-partid="${partId}"]:not(.main-area)`) !== null;
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabDragImageComponent, deps: [{ token: i1.
|
|
61
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
60
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabDragImageComponent, deps: [{ token: i1.WorkbenchConfig }, { token: i2.ViewDragService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
61
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ViewTabDragImageComponent, isStandalone: true, selector: "wb-view-tab-drag-image", host: { properties: { "class.active": "this.active", "class.part-active": "this.partActive", "class.drag-over-tabbar": "this.isDragOverTabbar", "class.drag-over-peripheral-tabbar": "this.isDragOverPeripheralTabbar" } }, ngImport: i0, template: "<!-- IMPORTANT: THIS HTML FILE IS ALSO USED BY `ViewTabDragImageComponent` -->\n\n@if (view().active()) {\n <div class=\"corner-radius start\">\n <div class=\"circle\"></div>\n </div>\n}\n\n<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal()\"/>\n</div>\n\n@if (view().active()) {\n <div class=\"corner-radius end\">\n <div class=\"circle\"></div>\n </div>\n}\n\n@if (view().closable()) {\n <button class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose($event)\">\n close\n </button>\n}\n", styles: [":host{display:grid;align-items:center;padding-left:var(--sci-workbench-tab-padding-inline);padding-right:var(--sci-workbench-tab-padding-inline);position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;box-sizing:border-box;outline:none;border-top:1px solid transparent;border-left:1px solid transparent;border-right:1px solid transparent;border-top-left-radius:var(--sci-workbench-tab-border-radius);border-top-right-radius:var(--sci-workbench-tab-border-radius)}:host.active{cursor:default;color:var(--sci-workbench-tab-active-text-color);border-left-color:var(--sci-workbench-tab-border-color);border-right-color:var(--sci-workbench-tab-border-color);border-top-color:var(--sci-workbench-tab-border-color);background-color:var(--sci-workbench-view-background-color)}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host.active{background-color:var(--sci-workbench-view-peripheral-background-color)}:host.active.part-active>div.content{color:var(--sci-workbench-part-active-tab-active-text-color)}:host>div.content{min-width:var(--sci-workbench-tab-min-width);max-width:var(--sci-workbench-tab-max-width);isolation:isolate}:host>button.close{all:unset;position:absolute;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);right:.2em}:host>button.close:not(:hover){opacity:.75}:host.active>button.close,:host:hover:not(.drag-over-tabbar)>button.close{visibility:visible}:host.active>button.close:hover{background-color:var(--sci-workbench-tab-hover-background-color)}:host:hover:not(.active):not(.drag-over-tabbar):before{content:\"\";background-color:var(--sci-workbench-tab-hover-background-color);position:absolute;inset:0 0 .125em .125em;border-radius:var(--sci-workbench-tab-border-radius);pointer-events:none}:host>div.corner-radius{height:var(--sci-workbench-tab-border-radius);width:var(--sci-workbench-tab-border-radius);overflow:hidden;position:absolute;bottom:0}:host>div.corner-radius>div.circle{position:absolute;top:calc(-2 * var(--sci-workbench-tab-border-radius));width:calc(2 * var(--sci-workbench-tab-border-radius));height:calc(2 * var(--sci-workbench-tab-border-radius));border:var(--sci-workbench-tab-border-radius) solid var(--sci-workbench-view-background-color);border-radius:50%;box-shadow:inset 0 0 0 1px var(--sci-workbench-tab-border-color);box-sizing:content-box}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host>div.corner-radius>div.circle{border-color:var(--sci-workbench-view-peripheral-background-color)}:host>div.corner-radius.start{left:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.start>div.circle{left:calc(-2 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end{right:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end>div.circle{right:calc(-2 * var(--sci-workbench-tab-border-radius))}@container viewtab (height >= 3.5rem){:host>button.close{align-self:start;top:.125em;right:.125em}}\n", ":host.drag-over-peripheral-tabbar{background-color:var(--sci-workbench-view-peripheral-background-color)}:host:not(.drag-over-tabbar){border-radius:var(--sci-workbench-tab-border-radius);border:1px solid var(--sci-workbench-tab-drag-border-color)}:host:not(.drag-over-tabbar)>div.corner-radius{display:none}\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] }); }
|
|
62
62
|
}
|
|
63
63
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabDragImageComponent, decorators: [{
|
|
64
64
|
type: Component,
|
|
65
65
|
args: [{ selector: 'wb-view-tab-drag-image', standalone: true, imports: [
|
|
66
|
-
NgIf,
|
|
67
66
|
PortalModule,
|
|
68
|
-
], template: "<!-- IMPORTANT: THIS HTML FILE IS ALSO USED BY `ViewTabDragImageComponent` -->\n\n<div class=\"corner-radius start\"
|
|
69
|
-
}], ctorParameters: () => [{ type: i1.
|
|
67
|
+
], template: "<!-- IMPORTANT: THIS HTML FILE IS ALSO USED BY `ViewTabDragImageComponent` -->\n\n@if (view().active()) {\n <div class=\"corner-radius start\">\n <div class=\"circle\"></div>\n </div>\n}\n\n<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal()\"/>\n</div>\n\n@if (view().active()) {\n <div class=\"corner-radius end\">\n <div class=\"circle\"></div>\n </div>\n}\n\n@if (view().closable()) {\n <button class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose($event)\">\n close\n </button>\n}\n", styles: [":host{display:grid;align-items:center;padding-left:var(--sci-workbench-tab-padding-inline);padding-right:var(--sci-workbench-tab-padding-inline);position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;box-sizing:border-box;outline:none;border-top:1px solid transparent;border-left:1px solid transparent;border-right:1px solid transparent;border-top-left-radius:var(--sci-workbench-tab-border-radius);border-top-right-radius:var(--sci-workbench-tab-border-radius)}:host.active{cursor:default;color:var(--sci-workbench-tab-active-text-color);border-left-color:var(--sci-workbench-tab-border-color);border-right-color:var(--sci-workbench-tab-border-color);border-top-color:var(--sci-workbench-tab-border-color);background-color:var(--sci-workbench-view-background-color)}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host.active{background-color:var(--sci-workbench-view-peripheral-background-color)}:host.active.part-active>div.content{color:var(--sci-workbench-part-active-tab-active-text-color)}:host>div.content{min-width:var(--sci-workbench-tab-min-width);max-width:var(--sci-workbench-tab-max-width);isolation:isolate}:host>button.close{all:unset;position:absolute;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);right:.2em}:host>button.close:not(:hover){opacity:.75}:host.active>button.close,:host:hover:not(.drag-over-tabbar)>button.close{visibility:visible}:host.active>button.close:hover{background-color:var(--sci-workbench-tab-hover-background-color)}:host:hover:not(.active):not(.drag-over-tabbar):before{content:\"\";background-color:var(--sci-workbench-tab-hover-background-color);position:absolute;inset:0 0 .125em .125em;border-radius:var(--sci-workbench-tab-border-radius);pointer-events:none}:host>div.corner-radius{height:var(--sci-workbench-tab-border-radius);width:var(--sci-workbench-tab-border-radius);overflow:hidden;position:absolute;bottom:0}:host>div.corner-radius>div.circle{position:absolute;top:calc(-2 * var(--sci-workbench-tab-border-radius));width:calc(2 * var(--sci-workbench-tab-border-radius));height:calc(2 * var(--sci-workbench-tab-border-radius));border:var(--sci-workbench-tab-border-radius) solid var(--sci-workbench-view-background-color);border-radius:50%;box-shadow:inset 0 0 0 1px var(--sci-workbench-tab-border-color);box-sizing:content-box}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host>div.corner-radius>div.circle{border-color:var(--sci-workbench-view-peripheral-background-color)}:host>div.corner-radius.start{left:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.start>div.circle{left:calc(-2 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end{right:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end>div.circle{right:calc(-2 * var(--sci-workbench-tab-border-radius))}@container viewtab (height >= 3.5rem){:host>button.close{align-self:start;top:.125em;right:.125em}}\n", ":host.drag-over-peripheral-tabbar{background-color:var(--sci-workbench-view-peripheral-background-color)}:host:not(.drag-over-tabbar){border-radius:var(--sci-workbench-tab-border-radius);border:1px solid var(--sci-workbench-tab-drag-border-color)}:host:not(.drag-over-tabbar)>div.corner-radius{display:none}\n"] }]
|
|
68
|
+
}], ctorParameters: () => [{ type: i1.WorkbenchConfig }, { type: i2.ViewDragService }, { type: i0.Injector }], propDecorators: { active: [{
|
|
70
69
|
type: HostBinding,
|
|
71
70
|
args: ['class.active']
|
|
72
71
|
}], partActive: [{
|
|
@@ -79,4 +78,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
79
78
|
type: HostBinding,
|
|
80
79
|
args: ['class.drag-over-peripheral-tabbar']
|
|
81
80
|
}] } });
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10YWItZHJhZy1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctdGFiLWRyYWctaW1hZ2Uvdmlldy10YWItZHJhZy1pbWFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctdGFiL3ZpZXctdGFiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFZLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUMsZUFBZSxFQUFFLFlBQVksRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRWxFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUNBQWlDLENBQUM7Ozs7O0FBRTlEOztHQUVHO0FBYUgsTUFBTSxPQUFPLHlCQUF5QjtJQXVCcEMsWUFBb0IsZ0JBQWlDLEVBQ2pDLGdCQUFpQyxFQUNqQyxTQUFtQjtRQUZuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQ2pDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQXZCdkIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUk5QyxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBR2QsZUFBVSxHQUFHLElBQUksQ0FBQztRQUV6Qjs7V0FFRztRQUVJLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUVoQzs7V0FFRztRQUVJLCtCQUEwQixHQUFHLEtBQUssQ0FBQztRQUt4QyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLE9BQU8sQ0FBQyxHQUFHLENBQVk7UUFDNUIsTUFBTSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sMEJBQTBCO1FBQ2hDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsSUFBSSx1QkFBdUIsQ0FBQztRQUN4RixPQUFPLElBQUksZUFBZSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTyw2QkFBNkI7UUFDbkMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFXLFFBQVEsQ0FBQyxDQUFDLGVBQWUsQ0FBQztRQUNoRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZTthQUNsQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUMxQixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEIsbURBQW1EO1lBQ25ELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ2pDLGtGQUFrRjtZQUNsRixJQUFJLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUMsYUFBYSxDQUFDLDhEQUE4RCxNQUFNLG9CQUFvQixDQUFDLEtBQUssSUFBSSxDQUFDO1FBQzlLLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0FqRFUseUJBQXlCO2tHQUF6Qix5QkFBeUIsOFNDbEN0QywraUJBd0JBLDB4R0RPSSxZQUFZOzsyRkFHSCx5QkFBeUI7a0JBWnJDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBTXRCLElBQUksV0FDUDt3QkFDUCxZQUFZO3FCQUNiO3lJQVFNLE1BQU07c0JBRFosV0FBVzt1QkFBQyxjQUFjO2dCQUlwQixVQUFVO3NCQURoQixXQUFXO3VCQUFDLG1CQUFtQjtnQkFPekIsZ0JBQWdCO3NCQUR0QixXQUFXO3VCQUFDLHdCQUF3QjtnQkFPOUIsMEJBQTBCO3NCQURoQyxXQUFXO3VCQUFDLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBpbmplY3QsIEluamVjdG9yLCBzaWduYWwsIFNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1ZpZXdEcmFnU2VydmljZX0gZnJvbSAnLi4vLi4vdmlldy1kbmQvdmlldy1kcmFnLnNlcnZpY2UnO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWwsIFBvcnRhbE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1dvcmtiZW5jaENvbmZpZ30gZnJvbSAnLi4vLi4vd29ya2JlbmNoLWNvbmZpZyc7XG5pbXBvcnQge1ZpZXdUYWJDb250ZW50Q29tcG9uZW50fSBmcm9tICcuLi92aWV3LXRhYi1jb250ZW50L3ZpZXctdGFiLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtXb3JrYmVuY2hWaWV3fSBmcm9tICcuLi8uLi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcblxuLyoqXG4gKiBAc2VlIFZpZXdUYWJDb21wb25lbnRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2Itdmlldy10YWItZHJhZy1pbWFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi4vdmlldy10YWIvdmlldy10YWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtcbiAgICAnLi4vdmlldy10YWIvdmlldy10YWIuY29tcG9uZW50LnNjc3MnLFxuICAgICcuL3ZpZXctdGFiLWRyYWctaW1hZ2UucGFydGlhbC5jb21wb25lbnQuc2NzcycsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBQb3J0YWxNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdUYWJEcmFnSW1hZ2VDb21wb25lbnQge1xuXG4gIHB1YmxpYyByZWFkb25seSB2aWV3ID0gc2lnbmFsKGluamVjdChXb3JrYmVuY2hWaWV3KSk7XG4gIHB1YmxpYyByZWFkb25seSB2aWV3VGFiQ29udGVudFBvcnRhbDogU2lnbmFsPENvbXBvbmVudFBvcnRhbDx1bmtub3duPj47XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY3RpdmUnKVxuICBwdWJsaWMgYWN0aXZlID0gdHJ1ZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBhcnQtYWN0aXZlJylcbiAgcHVibGljIHBhcnRBY3RpdmUgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgZHJhZ2dpbmcgdGhpcyB2aWV3IHRhYiBvdmVyIGEgdGFiYmFyLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kcmFnLW92ZXItdGFiYmFyJylcbiAgcHVibGljIGlzRHJhZ092ZXJUYWJiYXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGRyYWdnaW5nIHRoaXMgdmlldyB0YWIgb3ZlciBhIHRhYmJhciBsb2NhdGVkIGluIHRoZSBwZXJpcGhlcmFsIGFyZWEuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRyYWctb3Zlci1wZXJpcGhlcmFsLXRhYmJhcicpXG4gIHB1YmxpYyBpc0RyYWdPdmVyUGVyaXBoZXJhbFRhYmJhciA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3dvcmtiZW5jaENvbmZpZzogV29ya2JlbmNoQ29uZmlnLFxuICAgICAgICAgICAgICBwcml2YXRlIF92aWV3RHJhZ1NlcnZpY2U6IFZpZXdEcmFnU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5pbnN0YWxsRHJhZ092ZXJUYWJiYXJEZXRlY3RvcigpO1xuICAgIHRoaXMudmlld1RhYkNvbnRlbnRQb3J0YWwgPSBzaWduYWwodGhpcy5jcmVhdGVWaWV3VGFiQ29udGVudFBvcnRhbCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlKC4uLl86IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRocm93IEVycm9yKCdbVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvcl0nKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVmlld1RhYkNvbnRlbnRQb3J0YWwoKTogQ29tcG9uZW50UG9ydGFsPHVua25vd24+IHtcbiAgICBjb25zdCBjb21wb25lbnRUeXBlID0gdGhpcy5fd29ya2JlbmNoQ29uZmlnLnZpZXdUYWJDb21wb25lbnQgfHwgVmlld1RhYkNvbnRlbnRDb21wb25lbnQ7XG4gICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoY29tcG9uZW50VHlwZSwgbnVsbCwgdGhpcy5faW5qZWN0b3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YWxsRHJhZ092ZXJUYWJiYXJEZXRlY3RvcigpOiB2b2lkIHtcbiAgICBjb25zdCBkb2N1bWVudFJvb3QgPSBpbmplY3Q8RG9jdW1lbnQ+KERPQ1VNRU5UKS5kb2N1bWVudEVsZW1lbnQ7XG4gICAgdGhpcy5fdmlld0RyYWdTZXJ2aWNlLnRhYmJhckRyYWdPdmVyJFxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKHBhcnRJZCA9PiB7XG4gICAgICAgIC8vIENvbXB1dGUgaWYgZHJhZ2dpbmcgdGhpcyB2aWV3IHRhYiBvdmVyIGEgdGFiYmFyLlxuICAgICAgICB0aGlzLmlzRHJhZ092ZXJUYWJiYXIgPSAhIXBhcnRJZDtcbiAgICAgICAgLy8gQ29tcHV0ZSBpZiBkcmFnZ2luZyB0aGlzIHZpZXcgdGFiIG92ZXIgYSB0YWJiYXIgbG9jYXRlZCBpbiB0aGUgcGVyaXBoZXJhbCBhcmVhLlxuICAgICAgICB0aGlzLmlzRHJhZ092ZXJQZXJpcGhlcmFsVGFiYmFyID0gISFwYXJ0SWQgJiYgZG9jdW1lbnRSb290LnF1ZXJ5U2VsZWN0b3IoYHdiLXdvcmtiZW5jaDpoYXMod2ItbWFpbi1hcmVhLWxheW91dCkgd2ItcGFydFtkYXRhLXBhcnRpZD1cIiR7cGFydElkfVwiXTpub3QoLm1haW4tYXJlYSlgKSAhPT0gbnVsbDtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8IS0tIElNUE9SVEFOVDogVEhJUyBIVE1MIEZJTEUgSVMgQUxTTyBVU0VEIEJZIGBWaWV3VGFiRHJhZ0ltYWdlQ29tcG9uZW50YCAtLT5cblxuQGlmICh2aWV3KCkuYWN0aXZlKCkpIHtcbiAgPGRpdiBjbGFzcz1cImNvcm5lci1yYWRpdXMgc3RhcnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gIDwvZGl2PlxufVxuXG48ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICA8bmctY29udGFpbmVyICpjZGtQb3J0YWxPdXRsZXQ9XCJ2aWV3VGFiQ29udGVudFBvcnRhbCgpXCIvPlxuPC9kaXY+XG5cbkBpZiAodmlldygpLmFjdGl2ZSgpKSB7XG4gIDxkaXYgY2xhc3M9XCJjb3JuZXItcmFkaXVzIGVuZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVcIj48L2Rpdj5cbiAgPC9kaXY+XG59XG5cbkBpZiAodmlldygpLmNsb3NhYmxlKCkpIHtcbiAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlIGUyZS1jbG9zZSBzY2lvbi13b3JrYmVuY2gtaWNvbnNcIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlKCRldmVudClcIj5cbiAgICBjbG9zZVxuICA8L2J1dHRvbj5cbn1cbiJdfQ==
|
|
@@ -1,47 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made
|
|
5
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
*/
|
|
10
|
+
import { InjectionToken } from '@angular/core';
|
|
2
11
|
import { identity } from 'rxjs';
|
|
3
12
|
import { WorkbenchObjectRegistry } from '../registry/workbench-object-registry';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
13
|
/**
|
|
6
14
|
* Registry for {@link WorkbenchPartAction} model objects.
|
|
7
15
|
*/
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* Registers given part action.
|
|
17
|
-
*
|
|
18
|
-
* @return handle to unregister the part action.
|
|
19
|
-
*/
|
|
20
|
-
register(action) {
|
|
21
|
-
this._registry.register(action);
|
|
22
|
-
return {
|
|
23
|
-
dispose: () => {
|
|
24
|
-
this._registry.unregister(action);
|
|
25
|
-
},
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Emits registered part actions.
|
|
30
|
-
*
|
|
31
|
-
* Upon subscription, the currently registerd actions are emitted, and then emits continuously
|
|
32
|
-
* when new actions are registered or unregistered. It never completes.
|
|
33
|
-
*/
|
|
34
|
-
get actions$() {
|
|
35
|
-
return this._registry.objects$;
|
|
36
|
-
}
|
|
37
|
-
ngOnDestroy() {
|
|
38
|
-
this._registry.clear();
|
|
39
|
-
}
|
|
40
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPartActionRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
41
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPartActionRegistry, providedIn: 'root' }); }
|
|
42
|
-
}
|
|
43
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPartActionRegistry, decorators: [{
|
|
44
|
-
type: Injectable,
|
|
45
|
-
args: [{ providedIn: 'root' }]
|
|
46
|
-
}] });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBhcnQtYWN0aW9uLnJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGFydC93b3JrYmVuY2gtcGFydC1hY3Rpb24ucmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUMsUUFBUSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDOztBQUU5RTs7R0FFRztBQUVILE1BQU0sT0FBTywyQkFBMkI7SUFEeEM7UUFHVSxjQUFTLEdBQUcsSUFBSSx1QkFBdUIsQ0FBMkM7WUFDeEYsS0FBSyxFQUFFLFFBQVE7WUFDZixpQkFBaUIsRUFBRSxDQUFDLE1BQTJCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO1NBQ3RJLENBQUMsQ0FBQztLQThCSjtJQTVCQzs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLE1BQTJCO1FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWhDLE9BQU87WUFDTCxPQUFPLEVBQUUsR0FBUyxFQUFFO2dCQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQyxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQzs4R0FsQ1UsMkJBQTJCO2tIQUEzQiwyQkFBMkIsY0FEZixNQUFNOzsyRkFDbEIsMkJBQTJCO2tCQUR2QyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtEaXNwb3NhYmxlfSBmcm9tICcuLi9jb21tb24vZGlzcG9zYWJsZSc7XG5pbXBvcnQge1dvcmtiZW5jaFBhcnRBY3Rpb259IGZyb20gJy4uL3dvcmtiZW5jaC5tb2RlbCc7XG5pbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2lkZW50aXR5LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7V29ya2JlbmNoT2JqZWN0UmVnaXN0cnl9IGZyb20gJy4uL3JlZ2lzdHJ5L3dvcmtiZW5jaC1vYmplY3QtcmVnaXN0cnknO1xuXG4vKipcbiAqIFJlZ2lzdHJ5IGZvciB7QGxpbmsgV29ya2JlbmNoUGFydEFjdGlvbn0gbW9kZWwgb2JqZWN0cy5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoUGFydEFjdGlvblJlZ2lzdHJ5IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9yZWdpc3RyeSA9IG5ldyBXb3JrYmVuY2hPYmplY3RSZWdpc3RyeTxXb3JrYmVuY2hQYXJ0QWN0aW9uLCBXb3JrYmVuY2hQYXJ0QWN0aW9uPih7XG4gICAga2V5Rm46IGlkZW50aXR5LFxuICAgIG51bGxPYmplY3RFcnJvckZuOiAoYWN0aW9uOiBXb3JrYmVuY2hQYXJ0QWN0aW9uKSA9PiBFcnJvcihgW051bGxQYXJ0QWN0aW9uRXJyb3JdIFBhcnQgQWN0aW9uICcke0pTT04uc3RyaW5naWZ5KGFjdGlvbil9JyBub3QgZm91bmQuYCksXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgZ2l2ZW4gcGFydCBhY3Rpb24uXG4gICAqXG4gICAqIEByZXR1cm4gaGFuZGxlIHRvIHVucmVnaXN0ZXIgdGhlIHBhcnQgYWN0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyKGFjdGlvbjogV29ya2JlbmNoUGFydEFjdGlvbik6IERpc3Bvc2FibGUge1xuICAgIHRoaXMuX3JlZ2lzdHJ5LnJlZ2lzdGVyKGFjdGlvbik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGlzcG9zZTogKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLl9yZWdpc3RyeS51bnJlZ2lzdGVyKGFjdGlvbik7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgcmVnaXN0ZXJlZCBwYXJ0IGFjdGlvbnMuXG4gICAqXG4gICAqIFVwb24gc3Vic2NyaXB0aW9uLCB0aGUgY3VycmVudGx5IHJlZ2lzdGVyZCBhY3Rpb25zIGFyZSBlbWl0dGVkLCBhbmQgdGhlbiBlbWl0cyBjb250aW51b3VzbHlcbiAgICogd2hlbiBuZXcgYWN0aW9ucyBhcmUgcmVnaXN0ZXJlZCBvciB1bnJlZ2lzdGVyZWQuIEl0IG5ldmVyIGNvbXBsZXRlcy5cbiAgICovXG4gIHB1YmxpYyBnZXQgYWN0aW9ucyQoKTogT2JzZXJ2YWJsZTxyZWFkb25seSBXb3JrYmVuY2hQYXJ0QWN0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVnaXN0cnkub2JqZWN0cyQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fcmVnaXN0cnkuY2xlYXIoKTtcbiAgfVxufVxuIl19
|
|
16
|
+
export const WORKBENCH_PART_ACTION_REGISTRY = new InjectionToken('WORKBENCH_PART_ACTION_REGISTRY', {
|
|
17
|
+
providedIn: 'root',
|
|
18
|
+
factory: () => new WorkbenchObjectRegistry({
|
|
19
|
+
keyFn: identity,
|
|
20
|
+
nullObjectErrorFn: (action) => Error(`[NullPartActionError] Part Action '${JSON.stringify(action)}' not found.`),
|
|
21
|
+
}),
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBhcnQtYWN0aW9uLnJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGFydC93b3JrYmVuY2gtcGFydC1hY3Rpb24ucmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFHSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFFOUU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLGNBQWMsQ0FBb0UsZ0NBQWdDLEVBQUU7SUFDcEssVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksdUJBQXVCLENBQTJDO1FBQ25GLEtBQUssRUFBRSxRQUFRO1FBQ2YsaUJBQWlCLEVBQUUsQ0FBQyxNQUEyQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsc0NBQXNDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztLQUN0SSxDQUFDO0NBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge1dvcmtiZW5jaFBhcnRBY3Rpb259IGZyb20gJy4uL3dvcmtiZW5jaC5tb2RlbCc7XG5pbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7aWRlbnRpdHl9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtXb3JrYmVuY2hPYmplY3RSZWdpc3RyeX0gZnJvbSAnLi4vcmVnaXN0cnkvd29ya2JlbmNoLW9iamVjdC1yZWdpc3RyeSc7XG5cbi8qKlxuICogUmVnaXN0cnkgZm9yIHtAbGluayBXb3JrYmVuY2hQYXJ0QWN0aW9ufSBtb2RlbCBvYmplY3RzLlxuICovXG5leHBvcnQgY29uc3QgV09SS0JFTkNIX1BBUlRfQUNUSU9OX1JFR0lTVFJZID0gbmV3IEluamVjdGlvblRva2VuPFdvcmtiZW5jaE9iamVjdFJlZ2lzdHJ5PFdvcmtiZW5jaFBhcnRBY3Rpb24sIFdvcmtiZW5jaFBhcnRBY3Rpb24+PignV09SS0JFTkNIX1BBUlRfQUNUSU9OX1JFR0lTVFJZJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IG5ldyBXb3JrYmVuY2hPYmplY3RSZWdpc3RyeTxXb3JrYmVuY2hQYXJ0QWN0aW9uLCBXb3JrYmVuY2hQYXJ0QWN0aW9uPih7XG4gICAga2V5Rm46IGlkZW50aXR5LFxuICAgIG51bGxPYmplY3RFcnJvckZuOiAoYWN0aW9uOiBXb3JrYmVuY2hQYXJ0QWN0aW9uKSA9PiBFcnJvcihgW051bGxQYXJ0QWN0aW9uRXJyb3JdIFBhcnQgQWN0aW9uICcke0pTT04uc3RyaW5naWZ5KGFjdGlvbil9JyBub3QgZm91bmQuYCksXG4gIH0pLFxufSk7XG4iXX0=
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made
|
|
5
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
*/
|
|
1
10
|
/**
|
|
2
11
|
* Represents a part of the workbench layout.
|
|
3
12
|
*
|
|
@@ -7,4 +16,4 @@
|
|
|
7
16
|
*/
|
|
8
17
|
export class WorkbenchPart {
|
|
9
18
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBhcnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3dvcmtiZW5jaC1wYXJ0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBTUg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFnQixhQUFhO0NBK0JsQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtXb3JrYmVuY2hQYXJ0QWN0aW9ufSBmcm9tICcuLi93b3JrYmVuY2gubW9kZWwnO1xuaW1wb3J0IHtWaWV3SWR9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtTaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwYXJ0IG9mIHRoZSB3b3JrYmVuY2ggbGF5b3V0LlxuICpcbiAqIEEgcGFydCBpcyBhIHN0YWNrIG9mIHZpZXdzIHRoYXQgY2FuIGJlIGFycmFuZ2VkIGluIHRoZSB3b3JrYmVuY2ggbGF5b3V0LlxuICpcbiAqIEBzZWUgV29ya2JlbmNoVmlld1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgV29ya2JlbmNoUGFydCB7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSBpZGVudGl0eSBvZiB0aGlzIHBhcnQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBwYXJ0IGlzIGxvY2F0ZWQgaW4gdGhlIG1haW4gYXJlYS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpc0luTWFpbkFyZWE6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgcGFydCBpcyBhY3RpdmUgb3IgaW5hY3RpdmUuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYWN0aXZlOiBTaWduYWw8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXMgdGhlIGFjdGl2ZSB2aWV3LCBvciBgbnVsbGAgaWYgbm9uZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhY3RpdmVWaWV3SWQ6IFNpZ25hbDxWaWV3SWQgfCBudWxsPjtcblxuICAvKipcbiAgICogSWRlbnRpZmllcyB2aWV3cyBvcGVuZWQgaW4gdGhpcyBwYXJ0LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHZpZXdJZHM6IFNpZ25hbDxWaWV3SWRbXT47XG5cbiAgLyoqXG4gICAqIEFjdGlvbnMgbWF0Y2hpbmcgdGhpcyBwYXJ0IGFuZCBpdHMgYWN0aXZlIHZpZXcuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYWN0aW9uczogU2lnbmFsPFdvcmtiZW5jaFBhcnRBY3Rpb25bXT47XG59XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018-
|
|
2
|
+
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made
|
|
5
5
|
* available under the terms of the Eclipse Public License 2.0
|
|
@@ -7,51 +7,17 @@
|
|
|
7
7
|
*
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
11
|
-
import { concat } from 'rxjs';
|
|
10
|
+
import { InjectionToken } from '@angular/core';
|
|
12
11
|
import { WorkbenchObjectRegistry } from '../registry/workbench-object-registry';
|
|
13
|
-
import { take } from 'rxjs/operators';
|
|
14
|
-
import { bufferLatestUntilLayoutChange } from '../common/operators';
|
|
15
|
-
import * as i0 from "@angular/core";
|
|
16
12
|
/**
|
|
17
13
|
* Registry for {@link WorkbenchPart} model objects.
|
|
18
14
|
*/
|
|
19
|
-
export
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Registers given part.
|
|
30
|
-
*/
|
|
31
|
-
register(part) {
|
|
32
|
-
this._registry.register(part);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Unregisters specified part and destroys it.
|
|
36
|
-
*/
|
|
37
|
-
unregister(partId) {
|
|
38
|
-
this._registry.unregister(partId)?.destroy();
|
|
39
|
-
}
|
|
40
|
-
get(partId, options) {
|
|
41
|
-
return this._registry.get(partId, options);
|
|
42
|
-
}
|
|
43
|
-
get parts() {
|
|
44
|
-
return this._registry.objects;
|
|
45
|
-
}
|
|
46
|
-
ngOnDestroy() {
|
|
47
|
-
this._registry.objects.forEach(part => part.destroy());
|
|
48
|
-
this._registry.clear();
|
|
49
|
-
}
|
|
50
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPartRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
51
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPartRegistry, providedIn: 'root' }); }
|
|
52
|
-
}
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchPartRegistry, decorators: [{
|
|
54
|
-
type: Injectable,
|
|
55
|
-
args: [{ providedIn: 'root' }]
|
|
56
|
-
}] });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBhcnQucmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3dvcmtiZW5jaC1wYXJ0LnJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUMsTUFBTSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQzlFLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwQyxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFbEU7O0dBRUc7QUFFSCxNQUFNLE9BQU8scUJBQXFCO0lBRGxDO1FBR1UsY0FBUyxHQUFHLElBQUksdUJBQXVCLENBQXlCO1lBQ3RFLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3RCLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLHlCQUF5QixNQUFNLGNBQWMsQ0FBQztTQUNsRixDQUFDLENBQUM7UUFFSSxXQUFNLEdBQTBDLE1BQU0sQ0FDM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLHVDQUF1QztRQUM5RSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxDQUM5RCxDQUFDO0tBaUNIO0lBL0JDOztPQUVHO0lBQ0ksUUFBUSxDQUFDLElBQW9CO1FBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNJLFVBQVUsQ0FBQyxNQUFjO1FBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFPTSxHQUFHLENBQUMsTUFBYyxFQUFFLE9BQXdCO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQzs4R0ExQ1UscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FEVCxNQUFNOzsyRkFDbEIscUJBQXFCO2tCQURqQyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaFBhcnR9IGZyb20gJy4vybV3b3JrYmVuY2gtcGFydC5tb2RlbCc7XG5pbXBvcnQge2NvbmNhdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1dvcmtiZW5jaE9iamVjdFJlZ2lzdHJ5fSBmcm9tICcuLi9yZWdpc3RyeS93b3JrYmVuY2gtb2JqZWN0LXJlZ2lzdHJ5JztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtidWZmZXJMYXRlc3RVbnRpbExheW91dENoYW5nZX0gZnJvbSAnLi4vY29tbW9uL29wZXJhdG9ycyc7XG5cbi8qKlxuICogUmVnaXN0cnkgZm9yIHtAbGluayBXb3JrYmVuY2hQYXJ0fSBtb2RlbCBvYmplY3RzLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hQYXJ0UmVnaXN0cnkgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX3JlZ2lzdHJ5ID0gbmV3IFdvcmtiZW5jaE9iamVjdFJlZ2lzdHJ5PHN0cmluZywgybVXb3JrYmVuY2hQYXJ0Pih7XG4gICAga2V5Rm46IHBhcnQgPT4gcGFydC5pZCxcbiAgICBudWxsT2JqZWN0RXJyb3JGbjogcGFydElkID0+IEVycm9yKGBbTnVsbFBhcnRFcnJvcl0gUGFydCAnJHtwYXJ0SWR9JyBub3QgZm91bmQuYCksXG4gIH0pO1xuXG4gIHB1YmxpYyBwYXJ0cyQ6IE9ic2VydmFibGU8cmVhZG9ubHkgybVXb3JrYmVuY2hQYXJ0W10+ID0gY29uY2F0KFxuICAgIHRoaXMuX3JlZ2lzdHJ5Lm9iamVjdHMkLnBpcGUodGFrZSgxKSksIC8vIGltbWVkaWF0ZSBlbWlzc2lvbiB1cG9uIHN1YnNjcmlwdGlvblxuICAgIHRoaXMuX3JlZ2lzdHJ5Lm9iamVjdHMkLnBpcGUoYnVmZmVyTGF0ZXN0VW50aWxMYXlvdXRDaGFuZ2UoKSksXG4gICk7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBnaXZlbiBwYXJ0LlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyKHBhcnQ6IMm1V29ya2JlbmNoUGFydCk6IHZvaWQge1xuICAgIHRoaXMuX3JlZ2lzdHJ5LnJlZ2lzdGVyKHBhcnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXJzIHNwZWNpZmllZCBwYXJ0IGFuZCBkZXN0cm95cyBpdC5cbiAgICovXG4gIHB1YmxpYyB1bnJlZ2lzdGVyKHBhcnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fcmVnaXN0cnkudW5yZWdpc3RlcihwYXJ0SWQpPy5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUge0BsaW5rIMm1V29ya2JlbmNoUGFydH0gb2YgdGhlIGdpdmVuIGlkZW50aXR5LiBJZiBub3QgZm91bmQsIGJ5IGRlZmF1bHQsIHRocm93cyBhbiBlcnJvciB1bmxlc3Mgc2V0dGluZyB0aGUgYG9yRWxzZU51bGxgIG9wdGlvbi5cbiAgICovXG4gIHB1YmxpYyBnZXQocGFydElkOiBzdHJpbmcpOiDJtVdvcmtiZW5jaFBhcnQ7XG4gIHB1YmxpYyBnZXQocGFydElkOiBzdHJpbmcsIG9wdGlvbnM6IHtvckVsc2U6IG51bGx9KTogybVXb3JrYmVuY2hQYXJ0IHwgbnVsbDtcbiAgcHVibGljIGdldChwYXJ0SWQ6IHN0cmluZywgb3B0aW9ucz86IHtvckVsc2U6IG51bGx9KTogybVXb3JrYmVuY2hQYXJ0IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5LmdldChwYXJ0SWQsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXJ0cygpOiByZWFkb25seSDJtVdvcmtiZW5jaFBhcnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5Lm9iamVjdHM7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fcmVnaXN0cnkub2JqZWN0cy5mb3JFYWNoKHBhcnQgPT4gcGFydC5kZXN0cm95KCkpO1xuICAgIHRoaXMuX3JlZ2lzdHJ5LmNsZWFyKCk7XG4gIH1cbn1cbiJdfQ==
|
|
15
|
+
export const WORKBENCH_PART_REGISTRY = new InjectionToken('WORKBENCH_PART_REGISTRY', {
|
|
16
|
+
providedIn: 'root',
|
|
17
|
+
factory: () => new WorkbenchObjectRegistry({
|
|
18
|
+
keyFn: part => part.id,
|
|
19
|
+
nullObjectErrorFn: partId => Error(`[NullPartError] Part '${partId}' not found.`),
|
|
20
|
+
onUnregister: part => part.destroy(),
|
|
21
|
+
}),
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBhcnQucmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3dvcmtiZW5jaC1wYXJ0LnJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUU5RTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFrRCx5QkFBeUIsRUFBRTtJQUNwSSxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSx1QkFBdUIsQ0FBeUI7UUFDakUsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDdEIsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMseUJBQXlCLE1BQU0sY0FBYyxDQUFDO1FBQ2pGLFlBQVksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7S0FDckMsQ0FBQztDQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoUGFydH0gZnJvbSAnLi/JtXdvcmtiZW5jaC1wYXJ0Lm1vZGVsJztcbmltcG9ydCB7V29ya2JlbmNoT2JqZWN0UmVnaXN0cnl9IGZyb20gJy4uL3JlZ2lzdHJ5L3dvcmtiZW5jaC1vYmplY3QtcmVnaXN0cnknO1xuXG4vKipcbiAqIFJlZ2lzdHJ5IGZvciB7QGxpbmsgV29ya2JlbmNoUGFydH0gbW9kZWwgb2JqZWN0cy5cbiAqL1xuZXhwb3J0IGNvbnN0IFdPUktCRU5DSF9QQVJUX1JFR0lTVFJZID0gbmV3IEluamVjdGlvblRva2VuPFdvcmtiZW5jaE9iamVjdFJlZ2lzdHJ5PHN0cmluZywgybVXb3JrYmVuY2hQYXJ0Pj4oJ1dPUktCRU5DSF9QQVJUX1JFR0lTVFJZJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IG5ldyBXb3JrYmVuY2hPYmplY3RSZWdpc3RyeTxzdHJpbmcsIMm1V29ya2JlbmNoUGFydD4oe1xuICAgIGtleUZuOiBwYXJ0ID0+IHBhcnQuaWQsXG4gICAgbnVsbE9iamVjdEVycm9yRm46IHBhcnRJZCA9PiBFcnJvcihgW051bGxQYXJ0RXJyb3JdIFBhcnQgJyR7cGFydElkfScgbm90IGZvdW5kLmApLFxuICAgIG9uVW5yZWdpc3RlcjogcGFydCA9PiBwYXJ0LmRlc3Ryb3koKSxcbiAgfSksXG59KTtcbiJdfQ==
|
|
@@ -7,33 +7,35 @@
|
|
|
7
7
|
*
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
11
|
-
import { inject, Injector, runInInjectionContext } from '@angular/core';
|
|
10
|
+
import { assertNotInReactiveContext, computed, effect, EnvironmentInjector, inject, Injector, runInInjectionContext, signal } from '@angular/core';
|
|
12
11
|
import { Arrays } from '@scion/toolkit/util';
|
|
13
12
|
import { WorkbenchPart } from './workbench-part.model';
|
|
14
|
-
import {
|
|
15
|
-
import { WorkbenchViewRegistry } from '../view/workbench-view.registry';
|
|
13
|
+
import { WORKBENCH_VIEW_REGISTRY } from '../view/workbench-view.registry';
|
|
16
14
|
import { ComponentPortal } from '@angular/cdk/portal';
|
|
17
15
|
import { ActivationInstantProvider } from '../activation-instant.provider';
|
|
18
|
-
import {
|
|
19
|
-
import { filterArray } from '@scion/toolkit/operators';
|
|
20
|
-
import { distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';
|
|
16
|
+
import { filter } from 'rxjs/operators';
|
|
21
17
|
import { WorkbenchLayoutService } from '../layout/workbench-layout.service';
|
|
18
|
+
import { NavigationStart, Router } from '@angular/router';
|
|
19
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
20
|
+
import { ɵWorkbenchRouter } from '../routing/ɵworkbench-router.service';
|
|
21
|
+
import { WORKBENCH_PART_ACTION_REGISTRY } from './workbench-part-action.registry';
|
|
22
22
|
export class ɵWorkbenchPart {
|
|
23
23
|
constructor(id, options) {
|
|
24
24
|
this.id = id;
|
|
25
|
-
this.
|
|
25
|
+
this._partEnvironmentInjector = inject(EnvironmentInjector);
|
|
26
|
+
this._workbenchRouter = inject(ɵWorkbenchRouter);
|
|
26
27
|
this._workbenchLayoutService = inject(WorkbenchLayoutService);
|
|
27
|
-
this._viewRegistry = inject(
|
|
28
|
+
this._viewRegistry = inject(WORKBENCH_VIEW_REGISTRY);
|
|
28
29
|
this._activationInstantProvider = inject(ActivationInstantProvider);
|
|
29
|
-
this._partActionRegistry = inject(
|
|
30
|
-
this.
|
|
31
|
-
this.
|
|
32
|
-
this.
|
|
33
|
-
this.activeViewId$ = new BehaviorSubject(null);
|
|
30
|
+
this._partActionRegistry = inject(WORKBENCH_PART_ACTION_REGISTRY);
|
|
31
|
+
this.active = signal(false);
|
|
32
|
+
this.viewIds = signal([], { equal: (a, b) => Arrays.isEqual(a, b, { exactOrder: true }) });
|
|
33
|
+
this.activeViewId = signal(null);
|
|
34
34
|
this._partComponent = options.component;
|
|
35
|
-
this.actions
|
|
35
|
+
this.actions = this.selectPartActions();
|
|
36
36
|
this.touchOnActivate();
|
|
37
|
+
this.installModelUpdater();
|
|
38
|
+
this.onLayoutChange(this._workbenchRouter.getCurrentNavigationContext().layout);
|
|
37
39
|
}
|
|
38
40
|
/**
|
|
39
41
|
* Constructs the portal using the given injection context.
|
|
@@ -49,32 +51,17 @@ export class ɵWorkbenchPart {
|
|
|
49
51
|
return new ComponentPortal(this._partComponent, null, injector, null, null);
|
|
50
52
|
}
|
|
51
53
|
/**
|
|
52
|
-
* Method invoked
|
|
54
|
+
* Method invoked when the workbench layout has changed.
|
|
55
|
+
*
|
|
56
|
+
* This method is called on every layout change.
|
|
53
57
|
*/
|
|
54
58
|
onLayoutChange(layout) {
|
|
55
59
|
this._isInMainArea ??= layout.hasPart(this.id, { grid: 'mainArea' });
|
|
56
|
-
const
|
|
60
|
+
const mPart = layout.part({ partId: this.id });
|
|
57
61
|
const active = layout.activePart({ grid: this._isInMainArea ? 'mainArea' : 'workbench' })?.id === this.id;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (this.active !== active) {
|
|
62
|
-
this.active$.next(active);
|
|
63
|
-
}
|
|
64
|
-
// Update views if changed
|
|
65
|
-
if (!Arrays.isEqual(prevViewIds, currViewIds, { exactOrder: true })) {
|
|
66
|
-
this.viewIds$.next(currViewIds);
|
|
67
|
-
}
|
|
68
|
-
// Update active view if changed
|
|
69
|
-
if (this.activeViewId !== part.activeViewId) {
|
|
70
|
-
this.activeViewId$.next(part.activeViewId ?? null);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
get viewIds() {
|
|
74
|
-
return this.viewIds$.value;
|
|
75
|
-
}
|
|
76
|
-
get activeViewId() {
|
|
77
|
-
return this.activeViewId$.value;
|
|
62
|
+
this.active.set(active);
|
|
63
|
+
this.viewIds.set(mPart.views.map(view => view.id));
|
|
64
|
+
this.activeViewId.set(mPart.activeViewId ?? null);
|
|
78
65
|
}
|
|
79
66
|
/**
|
|
80
67
|
* Activates this part.
|
|
@@ -82,16 +69,14 @@ export class ɵWorkbenchPart {
|
|
|
82
69
|
* Note: This instruction runs asynchronously via URL routing.
|
|
83
70
|
*/
|
|
84
71
|
async activate() {
|
|
85
|
-
|
|
72
|
+
assertNotInReactiveContext(this.activate, 'Call WorkbenchPart.activate() in a non-reactive (non-tracking) context, such as within the untracked() function.');
|
|
73
|
+
if (this.active()) {
|
|
86
74
|
return true;
|
|
87
75
|
}
|
|
88
|
-
const currentLayout = this._workbenchLayoutService.layout;
|
|
76
|
+
const currentLayout = this._workbenchLayoutService.layout();
|
|
89
77
|
return this._workbenchRouter.navigate(layout => currentLayout === layout ? layout.activatePart(this.id) : null, // cancel navigation if the layout has become stale
|
|
90
78
|
{ skipLocationChange: true });
|
|
91
79
|
}
|
|
92
|
-
get active() {
|
|
93
|
-
return this.active$.value;
|
|
94
|
-
}
|
|
95
80
|
get activationInstant() {
|
|
96
81
|
return this._activationInstant;
|
|
97
82
|
}
|
|
@@ -99,32 +84,63 @@ export class ɵWorkbenchPart {
|
|
|
99
84
|
return this._isInMainArea ?? false;
|
|
100
85
|
}
|
|
101
86
|
/**
|
|
102
|
-
*
|
|
87
|
+
* Reference to the handle's injector. The injector will be destroyed when removing the part.
|
|
88
|
+
*/
|
|
89
|
+
get injector() {
|
|
90
|
+
return this._partEnvironmentInjector;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Selects actions matching this part and the currently active view.
|
|
103
94
|
*/
|
|
104
|
-
|
|
95
|
+
selectPartActions() {
|
|
105
96
|
const injector = inject(Injector);
|
|
106
|
-
return
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
97
|
+
return computed(() => {
|
|
98
|
+
// Filter actions by calling `canMatch`, if any.
|
|
99
|
+
return this._partActionRegistry.objects().filter(action => {
|
|
100
|
+
// - Run function in injection context for `canMatch` function to inject dependencies.
|
|
101
|
+
// - Run function in a reactive context to track signals. (e.g., view's active state).
|
|
102
|
+
return runInInjectionContext(injector, () => action.canMatch?.(this) ?? true);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
110
105
|
}
|
|
111
106
|
/**
|
|
112
107
|
* Updates the activation instant when this part is activated.
|
|
113
108
|
*/
|
|
114
109
|
touchOnActivate() {
|
|
115
|
-
|
|
116
|
-
|
|
110
|
+
effect(() => {
|
|
111
|
+
if (this.active()) {
|
|
112
|
+
this._activationInstant = this._activationInstantProvider.now();
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Sets up automatic synchronization of {@link WorkbenchPart} on every layout change.
|
|
118
|
+
*
|
|
119
|
+
* If the operation is cancelled (e.g., due to a navigation failure), it reverts the changes.
|
|
120
|
+
*/
|
|
121
|
+
installModelUpdater() {
|
|
122
|
+
inject(Router).events
|
|
123
|
+
.pipe(filter((event) => event instanceof NavigationStart), takeUntilDestroyed())
|
|
117
124
|
.subscribe(() => {
|
|
118
|
-
|
|
125
|
+
const navigationContext = this._workbenchRouter.getCurrentNavigationContext();
|
|
126
|
+
const { layout, previousLayout, layoutDiff } = navigationContext;
|
|
127
|
+
if (layoutDiff.removedParts.includes(this.id)) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
this.onLayoutChange(layout);
|
|
131
|
+
// Revert change in case the navigation fails.
|
|
132
|
+
if (previousLayout?.hasPart(this.id)) {
|
|
133
|
+
navigationContext.registerUndoAction(() => this.onLayoutChange(previousLayout));
|
|
134
|
+
}
|
|
119
135
|
});
|
|
120
136
|
}
|
|
121
137
|
destroy() {
|
|
122
|
-
this.
|
|
138
|
+
this._partEnvironmentInjector.destroy();
|
|
123
139
|
// IMPORTANT: Only detach the active view, not destroy it, because views are explicitly destroyed when view handles are removed.
|
|
124
140
|
// Otherwise, moving the last view to another part would fail because the view would already be destroyed.
|
|
125
|
-
if (this.activeViewId) {
|
|
126
|
-
this._viewRegistry.get(this.activeViewId, { orElse: null })?.portal.detach();
|
|
141
|
+
if (this.activeViewId()) {
|
|
142
|
+
this._viewRegistry.get(this.activeViewId(), { orElse: null })?.portal.detach();
|
|
127
143
|
}
|
|
128
144
|
}
|
|
129
145
|
}
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiybV3b3JrYmVuY2gtcGFydC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3BhcnQvybV3b3JrYmVuY2gtcGFydC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBQyxlQUFlLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFM0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsZUFBZSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUcxRSxNQUFNLE9BQU8sY0FBYztJQW1CekIsWUFBNEIsRUFBVSxFQUFFLE9BQTRFO1FBQXhGLE9BQUUsR0FBRixFQUFFLENBQVE7UUFmckIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGVB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Q0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNqRSwyRUFBMkU7UUFDM0UsV0FBVyxDQUFDLENBQUMsTUFBMkIsRUFBVyxFQUFFLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUM3SCxvQkFBb0IsRUFBRSxDQUN2QixDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ssZUFBZTtRQUNyQixJQUFJLENBQUMsT0FBTzthQUNULElBQUksQ0FDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQ2YsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixnSUFBZ0k7UUFDaEksMEdBQTBHO1FBQzFHLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0UsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtpbmplY3QsIEluamVjdG9yLCBydW5JbkluamVjdGlvbkNvbnRleHR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBcnJheXN9IGZyb20gJ0BzY2lvbi90b29sa2l0L3V0aWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hQYXJ0QWN0aW9ufSBmcm9tICcuLi93b3JrYmVuY2gubW9kZWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hQYXJ0fSBmcm9tICcuL3dvcmtiZW5jaC1wYXJ0Lm1vZGVsJztcbmltcG9ydCB7V29ya2JlbmNoUm91dGVyfSBmcm9tICcuLi9yb3V0aW5nL3dvcmtiZW5jaC1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQge1dvcmtiZW5jaFZpZXdSZWdpc3RyeX0gZnJvbSAnLi4vdmlldy93b3JrYmVuY2gtdmlldy5yZWdpc3RyeSc7XG5pbXBvcnQge0NvbXBvbmVudFBvcnRhbCwgQ29tcG9uZW50VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge0FjdGl2YXRpb25JbnN0YW50UHJvdmlkZXJ9IGZyb20gJy4uL2FjdGl2YXRpb24taW5zdGFudC5wcm92aWRlcic7XG5pbXBvcnQge1dvcmtiZW5jaFBhcnRBY3Rpb25SZWdpc3RyeX0gZnJvbSAnLi93b3JrYmVuY2gtcGFydC1hY3Rpb24ucmVnaXN0cnknO1xuaW1wb3J0IHtmaWx0ZXJBcnJheX0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb3BlcmF0b3JzJztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7ybVXb3JrYmVuY2hMYXlvdXR9IGZyb20gJy4uL2xheW91dC/JtXdvcmtiZW5jaC1sYXlvdXQnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRTZXJ2aWNlfSBmcm9tICcuLi9sYXlvdXQvd29ya2JlbmNoLWxheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7Vmlld0lkfSBmcm9tICcuLi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIMm1V29ya2JlbmNoUGFydCBpbXBsZW1lbnRzIFdvcmtiZW5jaFBhcnQge1xuXG4gIHByaXZhdGUgX2FjdGl2YXRpb25JbnN0YW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfd29ya2JlbmNoUm91dGVyID0gaW5qZWN0KFdvcmtiZW5jaFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dvcmtiZW5jaExheW91dFNlcnZpY2UgPSBpbmplY3QoV29ya2JlbmNoTGF5b3V0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdSZWdpc3RyeSA9IGluamVjdChXb3JrYmVuY2hWaWV3UmVnaXN0cnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmF0aW9uSW5zdGFudFByb3ZpZGVyID0gaW5qZWN0KEFjdGl2YXRpb25JbnN0YW50UHJvdmlkZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJ0QWN0aW9uUmVnaXN0cnkgPSBpbmplY3QoV29ya2JlbmNoUGFydEFjdGlvblJlZ2lzdHJ5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFydENvbXBvbmVudDogQ29tcG9uZW50VHlwZTxQYXJ0Q29tcG9uZW50IHwgTWFpbkFyZWFMYXlvdXRDb21wb25lbnQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHZpZXdJZHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxWaWV3SWRbXT4oW10pO1xuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlVmlld0lkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Vmlld0lkIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBhY3Rpb25zJDogT2JzZXJ2YWJsZTxyZWFkb25seSBXb3JrYmVuY2hQYXJ0QWN0aW9uW10+O1xuXG4gIHByaXZhdGUgX2lzSW5NYWluQXJlYTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZywgb3B0aW9uczoge2NvbXBvbmVudDogQ29tcG9uZW50VHlwZTxQYXJ0Q29tcG9uZW50IHwgTWFpbkFyZWFMYXlvdXRDb21wb25lbnQ+fSkge1xuICAgIHRoaXMuX3BhcnRDb21wb25lbnQgPSBvcHRpb25zLmNvbXBvbmVudDtcbiAgICB0aGlzLmFjdGlvbnMkID0gdGhpcy5vYnNlcnZlUGFydEFjdGlvbnMkKCk7XG4gICAgdGhpcy50b3VjaE9uQWN0aXZhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIHRoZSBwb3J0YWwgdXNpbmcgdGhlIGdpdmVuIGluamVjdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZVBvcnRhbEZyb21JbmplY3Rpb25Db250ZXh0KGluamVjdGlvbkNvbnRleHQ6IEluamVjdG9yKTogQ29tcG9uZW50UG9ydGFsPFBhcnRDb21wb25lbnQgfCBNYWluQXJlYUxheW91dENvbXBvbmVudD4ge1xuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHBhcmVudDogaW5qZWN0aW9uQ29udGV4dCxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7cHJvdmlkZTogybVXb3JrYmVuY2hQYXJ0LCB1c2VWYWx1ZTogdGhpc30sXG4gICAgICAgIHtwcm92aWRlOiBXb3JrYmVuY2hQYXJ0LCB1c2VFeGlzdGluZzogybVXb3JrYmVuY2hQYXJ0fSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwodGhpcy5fcGFydENvbXBvbmVudCwgbnVsbCwgaW5qZWN0b3IsIG51bGwsIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBpbnZva2VkIHRvIHVwZGF0ZSB0aGlzIHdvcmtiZW5jaCBtb2RlbCBvYmplY3Qgd2hlbiB0aGUgd29ya2JlbmNoIGxheW91dCBjaGFuZ2VzLlxuICAgKi9cbiAgcHVibGljIG9uTGF5b3V0Q2hhbmdlKGxheW91dDogybVXb3JrYmVuY2hMYXlvdXQpOiB2b2lkIHtcbiAgICB0aGlzLl9pc0luTWFpbkFyZWEgPz89IGxheW91dC5oYXNQYXJ0KHRoaXMuaWQsIHtncmlkOiAnbWFpbkFyZWEnfSk7XG4gICAgY29uc3QgcGFydCA9IGxheW91dC5wYXJ0KHtwYXJ0SWQ6IHRoaXMuaWR9KTtcbiAgICBjb25zdCBhY3RpdmUgPSBsYXlvdXQuYWN0aXZlUGFydCh7Z3JpZDogdGhpcy5faXNJbk1haW5BcmVhID8gJ21haW5BcmVhJyA6ICd3b3JrYmVuY2gnfSk/LmlkID09PSB0aGlzLmlkO1xuICAgIGNvbnN0IHByZXZWaWV3SWRzID0gdGhpcy52aWV3SWRzJC52YWx1ZTtcbiAgICBjb25zdCBjdXJyVmlld0lkcyA9IHBhcnQudmlld3MubWFwKHZpZXcgPT4gdmlldy5pZCk7XG5cbiAgICAvLyBVcGRhdGUgYWN0aXZlIHBhcnQgaWYgY2hhbmdlZFxuICAgIGlmICh0aGlzLmFjdGl2ZSAhPT0gYWN0aXZlKSB7XG4gICAgICB0aGlzLmFjdGl2ZSQubmV4dChhY3RpdmUpO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB2aWV3cyBpZiBjaGFuZ2VkXG4gICAgaWYgKCFBcnJheXMuaXNFcXVhbChwcmV2Vmlld0lkcywgY3VyclZpZXdJZHMsIHtleGFjdE9yZGVyOiB0cnVlfSkpIHtcbiAgICAgIHRoaXMudmlld0lkcyQubmV4dChjdXJyVmlld0lkcyk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIGFjdGl2ZSB2aWV3IGlmIGNoYW5nZWRcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3SWQgIT09IHBhcnQuYWN0aXZlVmlld0lkKSB7XG4gICAgICB0aGlzLmFjdGl2ZVZpZXdJZCQubmV4dChwYXJ0LmFjdGl2ZVZpZXdJZCA/PyBudWxsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpZXdJZHMoKTogVmlld0lkW10ge1xuICAgIHJldHVybiB0aGlzLnZpZXdJZHMkLnZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVWaWV3SWQoKTogVmlld0lkIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlld0lkJC52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgdGhpcyBwYXJ0LlxuICAgKlxuICAgKiBOb3RlOiBUaGlzIGluc3RydWN0aW9uIHJ1bnMgYXN5bmNocm9ub3VzbHkgdmlhIFVSTCByb3V0aW5nLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGFjdGl2YXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudExheW91dCA9IHRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2UubGF5b3V0O1xuICAgIHJldHVybiB0aGlzLl93b3JrYmVuY2hSb3V0ZXIubmF2aWdhdGUoXG4gICAgICBsYXlvdXQgPT4gY3VycmVudExheW91dCA9PT0gbGF5b3V0ID8gbGF5b3V0LmFjdGl2YXRlUGFydCh0aGlzLmlkKSA6IG51bGwsIC8vIGNhbmNlbCBuYXZpZ2F0aW9uIGlmIHRoZSBsYXlvdXQgaGFzIGJlY29tZSBzdGFsZVxuICAgICAge3NraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZX0sIC8vIGRvIG5vdCBhZGQgcGFydCBhY3RpdmF0aW9uIGludG8gYnJvd3NlciBoaXN0b3J5IHN0YWNrXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZSQudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2YXRpb25JbnN0YW50KCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2YXRpb25JbnN0YW50O1xuICB9XG5cbiAgcHVibGljIGdldCBpc0luTWFpbkFyZWEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzSW5NYWluQXJlYSA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhY3Rpb25zIHRoYXQgaGF2ZSBjb250cmlidXRlZCB0byB0aGlzIHBhcnQgYW5kIHRoZSBjdXJyZW50bHkgYWN0aXZlIHZpZXcuXG4gICAqL1xuICBwcml2YXRlIG9ic2VydmVQYXJ0QWN0aW9ucyQoKTogT2JzZXJ2YWJsZTxXb3JrYmVuY2hQYXJ0QWN0aW9uW10+IHtcbiAgICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnRBY3Rpb25SZWdpc3RyeS5hY3Rpb25zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChhY3Rpb25zID0+IHRoaXMuYWN0aXZlVmlld0lkJC5waXBlKG1hcCgoKSA9PiBhY3Rpb25zKSkpLFxuICAgICAgICAvLyBSdW4gaW4gaW5qZWN0aW9uIGNvbnRleHQgZm9yIGBjYW5NYXRjaGAgZnVuY3Rpb24gdG8gaW5qZWN0IGRlcGVuZGVuY2llcy5cbiAgICAgICAgZmlsdGVyQXJyYXkoKGFjdGlvbjogV29ya2JlbmNoUGFydEFjdGlvbik6IGJvb2xlYW4gPT4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCAoKSA9PiBhY3Rpb24uY2FuTWF0Y2g/Lih0aGlzKSA/PyB0cnVlKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGFjdGl2YXRpb24gaW5zdGFudCB3aGVuIHRoaXMgcGFydCBpcyBhY3RpdmF0ZWQuXG4gICAqL1xuICBwcml2YXRlIHRvdWNoT25BY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fYWN0aXZhdGlvbkluc3RhbnQgPSB0aGlzLl9hY3RpdmF0aW9uSW5zdGFudFByb3ZpZGVyLm5vdygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgLy8gSU1QT1JUQU5UOiBPbmx5IGRldGFjaCB0aGUgYWN0aXZlIHZpZXcsIG5vdCBkZXN0cm95IGl0LCBiZWNhdXNlIHZpZXdzIGFyZSBleHBsaWNpdGx5IGRlc3Ryb3llZCB3aGVuIHZpZXcgaGFuZGxlcyBhcmUgcmVtb3ZlZC5cbiAgICAvLyBPdGhlcndpc2UsIG1vdmluZyB0aGUgbGFzdCB2aWV3IHRvIGFub3RoZXIgcGFydCB3b3VsZCBmYWlsIGJlY2F1c2UgdGhlIHZpZXcgd291bGQgYWxyZWFkeSBiZSBkZXN0cm95ZWQuXG4gICAgaWYgKHRoaXMuYWN0aXZlVmlld0lkKSB7XG4gICAgICB0aGlzLl92aWV3UmVnaXN0cnkuZ2V0KHRoaXMuYWN0aXZlVmlld0lkLCB7b3JFbHNlOiBudWxsfSk/LnBvcnRhbC5kZXRhY2goKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcHNldWRvLXR5cGUgZm9yIHRoZSBhY3R1YWwge0BsaW5rIFBhcnRDb21wb25lbnR9IHdoaWNoIG11c3Qgbm90IGJlIHJlZmVyZW5jZWQgaW4gb3JkZXIgdG8gYXZvaWQgaW1wb3J0IGN5Y2xlcy5cbiAqL1xudHlwZSBQYXJ0Q29tcG9uZW50ID0gYW55O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwc2V1ZG8tdHlwZSBmb3IgdGhlIGFjdHVhbCB7QGxpbmsgTWFpbkFyZWFMYXlvdXRDb21wb25lbnR9IHdoaWNoIG11c3Qgbm90IGJlIHJlZmVyZW5jZWQgaW4gb3JkZXIgdG8gYXZvaWQgaW1wb3J0IGN5Y2xlcy5cbiAqL1xudHlwZSBNYWluQXJlYUxheW91dENvbXBvbmVudCA9IGFueTtcbiJdfQ==
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiybV3b3JrYmVuY2gtcGFydC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3BhcnQvybV3b3JrYmVuY2gtcGFydC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBQywwQkFBMEIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQVUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pKLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUUzQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFDLGVBQWUsRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFMUUsT0FBTyxFQUFRLGVBQWUsRUFBRSxNQUFNLEVBQWMsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RSxPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUVoRixNQUFNLE9BQU8sY0FBYztJQWtCekIsWUFBNEIsRUFBVSxFQUFFLE9BQTRFO1FBQXhGLE9BQUUsR0FBRixFQUFFLENBQVE7UUFoQnJCLDZCQUF3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QXdCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEMsZ0lBQWdJO1FBQ2hJLDBHQUEwRztRQUMxRyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUcsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoRixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuaW1wb3J0IHthc3NlcnROb3RJblJlYWN0aXZlQ29udGV4dCwgY29tcHV0ZWQsIGVmZmVjdCwgRW52aXJvbm1lbnRJbmplY3RvciwgaW5qZWN0LCBJbmplY3RvciwgcnVuSW5JbmplY3Rpb25Db250ZXh0LCBTaWduYWwsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FycmF5c30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5pbXBvcnQge1dvcmtiZW5jaFBhcnRBY3Rpb259IGZyb20gJy4uL3dvcmtiZW5jaC5tb2RlbCc7XG5pbXBvcnQge1dvcmtiZW5jaFBhcnR9IGZyb20gJy4vd29ya2JlbmNoLXBhcnQubW9kZWwnO1xuaW1wb3J0IHtXT1JLQkVOQ0hfVklFV19SRUdJU1RSWX0gZnJvbSAnLi4vdmlldy93b3JrYmVuY2gtdmlldy5yZWdpc3RyeSc7XG5pbXBvcnQge0NvbXBvbmVudFBvcnRhbCwgQ29tcG9uZW50VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge0FjdGl2YXRpb25JbnN0YW50UHJvdmlkZXJ9IGZyb20gJy4uL2FjdGl2YXRpb24taW5zdGFudC5wcm92aWRlcic7XG5pbXBvcnQge2ZpbHRlcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaExheW91dH0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dCc7XG5pbXBvcnQge1dvcmtiZW5jaExheW91dFNlcnZpY2V9IGZyb20gJy4uL2xheW91dC93b3JrYmVuY2gtbGF5b3V0LnNlcnZpY2UnO1xuaW1wb3J0IHtWaWV3SWR9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtFdmVudCwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIsIFJvdXRlckV2ZW50fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7ybVXb3JrYmVuY2hSb3V0ZXJ9IGZyb20gJy4uL3JvdXRpbmcvybV3b3JrYmVuY2gtcm91dGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtXT1JLQkVOQ0hfUEFSVF9BQ1RJT05fUkVHSVNUUll9IGZyb20gJy4vd29ya2JlbmNoLXBhcnQtYWN0aW9uLnJlZ2lzdHJ5JztcblxuZXhwb3J0IGNsYXNzIMm1V29ya2JlbmNoUGFydCBpbXBsZW1lbnRzIFdvcmtiZW5jaFBhcnQge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhcnRFbnZpcm9ubWVudEluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF93b3JrYmVuY2hSb3V0ZXIgPSBpbmplY3QoybVXb3JrYmVuY2hSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF93b3JrYmVuY2hMYXlvdXRTZXJ2aWNlID0gaW5qZWN0KFdvcmtiZW5jaExheW91dFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3UmVnaXN0cnkgPSBpbmplY3QoV09SS0JFTkNIX1ZJRVdfUkVHSVNUUlkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmF0aW9uSW5zdGFudFByb3ZpZGVyID0gaW5qZWN0KEFjdGl2YXRpb25JbnN0YW50UHJvdmlkZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJ0QWN0aW9uUmVnaXN0cnkgPSBpbmplY3QoV09SS0JFTkNIX1BBUlRfQUNUSU9OX1JFR0lTVFJZKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFydENvbXBvbmVudDogQ29tcG9uZW50VHlwZTxQYXJ0Q29tcG9uZW50IHwgTWFpbkFyZWFMYXlvdXRDb21wb25lbnQ+O1xuXG4gIHB1YmxpYyByZWFkb25seSBhY3RpdmUgPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgdmlld0lkcyA9IHNpZ25hbDxWaWV3SWRbXT4oW10sIHtlcXVhbDogKGEsIGIpID0+IEFycmF5cy5pc0VxdWFsKGEsIGIsIHtleGFjdE9yZGVyOiB0cnVlfSl9KTtcbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZVZpZXdJZCA9IHNpZ25hbDxWaWV3SWQgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IGFjdGlvbnM6IFNpZ25hbDxXb3JrYmVuY2hQYXJ0QWN0aW9uW10+O1xuXG4gIHByaXZhdGUgX2lzSW5NYWluQXJlYTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfYWN0aXZhdGlvbkluc3RhbnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZywgb3B0aW9uczoge2NvbXBvbmVudDogQ29tcG9uZW50VHlwZTxQYXJ0Q29tcG9uZW50IHwgTWFpbkFyZWFMYXlvdXRDb21wb25lbnQ+fSkge1xuICAgIHRoaXMuX3BhcnRDb21wb25lbnQgPSBvcHRpb25zLmNvbXBvbmVudDtcbiAgICB0aGlzLmFjdGlvbnMgPSB0aGlzLnNlbGVjdFBhcnRBY3Rpb25zKCk7XG4gICAgdGhpcy50b3VjaE9uQWN0aXZhdGUoKTtcbiAgICB0aGlzLmluc3RhbGxNb2RlbFVwZGF0ZXIoKTtcbiAgICB0aGlzLm9uTGF5b3V0Q2hhbmdlKHRoaXMuX3dvcmtiZW5jaFJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQoKS5sYXlvdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgdGhlIHBvcnRhbCB1c2luZyB0aGUgZ2l2ZW4gaW5qZWN0aW9uIGNvbnRleHQuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlUG9ydGFsRnJvbUluamVjdGlvbkNvbnRleHQoaW5qZWN0aW9uQ29udGV4dDogSW5qZWN0b3IpOiBDb21wb25lbnRQb3J0YWw8UGFydENvbXBvbmVudCB8IE1haW5BcmVhTGF5b3V0Q29tcG9uZW50PiB7XG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiBpbmplY3Rpb25Db250ZXh0LFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtwcm92aWRlOiDJtVdvcmtiZW5jaFBhcnQsIHVzZVZhbHVlOiB0aGlzfSxcbiAgICAgICAge3Byb3ZpZGU6IFdvcmtiZW5jaFBhcnQsIHVzZUV4aXN0aW5nOiDJtVdvcmtiZW5jaFBhcnR9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IENvbXBvbmVudFBvcnRhbCh0aGlzLl9wYXJ0Q29tcG9uZW50LCBudWxsLCBpbmplY3RvciwgbnVsbCwgbnVsbCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGludm9rZWQgd2hlbiB0aGUgd29ya2JlbmNoIGxheW91dCBoYXMgY2hhbmdlZC5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIGV2ZXJ5IGxheW91dCBjaGFuZ2UuXG4gICAqL1xuICBwcml2YXRlIG9uTGF5b3V0Q2hhbmdlKGxheW91dDogybVXb3JrYmVuY2hMYXlvdXQpOiB2b2lkIHtcbiAgICB0aGlzLl9pc0luTWFpbkFyZWEgPz89IGxheW91dC5oYXNQYXJ0KHRoaXMuaWQsIHtncmlkOiAnbWFpbkFyZWEnfSk7XG4gICAgY29uc3QgbVBhcnQgPSBsYXlvdXQucGFydCh7cGFydElkOiB0aGlzLmlkfSk7XG4gICAgY29uc3QgYWN0aXZlID0gbGF5b3V0LmFjdGl2ZVBhcnQoe2dyaWQ6IHRoaXMuX2lzSW5NYWluQXJlYSA/ICdtYWluQXJlYScgOiAnd29ya2JlbmNoJ30pPy5pZCA9PT0gdGhpcy5pZDtcbiAgICB0aGlzLmFjdGl2ZS5zZXQoYWN0aXZlKTtcbiAgICB0aGlzLnZpZXdJZHMuc2V0KG1QYXJ0LnZpZXdzLm1hcCh2aWV3ID0+IHZpZXcuaWQpKTtcbiAgICB0aGlzLmFjdGl2ZVZpZXdJZC5zZXQobVBhcnQuYWN0aXZlVmlld0lkID8/IG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlcyB0aGlzIHBhcnQuXG4gICAqXG4gICAqIE5vdGU6IFRoaXMgaW5zdHJ1Y3Rpb24gcnVucyBhc3luY2hyb25vdXNseSB2aWEgVVJMIHJvdXRpbmcuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYWN0aXZhdGUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgYXNzZXJ0Tm90SW5SZWFjdGl2ZUNvbnRleHQodGhpcy5hY3RpdmF0ZSwgJ0NhbGwgV29ya2JlbmNoUGFydC5hY3RpdmF0ZSgpIGluIGEgbm9uLXJlYWN0aXZlIChub24tdHJhY2tpbmcpIGNvbnRleHQsIHN1Y2ggYXMgd2l0aGluIHRoZSB1bnRyYWNrZWQoKSBmdW5jdGlvbi4nKTtcbiAgICBpZiAodGhpcy5hY3RpdmUoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudExheW91dCA9IHRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2UubGF5b3V0KCk7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtiZW5jaFJvdXRlci5uYXZpZ2F0ZShcbiAgICAgIGxheW91dCA9PiBjdXJyZW50TGF5b3V0ID09PSBsYXlvdXQgPyBsYXlvdXQuYWN0aXZhdGVQYXJ0KHRoaXMuaWQpIDogbnVsbCwgLy8gY2FuY2VsIG5hdmlnYXRpb24gaWYgdGhlIGxheW91dCBoYXMgYmVjb21lIHN0YWxlXG4gICAgICB7c2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlfSwgLy8gZG8gbm90IGFkZCBwYXJ0IGFjdGl2YXRpb24gaW50byBicm93c2VyIGhpc3Rvcnkgc3RhY2tcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmF0aW9uSW5zdGFudCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmF0aW9uSW5zdGFudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNJbk1haW5BcmVhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0luTWFpbkFyZWEgPz8gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBoYW5kbGUncyBpbmplY3Rvci4gVGhlIGluamVjdG9yIHdpbGwgYmUgZGVzdHJveWVkIHdoZW4gcmVtb3ZpbmcgdGhlIHBhcnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGluamVjdG9yKCk6IEluamVjdG9yIHtcbiAgICByZXR1cm4gdGhpcy5fcGFydEVudmlyb25tZW50SW5qZWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyBhY3Rpb25zIG1hdGNoaW5nIHRoaXMgcGFydCBhbmQgdGhlIGN1cnJlbnRseSBhY3RpdmUgdmlldy5cbiAgICovXG4gIHByaXZhdGUgc2VsZWN0UGFydEFjdGlvbnMoKTogU2lnbmFsPFdvcmtiZW5jaFBhcnRBY3Rpb25bXT4ge1xuICAgIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAvLyBGaWx0ZXIgYWN0aW9ucyBieSBjYWxsaW5nIGBjYW5NYXRjaGAsIGlmIGFueS5cbiAgICAgIHJldHVybiB0aGlzLl9wYXJ0QWN0aW9uUmVnaXN0cnkub2JqZWN0cygpLmZpbHRlcihhY3Rpb24gPT4ge1xuICAgICAgICAvLyAtIFJ1biBmdW5jdGlvbiBpbiBpbmplY3Rpb24gY29udGV4dCBmb3IgYGNhbk1hdGNoYCBmdW5jdGlvbiB0byBpbmplY3QgZGVwZW5kZW5jaWVzLlxuICAgICAgICAvLyAtIFJ1biBmdW5jdGlvbiBpbiBhIHJlYWN0aXZlIGNvbnRleHQgdG8gdHJhY2sgc2lnbmFscy4gKGUuZy4sIHZpZXcncyBhY3RpdmUgc3RhdGUpLlxuICAgICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCAoKSA9PiBhY3Rpb24uY2FuTWF0Y2g/Lih0aGlzKSA/PyB0cnVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGFjdGl2YXRpb24gaW5zdGFudCB3aGVuIHRoaXMgcGFydCBpcyBhY3RpdmF0ZWQuXG4gICAqL1xuICBwcml2YXRlIHRvdWNoT25BY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYWN0aXZlKCkpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZhdGlvbkluc3RhbnQgPSB0aGlzLl9hY3RpdmF0aW9uSW5zdGFudFByb3ZpZGVyLm5vdygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgYXV0b21hdGljIHN5bmNocm9uaXphdGlvbiBvZiB7QGxpbmsgV29ya2JlbmNoUGFydH0gb24gZXZlcnkgbGF5b3V0IGNoYW5nZS5cbiAgICpcbiAgICogSWYgdGhlIG9wZXJhdGlvbiBpcyBjYW5jZWxsZWQgKGUuZy4sIGR1ZSB0byBhIG5hdmlnYXRpb24gZmFpbHVyZSksIGl0IHJldmVydHMgdGhlIGNoYW5nZXMuXG4gICAqL1xuICBwcml2YXRlIGluc3RhbGxNb2RlbFVwZGF0ZXIoKTogdm9pZCB7XG4gICAgaW5qZWN0KFJvdXRlcikuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudDogRXZlbnQgfCBSb3V0ZXJFdmVudCk6IGV2ZW50IGlzIE5hdmlnYXRpb25TdGFydCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5hdmlnYXRpb25Db250ZXh0ID0gdGhpcy5fd29ya2JlbmNoUm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uQ29udGV4dCgpO1xuICAgICAgICBjb25zdCB7bGF5b3V0LCBwcmV2aW91c0xheW91dCwgbGF5b3V0RGlmZn0gPSBuYXZpZ2F0aW9uQ29udGV4dDtcblxuICAgICAgICBpZiAobGF5b3V0RGlmZi5yZW1vdmVkUGFydHMuaW5jbHVkZXModGhpcy5pZCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uTGF5b3V0Q2hhbmdlKGxheW91dCk7XG5cbiAgICAgICAgLy8gUmV2ZXJ0IGNoYW5nZSBpbiBjYXNlIHRoZSBuYXZpZ2F0aW9uIGZhaWxzLlxuICAgICAgICBpZiAocHJldmlvdXNMYXlvdXQ/Lmhhc1BhcnQodGhpcy5pZCkpIHtcbiAgICAgICAgICBuYXZpZ2F0aW9uQ29udGV4dC5yZWdpc3RlclVuZG9BY3Rpb24oKCkgPT4gdGhpcy5vbkxheW91dENoYW5nZShwcmV2aW91c0xheW91dCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3BhcnRFbnZpcm9ubWVudEluamVjdG9yLmRlc3Ryb3koKTtcbiAgICAvLyBJTVBPUlRBTlQ6IE9ubHkgZGV0YWNoIHRoZSBhY3RpdmUgdmlldywgbm90IGRlc3Ryb3kgaXQsIGJlY2F1c2Ugdmlld3MgYXJlIGV4cGxpY2l0bHkgZGVzdHJveWVkIHdoZW4gdmlldyBoYW5kbGVzIGFyZSByZW1vdmVkLlxuICAgIC8vIE90aGVyd2lzZSwgbW92aW5nIHRoZSBsYXN0IHZpZXcgdG8gYW5vdGhlciBwYXJ0IHdvdWxkIGZhaWwgYmVjYXVzZSB0aGUgdmlldyB3b3VsZCBhbHJlYWR5IGJlIGRlc3Ryb3llZC5cbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3SWQoKSkge1xuICAgICAgdGhpcy5fdmlld1JlZ2lzdHJ5LmdldCh0aGlzLmFjdGl2ZVZpZXdJZCgpISwge29yRWxzZTogbnVsbH0pPy5wb3J0YWwuZGV0YWNoKCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHBzZXVkby10eXBlIGZvciB0aGUgYWN0dWFsIHtAbGluayBQYXJ0Q29tcG9uZW50fSB3aGljaCBtdXN0IG5vdCBiZSByZWZlcmVuY2VkIGluIG9yZGVyIHRvIGF2b2lkIGltcG9ydCBjeWNsZXMuXG4gKi9cbnR5cGUgUGFydENvbXBvbmVudCA9IGFueTtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcHNldWRvLXR5cGUgZm9yIHRoZSBhY3R1YWwge0BsaW5rIE1haW5BcmVhTGF5b3V0Q29tcG9uZW50fSB3aGljaCBtdXN0IG5vdCBiZSByZWZlcmVuY2VkIGluIG9yZGVyIHRvIGF2b2lkIGltcG9ydCBjeWNsZXMuXG4gKi9cbnR5cGUgTWFpbkFyZWFMYXlvdXRDb21wb25lbnQgPSBhbnk7XG4iXX0=
|