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