@scion/workbench 18.0.0-beta.9 → 19.0.0-beta.1
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/design/_workbench-view-global-styles.scss +0 -1
- package/fesm2022/scion-workbench.mjs +8556 -8622
- package/fesm2022/scion-workbench.mjs.map +1 -1
- package/lib/common/css-class.util.d.ts +5 -0
- package/lib/common/math.util.d.ts +7 -0
- package/lib/common/objects.util.d.ts +1 -1
- package/lib/dialog/workbench-dialog.component.d.ts +1 -2
- package/lib/layout/migration/model/workbench-layout-migration-v6.model.d.ts +35 -0
- package/lib/layout/migration/workbench-layout-migration-v6.service.d.ts +12 -0
- package/lib/layout/workbench-layout.model.d.ts +0 -1
- package/lib/layout/workbench-layout.service.d.ts +10 -12
- package/lib/layout/workench-layout-serializer.service.d.ts +1 -2
- package/lib/part/part-action-bar/part-action-bar.component.d.ts +2 -6
- package/lib/part/part-bar/part-bar.component.d.ts +66 -48
- package/lib/part/view-tab/view-tab.component.d.ts +3 -3
- package/lib/public_api.d.ts +0 -2
- package/lib/routing/routing.util.d.ts +2 -2
- package/lib/view/view-move-handler.service.d.ts +16 -14
- package/lib/view/view.component.d.ts +1 -2
- package/lib/view//311/265workbench-view.model.d.ts +1 -9
- package/lib/view-dnd/grid-drop-targets.util.d.ts +1 -1
- package/lib/view-dnd/view-drag.service.d.ts +72 -49
- package/lib/view-dnd/view-tab-drag-image-renderer.service.d.ts +11 -36
- package/package.json +8 -10
- package/esm2022/lib/activation-instant.provider.mjs +0 -29
- package/esm2022/lib/common/animation-frame.observable.mjs +0 -37
- package/esm2022/lib/common/asserts.util.mjs +0 -31
- package/esm2022/lib/common/class-list.mjs +0 -99
- package/esm2022/lib/common/coerce-observable.pipe.mjs +0 -28
- package/esm2022/lib/common/disposable.mjs +0 -11
- package/esm2022/lib/common/dom.util.mjs +0 -100
- package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +0 -32
- package/esm2022/lib/common/instanceof.pipe.mjs +0 -26
- package/esm2022/lib/common/map-coerce.pipe.mjs +0 -28
- package/esm2022/lib/common/null-if-empty.pipe.mjs +0 -38
- package/esm2022/lib/common/objects.util.mjs +0 -40
- package/esm2022/lib/common/observables.mjs +0 -72
- package/esm2022/lib/common/operators.mjs +0 -27
- package/esm2022/lib/common/public_api.mjs +0 -11
- package/esm2022/lib/common/stringify-error.util.mjs +0 -19
- package/esm2022/lib/common/throw-error.util.mjs +0 -16
- package/esm2022/lib/common/typeof.pipe.mjs +0 -26
- package/esm2022/lib/common/uid.util.mjs +0 -22
- package/esm2022/lib/common//311/265destroy-ref.mjs +0 -36
- package/esm2022/lib/communication/workbench-broadcast-channel.mjs +0 -38
- package/esm2022/lib/content-projection/content-as-overlay.component.mjs +0 -114
- package/esm2022/lib/content-projection/workbench-element-references.mjs +0 -32
- package/esm2022/lib/dialog/dialog-footer/dialog-action-filter.pipe.mjs +0 -26
- package/esm2022/lib/dialog/dialog-footer/dialog-footer.component.mjs +0 -34
- package/esm2022/lib/dialog/dialog-footer/workbench-dialog-action.directive.mjs +0 -51
- package/esm2022/lib/dialog/dialog-footer/workbench-dialog-footer.directive.mjs +0 -46
- package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +0 -33
- package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +0 -46
- package/esm2022/lib/dialog/movable.directive.mjs +0 -126
- package/esm2022/lib/dialog/public_api.mjs +0 -15
- package/esm2022/lib/dialog/resizable.directive.mjs +0 -392
- package/esm2022/lib/dialog/workbench-dialog.component.mjs +0 -250
- package/esm2022/lib/dialog/workbench-dialog.mjs +0 -79
- package/esm2022/lib/dialog/workbench-dialog.options.mjs +0 -11
- package/esm2022/lib/dialog/workbench-dialog.registry.mjs +0 -73
- package/esm2022/lib/dialog/workbench-dialog.service.mjs +0 -96
- package/esm2022/lib/dialog//311/265workbench-dialog.mjs +0 -310
- package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +0 -98
- package/esm2022/lib/executor/latest-task-executor.mjs +0 -55
- package/esm2022/lib/executor/single-task-executor.mjs +0 -72
- package/esm2022/lib/filter-field/filter-field.component.mjs +0 -130
- package/esm2022/lib/glass-pane/blockable.mjs +0 -11
- package/esm2022/lib/glass-pane/blocking.mjs +0 -11
- package/esm2022/lib/glass-pane/glass-pane.directive.mjs +0 -120
- package/esm2022/lib/layout/grid-element/grid-element.component.mjs +0 -111
- package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +0 -97
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v2.model.mjs +0 -11
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v3.model.mjs +0 -11
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v4.model.mjs +0 -11
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +0 -11
- package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +0 -117
- package/esm2022/lib/layout/migration/workbench-layout-migration-v4.service.mjs +0 -57
- package/esm2022/lib/layout/migration/workbench-layout-migration-v5.service.mjs +0 -67
- package/esm2022/lib/layout/public_api.mjs +0 -12
- package/esm2022/lib/layout/stringifier.mjs +0 -70
- package/esm2022/lib/layout/workbench-layout.component.mjs +0 -90
- package/esm2022/lib/layout/workbench-layout.factory.mjs +0 -24
- package/esm2022/lib/layout/workbench-layout.mjs +0 -16
- package/esm2022/lib/layout/workbench-layout.model.mjs +0 -62
- package/esm2022/lib/layout/workbench-layout.service.mjs +0 -68
- package/esm2022/lib/layout/workbench-layouts.util.mjs +0 -58
- package/esm2022/lib/layout/workench-layout-serializer.service.mjs +0 -109
- package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +0 -54
- package/esm2022/lib/layout//311/265workbench-layout.mjs +0 -876
- package/esm2022/lib/logging/console-appender.service.mjs +0 -46
- package/esm2022/lib/logging/index.mjs +0 -15
- package/esm2022/lib/logging/logger-names.mjs +0 -32
- package/esm2022/lib/logging/logger.mjs +0 -36
- package/esm2022/lib/logging/logging-support.mjs +0 -26
- package/esm2022/lib/logging/logging.model.mjs +0 -45
- package/esm2022/lib/logging/public_api.mjs +0 -12
- package/esm2022/lib/logging//311/265logger.mjs +0 -73
- package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +0 -69
- package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +0 -28
- package/esm2022/lib/message-box/public_api.mjs +0 -11
- package/esm2022/lib/message-box/workbench-message-box.component.mjs +0 -102
- package/esm2022/lib/message-box/workbench-message-box.options.mjs +0 -2
- package/esm2022/lib/message-box/workbench-message-box.service.mjs +0 -39
- package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +0 -45
- package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +0 -71
- package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +0 -126
- package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +0 -36
- package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +0 -84
- package/esm2022/lib/microfrontend-platform/manifest-object-cache.service.mjs +0 -63
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +0 -54
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +0 -85
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +0 -140
- package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +0 -133
- package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +0 -113
- package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +0 -43
- package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +0 -101
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +0 -35
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.mjs +0 -88
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.mjs +0 -32
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +0 -121
- package/esm2022/lib/microfrontend-platform/microfrontend-notification/microfrontend-notification-intent-handler.service.mjs +0 -45
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.mjs +0 -39
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.mjs +0 -120
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.mjs +0 -55
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.mjs +0 -19
- package/esm2022/lib/microfrontend-platform/microfrontend-platform-config-loader.mjs +0 -13
- package/esm2022/lib/microfrontend-platform/microfrontend-platform.config.mjs +0 -11
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +0 -31
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +0 -132
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +0 -115
- package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +0 -21
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +0 -112
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +0 -313
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-workbench-view.model.mjs +0 -23
- package/esm2022/lib/microfrontend-platform/public_api.mjs +0 -13
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +0 -31
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +0 -127
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +0 -125
- package/esm2022/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.mjs +0 -32
- package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +0 -191
- package/esm2022/lib/migration/workbench-migration.mjs +0 -11
- package/esm2022/lib/migration/workbench-migrator.mjs +0 -38
- package/esm2022/lib/notification/notification-css-classes.pipe.mjs +0 -24
- package/esm2022/lib/notification/notification-list.component.mjs +0 -51
- package/esm2022/lib/notification/notification.component.mjs +0 -109
- package/esm2022/lib/notification/notification.config.mjs +0 -11
- package/esm2022/lib/notification/notification.mjs +0 -19
- package/esm2022/lib/notification/notification.service.mjs +0 -134
- package/esm2022/lib/notification/public_api.mjs +0 -12
- package/esm2022/lib/notification/text-notification.component.mjs +0 -23
- package/esm2022/lib/notification//311/265notification.mjs +0 -42
- package/esm2022/lib/page-not-found/page-not-found.component.mjs +0 -26
- package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +0 -31
- package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +0 -77
- package/esm2022/lib/part/part-bar/part-bar.component.mjs +0 -444
- package/esm2022/lib/part/part-portal.pipe.mjs +0 -35
- package/esm2022/lib/part/part.component.mjs +0 -135
- package/esm2022/lib/part/public_api.mjs +0 -13
- package/esm2022/lib/part/view-context-menu/accelerator-format.pipe.mjs +0 -31
- package/esm2022/lib/part/view-context-menu/text.component.mjs +0 -38
- package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +0 -89
- package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +0 -76
- package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +0 -340
- package/esm2022/lib/part/view-list/view-list.component.mjs +0 -117
- package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +0 -82
- package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +0 -60
- package/esm2022/lib/part/view-tab/view-tab.component.mjs +0 -218
- package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +0 -29
- package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +0 -81
- package/esm2022/lib/part/workbench-part-action.registry.mjs +0 -23
- package/esm2022/lib/part/workbench-part.model.mjs +0 -19
- package/esm2022/lib/part/workbench-part.registry.mjs +0 -23
- package/esm2022/lib/part//311/265workbench-part.model.mjs +0 -146
- package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v1.model.mjs +0 -11
- package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v2.model.mjs +0 -11
- package/esm2022/lib/perspective/migration/workbench-perspective-migration-v2.service.mjs +0 -57
- package/esm2022/lib/perspective/public_api.mjs +0 -11
- package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +0 -39
- package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +0 -72
- package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +0 -50
- package/esm2022/lib/perspective/workbench-perspective.model.mjs +0 -2
- package/esm2022/lib/perspective/workbench-perspective.registry.mjs +0 -23
- package/esm2022/lib/perspective/workbench-perspective.service.mjs +0 -180
- package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +0 -62
- package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +0 -210
- package/esm2022/lib/popup/popup.component.mjs +0 -124
- package/esm2022/lib/popup/popup.config.mjs +0 -100
- package/esm2022/lib/popup/popup.origin.mjs +0 -11
- package/esm2022/lib/popup/popup.service.mjs +0 -339
- package/esm2022/lib/popup/public_api.mjs +0 -12
- package/esm2022/lib/portal/wb-component-portal.mjs +0 -130
- package/esm2022/lib/portal/workbench-portal-outlet.directive.mjs +0 -68
- package/esm2022/lib/public_api.mjs +0 -32
- package/esm2022/lib/registry/workbench-object-registry.mjs +0 -104
- package/esm2022/lib/routing/empty-outlet/empty-outlet.component.mjs +0 -31
- package/esm2022/lib/routing/public_api.mjs +0 -14
- package/esm2022/lib/routing/routing.model.mjs +0 -11
- package/esm2022/lib/routing/routing.util.mjs +0 -215
- package/esm2022/lib/routing/url-segment-matcher.mjs +0 -46
- package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +0 -110
- package/esm2022/lib/routing/workbench-dialog-differ.mjs +0 -51
- package/esm2022/lib/routing/workbench-layout-differ.mjs +0 -61
- package/esm2022/lib/routing/workbench-message-box-differ.mjs +0 -51
- package/esm2022/lib/routing/workbench-navigational-states.mjs +0 -33
- package/esm2022/lib/routing/workbench-popup-differ.mjs +0 -51
- package/esm2022/lib/routing/workbench-route-data.mjs +0 -39
- package/esm2022/lib/routing/workbench-route-guards.mjs +0 -57
- package/esm2022/lib/routing/workbench-router-link.directive.mjs +0 -124
- package/esm2022/lib/routing/workbench-router.service.mjs +0 -19
- package/esm2022/lib/routing/workbench-url-observer.service.mjs +0 -305
- package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +0 -58
- package/esm2022/lib/routing//311/265location.mjs +0 -70
- package/esm2022/lib/routing//311/265workbench-router.service.mjs +0 -359
- package/esm2022/lib/startup/public_api.mjs +0 -12
- package/esm2022/lib/startup/splash/splash.component.mjs +0 -24
- package/esm2022/lib/startup/workbench-initializer.mjs +0 -96
- package/esm2022/lib/startup/workbench-launcher.service.mjs +0 -173
- package/esm2022/lib/storage/public_api.mjs +0 -11
- package/esm2022/lib/storage/workbench-storage.mjs +0 -37
- package/esm2022/lib/testing/public_api.mjs +0 -12
- package/esm2022/lib/testing/workbench-testing.module.mjs +0 -49
- package/esm2022/lib/testing/workbench.provider.mjs +0 -60
- package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +0 -72
- package/esm2022/lib/view/public_api.mjs +0 -11
- package/esm2022/lib/view/view-context-provider.mjs +0 -31
- package/esm2022/lib/view/view-move-handler.service.mjs +0 -145
- package/esm2022/lib/view/view-portal.pipe.mjs +0 -33
- package/esm2022/lib/view/view.component.mjs +0 -128
- package/esm2022/lib/view/workbench-view.model.mjs +0 -12
- package/esm2022/lib/view/workbench-view.registry.mjs +0 -23
- package/esm2022/lib/view//311/265workbench-view.model.mjs +0 -375
- package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +0 -49
- package/esm2022/lib/view-dnd/requires-drop-zone.pipe.mjs +0 -58
- package/esm2022/lib/view-dnd/view-drag.service.mjs +0 -213
- package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +0 -89
- package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +0 -183
- package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +0 -224
- package/esm2022/lib/workbench-config.mjs +0 -15
- package/esm2022/lib/workbench-id.mjs +0 -21
- package/esm2022/lib/workbench.component.mjs +0 -146
- package/esm2022/lib/workbench.constants.mjs +0 -41
- package/esm2022/lib/workbench.model.mjs +0 -11
- package/esm2022/lib/workbench.module.mjs +0 -101
- package/esm2022/lib/workbench.provider.mjs +0 -111
- package/esm2022/lib/workbench.service.mjs +0 -29
- package/esm2022/lib//311/265workbench.service.mjs +0 -102
- package/esm2022/public-api.mjs +0 -14
- package/esm2022/scion-workbench.mjs +0 -5
- package/lib/common/animation-frame.observable.d.ts +0 -10
- package/lib/testing/public_api.d.ts +0 -2
- package/lib/testing/workbench-testing.module.d.ts +0 -40
- package/lib/testing/workbench.provider.d.ts +0 -31
- package/lib/workbench.module.d.ts +0 -65
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2018-2023 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 { Component, computed, DestroyRef, ElementRef, HostListener, inject, Injector, NgZone } from '@angular/core';
|
|
11
|
-
import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';
|
|
12
|
-
import { ComponentPortal } from '@angular/cdk/portal';
|
|
13
|
-
import { ViewListComponent, ViewListComponentInputs } from '../view-list/view-list.component';
|
|
14
|
-
import { WorkbenchPart } from '../workbench-part.model';
|
|
15
|
-
import { observeIn } from '@scion/toolkit/operators';
|
|
16
|
-
import { WORKBENCH_VIEW_REGISTRY } from '../../view/workbench-view.registry';
|
|
17
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
18
|
-
import * as i0 from "@angular/core";
|
|
19
|
-
export class ViewListButtonComponent {
|
|
20
|
-
static { this.SOUTH = { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }; }
|
|
21
|
-
static { this.NORTH = { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' }; }
|
|
22
|
-
constructor() {
|
|
23
|
-
this._host = inject(ElementRef);
|
|
24
|
-
this._overlay = inject(Overlay);
|
|
25
|
-
this._injector = inject(Injector);
|
|
26
|
-
this._zone = inject(NgZone);
|
|
27
|
-
const part = inject(WorkbenchPart);
|
|
28
|
-
const viewRegistry = inject(WORKBENCH_VIEW_REGISTRY);
|
|
29
|
-
this.scrolledOutOfViewTabCount = computed(() => part.viewIds()
|
|
30
|
-
.map(viewId => viewRegistry.get(viewId))
|
|
31
|
-
.reduce((count, view) => view.scrolledIntoView() ? count : count + 1, 0));
|
|
32
|
-
}
|
|
33
|
-
onClick() {
|
|
34
|
-
const positionStrategy = this._overlay.position()
|
|
35
|
-
.flexibleConnectedTo(this._host)
|
|
36
|
-
.withFlexibleDimensions(false)
|
|
37
|
-
.withPositions([ViewListButtonComponent.SOUTH, ViewListButtonComponent.NORTH]);
|
|
38
|
-
this._overlayRef = this._overlay.create(new OverlayConfig({
|
|
39
|
-
scrollStrategy: this._overlay.scrollStrategies.noop(),
|
|
40
|
-
disposeOnNavigation: true,
|
|
41
|
-
positionStrategy,
|
|
42
|
-
}));
|
|
43
|
-
const componentRef = this._overlayRef.attach(new ComponentPortal(ViewListComponent, null, Injector.create({
|
|
44
|
-
parent: this._injector,
|
|
45
|
-
providers: [{ provide: OverlayRef, useValue: this._overlayRef }],
|
|
46
|
-
})));
|
|
47
|
-
this.updatePositionInputOnPositionChange(componentRef, positionStrategy);
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Updates 'position' input of {@link ViewListComponent} when the overlay position changes.
|
|
51
|
-
*/
|
|
52
|
-
updatePositionInputOnPositionChange(componentRef, positionStrategy) {
|
|
53
|
-
positionStrategy.positionChanges
|
|
54
|
-
.pipe(
|
|
55
|
-
// Ensure running inside Angular as Angular CDK emits position changes outside the Angular zone.
|
|
56
|
-
// Otherwise, Angular would not invoke the `ngOnChanges` lifecycle hook when updating component input.
|
|
57
|
-
observeIn(fn => this._zone.run(fn)), takeUntilDestroyed(componentRef.injector.get(DestroyRef)))
|
|
58
|
-
.subscribe(positionChange => {
|
|
59
|
-
switch (positionChange.connectionPair) {
|
|
60
|
-
case ViewListButtonComponent.NORTH:
|
|
61
|
-
componentRef.setInput(ViewListComponentInputs.POSITION, 'north');
|
|
62
|
-
break;
|
|
63
|
-
case ViewListButtonComponent.SOUTH:
|
|
64
|
-
componentRef.setInput(ViewListComponentInputs.POSITION, 'south');
|
|
65
|
-
break;
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
ngOnDestroy() {
|
|
70
|
-
this._overlayRef?.dispose();
|
|
71
|
-
}
|
|
72
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
73
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ViewListButtonComponent, isStandalone: true, selector: "wb-view-list-button", host: { listeners: { "click": "onClick()" } }, ngImport: i0, template: "<span class=\"chevron scion-workbench-icons\">\n chevron_down\n</span>\n@if (scrolledOutOfViewTabCount(); as count) {\n <span class=\"count\">{{count}}</span>\n}\n", styles: [":host{display:flex;flex-direction:column;cursor:pointer;padding:.5em;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}:host>span.chevron{flex:none}:host>span.count{flex:none;font-size:var(--sci-workbench-part-hidden-tab-count-size)}@container style(--sci-workbench-part-hidden-tab-count-size: 0){:host>span.count{display:none}}\n"] }); }
|
|
74
|
-
}
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListButtonComponent, decorators: [{
|
|
76
|
-
type: Component,
|
|
77
|
-
args: [{ selector: 'wb-view-list-button', standalone: true, template: "<span class=\"chevron scion-workbench-icons\">\n chevron_down\n</span>\n@if (scrolledOutOfViewTabCount(); as count) {\n <span class=\"count\">{{count}}</span>\n}\n", styles: [":host{display:flex;flex-direction:column;cursor:pointer;padding:.5em;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}:host>span.chevron{flex:none}:host>span.count{flex:none;font-size:var(--sci-workbench-part-hidden-tab-count-size)}@container style(--sci-workbench-part-hidden-tab-count-size: 0){:host>span.count{display:none}}\n"] }]
|
|
78
|
-
}], ctorParameters: () => [], propDecorators: { onClick: [{
|
|
79
|
-
type: HostListener,
|
|
80
|
-
args: ['click']
|
|
81
|
-
}] } });
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1saXN0LWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctbGlzdC1idXR0b24vdmlldy1saXN0LWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctbGlzdC1idXR0b24vdmlldy1saXN0LWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQWdCLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDbkosT0FBTyxFQUF1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzlILE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDOztBQVE5RCxNQUFNLE9BQU8sdUJBQXVCO2FBRVYsVUFBSyxHQUFzQixFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEs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LEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQ2pFLE1BQU07Z0JBQ1IsS0FBSyx1QkFBdUIsQ0FBQyxLQUFLO29CQUNoQyxZQUFZLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDakUsTUFBTTtZQUNWLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDOUIsQ0FBQzs4R0FwRVUsdUJBQXVCO2tHQUF2Qix1QkFBdUIsOEhDekJwQyx1S0FNQTs7MkZEbUJhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FHbkIsSUFBSTt3REF5QlQsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBDb21wb25lbnRSZWYsIGNvbXB1dGVkLCBEZXN0cm95UmVmLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgSW5qZWN0b3IsIE5nWm9uZSwgT25EZXN0cm95LCBTaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb25uZWN0ZWRQb3NpdGlvbiwgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge0NvbXBvbmVudFBvcnRhbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1ZpZXdMaXN0Q29tcG9uZW50LCBWaWV3TGlzdENvbXBvbmVudElucHV0c30gZnJvbSAnLi4vdmlldy1saXN0L3ZpZXctbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHtXb3JrYmVuY2hQYXJ0fSBmcm9tICcuLi93b3JrYmVuY2gtcGFydC5tb2RlbCc7XG5pbXBvcnQge29ic2VydmVJbn0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb3BlcmF0b3JzJztcbmltcG9ydCB7V09SS0JFTkNIX1ZJRVdfUkVHSVNUUll9IGZyb20gJy4uLy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcucmVnaXN0cnknO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2Itdmlldy1saXN0LWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3LWxpc3QtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlldy1saXN0LWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3TGlzdEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgU09VVEg6IENvbm5lY3RlZFBvc2l0aW9uID0ge29yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ3RvcCd9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBOT1JUSDogQ29ubmVjdGVkUG9zaXRpb24gPSB7b3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICd0b3AnLCBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAnYm90dG9tJ307XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfaG9zdCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF96b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IHVuZGVmaW5lZDtcbiAgLyoqIE51bWJlciBvZiB2aWV3cyB0aGF0IGFyZSBzY3JvbGxlZCBvdXQgb2YgdGhlIHRhYiBiYXIuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxlZE91dE9mVmlld1RhYkNvdW50OiBTaWduYWw8bnVtYmVyPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBwYXJ0ID0gaW5qZWN0KFdvcmtiZW5jaFBhcnQpO1xuICAgIGNvbnN0IHZpZXdSZWdpc3RyeSA9IGluamVjdChXT1JLQkVOQ0hfVklFV19SRUdJU1RSWSk7XG4gICAgdGhpcy5zY3JvbGxlZE91dE9mVmlld1RhYkNvdW50ID0gY29tcHV0ZWQoKCkgPT4gcGFydC52aWV3SWRzKClcbiAgICAgIC5tYXAodmlld0lkID0+IHZpZXdSZWdpc3RyeS5nZXQodmlld0lkKSlcbiAgICAgIC5yZWR1Y2UoKGNvdW50LCB2aWV3KSA9PiB2aWV3LnNjcm9sbGVkSW50b1ZpZXcoKSA/IGNvdW50IDogY291bnQgKyAxLCAwKSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHB1YmxpYyBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuX2hvc3QpXG4gICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgIC53aXRoUG9zaXRpb25zKFtWaWV3TGlzdEJ1dHRvbkNvbXBvbmVudC5TT1VUSCwgVmlld0xpc3RCdXR0b25Db21wb25lbnQuTk9SVEhdKTtcblxuICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZShuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLm5vb3AoKSxcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgIH0pKTtcblxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuX292ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwoVmlld0xpc3RDb21wb25lbnQsIG51bGwsIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE92ZXJsYXlSZWYsIHVzZVZhbHVlOiB0aGlzLl9vdmVybGF5UmVmfV0sXG4gICAgfSkpKTtcblxuICAgIHRoaXMudXBkYXRlUG9zaXRpb25JbnB1dE9uUG9zaXRpb25DaGFuZ2UoY29tcG9uZW50UmVmLCBwb3NpdGlvblN0cmF0ZWd5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzICdwb3NpdGlvbicgaW5wdXQgb2Yge0BsaW5rIFZpZXdMaXN0Q29tcG9uZW50fSB3aGVuIHRoZSBvdmVybGF5IHBvc2l0aW9uIGNoYW5nZXMuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVBvc2l0aW9uSW5wdXRPblBvc2l0aW9uQ2hhbmdlKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFZpZXdMaXN0Q29tcG9uZW50PiwgcG9zaXRpb25TdHJhdGVneTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5KTogdm9pZCB7XG4gICAgcG9zaXRpb25TdHJhdGVneS5wb3NpdGlvbkNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICAvLyBFbnN1cmUgcnVubmluZyBpbnNpZGUgQW5ndWxhciBhcyBBbmd1bGFyIENESyBlbWl0cyBwb3NpdGlvbiBjaGFuZ2VzIG91dHNpZGUgdGhlIEFuZ3VsYXIgem9uZS5cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBBbmd1bGFyIHdvdWxkIG5vdCBpbnZva2UgdGhlIGBuZ09uQ2hhbmdlc2AgbGlmZWN5Y2xlIGhvb2sgd2hlbiB1cGRhdGluZyBjb21wb25lbnQgaW5wdXQuXG4gICAgICAgIG9ic2VydmVJbihmbiA9PiB0aGlzLl96b25lLnJ1bihmbikpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoY29tcG9uZW50UmVmLmluamVjdG9yLmdldChEZXN0cm95UmVmKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHBvc2l0aW9uQ2hhbmdlID0+IHtcbiAgICAgICAgc3dpdGNoIChwb3NpdGlvbkNoYW5nZS5jb25uZWN0aW9uUGFpcikge1xuICAgICAgICAgIGNhc2UgVmlld0xpc3RCdXR0b25Db21wb25lbnQuTk9SVEg6XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoVmlld0xpc3RDb21wb25lbnRJbnB1dHMuUE9TSVRJT04sICdub3J0aCcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBWaWV3TGlzdEJ1dHRvbkNvbXBvbmVudC5TT1VUSDpcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dChWaWV3TGlzdENvbXBvbmVudElucHV0cy5QT1NJVElPTiwgJ3NvdXRoJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fb3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cImNoZXZyb24gc2Npb24td29ya2JlbmNoLWljb25zXCI+XG4gIGNoZXZyb25fZG93blxuPC9zcGFuPlxuQGlmIChzY3JvbGxlZE91dE9mVmlld1RhYkNvdW50KCk7IGFzIGNvdW50KSB7XG4gIDxzcGFuIGNsYXNzPVwiY291bnRcIj57e2NvdW50fX08L3NwYW4+XG59XG4iXX0=
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2018-2023 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 { ChangeDetectionStrategy, Component, HostBinding, inject, Injector, Input } from '@angular/core';
|
|
11
|
-
import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
|
|
12
|
-
import { WORKBENCH_VIEW_REGISTRY } from '../../view/workbench-view.registry';
|
|
13
|
-
import { ViewTabContentComponent } from '../view-tab-content/view-tab-content.component';
|
|
14
|
-
import { WorkbenchConfig } from '../../workbench-config';
|
|
15
|
-
import { WorkbenchView } from '../../view/workbench-view.model';
|
|
16
|
-
import { VIEW_TAB_RENDERING_CONTEXT } from '../../workbench.constants';
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
import * as i1 from "@angular/cdk/portal";
|
|
19
|
-
export class ViewListItemComponent {
|
|
20
|
-
constructor() {
|
|
21
|
-
this._viewRegistry = inject(WORKBENCH_VIEW_REGISTRY);
|
|
22
|
-
this._workbenchConfig = inject(WorkbenchConfig);
|
|
23
|
-
this._injector = inject(Injector);
|
|
24
|
-
}
|
|
25
|
-
set viewId(viewId) {
|
|
26
|
-
this.view = this._viewRegistry.get(viewId);
|
|
27
|
-
this.viewTabContentPortal = this.createViewTabContentPortal();
|
|
28
|
-
}
|
|
29
|
-
get active() {
|
|
30
|
-
return this.view.active();
|
|
31
|
-
}
|
|
32
|
-
onClose() {
|
|
33
|
-
this.view.close().then();
|
|
34
|
-
}
|
|
35
|
-
createViewTabContentPortal() {
|
|
36
|
-
const componentType = this._workbenchConfig.viewTabComponent || ViewTabContentComponent;
|
|
37
|
-
return new ComponentPortal(componentType, null, Injector.create({
|
|
38
|
-
parent: this._injector,
|
|
39
|
-
providers: [
|
|
40
|
-
{ provide: WorkbenchView, useValue: this.view },
|
|
41
|
-
{ provide: VIEW_TAB_RENDERING_CONTEXT, useValue: 'list-item' },
|
|
42
|
-
],
|
|
43
|
-
}));
|
|
44
|
-
}
|
|
45
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ViewListItemComponent, isStandalone: true, selector: "wb-view-list-item", inputs: { viewId: "viewId" }, host: { properties: { "class.active": "this.active" } }, ngImport: i0, template: "<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal\"/>\n</div>\n\n@if (view.closable()) {\n <button class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose()\">\n close\n </button>\n}\n", styles: [":host{display:flex;align-items:center;padding:.6em 1em;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;gap:1em}:host.active{color:var(--sci-color-accent)}:host.active:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:3px;background-color:var(--sci-color-accent)}:host>div.content{flex:auto;display:grid;position:relative}:host>button.close{all:unset;flex:none;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);opacity:.75}:host>button.close:hover{opacity:1;background-color:var(--sci-color-background-elevation-hover)}:host:hover>button.close{visibility:visible}\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
47
|
-
}
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewListItemComponent, decorators: [{
|
|
49
|
-
type: Component,
|
|
50
|
-
args: [{ selector: 'wb-view-list-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
51
|
-
PortalModule,
|
|
52
|
-
], template: "<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal\"/>\n</div>\n\n@if (view.closable()) {\n <button class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose()\">\n close\n </button>\n}\n", styles: [":host{display:flex;align-items:center;padding:.6em 1em;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;gap:1em}:host.active{color:var(--sci-color-accent)}:host.active:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:3px;background-color:var(--sci-color-accent)}:host>div.content{flex:auto;display:grid;position:relative}:host>button.close{all:unset;flex:none;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);opacity:.75}:host>button.close:hover{opacity:1;background-color:var(--sci-color-background-elevation-hover)}:host:hover>button.close{visibility:visible}\n"] }]
|
|
53
|
-
}], propDecorators: { viewId: [{
|
|
54
|
-
type: Input,
|
|
55
|
-
args: [{ required: true }]
|
|
56
|
-
}], active: [{
|
|
57
|
-
type: HostBinding,
|
|
58
|
-
args: ['class.active']
|
|
59
|
-
}] } });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGFydC92aWV3LWxpc3QtaXRlbS92aWV3LWxpc3QtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctbGlzdC1pdGVtL3ZpZXctbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFTLGFBQWEsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQywwQkFBMEIsRUFBMEIsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBWTlGLE1BQU0sT0FBTyxxQkFBcUI7SUFWbEM7UUFZbUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0MsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztLQThCL0M7SUF6QkMsSUFDVyxNQUFNLENBQUMsTUFBYztRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUNoRSxDQUFDO0lBRUQsSUFDVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8sMEJBQTBCO1FBQ2hDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsSUFBSSx1QkFBdUIsQ0FBQztRQUN4RixPQUFPLElBQUksZUFBZSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUM5RCxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDdEIsU0FBUyxFQUFFO2dCQUNULEVBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBQztnQkFDN0MsRUFBQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxFQUFFLFdBQTZDLEVBQUM7YUFDL0Y7U0FDRixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7OEdBakNVLHFCQUFxQjtrR0FBckIscUJBQXFCLG9LQzdCbEMsbVBBVUEsNHJCRGdCSSxZQUFZOzsyRkFHSCxxQkFBcUI7a0JBVmpDLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7cUJBQ2I7OEJBWVUsTUFBTTtzQkFEaEIsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7Z0JBT1osTUFBTTtzQkFEaEIsV0FBVzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBpbmplY3QsIEluamVjdG9yLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbXBvbmVudFBvcnRhbCwgUG9ydGFsTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7ybVXb3JrYmVuY2hWaWV3fSBmcm9tICcuLi8uLi92aWV3L8m1d29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtXT1JLQkVOQ0hfVklFV19SRUdJU1RSWX0gZnJvbSAnLi4vLi4vdmlldy93b3JrYmVuY2gtdmlldy5yZWdpc3RyeSc7XG5pbXBvcnQge1ZpZXdUYWJDb250ZW50Q29tcG9uZW50fSBmcm9tICcuLi92aWV3LXRhYi1jb250ZW50L3ZpZXctdGFiLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7V29ya2JlbmNoQ29uZmlnfSBmcm9tICcuLi8uLi93b3JrYmVuY2gtY29uZmlnJztcbmltcG9ydCB7Vmlld0lkLCBXb3JrYmVuY2hWaWV3fSBmcm9tICcuLi8uLi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcbmltcG9ydCB7VklFV19UQUJfUkVOREVSSU5HX0NPTlRFWFQsIFZpZXdUYWJSZW5kZXJpbmdDb250ZXh0fSBmcm9tICcuLi8uLi93b3JrYmVuY2guY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2Itdmlldy1saXN0LWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92aWV3LWxpc3QtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFBvcnRhbE1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVmlld0xpc3RJdGVtQ29tcG9uZW50IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3UmVnaXN0cnkgPSBpbmplY3QoV09SS0JFTkNIX1ZJRVdfUkVHSVNUUlkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF93b3JrYmVuY2hDb25maWcgPSBpbmplY3QoV29ya2JlbmNoQ29uZmlnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIHB1YmxpYyB2aWV3ITogybVXb3JrYmVuY2hWaWV3O1xuICBwdWJsaWMgdmlld1RhYkNvbnRlbnRQb3J0YWwhOiBDb21wb25lbnRQb3J0YWw8dW5rbm93bj47XG5cbiAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pXG4gIHB1YmxpYyBzZXQgdmlld0lkKHZpZXdJZDogVmlld0lkKSB7XG4gICAgdGhpcy52aWV3ID0gdGhpcy5fdmlld1JlZ2lzdHJ5LmdldCh2aWV3SWQpO1xuICAgIHRoaXMudmlld1RhYkNvbnRlbnRQb3J0YWwgPSB0aGlzLmNyZWF0ZVZpZXdUYWJDb250ZW50UG9ydGFsKCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjdGl2ZScpXG4gIHB1YmxpYyBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZpZXcuYWN0aXZlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXcuY2xvc2UoKS50aGVuKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVZpZXdUYWJDb250ZW50UG9ydGFsKCk6IENvbXBvbmVudFBvcnRhbDx1bmtub3duPiB7XG4gICAgY29uc3QgY29tcG9uZW50VHlwZSA9IHRoaXMuX3dvcmtiZW5jaENvbmZpZy52aWV3VGFiQ29tcG9uZW50IHx8IFZpZXdUYWJDb250ZW50Q29tcG9uZW50O1xuICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbXBvbmVudFR5cGUsIG51bGwsIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtwcm92aWRlOiBXb3JrYmVuY2hWaWV3LCB1c2VWYWx1ZTogdGhpcy52aWV3fSxcbiAgICAgICAge3Byb3ZpZGU6IFZJRVdfVEFCX1JFTkRFUklOR19DT05URVhULCB1c2VWYWx1ZTogJ2xpc3QtaXRlbScgc2F0aXNmaWVzIFZpZXdUYWJSZW5kZXJpbmdDb250ZXh0fSxcbiAgICAgIF0sXG4gICAgfSkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICA8bmctY29udGFpbmVyICpjZGtQb3J0YWxPdXRsZXQ9XCJ2aWV3VGFiQ29udGVudFBvcnRhbFwiLz5cbjwvZGl2PlxuXG5AaWYgKHZpZXcuY2xvc2FibGUoKSkge1xuICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UgZTJlLWNsb3NlIHNjaW9uLXdvcmtiZW5jaC1pY29uc1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuICAgIGNsb3NlXG4gIDwvYnV0dG9uPlxufVxuIl19
|
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2018-2022 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 { Component, computed, effect, ElementRef, HostBinding, HostListener, inject, Injector, input, NgZone } from '@angular/core';
|
|
11
|
-
import { fromEvent, merge, withLatestFrom } from 'rxjs';
|
|
12
|
-
import { WORKBENCH_VIEW_REGISTRY } from '../../view/workbench-view.registry';
|
|
13
|
-
import { map, switchMap } from 'rxjs/operators';
|
|
14
|
-
import { VIEW_DRAG_TRANSFER_TYPE, ViewDragService } from '../../view-dnd/view-drag.service';
|
|
15
|
-
import { createElement } from '../../common/dom.util';
|
|
16
|
-
import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
|
|
17
|
-
import { VIEW_TAB_RENDERING_CONTEXT } from '../../workbench.constants';
|
|
18
|
-
import { WorkbenchConfig } from '../../workbench-config';
|
|
19
|
-
import { ViewTabContentComponent } from '../view-tab-content/view-tab-content.component';
|
|
20
|
-
import { ViewMenuService } from '../view-context-menu/view-menu.service';
|
|
21
|
-
import { WorkbenchView } from '../../view/workbench-view.model';
|
|
22
|
-
import { ɵWorkbenchRouter } from '../../routing/ɵworkbench-router.service';
|
|
23
|
-
import { subscribeIn } from '@scion/toolkit/operators';
|
|
24
|
-
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
25
|
-
import { WORKBENCH_ID } from '../../workbench-id';
|
|
26
|
-
import { NgClass } from '@angular/common';
|
|
27
|
-
import * as i0 from "@angular/core";
|
|
28
|
-
import * as i1 from "@angular/common";
|
|
29
|
-
import * as i2 from "@angular/cdk/portal";
|
|
30
|
-
/**
|
|
31
|
-
* IMPORTANT: HTML and CSS also used by {@link ViewTabDragImageComponent}.
|
|
32
|
-
*
|
|
33
|
-
* @see ViewTabDragImageComponent
|
|
34
|
-
*/
|
|
35
|
-
export class ViewTabComponent {
|
|
36
|
-
/**
|
|
37
|
-
* Indicates if dragging a view tab over this view tab's tabbar.
|
|
38
|
-
*/
|
|
39
|
-
get isDragOverTabbar() {
|
|
40
|
-
return this._viewDragService.isDragOverTabbar === this.view().part().id;
|
|
41
|
-
}
|
|
42
|
-
get viewId() {
|
|
43
|
-
return this.view().id;
|
|
44
|
-
}
|
|
45
|
-
constructor() {
|
|
46
|
-
this._workbenchId = inject(WORKBENCH_ID);
|
|
47
|
-
this._workbenchConfig = inject(WorkbenchConfig);
|
|
48
|
-
this._viewRegistry = inject(WORKBENCH_VIEW_REGISTRY);
|
|
49
|
-
this._router = inject(ɵWorkbenchRouter);
|
|
50
|
-
this._viewDragService = inject(ViewDragService);
|
|
51
|
-
this._viewContextMenuService = inject(ViewMenuService);
|
|
52
|
-
this._injector = inject(Injector);
|
|
53
|
-
this.host = inject((ElementRef)).nativeElement;
|
|
54
|
-
this.view = input.required({ alias: 'viewId', transform: ((viewId) => this._viewRegistry.get(viewId)) });
|
|
55
|
-
this.draggable = true;
|
|
56
|
-
this.tabindex = -1; // make the view focusable to install view menu accelerators
|
|
57
|
-
this.installMaximizeListener();
|
|
58
|
-
this.addHostCssClasses();
|
|
59
|
-
this.installViewMenuItemAccelerators();
|
|
60
|
-
this.viewTabContentPortal = this.createViewTabContentPortal();
|
|
61
|
-
}
|
|
62
|
-
get active() {
|
|
63
|
-
return this.view().active();
|
|
64
|
-
}
|
|
65
|
-
get partActive() {
|
|
66
|
-
return this.view().part().active();
|
|
67
|
-
}
|
|
68
|
-
get dirty() {
|
|
69
|
-
return this.view().dirty();
|
|
70
|
-
}
|
|
71
|
-
onClick() {
|
|
72
|
-
this.view().activate().then();
|
|
73
|
-
}
|
|
74
|
-
onClose(event) {
|
|
75
|
-
event.stopPropagation(); // prevent the view from being activated
|
|
76
|
-
this.view().close().then();
|
|
77
|
-
}
|
|
78
|
-
onMousedown(event) {
|
|
79
|
-
if (event.buttons === AUXILARY_MOUSE_BUTTON) {
|
|
80
|
-
this.view().close().then();
|
|
81
|
-
event.stopPropagation();
|
|
82
|
-
event.preventDefault();
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
onContextmenu(event) {
|
|
86
|
-
this._viewContextMenuService.showMenu({ x: event.clientX, y: event.clientY }, this.view().id).then();
|
|
87
|
-
event.stopPropagation();
|
|
88
|
-
event.preventDefault();
|
|
89
|
-
}
|
|
90
|
-
onDragStart(event) {
|
|
91
|
-
const view = this.view();
|
|
92
|
-
view.activate().then(() => {
|
|
93
|
-
if (!event.dataTransfer) {
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
event.dataTransfer.effectAllowed = 'move';
|
|
97
|
-
event.dataTransfer.setData(VIEW_DRAG_TRANSFER_TYPE, view.id);
|
|
98
|
-
// Use an invisible <div> as the native drag image because the effective drag image is rendered by {ViewTabDragImageRenderer}.
|
|
99
|
-
event.dataTransfer.setDragImage(createElement('div', { style: { display: 'none' } }), 0, 0);
|
|
100
|
-
this._viewDragService.setViewDragData({
|
|
101
|
-
viewId: view.id,
|
|
102
|
-
viewTitle: view.title(),
|
|
103
|
-
viewHeading: view.heading(),
|
|
104
|
-
viewDirty: view.dirty(),
|
|
105
|
-
viewClosable: view.closable(),
|
|
106
|
-
viewUrlSegments: view.urlSegments(),
|
|
107
|
-
alternativeViewId: view.alternativeId,
|
|
108
|
-
navigationHint: view.navigationHint(),
|
|
109
|
-
navigationData: view.navigationData(),
|
|
110
|
-
partId: view.part().id,
|
|
111
|
-
viewTabPointerOffsetX: event.offsetX,
|
|
112
|
-
viewTabPointerOffsetY: event.offsetY,
|
|
113
|
-
viewTabWidth: this.host.getBoundingClientRect().width,
|
|
114
|
-
viewTabHeight: this.host.getBoundingClientRect().height,
|
|
115
|
-
workbenchId: this._workbenchId,
|
|
116
|
-
classList: view.classList.asMap(),
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
onDragEnd(event) {
|
|
121
|
-
// Ensure this view stays activated if the user cancels the drag operation. But, do not push the navigation into browsing history stack.
|
|
122
|
-
if (event.dataTransfer?.dropEffect === 'none') {
|
|
123
|
-
this.view().activate({ skipLocationChange: true }).then();
|
|
124
|
-
}
|
|
125
|
-
this._viewDragService.unsetViewDragData();
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Listens for 'dblclick' events to maximize or minimize the main area.
|
|
129
|
-
*
|
|
130
|
-
* Note that the listener is not activated until the mouse is moved. Otherwise, closing successive
|
|
131
|
-
* views (if they have different tab widths) could result in unintended maximization or minimization.
|
|
132
|
-
*/
|
|
133
|
-
installMaximizeListener() {
|
|
134
|
-
const zone = inject(NgZone);
|
|
135
|
-
const enabled$ = merge(fromEvent(this.host, 'mouseenter'), fromEvent(this.host, 'mousemove'), fromEvent(this.host, 'mouseleave'))
|
|
136
|
-
.pipe(subscribeIn(fn => zone.runOutsideAngular(fn)), map(event => event.type === 'mousemove'));
|
|
137
|
-
fromEvent(this.host, 'dblclick')
|
|
138
|
-
.pipe(withLatestFrom(enabled$), takeUntilDestroyed())
|
|
139
|
-
.subscribe(([event, enabled]) => {
|
|
140
|
-
event.stopPropagation(); // prevent `PartBarComponent` handling the dblclick event which would undo maximization/minimization
|
|
141
|
-
if (enabled && this.view().part().isInMainArea) {
|
|
142
|
-
this._router.navigate(layout => layout.toggleMaximized()).then();
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
addHostCssClasses() {
|
|
147
|
-
const ngClass = inject(NgClass);
|
|
148
|
-
effect(() => ngClass.ngClass = this.view().classList.asList());
|
|
149
|
-
}
|
|
150
|
-
installViewMenuItemAccelerators() {
|
|
151
|
-
toObservable(this.view)
|
|
152
|
-
.pipe(switchMap(view => this._viewContextMenuService.installMenuItemAccelerators$(this.host, view)), takeUntilDestroyed())
|
|
153
|
-
.subscribe();
|
|
154
|
-
}
|
|
155
|
-
createViewTabContentPortal() {
|
|
156
|
-
return computed(() => {
|
|
157
|
-
const componentType = this._workbenchConfig.viewTabComponent || ViewTabContentComponent;
|
|
158
|
-
return new ComponentPortal(componentType, null, Injector.create({
|
|
159
|
-
parent: this._injector,
|
|
160
|
-
providers: [
|
|
161
|
-
{ provide: WorkbenchView, useValue: this.view() },
|
|
162
|
-
{ provide: VIEW_TAB_RENDERING_CONTEXT, useValue: 'tab' },
|
|
163
|
-
],
|
|
164
|
-
}));
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
168
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ViewTabComponent, isStandalone: true, selector: "wb-view-tab", inputs: { view: { classPropertyName: "view", publicName: "viewId", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "onClick()", "mousedown": "onMousedown($event)", "contextmenu": "onContextmenu($event)", "dragstart": "onDragStart($event)", "dragend": "onDragEnd($event)" }, properties: { "attr.draggable": "this.draggable", "attr.tabindex": "this.tabindex", "class.drag-over-tabbar": "this.isDragOverTabbar", "attr.data-viewid": "this.viewId", "class.active": "this.active", "class.part-active": "this.partActive", "class.e2e-dirty": "this.dirty" } }, hostDirectives: [{ directive: i1.NgClass }], ngImport: i0, template: "<!-- IMPORTANT: THIS HTML FILE IS ALSO USED BY `ViewTabDragImageComponent` -->\n\n@if (view().active()) {\n <div class=\"corner-radius start\">\n <div class=\"circle\"></div>\n </div>\n}\n\n<div class=\"content\">\n <ng-container *cdkPortalOutlet=\"viewTabContentPortal()\"/>\n</div>\n\n@if (view().active()) {\n <div class=\"corner-radius end\">\n <div class=\"circle\"></div>\n </div>\n}\n\n@if (view().closable()) {\n <button class=\"close e2e-close scion-workbench-icons\"\n (click)=\"onClose($event)\">\n close\n </button>\n}\n", styles: [":host{display:grid;align-items:center;padding-left:var(--sci-workbench-tab-padding-inline);padding-right:var(--sci-workbench-tab-padding-inline);position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;box-sizing:border-box;outline:none;border-top:1px solid transparent;border-left:1px solid transparent;border-right:1px solid transparent;border-top-left-radius:var(--sci-workbench-tab-border-radius);border-top-right-radius:var(--sci-workbench-tab-border-radius)}:host.active{cursor:default;color:var(--sci-workbench-tab-active-text-color);border-left-color:var(--sci-workbench-tab-border-color);border-right-color:var(--sci-workbench-tab-border-color);border-top-color:var(--sci-workbench-tab-border-color);background-color:var(--sci-workbench-view-background-color)}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host.active{background-color:var(--sci-workbench-view-peripheral-background-color)}:host.active.part-active>div.content{color:var(--sci-workbench-part-active-tab-active-text-color)}:host>div.content{min-width:var(--sci-workbench-tab-min-width);max-width:var(--sci-workbench-tab-max-width);isolation:isolate}:host>button.close{all:unset;position:absolute;cursor:pointer;visibility:hidden;padding:.125em;border-radius:var(--sci-corner-small);right:.2em}:host>button.close:not(:hover){opacity:.75}:host.active>button.close,:host:hover:not(.drag-over-tabbar)>button.close{visibility:visible}:host.active>button.close:hover{background-color:var(--sci-workbench-tab-hover-background-color)}:host:hover:not(.active):not(.drag-over-tabbar):before{content:\"\";background-color:var(--sci-workbench-tab-hover-background-color);position:absolute;inset:0 0 .125em .125em;border-radius:var(--sci-workbench-tab-border-radius);pointer-events:none}:host>div.corner-radius{height:var(--sci-workbench-tab-border-radius);width:var(--sci-workbench-tab-border-radius);overflow:hidden;position:absolute;bottom:0}:host>div.corner-radius>div.circle{position:absolute;top:calc(-2 * var(--sci-workbench-tab-border-radius));width:calc(2 * var(--sci-workbench-tab-border-radius));height:calc(2 * var(--sci-workbench-tab-border-radius));border:var(--sci-workbench-tab-border-radius) solid var(--sci-workbench-view-background-color);border-radius:50%;box-shadow:inset 0 0 0 1px var(--sci-workbench-tab-border-color);box-sizing:content-box}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host>div.corner-radius>div.circle{border-color:var(--sci-workbench-view-peripheral-background-color)}:host>div.corner-radius.start{left:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.start>div.circle{left:calc(-2 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end{right:calc(-1 * var(--sci-workbench-tab-border-radius))}:host>div.corner-radius.end>div.circle{right:calc(-2 * var(--sci-workbench-tab-border-radius))}@container viewtab (height >= 3.5rem){:host>button.close{align-self:start;top:.125em;right:.125em}}\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] }); }
|
|
169
|
-
}
|
|
170
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabComponent, decorators: [{
|
|
171
|
-
type: Component,
|
|
172
|
-
args: [{ selector: 'wb-view-tab', standalone: true, imports: [
|
|
173
|
-
PortalModule,
|
|
174
|
-
], hostDirectives: [
|
|
175
|
-
NgClass,
|
|
176
|
-
], 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"] }]
|
|
177
|
-
}], ctorParameters: () => [], propDecorators: { draggable: [{
|
|
178
|
-
type: HostBinding,
|
|
179
|
-
args: ['attr.draggable']
|
|
180
|
-
}], tabindex: [{
|
|
181
|
-
type: HostBinding,
|
|
182
|
-
args: ['attr.tabindex']
|
|
183
|
-
}], isDragOverTabbar: [{
|
|
184
|
-
type: HostBinding,
|
|
185
|
-
args: ['class.drag-over-tabbar']
|
|
186
|
-
}], viewId: [{
|
|
187
|
-
type: HostBinding,
|
|
188
|
-
args: ['attr.data-viewid']
|
|
189
|
-
}], active: [{
|
|
190
|
-
type: HostBinding,
|
|
191
|
-
args: ['class.active']
|
|
192
|
-
}], partActive: [{
|
|
193
|
-
type: HostBinding,
|
|
194
|
-
args: ['class.part-active']
|
|
195
|
-
}], dirty: [{
|
|
196
|
-
type: HostBinding,
|
|
197
|
-
args: ['class.e2e-dirty']
|
|
198
|
-
}], onClick: [{
|
|
199
|
-
type: HostListener,
|
|
200
|
-
args: ['click']
|
|
201
|
-
}], onMousedown: [{
|
|
202
|
-
type: HostListener,
|
|
203
|
-
args: ['mousedown', ['$event']]
|
|
204
|
-
}], onContextmenu: [{
|
|
205
|
-
type: HostListener,
|
|
206
|
-
args: ['contextmenu', ['$event']]
|
|
207
|
-
}], onDragStart: [{
|
|
208
|
-
type: HostListener,
|
|
209
|
-
args: ['dragstart', ['$event']]
|
|
210
|
-
}], onDragEnd: [{
|
|
211
|
-
type: HostListener,
|
|
212
|
-
args: ['dragend', ['$event']]
|
|
213
|
-
}] } });
|
|
214
|
-
/**
|
|
215
|
-
* Indicates that the auxilary mouse button is pressed (usually the mouse wheel button or middle button).
|
|
216
|
-
*/
|
|
217
|
-
const AUXILARY_MOUSE_BUTTON = 4;
|
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10YWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGFydC92aWV3LXRhYi92aWV3LXRhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctdGFiL3ZpZXctdGFiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsZUFBZSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDMUYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxFQUFDLDBCQUEwQixFQUEwQixNQUFNLDJCQUEyQixDQUFDO0FBQzlGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1B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TztxQkFDUjt3REFpQk0sU0FBUztzQkFEZixXQUFXO3VCQUFDLGdCQUFnQjtnQkFJdEIsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLGVBQWU7Z0JBT2pCLGdCQUFnQjtzQkFEMUIsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBTTFCLE1BQU07c0JBRGhCLFdBQVc7dUJBQUMsa0JBQWtCO2dCQWFwQixNQUFNO3NCQURoQixXQUFXO3VCQUFDLGNBQWM7Z0JBTWhCLFVBQVU7c0JBRHBCLFdBQVc7dUJBQUMsbUJBQW1CO2dCQU1yQixLQUFLO3NCQURmLFdBQVc7dUJBQUMsaUJBQWlCO2dCQU12QixPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTztnQkFXZCxXQUFXO3NCQURqQixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVOUIsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUWhDLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW9DOUIsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7QUFnRXJDOztHQUVHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBpbmplY3QsIEluamVjdG9yLCBpbnB1dCwgTmdab25lLCBTaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtmcm9tRXZlbnQsIG1lcmdlLCB3aXRoTGF0ZXN0RnJvbX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1dPUktCRU5DSF9WSUVXX1JFR0lTVFJZfSBmcm9tICcuLi8uLi92aWV3L3dvcmtiZW5jaC12aWV3LnJlZ2lzdHJ5JztcbmltcG9ydCB7bWFwLCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7VklFV19EUkFHX1RSQU5TRkVSX1RZUEUsIFZpZXdEcmFnU2VydmljZX0gZnJvbSAnLi4vLi4vdmlldy1kbmQvdmlldy1kcmFnLnNlcnZpY2UnO1xuaW1wb3J0IHtjcmVhdGVFbGVtZW50fSBmcm9tICcuLi8uLi9jb21tb24vZG9tLnV0aWwnO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWwsIFBvcnRhbE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1ZJRVdfVEFCX1JFTkRFUklOR19DT05URVhULCBWaWV3VGFiUmVuZGVyaW5nQ29udGV4dH0gZnJvbSAnLi4vLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5pbXBvcnQge1dvcmtiZW5jaENvbmZpZ30gZnJvbSAnLi4vLi4vd29ya2JlbmNoLWNvbmZpZyc7XG5pbXBvcnQge1ZpZXdUYWJDb250ZW50Q29tcG9uZW50fSBmcm9tICcuLi92aWV3LXRhYi1jb250ZW50L3ZpZXctdGFiLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7Vmlld01lbnVTZXJ2aWNlfSBmcm9tICcuLi92aWV3LWNvbnRleHQtbWVudS92aWV3LW1lbnUuc2VydmljZSc7XG5pbXBvcnQge1ZpZXdJZCwgV29ya2JlbmNoVmlld30gZnJvbSAnLi4vLi4vdmlldy93b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5pbXBvcnQge8m1V29ya2JlbmNoUm91dGVyfSBmcm9tICcuLi8uLi9yb3V0aW5nL8m1d29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7c3Vic2NyaWJlSW59IGZyb20gJ0BzY2lvbi90b29sa2l0L29wZXJhdG9ycyc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZCwgdG9PYnNlcnZhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1dPUktCRU5DSF9JRH0gZnJvbSAnLi4vLi4vd29ya2JlbmNoLWlkJztcbmltcG9ydCB7TmdDbGFzc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBJTVBPUlRBTlQ6IEhUTUwgYW5kIENTUyBhbHNvIHVzZWQgYnkge0BsaW5rIFZpZXdUYWJEcmFnSW1hZ2VDb21wb25lbnR9LlxuICpcbiAqIEBzZWUgVmlld1RhYkRyYWdJbWFnZUNvbXBvbmVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3Yi12aWV3LXRhYicsXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3LXRhYi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXctdGFiLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBQb3J0YWxNb2R1bGUsXG4gIF0sXG4gIGhvc3REaXJlY3RpdmVzOiBbXG4gICAgTmdDbGFzcyxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVmlld1RhYkNvbXBvbmVudCB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfd29ya2JlbmNoSWQgPSBpbmplY3QoV09SS0JFTkNIX0lEKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfd29ya2JlbmNoQ29uZmlnID0gaW5qZWN0KFdvcmtiZW5jaENvbmZpZyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdSZWdpc3RyeSA9IGluamVjdChXT1JLQkVOQ0hfVklFV19SRUdJU1RSWSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlciA9IGluamVjdCjJtVdvcmtiZW5jaFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdEcmFnU2VydmljZSA9IGluamVjdChWaWV3RHJhZ1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGV4dE1lbnVTZXJ2aWNlID0gaW5qZWN0KFZpZXdNZW51U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaG9zdCA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50PikubmF0aXZlRWxlbWVudDtcbiAgcHVibGljIHJlYWRvbmx5IHZpZXcgPSBpbnB1dC5yZXF1aXJlZCh7YWxpYXM6ICd2aWV3SWQnLCB0cmFuc2Zvcm06ICgodmlld0lkOiBWaWV3SWQpID0+IHRoaXMuX3ZpZXdSZWdpc3RyeS5nZXQodmlld0lkKSl9KTtcbiAgcHVibGljIHJlYWRvbmx5IHZpZXdUYWJDb250ZW50UG9ydGFsOiBTaWduYWw8Q29tcG9uZW50UG9ydGFsPHVua25vd24+PjtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZHJhZ2dhYmxlJylcbiAgcHVibGljIGRyYWdnYWJsZSA9IHRydWU7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgcHVibGljIHRhYmluZGV4ID0gLTE7IC8vIG1ha2UgdGhlIHZpZXcgZm9jdXNhYmxlIHRvIGluc3RhbGwgdmlldyBtZW51IGFjY2VsZXJhdG9yc1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgZHJhZ2dpbmcgYSB2aWV3IHRhYiBvdmVyIHRoaXMgdmlldyB0YWIncyB0YWJiYXIuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRyYWctb3Zlci10YWJiYXInKVxuICBwdWJsaWMgZ2V0IGlzRHJhZ092ZXJUYWJiYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdEcmFnU2VydmljZS5pc0RyYWdPdmVyVGFiYmFyID09PSB0aGlzLnZpZXcoKS5wYXJ0KCkuaWQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS12aWV3aWQnKVxuICBwdWJsaWMgZ2V0IHZpZXdJZCgpOiBWaWV3SWQge1xuICAgIHJldHVybiB0aGlzLnZpZXcoKS5pZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaW5zdGFsbE1heGltaXplTGlzdGVuZXIoKTtcbiAgICB0aGlzLmFkZEhvc3RDc3NDbGFzc2VzKCk7XG4gICAgdGhpcy5pbnN0YWxsVmlld01lbnVJdGVtQWNjZWxlcmF0b3JzKCk7XG4gICAgdGhpcy52aWV3VGFiQ29udGVudFBvcnRhbCA9IHRoaXMuY3JlYXRlVmlld1RhYkNvbnRlbnRQb3J0YWwoKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJylcbiAgcHVibGljIGdldCBhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlldygpLmFjdGl2ZSgpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wYXJ0LWFjdGl2ZScpXG4gIHB1YmxpYyBnZXQgcGFydEFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52aWV3KCkucGFydCgpLmFjdGl2ZSgpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5lMmUtZGlydHknKVxuICBwdWJsaWMgZ2V0IGRpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZpZXcoKS5kaXJ0eSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXcoKS5hY3RpdmF0ZSgpLnRoZW4oKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBwcmV2ZW50IHRoZSB2aWV3IGZyb20gYmVpbmcgYWN0aXZhdGVkXG4gICAgdGhpcy52aWV3KCkuY2xvc2UoKS50aGVuKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25Nb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYnV0dG9ucyA9PT0gQVVYSUxBUllfTU9VU0VfQlVUVE9OKSB7XG4gICAgICB0aGlzLnZpZXcoKS5jbG9zZSgpLnRoZW4oKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjb250ZXh0bWVudScsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbkNvbnRleHRtZW51KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5fdmlld0NvbnRleHRNZW51U2VydmljZS5zaG93TWVudSh7eDogZXZlbnQuY2xpZW50WCwgeTogZXZlbnQuY2xpZW50WX0sIHRoaXMudmlldygpLmlkKS50aGVuKCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdzdGFydCcsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbkRyYWdTdGFydChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdmlldyA9IHRoaXMudmlldygpO1xuXG4gICAgdmlldy5hY3RpdmF0ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKCFldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICdtb3ZlJztcbiAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKFZJRVdfRFJBR19UUkFOU0ZFUl9UWVBFLCB2aWV3LmlkKTtcbiAgICAgIC8vIFVzZSBhbiBpbnZpc2libGUgPGRpdj4gYXMgdGhlIG5hdGl2ZSBkcmFnIGltYWdlIGJlY2F1c2UgdGhlIGVmZmVjdGl2ZSBkcmFnIGltYWdlIGlzIHJlbmRlcmVkIGJ5IHtWaWV3VGFiRHJhZ0ltYWdlUmVuZGVyZXJ9LlxuICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShjcmVhdGVFbGVtZW50KCdkaXYnLCB7c3R5bGU6IHtkaXNwbGF5OiAnbm9uZSd9fSksIDAsIDApO1xuXG4gICAgICB0aGlzLl92aWV3RHJhZ1NlcnZpY2Uuc2V0Vmlld0RyYWdEYXRhKHtcbiAgICAgICAgdmlld0lkOiB2aWV3LmlkLFxuICAgICAgICB2aWV3VGl0bGU6IHZpZXcudGl0bGUoKSxcbiAgICAgICAgdmlld0hlYWRpbmc6IHZpZXcuaGVhZGluZygpLFxuICAgICAgICB2aWV3RGlydHk6IHZpZXcuZGlydHkoKSxcbiAgICAgICAgdmlld0Nsb3NhYmxlOiB2aWV3LmNsb3NhYmxlKCksXG4gICAgICAgIHZpZXdVcmxTZWdtZW50czogdmlldy51cmxTZWdtZW50cygpLFxuICAgICAgICBhbHRlcm5hdGl2ZVZpZXdJZDogdmlldy5hbHRlcm5hdGl2ZUlkLFxuICAgICAgICBuYXZpZ2F0aW9uSGludDogdmlldy5uYXZpZ2F0aW9uSGludCgpLFxuICAgICAgICBuYXZpZ2F0aW9uRGF0YTogdmlldy5uYXZpZ2F0aW9uRGF0YSgpLFxuICAgICAgICBwYXJ0SWQ6IHZpZXcucGFydCgpLmlkLFxuICAgICAgICB2aWV3VGFiUG9pbnRlck9mZnNldFg6IGV2ZW50Lm9mZnNldFgsXG4gICAgICAgIHZpZXdUYWJQb2ludGVyT2Zmc2V0WTogZXZlbnQub2Zmc2V0WSxcbiAgICAgICAgdmlld1RhYldpZHRoOiB0aGlzLmhvc3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgsXG4gICAgICAgIHZpZXdUYWJIZWlnaHQ6IHRoaXMuaG9zdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsXG4gICAgICAgIHdvcmtiZW5jaElkOiB0aGlzLl93b3JrYmVuY2hJZCxcbiAgICAgICAgY2xhc3NMaXN0OiB2aWV3LmNsYXNzTGlzdC5hc01hcCgpLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnZW5kJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRHJhZ0VuZChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgLy8gRW5zdXJlIHRoaXMgdmlldyBzdGF5cyBhY3RpdmF0ZWQgaWYgdGhlIHVzZXIgY2FuY2VscyB0aGUgZHJhZyBvcGVyYXRpb24uIEJ1dCwgZG8gbm90IHB1c2ggdGhlIG5hdmlnYXRpb24gaW50byBicm93c2luZyBoaXN0b3J5IHN0YWNrLlxuICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXI/LmRyb3BFZmZlY3QgPT09ICdub25lJykge1xuICAgICAgdGhpcy52aWV3KCkuYWN0aXZhdGUoe3NraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZX0pLnRoZW4oKTtcbiAgICB9XG4gICAgdGhpcy5fdmlld0RyYWdTZXJ2aWNlLnVuc2V0Vmlld0RyYWdEYXRhKCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVucyBmb3IgJ2RibGNsaWNrJyBldmVudHMgdG8gbWF4aW1pemUgb3IgbWluaW1pemUgdGhlIG1haW4gYXJlYS5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoZSBsaXN0ZW5lciBpcyBub3QgYWN0aXZhdGVkIHVudGlsIHRoZSBtb3VzZSBpcyBtb3ZlZC4gT3RoZXJ3aXNlLCBjbG9zaW5nIHN1Y2Nlc3NpdmVcbiAgICogdmlld3MgKGlmIHRoZXkgaGF2ZSBkaWZmZXJlbnQgdGFiIHdpZHRocykgY291bGQgcmVzdWx0IGluIHVuaW50ZW5kZWQgbWF4aW1pemF0aW9uIG9yIG1pbmltaXphdGlvbi5cbiAgICovXG4gIHByaXZhdGUgaW5zdGFsbE1heGltaXplTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgY29uc3Qgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgIGNvbnN0IGVuYWJsZWQkID0gbWVyZ2UoZnJvbUV2ZW50PEV2ZW50Pih0aGlzLmhvc3QsICdtb3VzZWVudGVyJyksIGZyb21FdmVudDxFdmVudD4odGhpcy5ob3N0LCAnbW91c2Vtb3ZlJyksIGZyb21FdmVudDxFdmVudD4odGhpcy5ob3N0LCAnbW91c2VsZWF2ZScpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN1YnNjcmliZUluKGZuID0+IHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoZm4pKSxcbiAgICAgICAgbWFwKGV2ZW50ID0+IGV2ZW50LnR5cGUgPT09ICdtb3VzZW1vdmUnKSwgLy8gdGhlICdtb3VzZW1vdmUnIGV2ZW50IGFybXMgdGhlIGxpc3RlbmVyXG4gICAgICApO1xuXG4gICAgZnJvbUV2ZW50PEV2ZW50Pih0aGlzLmhvc3QsICdkYmxjbGljaycpXG4gICAgICAucGlwZShcbiAgICAgICAgd2l0aExhdGVzdEZyb20oZW5hYmxlZCQpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFtldmVudCwgZW5hYmxlZF0pID0+IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIHByZXZlbnQgYFBhcnRCYXJDb21wb25lbnRgIGhhbmRsaW5nIHRoZSBkYmxjbGljayBldmVudCB3aGljaCB3b3VsZCB1bmRvIG1heGltaXphdGlvbi9taW5pbWl6YXRpb25cbiAgICAgICAgaWYgKGVuYWJsZWQgJiYgdGhpcy52aWV3KCkucGFydCgpLmlzSW5NYWluQXJlYSkge1xuICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShsYXlvdXQgPT4gbGF5b3V0LnRvZ2dsZU1heGltaXplZCgpKS50aGVuKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRIb3N0Q3NzQ2xhc3NlcygpOiB2b2lkIHtcbiAgICBjb25zdCBuZ0NsYXNzID0gaW5qZWN0KE5nQ2xhc3MpO1xuICAgIGVmZmVjdCgoKSA9PiBuZ0NsYXNzLm5nQ2xhc3MgPSB0aGlzLnZpZXcoKS5jbGFzc0xpc3QuYXNMaXN0KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YWxsVmlld01lbnVJdGVtQWNjZWxlcmF0b3JzKCk6IHZvaWQge1xuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLnZpZXcpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHZpZXcgPT4gdGhpcy5fdmlld0NvbnRleHRNZW51U2VydmljZS5pbnN0YWxsTWVudUl0ZW1BY2NlbGVyYXRvcnMkKHRoaXMuaG9zdCwgdmlldykpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVmlld1RhYkNvbnRlbnRQb3J0YWwoKTogU2lnbmFsPENvbXBvbmVudFBvcnRhbDx1bmtub3duPj4ge1xuICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBjb21wb25lbnRUeXBlID0gdGhpcy5fd29ya2JlbmNoQ29uZmlnLnZpZXdUYWJDb21wb25lbnQgfHwgVmlld1RhYkNvbnRlbnRDb21wb25lbnQ7XG4gICAgICByZXR1cm4gbmV3IENvbXBvbmVudFBvcnRhbChjb21wb25lbnRUeXBlLCBudWxsLCBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICB7cHJvdmlkZTogV29ya2JlbmNoVmlldywgdXNlVmFsdWU6IHRoaXMudmlldygpfSxcbiAgICAgICAgICB7cHJvdmlkZTogVklFV19UQUJfUkVOREVSSU5HX0NPTlRFWFQsIHVzZVZhbHVlOiAndGFiJyBzYXRpc2ZpZXMgVmlld1RhYlJlbmRlcmluZ0NvbnRleHR9LFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogSW5kaWNhdGVzIHRoYXQgdGhlIGF1eGlsYXJ5IG1vdXNlIGJ1dHRvbiBpcyBwcmVzc2VkICh1c3VhbGx5IHRoZSBtb3VzZSB3aGVlbCBidXR0b24gb3IgbWlkZGxlIGJ1dHRvbikuXG4gKi9cbmNvbnN0IEFVWElMQVJZX01PVVNFX0JVVFRPTiA9IDQ7XG4iLCI8IS0tIElNUE9SVEFOVDogVEhJUyBIVE1MIEZJTEUgSVMgQUxTTyBVU0VEIEJZIGBWaWV3VGFiRHJhZ0ltYWdlQ29tcG9uZW50YCAtLT5cblxuQGlmICh2aWV3KCkuYWN0aXZlKCkpIHtcbiAgPGRpdiBjbGFzcz1cImNvcm5lci1yYWRpdXMgc3RhcnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gIDwvZGl2PlxufVxuXG48ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICA8bmctY29udGFpbmVyICpjZGtQb3J0YWxPdXRsZXQ9XCJ2aWV3VGFiQ29udGVudFBvcnRhbCgpXCIvPlxuPC9kaXY+XG5cbkBpZiAodmlldygpLmFjdGl2ZSgpKSB7XG4gIDxkaXYgY2xhc3M9XCJjb3JuZXItcmFkaXVzIGVuZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVcIj48L2Rpdj5cbiAgPC9kaXY+XG59XG5cbkBpZiAodmlldygpLmNsb3NhYmxlKCkpIHtcbiAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlIGUyZS1jbG9zZSBzY2lvbi13b3JrYmVuY2gtaWNvbnNcIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlKCRldmVudClcIj5cbiAgICBjbG9zZVxuICA8L2J1dHRvbj5cbn1cbiJdfQ==
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2018-2022 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 { Component, HostBinding, inject } from '@angular/core';
|
|
11
|
-
import { VIEW_TAB_RENDERING_CONTEXT } from '../../workbench.constants';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "../../view/workbench-view.model";
|
|
14
|
-
export class ViewTabContentComponent {
|
|
15
|
-
constructor(view) {
|
|
16
|
-
this.view = view;
|
|
17
|
-
this.context = inject(VIEW_TAB_RENDERING_CONTEXT);
|
|
18
|
-
}
|
|
19
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabContentComponent, deps: [{ token: i1.WorkbenchView }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ViewTabContentComponent, isStandalone: true, selector: "wb-view-tab-content", host: { properties: { "attr.context": "this.context" } }, ngImport: i0, template: "<span class=\"title e2e-title\">\n @if (view.dirty()) {\n <span class=\"scion-workbench-icons dirty e2e-dirty\">dirty</span>\n }\n {{view.title()}}\n</span>\n\n@if (view.heading()) {\n <span class=\"heading e2e-heading\">\n {{view.heading()}}\n </span>\n}\n", styles: [":host{display:flex;flex-direction:column;gap:.25em;overflow:hidden}:host>span.title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-weight:400;font-size:1em}:host>span.title>span.dirty{padding-right:.2em}:host>span.heading{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:.9em;font-weight:300}:host[context=tab] span.title,:host[context=drag-image] span.title{margin-right:1em}@container viewtab (height < 3.5rem){:host>span.heading{display:none}}\n"] }); }
|
|
21
|
-
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabContentComponent, decorators: [{
|
|
23
|
-
type: Component,
|
|
24
|
-
args: [{ selector: 'wb-view-tab-content', standalone: true, template: "<span class=\"title e2e-title\">\n @if (view.dirty()) {\n <span class=\"scion-workbench-icons dirty e2e-dirty\">dirty</span>\n }\n {{view.title()}}\n</span>\n\n@if (view.heading()) {\n <span class=\"heading e2e-heading\">\n {{view.heading()}}\n </span>\n}\n", styles: [":host{display:flex;flex-direction:column;gap:.25em;overflow:hidden}:host>span.title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-weight:400;font-size:1em}:host>span.title>span.dirty{padding-right:.2em}:host>span.heading{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:.9em;font-weight:300}:host[context=tab] span.title,:host[context=drag-image] span.title{margin-right:1em}@container viewtab (height < 3.5rem){:host>span.heading{display:none}}\n"] }]
|
|
25
|
-
}], ctorParameters: () => [{ type: i1.WorkbenchView }], propDecorators: { context: [{
|
|
26
|
-
type: HostBinding,
|
|
27
|
-
args: ['attr.context']
|
|
28
|
-
}] } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10YWItY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctdGFiLWNvbnRlbnQvdmlldy10YWItY29udGVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctdGFiLWNvbnRlbnQvdmlldy10YWItY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUMsMEJBQTBCLEVBQTBCLE1BQU0sMkJBQTJCLENBQUM7OztBQVE5RixNQUFNLE9BQU8sdUJBQXVCO0lBS2xDLFlBQW1CLElBQW1CO1FBQW5CLFNBQUksR0FBSixJQUFJLENBQWU7UUFGdEIsWUFBTyxHQUFHLE1BQU0sQ0FBMEIsMEJBQTBCLENBQUMsQ0FBQztJQUd0RixDQUFDOzhHQU5VLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHlJQ3BCcEMsOFFBWUE7OzJGRFFhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FHbkIsSUFBSTtrRkFLQSxPQUFPO3NCQUR0QixXQUFXO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBIb3N0QmluZGluZywgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V29ya2JlbmNoVmlld30gZnJvbSAnLi4vLi4vdmlldy93b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5pbXBvcnQge1ZJRVdfVEFCX1JFTkRFUklOR19DT05URVhULCBWaWV3VGFiUmVuZGVyaW5nQ29udGV4dH0gZnJvbSAnLi4vLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3diLXZpZXctdGFiLWNvbnRlbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy10YWItY29udGVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXctdGFiLWNvbnRlbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVmlld1RhYkNvbnRlbnRDb21wb25lbnQge1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5jb250ZXh0JylcbiAgcHVibGljIHJlYWRvbmx5IGNvbnRleHQgPSBpbmplY3Q8Vmlld1RhYlJlbmRlcmluZ0NvbnRleHQ+KFZJRVdfVEFCX1JFTkRFUklOR19DT05URVhUKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlldzogV29ya2JlbmNoVmlldykge1xuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cInRpdGxlIGUyZS10aXRsZVwiPlxuICBAaWYgKHZpZXcuZGlydHkoKSkge1xuICAgIDxzcGFuIGNsYXNzPVwic2Npb24td29ya2JlbmNoLWljb25zIGRpcnR5IGUyZS1kaXJ0eVwiPmRpcnR5PC9zcGFuPlxuICB9XG4gIHt7dmlldy50aXRsZSgpfX1cbjwvc3Bhbj5cblxuQGlmICh2aWV3LmhlYWRpbmcoKSkge1xuICA8c3BhbiBjbGFzcz1cImhlYWRpbmcgZTJlLWhlYWRpbmdcIj5cbiAgICB7e3ZpZXcuaGVhZGluZygpfX1cbiAgPC9zcGFuPlxufVxuIl19
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2018-2022 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 { Component, HostBinding, inject, signal } from '@angular/core';
|
|
11
|
-
import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
|
|
12
|
-
import { ViewTabContentComponent } from '../view-tab-content/view-tab-content.component';
|
|
13
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
14
|
-
import { DOCUMENT } from '@angular/common';
|
|
15
|
-
import { WorkbenchView } from '../../view/workbench-view.model';
|
|
16
|
-
import * as i0 from "@angular/core";
|
|
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
|
-
/**
|
|
21
|
-
* @see ViewTabComponent
|
|
22
|
-
*/
|
|
23
|
-
export class ViewTabDragImageComponent {
|
|
24
|
-
constructor(_workbenchConfig, _viewDragService, _injector) {
|
|
25
|
-
this._workbenchConfig = _workbenchConfig;
|
|
26
|
-
this._viewDragService = _viewDragService;
|
|
27
|
-
this._injector = _injector;
|
|
28
|
-
this.view = signal(inject(WorkbenchView));
|
|
29
|
-
this.active = true;
|
|
30
|
-
this.partActive = true;
|
|
31
|
-
/**
|
|
32
|
-
* Indicates if dragging this view tab over a tabbar.
|
|
33
|
-
*/
|
|
34
|
-
this.isDragOverTabbar = false;
|
|
35
|
-
/**
|
|
36
|
-
* Indicates if dragging this view tab over a tabbar located in the peripheral area.
|
|
37
|
-
*/
|
|
38
|
-
this.isDragOverPeripheralTabbar = false;
|
|
39
|
-
this.installDragOverTabbarDetector();
|
|
40
|
-
this.viewTabContentPortal = signal(this.createViewTabContentPortal());
|
|
41
|
-
}
|
|
42
|
-
onClose(..._) {
|
|
43
|
-
throw Error('[UnsupportedOperationError]');
|
|
44
|
-
}
|
|
45
|
-
createViewTabContentPortal() {
|
|
46
|
-
const componentType = this._workbenchConfig.viewTabComponent || ViewTabContentComponent;
|
|
47
|
-
return new ComponentPortal(componentType, null, this._injector);
|
|
48
|
-
}
|
|
49
|
-
installDragOverTabbarDetector() {
|
|
50
|
-
const documentRoot = inject(DOCUMENT).documentElement;
|
|
51
|
-
this._viewDragService.tabbarDragOver$
|
|
52
|
-
.pipe(takeUntilDestroyed())
|
|
53
|
-
.subscribe(partId => {
|
|
54
|
-
// Compute if dragging this view tab over a tabbar.
|
|
55
|
-
this.isDragOverTabbar = partId !== null;
|
|
56
|
-
// Compute if dragging this view tab over a tabbar located in the peripheral area.
|
|
57
|
-
this.isDragOverPeripheralTabbar = partId !== null && documentRoot.querySelector(`wb-workbench:has(wb-main-area-layout) wb-part[data-partid="${partId}"]:not(.main-area)`) !== null;
|
|
58
|
-
});
|
|
59
|
-
}
|
|
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
|
-
}
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewTabDragImageComponent, decorators: [{
|
|
64
|
-
type: Component,
|
|
65
|
-
args: [{ selector: 'wb-view-tab-drag-image', standalone: true, imports: [
|
|
66
|
-
PortalModule,
|
|
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: [{
|
|
69
|
-
type: HostBinding,
|
|
70
|
-
args: ['class.active']
|
|
71
|
-
}], partActive: [{
|
|
72
|
-
type: HostBinding,
|
|
73
|
-
args: ['class.part-active']
|
|
74
|
-
}], isDragOverTabbar: [{
|
|
75
|
-
type: HostBinding,
|
|
76
|
-
args: ['class.drag-over-tabbar']
|
|
77
|
-
}], isDragOverPeripheralTabbar: [{
|
|
78
|
-
type: HostBinding,
|
|
79
|
-
args: ['class.drag-over-peripheral-tabbar']
|
|
80
|
-
}] } });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10YWItZHJhZy1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctdGFiLWRyYWctaW1hZ2Uvdmlldy10YWItZHJhZy1pbWFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wYXJ0L3ZpZXctdGFiL3ZpZXctdGFiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFZLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUMsZUFBZSxFQUFFLFlBQVksRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRWxFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUNBQWlDLENBQUM7Ozs7O0FBRTlEOztHQUVHO0FBYUgsTUFBTSxPQUFPLHlCQUF5QjtJQXVCcEMsWUFBb0IsZ0JBQWlDLEVBQ2pDLGdCQUFpQyxFQUNqQyxTQUFtQjtRQUZuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQ2pDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQXZCdkIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUk5QyxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBR2QsZUFBVSxHQUFHLElBQUksQ0FBQztRQUV6Qjs7V0FFRztRQUVJLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUVoQzs7V0FFRztRQUVJLCtCQUEwQixHQUFHLEtBQUssQ0FBQztRQUt4QyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLE9BQU8sQ0FBQyxHQUFHLENBQVk7UUFDNUIsTUFBTSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sMEJBQTBCO1FBQ2hDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsSUFBSSx1QkFBdUIsQ0FBQztRQUN4RixPQUFPLElBQUksZUFBZSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTyw2QkFBNkI7UUFDbkMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFXLFFBQVEsQ0FBQyxDQUFDLGVBQWUsQ0FBQztRQUNoRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZTthQUNsQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUMxQixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEIsbURBQW1EO1lBQ25ELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLEtBQUssSUFBSSxDQUFDO1lBQ3hDLGtGQUFrRjtZQUNsRixJQUFJLENBQUMsMEJBQTBCLEdBQUcsTUFBTSxLQUFLLElBQUksSUFBSSxZQUFZLENBQUMsYUFBYSxDQUFDLDhEQUE4RCxNQUFNLG9CQUFvQixDQUFDLEtBQUssSUFBSSxDQUFDO1FBQ3JMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0FqRFUseUJBQXlCO2tHQUF6Qix5QkFBeUIsOFNDbEN0QywraUJBd0JBLDB4R0RPSSxZQUFZOzsyRkFHSCx5QkFBeUI7a0JBWnJDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBTXRCLElBQUksV0FDUDt3QkFDUCxZQUFZO3FCQUNiO3lJQVFNLE1BQU07c0JBRFosV0FBVzt1QkFBQyxjQUFjO2dCQUlwQixVQUFVO3NCQURoQixXQUFXO3VCQUFDLG1CQUFtQjtnQkFPekIsZ0JBQWdCO3NCQUR0QixXQUFXO3VCQUFDLHdCQUF3QjtnQkFPOUIsMEJBQTBCO3NCQURoQyxXQUFXO3VCQUFDLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBpbmplY3QsIEluamVjdG9yLCBzaWduYWwsIFNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1ZpZXdEcmFnU2VydmljZX0gZnJvbSAnLi4vLi4vdmlldy1kbmQvdmlldy1kcmFnLnNlcnZpY2UnO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWwsIFBvcnRhbE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1dvcmtiZW5jaENvbmZpZ30gZnJvbSAnLi4vLi4vd29ya2JlbmNoLWNvbmZpZyc7XG5pbXBvcnQge1ZpZXdUYWJDb250ZW50Q29tcG9uZW50fSBmcm9tICcuLi92aWV3LXRhYi1jb250ZW50L3ZpZXctdGFiLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtXb3JrYmVuY2hWaWV3fSBmcm9tICcuLi8uLi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcblxuLyoqXG4gKiBAc2VlIFZpZXdUYWJDb21wb25lbnRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2Itdmlldy10YWItZHJhZy1pbWFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi4vdmlldy10YWIvdmlldy10YWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtcbiAgICAnLi4vdmlldy10YWIvdmlldy10YWIuY29tcG9uZW50LnNjc3MnLFxuICAgICcuL3ZpZXctdGFiLWRyYWctaW1hZ2UucGFydGlhbC5jb21wb25lbnQuc2NzcycsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBQb3J0YWxNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdUYWJEcmFnSW1hZ2VDb21wb25lbnQge1xuXG4gIHB1YmxpYyByZWFkb25seSB2aWV3ID0gc2lnbmFsKGluamVjdChXb3JrYmVuY2hWaWV3KSk7XG4gIHB1YmxpYyByZWFkb25seSB2aWV3VGFiQ29udGVudFBvcnRhbDogU2lnbmFsPENvbXBvbmVudFBvcnRhbDx1bmtub3duPj47XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY3RpdmUnKVxuICBwdWJsaWMgYWN0aXZlID0gdHJ1ZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBhcnQtYWN0aXZlJylcbiAgcHVibGljIHBhcnRBY3RpdmUgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgZHJhZ2dpbmcgdGhpcyB2aWV3IHRhYiBvdmVyIGEgdGFiYmFyLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kcmFnLW92ZXItdGFiYmFyJylcbiAgcHVibGljIGlzRHJhZ092ZXJUYWJiYXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGRyYWdnaW5nIHRoaXMgdmlldyB0YWIgb3ZlciBhIHRhYmJhciBsb2NhdGVkIGluIHRoZSBwZXJpcGhlcmFsIGFyZWEuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRyYWctb3Zlci1wZXJpcGhlcmFsLXRhYmJhcicpXG4gIHB1YmxpYyBpc0RyYWdPdmVyUGVyaXBoZXJhbFRhYmJhciA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3dvcmtiZW5jaENvbmZpZzogV29ya2JlbmNoQ29uZmlnLFxuICAgICAgICAgICAgICBwcml2YXRlIF92aWV3RHJhZ1NlcnZpY2U6IFZpZXdEcmFnU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5pbnN0YWxsRHJhZ092ZXJUYWJiYXJEZXRlY3RvcigpO1xuICAgIHRoaXMudmlld1RhYkNvbnRlbnRQb3J0YWwgPSBzaWduYWwodGhpcy5jcmVhdGVWaWV3VGFiQ29udGVudFBvcnRhbCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlKC4uLl86IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRocm93IEVycm9yKCdbVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvcl0nKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVmlld1RhYkNvbnRlbnRQb3J0YWwoKTogQ29tcG9uZW50UG9ydGFsPHVua25vd24+IHtcbiAgICBjb25zdCBjb21wb25lbnRUeXBlID0gdGhpcy5fd29ya2JlbmNoQ29uZmlnLnZpZXdUYWJDb21wb25lbnQgfHwgVmlld1RhYkNvbnRlbnRDb21wb25lbnQ7XG4gICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoY29tcG9uZW50VHlwZSwgbnVsbCwgdGhpcy5faW5qZWN0b3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YWxsRHJhZ092ZXJUYWJiYXJEZXRlY3RvcigpOiB2b2lkIHtcbiAgICBjb25zdCBkb2N1bWVudFJvb3QgPSBpbmplY3Q8RG9jdW1lbnQ+KERPQ1VNRU5UKS5kb2N1bWVudEVsZW1lbnQ7XG4gICAgdGhpcy5fdmlld0RyYWdTZXJ2aWNlLnRhYmJhckRyYWdPdmVyJFxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKHBhcnRJZCA9PiB7XG4gICAgICAgIC8vIENvbXB1dGUgaWYgZHJhZ2dpbmcgdGhpcyB2aWV3IHRhYiBvdmVyIGEgdGFiYmFyLlxuICAgICAgICB0aGlzLmlzRHJhZ092ZXJUYWJiYXIgPSBwYXJ0SWQgIT09IG51bGw7XG4gICAgICAgIC8vIENvbXB1dGUgaWYgZHJhZ2dpbmcgdGhpcyB2aWV3IHRhYiBvdmVyIGEgdGFiYmFyIGxvY2F0ZWQgaW4gdGhlIHBlcmlwaGVyYWwgYXJlYS5cbiAgICAgICAgdGhpcy5pc0RyYWdPdmVyUGVyaXBoZXJhbFRhYmJhciA9IHBhcnRJZCAhPT0gbnVsbCAmJiBkb2N1bWVudFJvb3QucXVlcnlTZWxlY3Rvcihgd2Itd29ya2JlbmNoOmhhcyh3Yi1tYWluLWFyZWEtbGF5b3V0KSB3Yi1wYXJ0W2RhdGEtcGFydGlkPVwiJHtwYXJ0SWR9XCJdOm5vdCgubWFpbi1hcmVhKWApICE9PSBudWxsO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjwhLS0gSU1QT1JUQU5UOiBUSElTIEhUTUwgRklMRSBJUyBBTFNPIFVTRUQgQlkgYFZpZXdUYWJEcmFnSW1hZ2VDb21wb25lbnRgIC0tPlxuXG5AaWYgKHZpZXcoKS5hY3RpdmUoKSkge1xuICA8ZGl2IGNsYXNzPVwiY29ybmVyLXJhZGl1cyBzdGFydFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVcIj48L2Rpdj5cbiAgPC9kaXY+XG59XG5cbjxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gIDxuZy1jb250YWluZXIgKmNka1BvcnRhbE91dGxldD1cInZpZXdUYWJDb250ZW50UG9ydGFsKClcIi8+XG48L2Rpdj5cblxuQGlmICh2aWV3KCkuYWN0aXZlKCkpIHtcbiAgPGRpdiBjbGFzcz1cImNvcm5lci1yYWRpdXMgZW5kXCI+XG4gICAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuICA8L2Rpdj5cbn1cblxuQGlmICh2aWV3KCkuY2xvc2FibGUoKSkge1xuICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UgZTJlLWNsb3NlIHNjaW9uLXdvcmtiZW5jaC1pY29uc1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoJGV2ZW50KVwiPlxuICAgIGNsb3NlXG4gIDwvYnV0dG9uPlxufVxuIl19
|