@scion/workbench 17.0.0-beta.6 → 17.0.0-beta.8
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/README.md +1 -1
- package/esm2022/lib/activation-instant.provider.mjs +3 -3
- package/esm2022/lib/common/asserts.util.mjs +2 -2
- package/esm2022/lib/common/class-list.mjs +61 -0
- package/esm2022/lib/common/coerce-observable.pipe.mjs +3 -3
- package/esm2022/lib/common/filter-by-predicate.pipe.mjs +3 -3
- package/esm2022/lib/common/filter-by-text.pipe.mjs +3 -3
- package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +6 -6
- package/esm2022/lib/common/instanceof.pipe.mjs +3 -3
- package/esm2022/lib/common/map-coerce.pipe.mjs +3 -3
- package/esm2022/lib/common/null-if-empty.pipe.mjs +3 -3
- package/esm2022/lib/common/objects.util.mjs +34 -0
- package/esm2022/lib/common/typeof.pipe.mjs +3 -3
- package/esm2022/lib/common/uuid.util.mjs +17 -0
- package/esm2022/lib/content-projection/content-as-overlay.component.mjs +3 -3
- package/esm2022/lib/content-projection/content-projection.directive.mjs +3 -3
- 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 +3 -3
- package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +3 -3
- package/esm2022/lib/dialog/movable.directive.mjs +3 -3
- package/esm2022/lib/dialog/resizable.directive.mjs +3 -3
- package/esm2022/lib/dialog/workbench-dialog.component.mjs +3 -3
- package/esm2022/lib/dialog/workbench-dialog.mjs +1 -1
- package/esm2022/lib/dialog/workbench-dialog.options.mjs +1 -1
- package/esm2022/lib/dialog/workbench-dialog.registry.mjs +4 -4
- package/esm2022/lib/dialog/workbench-dialog.service.mjs +5 -5
- package/esm2022/lib/dialog//311/265workbench-dialog.mjs +8 -26
- package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +3 -3
- package/esm2022/lib/filter-field/filter-field.component.mjs +6 -6
- package/esm2022/lib/glass-pane/glass-pane.directive.mjs +3 -3
- package/esm2022/lib/layout/grid-element/grid-element.component.mjs +10 -10
- package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +7 -4
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v1.model.mjs +11 -0
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v2.model.mjs +11 -0
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v3.model.mjs +11 -0
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v4.model.mjs +11 -0
- package/esm2022/lib/layout/migration/workbench-layout-migration-v2.service.mjs +59 -0
- package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +117 -0
- package/esm2022/lib/layout/migration/workbench-layout-migration-v4.service.mjs +57 -0
- package/esm2022/lib/layout/workbench-layout.component.mjs +7 -4
- package/esm2022/lib/layout/workbench-layout.factory.mjs +4 -4
- package/esm2022/lib/layout/workbench-layout.mjs +1 -1
- package/esm2022/lib/layout/workbench-layout.model.mjs +5 -6
- package/esm2022/lib/layout/workbench-layout.service.mjs +3 -3
- package/esm2022/lib/layout/workbench-layouts.util.mjs +53 -16
- package/esm2022/lib/layout/workench-layout-serializer.service.mjs +53 -21
- package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +8 -5
- package/esm2022/lib/layout//311/265workbench-layout.mjs +382 -195
- package/esm2022/lib/logging/console-appender.service.mjs +3 -3
- package/esm2022/lib/logging/logger-names.mjs +8 -9
- package/esm2022/lib/logging/logger.mjs +3 -3
- package/esm2022/lib/logging/logging-support.mjs +4 -4
- package/esm2022/lib/logging/logging.model.mjs +3 -3
- package/esm2022/lib/logging//311/265logger.mjs +3 -3
- package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +18 -20
- package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +3 -3
- package/esm2022/lib/message-box/workbench-message-box.component.mjs +3 -3
- package/esm2022/lib/message-box/workbench-message-box.options.mjs +1 -1
- package/esm2022/lib/message-box/workbench-message-box.service.mjs +5 -5
- package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +5 -5
- package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +55 -0
- package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +34 -22
- package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +53 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +85 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +140 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +122 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +11 -10
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.service.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-notification/microfrontend-notification-intent-handler.service.mjs +3 -3
- 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 +30 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +130 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +18 -30
- package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +9 -31
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +88 -144
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-workbench-view.model.mjs +23 -0
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +41 -0
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +30 -0
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +125 -0
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +103 -0
- package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +45 -47
- package/esm2022/lib/migration/workbench-migration.mjs +11 -0
- package/esm2022/lib/migration/workbench-migrator.mjs +38 -0
- package/esm2022/lib/notification/notification-css-classes.pipe.mjs +3 -3
- package/esm2022/lib/notification/notification-list.component.mjs +3 -3
- package/esm2022/lib/notification/notification.component.mjs +3 -3
- package/esm2022/lib/notification/notification.config.mjs +1 -1
- package/esm2022/lib/notification/notification.mjs +1 -1
- package/esm2022/lib/notification/notification.service.mjs +9 -9
- package/esm2022/lib/notification/text-notification.component.mjs +3 -3
- package/esm2022/lib/page-not-found/format-url.pipe.mjs +26 -0
- package/esm2022/lib/page-not-found/page-not-found.component.mjs +28 -0
- package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +3 -3
- package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +3 -3
- package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +4 -4
- package/esm2022/lib/part/part-bar/part-bar.component.mjs +11 -8
- package/esm2022/lib/part/part-portal.pipe.mjs +3 -3
- package/esm2022/lib/part/part.component.mjs +7 -4
- package/esm2022/lib/part/view-context-menu/accelerator-format.pipe.mjs +3 -3
- package/esm2022/lib/part/view-context-menu/text.component.mjs +3 -3
- package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +3 -3
- package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +4 -4
- package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +19 -19
- package/esm2022/lib/part/view-list/view-list.component.mjs +3 -3
- package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +3 -3
- package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +9 -9
- package/esm2022/lib/part/view-tab/view-tab.component.mjs +16 -13
- package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +5 -5
- package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +9 -9
- package/esm2022/lib/part/workbench-part-action.registry.mjs +3 -3
- package/esm2022/lib/part/workbench-part.model.mjs +1 -1
- package/esm2022/lib/part/workbench-part.registry.mjs +3 -3
- package/esm2022/lib/part//311/265workbench-part.model.mjs +3 -3
- package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v1.model.mjs +11 -0
- package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v2.model.mjs +11 -0
- package/esm2022/lib/perspective/migration/workbench-perspective-migration-v2.service.mjs +57 -0
- package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +19 -51
- package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +23 -18
- package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +27 -42
- package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
- package/esm2022/lib/perspective/workbench-perspective.registry.mjs +3 -3
- package/esm2022/lib/perspective/workbench-perspective.service.mjs +15 -10
- package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +62 -0
- package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +98 -78
- package/esm2022/lib/popup/popup.component.mjs +3 -3
- package/esm2022/lib/popup/popup.config.mjs +1 -1
- package/esm2022/lib/popup/popup.service.mjs +3 -3
- package/esm2022/lib/portal/workbench-portal-outlet.directive.mjs +6 -6
- package/esm2022/lib/public_api.mjs +3 -2
- package/esm2022/lib/registry/workbench-object-registry.mjs +3 -3
- package/esm2022/lib/routing/empty-outlet/empty-outlet.component.mjs +31 -0
- package/esm2022/lib/routing/public_api.mjs +1 -1
- package/esm2022/lib/routing/router.util.mjs +96 -71
- package/esm2022/lib/routing/routing.model.mjs +11 -0
- package/esm2022/lib/routing/url-segment-matcher.mjs +46 -0
- package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +58 -50
- package/esm2022/lib/routing/workbench-dialog-differ.mjs +51 -0
- package/esm2022/lib/routing/workbench-layout-differ.mjs +14 -17
- package/esm2022/lib/routing/workbench-navigational-states.mjs +11 -25
- package/esm2022/lib/routing/workbench-popup-differ.mjs +6 -6
- package/esm2022/lib/routing/workbench-route-data.mjs +15 -14
- package/esm2022/lib/routing/workbench-router-link.directive.mjs +24 -33
- package/esm2022/lib/routing/workbench-router.service.mjs +13 -378
- package/esm2022/lib/routing/workbench-url-observer.service.mjs +65 -36
- package/esm2022/lib/routing//311/265location.mjs +3 -3
- package/esm2022/lib/routing//311/265workbench-router.service.mjs +317 -0
- package/esm2022/lib/startup/splash/splash.component.mjs +3 -3
- package/esm2022/lib/startup/workbench-launcher.service.mjs +11 -11
- package/esm2022/lib/storage/workbench-storage.mjs +3 -3
- package/esm2022/lib/testing/public_api.mjs +2 -1
- package/esm2022/lib/testing/workbench-testing.module.mjs +13 -39
- package/esm2022/lib/testing/workbench.provider.mjs +60 -0
- package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +3 -3
- package/esm2022/lib/view/public_api.mjs +2 -1
- package/esm2022/lib/view/view-move-handler.service.mjs +42 -62
- package/esm2022/lib/view/view-portal.pipe.mjs +4 -4
- package/esm2022/lib/view/view.component.mjs +8 -38
- package/esm2022/lib/view/workbench-view-route-guards.mjs +47 -0
- package/esm2022/lib/view/workbench-view.model.mjs +6 -4
- package/esm2022/lib/view/workbench-view.registry.mjs +4 -4
- package/esm2022/lib/view//311/265workbench-view.model.mjs +135 -28
- package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +33 -32
- package/esm2022/lib/view-dnd/requires-drop-zone.pipe.mjs +7 -7
- package/esm2022/lib/view-dnd/view-drag.service.mjs +6 -6
- package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +3 -3
- package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +4 -4
- package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +11 -9
- package/esm2022/lib/workbench-config.mjs +15 -0
- package/esm2022/lib/workbench-id.mjs +3 -3
- package/esm2022/lib/workbench.component.mjs +14 -10
- package/esm2022/lib/workbench.constants.mjs +8 -10
- package/esm2022/lib/workbench.model.mjs +1 -1
- package/esm2022/lib/workbench.module.mjs +15 -86
- package/esm2022/lib/workbench.provider.mjs +117 -0
- package/esm2022/lib/workbench.service.mjs +5 -5
- package/esm2022/lib//311/265workbench.service.mjs +15 -21
- package/fesm2022/scion-workbench.mjs +5527 -4289
- package/fesm2022/scion-workbench.mjs.map +1 -1
- package/lib/common/class-list.d.ts +51 -0
- package/lib/common/objects.util.d.ts +17 -0
- package/lib/common/uuid.util.d.ts +8 -0
- package/lib/dialog/workbench-dialog.d.ts +3 -7
- package/lib/dialog/workbench-dialog.options.d.ts +5 -4
- package/lib/dialog/workbench-dialog.registry.d.ts +4 -3
- package/lib/dialog/workbench-dialog.service.d.ts +1 -1
- package/lib/dialog//311/265workbench-dialog.d.ts +4 -6
- package/lib/filter-field/filter-field.component.d.ts +1 -1
- package/lib/layout/grid-element/grid-element.component.d.ts +2 -2
- package/lib/layout/migration/model/workbench-layout-migration-v1.model.d.ts +16 -0
- package/lib/layout/migration/model/workbench-layout-migration-v2.model.d.ts +22 -0
- package/lib/layout/migration/model/workbench-layout-migration-v3.model.d.ts +30 -0
- package/lib/layout/migration/model/workbench-layout-migration-v4.model.d.ts +31 -0
- package/lib/layout/migration/workbench-layout-migration-v2.service.d.ts +13 -0
- package/lib/layout/migration/workbench-layout-migration-v3.service.d.ts +16 -0
- package/lib/layout/migration/workbench-layout-migration-v4.service.d.ts +12 -0
- package/lib/layout/workbench-layout.d.ts +61 -7
- package/lib/layout/workbench-layout.factory.d.ts +1 -1
- package/lib/layout/workbench-layout.model.d.ts +19 -9
- package/lib/layout/workbench-layouts.util.d.ts +22 -6
- package/lib/layout/workench-layout-serializer.service.d.ts +28 -7
- package/lib/layout//311/265workbench-layout.d.ts +172 -98
- package/lib/layout//311/265workbench-layout.factory.d.ts +4 -0
- package/lib/logging/logger-names.d.ts +7 -7
- package/lib/logging/logging-support.d.ts +2 -2
- package/lib/message-box/workbench-message-box.options.d.ts +4 -3
- package/lib/message-box/workbench-message-box.service.d.ts +1 -1
- package/lib/microfrontend-platform/common/microfrontend.util.d.ts +22 -0
- package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +15 -9
- package/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.d.ts +11 -0
- package/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.d.ts +28 -0
- package/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.d.ts +52 -0
- package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +37 -0
- package/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.d.ts +2 -1
- package/lib/microfrontend-platform/microfrontend-popup/{microfrontend-popup-capability-interceptor.service.d.ts → microfrontend-popup-capability-validator.interceptor.d.ts} +3 -3
- package/lib/microfrontend-platform/microfrontend-popup/{microfrontend-popup-intent-interceptor.service.d.ts → microfrontend-popup-intent-handler.interceptor.d.ts} +9 -6
- package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +7 -10
- package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +2 -9
- package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +12 -23
- package/lib/microfrontend-platform/microfrontend-view/microfrontend-workbench-view.model.d.ts +14 -0
- package/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.d.ts +10 -0
- package/lib/microfrontend-platform/routing/{microfrontend-view-capability-interceptor.service.d.ts → microfrontend-view-capability-validator.interceptor.d.ts} +3 -3
- package/lib/microfrontend-platform/routing/{microfrontend-view-intent-interceptor.service.d.ts → microfrontend-view-intent-handler.interceptor.d.ts} +6 -5
- package/lib/microfrontend-platform/routing/microfrontend-view-routes.d.ts +49 -0
- package/lib/microfrontend-platform/workbench-microfrontend-support.d.ts +3 -2
- package/lib/migration/workbench-migration.d.ts +9 -0
- package/lib/migration/workbench-migrator.d.ts +18 -0
- package/lib/notification/notification.config.d.ts +1 -1
- package/lib/notification/notification.d.ts +1 -3
- package/lib/page-not-found/format-url.pipe.d.ts +11 -0
- package/lib/page-not-found/page-not-found.component.d.ts +8 -0
- package/lib/part/part-action-bar/part-action.directive.d.ts +1 -1
- package/lib/part/part-bar/part-bar.component.d.ts +4 -3
- package/lib/part/view-context-menu/view-menu.directive.d.ts +1 -1
- package/lib/part/view-context-menu/view-menu.service.d.ts +5 -4
- package/lib/part/view-list-item/view-list-item.component.d.ts +5 -4
- package/lib/part/view-tab/view-tab.component.d.ts +6 -5
- package/lib/part/view-tab-drag-image/view-tab-drag-image.component.d.ts +3 -3
- package/lib/part/workbench-part.model.d.ts +5 -4
- package/lib/part//311/265workbench-part.model.d.ts +5 -4
- package/lib/perspective/migration/model/workbench-perspective-migration-v1.model.d.ts +8 -0
- package/lib/perspective/migration/model/workbench-perspective-migration-v2.model.d.ts +10 -0
- package/lib/perspective/migration/workbench-perspective-migration-v2.service.d.ts +13 -0
- package/lib/perspective/workbench-grid-merger.service.d.ts +9 -16
- package/lib/perspective/workbench-perspective-storage.service.d.ts +10 -28
- package/lib/perspective/workbench-perspective-view-conflict-resolver.service.d.ts +8 -25
- package/lib/perspective/workbench-perspective.model.d.ts +123 -14
- package/lib/perspective/workbench-perspective.service.d.ts +10 -3
- package/lib/perspective/workench-perspective-serializer.service.d.ts +26 -0
- package/lib/perspective//311/265workbench-perspective.model.d.ts +16 -14
- package/lib/popup/popup.config.d.ts +4 -3
- package/lib/portal/workbench-portal-outlet.directive.d.ts +2 -2
- package/lib/public_api.d.ts +4 -3
- package/lib/registry/workbench-object-registry.d.ts +2 -2
- package/lib/routing/empty-outlet/empty-outlet.component.d.ts +15 -0
- package/lib/routing/public_api.d.ts +2 -1
- package/lib/routing/router.util.d.ts +45 -31
- package/lib/routing/routing.model.d.ts +129 -0
- package/lib/routing/url-segment-matcher.d.ts +20 -0
- package/lib/routing/workbench-auxiliary-routes-registrator.service.d.ts +25 -16
- package/lib/routing/workbench-dialog-differ.d.ts +25 -0
- package/lib/routing/workbench-layout-differ.d.ts +4 -7
- package/lib/routing/workbench-navigational-states.d.ts +11 -21
- package/lib/routing/workbench-route-data.d.ts +14 -12
- package/lib/routing/workbench-router-link.directive.d.ts +22 -7
- package/lib/routing/workbench-router.service.d.ts +42 -157
- package/lib/routing/workbench-url-observer.service.d.ts +18 -6
- package/lib/routing//311/265workbench-router.service.d.ts +75 -0
- package/lib/startup/workbench-launcher.service.d.ts +4 -4
- package/lib/testing/public_api.d.ts +1 -0
- package/lib/testing/workbench-testing.module.d.ts +7 -6
- package/lib/testing/workbench.provider.d.ts +29 -0
- package/lib/view/public_api.d.ts +2 -1
- package/lib/view/view-move-handler.service.d.ts +2 -4
- package/lib/view/view-portal.pipe.d.ts +2 -1
- package/lib/view/view.component.d.ts +1 -11
- package/lib/view/workbench-view-route-guards.d.ts +36 -0
- package/lib/view/workbench-view.model.d.ts +46 -13
- package/lib/view/workbench-view.registry.d.ts +4 -3
- package/lib/view//311/265workbench-view.model.d.ts +79 -14
- package/lib/view-dnd/grid-drop-targets.util.d.ts +15 -17
- package/lib/view-dnd/view-drag.service.d.ts +12 -4
- package/lib/view-dnd/view-drop-zone.directive.d.ts +1 -1
- package/lib/{workbench-module-config.d.ts → workbench-config.d.ts} +29 -71
- package/lib/workbench.component.d.ts +2 -2
- package/lib/workbench.constants.d.ts +6 -8
- package/lib/workbench.model.d.ts +20 -8
- package/lib/workbench.module.d.ts +12 -7
- package/lib/workbench.provider.d.ts +38 -0
- package/lib/workbench.service.d.ts +32 -8
- package/lib//311/265workbench.service.d.ts +9 -3
- package/package.json +8 -8
- package/esm2022/lib/layout/migration/workbench-layout-migrator.service.mjs +0 -38
- package/esm2022/lib/layout/migration/workbench-layout-v1-migrator.service.mjs +0 -59
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-interceptor.service.mjs +0 -30
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-interceptor.service.mjs +0 -130
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-navigational-states.mjs +0 -22
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-routes.mjs +0 -71
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-interceptor.service.mjs +0 -54
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-interceptor.service.mjs +0 -123
- package/esm2022/lib/routing/navigation-state.resolver.mjs +0 -54
- package/esm2022/lib/view/workbench-view-pre-destroy.guard.mjs +0 -36
- package/esm2022/lib/workbench-module-config.mjs +0 -15
- package/lib/layout/migration/workbench-layout-migrator.service.d.ts +0 -15
- package/lib/layout/migration/workbench-layout-v1-migrator.service.d.ts +0 -12
- package/lib/microfrontend-platform/routing/microfrontend-navigational-states.d.ts +0 -11
- package/lib/microfrontend-platform/routing/microfrontend-routes.d.ts +0 -38
- package/lib/routing/navigation-state.resolver.d.ts +0 -12
- package/lib/view/workbench-view-pre-destroy.guard.d.ts +0 -5
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made
|
|
5
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
*/
|
|
10
|
+
import { Injectable } from '@angular/core';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
/**
|
|
13
|
+
* Migrates the perspective layout from version 1 to version 2.
|
|
14
|
+
*
|
|
15
|
+
* TODO [Angular 20] Remove migrator.
|
|
16
|
+
*/
|
|
17
|
+
export class WorkbenchPerspectiveMigrationV2 {
|
|
18
|
+
migrate(json) {
|
|
19
|
+
const perspectiveDataV1 = JSON.parse(json);
|
|
20
|
+
const perspectiveLayoutV2 = {
|
|
21
|
+
userLayout: {
|
|
22
|
+
workbenchGrid: perspectiveDataV1.workbenchGrid,
|
|
23
|
+
viewOutlets: this.migrateViewOutlets(perspectiveDataV1.viewOutlets),
|
|
24
|
+
},
|
|
25
|
+
referenceLayout: {
|
|
26
|
+
workbenchGrid: perspectiveDataV1.initialWorkbenchGrid,
|
|
27
|
+
viewOutlets: JSON.stringify({}),
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
return JSON.stringify(perspectiveLayoutV2);
|
|
31
|
+
}
|
|
32
|
+
migrateViewOutlets(viewOutlets) {
|
|
33
|
+
return JSON.stringify(Object.fromEntries(Object.entries(viewOutlets)
|
|
34
|
+
.map(([viewId, commands]) => {
|
|
35
|
+
return [viewId, commandsToSegments(commands)];
|
|
36
|
+
})));
|
|
37
|
+
}
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveMigrationV2, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
39
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveMigrationV2, providedIn: 'root' }); }
|
|
40
|
+
}
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveMigrationV2, decorators: [{
|
|
42
|
+
type: Injectable,
|
|
43
|
+
args: [{ providedIn: 'root' }]
|
|
44
|
+
}] });
|
|
45
|
+
function commandsToSegments(commands) {
|
|
46
|
+
const segments = new Array();
|
|
47
|
+
commands.forEach(command => {
|
|
48
|
+
if (typeof command === 'string') {
|
|
49
|
+
segments.push({ path: command, parameters: {} });
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
segments.at(-1).parameters = command;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
return segments;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLW1pZ3JhdGlvbi12Mi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGVyc3BlY3RpdmUvbWlncmF0aW9uL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS1taWdyYXRpb24tdjIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBTXpDOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sK0JBQStCO0lBRW5DLE9BQU8sQ0FBQyxJQUFZO1FBQ3pCLE1BQU0saUJBQWlCLEdBQXNCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUQsTUFBTSxtQkFBbUIsR0FBeUI7WUFDaEQsVUFBVSxFQUFFO2dCQUNWLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxhQUFhO2dCQUM5QyxXQUFXLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQzthQUNwRTtZQUNELGVBQWUsRUFBRTtnQkFDZixhQUFhLEVBQUUsaUJBQWlCLENBQUMsb0JBQW9CO2dCQUNyRCxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7YUFDaEM7U0FDRixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFdBQXlDO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO2FBQ2pFLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBcUIsRUFBNkIsRUFBRTtZQUN6RSxPQUFPLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F2QlUsK0JBQStCO2tIQUEvQiwrQkFBK0IsY0FEbkIsTUFBTTs7MkZBQ2xCLCtCQUErQjtrQkFEM0MsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBMkJoQyxTQUFTLGtCQUFrQixDQUFDLFFBQWtCO0lBQzVDLE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxFQUFpQixDQUFDO0lBRTVDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDekIsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7U0FDaEQ7YUFDSTtZQUNILFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQZXJzcGVjdGl2ZURhdGFWMX0gZnJvbSAnLi9tb2RlbC93b3JrYmVuY2gtcGVyc3BlY3RpdmUtbWlncmF0aW9uLXYxLm1vZGVsJztcbmltcG9ydCB7TVBlcnNwZWN0aXZlTGF5b3V0VjJ9IGZyb20gJy4vbW9kZWwvd29ya2JlbmNoLXBlcnNwZWN0aXZlLW1pZ3JhdGlvbi12Mi5tb2RlbCc7XG5pbXBvcnQge0NvbW1hbmRzfSBmcm9tICcuLi8uLi9yb3V0aW5nL3JvdXRpbmcubW9kZWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hNaWdyYXRpb259IGZyb20gJy4uLy4uL21pZ3JhdGlvbi93b3JrYmVuY2gtbWlncmF0aW9uJztcblxuLyoqXG4gKiBNaWdyYXRlcyB0aGUgcGVyc3BlY3RpdmUgbGF5b3V0IGZyb20gdmVyc2lvbiAxIHRvIHZlcnNpb24gMi5cbiAqXG4gKiBUT0RPIFtBbmd1bGFyIDIwXSBSZW1vdmUgbWlncmF0b3IuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaFBlcnNwZWN0aXZlTWlncmF0aW9uVjIgaW1wbGVtZW50cyBXb3JrYmVuY2hNaWdyYXRpb24ge1xuXG4gIHB1YmxpYyBtaWdyYXRlKGpzb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGVyc3BlY3RpdmVEYXRhVjE6IFBlcnNwZWN0aXZlRGF0YVYxID0gSlNPTi5wYXJzZShqc29uKTtcbiAgICBjb25zdCBwZXJzcGVjdGl2ZUxheW91dFYyOiBNUGVyc3BlY3RpdmVMYXlvdXRWMiA9IHtcbiAgICAgIHVzZXJMYXlvdXQ6IHtcbiAgICAgICAgd29ya2JlbmNoR3JpZDogcGVyc3BlY3RpdmVEYXRhVjEud29ya2JlbmNoR3JpZCxcbiAgICAgICAgdmlld091dGxldHM6IHRoaXMubWlncmF0ZVZpZXdPdXRsZXRzKHBlcnNwZWN0aXZlRGF0YVYxLnZpZXdPdXRsZXRzKSxcbiAgICAgIH0sXG4gICAgICByZWZlcmVuY2VMYXlvdXQ6IHtcbiAgICAgICAgd29ya2JlbmNoR3JpZDogcGVyc3BlY3RpdmVEYXRhVjEuaW5pdGlhbFdvcmtiZW5jaEdyaWQsXG4gICAgICAgIHZpZXdPdXRsZXRzOiBKU09OLnN0cmluZ2lmeSh7fSksXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHBlcnNwZWN0aXZlTGF5b3V0VjIpO1xuICB9XG5cbiAgcHJpdmF0ZSBtaWdyYXRlVmlld091dGxldHModmlld091dGxldHM6IHtbdmlld0lkOiBzdHJpbmddOiBDb21tYW5kc30pOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModmlld091dGxldHMpXG4gICAgICAubWFwKChbdmlld0lkLCBjb21tYW5kc106IFtzdHJpbmcsIENvbW1hbmRzXSk6IFtzdHJpbmcsIE1VcmxTZWdtZW50VjJbXV0gPT4ge1xuICAgICAgICByZXR1cm4gW3ZpZXdJZCwgY29tbWFuZHNUb1NlZ21lbnRzKGNvbW1hbmRzKV07XG4gICAgICB9KSxcbiAgICApKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21tYW5kc1RvU2VnbWVudHMoY29tbWFuZHM6IENvbW1hbmRzKTogTVVybFNlZ21lbnRWMltdIHtcbiAgY29uc3Qgc2VnbWVudHMgPSBuZXcgQXJyYXk8TVVybFNlZ21lbnRWMj4oKTtcblxuICBjb21tYW5kcy5mb3JFYWNoKGNvbW1hbmQgPT4ge1xuICAgIGlmICh0eXBlb2YgY29tbWFuZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNlZ21lbnRzLnB1c2goe3BhdGg6IGNvbW1hbmQsIHBhcmFtZXRlcnM6IHt9fSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc2VnbWVudHMuYXQoLTEpIS5wYXJhbWV0ZXJzID0gY29tbWFuZDtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBzZWdtZW50cztcbn1cblxuaW50ZXJmYWNlIE1VcmxTZWdtZW50VjIge1xuICBwYXRoOiBzdHJpbmc7XG4gIHBhcmFtZXRlcnM6IHtbbmFtZTogc3RyaW5nXTogc3RyaW5nfTtcbn1cbiJdfQ==
|
|
@@ -7,65 +7,33 @@
|
|
|
7
7
|
*
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
11
|
-
import { MAIN_AREA } from '../layout/workbench-layout';
|
|
10
|
+
import { Injectable } from '@angular/core';
|
|
12
11
|
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "../layout/\u0275workbench-layout.factory";
|
|
14
12
|
/**
|
|
15
|
-
* Performs a three-way merge of the
|
|
13
|
+
* Performs a three-way merge of the local and remote layouts, using the base layout (common ancestor) as the base of the merge operation.
|
|
14
|
+
*
|
|
15
|
+
* TODO [#452] This implementation discards local changes when a new layout is available.
|
|
16
16
|
*/
|
|
17
17
|
export class WorkbenchGridMerger {
|
|
18
|
-
constructor(_workbenchLayoutFactory, iterableDiffers) {
|
|
19
|
-
this._workbenchLayoutFactory = _workbenchLayoutFactory;
|
|
20
|
-
this._differs = inject(IterableDiffers).find([]);
|
|
21
|
-
this._differs = iterableDiffers.find([]);
|
|
22
|
-
}
|
|
23
18
|
/**
|
|
24
|
-
* Performs a merge of given local and remote
|
|
19
|
+
* Performs a merge of given local and remote layouts, using the base layout as the common ancestor.
|
|
25
20
|
*/
|
|
26
21
|
merge(grids) {
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
mergedLayout = mergedLayout.addView(addedView.id, { partId: part.id });
|
|
37
|
-
}
|
|
38
|
-
// If the local grid does not contain the part, add the part to an existing part or create a new part.
|
|
39
|
-
else {
|
|
40
|
-
const existingPart = mergedLayout.parts({ grid: 'workbench' }).filter(part => part.id !== MAIN_AREA)[0];
|
|
41
|
-
if (existingPart) {
|
|
42
|
-
mergedLayout = mergedLayout.addView(addedView.id, { partId: existingPart.id });
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
mergedLayout = mergedLayout
|
|
46
|
-
.addPart(part.id, { align: 'left' })
|
|
47
|
-
.addView(addedView.id, { partId: part.id });
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
viewsChanges?.forEachRemovedItem(({ item: removedView }) => {
|
|
52
|
-
mergedLayout = mergedLayout.removeView(removedView.id);
|
|
53
|
-
});
|
|
54
|
-
return mergedLayout.workbenchGrid;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Computes the diff of views added or removed in layout 2.
|
|
58
|
-
*/
|
|
59
|
-
viewsDiff(layout1, layout2) {
|
|
60
|
-
const differ = this._differs.create((index, view) => view.id);
|
|
61
|
-
differ.diff(layout1.views({ grid: 'workbench' }));
|
|
62
|
-
return differ.diff(layout2.views({ grid: 'workbench' }));
|
|
22
|
+
const serializedBaseLayout = grids.base.serialize();
|
|
23
|
+
const serializedRemoteLayout = grids.remote.serialize();
|
|
24
|
+
if (serializedBaseLayout.workbenchGrid !== serializedRemoteLayout.workbenchGrid) {
|
|
25
|
+
return grids.remote;
|
|
26
|
+
}
|
|
27
|
+
if (serializedBaseLayout.workbenchViewOutlets !== serializedRemoteLayout.workbenchViewOutlets) {
|
|
28
|
+
return grids.remote;
|
|
29
|
+
}
|
|
30
|
+
return grids.local;
|
|
63
31
|
}
|
|
64
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
65
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.
|
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchGridMerger, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchGridMerger, providedIn: 'root' }); }
|
|
66
34
|
}
|
|
67
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchGridMerger, decorators: [{
|
|
68
36
|
type: Injectable,
|
|
69
37
|
args: [{ providedIn: 'root' }]
|
|
70
|
-
}]
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
}] });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWdyaWQtbWVyZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wZXJzcGVjdGl2ZS93b3JrYmVuY2gtZ3JpZC1tZXJnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBR3pDOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCOztPQUVHO0lBQ0ksS0FBSyxDQUFDLEtBQWtGO1FBQzdGLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNwRCxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFeEQsSUFBSSxvQkFBb0IsQ0FBQyxhQUFhLEtBQUssc0JBQXNCLENBQUMsYUFBYSxFQUFFO1lBQy9FLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUNyQjtRQUNELElBQUksb0JBQW9CLENBQUMsb0JBQW9CLEtBQUssc0JBQXNCLENBQUMsb0JBQW9CLEVBQUU7WUFDN0YsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO1NBQ3JCO1FBQ0QsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3JCLENBQUM7OEdBaEJVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRFAsTUFBTTs7MkZBQ2xCLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaExheW91dH0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dCc7XG5cbi8qKlxuICogUGVyZm9ybXMgYSB0aHJlZS13YXkgbWVyZ2Ugb2YgdGhlIGxvY2FsIGFuZCByZW1vdGUgbGF5b3V0cywgdXNpbmcgdGhlIGJhc2UgbGF5b3V0IChjb21tb24gYW5jZXN0b3IpIGFzIHRoZSBiYXNlIG9mIHRoZSBtZXJnZSBvcGVyYXRpb24uXG4gKlxuICogVE9ETyBbIzQ1Ml0gVGhpcyBpbXBsZW1lbnRhdGlvbiBkaXNjYXJkcyBsb2NhbCBjaGFuZ2VzIHdoZW4gYSBuZXcgbGF5b3V0IGlzIGF2YWlsYWJsZS5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoR3JpZE1lcmdlciB7XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIGEgbWVyZ2Ugb2YgZ2l2ZW4gbG9jYWwgYW5kIHJlbW90ZSBsYXlvdXRzLCB1c2luZyB0aGUgYmFzZSBsYXlvdXQgYXMgdGhlIGNvbW1vbiBhbmNlc3Rvci5cbiAgICovXG4gIHB1YmxpYyBtZXJnZShncmlkczoge2xvY2FsOiDJtVdvcmtiZW5jaExheW91dDsgcmVtb3RlOiDJtVdvcmtiZW5jaExheW91dDsgYmFzZTogybVXb3JrYmVuY2hMYXlvdXR9KTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRCYXNlTGF5b3V0ID0gZ3JpZHMuYmFzZS5zZXJpYWxpemUoKTtcbiAgICBjb25zdCBzZXJpYWxpemVkUmVtb3RlTGF5b3V0ID0gZ3JpZHMucmVtb3RlLnNlcmlhbGl6ZSgpO1xuXG4gICAgaWYgKHNlcmlhbGl6ZWRCYXNlTGF5b3V0LndvcmtiZW5jaEdyaWQgIT09IHNlcmlhbGl6ZWRSZW1vdGVMYXlvdXQud29ya2JlbmNoR3JpZCkge1xuICAgICAgcmV0dXJuIGdyaWRzLnJlbW90ZTtcbiAgICB9XG4gICAgaWYgKHNlcmlhbGl6ZWRCYXNlTGF5b3V0LndvcmtiZW5jaFZpZXdPdXRsZXRzICE9PSBzZXJpYWxpemVkUmVtb3RlTGF5b3V0LndvcmtiZW5jaFZpZXdPdXRsZXRzKSB7XG4gICAgICByZXR1cm4gZ3JpZHMucmVtb3RlO1xuICAgIH1cbiAgICByZXR1cm4gZ3JpZHMubG9jYWw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -10,32 +10,37 @@
|
|
|
10
10
|
import { Injectable } from '@angular/core';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
import * as i1 from "../storage/workbench-storage";
|
|
13
|
+
import * as i2 from "./workench-perspective-serializer.service";
|
|
14
|
+
import * as i3 from "../logging";
|
|
13
15
|
/**
|
|
14
16
|
* Provides API to read/write perspective data from/to {@link WorkbenchStorage}.
|
|
15
17
|
*/
|
|
16
18
|
export class WorkbenchPerspectiveStorageService {
|
|
17
|
-
constructor(_storage) {
|
|
19
|
+
constructor(_storage, _workbenchPerspectiveSerializer, _logger) {
|
|
18
20
|
this._storage = _storage;
|
|
21
|
+
this._workbenchPerspectiveSerializer = _workbenchPerspectiveSerializer;
|
|
22
|
+
this._logger = _logger;
|
|
19
23
|
}
|
|
20
24
|
/**
|
|
21
|
-
* Reads
|
|
25
|
+
* Reads the layout of given perspective from storage, applying necessary migrations if the serialized layout is outdated.
|
|
22
26
|
*/
|
|
23
|
-
async
|
|
24
|
-
const storageKey = storageKeys.
|
|
27
|
+
async loadPerspectiveLayout(perspectiveId) {
|
|
28
|
+
const storageKey = storageKeys.perspectiveLayout(perspectiveId);
|
|
25
29
|
const serialized = await this._storage.load(storageKey);
|
|
26
|
-
|
|
30
|
+
try {
|
|
31
|
+
return this._workbenchPerspectiveSerializer.deserialize(serialized);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
this._logger.error(`[SerializeError] Failed to deserialize perspective '${perspectiveId}'. Please clear your browser storage and reload the application.`, error);
|
|
27
35
|
return null;
|
|
28
36
|
}
|
|
29
|
-
const json = window.atob(serialized);
|
|
30
|
-
return JSON.parse(json);
|
|
31
37
|
}
|
|
32
38
|
/**
|
|
33
|
-
* Writes
|
|
39
|
+
* Writes the layout of a perspective to storage.
|
|
34
40
|
*/
|
|
35
|
-
async
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
const serialized = window.btoa(json);
|
|
41
|
+
async storePerspectiveLayout(perspectiveId, data) {
|
|
42
|
+
const serialized = this._workbenchPerspectiveSerializer.serialize(data);
|
|
43
|
+
const storageKey = storageKeys.perspectiveLayout(perspectiveId);
|
|
39
44
|
await this._storage.store(storageKey, serialized);
|
|
40
45
|
}
|
|
41
46
|
/**
|
|
@@ -50,18 +55,18 @@ export class WorkbenchPerspectiveStorageService {
|
|
|
50
55
|
async storeActivePerspectiveId(perspectiveId) {
|
|
51
56
|
return this._storage.store(storageKeys.activePerspectiveId, perspectiveId);
|
|
52
57
|
}
|
|
53
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
54
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveStorageService, deps: [{ token: i1.WorkbenchStorage }, { token: i2.WorkbenchPerspectiveSerializer }, { token: i3.Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
59
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveStorageService, providedIn: 'root' }); }
|
|
55
60
|
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveStorageService, decorators: [{
|
|
57
62
|
type: Injectable,
|
|
58
63
|
args: [{ providedIn: 'root' }]
|
|
59
|
-
}], ctorParameters: () => [{ type: i1.WorkbenchStorage }] });
|
|
64
|
+
}], ctorParameters: () => [{ type: i1.WorkbenchStorage }, { type: i2.WorkbenchPerspectiveSerializer }, { type: i3.Logger }] });
|
|
60
65
|
/**
|
|
61
66
|
* Represents keys to associate data in the storage.
|
|
62
67
|
*/
|
|
63
68
|
const storageKeys = {
|
|
64
|
-
|
|
69
|
+
perspectiveLayout: (perspectiveId) => `scion.workbench.perspectives.${perspectiveId}`,
|
|
65
70
|
activePerspectiveId: 'scion.workbench.perspective',
|
|
66
71
|
};
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3BlcnNwZWN0aXZlL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS1zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7OztBQU16Qzs7R0FFRztBQUVILE1BQU0sT0FBTyxrQ0FBa0M7SUFFN0MsWUFBb0IsUUFBMEIsRUFDMUIsK0JBQStELEVBQy9ELE9BQWU7UUFGZixhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQUMxQixvQ0FBK0IsR0FBL0IsK0JBQStCLENBQWdDO1FBQy9ELFlBQU8sR0FBUCxPQUFPLENBQVE7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLHFCQUFxQixDQUFDLGFBQXFCO1FBQ3RELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRSxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELElBQUk7WUFDRixPQUFPLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDckU7UUFDRCxPQUFPLEtBQUssRUFBRTtZQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHVEQUF1RCxhQUFhLGtFQUFrRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xLLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsYUFBcUIsRUFBRSxJQUF3QjtRQUNqRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsdUJBQXVCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLHdCQUF3QixDQUFDLGFBQXFCO1FBQ3pELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzdFLENBQUM7OEdBM0NVLGtDQUFrQztrSEFBbEMsa0NBQWtDLGNBRHRCLE1BQU07OzJGQUNsQixrQ0FBa0M7a0JBRDlDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOztBQStDaEM7O0dBRUc7QUFDSCxNQUFNLFdBQVcsR0FBRztJQUNsQixpQkFBaUIsRUFBRSxDQUFDLGFBQXFCLEVBQVUsRUFBRSxDQUFDLGdDQUFnQyxhQUFhLEVBQUU7SUFDckcsbUJBQW1CLEVBQUUsNkJBQTZCO0NBQ25ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dvcmtiZW5jaFN0b3JhZ2V9IGZyb20gJy4uL3N0b3JhZ2Uvd29ya2JlbmNoLXN0b3JhZ2UnO1xuaW1wb3J0IHtNUGVyc3BlY3RpdmVMYXlvdXR9IGZyb20gJy4vd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsJztcbmltcG9ydCB7V29ya2JlbmNoUGVyc3BlY3RpdmVTZXJpYWxpemVyfSBmcm9tICcuL3dvcmtlbmNoLXBlcnNwZWN0aXZlLXNlcmlhbGl6ZXIuc2VydmljZSc7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2luZyc7XG5cbi8qKlxuICogUHJvdmlkZXMgQVBJIHRvIHJlYWQvd3JpdGUgcGVyc3BlY3RpdmUgZGF0YSBmcm9tL3RvIHtAbGluayBXb3JrYmVuY2hTdG9yYWdlfS5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoUGVyc3BlY3RpdmVTdG9yYWdlU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc3RvcmFnZTogV29ya2JlbmNoU3RvcmFnZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfd29ya2JlbmNoUGVyc3BlY3RpdmVTZXJpYWxpemVyOiBXb3JrYmVuY2hQZXJzcGVjdGl2ZVNlcmlhbGl6ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2xvZ2dlcjogTG9nZ2VyKSB7XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgdGhlIGxheW91dCBvZiBnaXZlbiBwZXJzcGVjdGl2ZSBmcm9tIHN0b3JhZ2UsIGFwcGx5aW5nIG5lY2Vzc2FyeSBtaWdyYXRpb25zIGlmIHRoZSBzZXJpYWxpemVkIGxheW91dCBpcyBvdXRkYXRlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBsb2FkUGVyc3BlY3RpdmVMYXlvdXQocGVyc3BlY3RpdmVJZDogc3RyaW5nKTogUHJvbWlzZTxNUGVyc3BlY3RpdmVMYXlvdXQgfCBudWxsPiB7XG4gICAgY29uc3Qgc3RvcmFnZUtleSA9IHN0b3JhZ2VLZXlzLnBlcnNwZWN0aXZlTGF5b3V0KHBlcnNwZWN0aXZlSWQpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBhd2FpdCB0aGlzLl9zdG9yYWdlLmxvYWQoc3RvcmFnZUtleSk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLl93b3JrYmVuY2hQZXJzcGVjdGl2ZVNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoc2VyaWFsaXplZCk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBbU2VyaWFsaXplRXJyb3JdIEZhaWxlZCB0byBkZXNlcmlhbGl6ZSBwZXJzcGVjdGl2ZSAnJHtwZXJzcGVjdGl2ZUlkfScuIFBsZWFzZSBjbGVhciB5b3VyIGJyb3dzZXIgc3RvcmFnZSBhbmQgcmVsb2FkIHRoZSBhcHBsaWNhdGlvbi5gLCBlcnJvcik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIHRoZSBsYXlvdXQgb2YgYSBwZXJzcGVjdGl2ZSB0byBzdG9yYWdlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHN0b3JlUGVyc3BlY3RpdmVMYXlvdXQocGVyc3BlY3RpdmVJZDogc3RyaW5nLCBkYXRhOiBNUGVyc3BlY3RpdmVMYXlvdXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZXJpYWxpemVkID0gdGhpcy5fd29ya2JlbmNoUGVyc3BlY3RpdmVTZXJpYWxpemVyLnNlcmlhbGl6ZShkYXRhKTtcbiAgICBjb25zdCBzdG9yYWdlS2V5ID0gc3RvcmFnZUtleXMucGVyc3BlY3RpdmVMYXlvdXQocGVyc3BlY3RpdmVJZCk7XG4gICAgYXdhaXQgdGhpcy5fc3RvcmFnZS5zdG9yZShzdG9yYWdlS2V5LCBzZXJpYWxpemVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyB0aGUgaWQgb2YgdGhlIGFjdGl2ZSBwZXJzcGVjdGl2ZSBmcm9tIHN0b3JhZ2UuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbG9hZEFjdGl2ZVBlcnNwZWN0aXZlSWQoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2UubG9hZChzdG9yYWdlS2V5cy5hY3RpdmVQZXJzcGVjdGl2ZUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZXMgdGhlIGlkIG9mIHRoZSBhY3RpdmUgcGVyc3BlY3RpdmUgdG8gc3RvcmFnZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzdG9yZUFjdGl2ZVBlcnNwZWN0aXZlSWQocGVyc3BlY3RpdmVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2Uuc3RvcmUoc3RvcmFnZUtleXMuYWN0aXZlUGVyc3BlY3RpdmVJZCwgcGVyc3BlY3RpdmVJZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGtleXMgdG8gYXNzb2NpYXRlIGRhdGEgaW4gdGhlIHN0b3JhZ2UuXG4gKi9cbmNvbnN0IHN0b3JhZ2VLZXlzID0ge1xuICBwZXJzcGVjdGl2ZUxheW91dDogKHBlcnNwZWN0aXZlSWQ6IHN0cmluZyk6IHN0cmluZyA9PiBgc2Npb24ud29ya2JlbmNoLnBlcnNwZWN0aXZlcy4ke3BlcnNwZWN0aXZlSWR9YCxcbiAgYWN0aXZlUGVyc3BlY3RpdmVJZDogJ3NjaW9uLndvcmtiZW5jaC5wZXJzcGVjdGl2ZScsXG59O1xuIl19
|
|
@@ -8,58 +8,43 @@
|
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
*/
|
|
10
10
|
import { Injectable } from '@angular/core';
|
|
11
|
-
import { Arrays
|
|
12
|
-
import {
|
|
11
|
+
import { Arrays } from '@scion/toolkit/util';
|
|
12
|
+
import { WorkbenchLayouts } from '../layout/workbench-layouts.util';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "../layout/\u0275workbench-layout.factory";
|
|
15
14
|
/**
|
|
16
|
-
* Detects and resolves
|
|
15
|
+
* Detects and resolves conflicting view ids, that may occur when switching between perspectives.
|
|
17
16
|
*/
|
|
18
17
|
export class WorkbenchPerspectiveViewConflictResolver {
|
|
19
|
-
constructor(_workbenchLayoutFactory) {
|
|
20
|
-
this._workbenchLayoutFactory = _workbenchLayoutFactory;
|
|
21
|
-
}
|
|
22
18
|
/**
|
|
23
|
-
* Detects and resolves
|
|
24
|
-
*
|
|
25
|
-
* Conflict resolution for views defined by the perspective:
|
|
26
|
-
* - Assigns views a new identity if target of a primary route. The id of such views begin with the view prefix.
|
|
27
|
-
* - Removes views if target of a secondary route. The id of such views does not begin with the view prefix.
|
|
19
|
+
* Detects and resolves id clashes between views defined by the perspective and views contained in the main area,
|
|
20
|
+
* assigning views of the perspective a new identity.
|
|
28
21
|
*
|
|
29
|
-
* @param
|
|
30
|
-
* @param
|
|
31
|
-
* @return
|
|
22
|
+
* @param currentLayout - The current workbench layout.
|
|
23
|
+
* @param perspectiveLayout - The layout of the perspective to activate.
|
|
24
|
+
* @return layout of the perspective with conflicts resolved.
|
|
32
25
|
*/
|
|
33
|
-
resolve(
|
|
34
|
-
const
|
|
35
|
-
const
|
|
26
|
+
resolve(currentLayout, perspectiveLayout) {
|
|
27
|
+
const perspectiveViewIds = perspectiveLayout.views({ grid: 'workbench' }).map(view => view.id);
|
|
28
|
+
const mainAreaViewIds = currentLayout.views({ grid: 'mainArea' }).map(view => view.id);
|
|
29
|
+
// Test if there are conflicts.
|
|
30
|
+
const conflictingViewIds = Arrays.intersect(perspectiveViewIds, mainAreaViewIds);
|
|
36
31
|
if (!conflictingViewIds.length) {
|
|
37
|
-
return
|
|
32
|
+
return perspectiveLayout;
|
|
38
33
|
}
|
|
39
|
-
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return layout.renameView(conflictingViewId, newViewId, { grid: 'workbench' });
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
return layout.removeView(conflictingViewId, { grid: 'workbench' });
|
|
51
|
-
}
|
|
52
|
-
}, conflictingLayout);
|
|
53
|
-
return {
|
|
54
|
-
workbenchGrid: resolvedLayout.workbenchGrid,
|
|
55
|
-
viewOutlets: Dictionaries.coerce(viewOutlets),
|
|
56
|
-
};
|
|
34
|
+
// Rename conflicting views.
|
|
35
|
+
const usedViewIds = new Set(perspectiveViewIds.concat(mainAreaViewIds));
|
|
36
|
+
conflictingViewIds.forEach(conflictingViewId => {
|
|
37
|
+
const newViewId = WorkbenchLayouts.computeNextViewId(usedViewIds);
|
|
38
|
+
perspectiveLayout = perspectiveLayout.renameView(conflictingViewId, newViewId);
|
|
39
|
+
usedViewIds.add(newViewId);
|
|
40
|
+
});
|
|
41
|
+
return perspectiveLayout;
|
|
57
42
|
}
|
|
58
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
59
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.
|
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveViewConflictResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
44
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveViewConflictResolver, providedIn: 'root' }); }
|
|
60
45
|
}
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveViewConflictResolver, decorators: [{
|
|
62
47
|
type: Injectable,
|
|
63
48
|
args: [{ providedIn: 'root' }]
|
|
64
|
-
}]
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
}] });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLXZpZXctY29uZmxpY3QtcmVzb2x2ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3BlcnNwZWN0aXZlL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS12aWV3LWNvbmZsaWN0LXJlc29sdmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFDSCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUUzQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFHbEU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sd0NBQXdDO0lBRW5EOzs7Ozs7O09BT0c7SUFDSSxPQUFPLENBQUMsYUFBK0IsRUFBRSxpQkFBbUM7UUFDakYsTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0YsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVyRiwrQkFBK0I7UUFDL0IsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUU7WUFDOUIsT0FBTyxpQkFBaUIsQ0FBQztTQUMxQjtRQUVELDRCQUE0QjtRQUM1QixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBUyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUNoRixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUM3QyxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNsRSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDL0UsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQzs4R0E3QlUsd0NBQXdDO2tIQUF4Qyx3Q0FBd0MsY0FENUIsTUFBTTs7MkZBQ2xCLHdDQUF3QztrQkFEcEQsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBcnJheXN9IGZyb20gJ0BzY2lvbi90b29sa2l0L3V0aWwnO1xuaW1wb3J0IHtWaWV3SWR9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRzfSBmcm9tICcuLi9sYXlvdXQvd29ya2JlbmNoLWxheW91dHMudXRpbCc7XG5pbXBvcnQge8m1V29ya2JlbmNoTGF5b3V0fSBmcm9tICcuLi9sYXlvdXQvybV3b3JrYmVuY2gtbGF5b3V0JztcblxuLyoqXG4gKiBEZXRlY3RzIGFuZCByZXNvbHZlcyBjb25mbGljdGluZyB2aWV3IGlkcywgdGhhdCBtYXkgb2NjdXIgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBwZXJzcGVjdGl2ZXMuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaFBlcnNwZWN0aXZlVmlld0NvbmZsaWN0UmVzb2x2ZXIge1xuXG4gIC8qKlxuICAgKiBEZXRlY3RzIGFuZCByZXNvbHZlcyBpZCBjbGFzaGVzIGJldHdlZW4gdmlld3MgZGVmaW5lZCBieSB0aGUgcGVyc3BlY3RpdmUgYW5kIHZpZXdzIGNvbnRhaW5lZCBpbiB0aGUgbWFpbiBhcmVhLFxuICAgKiBhc3NpZ25pbmcgdmlld3Mgb2YgdGhlIHBlcnNwZWN0aXZlIGEgbmV3IGlkZW50aXR5LlxuICAgKlxuICAgKiBAcGFyYW0gY3VycmVudExheW91dCAtIFRoZSBjdXJyZW50IHdvcmtiZW5jaCBsYXlvdXQuXG4gICAqIEBwYXJhbSBwZXJzcGVjdGl2ZUxheW91dCAtIFRoZSBsYXlvdXQgb2YgdGhlIHBlcnNwZWN0aXZlIHRvIGFjdGl2YXRlLlxuICAgKiBAcmV0dXJuIGxheW91dCBvZiB0aGUgcGVyc3BlY3RpdmUgd2l0aCBjb25mbGljdHMgcmVzb2x2ZWQuXG4gICAqL1xuICBwdWJsaWMgcmVzb2x2ZShjdXJyZW50TGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCwgcGVyc3BlY3RpdmVMYXlvdXQ6IMm1V29ya2JlbmNoTGF5b3V0KTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIGNvbnN0IHBlcnNwZWN0aXZlVmlld0lkcyA9IHBlcnNwZWN0aXZlTGF5b3V0LnZpZXdzKHtncmlkOiAnd29ya2JlbmNoJ30pLm1hcCh2aWV3ID0+IHZpZXcuaWQpO1xuICAgIGNvbnN0IG1haW5BcmVhVmlld0lkcyA9IGN1cnJlbnRMYXlvdXQudmlld3Moe2dyaWQ6ICdtYWluQXJlYSd9KS5tYXAodmlldyA9PiB2aWV3LmlkKTtcblxuICAgIC8vIFRlc3QgaWYgdGhlcmUgYXJlIGNvbmZsaWN0cy5cbiAgICBjb25zdCBjb25mbGljdGluZ1ZpZXdJZHMgPSBBcnJheXMuaW50ZXJzZWN0KHBlcnNwZWN0aXZlVmlld0lkcywgbWFpbkFyZWFWaWV3SWRzKTtcbiAgICBpZiAoIWNvbmZsaWN0aW5nVmlld0lkcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBwZXJzcGVjdGl2ZUxheW91dDtcbiAgICB9XG5cbiAgICAvLyBSZW5hbWUgY29uZmxpY3Rpbmcgdmlld3MuXG4gICAgY29uc3QgdXNlZFZpZXdJZHMgPSBuZXcgU2V0PFZpZXdJZD4ocGVyc3BlY3RpdmVWaWV3SWRzLmNvbmNhdChtYWluQXJlYVZpZXdJZHMpKTtcbiAgICBjb25mbGljdGluZ1ZpZXdJZHMuZm9yRWFjaChjb25mbGljdGluZ1ZpZXdJZCA9PiB7XG4gICAgICBjb25zdCBuZXdWaWV3SWQgPSBXb3JrYmVuY2hMYXlvdXRzLmNvbXB1dGVOZXh0Vmlld0lkKHVzZWRWaWV3SWRzKTtcbiAgICAgIHBlcnNwZWN0aXZlTGF5b3V0ID0gcGVyc3BlY3RpdmVMYXlvdXQucmVuYW1lVmlldyhjb25mbGljdGluZ1ZpZXdJZCwgbmV3Vmlld0lkKTtcbiAgICAgIHVzZWRWaWV3SWRzLmFkZChuZXdWaWV3SWQpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBlcnNwZWN0aXZlTGF5b3V0O1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGVyc3BlY3RpdmUvd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXR9IGZyb20gJy4uL2xheW91dC93b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0RmFjdG9yeX0gZnJvbSAnLi4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQuZmFjdG9yeSc7XG5cbi8qKlxuICogQSBwZXJzcGVjdGl2ZSBpcyBhIG5hbWVkIHdvcmtiZW5jaCBsYXlvdXQuXG4gKlxuICogTXVsdGlwbGUgcGVyc3BlY3RpdmVzIGFyZSBzdXBwb3J0ZWQuIFBlcnNwZWN0aXZlcyBjYW4gYmUgc3dpdGNoZWQuIE9ubHkgb25lIHBlcnNwZWN0aXZlIGlzIGFjdGl2ZSBhdCBhIHRpbWUuXG4gKiBQZXJzcGVjdGl2ZXMgc2hhcmUgdGhlIHNhbWUgbWFpbiBhcmVhLCBpZiBhbnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmUge1xuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhpcyBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBcmJpdHJhcnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGE6IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBwZXJzcGVjdGl2ZSBpcyBhY3RpdmUuXG4gICAqIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBwZXJzcGVjdGl2ZSBhY3RpdmUgYXQgYSB0aW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aXZlOiBib29sZWFuO1xuICAvKipcbiAgICogVXBvbiBzdWJzY3JpcHRpb24sIGVtaXRzIHRoZSBjdXJyZW50IGFjdGl2ZSBzdGF0ZSBvZiB0aGlzIHBlcnNwZWN0aXZlLCBhbmQgdGhlblxuICAgKiBlbWl0cyBjb250aW51b3VzbHkgd2hlbiBpdHMgYWN0aXZlIHN0YXRlIGNoYW5nZXMuIFRoZSBPYnNlcnZhYmxlIG5ldmVyIGNvbXBsZXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGl2ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHBlcnNwZWN0aXZlIGlzIHRyYW5zaWVudCwgd2l0aCBpdHMgbGF5b3V0IG9ubHkgbWVtb2l6ZWQsIG5vdCBwZXJzaXN0ZWQuXG4gICAqL1xuICByZWFkb25seSB0cmFuc2llbnQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogRGVmaW5lcyBwZXJzcGVjdGl2ZXMgdG8gcmVnaXN0ZXIgaW4gdGhlIHdvcmtiZW5jaC5cbiAqXG4gKiBBIHBlcnNwZWN0aXZlIGlzIGFuIGFycmFuZ2VtZW50IG9mIHZpZXdzIGFyb3VuZCB0aGUgbWFpbiBhcmVhLiBNdWx0aXBsZSBwZXJzcGVjdGl2ZXMgYXJlIHN1cHBvcnRlZC5cbiAqIERpZmZlcmVudCBwZXJzcGVjdGl2ZXMgcHJvdmlkZSBhIGRpZmZlcmVudCBwZXJzcGVjdGl2ZSBvbiB0aGUgYXBwbGljYXRpb24gd2hpbGUgc2hhcmluZyB0aGUgbWFpbiBhcmVhLlxuICogT25seSBvbmUgcGVyc3BlY3RpdmUgY2FuIGJlIGFjdGl2ZSBhdCBhIHRpbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmVzIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBwZXJzcGVjdGl2ZXMgdG8gcmVnaXN0ZXIgaW4gdGhlIHdvcmtiZW5jaC5cbiAgICovXG4gIHBlcnNwZWN0aXZlczogV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uW107XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHBlcnNwZWN0aXZlIGZvciB0aGUgaW5pdGlhbCB3b3JrYmVuY2ggbGF5b3V0LlxuICAgKlxuICAgKiBDYW4gYmUgZWl0aGVyIHRoZSBpZGVudGl0eSBvZiBhIHBlcnNwZWN0aXZlIG9yIGEgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgcGVyc3BlY3RpdmUuXG4gICAqL1xuICBpbml0aWFsUGVyc3BlY3RpdmU/OiBzdHJpbmcgfCBXb3JrYmVuY2hQZXJzcGVjdGl2ZVNlbGVjdGlvbkZuO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIHBlcnNwZWN0aXZlIHRvIHJlZ2lzdGVyIGluIHRoZSB3b3JrYmVuY2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdW5pcXVlIGlkZW50aXR5IG9mIHRoZSBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBjcmVhdGUgdGhlIGluaXRpYWwgbGF5b3V0IGZvciB0aGUgcGVyc3BlY3RpdmUuIFRoZSBmdW5jdGlvbiBjYW4gY2FsbCBgaW5qZWN0YCB0byBnZXQgYW55IHJlcXVpcmVkIGRlcGVuZGVuY2llcy5cbiAgICovXG4gIGxheW91dDogV29ya2JlbmNoTGF5b3V0Rm47XG4gIC8qKlxuICAgKiBBc3NvY2lhdGVzIGFyYml0cmFyeSBkYXRhIHdpdGggdGhlIHBlcnNwZWN0aXZlLCBlLmcuLCBhIGxhYmVsLCBpY29uIG9yIHRvb2x0aXAuXG4gICAqL1xuICBkYXRhPzoge1trZXk6IHN0cmluZ106IGFueX07XG4gIC8qKlxuICAgKiBEZWNpZGVzIGlmIHRoZSBwZXJzcGVjdGl2ZSBjYW4gYmUgYWN0aXZhdGVkLiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICBjYW5BY3RpdmF0ZT86ICgpID0+IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuO1xuICAvKipcbiAgICogRGVmaW5lcyB0aGUgcGVyc3BlY3RpdmUgYXMgdHJhbnNpZW50LCB3aXRoIGl0cyBsYXlvdXQgb25seSBtZW1vaXplZCwgbm90IHBlcnNpc3RlZC5cbiAgICovXG4gIHRyYW5zaWVudD86IHRydWU7XG59XG5cbi8qKlxuICogU2lnbmF0dXJlIG9mIGEgZnVuY3Rpb24gdG8gcHJvdmlkZSBhIHdvcmtiZW5jaCBsYXlvdXQuXG4gKlxuICogVGhlIGZ1bmN0aW9uIGlzIHBhc3NlZCBhIGZhY3RvcnkgdG8gY3JlYXRlIHRoZSBsYXlvdXQuIFRoZSBsYXlvdXQgaGFzIG1ldGhvZHMgdG8gbW9kaWZ5IGl0LlxuICogRWFjaCBtb2RpZmljYXRpb24gY3JlYXRlcyBhIG5ldyBsYXlvdXQgaW5zdGFuY2UgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZnVydGhlciBtb2RpZmljYXRpb25zLlxuICpcbiAqIFRoZSBsYXlvdXQgaXMgYW4gaW1tdXRhYmxlIG9iamVjdCwgaS5lLiwgbW9kaWZpY2F0aW9ucyBoYXZlIG5vIHNpZGUgZWZmZWN0cy5cbiAqXG4gKiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gKlxuICogYGBgdHNcbiAqIGZ1bmN0aW9uIGRlZmluZUxheW91dChmYWN0b3J5OiBXb3JrYmVuY2hMYXlvdXRGYWN0b3J5KTogV29ya2JlbmNoTGF5b3V0IHtcbiAqICAgcmV0dXJuIGZhY3RvcnkuYWRkUGFydChNQUlOX0FSRUEpXG4gKiAgICAgICAgICAgICAgICAgLmFkZFBhcnQoJ3RvcExlZnQnLCB7YWxpZ246ICdsZWZ0JywgcmF0aW86IC4yNX0pXG4gKiAgICAgICAgICAgICAgICAgLmFkZFBhcnQoJ2JvdHRvbUxlZnQnLCB7cmVsYXRpdmVUbzogJ3RvcExlZnQnLCBhbGlnbjogJ2JvdHRvbScsIHJhdGlvOiAuNX0pXG4gKiAgICAgICAgICAgICAgICAgLmFkZFBhcnQoJ2JvdHRvbScsIHthbGlnbjogJ2JvdHRvbScsIHJhdGlvOiAuM30pXG4gKiAgICAgICAgICAgICAgICAgLmFkZFZpZXcoJ25hdmlnYXRvcicsIHtwYXJ0SWQ6ICd0b3BMZWZ0JywgYWN0aXZhdGVWaWV3OiB0cnVlfSlcbiAqICAgICAgICAgICAgICAgICAuYWRkVmlldygnZXhwbG9yZXInLCB7cGFydElkOiAndG9wTGVmdCd9KVxuICogICAgICAgICAgICAgICAgIC5hZGRWaWV3KCdyZXBvc2l0b3JpZXMnLCB7cGFydElkOiAnYm90dG9tTGVmdCcsIGFjdGl2YXRlVmlldzogdHJ1ZX0pXG4gKiAgICAgICAgICAgICAgICAgLmFkZFZpZXcoJ2NvbnNvbGUnLCB7cGFydElkOiAnYm90dG9tJywgYWN0aXZhdGVWaWV3OiB0cnVlfSlcbiAqICAgICAgICAgICAgICAgICAuYWRkVmlldygncHJvYmxlbXMnLCB7cGFydElkOiAnYm90dG9tJ30pXG4gKiAgICAgICAgICAgICAgICAgLmFkZFZpZXcoJ3NlYXJjaCcsIHtwYXJ0SWQ6ICdib3R0b20nfSk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgV29ya2JlbmNoTGF5b3V0Rm4gPSAoZmFjdG9yeTogV29ya2JlbmNoTGF5b3V0RmFjdG9yeSkgPT4gUHJvbWlzZTxXb3JrYmVuY2hMYXlvdXQ+IHwgV29ya2JlbmNoTGF5b3V0O1xuXG4vKipcbiAqIFNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHByb3ZpZGVkIGluIHtAbGluayBXb3JrYmVuY2hQZXJzcGVjdGl2ZXMjaW5pdGlhbFBlcnNwZWN0aXZlfSB0byBzZWxlY3QgdGhlIHBlcnNwZWN0aXZlIGZvciB0aGUgaW5pdGlhbCB3b3JrYmVuY2ggbGF5b3V0LlxuICpcbiAqIFRoZSBmdW5jdGlvbiBpcyBwYXNzZWQgYSBsaXN0IG9mIHJlZ2lzdGVyZWQgcGVyc3BlY3RpdmVzLiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFdvcmtiZW5jaFBlcnNwZWN0aXZlU2VsZWN0aW9uRm4gPSAocGVyc3BlY3RpdmVzOiBXb3JrYmVuY2hQZXJzcGVjdGl2ZVtdKSA9PiBQcm9taXNlPFdvcmtiZW5jaFBlcnNwZWN0aXZlIHwgbnVsbD4gfCBXb3JrYmVuY2hQZXJzcGVjdGl2ZSB8IG51bGw7XG4iXX0=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGVyc3BlY3RpdmUvd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXR9IGZyb20gJy4uL2xheW91dC93b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0RmFjdG9yeX0gZnJvbSAnLi4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQuZmFjdG9yeSc7XG5cbi8qKlxuICogQSBwZXJzcGVjdGl2ZSBpcyBhIG5hbWVkIHdvcmtiZW5jaCBsYXlvdXQuXG4gKlxuICogTXVsdGlwbGUgcGVyc3BlY3RpdmVzIGFyZSBzdXBwb3J0ZWQuIFBlcnNwZWN0aXZlcyBjYW4gYmUgc3dpdGNoZWQuIE9ubHkgb25lIHBlcnNwZWN0aXZlIGlzIGFjdGl2ZSBhdCBhIHRpbWUuXG4gKiBQZXJzcGVjdGl2ZXMgc2hhcmUgdGhlIHNhbWUgbWFpbiBhcmVhLCBpZiBhbnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmUge1xuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhpcyBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBcmJpdHJhcnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGE6IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBwZXJzcGVjdGl2ZSBpcyBhY3RpdmUuXG4gICAqIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBwZXJzcGVjdGl2ZSBhY3RpdmUgYXQgYSB0aW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aXZlOiBib29sZWFuO1xuICAvKipcbiAgICogVXBvbiBzdWJzY3JpcHRpb24sIGVtaXRzIHRoZSBjdXJyZW50IGFjdGl2ZSBzdGF0ZSBvZiB0aGlzIHBlcnNwZWN0aXZlLCBhbmQgdGhlblxuICAgKiBlbWl0cyBjb250aW51b3VzbHkgd2hlbiBpdHMgYWN0aXZlIHN0YXRlIGNoYW5nZXMuIFRoZSBPYnNlcnZhYmxlIG5ldmVyIGNvbXBsZXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGl2ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHBlcnNwZWN0aXZlIGlzIHRyYW5zaWVudCwgd2l0aCBpdHMgbGF5b3V0IG9ubHkgbWVtb2l6ZWQsIG5vdCBwZXJzaXN0ZWQuXG4gICAqL1xuICByZWFkb25seSB0cmFuc2llbnQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogRGVmaW5lcyBwZXJzcGVjdGl2ZXMgdG8gcmVnaXN0ZXIgaW4gdGhlIHdvcmtiZW5jaC5cbiAqXG4gKiBBIHBlcnNwZWN0aXZlIGlzIGFuIGFycmFuZ2VtZW50IG9mIHZpZXdzIGFyb3VuZCB0aGUgbWFpbiBhcmVhLiBNdWx0aXBsZSBwZXJzcGVjdGl2ZXMgYXJlIHN1cHBvcnRlZC5cbiAqIERpZmZlcmVudCBwZXJzcGVjdGl2ZXMgcHJvdmlkZSBhIGRpZmZlcmVudCBwZXJzcGVjdGl2ZSBvbiB0aGUgYXBwbGljYXRpb24gd2hpbGUgc2hhcmluZyB0aGUgbWFpbiBhcmVhLlxuICogT25seSBvbmUgcGVyc3BlY3RpdmUgY2FuIGJlIGFjdGl2ZSBhdCBhIHRpbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmVzIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBwZXJzcGVjdGl2ZXMgdG8gcmVnaXN0ZXIgaW4gdGhlIHdvcmtiZW5jaC5cbiAgICovXG4gIHBlcnNwZWN0aXZlczogV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uW107XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHBlcnNwZWN0aXZlIGZvciB0aGUgaW5pdGlhbCB3b3JrYmVuY2ggbGF5b3V0LlxuICAgKlxuICAgKiBDYW4gYmUgZWl0aGVyIHRoZSBpZGVudGl0eSBvZiBhIHBlcnNwZWN0aXZlIG9yIGEgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgcGVyc3BlY3RpdmUuXG4gICAqL1xuICBpbml0aWFsUGVyc3BlY3RpdmU/OiBzdHJpbmcgfCBXb3JrYmVuY2hQZXJzcGVjdGl2ZVNlbGVjdGlvbkZuO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIHBlcnNwZWN0aXZlIHRvIHJlZ2lzdGVyIGluIHRoZSB3b3JrYmVuY2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdW5pcXVlIGlkZW50aXR5IG9mIHRoZSBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBjcmVhdGUgdGhlIGluaXRpYWwgbGF5b3V0IGZvciB0aGUgcGVyc3BlY3RpdmUuIFRoZSBmdW5jdGlvbiBjYW4gY2FsbCBgaW5qZWN0YCB0byBnZXQgYW55IHJlcXVpcmVkIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogU2VlIHtAbGluayBXb3JrYmVuY2hMYXlvdXRGbn0gZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGFuIGV4YW1wbGUuXG4gICAqL1xuICBsYXlvdXQ6IFdvcmtiZW5jaExheW91dEZuO1xuICAvKipcbiAgICogQXNzb2NpYXRlcyBhcmJpdHJhcnkgZGF0YSB3aXRoIHRoZSBwZXJzcGVjdGl2ZSwgZS5nLiwgYSBsYWJlbCwgaWNvbiBvciB0b29sdGlwLlxuICAgKi9cbiAgZGF0YT86IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICAvKipcbiAgICogRGVjaWRlcyBpZiB0aGUgcGVyc3BlY3RpdmUgY2FuIGJlIGFjdGl2YXRlZC4gVGhlIGZ1bmN0aW9uIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgY2FuQWN0aXZhdGU/OiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIHBlcnNwZWN0aXZlIGFzIHRyYW5zaWVudCwgd2l0aCBpdHMgbGF5b3V0IG9ubHkgbWVtb2l6ZWQsIG5vdCBwZXJzaXN0ZWQuXG4gICAqL1xuICB0cmFuc2llbnQ/OiB0cnVlO1xufVxuXG4vKipcbiAqIFNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uIHRvIHByb3ZpZGUgYSB3b3JrYmVuY2ggbGF5b3V0LlxuICpcbiAqIFRoZSB3b3JrYmVuY2ggd2lsbCBpbnZva2UgdGhpcyBmdW5jdGlvbiB3aXRoIGEgZmFjdG9yeSB0byBjcmVhdGUgdGhlIGxheW91dC4gVGhlIGxheW91dCBpcyBpbW11dGFibGUsIHNvIGVhY2ggbW9kaWZpY2F0aW9uIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UuXG4gKiBVc2UgdGhlIGluc3RhbmNlIGZvciBmdXJ0aGVyIG1vZGlmaWNhdGlvbnMgYW5kIGZpbmFsbHkgcmV0dXJuIGl0LlxuICpcbiAqIFRoZSBmdW5jdGlvbiBjYW4gY2FsbCBgaW5qZWN0YCB0byBnZXQgYW55IHJlcXVpcmVkIGRlcGVuZGVuY2llcy5cbiAqXG4gKiAjIyBXb3JrYmVuY2ggTGF5b3V0XG4gKiBUaGUgd29ya2JlbmNoIGxheW91dCBpcyBhIGdyaWQgb2YgcGFydHMuIFBhcnRzIGFyZSBhbGlnbmVkIHJlbGF0aXZlIHRvIGVhY2ggb3RoZXIuIEEgcGFydCBpcyBhIHN0YWNrIG9mIHZpZXdzLiBDb250ZW50IGlzIGRpc3BsYXllZCBpbiB2aWV3cy5cbiAqXG4gKiBUaGUgbGF5b3V0IGNhbiBiZSBkaXZpZGVkIGludG8gYSBtYWluIGFuZCBhIHBlcmlwaGVyYWwgYXJlYSwgd2l0aCB0aGUgbWFpbiBhcmVhIGFzIHRoZSBwcmltYXJ5IHBsYWNlIGZvciBvcGVuaW5nIHZpZXdzLlxuICogVGhlIHBlcmlwaGVyYWwgYXJlYSBhcnJhbmdlcyBwYXJ0cyBhcm91bmQgdGhlIG1haW4gYXJlYSB0byBwcm92aWRlIG5hdmlnYXRpb24gb3IgY29udGV4dC1zZW5zaXRpdmUgYXNzaXN0YW5jZSB0byBzdXBwb3J0XG4gKiB0aGUgdXNlcidzIHdvcmtmbG93LiBEZWZpbmluZyBhIG1haW4gYXJlYSBpcyBvcHRpb25hbCBhbmQgcmVjb21tZW5kZWQgZm9yIGFwcGxpY2F0aW9ucyByZXF1aXJpbmcgYSBkZWRpY2F0ZWQgYW5kIG1heGltaXphYmxlXG4gKiBhcmVhIGZvciB1c2VyIGludGVyYWN0aW9uLlxuICpcbiAqICMjIFN0ZXBzIHRvIGNyZWF0ZSB0aGUgbGF5b3V0XG4gKiBTdGFydCBieSBhZGRpbmcgdGhlIGZpcnN0IHBhcnQuIEZyb20gdGhlcmUsIHlvdSBjYW4gZ3JhZHVhbGx5IGFkZCBtb3JlIHBhcnRzIGFuZCBhbGlnbiB0aGVtIHJlbGF0aXZlIHRvIGVhY2ggb3RoZXIuXG4gKiBOZXh0LCBhZGQgdmlld3MgdG8gdGhlIGxheW91dCwgc3BlY2lmeWluZyB0byB3aGljaCBwYXJ0IHRvIGFkZCB0aGUgdmlld3MuXG4gKiBUaGUgZmluYWwgc3RlcCBpcyB0byBuYXZpZ2F0ZSB0aGUgdmlld3MuIEEgdmlldyBjYW4gYmUgbmF2aWdhdGVkIHRvIGFueSByb3V0ZS5cbiAqXG4gKiBUbyBhdm9pZCBjbHV0dGVyaW5nIHRoZSBpbml0aWFsIFVSTCwgd2UgcmVjb21tZW5kIG5hdmlnYXRpbmcgdGhlIHZpZXdzIG9mIHRoZSBpbml0aWFsIGxheW91dCB0byBlbXB0eSBwYXRoIHJvdXRlcyBhbmQgdXNpbmcgYSBuYXZpZ2F0aW9uIGhpbnQgdG8gZGlmZmVyZW50aWF0ZS5cbiAqXG4gKiAjIyBFeGFtcGxlXG4gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVmaW5lcyBhIGxheW91dCB3aXRoIGEgbWFpbiBhcmVhIGFuZCB0aHJlZSBwYXJ0cyBpbiB0aGUgcGVyaXBoZXJhbCBhcmVhOlxuICpcbiAqIGBgYHBsYWluXG4gKiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLStcbiAqIHwgIHRvcCAgIHwgICBtYWluIGFyZWEgICAgfFxuICogfCAgbGVmdCAgfCAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0rICAgICAgICAgICAgICAgIHxcbiAqIHwgYm90dG9tIHwgICAgICAgICAgICAgICAgfFxuICogfCAgbGVmdCAgfCAgICAgICAgICAgICAgICB8XG4gKiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLStcbiAqIHwgICAgICAgICAgYm90dG9tICAgICAgICAgfFxuICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gKiBgYGBcbiAqXG4gKiBgYGB0c1xuICogZnVuY3Rpb24gZGVmaW5lTGF5b3V0KGZhY3Rvcnk6IFdvcmtiZW5jaExheW91dEZhY3RvcnkpOiBXb3JrYmVuY2hMYXlvdXQge1xuICogICByZXR1cm4gZmFjdG9yeVxuICogICAgIC8vIEFkZCBwYXJ0cyB0byB0aGUgbGF5b3V0LlxuICogICAgIC5hZGRQYXJ0KE1BSU5fQVJFQSlcbiAqICAgICAuYWRkUGFydCgndG9wTGVmdCcsIHtyZWxhdGl2ZVRvOiBNQUlOX0FSRUEsIGFsaWduOiAnbGVmdCcsIHJhdGlvOiAuMjV9KVxuICogICAgIC5hZGRQYXJ0KCdib3R0b21MZWZ0Jywge3JlbGF0aXZlVG86ICd0b3BMZWZ0JywgYWxpZ246ICdib3R0b20nLCByYXRpbzogLjV9KVxuICogICAgIC5hZGRQYXJ0KCdib3R0b20nLCB7YWxpZ246ICdib3R0b20nLCByYXRpbzogLjN9KVxuICpcbiAqICAgICAvLyBBZGQgdmlld3MgdG8gdGhlIGxheW91dC5cbiAqICAgICAuYWRkVmlldygnbmF2aWdhdG9yJywge3BhcnRJZDogJ3RvcExlZnQnfSlcbiAqICAgICAuYWRkVmlldygnZXhwbG9yZXInLCB7cGFydElkOiAnYm90dG9tTGVmdCd9KVxuICogICAgIC5hZGRWaWV3KCdjb25zb2xlJywge3BhcnRJZDogJ2JvdHRvbSd9KVxuICogICAgIC5hZGRWaWV3KCdwcm9ibGVtcycsIHtwYXJ0SWQ6ICdib3R0b20nfSlcbiAqICAgICAuYWRkVmlldygnc2VhcmNoJywge3BhcnRJZDogJ2JvdHRvbSd9KVxuICpcbiAqICAgICAvLyBOYXZpZ2F0ZSB2aWV3cy5cbiAqICAgICAubmF2aWdhdGVWaWV3KCduYXZpZ2F0b3InLCBbJ3BhdGgvdG8vbmF2aWdhdG9yJ10pXG4gKiAgICAgLm5hdmlnYXRlVmlldygnZXhwbG9yZXInLCBbJ3BhdGgvdG8vZXhwbG9yZXInXSlcbiAqICAgICAubmF2aWdhdGVWaWV3KCdjb25zb2xlJywgW10sIHtoaW50OiAnY29uc29sZSd9KSAvLyBTZXQgaGludCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gcm91dGVzIHdpdGggYW4gZW1wdHkgcGF0aC5cbiAqICAgICAubmF2aWdhdGVWaWV3KCdwcm9ibGVtcycsIFtdLCB7aGludDogJ3Byb2JsZW1zJ30pIC8vIFNldCBoaW50IHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiByb3V0ZXMgd2l0aCBhbiBlbXB0eSBwYXRoLlxuICogICAgIC5uYXZpZ2F0ZVZpZXcoJ3NlYXJjaCcsIFsncGF0aC90by9zZWFyY2gnXSlcbiAqXG4gKiAgICAgLy8gRGVjaWRlIHdoaWNoIHZpZXdzIHRvIGFjdGl2YXRlLlxuICogICAgIC5hY3RpdmF0ZVZpZXcoJ25hdmlnYXRvcicpXG4gKiAgICAgLmFjdGl2YXRlVmlldygnZXhwbG9yZXInKVxuICogICAgIC5hY3RpdmF0ZVZpZXcoJ2NvbnNvbGUnKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoZSBsYXlvdXQgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyByb3V0ZXMuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7Ym9vdHN0cmFwQXBwbGljYXRpb259IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuICogaW1wb3J0IHtwcm92aWRlUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuICogaW1wb3J0IHtjYW5NYXRjaFdvcmtiZW5jaFZpZXd9IGZyb20gJ0BzY2lvbi93b3JrYmVuY2gnO1xuICpcbiAqIGJvb3RzdHJhcEFwcGxpY2F0aW9uKEFwcENvbXBvbmVudCwge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlUm91dGVyKFtcbiAqICAgICAgIC8vIE5hdmlnYXRvciBWaWV3XG4gKiAgICAgICB7cGF0aDogJ3BhdGgvdG8vbmF2aWdhdG9yJywgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL25hdmlnYXRvci9uYXZpZ2F0b3IuY29tcG9uZW50Jyl9LFxuICogICAgICAgLy8gRXhwbG9yZXIgVmlld1xuICogICAgICAge3BhdGg6ICdwYXRoL3RvL2V4cGxvcmVyJywgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2V4cGxvcmVyL2V4cGxvcmVyLmNvbXBvbmVudCcpfSxcbiAqICAgICAgIC8vIFNlYXJjaCB2aWV3XG4gKiAgICAgICB7cGF0aDogJ3BhdGgvdG8vc2VhcmNoJywgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL3NlYXJjaC9zZWFyY2guY29tcG9uZW50Jyl9LFxuICogICAgICAgLy8gQ29uc29sZSB2aWV3XG4gKiAgICAgICB7cGF0aDogJycsIGNhbk1hdGNoOiBbY2FuTWF0Y2hXb3JrYmVuY2hWaWV3KCdjb25zb2xlJyldLCBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vY29uc29sZS9jb25zb2xlLmNvbXBvbmVudCcpfSxcbiAqICAgICAgIC8vIFByb2JsZW1zIHZpZXdcbiAqICAgICAgIHtwYXRoOiAnJywgY2FuTWF0Y2g6IFtjYW5NYXRjaFdvcmtiZW5jaFZpZXcoJ3Byb2JsZW1zJyldLCBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vcHJvYmxlbXMvcHJvYmxlbXMuY29tcG9uZW50Jyl9LFxuICogICAgIF0pLFxuICogICBdLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgV29ya2JlbmNoTGF5b3V0Rm4gPSAoZmFjdG9yeTogV29ya2JlbmNoTGF5b3V0RmFjdG9yeSkgPT4gUHJvbWlzZTxXb3JrYmVuY2hMYXlvdXQ+IHwgV29ya2JlbmNoTGF5b3V0O1xuXG4vKipcbiAqIFNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHByb3ZpZGVkIGluIHtAbGluayBXb3JrYmVuY2hQZXJzcGVjdGl2ZXMjaW5pdGlhbFBlcnNwZWN0aXZlfSB0byBzZWxlY3QgdGhlIHBlcnNwZWN0aXZlIGZvciB0aGUgaW5pdGlhbCB3b3JrYmVuY2ggbGF5b3V0LlxuICpcbiAqIFRoZSBmdW5jdGlvbiBpcyBwYXNzZWQgYSBsaXN0IG9mIHJlZ2lzdGVyZWQgcGVyc3BlY3RpdmVzLiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFdvcmtiZW5jaFBlcnNwZWN0aXZlU2VsZWN0aW9uRm4gPSAocGVyc3BlY3RpdmVzOiBXb3JrYmVuY2hQZXJzcGVjdGl2ZVtdKSA9PiBQcm9taXNlPFdvcmtiZW5jaFBlcnNwZWN0aXZlIHwgbnVsbD4gfCBXb3JrYmVuY2hQZXJzcGVjdGl2ZSB8IG51bGw7XG5cbi8qKlxuICogQ29udGFpbnMgZGlmZmVyZW50IHZlcnNpb25zIG9mIGEgcGVyc3BlY3RpdmUgbGF5b3V0LlxuICpcbiAqIFRoZSBNLXByZWZpeCBpbmRpY2F0ZXMgdGhpcyBvYmplY3QgaXMgYSBtb2RlbCBvYmplY3QgdGhhdCBpcyBzZXJpYWxpemVkIGFuZCBzdG9yZWQsIHJlcXVpcmluZyBtaWdyYXRpb24gb24gYnJlYWtpbmcgY2hhbmdlLlxuICpcbiAqIEBzZWUgV09SS0JFTkNIX1BFUlNQRUNUSVZFX01PREVMX1ZFUlNJT05cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNUGVyc3BlY3RpdmVMYXlvdXQge1xuICAvKipcbiAgICogTGF5b3V0IGJlZm9yZSBhbnkgdXNlciBwZXJzb25hbGl6YXRpb24gKGluaXRpYWwgbGF5b3V0KS5cbiAgICovXG4gIHJlZmVyZW5jZUxheW91dDoge1xuICAgIC8qKlxuICAgICAqIEBzZWUgV29ya2JlbmNoTGF5b3V0U2VyaWFsaXplci5zZXJpYWxpemVHcmlkXG4gICAgICogQHNlZSBXb3JrYmVuY2hMYXlvdXRTZXJpYWxpemVyLmRlc2VyaWFsaXplR3JpZFxuICAgICAqL1xuICAgIHdvcmtiZW5jaEdyaWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuc2VyaWFsaXplVmlld091dGxldHNcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuZGVzZXJpYWxpemVWaWV3T3V0bGV0c1xuICAgICAqL1xuICAgIHZpZXdPdXRsZXRzOiBzdHJpbmc7XG4gIH07XG4gIC8qKlxuICAgKiBMYXlvdXQgcGVyc29uYWxpemVkIGJ5IHRoZSB1c2VyLlxuICAgKi9cbiAgdXNlckxheW91dDoge1xuICAgIC8qKlxuICAgICAqIEBzZWUgV29ya2JlbmNoTGF5b3V0U2VyaWFsaXplci5zZXJpYWxpemVHcmlkXG4gICAgICogQHNlZSBXb3JrYmVuY2hMYXlvdXRTZXJpYWxpemVyLmRlc2VyaWFsaXplR3JpZFxuICAgICAqL1xuICAgIHdvcmtiZW5jaEdyaWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuc2VyaWFsaXplVmlld091dGxldHNcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuZGVzZXJpYWxpemVWaWV3T3V0bGV0c1xuICAgICAqL1xuICAgIHZpZXdPdXRsZXRzOiBzdHJpbmc7XG4gIH07XG59XG4iXX0=
|
|
@@ -45,10 +45,10 @@ export class WorkbenchPerspectiveRegistry {
|
|
|
45
45
|
this._registry.objects.forEach(perspective => perspective.destroy());
|
|
46
46
|
this._registry.clear();
|
|
47
47
|
}
|
|
48
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
49
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.
|
|
48
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
49
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveRegistry, providedIn: 'root' }); }
|
|
50
50
|
}
|
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveRegistry, decorators: [{
|
|
52
52
|
type: Injectable,
|
|
53
53
|
args: [{ providedIn: 'root' }]
|
|
54
54
|
}] });
|
|
@@ -31,13 +31,13 @@ export class WorkbenchPerspectiveService {
|
|
|
31
31
|
.catch(error => logger.error(() => 'Failed to initialize perspectives', error));
|
|
32
32
|
}
|
|
33
33
|
async init() {
|
|
34
|
-
await this.
|
|
34
|
+
await this.registerPerspectivesFromConfig();
|
|
35
35
|
await this.registerAnonymousPerspectiveFromWindowName();
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
|
-
* Registers perspectives configured in {@link
|
|
38
|
+
* Registers perspectives configured in {@link WorkbenchConfig}.
|
|
39
39
|
*/
|
|
40
|
-
async
|
|
40
|
+
async registerPerspectivesFromConfig() {
|
|
41
41
|
// Register perspective either from function or object config.
|
|
42
42
|
if (typeof this._layoutConfig === 'function') {
|
|
43
43
|
await this.registerPerspective({ id: DEFAULT_WORKBENCH_PERSPECTIVE_ID, layout: this._layoutConfig });
|
|
@@ -78,13 +78,18 @@ export class WorkbenchPerspectiveService {
|
|
|
78
78
|
}
|
|
79
79
|
/**
|
|
80
80
|
* Switches to the specified perspective. The main area will not change, if any.
|
|
81
|
+
*
|
|
82
|
+
* @param id - Specifies the id of the perspective to activate.
|
|
83
|
+
* @param options - Controls activation of the perspective.
|
|
84
|
+
* @param options.storePerspectiveAsActive - Controls if to store the perspective as the active perspective. Default is `true`.
|
|
85
|
+
* @return `true` if activated the perspective, otherwise `false`.
|
|
81
86
|
*/
|
|
82
|
-
async switchPerspective(id) {
|
|
87
|
+
async switchPerspective(id, options) {
|
|
83
88
|
if (this.activePerspective?.id === id) {
|
|
84
89
|
return true;
|
|
85
90
|
}
|
|
86
91
|
const activated = await this._perspectiveRegistry.get(id).activate();
|
|
87
|
-
if (activated) {
|
|
92
|
+
if (activated && (options?.storePerspectiveAsActive ?? true)) {
|
|
88
93
|
await this._workbenchPerspectiveStorageService.storeActivePerspectiveId(id);
|
|
89
94
|
window.name = generatePerspectiveWindowName(id);
|
|
90
95
|
}
|
|
@@ -127,7 +132,7 @@ export class WorkbenchPerspectiveService {
|
|
|
127
132
|
})();
|
|
128
133
|
// Select initial perspective.
|
|
129
134
|
if (initialPerspectiveId) {
|
|
130
|
-
await this.switchPerspective(initialPerspectiveId);
|
|
135
|
+
await this.switchPerspective(initialPerspectiveId, { storePerspectiveAsActive: false });
|
|
131
136
|
}
|
|
132
137
|
}
|
|
133
138
|
/**
|
|
@@ -136,10 +141,10 @@ export class WorkbenchPerspectiveService {
|
|
|
136
141
|
get activePerspective() {
|
|
137
142
|
return this._perspectiveRegistry.perspectives.find(perspective => perspective.active) ?? null;
|
|
138
143
|
}
|
|
139
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
140
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.
|
|
144
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveService, deps: [{ token: WORKBENCH_LAYOUT_CONFIG }, { token: i1.WorkbenchPerspectiveRegistry }, { token: i0.EnvironmentInjector }, { token: i2.WorkbenchPerspectiveStorageService }, { token: i3.WorkbenchStartup }, { token: i4.Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
145
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveService, providedIn: 'root' }); }
|
|
141
146
|
}
|
|
142
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveService, decorators: [{
|
|
143
148
|
type: Injectable,
|
|
144
149
|
args: [{ providedIn: 'root' }]
|
|
145
150
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
@@ -163,4 +168,4 @@ function parsePerspectiveIdFromWindowName() {
|
|
|
163
168
|
const windowNameRegex = new RegExp(`^${generatePerspectiveWindowName('(?<perspective>.+)')}$`);
|
|
164
169
|
return window.name.match(windowNameRegex)?.groups['perspective'] ?? null;
|
|
165
170
|
}
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wZXJzcGVjdGl2ZS93b3JrYmVuY2gtcGVyc3BlY3RpdmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBc0IsTUFBTSxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQU9yRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQUVyRDs7R0FFRztBQUVILE1BQU0sT0FBTywyQkFBMkI7SUFFdEMsWUFBcUQsYUFBd0QsRUFDekYsb0JBQWtELEVBQ2xELG9CQUF5QyxFQUN6QyxtQ0FBdUUsRUFDL0UsZ0JBQWtDLEVBQ2xDLE1BQWM7UUFMMkIsa0JBQWEsR0FBYixhQUFhLENBQTJDO1FBQ3pGLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBOEI7UUFDbEQseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6Qyx3Q0FBbUMsR0FBbkMsbUNBQW1DLENBQW9DO1FBR3pGLGdCQUFnQixDQUFDLFdBQVc7YUFDekIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO2FBQzdDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFD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RUwsOEJBQThCO1FBQzlCLElBQUksb0JBQW9CLEVBQUU7WUFDeEIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILElBQVksaUJBQWlCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ2hHLENBQUM7OEdBbElVLDJCQUEyQixrQkFFbEIsdUJBQXVCO2tIQUZoQywyQkFBMkIsY0FEZixNQUFNOzsyRkFDbEIsMkJBQTJCO2tCQUR2QyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7MEJBR2pCLE1BQU07MkJBQUMsdUJBQXVCOztBQW1JN0M7O0dBRUc7QUFDSCxNQUFNLGdDQUFnQyxHQUFHLFNBQVMsQ0FBQztBQUVuRDs7R0FFRztBQUNILE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxhQUFxQjtJQUNqRSxPQUFPLCtCQUErQixhQUFhLEVBQUUsQ0FBQztBQUN4RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGdDQUFnQztJQUN2QyxNQUFNLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLDZCQUE2QixDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9GLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUUsTUFBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuaW1wb3J0IHtFbnZpcm9ubWVudEluamVjdG9yLCBJbmplY3QsIEluamVjdGFibGUsIHJ1bkluSW5qZWN0aW9uQ29udGV4dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoUGVyc3BlY3RpdmV9IGZyb20gJy4vybV3b3JrYmVuY2gtcGVyc3BlY3RpdmUubW9kZWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRGbiwgV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uLCBXb3JrYmVuY2hQZXJzcGVjdGl2ZXN9IGZyb20gJy4vd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsJztcbmltcG9ydCB7V29ya2JlbmNoSW5pdGlhbGl6ZXJ9IGZyb20gJy4uL3N0YXJ0dXAvd29ya2JlbmNoLWluaXRpYWxpemVyJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQge1dvcmtiZW5jaFN0YXJ0dXB9IGZyb20gJy4uL3N0YXJ0dXAvd29ya2JlbmNoLWxhdW5jaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtXb3JrYmVuY2hQZXJzcGVjdGl2ZVJlZ2lzdHJ5fSBmcm9tICcuL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS5yZWdpc3RyeSc7XG5pbXBvcnQge1dvcmtiZW5jaFBlcnNwZWN0aXZlU3RvcmFnZVNlcnZpY2V9IGZyb20gJy4vd29ya2JlbmNoLXBlcnNwZWN0aXZlLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1dPUktCRU5DSF9MQVlPVVRfQ09ORklHfSBmcm9tICcuLi93b3JrYmVuY2guY29uc3RhbnRzJztcbmltcG9ydCB7QU5PTllNT1VTX1BFUlNQRUNUSVZFX0lEX1BSRUZJWH0gZnJvbSAnLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5pbXBvcnQge01BSU5fQVJFQX0gZnJvbSAnLi4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQnO1xuXG4vKipcbiAqIEVuYWJsZXMgcmVnaXN0cmF0aW9uIGFuZCBhY3RpdmF0aW9uIG9mIHBlcnNwZWN0aXZlcy5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoUGVyc3BlY3RpdmVTZXJ2aWNlIGltcGxlbWVudHMgV29ya2JlbmNoSW5pdGlhbGl6ZXIge1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoV09SS0JFTkNIX0xBWU9VVF9DT05GSUcpIHByaXZhdGUgX2xheW91dENvbmZpZzogV29ya2JlbmNoTGF5b3V0Rm4gfCBXb3JrYmVuY2hQZXJzcGVjdGl2ZXMsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3BlcnNwZWN0aXZlUmVnaXN0cnk6IFdvcmtiZW5jaFBlcnNwZWN0aXZlUmVnaXN0cnksXG4gICAgICAgICAgICAgIHByaXZhdGUgX2Vudmlyb25tZW50SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3dvcmtiZW5jaFBlcnNwZWN0aXZlU3RvcmFnZVNlcnZpY2U6IFdvcmtiZW5jaFBlcnNwZWN0aXZlU3RvcmFnZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHdvcmtiZW5jaFN0YXJ0dXA6IFdvcmtiZW5jaFN0YXJ0dXAsXG4gICAgICAgICAgICAgIGxvZ2dlcjogTG9nZ2VyKSB7XG4gICAgd29ya2JlbmNoU3RhcnR1cC53aGVuU3RhcnRlZFxuICAgICAgLnRoZW4oKCkgPT4gdGhpcy5hY3RpdmF0ZUluaXRpYWxQZXJzcGVjdGl2ZSgpKVxuICAgICAgLmNhdGNoKGVycm9yID0+IGxvZ2dlci5lcnJvcigoKSA9PiAnRmFpbGVkIHRvIGluaXRpYWxpemUgcGVyc3BlY3RpdmVzJywgZXJyb3IpKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJQZXJzcGVjdGl2ZXNGcm9tTW9kdWxlQ29uZmlnKCk7XG4gICAgYXdhaXQgdGhpcy5yZWdpc3RlckFub255bW91c1BlcnNwZWN0aXZlRnJvbVdpbmRvd05hbWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgcGVyc3BlY3RpdmVzIGNvbmZpZ3VyZWQgaW4ge0BsaW5rIFdvcmtiZW5jaE1vZHVsZUNvbmZpZ30uXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlZ2lzdGVyUGVyc3BlY3RpdmVzRnJvbU1vZHVsZUNvbmZpZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBSZWdpc3RlciBwZXJzcGVjdGl2ZSBlaXRoZXIgZnJvbSBmdW5jdGlvbiBvciBvYmplY3QgY29uZmlnLlxuICAgIGlmICh0eXBlb2YgdGhpcy5fbGF5b3V0Q29uZmlnID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyUGVyc3BlY3RpdmUoe2lkOiBERUZBVUxUX1dPUktCRU5DSF9QRVJTUEVDVElWRV9JRCwgbGF5b3V0OiB0aGlzLl9sYXlvdXRDb25maWd9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IHBlcnNwZWN0aXZlIG9mIHRoaXMuX2xheW91dENvbmZpZy5wZXJzcGVjdGl2ZXMpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWdpc3RlclBlcnNwZWN0aXZlKHBlcnNwZWN0aXZlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGFuIGFub255bW91cyBwZXJzcGVjdGl2ZSBpZiB0aGUgd2luZG93IG5hbWUgaW5kaWNhdGVzIGl0LlxuICAgKiBUaGUgcGVyc3BlY3RpdmUgaXMgbWFya2VkIHRyYW5zaWVudCwgd2l0aCBpdHMgbGF5b3V0IG9ubHkgbWVtb2l6ZWQsIG5vdCBwZXJzaXN0ZWQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlZ2lzdGVyQW5vbnltb3VzUGVyc3BlY3RpdmVGcm9tV2luZG93TmFtZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB3aW5kb3dQZXJzcGVjdGl2ZUlkID0gcGFyc2VQZXJzcGVjdGl2ZUlkRnJvbVdpbmRvd05hbWUoKTtcbiAgICBpZiAod2luZG93UGVyc3BlY3RpdmVJZD8uc3RhcnRzV2l0aChBTk9OWU1PVVNfUEVSU1BFQ1RJVkVfSURfUFJFRklYKSkge1xuICAgICAgYXdhaXQgdGhpcy5yZWdpc3RlclBlcnNwZWN0aXZlKHtcbiAgICAgICAgaWQ6IHdpbmRvd1BlcnNwZWN0aXZlSWQsXG4gICAgICAgIGxheW91dDogZmFjdG9yeSA9PiBmYWN0b3J5LmFkZFBhcnQoTUFJTl9BUkVBKSxcbiAgICAgICAgdHJhbnNpZW50OiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGUgZ2l2ZW4gcGVyc3BlY3RpdmUgdG8gYXJyYW5nZSB2aWV3cyBhcm91bmQgdGhlIG1haW4gYXJlYS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZWdpc3RlclBlcnNwZWN0aXZlKGRlZmluaXRpb246IFdvcmtiZW5jaFBlcnNwZWN0aXZlRGVmaW5pdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBlcnNwZWN0aXZlSWQgPSBkZWZpbml0aW9uLmlkO1xuXG4gICAgaWYgKHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkuaGFzKHBlcnNwZWN0aXZlSWQpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgRmFpbGVkIHRvIHJlZ2lzdGVyIHBlcnNwZWN0aXZlICcke3BlcnNwZWN0aXZlSWR9Jy4gQW5vdGhlciBwZXJzcGVjdGl2ZSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgdW5kZXIgdGhhdCBpZGVudGl0eS5gKTtcbiAgICB9XG4gICAgaWYgKGRlZmluaXRpb24uY2FuQWN0aXZhdGUgJiYgIShhd2FpdCBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5fZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4gZGVmaW5pdGlvbi5jYW5BY3RpdmF0ZSEoKSkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGVyc3BlY3RpdmUgPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5fZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4gbmV3IMm1V29ya2JlbmNoUGVyc3BlY3RpdmUoZGVmaW5pdGlvbikpO1xuICAgIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkucmVnaXN0ZXIocGVyc3BlY3RpdmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN3aXRjaGVzIHRvIHRoZSBzcGVjaWZpZWQgcGVyc3BlY3RpdmUuIFRoZSBtYWluIGFyZWEgd2lsbCBub3QgY2hhbmdlLCBpZiBhbnkuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc3dpdGNoUGVyc3BlY3RpdmUoaWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLmFjdGl2ZVBlcnNwZWN0aXZlPy5pZCA9PT0gaWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBhY3RpdmF0ZWQgPSBhd2FpdCB0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LmdldChpZCkuYWN0aXZhdGUoKTtcbiAgICBpZiAoYWN0aXZhdGVkKSB7XG4gICAgICBhd2FpdCB0aGlzLl93b3JrYmVuY2hQZXJzcGVjdGl2ZVN0b3JhZ2VTZXJ2aWNlLnN0b3JlQWN0aXZlUGVyc3BlY3RpdmVJZChpZCk7XG4gICAgICB3aW5kb3cubmFtZSA9IGdlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKGlkKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGl2YXRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGN1cnJlbnRseSBhY3RpdmUgcGVyc3BlY3RpdmUgdG8gaXRzIGluaXRpYWwgbGF5b3V0LiBUaGUgbWFpbiBhcmVhIHdpbGwgbm90IGNoYW5nZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZXNldFBlcnNwZWN0aXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuYWN0aXZlUGVyc3BlY3RpdmU/LnJlc2V0KCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIHRoZSBpbml0aWFsIHBlcnNwZWN0aXZlLCBpZiBhbnkuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGFjdGl2YXRlSW5pdGlhbFBlcnNwZWN0aXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIERldGVybWluZSB0aGUgaW5pdGlhbCBwZXJzcGVjdGl2ZS5cbiAgICBjb25zdCBpbml0aWFsUGVyc3BlY3RpdmVJZCA9IGF3YWl0IChhc3luYyAoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICAgIC8vIERldGVybWluZSB0aGUgaW5pdGlhbCBwZXJzcGVjdGl2ZSB1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSB3aW5kb3cgbmFtZS5cbiAgICAgIGNvbnN0IHBlcnNwZWN0aXZlRnJvbVdpbmRvdyA9IHBhcnNlUGVyc3BlY3RpdmVJZEZyb21XaW5kb3dOYW1lKCk7XG4gICAgICBpZiAocGVyc3BlY3RpdmVGcm9tV2luZG93ICYmIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkuaGFzKHBlcnNwZWN0aXZlRnJvbVdpbmRvdykpIHtcbiAgICAgICAgcmV0dXJuIHBlcnNwZWN0aXZlRnJvbVdpbmRvdztcbiAgICAgIH1cblxuICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBpbml0aWFsIHBlcnNwZWN0aXZlIHVzaW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIHN0b3JhZ2UuXG4gICAgICBjb25zdCBwZXJzcGVjdGl2ZUZyb21TdG9yYWdlID0gYXdhaXQgdGhpcy5fd29ya2JlbmNoUGVyc3BlY3RpdmVTdG9yYWdlU2VydmljZS5sb2FkQWN0aXZlUGVyc3BlY3RpdmVJZCgpO1xuICAgICAgaWYgKHBlcnNwZWN0aXZlRnJvbVN0b3JhZ2UgJiYgdGhpcy5fcGVyc3BlY3RpdmVSZWdpc3RyeS5oYXMocGVyc3BlY3RpdmVGcm9tU3RvcmFnZSkpIHtcbiAgICAgICAgcmV0dXJuIHBlcnNwZWN0aXZlRnJvbVN0b3JhZ2U7XG4gICAgICB9XG5cbiAgICAgIC8vIERldGVybWluZSB0aGUgaW5pdGlhbCBwZXJzcGVjdGl2ZSB1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjb25maWcuXG4gICAgICBjb25zdCBwZXJzcGVjdGl2ZUZyb21Db25maWcgPSB0eXBlb2YgdGhpcy5fbGF5b3V0Q29uZmlnID09PSAnb2JqZWN0JyA/IHRoaXMuX2xheW91dENvbmZpZy5pbml0aWFsUGVyc3BlY3RpdmUgOiBudWxsO1xuICAgICAgaWYgKCFwZXJzcGVjdGl2ZUZyb21Db25maWcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkucGVyc3BlY3RpdmVzWzBdPy5pZDtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgcGVyc3BlY3RpdmVGcm9tQ29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gcGVyc3BlY3RpdmVGcm9tQ29uZmlnO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBwZXJzcGVjdGl2ZUZyb21Db25maWcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5fZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4gcGVyc3BlY3RpdmVGcm9tQ29uZmlnKFsuLi50aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LnBlcnNwZWN0aXZlc10pKSk/LmlkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KSgpO1xuXG4gICAgLy8gU2VsZWN0IGluaXRpYWwgcGVyc3BlY3RpdmUuXG4gICAgaWYgKGluaXRpYWxQZXJzcGVjdGl2ZUlkKSB7XG4gICAgICBhd2FpdCB0aGlzLnN3aXRjaFBlcnNwZWN0aXZlKGluaXRpYWxQZXJzcGVjdGl2ZUlkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudGx5IGFjdGl2ZSBwZXJzcGVjdGl2ZSwgb3IgYG51bGxgIGlmIHRoZXJlIGlzIG5vIGN1cnJlbnQgcGVyc3BlY3RpdmUuXG4gICAqL1xuICBwcml2YXRlIGdldCBhY3RpdmVQZXJzcGVjdGl2ZSgpOiDJtVdvcmtiZW5jaFBlcnNwZWN0aXZlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkucGVyc3BlY3RpdmVzLmZpbmQocGVyc3BlY3RpdmUgPT4gcGVyc3BlY3RpdmUuYWN0aXZlKSA/PyBudWxsO1xuICB9XG59XG5cbi8qKlxuICogSWRlbnRpZmllciBmb3IgdGhlIFwiZGVmYXVsdFwiIHBlcnNwZWN0aXZlIHRoYXQgdGhlIHdvcmtiZW5jaCBjcmVhdGVzIGlmIG5vdCBwcm92aWRpbmcgYSBuYW1lZCBsYXlvdXQuXG4gKi9cbmNvbnN0IERFRkFVTFRfV09SS0JFTkNIX1BFUlNQRUNUSVZFX0lEID0gJ2RlZmF1bHQnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgd2luZG93IG5hbWUgZm9yIGdpdmVuIHBlcnNwZWN0aXZlIHRvIGNvbnRyb2wgd2hpY2ggcGVyc3BlY3RpdmUgdG8gZGlzcGxheSBpbiBhIHdpbmRvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKHBlcnNwZWN0aXZlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgc2Npb24ud29ya2JlbmNoLnBlcnNwZWN0aXZlLiR7cGVyc3BlY3RpdmVJZH1gO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgcGVyc3BlY3RpdmUgaWRlbnRpdHkgZnJvbSB0aGUgd2luZG93IG5hbWUsIHJldHVybmluZyBgbnVsbGAgaWYgbm90IHNldC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VQZXJzcGVjdGl2ZUlkRnJvbVdpbmRvd05hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHdpbmRvd05hbWVSZWdleCA9IG5ldyBSZWdFeHAoYF4ke2dlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKCcoPzxwZXJzcGVjdGl2ZT4uKyknKX0kYCk7XG4gIHJldHVybiB3aW5kb3cubmFtZS5tYXRjaCh3aW5kb3dOYW1lUmVnZXgpPy5ncm91cHMhWydwZXJzcGVjdGl2ZSddID8/IG51bGw7XG59XG4iXX0=
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wZXJzcGVjdGl2ZS93b3JrYmVuY2gtcGVyc3BlY3RpdmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBc0IsTUFBTSxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQU9yRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQUVyRDs7R0FFRztBQUVILE1BQU0sT0FBTywyQkFBMkI7SUFFdEMsWUFBcUQsYUFBd0QsRUFDekYsb0JBQWtELEVBQ2xELG9CQUF5QyxFQUN6QyxtQ0FBdUUsRUFDL0UsZ0JBQWtDLEVBQ2xDLE1BQWM7UUFMMkIsa0JBQWEsR0FBYixhQUFhLENBQTJDO1FBQ3pGLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBOEI7UUFDbEQseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6Qyx3Q0FBbUMsR0FBbkMsbUNBQW1DLENBQW9DO1FBR3pGLGdCQUFnQixDQUFDLFdBQVc7YUFDekIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO2FBQzdDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFD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Q0FBQzthQUMvSTtZQUNELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFTCw4QkFBOEI7UUFDOUIsSUFBSSxvQkFBb0IsRUFBRTtZQUN4QixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFBRSxFQUFDLHdCQUF3QixFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7U0FDdkY7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFZLGlCQUFpQjtRQUMzQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNoRyxDQUFDOzhHQXZJVSwyQkFBMkIsa0JBRWxCLHVCQUF1QjtrSEFGaEMsMkJBQTJCLGNBRGYsTUFBTTs7MkZBQ2xCLDJCQUEyQjtrQkFEdkMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7OzBCQUdqQixNQUFNOzJCQUFDLHVCQUF1Qjs7QUF3STdDOztHQUVHO0FBQ0gsTUFBTSxnQ0FBZ0MsR0FBRyxTQUFTLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsYUFBcUI7SUFDakUsT0FBTywrQkFBK0IsYUFBYSxFQUFFLENBQUM7QUFDeEQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxnQ0FBZ0M7SUFDdkMsTUFBTSxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSw2QkFBNkIsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDNUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cbmltcG9ydCB7RW52aXJvbm1lbnRJbmplY3RvciwgSW5qZWN0LCBJbmplY3RhYmxlLCBydW5JbkluamVjdGlvbkNvbnRleHR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaFBlcnNwZWN0aXZlfSBmcm9tICcuL8m1d29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsJztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0Rm4sIFdvcmtiZW5jaFBlcnNwZWN0aXZlRGVmaW5pdGlvbiwgV29ya2JlbmNoUGVyc3BlY3RpdmVzfSBmcm9tICcuL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS5tb2RlbCc7XG5pbXBvcnQge1dvcmtiZW5jaEluaXRpYWxpemVyfSBmcm9tICcuLi9zdGFydHVwL3dvcmtiZW5jaC1pbml0aWFsaXplcic7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHtXb3JrYmVuY2hTdGFydHVwfSBmcm9tICcuLi9zdGFydHVwL3dvcmtiZW5jaC1sYXVuY2hlci5zZXJ2aWNlJztcbmltcG9ydCB7V29ya2JlbmNoUGVyc3BlY3RpdmVSZWdpc3RyeX0gZnJvbSAnLi93b3JrYmVuY2gtcGVyc3BlY3RpdmUucmVnaXN0cnknO1xuaW1wb3J0IHtXb3JrYmVuY2hQZXJzcGVjdGl2ZVN0b3JhZ2VTZXJ2aWNlfSBmcm9tICcuL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHtXT1JLQkVOQ0hfTEFZT1VUX0NPTkZJR30gZnJvbSAnLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5pbXBvcnQge0FOT05ZTU9VU19QRVJTUEVDVElWRV9JRF9QUkVGSVh9IGZyb20gJy4uL3dvcmtiZW5jaC5jb25zdGFudHMnO1xuaW1wb3J0IHtNQUlOX0FSRUF9IGZyb20gJy4uL2xheW91dC93b3JrYmVuY2gtbGF5b3V0JztcblxuLyoqXG4gKiBFbmFibGVzIHJlZ2lzdHJhdGlvbiBhbmQgYWN0aXZhdGlvbiBvZiBwZXJzcGVjdGl2ZXMuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaFBlcnNwZWN0aXZlU2VydmljZSBpbXBsZW1lbnRzIFdvcmtiZW5jaEluaXRpYWxpemVyIHtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFdPUktCRU5DSF9MQVlPVVRfQ09ORklHKSBwcml2YXRlIF9sYXlvdXRDb25maWc6IFdvcmtiZW5jaExheW91dEZuIHwgV29ya2JlbmNoUGVyc3BlY3RpdmVzLFxuICAgICAgICAgICAgICBwcml2YXRlIF9wZXJzcGVjdGl2ZVJlZ2lzdHJ5OiBXb3JrYmVuY2hQZXJzcGVjdGl2ZVJlZ2lzdHJ5LFxuICAgICAgICAgICAgICBwcml2YXRlIF9lbnZpcm9ubWVudEluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hQZXJzcGVjdGl2ZVN0b3JhZ2VTZXJ2aWNlOiBXb3JrYmVuY2hQZXJzcGVjdGl2ZVN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICAgICAgICB3b3JrYmVuY2hTdGFydHVwOiBXb3JrYmVuY2hTdGFydHVwLFxuICAgICAgICAgICAgICBsb2dnZXI6IExvZ2dlcikge1xuICAgIHdvcmtiZW5jaFN0YXJ0dXAud2hlblN0YXJ0ZWRcbiAgICAgIC50aGVuKCgpID0+IHRoaXMuYWN0aXZhdGVJbml0aWFsUGVyc3BlY3RpdmUoKSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiBsb2dnZXIuZXJyb3IoKCkgPT4gJ0ZhaWxlZCB0byBpbml0aWFsaXplIHBlcnNwZWN0aXZlcycsIGVycm9yKSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyUGVyc3BlY3RpdmVzRnJvbUNvbmZpZygpO1xuICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJBbm9ueW1vdXNQZXJzcGVjdGl2ZUZyb21XaW5kb3dOYW1lKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHBlcnNwZWN0aXZlcyBjb25maWd1cmVkIGluIHtAbGluayBXb3JrYmVuY2hDb25maWd9LlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZWdpc3RlclBlcnNwZWN0aXZlc0Zyb21Db25maWcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gUmVnaXN0ZXIgcGVyc3BlY3RpdmUgZWl0aGVyIGZyb20gZnVuY3Rpb24gb3Igb2JqZWN0IGNvbmZpZy5cbiAgICBpZiAodHlwZW9mIHRoaXMuX2xheW91dENvbmZpZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYXdhaXQgdGhpcy5yZWdpc3RlclBlcnNwZWN0aXZlKHtpZDogREVGQVVMVF9XT1JLQkVOQ0hfUEVSU1BFQ1RJVkVfSUQsIGxheW91dDogdGhpcy5fbGF5b3V0Q29uZmlnfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yIChjb25zdCBwZXJzcGVjdGl2ZSBvZiB0aGlzLl9sYXlvdXRDb25maWcucGVyc3BlY3RpdmVzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJQZXJzcGVjdGl2ZShwZXJzcGVjdGl2ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhbiBhbm9ueW1vdXMgcGVyc3BlY3RpdmUgaWYgdGhlIHdpbmRvdyBuYW1lIGluZGljYXRlcyBpdC5cbiAgICogVGhlIHBlcnNwZWN0aXZlIGlzIG1hcmtlZCB0cmFuc2llbnQsIHdpdGggaXRzIGxheW91dCBvbmx5IG1lbW9pemVkLCBub3QgcGVyc2lzdGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZWdpc3RlckFub255bW91c1BlcnNwZWN0aXZlRnJvbVdpbmRvd05hbWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgd2luZG93UGVyc3BlY3RpdmVJZCA9IHBhcnNlUGVyc3BlY3RpdmVJZEZyb21XaW5kb3dOYW1lKCk7XG4gICAgaWYgKHdpbmRvd1BlcnNwZWN0aXZlSWQ/LnN0YXJ0c1dpdGgoQU5PTllNT1VTX1BFUlNQRUNUSVZFX0lEX1BSRUZJWCkpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJQZXJzcGVjdGl2ZSh7XG4gICAgICAgIGlkOiB3aW5kb3dQZXJzcGVjdGl2ZUlkLFxuICAgICAgICBsYXlvdXQ6IGZhY3RvcnkgPT4gZmFjdG9yeS5hZGRQYXJ0KE1BSU5fQVJFQSksXG4gICAgICAgIHRyYW5zaWVudDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgdGhlIGdpdmVuIHBlcnNwZWN0aXZlIHRvIGFycmFuZ2Ugdmlld3MgYXJvdW5kIHRoZSBtYWluIGFyZWEuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVnaXN0ZXJQZXJzcGVjdGl2ZShkZWZpbml0aW9uOiBXb3JrYmVuY2hQZXJzcGVjdGl2ZURlZmluaXRpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwZXJzcGVjdGl2ZUlkID0gZGVmaW5pdGlvbi5pZDtcblxuICAgIGlmICh0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LmhhcyhwZXJzcGVjdGl2ZUlkKSkge1xuICAgICAgdGhyb3cgRXJyb3IoYEZhaWxlZCB0byByZWdpc3RlciBwZXJzcGVjdGl2ZSAnJHtwZXJzcGVjdGl2ZUlkfScuIEFub3RoZXIgcGVyc3BlY3RpdmUgaXMgYWxyZWFkeSByZWdpc3RlcmVkIHVuZGVyIHRoYXQgaWRlbnRpdHkuYCk7XG4gICAgfVxuICAgIGlmIChkZWZpbml0aW9uLmNhbkFjdGl2YXRlICYmICEoYXdhaXQgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuX2Vudmlyb25tZW50SW5qZWN0b3IsICgpID0+IGRlZmluaXRpb24uY2FuQWN0aXZhdGUhKCkpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBlcnNwZWN0aXZlID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuX2Vudmlyb25tZW50SW5qZWN0b3IsICgpID0+IG5ldyDJtVdvcmtiZW5jaFBlcnNwZWN0aXZlKGRlZmluaXRpb24pKTtcbiAgICB0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LnJlZ2lzdGVyKHBlcnNwZWN0aXZlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTd2l0Y2hlcyB0byB0aGUgc3BlY2lmaWVkIHBlcnNwZWN0aXZlLiBUaGUgbWFpbiBhcmVhIHdpbGwgbm90IGNoYW5nZSwgaWYgYW55LlxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBTcGVjaWZpZXMgdGhlIGlkIG9mIHRoZSBwZXJzcGVjdGl2ZSB0byBhY3RpdmF0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb250cm9scyBhY3RpdmF0aW9uIG9mIHRoZSBwZXJzcGVjdGl2ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMuc3RvcmVQZXJzcGVjdGl2ZUFzQWN0aXZlIC0gQ29udHJvbHMgaWYgdG8gc3RvcmUgdGhlIHBlcnNwZWN0aXZlIGFzIHRoZSBhY3RpdmUgcGVyc3BlY3RpdmUuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKiBAcmV0dXJuIGB0cnVlYCBpZiBhY3RpdmF0ZWQgdGhlIHBlcnNwZWN0aXZlLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzd2l0Y2hQZXJzcGVjdGl2ZShpZDogc3RyaW5nLCBvcHRpb25zPzoge3N0b3JlUGVyc3BlY3RpdmVBc0FjdGl2ZT86IGJvb2xlYW59KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuYWN0aXZlUGVyc3BlY3RpdmU/LmlkID09PSBpZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGFjdGl2YXRlZCA9IGF3YWl0IHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkuZ2V0KGlkKS5hY3RpdmF0ZSgpO1xuICAgIGlmIChhY3RpdmF0ZWQgJiYgKG9wdGlvbnM/LnN0b3JlUGVyc3BlY3RpdmVBc0FjdGl2ZSA/PyB0cnVlKSkge1xuICAgICAgYXdhaXQgdGhpcy5fd29ya2JlbmNoUGVyc3BlY3RpdmVTdG9yYWdlU2VydmljZS5zdG9yZUFjdGl2ZVBlcnNwZWN0aXZlSWQoaWQpO1xuICAgICAgd2luZG93Lm5hbWUgPSBnZW5lcmF0ZVBlcnNwZWN0aXZlV2luZG93TmFtZShpZCk7XG4gICAgfVxuICAgIHJldHVybiBhY3RpdmF0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBjdXJyZW50bHkgYWN0aXZlIHBlcnNwZWN0aXZlIHRvIGl0cyBpbml0aWFsIGxheW91dC4gVGhlIG1haW4gYXJlYSB3aWxsIG5vdCBjaGFuZ2UuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVzZXRQZXJzcGVjdGl2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmFjdGl2ZVBlcnNwZWN0aXZlPy5yZXNldCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlcyB0aGUgaW5pdGlhbCBwZXJzcGVjdGl2ZSwgaWYgYW55LlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBhY3RpdmF0ZUluaXRpYWxQZXJzcGVjdGl2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBEZXRlcm1pbmUgdGhlIGluaXRpYWwgcGVyc3BlY3RpdmUuXG4gICAgY29uc3QgaW5pdGlhbFBlcnNwZWN0aXZlSWQgPSBhd2FpdCAoYXN5bmMgKCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgICAvLyBEZXRlcm1pbmUgdGhlIGluaXRpYWwgcGVyc3BlY3RpdmUgdXNpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgd2luZG93IG5hbWUuXG4gICAgICBjb25zdCBwZXJzcGVjdGl2ZUZyb21XaW5kb3cgPSBwYXJzZVBlcnNwZWN0aXZlSWRGcm9tV2luZG93TmFtZSgpO1xuICAgICAgaWYgKHBlcnNwZWN0aXZlRnJvbVdpbmRvdyAmJiB0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LmhhcyhwZXJzcGVjdGl2ZUZyb21XaW5kb3cpKSB7XG4gICAgICAgIHJldHVybiBwZXJzcGVjdGl2ZUZyb21XaW5kb3c7XG4gICAgICB9XG5cbiAgICAgIC8vIERldGVybWluZSB0aGUgaW5pdGlhbCBwZXJzcGVjdGl2ZSB1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzdG9yYWdlLlxuICAgICAgY29uc3QgcGVyc3BlY3RpdmVGcm9tU3RvcmFnZSA9IGF3YWl0IHRoaXMuX3dvcmtiZW5jaFBlcnNwZWN0aXZlU3RvcmFnZVNlcnZpY2UubG9hZEFjdGl2ZVBlcnNwZWN0aXZlSWQoKTtcbiAgICAgIGlmIChwZXJzcGVjdGl2ZUZyb21TdG9yYWdlICYmIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkuaGFzKHBlcnNwZWN0aXZlRnJvbVN0b3JhZ2UpKSB7XG4gICAgICAgIHJldHVybiBwZXJzcGVjdGl2ZUZyb21TdG9yYWdlO1xuICAgICAgfVxuXG4gICAgICAvLyBEZXRlcm1pbmUgdGhlIGluaXRpYWwgcGVyc3BlY3RpdmUgdXNpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgY29uZmlnLlxuICAgICAgY29uc3QgcGVyc3BlY3RpdmVGcm9tQ29uZmlnID0gdHlwZW9mIHRoaXMuX2xheW91dENvbmZpZyA9PT0gJ29iamVjdCcgPyB0aGlzLl9sYXlvdXRDb25maWcuaW5pdGlhbFBlcnNwZWN0aXZlIDogbnVsbDtcbiAgICAgIGlmICghcGVyc3BlY3RpdmVGcm9tQ29uZmlnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LnBlcnNwZWN0aXZlc1swXT8uaWQ7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHBlcnNwZWN0aXZlRnJvbUNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHBlcnNwZWN0aXZlRnJvbUNvbmZpZztcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgcGVyc3BlY3RpdmVGcm9tQ29uZmlnID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuX2Vudmlyb25tZW50SW5qZWN0b3IsICgpID0+IHBlcnNwZWN0aXZlRnJvbUNvbmZpZyhbLi4udGhpcy5fcGVyc3BlY3RpdmVSZWdpc3RyeS5wZXJzcGVjdGl2ZXNdKSkpPy5pZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSkoKTtcblxuICAgIC8vIFNlbGVjdCBpbml0aWFsIHBlcnNwZWN0aXZlLlxuICAgIGlmIChpbml0aWFsUGVyc3BlY3RpdmVJZCkge1xuICAgICAgYXdhaXQgdGhpcy5zd2l0Y2hQZXJzcGVjdGl2ZShpbml0aWFsUGVyc3BlY3RpdmVJZCwge3N0b3JlUGVyc3BlY3RpdmVBc0FjdGl2ZTogZmFsc2V9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudGx5IGFjdGl2ZSBwZXJzcGVjdGl2ZSwgb3IgYG51bGxgIGlmIHRoZXJlIGlzIG5vIGN1cnJlbnQgcGVyc3BlY3RpdmUuXG4gICAqL1xuICBwcml2YXRlIGdldCBhY3RpdmVQZXJzcGVjdGl2ZSgpOiDJtVdvcmtiZW5jaFBlcnNwZWN0aXZlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkucGVyc3BlY3RpdmVzLmZpbmQocGVyc3BlY3RpdmUgPT4gcGVyc3BlY3RpdmUuYWN0aXZlKSA/PyBudWxsO1xuICB9XG59XG5cbi8qKlxuICogSWRlbnRpZmllciBmb3IgdGhlIFwiZGVmYXVsdFwiIHBlcnNwZWN0aXZlIHRoYXQgdGhlIHdvcmtiZW5jaCBjcmVhdGVzIGlmIG5vdCBwcm92aWRpbmcgYSBuYW1lZCBsYXlvdXQuXG4gKi9cbmNvbnN0IERFRkFVTFRfV09SS0JFTkNIX1BFUlNQRUNUSVZFX0lEID0gJ2RlZmF1bHQnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgd2luZG93IG5hbWUgZm9yIGdpdmVuIHBlcnNwZWN0aXZlIHRvIGNvbnRyb2wgd2hpY2ggcGVyc3BlY3RpdmUgdG8gZGlzcGxheSBpbiBhIHdpbmRvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKHBlcnNwZWN0aXZlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgc2Npb24ud29ya2JlbmNoLnBlcnNwZWN0aXZlLiR7cGVyc3BlY3RpdmVJZH1gO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgcGVyc3BlY3RpdmUgaWRlbnRpdHkgZnJvbSB0aGUgd2luZG93IG5hbWUsIHJldHVybmluZyBgbnVsbGAgaWYgbm90IHNldC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VQZXJzcGVjdGl2ZUlkRnJvbVdpbmRvd05hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHdpbmRvd05hbWVSZWdleCA9IG5ldyBSZWdFeHAoYF4ke2dlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKCcoPzxwZXJzcGVjdGl2ZT4uKyknKX0kYCk7XG4gIHJldHVybiB3aW5kb3cubmFtZS5tYXRjaCh3aW5kb3dOYW1lUmVnZXgpPy5ncm91cHMhWydwZXJzcGVjdGl2ZSddID8/IG51bGw7XG59XG4iXX0=
|