@scion/workbench 18.0.0-beta.1 → 18.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_index.scss +3 -3
- package/design/_workbench-icon-font.scss +1 -1
- package/esm2022/lib/common/objects.util.mjs +7 -1
- package/esm2022/lib/common/uid.util.mjs +22 -0
- package/esm2022/lib/content-projection/content-projection.directive.mjs +16 -17
- package/esm2022/lib/dialog//311/265workbench-dialog.mjs +3 -3
- package/esm2022/lib/filter-field/filter-field.component.mjs +5 -5
- package/esm2022/lib/layout/grid-element/grid-element.component.mjs +6 -16
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +11 -0
- package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +2 -2
- package/esm2022/lib/layout/migration/workbench-layout-migration-v5.service.mjs +67 -0
- package/esm2022/lib/layout/stringifier.mjs +70 -0
- package/esm2022/lib/layout/workbench-layout.model.mjs +1 -1
- package/esm2022/lib/layout/workench-layout-serializer.service.mjs +16 -25
- package/esm2022/lib/layout//311/265workbench-layout.mjs +14 -18
- package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +18 -1
- package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +28 -21
- package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +11 -1
- package/esm2022/lib/microfrontend-platform/manifest-object-cache.service.mjs +63 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +5 -4
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +2 -2
- package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +3 -2
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +3 -2
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +2 -2
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.mjs +39 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.mjs +120 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.mjs +55 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.mjs +19 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +4 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +2 -13
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +1 -16
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +42 -17
- package/esm2022/lib/microfrontend-platform/public_api.mjs +2 -1
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +5 -4
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +7 -4
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +26 -4
- package/esm2022/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.mjs +32 -0
- package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +23 -5
- package/esm2022/lib/page-not-found/format-url.pipe.mjs +2 -2
- package/esm2022/lib/page-not-found/page-not-found.component.mjs +3 -3
- package/esm2022/lib/part/part.component.mjs +3 -5
- package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +3 -3
- package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
- package/esm2022/lib/perspective/workbench-perspective.service.mjs +61 -51
- package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +11 -2
- package/esm2022/lib/popup/popup.config.mjs +3 -3
- package/esm2022/lib/portal/wb-component-portal.mjs +3 -1
- package/esm2022/lib/routing/public_api.mjs +1 -2
- package/esm2022/lib/routing/routing.model.mjs +1 -1
- package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +94 -0
- package/esm2022/lib/routing/workbench-layout-differ.mjs +3 -10
- package/esm2022/lib/routing/workbench-url-observer.service.mjs +31 -27
- package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +58 -0
- package/esm2022/lib/routing//311/265workbench-router.service.mjs +2 -2
- package/esm2022/lib/view/view-move-handler.service.mjs +5 -5
- package/esm2022/lib/view/view.component.mjs +38 -25
- package/esm2022/lib/view/workbench-view-route-guards.mjs +2 -2
- package/esm2022/lib/view//311/265workbench-view.model.mjs +25 -19
- package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +2 -2
- package/esm2022/lib/workbench-config.mjs +1 -1
- package/esm2022/lib/workbench-id.mjs +3 -3
- package/esm2022/lib/workbench.component.mjs +2 -2
- package/esm2022/lib/workbench.constants.mjs +1 -5
- package/esm2022/lib/workbench.provider.mjs +3 -9
- package/fesm2022/scion-workbench.mjs +855 -326
- package/fesm2022/scion-workbench.mjs.map +1 -1
- package/lib/common/objects.util.d.ts +4 -0
- package/lib/common/uid.util.d.ts +9 -0
- package/lib/dialog//311/265workbench-dialog.d.ts +1 -1
- package/lib/filter-field/filter-field.component.d.ts +1 -1
- package/lib/layout/grid-element/grid-element.component.d.ts +1 -8
- package/lib/layout/migration/model/workbench-layout-migration-v5.model.d.ts +32 -0
- package/lib/layout/migration/workbench-layout-migration-v5.service.d.ts +12 -0
- package/lib/layout/stringifier.d.ts +26 -0
- package/lib/layout/workbench-layout.model.d.ts +3 -3
- package/lib/layout/workench-layout-serializer.service.d.ts +13 -15
- package/lib/layout//311/265workbench-layout.d.ts +3 -3
- package/lib/microfrontend-platform/common/microfrontend.util.d.ts +5 -1
- package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +7 -3
- package/lib/microfrontend-platform/manifest-object-cache.service.d.ts +33 -0
- package/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.d.ts +1 -1
- package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.d.ts +10 -0
- package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.d.ts +24 -0
- package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.d.ts +20 -0
- package/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.d.ts +9 -0
- package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +0 -4
- package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +0 -4
- package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +7 -2
- package/lib/microfrontend-platform/public_api.d.ts +1 -0
- package/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.d.ts +1 -1
- package/lib/microfrontend-platform/routing/microfrontend-view-routes.d.ts +9 -2
- package/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.d.ts +11 -0
- package/lib/perspective/workbench-perspective.model.d.ts +16 -17
- package/lib/perspective/workbench-perspective.service.d.ts +15 -7
- package/lib/perspective//311/265workbench-perspective.model.d.ts +4 -0
- package/lib/routing/public_api.d.ts +0 -1
- package/lib/routing/{workbench-auxiliary-routes-registrator.service.d.ts → workbench-auxiliary-route-installer.service.d.ts} +3 -3
- package/lib/routing/workbench-layout-differ.d.ts +1 -2
- package/lib/routing/workbench-url-observer.service.d.ts +5 -3
- package/lib/routing/workbench-view-outlet-differ.d.ts +32 -0
- package/lib/view/view.component.d.ts +8 -7
- package/lib/view//311/265workbench-view.model.d.ts +11 -7
- package/lib/workbench-config.d.ts +2 -2
- package/lib/workbench.constants.d.ts +0 -5
- package/package.json +3 -3
- package/esm2022/lib/common/uuid.util.mjs +0 -17
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +0 -41
- package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +0 -94
- package/lib/common/uuid.util.d.ts +0 -8
- package/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.d.ts +0 -10
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2018-2023 Swiss Federal Railways
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made
|
|
5
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
*/
|
|
10
|
+
import { Injectable } from '@angular/core';
|
|
11
|
+
import { RouterUtils } from './router.util';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
/**
|
|
14
|
+
* Stateful differ to compute view outlets.
|
|
15
|
+
*
|
|
16
|
+
* Use this differ to register/unregister view auxiliary routes.
|
|
17
|
+
*
|
|
18
|
+
* Because the layout is not available during initial navigation and empty-path views do not have
|
|
19
|
+
* an outlet in the URL, this differ uses both, outlets in the URL and views in the layout.
|
|
20
|
+
*/
|
|
21
|
+
export class WorkbenchViewOutletDiffer {
|
|
22
|
+
constructor(differs) {
|
|
23
|
+
this._differ = differs.find([]).create();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Computes differences since last time {@link WorkbenchViewOutletDiffer#diff} was invoked.
|
|
27
|
+
*/
|
|
28
|
+
diff(workbenchLayout, urlTree) {
|
|
29
|
+
const views = workbenchLayout?.views().map(view => view.id) ?? [];
|
|
30
|
+
const viewOutlets = RouterUtils.parseViewOutlets(urlTree).keys();
|
|
31
|
+
const changes = this._differ.diff(new Set([...viewOutlets, ...views]));
|
|
32
|
+
return new WorkbenchViewOutletDiff(changes);
|
|
33
|
+
}
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchViewOutletDiffer, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchViewOutletDiffer, providedIn: 'root' }); }
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchViewOutletDiffer, decorators: [{
|
|
38
|
+
type: Injectable,
|
|
39
|
+
args: [{ providedIn: 'root' }]
|
|
40
|
+
}], ctorParameters: () => [{ type: i0.IterableDiffers }] });
|
|
41
|
+
/**
|
|
42
|
+
* Lists the view outlets added/removed in the current navigation.
|
|
43
|
+
*/
|
|
44
|
+
export class WorkbenchViewOutletDiff {
|
|
45
|
+
constructor(changes) {
|
|
46
|
+
this.addedViewOutlets = new Array();
|
|
47
|
+
this.removedViewOutlets = new Array();
|
|
48
|
+
changes?.forEachAddedItem(({ item }) => this.addedViewOutlets.push(item));
|
|
49
|
+
changes?.forEachRemovedItem(({ item }) => this.removedViewOutlets.push(item));
|
|
50
|
+
}
|
|
51
|
+
toString() {
|
|
52
|
+
return `${new Array()
|
|
53
|
+
.concat(this.addedViewOutlets.length ? `addedViewOutlets=[${this.addedViewOutlets}]` : [])
|
|
54
|
+
.concat(this.removedViewOutlets.length ? `removedViewOutlets=[${this.removedViewOutlets}]` : [])
|
|
55
|
+
.join(', ')}`;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXZpZXctb3V0bGV0LWRpZmZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3JvdXRpbmcvd29ya2JlbmNoLXZpZXctb3V0bGV0LWRpZmZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQW1ELE1BQU0sZUFBZSxDQUFDO0FBRzNGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBRzFDOzs7Ozs7O0dBT0c7QUFFSCxNQUFNLE9BQU8seUJBQXlCO0lBSXBDLFlBQVksT0FBd0I7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBVSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUksQ0FBQyxlQUF3QyxFQUFFLE9BQWdCO1FBQ3BFLE1BQU0sS0FBSyxHQUFHLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xFLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sSUFBSSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDOzhHQWhCVSx5QkFBeUI7a0hBQXpCLHlCQUF5QixjQURiLE1BQU07OzJGQUNsQix5QkFBeUI7a0JBRHJDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOztBQW9CaEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUJBQXVCO0lBS2xDLFlBQVksT0FBdUM7UUFIbkMscUJBQWdCLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUN2Qyx1QkFBa0IsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBR3ZELE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RSxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLEdBQUcsSUFBSSxLQUFLLEVBQVU7YUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ3pGLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUMvRixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZSwgSXRlcmFibGVDaGFuZ2VzLCBJdGVyYWJsZURpZmZlciwgSXRlcmFibGVEaWZmZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7ybVXb3JrYmVuY2hMYXlvdXR9IGZyb20gJy4uL2xheW91dC/JtXdvcmtiZW5jaC1sYXlvdXQnO1xuaW1wb3J0IHtVcmxUcmVlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtSb3V0ZXJVdGlsc30gZnJvbSAnLi9yb3V0ZXIudXRpbCc7XG5pbXBvcnQge1ZpZXdJZH0gZnJvbSAnLi4vdmlldy93b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5cbi8qKlxuICogU3RhdGVmdWwgZGlmZmVyIHRvIGNvbXB1dGUgdmlldyBvdXRsZXRzLlxuICpcbiAqIFVzZSB0aGlzIGRpZmZlciB0byByZWdpc3Rlci91bnJlZ2lzdGVyIHZpZXcgYXV4aWxpYXJ5IHJvdXRlcy5cbiAqXG4gKiBCZWNhdXNlIHRoZSBsYXlvdXQgaXMgbm90IGF2YWlsYWJsZSBkdXJpbmcgaW5pdGlhbCBuYXZpZ2F0aW9uIGFuZCBlbXB0eS1wYXRoIHZpZXdzIGRvIG5vdCBoYXZlXG4gKiBhbiBvdXRsZXQgaW4gdGhlIFVSTCwgdGhpcyBkaWZmZXIgdXNlcyBib3RoLCBvdXRsZXRzIGluIHRoZSBVUkwgYW5kIHZpZXdzIGluIHRoZSBsYXlvdXQuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaFZpZXdPdXRsZXREaWZmZXIge1xuXG4gIHByaXZhdGUgX2RpZmZlcjogSXRlcmFibGVEaWZmZXI8Vmlld0lkPjtcblxuICBjb25zdHJ1Y3RvcihkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMpIHtcbiAgICB0aGlzLl9kaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZTxWaWV3SWQ+KCk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgZGlmZmVyZW5jZXMgc2luY2UgbGFzdCB0aW1lIHtAbGluayBXb3JrYmVuY2hWaWV3T3V0bGV0RGlmZmVyI2RpZmZ9IHdhcyBpbnZva2VkLlxuICAgKi9cbiAgcHVibGljIGRpZmYod29ya2JlbmNoTGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCB8IG51bGwsIHVybFRyZWU6IFVybFRyZWUpOiBXb3JrYmVuY2hWaWV3T3V0bGV0RGlmZiB7XG4gICAgY29uc3Qgdmlld3MgPSB3b3JrYmVuY2hMYXlvdXQ/LnZpZXdzKCkubWFwKHZpZXcgPT4gdmlldy5pZCkgPz8gW107XG4gICAgY29uc3Qgdmlld091dGxldHMgPSBSb3V0ZXJVdGlscy5wYXJzZVZpZXdPdXRsZXRzKHVybFRyZWUpLmtleXMoKTtcbiAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5fZGlmZmVyLmRpZmYobmV3IFNldChbLi4udmlld091dGxldHMsIC4uLnZpZXdzXSkpO1xuICAgIHJldHVybiBuZXcgV29ya2JlbmNoVmlld091dGxldERpZmYoY2hhbmdlcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBMaXN0cyB0aGUgdmlldyBvdXRsZXRzIGFkZGVkL3JlbW92ZWQgaW4gdGhlIGN1cnJlbnQgbmF2aWdhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaFZpZXdPdXRsZXREaWZmIHtcblxuICBwdWJsaWMgcmVhZG9ubHkgYWRkZWRWaWV3T3V0bGV0cyA9IG5ldyBBcnJheTxWaWV3SWQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSByZW1vdmVkVmlld091dGxldHMgPSBuZXcgQXJyYXk8Vmlld0lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKGNoYW5nZXM6IEl0ZXJhYmxlQ2hhbmdlczxWaWV3SWQ+IHwgbnVsbCkge1xuICAgIGNoYW5nZXM/LmZvckVhY2hBZGRlZEl0ZW0oKHtpdGVtfSkgPT4gdGhpcy5hZGRlZFZpZXdPdXRsZXRzLnB1c2goaXRlbSkpO1xuICAgIGNoYW5nZXM/LmZvckVhY2hSZW1vdmVkSXRlbSgoe2l0ZW19KSA9PiB0aGlzLnJlbW92ZWRWaWV3T3V0bGV0cy5wdXNoKGl0ZW0pKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtuZXcgQXJyYXk8c3RyaW5nPigpXG4gICAgICAuY29uY2F0KHRoaXMuYWRkZWRWaWV3T3V0bGV0cy5sZW5ndGggPyBgYWRkZWRWaWV3T3V0bGV0cz1bJHt0aGlzLmFkZGVkVmlld091dGxldHN9XWAgOiBbXSlcbiAgICAgIC5jb25jYXQodGhpcy5yZW1vdmVkVmlld091dGxldHMubGVuZ3RoID8gYHJlbW92ZWRWaWV3T3V0bGV0cz1bJHt0aGlzLnJlbW92ZWRWaWV3T3V0bGV0c31dYCA6IFtdKVxuICAgICAgLmpvaW4oJywgJyl9YDtcbiAgfVxufVxuIl19
|
|
@@ -266,7 +266,7 @@ function createNavigationFromCommands(commands, extras) {
|
|
|
266
266
|
* Creates navigation extras with workbench navigation instructions.
|
|
267
267
|
*/
|
|
268
268
|
function createNavigationExtras(layout, extras) {
|
|
269
|
-
const { workbenchGrid, mainAreaGrid } = layout.serialize();
|
|
269
|
+
const { workbenchGrid, mainAreaGrid } = layout.serialize({ excludeViewMarkedForRemoval: true });
|
|
270
270
|
return {
|
|
271
271
|
...extras,
|
|
272
272
|
// Instruct the Angular router to process the navigation even if the URL does not change, e.g., when changing the workbench grid which is not contained in the URL.
|
|
@@ -311,4 +311,4 @@ function computeNavigationCommands(previousViewOutlets, nextViewOutlets) {
|
|
|
311
311
|
// Add view commands to the 'outlets' property to be interpreted by the Angular router.
|
|
312
312
|
return commands.size ? [{ outlets: Object.fromEntries(commands) }] : [];
|
|
313
313
|
}
|
|
314
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiybV3b3JrYmVuY2gtcm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9yb3V0aW5nL8m1d29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE9BQU8sRUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQVksTUFBTSxFQUFFLHFCQUFxQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFNUUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUcxQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQU0vQyxrQkFBa0I7QUFFbEIsTUFBTSxPQUFPLGdCQUFnQjtJQVMzQixZQUFvQixPQUFlLEVBQ2YsdUJBQStDLEVBQy9DLHNCQUE2QyxFQUM3QyxTQUFtQixFQUNuQixPQUFlLEVBQ2YsS0FBYTtRQUxiLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXdCO1FBQy9DLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUFDN0MsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsVUFBSyxHQUFMLEtBQUss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QyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELGdDQUFnQzthQUMzQixJQUFJLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFFLEVBQUUsRUFBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRSxDQUFDLEVBQUUsQ0FBQztZQUNqSyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRSxDQUFDLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCx1RkFBdUY7SUFDdkYsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDeEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIsIFVybFNlZ21lbnQsIFVybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1dvcmtiZW5jaFJvdXRlcn0gZnJvbSAnLi93b3JrYmVuY2gtcm91dGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtEZWZpbmVkLCBPYnNlcnZhYmxlc30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5pbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSwgcnVuSW5JbmplY3Rpb25Db250ZXh0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0U2VydmljZX0gZnJvbSAnLi4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQuc2VydmljZSc7XG5pbXBvcnQge01BSU5fQVJFQV9MQVlPVVRfUVVFUllfUEFSQU19IGZyb20gJy4uL3dvcmtiZW5jaC5jb25zdGFudHMnO1xuaW1wb3J0IHtTSU5HTEVfTkFWSUdBVElPTl9FWEVDVVRPUn0gZnJvbSAnLi4vZXhlY3V0b3Ivc2luZ2xlLXRhc2stZXhlY3V0b3InO1xuaW1wb3J0IHtmaXJzdFZhbHVlRnJvbX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1dvcmtiZW5jaE5hdmlnYXRpb25hbFN0YXRlc30gZnJvbSAnLi93b3JrYmVuY2gtbmF2aWdhdGlvbmFsLXN0YXRlcyc7XG5pbXBvcnQge8m1V29ya2JlbmNoTGF5b3V0fSBmcm9tICcuLi9sYXlvdXQvybV3b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7Um91dGVyVXRpbHN9IGZyb20gJy4vcm91dGVyLnV0aWwnO1xuaW1wb3J0IHtDb21tYW5kcywgVmlld091dGxldHMsIFdvcmtiZW5jaE5hdmlnYXRpb25Db250ZXh0LCBXb3JrYmVuY2hOYXZpZ2F0aW9uRXh0cmFzfSBmcm9tICcuL3JvdXRpbmcubW9kZWwnO1xuaW1wb3J0IHtWaWV3SWR9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtVcmxTZWdtZW50TWF0Y2hlcn0gZnJvbSAnLi91cmwtc2VnbWVudC1tYXRjaGVyJztcbmltcG9ydCB7T2JqZWN0c30gZnJvbSAnLi4vY29tbW9uL29iamVjdHMudXRpbCc7XG5pbXBvcnQge1dvcmtiZW5jaFZpZXdSZWdpc3RyeX0gZnJvbSAnLi4vdmlldy93b3JrYmVuY2gtdmlldy5yZWdpc3RyeSc7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2luZyc7XG5pbXBvcnQge0NhbkNsb3NlfSBmcm9tICcuLi93b3JrYmVuY2gubW9kZWwnO1xuaW1wb3J0IHtVVUlEfSBmcm9tICcuLi9jb21tb24vdXVpZC51dGlsJztcblxuLyoqIEBpbmhlcml0RG9jICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyDJtVdvcmtiZW5jaFJvdXRlciBpbXBsZW1lbnRzIFdvcmtiZW5jaFJvdXRlciB7XG5cbiAgcHJpdmF0ZSBfc2luZ2xlTmF2aWdhdGlvbkV4ZWN1dG9yID0gaW5qZWN0KFNJTkdMRV9OQVZJR0FUSU9OX0VYRUNVVE9SKTtcblxuICAvKipcbiAgICogSG9sZHMgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbmFsIGNvbnRleHQgZHVyaW5nIGEgd29ya2JlbmNoIG5hdmlnYXRpb24sIG9yIGBudWxsYCBpZiBubyBuYXZpZ2F0aW9uIGlzIGluIHByb2dyZXNzLlxuICAgKi9cbiAgcHJpdmF0ZSBfY3VycmVudE5hdmlnYXRpb25Db250ZXh0OiBXb3JrYmVuY2hOYXZpZ2F0aW9uQ29udGV4dCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hMYXlvdXRTZXJ2aWNlOiBXb3JrYmVuY2hMYXlvdXRTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hWaWV3UmVnaXN0cnk6IFdvcmtiZW5jaFZpZXdSZWdpc3RyeSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICAgICAgICBwcml2YXRlIF9sb2dnZXI6IExvZ2dlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfem9uZTogTmdab25lKSB7XG4gICAgLy8gSW5zdHJ1Y3QgdGhlIEFuZ3VsYXIgcm91dGVyIHRvIHByb2Nlc3MgbmF2aWdhdGlvbnMgdGhhdCBkbyBub3QgY2hhbmdlIHRoZSBjdXJyZW50IFVSTCwgaS5lLiwgd2hlbiBvbmx5IHVwZGF0aW5nIG5hdmlnYXRpb24gc3RhdGUuXG4gICAgLy8gRm9yIGV4YW1wbGUsIHRoZSB3b3JrYmVuY2ggZ3JpZCBpcyBwYXNzZWQgdG8gdGhlIG5hdmlnYXRpb24gYXMgc3RhdGUsIG5vdCBhcyBhIHF1ZXJ5IHBhcmFtZXRlci4gV2l0aG91dCB0aGlzIGZsYWcgc2V0LCBjaGFuZ2VzIHRvXG4gICAgLy8gdGhlIHdvcmtiZW5jaCBncmlkIHdvdWxkIG5vdCBiZSBhZGRlZCB0byB0aGUgYnJvd3NpbmcgaGlzdG9yeSBzdGFjay5cbiAgICAvLyBBbHRob3VnaCB0aGUgYG9uU2FtZVVybE5hdmlnYXRpb25gIGZsYWcgY2FuIGJlIHNldCBwZXIgbmF2aWdhdGlvbiB2aWEgdGhlIG5hdmlnYXRpb24gZXh0cmFzLCB0aGlzIGlzIG5vdCBzdWZmaWNpZW50IGJlY2F1c2UgdGhlXG4gICAgLy8gQW5ndWxhciByb3V0ZXIgaWdub3JlcyBpdCB3aGVuIG5hdmlnYXRpbmcgYmFjayBhbmQgZm9ydGggaW4gdGhlIGJyb3dzaW5nIGhpc3RvcnkuXG4gICAgLy8gU2VlIEFuZ3VsYXIgcm91dGVyLnRzI3NldFVwTG9jYXRpb25DaGFuZ2VMaXN0ZW5lciBhbmQgcm91dGVyLnRzI25hdmlnYXRlVG9TeW5jV2l0aEJyb3dzZXJcbiAgICB0aGlzLl9yb3V0ZXIub25TYW1lVXJsTmF2aWdhdGlvbiA9ICdyZWxvYWQnO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBuYXZpZ2F0ZShjb21tYW5kczogQ29tbWFuZHMsIGV4dHJhcz86IFdvcmtiZW5jaE5hdmlnYXRpb25FeHRyYXMpOiBQcm9taXNlPGJvb2xlYW4+O1xuICBwdWJsaWMgbmF2aWdhdGUobmF2aWdhdGVGbjogybVOYXZpZ2F0ZUZuLCBleHRyYXM/OiBPbWl0PE5hdmlnYXRpb25FeHRyYXMsICdyZWxhdGl2ZVRvJyB8ICdzdGF0ZSc+KTogUHJvbWlzZTxib29sZWFuPjtcbiAgcHVibGljIG5hdmlnYXRlKGNvbW1hbmRzT3JOYXZpZ2F0ZUZuOiBDb21tYW5kcyB8IMm1TmF2aWdhdGVGbiwgZXh0cmFzPzogV29ya2JlbmNoTmF2aWdhdGlvbkV4dHJhcyB8IE9taXQ8TmF2aWdhdGlvbkV4dHJhcywgJ3JlbGF0aXZlVG8nIHwgJ3N0YXRlJz4pOiBQcm9taXNlPGJvb2xlYW4+O1xuICBwdWJsaWMgbmF2aWdhdGUoY29tbWFuZHNPck5hdmlnYXRlRm46IENvbW1hbmRzIHwgybVOYXZpZ2F0ZUZuLCBleHRyYXM/OiBXb3JrYmVuY2hOYXZpZ2F0aW9uRXh0cmFzIHwgT21pdDxOYXZpZ2F0aW9uRXh0cmFzLCAncmVsYXRpdmVUbycgfCAnc3RhdGUnPik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIEVuc3VyZSB0byBydW4gaW4gQW5ndWxhciB6b25lLlxuICAgIGlmICghTmdab25lLmlzSW5Bbmd1bGFyWm9uZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fem9uZS5ydW4oKCkgPT4gdGhpcy5uYXZpZ2F0ZShjb21tYW5kc09yTmF2aWdhdGVGbiwgZXh0cmFzKSk7XG4gICAgfVxuXG4gICAgY29uc3QgbmF2aWdhdGVGbiA9IHR5cGVvZiBjb21tYW5kc09yTmF2aWdhdGVGbiA9PT0gJ2Z1bmN0aW9uJyA/IGNvbW1hbmRzT3JOYXZpZ2F0ZUZuIDogY3JlYXRlTmF2aWdhdGlvbkZyb21Db21tYW5kcyhjb21tYW5kc09yTmF2aWdhdGVGbiwgZXh0cmFzID8/IHt9KTtcblxuICAgIC8vIFNlcmlhbGl6ZSBuYXZpZ2F0aW9uIHJlcXVlc3RzIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIHdoZW4gbW9kaWZ5aW5nIHRoZSBjdXJyZW50bHkgYWN0aXZlIHdvcmtiZW5jaCBsYXlvdXQuXG4gICAgcmV0dXJuIHRoaXMuX3NpbmdsZU5hdmlnYXRpb25FeGVjdXRvci5zdWJtaXQoYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gV2FpdCB1bnRpbCB0aGUgaW5pdGlhbCBsYXlvdXQgaXMgYXZhaWxhYmxlLCBpLmUuLCBhZnRlciBjb21wbGV0aW9uIG9mIEFuZ3VsYXIncyBpbml0aWFsIG5hdmlnYXRpb24uXG4gICAgICAvLyBPdGhlcndpc2UsIHRoaXMgbmF2aWdhdGlvbiB3b3VsZCBvdmVycmlkZSB0aGUgaW5pdGlhbCBsYXlvdXQgYXMgZ2l2ZW4gaW4gdGhlIFVSTC5cbiAgICAgIGlmICghdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy53YWl0Rm9ySW5pdGlhbExheW91dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBMZXQgdGhlIG5hdmlnYXRvciBjb21wdXRlIHRoZSBuZXcgd29ya2JlbmNoIGxheW91dC5cbiAgICAgIGNvbnN0IGN1cnJlbnRMYXlvdXQgPSB0aGlzLl93b3JrYmVuY2hMYXlvdXRTZXJ2aWNlLmxheW91dCE7XG4gICAgICBsZXQgbmV3TGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCB8IG51bGwgPSBhd2FpdCBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5faW5qZWN0b3IsICgpID0+IG5hdmlnYXRlRm4oY3VycmVudExheW91dCkpIGFzIMm1V29ya2JlbmNoTGF5b3V0O1xuICAgICAgaWYgKCFuZXdMYXlvdXQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbW92ZSB2aWV3cyBtYXJrZWQgZm9yIHJlbW92YWwsIGludm9raW5nIGBDYW5DbG9zZWAgZ3VhcmQgaWYgaW1wbGVtZW50ZWQuXG4gICAgICBuZXdMYXlvdXQgPSBhd2FpdCBuZXdMYXlvdXQucmVtb3ZlVmlld3NNYXJrZWRGb3JSZW1vdmFsKHZpZXdVaWQgPT4gdGhpcy5jYW5DbG9zZVZpZXcodmlld1VpZCkpO1xuXG4gICAgICAvLyBDcmVhdGUgZXh0cmFzIHdpdGggd29ya2JlbmNoIG5hdmlnYXRpb24gaW5zdHJ1Y3Rpb25zLlxuICAgICAgZXh0cmFzID0gY3JlYXRlTmF2aWdhdGlvbkV4dHJhcyhuZXdMYXlvdXQsIGV4dHJhcyk7XG5cbiAgICAgIC8vIENyZWF0ZSB0aGUgbmV3IFVSTCB0cmVlLlxuICAgICAgY29uc3QgY29tbWFuZHM6IENvbW1hbmRzID0gY29tcHV0ZU5hdmlnYXRpb25Db21tYW5kcyhjdXJyZW50TGF5b3V0LnZpZXdPdXRsZXRzKCksIG5ld0xheW91dC52aWV3T3V0bGV0cygpKTtcbiAgICAgIGNvbnN0IHVybFRyZWUgPSB0aGlzLl9yb3V0ZXIuY3JlYXRlVXJsVHJlZShjb21tYW5kcywgZXh0cmFzKTtcblxuICAgICAgLy8gUGVyZm9ybSB0aGUgbmF2aWdhdGlvbi5cbiAgICAgIGlmICghKGF3YWl0IHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybFRyZWUsIGV4dHJhcykpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gQmxvY2sgc3Vic2VxdWVudCBuYXZpZ2F0aW9uKHMpIHVudGlsIEFuZ3VsYXIgaGFzIGZsdXNoZWQgdGhlIGNoYW5nZWQgbGF5b3V0IHRvIHRoZSBET00uXG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl96b25lLm9uU3RhYmxlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIGNoYW5nZXMgdG8gdGhlIGN1cnJlbnQgd29ya2JlbmNoIGxheW91dC5cbiAgICpcbiAgICogVW5saWtlIHtAbGluayBuYXZpZ2F0ZX0sIGRvZXMgbm90IHBlcmZvcm0gdGhlIG5hdmlnYXRpb24gYnV0IHJldHVybnMgdGhlIFVSTCB0cmVlIGluc3RlYWQuXG4gICAqXG4gICAqIFRoZSByb3V0ZXIgd2lsbCBpbnZva2UgdGhlIGNhbGxiYWNrIGFuZCBwYXNzIHRoZSBjdXJyZW50IGxheW91dCBmb3IgbW9kaWZpY2F0aW9uLiBUaGUgY2FsbGJhY2sgY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gICAqXG4gICAqIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBhZGRzIGEgcGFydCB0byB0aGUgbGVmdCBvZiB0aGUgbWFpbiBhcmVhLCBpbnNlcnRzIGEgdmlldyBhbmQgbmF2aWdhdGVzIGl0LlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBpbmplY3QoV29ya2JlbmNoUm91dGVyKS5jcmVhdGVVcmxUcmVlKGxheW91dCA9PiBsYXlvdXRcbiAgICogICAuYWRkUGFydCgnbGVmdCcsIHtyZWxhdGl2ZVRvOiBNQUlOX0FSRUEsIGFsaWduOiAnbGVmdCd9KVxuICAgKiAgIC5hZGRWaWV3KCduYXZpZ2F0b3InLCB7cGFydElkOiAnbGVmdCd9KVxuICAgKiAgIC5uYXZpZ2F0ZVZpZXcoJ25hdmlnYXRvcicsIFsncGF0aC90by92aWV3J10pXG4gICAqICAgLmFjdGl2YXRlVmlldygnbmF2aWdhdG9yJyksXG4gICAqICk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gb25OYXZpZ2F0ZSAtIFNwZWNpZmllcyB0aGUgY2FsbGJhY2sgdG8gbW9kaWZ5IHRoZSBsYXlvdXQuXG4gICAqIEBwYXJhbSBleHRyYXMgLSBDb250cm9scyBob3cgdG8gcGVyZm9ybSB0aGUgbmF2aWdhdGlvbi5cbiAgICogQHNlZSBOYXZpZ2F0ZUZuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY3JlYXRlVXJsVHJlZShvbk5hdmlnYXRlOiAobGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCkgPT4gUHJvbWlzZTzJtVdvcmtiZW5jaExheW91dCB8IG51bGw+IHwgybVXb3JrYmVuY2hMYXlvdXQgfCBudWxsLCBleHRyYXM/OiBPbWl0PE5hdmlnYXRpb25FeHRyYXMsICdyZWxhdGl2ZVRvJyB8ICdzdGF0ZSc+KTogUHJvbWlzZTxVcmxUcmVlIHwgbnVsbD4ge1xuICAgIC8vIEVuc3VyZSB0byBydW4gaW4gQW5ndWxhciB6b25lLlxuICAgIGlmICghTmdab25lLmlzSW5Bbmd1bGFyWm9uZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fem9uZS5ydW4oKCkgPT4gdGhpcy5jcmVhdGVVcmxUcmVlKG9uTmF2aWdhdGUsIGV4dHJhcykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zaW5nbGVOYXZpZ2F0aW9uRXhlY3V0b3Iuc3VibWl0KGFzeW5jICgpID0+IHtcbiAgICAgIC8vIFdhaXQgdW50aWwgdGhlIGluaXRpYWwgbGF5b3V0IGlzIGF2YWlsYWJsZSwgaS5lLiwgYWZ0ZXIgY29tcGxldGlvbiBvZiBBbmd1bGFyJ3MgaW5pdGlhbCBuYXZpZ2F0aW9uLlxuICAgICAgLy8gT3RoZXJ3aXNlLCB3b3VsZCBvdmVycmlkZSB0aGUgaW5pdGlhbCBsYXlvdXQgYXMgZ2l2ZW4gaW4gdGhlIFVSTC5cbiAgICAgIGlmICghdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy53YWl0Rm9ySW5pdGlhbExheW91dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBMZXQgdGhlIG5hdmlnYXRvciBjb21wdXRlIHRoZSBuZXcgd29ya2JlbmNoIGxheW91dC5cbiAgICAgIGNvbnN0IGN1cnJlbnRMYXlvdXQgPSB0aGlzLl93b3JrYmVuY2hMYXlvdXRTZXJ2aWNlLmxheW91dCE7XG4gICAgICBsZXQgbmV3TGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCB8IG51bGwgPSBhd2FpdCBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5faW5qZWN0b3IsICgpID0+IG9uTmF2aWdhdGUoY3VycmVudExheW91dCkpO1xuICAgICAgaWYgKCFuZXdMYXlvdXQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbW92ZSB2aWV3cyBtYXJrZWQgZm9yIHJlbW92YWwuXG4gICAgICBuZXdMYXlvdXQgPSBhd2FpdCBuZXdMYXlvdXQucmVtb3ZlVmlld3NNYXJrZWRGb3JSZW1vdmFsKCk7XG5cbiAgICAgIC8vIENyZWF0ZSBleHRyYXMgd2l0aCB3b3JrYmVuY2ggbmF2aWdhdGlvbiBpbnN0cnVjdGlvbnMuXG4gICAgICBleHRyYXMgPSBjcmVhdGVOYXZpZ2F0aW9uRXh0cmFzKG5ld0xheW91dCwgZXh0cmFzKTtcblxuICAgICAgLy8gQ3JlYXRlIHRoZSBuZXcgVVJMIHRyZWUuXG4gICAgICBjb25zdCBjb21tYW5kczogQ29tbWFuZHMgPSBjb21wdXRlTmF2aWdhdGlvbkNvbW1hbmRzKGN1cnJlbnRMYXlvdXQudmlld091dGxldHMoKSwgbmV3TGF5b3V0LnZpZXdPdXRsZXRzKCkpO1xuICAgICAgcmV0dXJuIHRoaXMuX3JvdXRlci5jcmVhdGVVcmxUcmVlKGNvbW1hbmRzLCBleHRyYXMpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY2lkZXMgaWYgZ2l2ZW4gdmlldyBjYW4gYmUgY2xvc2VkLCBpbnZva2luZyBgQ2FuQ2xvc2VgIGd1YXJkIGlmIGltcGxlbWVudGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBjYW5DbG9zZVZpZXcodmlld1VpZDogVVVJRCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHZpZXcgPSB0aGlzLl93b3JrYmVuY2hWaWV3UmVnaXN0cnkudmlld3MuZmluZCh2aWV3ID0+IHZpZXcudWlkID09PSB2aWV3VWlkKTtcbiAgICBpZiAoIXZpZXcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoIXZpZXcuY2xvc2FibGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUZXN0IGlmIHRoZSB2aWV3IGltcGxlbWVudHMgYENhbkNsb3NlYCBndWFyZC5cbiAgICBjb25zdCBjb21wb25lbnQgPSB2aWV3LmdldENvbXBvbmVudCgpIGFzIENhbkNsb3NlIHwgbnVsbDtcbiAgICBpZiAodHlwZW9mIGNvbXBvbmVudD8uY2FuQ2xvc2UgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIEludm9rZSBgQ2FuQ2xvc2VgIGd1YXJkIHRvIGRlY2lkZSBpZiB0byBjbG9zZSB0aGUgdmlldy5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FuQ2xvc2UgPSBydW5JbkluamVjdGlvbkNvbnRleHQodmlldy5nZXRDb21wb25lbnRJbmplY3RvcigpISwgKCkgPT4gY29tcG9uZW50LmNhbkNsb3NlKCkpO1xuICAgICAgcmV0dXJuIGF3YWl0IGZpcnN0VmFsdWVGcm9tKE9ic2VydmFibGVzLmNvZXJjZShjYW5DbG9zZSksIHtkZWZhdWx0VmFsdWU6IHRydWV9KTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYFVuaGFuZGxlZCBlcnJvciB3aGlsZSBpbnZva2luZyAnQ2FuQ2xvc2UnIGd1YXJkIG9mIHZpZXcgJyR7dmlldy5pZH0nLmAsIGVycm9yKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHdvcmtiZW5jaCBuYXZpZ2F0aW9uLCB3aGVuIGJlaW5nIGludm9rZWQgZHVyaW5nIG5hdmlnYXRpb24sIG9yIHRocm93cyBhbiBlcnJvciBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3VycmVudE5hdmlnYXRpb25Db250ZXh0KCk6IFdvcmtiZW5jaE5hdmlnYXRpb25Db250ZXh0IHtcbiAgICBpZiAoIXRoaXMuX2N1cnJlbnROYXZpZ2F0aW9uQ29udGV4dCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1tOYXZpZ2F0ZUVycm9yXSBOYXZpZ2F0aW9uIGNvbnRleHQgbm90IGF2YWlsYWJsZSBiZWNhdXNlIG5vIG5hdmlnYXRpb24gaXMgaW4gcHJvZ3Jlc3MuJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50TmF2aWdhdGlvbkNvbnRleHQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBuYXZpZ2F0aW9uYWwgY29udGV4dHVhbCBkYXRhLlxuICAgKi9cbiAgcHVibGljIHNldEN1cnJlbnROYXZpZ2F0aW9uQ29udGV4dChjb250ZXh0OiBXb3JrYmVuY2hOYXZpZ2F0aW9uQ29udGV4dCB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLl9jdXJyZW50TmF2aWdhdGlvbkNvbnRleHQgPSBjb250ZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIEJsb2NrcyB1bnRpbCB0aGUgaW5pdGlhbCBsYXlvdXQgaXMgYXZhaWxhYmxlLCBpLmUuIGFmdGVyIGNvbXBsZXRpb24gb2YgQW5ndWxhcidzIGluaXRpYWwgbmF2aWdhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgd2FpdEZvckluaXRpYWxMYXlvdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQkKTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuYXZpZ2F0aW9uIHRvIG5hdmlnYXRlIHZpZXcocykgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFycmF5IG9mIGNvbW1hbmRzIGFuZCBleHRyYXMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZU5hdmlnYXRpb25Gcm9tQ29tbWFuZHMoY29tbWFuZHM6IENvbW1hbmRzLCBleHRyYXM6IFdvcmtiZW5jaE5hdmlnYXRpb25FeHRyYXMpOiDJtU5hdmlnYXRlRm4ge1xuICByZXR1cm4gKGxheW91dDogybVXb3JrYmVuY2hMYXlvdXQpOiDJtVdvcmtiZW5jaExheW91dCB8IG51bGwgPT4ge1xuICAgIGlmIChleHRyYXMuY2xvc2UpIHtcbiAgICAgIGlmIChleHRyYXMudGFyZ2V0KSB7XG4gICAgICAgIGlmIChjb21tYW5kcy5sZW5ndGggfHwgZXh0cmFzLmhpbnQgfHwgZXh0cmFzLnBhcnRJZCB8fCBleHRyYXMucmVsYXRpdmVUbykge1xuICAgICAgICAgIHRocm93IEVycm9yKCdbTmF2aWdhdGVFcnJvcl0gQ29tbWFuZHMsIGhpbnQsIHBhcnQgb3IgcmVsYXRpdmVUbyBtdXN0IG5vdCBiZSBzZXQgd2hlbiBjbG9zaW5nIGEgdmlldyBieSBpZC4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGF5b3V0LnJlbW92ZVZpZXcoZXh0cmFzLnRhcmdldCk7XG4gICAgICB9XG4gICAgICBjb25zdCB1cmxTZWdtZW50cyA9IFJvdXRlclV0aWxzLmNvbW1hbmRzVG9TZWdtZW50cyhjb21tYW5kcywge3JlbGF0aXZlVG86IGV4dHJhcy5yZWxhdGl2ZVRvfSk7XG4gICAgICByZXR1cm4gbGF5b3V0XG4gICAgICAgIC52aWV3cyh7XG4gICAgICAgICAgcGFydElkOiBleHRyYXMucGFydElkLFxuICAgICAgICAgIHNlZ21lbnRzOiBuZXcgVXJsU2VnbWVudE1hdGNoZXIodXJsU2VnbWVudHMsIHttYXRjaE1hdHJpeFBhcmFtczogZmFsc2UsIG1hdGNoV2lsZGNhcmRQYXRoOiB0cnVlfSksXG4gICAgICAgICAgbmF2aWdhdGlvbkhpbnQ6IGV4dHJhcy5oaW50ID8/IG51bGwsXG4gICAgICAgIH0pXG4gICAgICAgIC5yZWR1Y2UoKGxheW91dCwgdmlldykgPT4gbGF5b3V0LnJlbW92ZVZpZXcodmlldy5pZCksIGxheW91dCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc3dpdGNoIChleHRyYXMudGFyZ2V0ID8/ICdhdXRvJykge1xuICAgICAgICBjYXNlICdibGFuayc6IHtcbiAgICAgICAgICByZXR1cm4gYWRkVmlldyhsYXlvdXQuY29tcHV0ZU5leHRWaWV3SWQoKSwgbGF5b3V0KTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdhdXRvJzoge1xuICAgICAgICAgIGNvbnN0IHVybFNlZ21lbnRzID0gUm91dGVyVXRpbHMuY29tbWFuZHNUb1NlZ21lbnRzKGNvbW1hbmRzLCB7cmVsYXRpdmVUbzogZXh0cmFzLnJlbGF0aXZlVG99KTtcbiAgICAgICAgICBjb25zdCB2aWV3cyA9IGxheW91dC52aWV3cyh7XG4gICAgICAgICAgICBwYXJ0SWQ6IGV4dHJhcy5wYXJ0SWQsXG4gICAgICAgICAgICBzZWdtZW50czogbmV3IFVybFNlZ21lbnRNYXRjaGVyKHVybFNlZ21lbnRzLCB7bWF0Y2hNYXRyaXhQYXJhbXM6IGZhbHNlLCBtYXRjaFdpbGRjYXJkUGF0aDogZmFsc2V9KSxcbiAgICAgICAgICAgIG5hdmlnYXRpb25IaW50OiBleHRyYXMuaGludCA/PyBudWxsLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICh2aWV3cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB2aWV3cy5yZWR1Y2UoKGxheW91dCwgdmlldykgPT4gdXBkYXRlVmlldyh2aWV3LmlkLCBsYXlvdXQpLCBsYXlvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhZGRWaWV3KGxheW91dC5jb21wdXRlTmV4dFZpZXdJZCgpLCBsYXlvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgY29uc3Qgdmlld0lkID0gZXh0cmFzLnRhcmdldCE7XG4gICAgICAgICAgaWYgKGxheW91dC5oYXNWaWV3KHZpZXdJZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB1cGRhdGVWaWV3KHZpZXdJZCwgbGF5b3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYWRkVmlldyh2aWV3SWQsIGxheW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBBZGRzIHRoZSBzcGVjaWZpZWQgdmlldyB0byB0aGUgbGF5b3V0LlxuICAgKi9cbiAgZnVuY3Rpb24gYWRkVmlldyh2aWV3SWQ6IHN0cmluZywgbGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCk6IMm1V29ya2JlbmNoTGF5b3V0IHtcbiAgICAvLyBEZWZhdWx0IHRvIHRoZSBhY3RpdmUgcGFydCBpZiBub3Qgc3BlY2lmaWVkIG9yIG5vdCBpbiB0aGUgbGF5b3V0LCB3aXRoIHRoZSBhY3RpdmUgcGFydCBvZiB0aGUgbWFpbiBhcmVhIHRha2luZyBwcmVjZWRlbmNlLlxuICAgIGNvbnN0IHBhcnRJZCA9ICgoKTogc3RyaW5nID0+IHtcbiAgICAgIGlmIChleHRyYXMucGFydElkICYmIGxheW91dC5oYXNQYXJ0KGV4dHJhcy5wYXJ0SWQpKSB7XG4gICAgICAgIHJldHVybiBleHRyYXMucGFydElkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxheW91dC5hY3RpdmVQYXJ0KHtncmlkOiAnbWFpbkFyZWEnfSk/LmlkID8/IGxheW91dC5hY3RpdmVQYXJ0KHtncmlkOiAnd29ya2JlbmNoJ30pLmlkO1xuICAgIH0pKCk7XG5cbiAgICByZXR1cm4gbGF5b3V0XG4gICAgICAuYWRkVmlldyh2aWV3SWQsIHtcbiAgICAgICAgcGFydElkOiBwYXJ0SWQsXG4gICAgICAgIHBvc2l0aW9uOiBleHRyYXMucG9zaXRpb24gPz8gJ2FmdGVyLWFjdGl2ZS12aWV3JyxcbiAgICAgICAgYWN0aXZhdGVWaWV3OiBleHRyYXMuYWN0aXZhdGUgPz8gdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAubmF2aWdhdGVWaWV3KHZpZXdJZCwgY29tbWFuZHMsIHtcbiAgICAgICAgcmVsYXRpdmVUbzogZXh0cmFzLnJlbGF0aXZlVG8sXG4gICAgICAgIGhpbnQ6IGV4dHJhcy5oaW50LFxuICAgICAgICBjc3NDbGFzczogZXh0cmFzLmNzc0NsYXNzLFxuICAgICAgICBzdGF0ZTogZXh0cmFzLnN0YXRlLFxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgc3BlY2lmaWVkIHZpZXcuXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVWaWV3KHZpZXdJZDogc3RyaW5nLCBsYXlvdXQ6IMm1V29ya2JlbmNoTGF5b3V0KTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIGlmIChleHRyYXMuYWN0aXZhdGUgPz8gdHJ1ZSkge1xuICAgICAgbGF5b3V0ID0gbGF5b3V0LmFjdGl2YXRlVmlldyh2aWV3SWQpO1xuICAgIH1cblxuICAgIHJldHVybiBsYXlvdXQubmF2aWdhdGVWaWV3KHZpZXdJZCwgY29tbWFuZHMsIHtcbiAgICAgIHJlbGF0aXZlVG86IGV4dHJhcy5yZWxhdGl2ZVRvLFxuICAgICAgaGludDogZXh0cmFzLmhpbnQsXG4gICAgICBjc3NDbGFzczogZXh0cmFzLmNzc0NsYXNzLFxuICAgICAgc3RhdGU6IGV4dHJhcy5zdGF0ZSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgbmF2aWdhdGlvbiBleHRyYXMgd2l0aCB3b3JrYmVuY2ggbmF2aWdhdGlvbiBpbnN0cnVjdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZU5hdmlnYXRpb25FeHRyYXMobGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCwgZXh0cmFzPzogT21pdDxOYXZpZ2F0aW9uRXh0cmFzLCAncmVsYXRpdmVUbycgfCAnc3RhdGUnPik6IE5hdmlnYXRpb25FeHRyYXMge1xuICBjb25zdCB7d29ya2JlbmNoR3JpZCwgbWFpbkFyZWFHcmlkfSA9IGxheW91dC5zZXJpYWxpemUoKTtcblxuICByZXR1cm4ge1xuICAgIC4uLmV4dHJhcyxcbiAgICAvLyBJbnN0cnVjdCB0aGUgQW5ndWxhciByb3V0ZXIgdG8gcHJvY2VzcyB0aGUgbmF2aWdhdGlvbiBldmVuIGlmIHRoZSBVUkwgZG9lcyBub3QgY2hhbmdlLCBlLmcuLCB3aGVuIGNoYW5naW5nIHRoZSB3b3JrYmVuY2ggZ3JpZCB3aGljaCBpcyBub3QgY29udGFpbmVkIGluIHRoZSBVUkwuXG4gICAgb25TYW1lVXJsTmF2aWdhdGlvbjogJ3JlbG9hZCcsXG4gICAgLy8gVW5zZXQgYHJlbGF0aXZlVG9gIGJlY2F1c2UgY29tbWFuZHMgYXJlIGFscmVhZHkgbm9ybWFsaXplZCB0byB0aGVpciBhYnNvbHV0ZSBmb3JtLlxuICAgIHJlbGF0aXZlVG86IG51bGwsXG4gICAgLy8gQXNzb2NpYXRlIHdvcmtiZW5jaC1zcGVjaWZpYyBzdGF0ZSB3aXRoIHRoZSBuYXZpZ2F0aW9uLlxuICAgIHN0YXRlOiBXb3JrYmVuY2hOYXZpZ2F0aW9uYWxTdGF0ZXMuY3JlYXRlKHtcbiAgICAgIHdvcmtiZW5jaEdyaWQ6IHdvcmtiZW5jaEdyaWQsXG4gICAgICBtYXhpbWl6ZWQ6IGxheW91dC5tYXhpbWl6ZWQsXG4gICAgICB2aWV3U3RhdGVzOiBsYXlvdXQudmlld1N0YXRlcygpLFxuICAgIH0pLFxuICAgIC8vIEFkZCB0aGUgbWFpbiBhcmVhIGFzIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICBxdWVyeVBhcmFtczogey4uLmV4dHJhcz8ucXVlcnlQYXJhbXMsIFtNQUlOX0FSRUFfTEFZT1VUX1FVRVJZX1BBUkFNXTogbWFpbkFyZWFHcmlkfSxcbiAgICAvLyBNZXJnZSB3aXRoIGV4aXN0aW5nIHF1ZXJ5IHBhcmFtcyB1bmxlc3Mgc3BlY2lmaWVkIGFuIGV4cGxpY2l0IHN0cmF0ZWd5LCBlLmcuLCBmb3IgbWlncmF0aW5nIGFuIG91dGRhdGVkIGxheW91dCBVUkwuXG4gICAgLy8gTm90ZSB0aGF0IGBudWxsYCBpcyBhIHZhbGlkIHN0cmF0ZWd5IGZvciBjbGVhcmluZyBleGlzdGluZyBxdWVyeSBwYXJhbXMsIHNvIGRvIG5vdCB1c2UgdGhlIG51bGxpc2ggY29hbGVzY2luZyBvcGVyYXRvciAoPz8pLlxuICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6IERlZmluZWQub3JFbHNlKGV4dHJhcz8ucXVlcnlQYXJhbXNIYW5kbGluZywgJ21lcmdlJyksXG4gIH07XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgY29tbWFuZHMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBBbmd1bGFyIHJvdXRlciB0byBuYXZpZ2F0ZSB2aWV3IG91dGxldHMgYW5kIHRvIHJlbW92ZSB2aWV3IG91dGxldHMgb2YgcmVtb3ZlZCB2aWV3cy5cbiAqL1xuZnVuY3Rpb24gY29tcHV0ZU5hdmlnYXRpb25Db21tYW5kcyhwcmV2aW91c1ZpZXdPdXRsZXRzOiBWaWV3T3V0bGV0cywgbmV4dFZpZXdPdXRsZXRzOiBWaWV3T3V0bGV0cyk6IFt7b3V0bGV0czoge1tvdXRsZXQ6IFZpZXdJZF06IENvbW1hbmRzIHwgbnVsbH19XSB8IFtdIHtcbiAgY29uc3QgcHJldmlvdXNWaWV3T3V0bGV0TWFwID0gbmV3IE1hcDxWaWV3SWQsIFVybFNlZ21lbnRbXT4oT2JqZWN0cy5lbnRyaWVzKHByZXZpb3VzVmlld091dGxldHMpKTtcbiAgY29uc3QgbmV4dFZpZXdPdXRsZXRNYXAgPSBuZXcgTWFwPFZpZXdJZCwgVXJsU2VnbWVudFtdPihPYmplY3RzLmVudHJpZXMobmV4dFZpZXdPdXRsZXRzKSk7XG5cbiAgY29uc3QgY29tbWFuZHMgPSBuZXcgTWFwPFZpZXdJZCwgQ29tbWFuZHMgfCBudWxsPigpO1xuICBjb25zdCB2aWV3SWRzID0gbmV3IFNldDxWaWV3SWQ+KFsuLi5wcmV2aW91c1ZpZXdPdXRsZXRNYXAua2V5cygpLCAuLi5uZXh0Vmlld091dGxldE1hcC5rZXlzKCldKTtcblxuICB2aWV3SWRzLmZvckVhY2godmlld0lkID0+IHtcbiAgICAvLyBUZXN0IGlmIHRoZSB2aWV3IHdhcyBhZGRlZCB0byB0aGUgbGF5b3V0LlxuICAgIGlmICghcHJldmlvdXNWaWV3T3V0bGV0TWFwLmhhcyh2aWV3SWQpKSB7XG4gICAgICBjb21tYW5kcy5zZXQodmlld0lkLCBSb3V0ZXJVdGlscy5zZWdtZW50c1RvQ29tbWFuZHMobmV4dFZpZXdPdXRsZXRNYXAuZ2V0KHZpZXdJZCkhKSk7XG4gICAgfVxuICAgIC8vIFRlc3QgaWYgdGhlIHZpZXcgd2FzIHJlbW92ZWQgZnJvbSB0aGUgbGF5b3V0LlxuICAgIGVsc2UgaWYgKCFuZXh0Vmlld091dGxldE1hcC5oYXModmlld0lkKSkge1xuICAgICAgY29tbWFuZHMuc2V0KHZpZXdJZCwgbnVsbCk7XG4gICAgfVxuICAgIC8vIFRlc3QgaWYgdGhlIHZpZXcgd2FzIHVwZGF0ZWQuXG4gICAgZWxzZSBpZiAoIW5ldyBVcmxTZWdtZW50TWF0Y2hlcihwcmV2aW91c1ZpZXdPdXRsZXRNYXAuZ2V0KHZpZXdJZCkhLCB7bWF0Y2hNYXRyaXhQYXJhbXM6IHRydWUsIG1hdGNoV2lsZGNhcmRQYXRoOiBmYWxzZX0pLm1hdGNoZXMobmV4dFZpZXdPdXRsZXRNYXAuZ2V0KHZpZXdJZCkhKSkge1xuICAgICAgY29tbWFuZHMuc2V0KHZpZXdJZCwgUm91dGVyVXRpbHMuc2VnbWVudHNUb0NvbW1hbmRzKG5leHRWaWV3T3V0bGV0TWFwLmdldCh2aWV3SWQpISkpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gQWRkIHZpZXcgY29tbWFuZHMgdG8gdGhlICdvdXRsZXRzJyBwcm9wZXJ0eSB0byBiZSBpbnRlcnByZXRlZCBieSB0aGUgQW5ndWxhciByb3V0ZXIuXG4gIHJldHVybiBjb21tYW5kcy5zaXplID8gW3tvdXRsZXRzOiBPYmplY3QuZnJvbUVudHJpZXMoY29tbWFuZHMpfV0gOiBbXTtcbn1cblxuLyoqXG4gKiBAaW5oZXJpdERvY1xuICogQHNlZSBOYXZpZ2F0ZUZuXG4gKi9cbmV4cG9ydCB0eXBlIMm1TmF2aWdhdGVGbiA9IChsYXlvdXQ6IMm1V29ya2JlbmNoTGF5b3V0KSA9PiBQcm9taXNlPMm1V29ya2JlbmNoTGF5b3V0IHwgbnVsbD4gfCDJtVdvcmtiZW5jaExheW91dCB8IG51bGw7XG4iXX0=
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiybV3b3JrYmVuY2gtcm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9yb3V0aW5nL8m1d29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE9BQU8sRUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQVksTUFBTSxFQUFFLHFCQUFxQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFNUUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUcxQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQUsvQyxrQkFBa0I7QUFFbEIsTUFBTSxPQUFPLGdCQUFnQjtJQVMzQixZQUFvQixPQUFlLEVBQ2YsdUJBQStDLEVBQy9DLHNCQUE2QyxFQUM3QyxTQUFtQixFQUNuQixPQUFlLEVBQ2YsS0FBYTtRQUxiLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXdCO1FBQy9DLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUFDN0MsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsVUFBSyxHQUFMLEtBQUss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QUUsQ0FBQztZQUN4QyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsZ0NBQWdDO2FBQzNCLElBQUksQ0FBQyxJQUFJLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUUsRUFBRSxFQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2pLLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILHVGQUF1RjtJQUN2RixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge05hdmlnYXRpb25FeHRyYXMsIFJvdXRlciwgVXJsU2VnbWVudCwgVXJsVHJlZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7V29ya2JlbmNoUm91dGVyfSBmcm9tICcuL3dvcmtiZW5jaC1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQge0RlZmluZWQsIE9ic2VydmFibGVzfSBmcm9tICdAc2Npb24vdG9vbGtpdC91dGlsJztcbmltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgTmdab25lLCBydW5JbkluamVjdGlvbkNvbnRleHR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRTZXJ2aWNlfSBmcm9tICcuLi9sYXlvdXQvd29ya2JlbmNoLWxheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7TUFJTl9BUkVBX0xBWU9VVF9RVUVSWV9QQVJBTX0gZnJvbSAnLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5pbXBvcnQge1NJTkdMRV9OQVZJR0FUSU9OX0VYRUNVVE9SfSBmcm9tICcuLi9leGVjdXRvci9zaW5nbGUtdGFzay1leGVjdXRvcic7XG5pbXBvcnQge2ZpcnN0VmFsdWVGcm9tfSBmcm9tICdyeGpzJztcbmltcG9ydCB7V29ya2JlbmNoTmF2aWdhdGlvbmFsU3RhdGVzfSBmcm9tICcuL3dvcmtiZW5jaC1uYXZpZ2F0aW9uYWwtc3RhdGVzJztcbmltcG9ydCB7ybVXb3JrYmVuY2hMYXlvdXR9IGZyb20gJy4uL2xheW91dC/JtXdvcmtiZW5jaC1sYXlvdXQnO1xuaW1wb3J0IHtSb3V0ZXJVdGlsc30gZnJvbSAnLi9yb3V0ZXIudXRpbCc7XG5pbXBvcnQge0NvbW1hbmRzLCBWaWV3T3V0bGV0cywgV29ya2JlbmNoTmF2aWdhdGlvbkNvbnRleHQsIFdvcmtiZW5jaE5hdmlnYXRpb25FeHRyYXN9IGZyb20gJy4vcm91dGluZy5tb2RlbCc7XG5pbXBvcnQge1ZpZXdJZH0gZnJvbSAnLi4vdmlldy93b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5pbXBvcnQge1VybFNlZ21lbnRNYXRjaGVyfSBmcm9tICcuL3VybC1zZWdtZW50LW1hdGNoZXInO1xuaW1wb3J0IHtPYmplY3RzfSBmcm9tICcuLi9jb21tb24vb2JqZWN0cy51dGlsJztcbmltcG9ydCB7V29ya2JlbmNoVmlld1JlZ2lzdHJ5fSBmcm9tICcuLi92aWV3L3dvcmtiZW5jaC12aWV3LnJlZ2lzdHJ5JztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi9sb2dnaW5nJztcbmltcG9ydCB7Q2FuQ2xvc2V9IGZyb20gJy4uL3dvcmtiZW5jaC5tb2RlbCc7XG5cbi8qKiBAaW5oZXJpdERvYyAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgybVXb3JrYmVuY2hSb3V0ZXIgaW1wbGVtZW50cyBXb3JrYmVuY2hSb3V0ZXIge1xuXG4gIHByaXZhdGUgX3NpbmdsZU5hdmlnYXRpb25FeGVjdXRvciA9IGluamVjdChTSU5HTEVfTkFWSUdBVElPTl9FWEVDVVRPUik7XG5cbiAgLyoqXG4gICAqIEhvbGRzIHRoZSBjdXJyZW50IG5hdmlnYXRpb25hbCBjb250ZXh0IGR1cmluZyBhIHdvcmtiZW5jaCBuYXZpZ2F0aW9uLCBvciBgbnVsbGAgaWYgbm8gbmF2aWdhdGlvbiBpcyBpbiBwcm9ncmVzcy5cbiAgICovXG4gIHByaXZhdGUgX2N1cnJlbnROYXZpZ2F0aW9uQ29udGV4dDogV29ya2JlbmNoTmF2aWdhdGlvbkNvbnRleHQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfd29ya2JlbmNoTGF5b3V0U2VydmljZTogV29ya2JlbmNoTGF5b3V0U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfd29ya2JlbmNoVmlld1JlZ2lzdHJ5OiBXb3JrYmVuY2hWaWV3UmVnaXN0cnksXG4gICAgICAgICAgICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9nZ2VyOiBMb2dnZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSkge1xuICAgIC8vIEluc3RydWN0IHRoZSBBbmd1bGFyIHJvdXRlciB0byBwcm9jZXNzIG5hdmlnYXRpb25zIHRoYXQgZG8gbm90IGNoYW5nZSB0aGUgY3VycmVudCBVUkwsIGkuZS4sIHdoZW4gb25seSB1cGRhdGluZyBuYXZpZ2F0aW9uIHN0YXRlLlxuICAgIC8vIEZvciBleGFtcGxlLCB0aGUgd29ya2JlbmNoIGdyaWQgaXMgcGFzc2VkIHRvIHRoZSBuYXZpZ2F0aW9uIGFzIHN0YXRlLCBub3QgYXMgYSBxdWVyeSBwYXJhbWV0ZXIuIFdpdGhvdXQgdGhpcyBmbGFnIHNldCwgY2hhbmdlcyB0b1xuICAgIC8vIHRoZSB3b3JrYmVuY2ggZ3JpZCB3b3VsZCBub3QgYmUgYWRkZWQgdG8gdGhlIGJyb3dzaW5nIGhpc3Rvcnkgc3RhY2suXG4gICAgLy8gQWx0aG91Z2ggdGhlIGBvblNhbWVVcmxOYXZpZ2F0aW9uYCBmbGFnIGNhbiBiZSBzZXQgcGVyIG5hdmlnYXRpb24gdmlhIHRoZSBuYXZpZ2F0aW9uIGV4dHJhcywgdGhpcyBpcyBub3Qgc3VmZmljaWVudCBiZWNhdXNlIHRoZVxuICAgIC8vIEFuZ3VsYXIgcm91dGVyIGlnbm9yZXMgaXQgd2hlbiBuYXZpZ2F0aW5nIGJhY2sgYW5kIGZvcnRoIGluIHRoZSBicm93c2luZyBoaXN0b3J5LlxuICAgIC8vIFNlZSBBbmd1bGFyIHJvdXRlci50cyNzZXRVcExvY2F0aW9uQ2hhbmdlTGlzdGVuZXIgYW5kIHJvdXRlci50cyNuYXZpZ2F0ZVRvU3luY1dpdGhCcm93c2VyXG4gICAgdGhpcy5fcm91dGVyLm9uU2FtZVVybE5hdmlnYXRpb24gPSAncmVsb2FkJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgbmF2aWdhdGUoY29tbWFuZHM6IENvbW1hbmRzLCBleHRyYXM/OiBXb3JrYmVuY2hOYXZpZ2F0aW9uRXh0cmFzKTogUHJvbWlzZTxib29sZWFuPjtcbiAgcHVibGljIG5hdmlnYXRlKG5hdmlnYXRlRm46IMm1TmF2aWdhdGVGbiwgZXh0cmFzPzogT21pdDxOYXZpZ2F0aW9uRXh0cmFzLCAncmVsYXRpdmVUbycgfCAnc3RhdGUnPik6IFByb21pc2U8Ym9vbGVhbj47XG4gIHB1YmxpYyBuYXZpZ2F0ZShjb21tYW5kc09yTmF2aWdhdGVGbjogQ29tbWFuZHMgfCDJtU5hdmlnYXRlRm4sIGV4dHJhcz86IFdvcmtiZW5jaE5hdmlnYXRpb25FeHRyYXMgfCBPbWl0PE5hdmlnYXRpb25FeHRyYXMsICdyZWxhdGl2ZVRvJyB8ICdzdGF0ZSc+KTogUHJvbWlzZTxib29sZWFuPjtcbiAgcHVibGljIG5hdmlnYXRlKGNvbW1hbmRzT3JOYXZpZ2F0ZUZuOiBDb21tYW5kcyB8IMm1TmF2aWdhdGVGbiwgZXh0cmFzPzogV29ya2JlbmNoTmF2aWdhdGlvbkV4dHJhcyB8IE9taXQ8TmF2aWdhdGlvbkV4dHJhcywgJ3JlbGF0aXZlVG8nIHwgJ3N0YXRlJz4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBFbnN1cmUgdG8gcnVuIGluIEFuZ3VsYXIgem9uZS5cbiAgICBpZiAoIU5nWm9uZS5pc0luQW5ndWxhclpvbmUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3pvbmUucnVuKCgpID0+IHRoaXMubmF2aWdhdGUoY29tbWFuZHNPck5hdmlnYXRlRm4sIGV4dHJhcykpO1xuICAgIH1cblxuICAgIGNvbnN0IG5hdmlnYXRlRm4gPSB0eXBlb2YgY29tbWFuZHNPck5hdmlnYXRlRm4gPT09ICdmdW5jdGlvbicgPyBjb21tYW5kc09yTmF2aWdhdGVGbiA6IGNyZWF0ZU5hdmlnYXRpb25Gcm9tQ29tbWFuZHMoY29tbWFuZHNPck5hdmlnYXRlRm4sIGV4dHJhcyA/PyB7fSk7XG5cbiAgICAvLyBTZXJpYWxpemUgbmF2aWdhdGlvbiByZXF1ZXN0cyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyB3aGVuIG1vZGlmeWluZyB0aGUgY3VycmVudGx5IGFjdGl2ZSB3b3JrYmVuY2ggbGF5b3V0LlxuICAgIHJldHVybiB0aGlzLl9zaW5nbGVOYXZpZ2F0aW9uRXhlY3V0b3Iuc3VibWl0KGFzeW5jICgpID0+IHtcbiAgICAgIC8vIFdhaXQgdW50aWwgdGhlIGluaXRpYWwgbGF5b3V0IGlzIGF2YWlsYWJsZSwgaS5lLiwgYWZ0ZXIgY29tcGxldGlvbiBvZiBBbmd1bGFyJ3MgaW5pdGlhbCBuYXZpZ2F0aW9uLlxuICAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIG5hdmlnYXRpb24gd291bGQgb3ZlcnJpZGUgdGhlIGluaXRpYWwgbGF5b3V0IGFzIGdpdmVuIGluIHRoZSBVUkwuXG4gICAgICBpZiAoIXRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2UubGF5b3V0KSB7XG4gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvckluaXRpYWxMYXlvdXQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gTGV0IHRoZSBuYXZpZ2F0b3IgY29tcHV0ZSB0aGUgbmV3IHdvcmtiZW5jaCBsYXlvdXQuXG4gICAgICBjb25zdCBjdXJyZW50TGF5b3V0ID0gdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQhO1xuICAgICAgbGV0IG5ld0xheW91dDogybVXb3JrYmVuY2hMYXlvdXQgfCBudWxsID0gYXdhaXQgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuX2luamVjdG9yLCAoKSA9PiBuYXZpZ2F0ZUZuKGN1cnJlbnRMYXlvdXQpKSBhcyDJtVdvcmtiZW5jaExheW91dDtcbiAgICAgIGlmICghbmV3TGF5b3V0KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBSZW1vdmUgdmlld3MgbWFya2VkIGZvciByZW1vdmFsLCBpbnZva2luZyBgQ2FuQ2xvc2VgIGd1YXJkIGlmIGltcGxlbWVudGVkLlxuICAgICAgbmV3TGF5b3V0ID0gYXdhaXQgbmV3TGF5b3V0LnJlbW92ZVZpZXdzTWFya2VkRm9yUmVtb3ZhbCh2aWV3VWlkID0+IHRoaXMuY2FuQ2xvc2VWaWV3KHZpZXdVaWQpKTtcblxuICAgICAgLy8gQ3JlYXRlIGV4dHJhcyB3aXRoIHdvcmtiZW5jaCBuYXZpZ2F0aW9uIGluc3RydWN0aW9ucy5cbiAgICAgIGV4dHJhcyA9IGNyZWF0ZU5hdmlnYXRpb25FeHRyYXMobmV3TGF5b3V0LCBleHRyYXMpO1xuXG4gICAgICAvLyBDcmVhdGUgdGhlIG5ldyBVUkwgdHJlZS5cbiAgICAgIGNvbnN0IGNvbW1hbmRzOiBDb21tYW5kcyA9IGNvbXB1dGVOYXZpZ2F0aW9uQ29tbWFuZHMoY3VycmVudExheW91dC52aWV3T3V0bGV0cygpLCBuZXdMYXlvdXQudmlld091dGxldHMoKSk7XG4gICAgICBjb25zdCB1cmxUcmVlID0gdGhpcy5fcm91dGVyLmNyZWF0ZVVybFRyZWUoY29tbWFuZHMsIGV4dHJhcyk7XG5cbiAgICAgIC8vIFBlcmZvcm0gdGhlIG5hdmlnYXRpb24uXG4gICAgICBpZiAoIShhd2FpdCB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmxUcmVlLCBleHRyYXMpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIEJsb2NrIHN1YnNlcXVlbnQgbmF2aWdhdGlvbihzKSB1bnRpbCBBbmd1bGFyIGhhcyBmbHVzaGVkIHRoZSBjaGFuZ2VkIGxheW91dCB0byB0aGUgRE9NLlxuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fem9uZS5vblN0YWJsZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyBjaGFuZ2VzIHRvIHRoZSBjdXJyZW50IHdvcmtiZW5jaCBsYXlvdXQuXG4gICAqXG4gICAqIFVubGlrZSB7QGxpbmsgbmF2aWdhdGV9LCBkb2VzIG5vdCBwZXJmb3JtIHRoZSBuYXZpZ2F0aW9uIGJ1dCByZXR1cm5zIHRoZSBVUkwgdHJlZSBpbnN0ZWFkLlxuICAgKlxuICAgKiBUaGUgcm91dGVyIHdpbGwgaW52b2tlIHRoZSBjYWxsYmFjayBhbmQgcGFzcyB0aGUgY3VycmVudCBsYXlvdXQgZm9yIG1vZGlmaWNhdGlvbi4gVGhlIGNhbGxiYWNrIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgYWRkcyBhIHBhcnQgdG8gdGhlIGxlZnQgb2YgdGhlIG1haW4gYXJlYSwgaW5zZXJ0cyBhIHZpZXcgYW5kIG5hdmlnYXRlcyBpdC5cbiAgICpcbiAgICogYGBgdHNcbiAgICogaW5qZWN0KFdvcmtiZW5jaFJvdXRlcikuY3JlYXRlVXJsVHJlZShsYXlvdXQgPT4gbGF5b3V0XG4gICAqICAgLmFkZFBhcnQoJ2xlZnQnLCB7cmVsYXRpdmVUbzogTUFJTl9BUkVBLCBhbGlnbjogJ2xlZnQnfSlcbiAgICogICAuYWRkVmlldygnbmF2aWdhdG9yJywge3BhcnRJZDogJ2xlZnQnfSlcbiAgICogICAubmF2aWdhdGVWaWV3KCduYXZpZ2F0b3InLCBbJ3BhdGgvdG8vdmlldyddKVxuICAgKiAgIC5hY3RpdmF0ZVZpZXcoJ25hdmlnYXRvcicpLFxuICAgKiApO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIG9uTmF2aWdhdGUgLSBTcGVjaWZpZXMgdGhlIGNhbGxiYWNrIHRvIG1vZGlmeSB0aGUgbGF5b3V0LlxuICAgKiBAcGFyYW0gZXh0cmFzIC0gQ29udHJvbHMgaG93IHRvIHBlcmZvcm0gdGhlIG5hdmlnYXRpb24uXG4gICAqIEBzZWUgTmF2aWdhdGVGblxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVVybFRyZWUob25OYXZpZ2F0ZTogKGxheW91dDogybVXb3JrYmVuY2hMYXlvdXQpID0+IFByb21pc2U8ybVXb3JrYmVuY2hMYXlvdXQgfCBudWxsPiB8IMm1V29ya2JlbmNoTGF5b3V0IHwgbnVsbCwgZXh0cmFzPzogT21pdDxOYXZpZ2F0aW9uRXh0cmFzLCAncmVsYXRpdmVUbycgfCAnc3RhdGUnPik6IFByb21pc2U8VXJsVHJlZSB8IG51bGw+IHtcbiAgICAvLyBFbnN1cmUgdG8gcnVuIGluIEFuZ3VsYXIgem9uZS5cbiAgICBpZiAoIU5nWm9uZS5pc0luQW5ndWxhclpvbmUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3pvbmUucnVuKCgpID0+IHRoaXMuY3JlYXRlVXJsVHJlZShvbk5hdmlnYXRlLCBleHRyYXMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2luZ2xlTmF2aWdhdGlvbkV4ZWN1dG9yLnN1Ym1pdChhc3luYyAoKSA9PiB7XG4gICAgICAvLyBXYWl0IHVudGlsIHRoZSBpbml0aWFsIGxheW91dCBpcyBhdmFpbGFibGUsIGkuZS4sIGFmdGVyIGNvbXBsZXRpb24gb2YgQW5ndWxhcidzIGluaXRpYWwgbmF2aWdhdGlvbi5cbiAgICAgIC8vIE90aGVyd2lzZSwgd291bGQgb3ZlcnJpZGUgdGhlIGluaXRpYWwgbGF5b3V0IGFzIGdpdmVuIGluIHRoZSBVUkwuXG4gICAgICBpZiAoIXRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2UubGF5b3V0KSB7XG4gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvckluaXRpYWxMYXlvdXQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gTGV0IHRoZSBuYXZpZ2F0b3IgY29tcHV0ZSB0aGUgbmV3IHdvcmtiZW5jaCBsYXlvdXQuXG4gICAgICBjb25zdCBjdXJyZW50TGF5b3V0ID0gdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQhO1xuICAgICAgbGV0IG5ld0xheW91dDogybVXb3JrYmVuY2hMYXlvdXQgfCBudWxsID0gYXdhaXQgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuX2luamVjdG9yLCAoKSA9PiBvbk5hdmlnYXRlKGN1cnJlbnRMYXlvdXQpKTtcbiAgICAgIGlmICghbmV3TGF5b3V0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBSZW1vdmUgdmlld3MgbWFya2VkIGZvciByZW1vdmFsLlxuICAgICAgbmV3TGF5b3V0ID0gYXdhaXQgbmV3TGF5b3V0LnJlbW92ZVZpZXdzTWFya2VkRm9yUmVtb3ZhbCgpO1xuXG4gICAgICAvLyBDcmVhdGUgZXh0cmFzIHdpdGggd29ya2JlbmNoIG5hdmlnYXRpb24gaW5zdHJ1Y3Rpb25zLlxuICAgICAgZXh0cmFzID0gY3JlYXRlTmF2aWdhdGlvbkV4dHJhcyhuZXdMYXlvdXQsIGV4dHJhcyk7XG5cbiAgICAgIC8vIENyZWF0ZSB0aGUgbmV3IFVSTCB0cmVlLlxuICAgICAgY29uc3QgY29tbWFuZHM6IENvbW1hbmRzID0gY29tcHV0ZU5hdmlnYXRpb25Db21tYW5kcyhjdXJyZW50TGF5b3V0LnZpZXdPdXRsZXRzKCksIG5ld0xheW91dC52aWV3T3V0bGV0cygpKTtcbiAgICAgIHJldHVybiB0aGlzLl9yb3V0ZXIuY3JlYXRlVXJsVHJlZShjb21tYW5kcywgZXh0cmFzKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNpZGVzIGlmIGdpdmVuIHZpZXcgY2FuIGJlIGNsb3NlZCwgaW52b2tpbmcgYENhbkNsb3NlYCBndWFyZCBpZiBpbXBsZW1lbnRlZC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgY2FuQ2xvc2VWaWV3KHZpZXdVaWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHZpZXcgPSB0aGlzLl93b3JrYmVuY2hWaWV3UmVnaXN0cnkudmlld3MuZmluZCh2aWV3ID0+IHZpZXcudWlkID09PSB2aWV3VWlkKTtcbiAgICBpZiAoIXZpZXcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoIXZpZXcuY2xvc2FibGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUZXN0IGlmIHRoZSB2aWV3IGltcGxlbWVudHMgYENhbkNsb3NlYCBndWFyZC5cbiAgICBjb25zdCBjb21wb25lbnQgPSB2aWV3LmdldENvbXBvbmVudCgpIGFzIENhbkNsb3NlIHwgbnVsbDtcbiAgICBpZiAodHlwZW9mIGNvbXBvbmVudD8uY2FuQ2xvc2UgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIEludm9rZSBgQ2FuQ2xvc2VgIGd1YXJkIHRvIGRlY2lkZSBpZiB0byBjbG9zZSB0aGUgdmlldy5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FuQ2xvc2UgPSBydW5JbkluamVjdGlvbkNvbnRleHQodmlldy5nZXRDb21wb25lbnRJbmplY3RvcigpISwgKCkgPT4gY29tcG9uZW50LmNhbkNsb3NlKCkpO1xuICAgICAgcmV0dXJuIGF3YWl0IGZpcnN0VmFsdWVGcm9tKE9ic2VydmFibGVzLmNvZXJjZShjYW5DbG9zZSksIHtkZWZhdWx0VmFsdWU6IHRydWV9KTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYFVuaGFuZGxlZCBlcnJvciB3aGlsZSBpbnZva2luZyAnQ2FuQ2xvc2UnIGd1YXJkIG9mIHZpZXcgJyR7dmlldy5pZH0nLmAsIGVycm9yKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHdvcmtiZW5jaCBuYXZpZ2F0aW9uLCB3aGVuIGJlaW5nIGludm9rZWQgZHVyaW5nIG5hdmlnYXRpb24sIG9yIHRocm93cyBhbiBlcnJvciBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3VycmVudE5hdmlnYXRpb25Db250ZXh0KCk6IFdvcmtiZW5jaE5hdmlnYXRpb25Db250ZXh0IHtcbiAgICBpZiAoIXRoaXMuX2N1cnJlbnROYXZpZ2F0aW9uQ29udGV4dCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1tOYXZpZ2F0ZUVycm9yXSBOYXZpZ2F0aW9uIGNvbnRleHQgbm90IGF2YWlsYWJsZSBiZWNhdXNlIG5vIG5hdmlnYXRpb24gaXMgaW4gcHJvZ3Jlc3MuJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50TmF2aWdhdGlvbkNvbnRleHQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBuYXZpZ2F0aW9uYWwgY29udGV4dHVhbCBkYXRhLlxuICAgKi9cbiAgcHVibGljIHNldEN1cnJlbnROYXZpZ2F0aW9uQ29udGV4dChjb250ZXh0OiBXb3JrYmVuY2hOYXZpZ2F0aW9uQ29udGV4dCB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLl9jdXJyZW50TmF2aWdhdGlvbkNvbnRleHQgPSBjb250ZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIEJsb2NrcyB1bnRpbCB0aGUgaW5pdGlhbCBsYXlvdXQgaXMgYXZhaWxhYmxlLCBpLmUuIGFmdGVyIGNvbXBsZXRpb24gb2YgQW5ndWxhcidzIGluaXRpYWwgbmF2aWdhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgd2FpdEZvckluaXRpYWxMYXlvdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQkKTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuYXZpZ2F0aW9uIHRvIG5hdmlnYXRlIHZpZXcocykgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFycmF5IG9mIGNvbW1hbmRzIGFuZCBleHRyYXMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZU5hdmlnYXRpb25Gcm9tQ29tbWFuZHMoY29tbWFuZHM6IENvbW1hbmRzLCBleHRyYXM6IFdvcmtiZW5jaE5hdmlnYXRpb25FeHRyYXMpOiDJtU5hdmlnYXRlRm4ge1xuICByZXR1cm4gKGxheW91dDogybVXb3JrYmVuY2hMYXlvdXQpOiDJtVdvcmtiZW5jaExheW91dCB8IG51bGwgPT4ge1xuICAgIGlmIChleHRyYXMuY2xvc2UpIHtcbiAgICAgIGlmIChleHRyYXMudGFyZ2V0KSB7XG4gICAgICAgIGlmIChjb21tYW5kcy5sZW5ndGggfHwgZXh0cmFzLmhpbnQgfHwgZXh0cmFzLnBhcnRJZCB8fCBleHRyYXMucmVsYXRpdmVUbykge1xuICAgICAgICAgIHRocm93IEVycm9yKCdbTmF2aWdhdGVFcnJvcl0gQ29tbWFuZHMsIGhpbnQsIHBhcnQgb3IgcmVsYXRpdmVUbyBtdXN0IG5vdCBiZSBzZXQgd2hlbiBjbG9zaW5nIGEgdmlldyBieSBpZC4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGF5b3V0LnJlbW92ZVZpZXcoZXh0cmFzLnRhcmdldCk7XG4gICAgICB9XG4gICAgICBjb25zdCB1cmxTZWdtZW50cyA9IFJvdXRlclV0aWxzLmNvbW1hbmRzVG9TZWdtZW50cyhjb21tYW5kcywge3JlbGF0aXZlVG86IGV4dHJhcy5yZWxhdGl2ZVRvfSk7XG4gICAgICByZXR1cm4gbGF5b3V0XG4gICAgICAgIC52aWV3cyh7XG4gICAgICAgICAgcGFydElkOiBleHRyYXMucGFydElkLFxuICAgICAgICAgIHNlZ21lbnRzOiBuZXcgVXJsU2VnbWVudE1hdGNoZXIodXJsU2VnbWVudHMsIHttYXRjaE1hdHJpeFBhcmFtczogZmFsc2UsIG1hdGNoV2lsZGNhcmRQYXRoOiB0cnVlfSksXG4gICAgICAgICAgbmF2aWdhdGlvbkhpbnQ6IGV4dHJhcy5oaW50ID8/IG51bGwsXG4gICAgICAgIH0pXG4gICAgICAgIC5yZWR1Y2UoKGxheW91dCwgdmlldykgPT4gbGF5b3V0LnJlbW92ZVZpZXcodmlldy5pZCksIGxheW91dCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc3dpdGNoIChleHRyYXMudGFyZ2V0ID8/ICdhdXRvJykge1xuICAgICAgICBjYXNlICdibGFuayc6IHtcbiAgICAgICAgICByZXR1cm4gYWRkVmlldyhsYXlvdXQuY29tcHV0ZU5leHRWaWV3SWQoKSwgbGF5b3V0KTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdhdXRvJzoge1xuICAgICAgICAgIGNvbnN0IHVybFNlZ21lbnRzID0gUm91dGVyVXRpbHMuY29tbWFuZHNUb1NlZ21lbnRzKGNvbW1hbmRzLCB7cmVsYXRpdmVUbzogZXh0cmFzLnJlbGF0aXZlVG99KTtcbiAgICAgICAgICBjb25zdCB2aWV3cyA9IGxheW91dC52aWV3cyh7XG4gICAgICAgICAgICBwYXJ0SWQ6IGV4dHJhcy5wYXJ0SWQsXG4gICAgICAgICAgICBzZWdtZW50czogbmV3IFVybFNlZ21lbnRNYXRjaGVyKHVybFNlZ21lbnRzLCB7bWF0Y2hNYXRyaXhQYXJhbXM6IGZhbHNlLCBtYXRjaFdpbGRjYXJkUGF0aDogZmFsc2V9KSxcbiAgICAgICAgICAgIG5hdmlnYXRpb25IaW50OiBleHRyYXMuaGludCA/PyBudWxsLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICh2aWV3cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB2aWV3cy5yZWR1Y2UoKGxheW91dCwgdmlldykgPT4gdXBkYXRlVmlldyh2aWV3LmlkLCBsYXlvdXQpLCBsYXlvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhZGRWaWV3KGxheW91dC5jb21wdXRlTmV4dFZpZXdJZCgpLCBsYXlvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgY29uc3Qgdmlld0lkID0gZXh0cmFzLnRhcmdldCE7XG4gICAgICAgICAgaWYgKGxheW91dC5oYXNWaWV3KHZpZXdJZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB1cGRhdGVWaWV3KHZpZXdJZCwgbGF5b3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYWRkVmlldyh2aWV3SWQsIGxheW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBBZGRzIHRoZSBzcGVjaWZpZWQgdmlldyB0byB0aGUgbGF5b3V0LlxuICAgKi9cbiAgZnVuY3Rpb24gYWRkVmlldyh2aWV3SWQ6IHN0cmluZywgbGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCk6IMm1V29ya2JlbmNoTGF5b3V0IHtcbiAgICAvLyBEZWZhdWx0IHRvIHRoZSBhY3RpdmUgcGFydCBpZiBub3Qgc3BlY2lmaWVkIG9yIG5vdCBpbiB0aGUgbGF5b3V0LCB3aXRoIHRoZSBhY3RpdmUgcGFydCBvZiB0aGUgbWFpbiBhcmVhIHRha2luZyBwcmVjZWRlbmNlLlxuICAgIGNvbnN0IHBhcnRJZCA9ICgoKTogc3RyaW5nID0+IHtcbiAgICAgIGlmIChleHRyYXMucGFydElkICYmIGxheW91dC5oYXNQYXJ0KGV4dHJhcy5wYXJ0SWQpKSB7XG4gICAgICAgIHJldHVybiBleHRyYXMucGFydElkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxheW91dC5hY3RpdmVQYXJ0KHtncmlkOiAnbWFpbkFyZWEnfSk/LmlkID8/IGxheW91dC5hY3RpdmVQYXJ0KHtncmlkOiAnd29ya2JlbmNoJ30pLmlkO1xuICAgIH0pKCk7XG5cbiAgICByZXR1cm4gbGF5b3V0XG4gICAgICAuYWRkVmlldyh2aWV3SWQsIHtcbiAgICAgICAgcGFydElkOiBwYXJ0SWQsXG4gICAgICAgIHBvc2l0aW9uOiBleHRyYXMucG9zaXRpb24gPz8gJ2FmdGVyLWFjdGl2ZS12aWV3JyxcbiAgICAgICAgYWN0aXZhdGVWaWV3OiBleHRyYXMuYWN0aXZhdGUgPz8gdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAubmF2aWdhdGVWaWV3KHZpZXdJZCwgY29tbWFuZHMsIHtcbiAgICAgICAgcmVsYXRpdmVUbzogZXh0cmFzLnJlbGF0aXZlVG8sXG4gICAgICAgIGhpbnQ6IGV4dHJhcy5oaW50LFxuICAgICAgICBjc3NDbGFzczogZXh0cmFzLmNzc0NsYXNzLFxuICAgICAgICBzdGF0ZTogZXh0cmFzLnN0YXRlLFxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgc3BlY2lmaWVkIHZpZXcuXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVWaWV3KHZpZXdJZDogc3RyaW5nLCBsYXlvdXQ6IMm1V29ya2JlbmNoTGF5b3V0KTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIGlmIChleHRyYXMuYWN0aXZhdGUgPz8gdHJ1ZSkge1xuICAgICAgbGF5b3V0ID0gbGF5b3V0LmFjdGl2YXRlVmlldyh2aWV3SWQpO1xuICAgIH1cblxuICAgIHJldHVybiBsYXlvdXQubmF2aWdhdGVWaWV3KHZpZXdJZCwgY29tbWFuZHMsIHtcbiAgICAgIHJlbGF0aXZlVG86IGV4dHJhcy5yZWxhdGl2ZVRvLFxuICAgICAgaGludDogZXh0cmFzLmhpbnQsXG4gICAgICBjc3NDbGFzczogZXh0cmFzLmNzc0NsYXNzLFxuICAgICAgc3RhdGU6IGV4dHJhcy5zdGF0ZSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgbmF2aWdhdGlvbiBleHRyYXMgd2l0aCB3b3JrYmVuY2ggbmF2aWdhdGlvbiBpbnN0cnVjdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZU5hdmlnYXRpb25FeHRyYXMobGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCwgZXh0cmFzPzogT21pdDxOYXZpZ2F0aW9uRXh0cmFzLCAncmVsYXRpdmVUbycgfCAnc3RhdGUnPik6IE5hdmlnYXRpb25FeHRyYXMge1xuICBjb25zdCB7d29ya2JlbmNoR3JpZCwgbWFpbkFyZWFHcmlkfSA9IGxheW91dC5zZXJpYWxpemUoe2V4Y2x1ZGVWaWV3TWFya2VkRm9yUmVtb3ZhbDogdHJ1ZX0pO1xuXG4gIHJldHVybiB7XG4gICAgLi4uZXh0cmFzLFxuICAgIC8vIEluc3RydWN0IHRoZSBBbmd1bGFyIHJvdXRlciB0byBwcm9jZXNzIHRoZSBuYXZpZ2F0aW9uIGV2ZW4gaWYgdGhlIFVSTCBkb2VzIG5vdCBjaGFuZ2UsIGUuZy4sIHdoZW4gY2hhbmdpbmcgdGhlIHdvcmtiZW5jaCBncmlkIHdoaWNoIGlzIG5vdCBjb250YWluZWQgaW4gdGhlIFVSTC5cbiAgICBvblNhbWVVcmxOYXZpZ2F0aW9uOiAncmVsb2FkJyxcbiAgICAvLyBVbnNldCBgcmVsYXRpdmVUb2AgYmVjYXVzZSBjb21tYW5kcyBhcmUgYWxyZWFkeSBub3JtYWxpemVkIHRvIHRoZWlyIGFic29sdXRlIGZvcm0uXG4gICAgcmVsYXRpdmVUbzogbnVsbCxcbiAgICAvLyBBc3NvY2lhdGUgd29ya2JlbmNoLXNwZWNpZmljIHN0YXRlIHdpdGggdGhlIG5hdmlnYXRpb24uXG4gICAgc3RhdGU6IFdvcmtiZW5jaE5hdmlnYXRpb25hbFN0YXRlcy5jcmVhdGUoe1xuICAgICAgd29ya2JlbmNoR3JpZDogd29ya2JlbmNoR3JpZCxcbiAgICAgIG1heGltaXplZDogbGF5b3V0Lm1heGltaXplZCxcbiAgICAgIHZpZXdTdGF0ZXM6IGxheW91dC52aWV3U3RhdGVzKCksXG4gICAgfSksXG4gICAgLy8gQWRkIHRoZSBtYWluIGFyZWEgYXMgcXVlcnkgcGFyYW1ldGVyLlxuICAgIHF1ZXJ5UGFyYW1zOiB7Li4uZXh0cmFzPy5xdWVyeVBhcmFtcywgW01BSU5fQVJFQV9MQVlPVVRfUVVFUllfUEFSQU1dOiBtYWluQXJlYUdyaWR9LFxuICAgIC8vIE1lcmdlIHdpdGggZXhpc3RpbmcgcXVlcnkgcGFyYW1zIHVubGVzcyBzcGVjaWZpZWQgYW4gZXhwbGljaXQgc3RyYXRlZ3ksIGUuZy4sIGZvciBtaWdyYXRpbmcgYW4gb3V0ZGF0ZWQgbGF5b3V0IFVSTC5cbiAgICAvLyBOb3RlIHRoYXQgYG51bGxgIGlzIGEgdmFsaWQgc3RyYXRlZ3kgZm9yIGNsZWFyaW5nIGV4aXN0aW5nIHF1ZXJ5IHBhcmFtcywgc28gZG8gbm90IHVzZSB0aGUgbnVsbGlzaCBjb2FsZXNjaW5nIG9wZXJhdG9yICg/PykuXG4gICAgcXVlcnlQYXJhbXNIYW5kbGluZzogRGVmaW5lZC5vckVsc2UoZXh0cmFzPy5xdWVyeVBhcmFtc0hhbmRsaW5nLCAnbWVyZ2UnKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyBjb21tYW5kcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlIEFuZ3VsYXIgcm91dGVyIHRvIG5hdmlnYXRlIHZpZXcgb3V0bGV0cyBhbmQgdG8gcmVtb3ZlIHZpZXcgb3V0bGV0cyBvZiByZW1vdmVkIHZpZXdzLlxuICovXG5mdW5jdGlvbiBjb21wdXRlTmF2aWdhdGlvbkNvbW1hbmRzKHByZXZpb3VzVmlld091dGxldHM6IFZpZXdPdXRsZXRzLCBuZXh0Vmlld091dGxldHM6IFZpZXdPdXRsZXRzKTogW3tvdXRsZXRzOiB7W291dGxldDogVmlld0lkXTogQ29tbWFuZHMgfCBudWxsfX1dIHwgW10ge1xuICBjb25zdCBwcmV2aW91c1ZpZXdPdXRsZXRNYXAgPSBuZXcgTWFwPFZpZXdJZCwgVXJsU2VnbWVudFtdPihPYmplY3RzLmVudHJpZXMocHJldmlvdXNWaWV3T3V0bGV0cykpO1xuICBjb25zdCBuZXh0Vmlld091dGxldE1hcCA9IG5ldyBNYXA8Vmlld0lkLCBVcmxTZWdtZW50W10+KE9iamVjdHMuZW50cmllcyhuZXh0Vmlld091dGxldHMpKTtcblxuICBjb25zdCBjb21tYW5kcyA9IG5ldyBNYXA8Vmlld0lkLCBDb21tYW5kcyB8IG51bGw+KCk7XG4gIGNvbnN0IHZpZXdJZHMgPSBuZXcgU2V0PFZpZXdJZD4oWy4uLnByZXZpb3VzVmlld091dGxldE1hcC5rZXlzKCksIC4uLm5leHRWaWV3T3V0bGV0TWFwLmtleXMoKV0pO1xuXG4gIHZpZXdJZHMuZm9yRWFjaCh2aWV3SWQgPT4ge1xuICAgIC8vIFRlc3QgaWYgdGhlIHZpZXcgd2FzIGFkZGVkIHRvIHRoZSBsYXlvdXQuXG4gICAgaWYgKCFwcmV2aW91c1ZpZXdPdXRsZXRNYXAuaGFzKHZpZXdJZCkpIHtcbiAgICAgIGNvbW1hbmRzLnNldCh2aWV3SWQsIFJvdXRlclV0aWxzLnNlZ21lbnRzVG9Db21tYW5kcyhuZXh0Vmlld091dGxldE1hcC5nZXQodmlld0lkKSEpKTtcbiAgICB9XG4gICAgLy8gVGVzdCBpZiB0aGUgdmlldyB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBsYXlvdXQuXG4gICAgZWxzZSBpZiAoIW5leHRWaWV3T3V0bGV0TWFwLmhhcyh2aWV3SWQpKSB7XG4gICAgICBjb21tYW5kcy5zZXQodmlld0lkLCBudWxsKTtcbiAgICB9XG4gICAgLy8gVGVzdCBpZiB0aGUgdmlldyB3YXMgdXBkYXRlZC5cbiAgICBlbHNlIGlmICghbmV3IFVybFNlZ21lbnRNYXRjaGVyKHByZXZpb3VzVmlld091dGxldE1hcC5nZXQodmlld0lkKSEsIHttYXRjaE1hdHJpeFBhcmFtczogdHJ1ZSwgbWF0Y2hXaWxkY2FyZFBhdGg6IGZhbHNlfSkubWF0Y2hlcyhuZXh0Vmlld091dGxldE1hcC5nZXQodmlld0lkKSEpKSB7XG4gICAgICBjb21tYW5kcy5zZXQodmlld0lkLCBSb3V0ZXJVdGlscy5zZWdtZW50c1RvQ29tbWFuZHMobmV4dFZpZXdPdXRsZXRNYXAuZ2V0KHZpZXdJZCkhKSk7XG4gICAgfVxuICB9KTtcblxuICAvLyBBZGQgdmlldyBjb21tYW5kcyB0byB0aGUgJ291dGxldHMnIHByb3BlcnR5IHRvIGJlIGludGVycHJldGVkIGJ5IHRoZSBBbmd1bGFyIHJvdXRlci5cbiAgcmV0dXJuIGNvbW1hbmRzLnNpemUgPyBbe291dGxldHM6IE9iamVjdC5mcm9tRW50cmllcyhjb21tYW5kcyl9XSA6IFtdO1xufVxuXG4vKipcbiAqIEBpbmhlcml0RG9jXG4gKiBAc2VlIE5hdmlnYXRlRm5cbiAqL1xuZXhwb3J0IHR5cGUgybVOYXZpZ2F0ZUZuID0gKGxheW91dDogybVXb3JrYmVuY2hMYXlvdXQpID0+IFByb21pc2U8ybVXb3JrYmVuY2hMYXlvdXQgfCBudWxsPiB8IMm1V29ya2JlbmNoTGF5b3V0IHwgbnVsbDtcbiJdfQ==
|
|
@@ -5,7 +5,7 @@ import { Defined } from '@scion/toolkit/util';
|
|
|
5
5
|
import { generatePerspectiveWindowName } from '../perspective/workbench-perspective.service';
|
|
6
6
|
import { ANONYMOUS_PERSPECTIVE_ID_PREFIX } from '../workbench.constants';
|
|
7
7
|
import { WORKBENCH_ID } from '../workbench-id';
|
|
8
|
-
import {
|
|
8
|
+
import { UID } from '../common/uid.util';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "../routing/\u0275workbench-router.service";
|
|
11
11
|
import * as i2 from "../layout/\u0275workbench-layout.factory";
|
|
@@ -61,7 +61,7 @@ export class ViewMoveHandler {
|
|
|
61
61
|
await this._workbenchRouter.navigate(layout => {
|
|
62
62
|
const newViewId = event.source.alternativeViewId ?? layout.computeNextViewId();
|
|
63
63
|
if (addToNewPart) {
|
|
64
|
-
const newPartId = event.target.newPart?.id ??
|
|
64
|
+
const newPartId = event.target.newPart?.id ?? UID.randomUID();
|
|
65
65
|
return layout
|
|
66
66
|
.addPart(newPartId, { relativeTo: event.target.elementId, align: coerceAlignProperty(region), ratio: event.target.newPart?.ratio }, { structural: false })
|
|
67
67
|
.addView(newViewId, { partId: newPartId, activateView: true, activatePart: true, cssClass: event.source.classList?.get('layout') })
|
|
@@ -94,7 +94,7 @@ export class ViewMoveHandler {
|
|
|
94
94
|
})
|
|
95
95
|
.navigateView(newViewId, commands, { hint: event.source.navigationHint, cssClass: event.source.classList?.get('navigation') });
|
|
96
96
|
});
|
|
97
|
-
const target = generatePerspectiveWindowName(`${ANONYMOUS_PERSPECTIVE_ID_PREFIX}${
|
|
97
|
+
const target = generatePerspectiveWindowName(`${ANONYMOUS_PERSPECTIVE_ID_PREFIX}${UID.randomUID()}`);
|
|
98
98
|
if (window.open(this._locationStrategy.prepareExternalUrl(this._router.serializeUrl(urlTree)), target)) {
|
|
99
99
|
await this.removeView(event);
|
|
100
100
|
}
|
|
@@ -105,7 +105,7 @@ export class ViewMoveHandler {
|
|
|
105
105
|
async moveView(event) {
|
|
106
106
|
const addToNewPart = !!event.target.region;
|
|
107
107
|
if (addToNewPart) {
|
|
108
|
-
const newPartId = event.target.newPart?.id ??
|
|
108
|
+
const newPartId = event.target.newPart?.id ?? UID.randomUID();
|
|
109
109
|
await this._workbenchRouter.navigate(layout => layout
|
|
110
110
|
.addPart(newPartId, { relativeTo: event.target.elementId, align: coerceAlignProperty(event.target.region), ratio: event.target.newPart?.ratio }, { structural: false })
|
|
111
111
|
.moveView(event.source.viewId, newPartId, { activatePart: true, activateView: true }));
|
|
@@ -142,4 +142,4 @@ function coerceAlignProperty(region) {
|
|
|
142
142
|
throw Error(`[UnsupportedRegionError] Supported regions are 'north', 'east', 'south' or 'west', but is '${region}'.`);
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1tb3ZlLWhhbmRsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3ZpZXcvdmlldy1tb3ZlLWhhbmRsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUtqRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzNGLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFFL0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQUUxQixZQUEwQyxZQUFvQixFQUMxQyxnQkFBa0MsRUFDbEMsdUJBQWdELEVBQ2hELGdCQUFpQyxFQUNqQyxPQUFlLEVBQ2YsaUJBQW1DO1FBTGIsaUJBQVksR0FBWixZQUFZLENBQVE7UUFDMUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDckQsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLHVCQUF1QjtR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QUssQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDO2dCQUMzRyxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsWUFBWSxFQUFFLElBQUk7YUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDO0lBQ0gsQ0FBQzs4R0FoSFUsZUFBZSxrQkFFTixZQUFZO2tIQUZyQixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVOzswQkFHSSxNQUFNOzJCQUFDLFlBQVk7O0FBaUhsQyxTQUFTLG1CQUFtQixDQUFDLE1BQXNEO0lBQ2pGLFFBQVEsTUFBTSxFQUFFLENBQUM7UUFDZixLQUFLLE1BQU07WUFDVCxPQUFPLE1BQU0sQ0FBQztRQUNoQixLQUFLLE1BQU07WUFDVCxPQUFPLE9BQU8sQ0FBQztRQUNqQixLQUFLLE9BQU87WUFDVixPQUFPLEtBQUssQ0FBQztRQUNmLEtBQUssT0FBTztZQUNWLE9BQU8sUUFBUSxDQUFDO1FBQ2xCO1lBQ0UsTUFBTSxLQUFLLENBQUMsOEZBQThGLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDMUgsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1ZpZXdEcmFnU2VydmljZSwgVmlld01vdmVFdmVudH0gZnJvbSAnLi4vdmlldy1kbmQvdmlldy1kcmFnLnNlcnZpY2UnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0xvY2F0aW9uU3RyYXRlZ3l9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge8m1V29ya2JlbmNoUm91dGVyfSBmcm9tICcuLi9yb3V0aW5nL8m1d29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7Um91dGVyVXRpbHN9IGZyb20gJy4uL3JvdXRpbmcvcm91dGVyLnV0aWwnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaExheW91dEZhY3Rvcnl9IGZyb20gJy4uL2xheW91dC/JtXdvcmtiZW5jaC1sYXlvdXQuZmFjdG9yeSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtEZWZpbmVkfSBmcm9tICdAc2Npb24vdG9vbGtpdC91dGlsJztcbmltcG9ydCB7Z2VuZXJhdGVQZXJzcGVjdGl2ZVdpbmRvd05hbWV9IGZyb20gJy4uL3BlcnNwZWN0aXZlL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS5zZXJ2aWNlJztcbmltcG9ydCB7QU5PTllNT1VTX1BFUlNQRUNUSVZFX0lEX1BSRUZJWH0gZnJvbSAnLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5pbXBvcnQge1dPUktCRU5DSF9JRH0gZnJvbSAnLi4vd29ya2JlbmNoLWlkJztcbmltcG9ydCB7cmFuZG9tVVVJRH0gZnJvbSAnLi4vY29tbW9uL3V1aWQudXRpbCc7XG5cbi8qKlxuICogVXBkYXRlcyB0aGUgd29ya2JlbmNoIGxheW91dCB3aGVuIHRoZSB1c2VyIG1vdmVzIGEgdmlldy5cbiAqL1xuQEluamVjdGFibGUoLyogRE8gTk9UIFBST1ZJREUgdmlhICdwcm92aWRlZEluJyBtZXRhZGF0YSBhcyByZWdpc3RlcmVkIHZpYSB3b3JrYmVuY2ggc3RhcnR1cCBob29rLiAqLylcbmV4cG9ydCBjbGFzcyBWaWV3TW92ZUhhbmRsZXIge1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoV09SS0JFTkNIX0lEKSBwcml2YXRlIF93b3JrYmVuY2hJZDogc3RyaW5nLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hSb3V0ZXI6IMm1V29ya2JlbmNoUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hMYXlvdXRGYWN0b3J5OiDJtVdvcmtiZW5jaExheW91dEZhY3RvcnksXG4gICAgICAgICAgICAgIHByaXZhdGUgX3ZpZXdEcmFnU2VydmljZTogVmlld0RyYWdTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9jYXRpb25TdHJhdGVneTogTG9jYXRpb25TdHJhdGVneSkge1xuICAgIHRoaXMuaW5zdGFsbFZpZXdNb3ZlTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5zdGFsbFZpZXdNb3ZlTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fdmlld0RyYWdTZXJ2aWNlLnZpZXdNb3ZlJFxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jIChldmVudDogVmlld01vdmVFdmVudCkgPT4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJ4anMvbm8tYXN5bmMtc3Vic2NyaWJlXG4gICAgICAgIC8vIENoZWNrIGlmIHRoaXMgd29ya2JlbmNoIGluc3RhbmNlIHRha2VzIHBhcnQgaW4gdGhlIHZpZXcgZHJhZyBvcGVyYXRpb24uIElmIG5vdCwgZG8gbm90aGluZy5cbiAgICAgICAgaWYgKGV2ZW50LnNvdXJjZS53b3JrYmVuY2hJZCAhPT0gdGhpcy5fd29ya2JlbmNoSWQgJiYgZXZlbnQudGFyZ2V0LndvcmtiZW5jaElkICE9PSB0aGlzLl93b3JrYmVuY2hJZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNyb3NzV29ya2JlbmNoVmlld0RyYWcgPSAoZXZlbnQuc291cmNlLndvcmtiZW5jaElkICE9PSBldmVudC50YXJnZXQud29ya2JlbmNoSWQpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHRvIHJlbW92ZSB0aGUgdmlldyBmcm9tIHRoaXMgd29ya2JlbmNoIGluc3RhbmNlIGlmIGJlaW5nIG1vdmVkIHRvIGFub3RoZXIgd29ya2JlbmNoIGluc3RhbmNlLlxuICAgICAgICBpZiAoY3Jvc3NXb3JrYmVuY2hWaWV3RHJhZyAmJiBldmVudC5zb3VyY2Uud29ya2JlbmNoSWQgPT09IHRoaXMuX3dvcmtiZW5jaElkKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdG8gYWRkIHRoZSB2aWV3IHRvIGEgbmV3IGJyb3dzZXIgd2luZG93LlxuICAgICAgICAgIGlmIChldmVudC50YXJnZXQud29ya2JlbmNoSWQgPT09ICduZXctd2luZG93Jykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5tb3ZlVmlld1RvTmV3V2luZG93KGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlbW92ZVZpZXcoZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBDaGVjayBpZiB0byBhZGQgdGhlIHZpZXcgdG8gdGhpcyB3b3JrYmVuY2ggaW5zdGFuY2UgaWYgYmVpbmcgbW92ZWQgZnJvbSBhbm90aGVyIHdvcmtiZW5jaCBpbnN0YW5jZSB0byB0aGlzIHdvcmtiZW5jaCBpbnN0YW5jZS5cbiAgICAgICAgZWxzZSBpZiAoY3Jvc3NXb3JrYmVuY2hWaWV3RHJhZyAmJiBldmVudC50YXJnZXQud29ya2JlbmNoSWQgPT09IHRoaXMuX3dvcmtiZW5jaElkKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGRWaWV3KGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBNb3ZlIHRoZSB2aWV3IHdpdGhpbiB0aGUgc2FtZSB3b3JrYmVuY2ggaW5zdGFuY2UuXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGF3YWl0IHRoaXMubW92ZVZpZXcoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYWRkVmlldyhldmVudDogVmlld01vdmVFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlZ2lvbiA9IGV2ZW50LnRhcmdldC5yZWdpb247XG4gICAgY29uc3QgYWRkVG9OZXdQYXJ0ID0gISFyZWdpb247XG4gICAgY29uc3QgY29tbWFuZHMgPSBSb3V0ZXJVdGlscy5zZWdtZW50c1RvQ29tbWFuZHMoZXZlbnQuc291cmNlLnZpZXdVcmxTZWdtZW50cyk7XG5cbiAgICBhd2FpdCB0aGlzLl93b3JrYmVuY2hSb3V0ZXIubmF2aWdhdGUobGF5b3V0ID0+IHtcbiAgICAgIGNvbnN0IG5ld1ZpZXdJZCA9IGV2ZW50LnNvdXJjZS5hbHRlcm5hdGl2ZVZpZXdJZCA/PyBsYXlvdXQuY29tcHV0ZU5leHRWaWV3SWQoKTtcbiAgICAgIGlmIChhZGRUb05ld1BhcnQpIHtcbiAgICAgICAgY29uc3QgbmV3UGFydElkID0gZXZlbnQudGFyZ2V0Lm5ld1BhcnQ/LmlkID8/IHJhbmRvbVVVSUQoKTtcbiAgICAgICAgcmV0dXJuIGxheW91dFxuICAgICAgICAgIC5hZGRQYXJ0KG5ld1BhcnRJZCwge3JlbGF0aXZlVG86IGV2ZW50LnRhcmdldC5lbGVtZW50SWQsIGFsaWduOiBjb2VyY2VBbGlnblByb3BlcnR5KHJlZ2lvbiEpLCByYXRpbzogZXZlbnQudGFyZ2V0Lm5ld1BhcnQ/LnJhdGlvfSwge3N0cnVjdHVyYWw6IGZhbHNlfSlcbiAgICAgICAgICAuYWRkVmlldyhuZXdWaWV3SWQsIHtwYXJ0SWQ6IG5ld1BhcnRJZCwgYWN0aXZhdGVWaWV3OiB0cnVlLCBhY3RpdmF0ZVBhcnQ6IHRydWUsIGNzc0NsYXNzOiBldmVudC5zb3VyY2UuY2xhc3NMaXN0Py5nZXQoJ2xheW91dCcpfSlcbiAgICAgICAgICAubmF2aWdhdGVWaWV3KG5ld1ZpZXdJZCwgY29tbWFuZHMsIHtoaW50OiBldmVudC5zb3VyY2UubmF2aWdhdGlvbkhpbnQsIGNzc0NsYXNzOiBldmVudC5zb3VyY2UuY2xhc3NMaXN0Py5nZXQoJ25hdmlnYXRpb24nKX0pO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBsYXlvdXRcbiAgICAgICAgICAuYWRkVmlldyhuZXdWaWV3SWQsIHtcbiAgICAgICAgICAgIHBhcnRJZDogRGVmaW5lZC5vckVsc2VUaHJvdyhldmVudC50YXJnZXQuZWxlbWVudElkLCAoKSA9PiBFcnJvcihgW1ZpZXdNb3ZlRXJyb3JdIFRhcmdldCBwYXJ0IHJlcXVpcmVkIGZvciByZWdpb24gJ2NlbnRlcicuYCkpLFxuICAgICAgICAgICAgcG9zaXRpb246IGV2ZW50LnRhcmdldC5wb3NpdGlvbiA/PyAnYWZ0ZXItYWN0aXZlLXZpZXcnLFxuICAgICAgICAgICAgY3NzQ2xhc3M6IGV2ZW50LnNvdXJjZS5jbGFzc0xpc3Q/LmdldCgnbGF5b3V0JyksXG4gICAgICAgICAgICBhY3RpdmF0ZVZpZXc6IHRydWUsXG4gICAgICAgICAgICBhY3RpdmF0ZVBhcnQ6IHRydWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAubmF2aWdhdGVWaWV3KG5ld1ZpZXdJZCwgY29tbWFuZHMsIHtoaW50OiBldmVudC5zb3VyY2UubmF2aWdhdGlvbkhpbnQsIGNzc0NsYXNzOiBldmVudC5zb3VyY2UuY2xhc3NMaXN0Py5nZXQoJ25hdmlnYXRpb24nKX0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBtb3ZlVmlld1RvTmV3V2luZG93KGV2ZW50OiBWaWV3TW92ZUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gT3BlbiB0aGUgdmlldyBcInN0YW5kYWxvbmVcIiBpbiBhIGJsYW5rIHdpbmRvdyBpbiBhbiBhbm9ueW1vdXMgcGVyc3BlY3RpdmUuXG4gICAgY29uc3QgdXJsVHJlZSA9IGF3YWl0IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5jcmVhdGVVcmxUcmVlKCgpID0+IHtcbiAgICAgIGNvbnN0IG5ld0xheW91dCA9IHRoaXMuX3dvcmtiZW5jaExheW91dEZhY3RvcnkuY3JlYXRlKCk7XG4gICAgICBjb25zdCBuZXdWaWV3SWQgPSBldmVudC5zb3VyY2UuYWx0ZXJuYXRpdmVWaWV3SWQgPz8gbmV3TGF5b3V0LmNvbXB1dGVOZXh0Vmlld0lkKCk7XG4gICAgICBjb25zdCBjb21tYW5kcyA9IFJvdXRlclV0aWxzLnNlZ21lbnRzVG9Db21tYW5kcyhldmVudC5zb3VyY2Uudmlld1VybFNlZ21lbnRzKTtcbiAgICAgIHJldHVybiBuZXdMYXlvdXRcbiAgICAgICAgLmFkZFZpZXcobmV3Vmlld0lkLCB7XG4gICAgICAgICAgcGFydElkOiBuZXdMYXlvdXQuYWN0aXZlUGFydCh7Z3JpZDogJ21haW5BcmVhJ30pIS5pZCxcbiAgICAgICAgICBhY3RpdmF0ZVZpZXc6IHRydWUsXG4gICAgICAgICAgY3NzQ2xhc3M6IGV2ZW50LnNvdXJjZS5jbGFzc0xpc3Q/LmdldCgnbGF5b3V0JyksXG4gICAgICAgIH0pXG4gICAgICAgIC5uYXZpZ2F0ZVZpZXcobmV3Vmlld0lkLCBjb21tYW5kcywge2hpbnQ6IGV2ZW50LnNvdXJjZS5uYXZpZ2F0aW9uSGludCwgY3NzQ2xhc3M6IGV2ZW50LnNvdXJjZS5jbGFzc0xpc3Q/LmdldCgnbmF2aWdhdGlvbicpfSk7XG4gICAgfSk7XG4gICAgY29uc3QgdGFyZ2V0ID0gZ2VuZXJhdGVQZXJzcGVjdGl2ZVdpbmRvd05hbWUoYCR7QU5PTllNT1VTX1BFUlNQRUNUSVZFX0lEX1BSRUZJWH0ke3JhbmRvbVVVSUQoKX1gKTtcbiAgICBpZiAod2luZG93Lm9wZW4odGhpcy5fbG9jYXRpb25TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwodGhpcy5fcm91dGVyLnNlcmlhbGl6ZVVybCh1cmxUcmVlISkpLCB0YXJnZXQpKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlbW92ZVZpZXcoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVtb3ZlVmlldyhldmVudDogVmlld01vdmVFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5uYXZpZ2F0ZShsYXlvdXQgPT4gbGF5b3V0LnJlbW92ZVZpZXcoZXZlbnQuc291cmNlLnZpZXdJZCwge2ZvcmNlOiB0cnVlfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBtb3ZlVmlldyhldmVudDogVmlld01vdmVFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGFkZFRvTmV3UGFydCA9ICEhZXZlbnQudGFyZ2V0LnJlZ2lvbjtcbiAgICBpZiAoYWRkVG9OZXdQYXJ0KSB7XG4gICAgICBjb25zdCBuZXdQYXJ0SWQgPSBldmVudC50YXJnZXQubmV3UGFydD8uaWQgPz8gcmFuZG9tVVVJRCgpO1xuICAgICAgYXdhaXQgdGhpcy5fd29ya2JlbmNoUm91dGVyLm5hdmlnYXRlKGxheW91dCA9PiBsYXlvdXRcbiAgICAgICAgLmFkZFBhcnQobmV3UGFydElkLCB7cmVsYXRpdmVUbzogZXZlbnQudGFyZ2V0LmVsZW1lbnRJZCwgYWxpZ246IGNvZXJjZUFsaWduUHJvcGVydHkoZXZlbnQudGFyZ2V0LnJlZ2lvbiEpLCByYXRpbzogZXZlbnQudGFyZ2V0Lm5ld1BhcnQ/LnJhdGlvfSwge3N0cnVjdHVyYWw6IGZhbHNlfSlcbiAgICAgICAgLm1vdmVWaWV3KGV2ZW50LnNvdXJjZS52aWV3SWQsIG5ld1BhcnRJZCwge2FjdGl2YXRlUGFydDogdHJ1ZSwgYWN0aXZhdGVWaWV3OiB0cnVlfSksXG4gICAgICApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IHRhcmdldFBhcnRJZCA9IERlZmluZWQub3JFbHNlVGhyb3coZXZlbnQudGFyZ2V0LmVsZW1lbnRJZCwgKCkgPT4gRXJyb3IoYFtWaWV3TW92ZUVycm9yXSBUYXJnZXQgcGFydCByZXF1aXJlZCBmb3IgcmVnaW9uICdjZW50ZXInLmApKTtcbiAgICAgIGF3YWl0IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5uYXZpZ2F0ZShsYXlvdXQgPT4gbGF5b3V0Lm1vdmVWaWV3KGV2ZW50LnNvdXJjZS52aWV3SWQsIHRhcmdldFBhcnRJZCwge1xuICAgICAgICBwb3NpdGlvbjogZXZlbnQudGFyZ2V0LnBvc2l0aW9uID8/IChldmVudC5zb3VyY2UucGFydElkID09PSB0YXJnZXRQYXJ0SWQgPyB1bmRlZmluZWQgOiAnYWZ0ZXItYWN0aXZlLXZpZXcnKSxcbiAgICAgICAgYWN0aXZhdGVWaWV3OiB0cnVlLFxuICAgICAgICBhY3RpdmF0ZVBhcnQ6IHRydWUsXG4gICAgICB9KSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvZXJjZUFsaWduUHJvcGVydHkocmVnaW9uOiAnbm9ydGgnIHwgJ2Vhc3QnIHwgJ3NvdXRoJyB8ICd3ZXN0JyB8ICdjZW50ZXInKTogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ2JvdHRvbScge1xuICBzd2l0Y2ggKHJlZ2lvbikge1xuICAgIGNhc2UgJ3dlc3QnOlxuICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICBjYXNlICdlYXN0JzpcbiAgICAgIHJldHVybiAncmlnaHQnO1xuICAgIGNhc2UgJ25vcnRoJzpcbiAgICAgIHJldHVybiAndG9wJztcbiAgICBjYXNlICdzb3V0aCc6XG4gICAgICByZXR1cm4gJ2JvdHRvbSc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IEVycm9yKGBbVW5zdXBwb3J0ZWRSZWdpb25FcnJvcl0gU3VwcG9ydGVkIHJlZ2lvbnMgYXJlICdub3J0aCcsICdlYXN0JywgJ3NvdXRoJyBvciAnd2VzdCcsIGJ1dCBpcyAnJHtyZWdpb259Jy5gKTtcbiAgfVxufVxuIl19
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1tb3ZlLWhhbmRsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3ZpZXcvdmlldy1tb3ZlLWhhbmRsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUtqRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzNGLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFFdkM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQUUxQixZQUEwQyxZQUFvQixFQUMxQyxnQkFBa0MsRUFDbEMsdUJBQWdELEVBQ2hELGdCQUFpQyxFQUNqQyxPQUFlLEVBQ2YsaUJBQW1DO1FBTGIsaUJBQVksR0FBWixZQUFZLENBQVE7UUFDMUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDckQsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLHVCQUF1QjtR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LFlBQVksRUFBRTtnQkFDaEcsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDO2dCQUMzRyxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsWUFBWSxFQUFFLElBQUk7YUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDO0lBQ0gsQ0FBQzs4R0FoSFUsZUFBZSxrQkFFTixZQUFZO2tIQUZyQixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVOzswQkFHSSxNQUFNOzJCQUFDLFlBQVk7O0FBaUhsQyxTQUFTLG1CQUFtQixDQUFDLE1BQXNEO0lBQ2pGLFFBQVEsTUFBTSxFQUFFLENBQUM7UUFDZixLQUFLLE1BQU07WUFDVCxPQUFPLE1BQU0sQ0FBQztRQUNoQixLQUFLLE1BQU07WUFDVCxPQUFPLE9BQU8sQ0FBQztRQUNqQixLQUFLLE9BQU87WUFDVixPQUFPLEtBQUssQ0FBQztRQUNmLEtBQUssT0FBTztZQUNWLE9BQU8sUUFBUSxDQUFDO1FBQ2xCO1lBQ0UsTUFBTSxLQUFLLENBQUMsOEZBQThGLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDMUgsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1ZpZXdEcmFnU2VydmljZSwgVmlld01vdmVFdmVudH0gZnJvbSAnLi4vdmlldy1kbmQvdmlldy1kcmFnLnNlcnZpY2UnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0xvY2F0aW9uU3RyYXRlZ3l9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge8m1V29ya2JlbmNoUm91dGVyfSBmcm9tICcuLi9yb3V0aW5nL8m1d29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7Um91dGVyVXRpbHN9IGZyb20gJy4uL3JvdXRpbmcvcm91dGVyLnV0aWwnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaExheW91dEZhY3Rvcnl9IGZyb20gJy4uL2xheW91dC/JtXdvcmtiZW5jaC1sYXlvdXQuZmFjdG9yeSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtEZWZpbmVkfSBmcm9tICdAc2Npb24vdG9vbGtpdC91dGlsJztcbmltcG9ydCB7Z2VuZXJhdGVQZXJzcGVjdGl2ZVdpbmRvd05hbWV9IGZyb20gJy4uL3BlcnNwZWN0aXZlL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS5zZXJ2aWNlJztcbmltcG9ydCB7QU5PTllNT1VTX1BFUlNQRUNUSVZFX0lEX1BSRUZJWH0gZnJvbSAnLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5pbXBvcnQge1dPUktCRU5DSF9JRH0gZnJvbSAnLi4vd29ya2JlbmNoLWlkJztcbmltcG9ydCB7VUlEfSBmcm9tICcuLi9jb21tb24vdWlkLnV0aWwnO1xuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHdvcmtiZW5jaCBsYXlvdXQgd2hlbiB0aGUgdXNlciBtb3ZlcyBhIHZpZXcuXG4gKi9cbkBJbmplY3RhYmxlKC8qIERPIE5PVCBQUk9WSURFIHZpYSAncHJvdmlkZWRJbicgbWV0YWRhdGEgYXMgcmVnaXN0ZXJlZCB2aWEgd29ya2JlbmNoIHN0YXJ0dXAgaG9vay4gKi8pXG5leHBvcnQgY2xhc3MgVmlld01vdmVIYW5kbGVyIHtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFdPUktCRU5DSF9JRCkgcHJpdmF0ZSBfd29ya2JlbmNoSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfd29ya2JlbmNoUm91dGVyOiDJtVdvcmtiZW5jaFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfd29ya2JlbmNoTGF5b3V0RmFjdG9yeTogybVXb3JrYmVuY2hMYXlvdXRGYWN0b3J5LFxuICAgICAgICAgICAgICBwcml2YXRlIF92aWV3RHJhZ1NlcnZpY2U6IFZpZXdEcmFnU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2xvY2F0aW9uU3RyYXRlZ3k6IExvY2F0aW9uU3RyYXRlZ3kpIHtcbiAgICB0aGlzLmluc3RhbGxWaWV3TW92ZUxpc3RlbmVyKCk7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbGxWaWV3TW92ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMuX3ZpZXdEcmFnU2VydmljZS52aWV3TW92ZSRcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAoZXZlbnQ6IFZpZXdNb3ZlRXZlbnQpID0+IHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByeGpzL25vLWFzeW5jLXN1YnNjcmliZVxuICAgICAgICAvLyBDaGVjayBpZiB0aGlzIHdvcmtiZW5jaCBpbnN0YW5jZSB0YWtlcyBwYXJ0IGluIHRoZSB2aWV3IGRyYWcgb3BlcmF0aW9uLiBJZiBub3QsIGRvIG5vdGhpbmcuXG4gICAgICAgIGlmIChldmVudC5zb3VyY2Uud29ya2JlbmNoSWQgIT09IHRoaXMuX3dvcmtiZW5jaElkICYmIGV2ZW50LnRhcmdldC53b3JrYmVuY2hJZCAhPT0gdGhpcy5fd29ya2JlbmNoSWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjcm9zc1dvcmtiZW5jaFZpZXdEcmFnID0gKGV2ZW50LnNvdXJjZS53b3JrYmVuY2hJZCAhPT0gZXZlbnQudGFyZ2V0LndvcmtiZW5jaElkKTtcblxuICAgICAgICAvLyBDaGVjayBpZiB0byByZW1vdmUgdGhlIHZpZXcgZnJvbSB0aGlzIHdvcmtiZW5jaCBpbnN0YW5jZSBpZiBiZWluZyBtb3ZlZCB0byBhbm90aGVyIHdvcmtiZW5jaCBpbnN0YW5jZS5cbiAgICAgICAgaWYgKGNyb3NzV29ya2JlbmNoVmlld0RyYWcgJiYgZXZlbnQuc291cmNlLndvcmtiZW5jaElkID09PSB0aGlzLl93b3JrYmVuY2hJZCkge1xuICAgICAgICAgIC8vIENoZWNrIGlmIHRvIGFkZCB0aGUgdmlldyB0byBhIG5ldyBicm93c2VyIHdpbmRvdy5cbiAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LndvcmtiZW5jaElkID09PSAnbmV3LXdpbmRvdycpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubW92ZVZpZXdUb05ld1dpbmRvdyhldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZW1vdmVWaWV3KGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2hlY2sgaWYgdG8gYWRkIHRoZSB2aWV3IHRvIHRoaXMgd29ya2JlbmNoIGluc3RhbmNlIGlmIGJlaW5nIG1vdmVkIGZyb20gYW5vdGhlciB3b3JrYmVuY2ggaW5zdGFuY2UgdG8gdGhpcyB3b3JrYmVuY2ggaW5zdGFuY2UuXG4gICAgICAgIGVsc2UgaWYgKGNyb3NzV29ya2JlbmNoVmlld0RyYWcgJiYgZXZlbnQudGFyZ2V0LndvcmtiZW5jaElkID09PSB0aGlzLl93b3JrYmVuY2hJZCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRkVmlldyhldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTW92ZSB0aGUgdmlldyB3aXRoaW4gdGhlIHNhbWUgd29ya2JlbmNoIGluc3RhbmNlLlxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm1vdmVWaWV3KGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZFZpZXcoZXZlbnQ6IFZpZXdNb3ZlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByZWdpb24gPSBldmVudC50YXJnZXQucmVnaW9uO1xuICAgIGNvbnN0IGFkZFRvTmV3UGFydCA9ICEhcmVnaW9uO1xuICAgIGNvbnN0IGNvbW1hbmRzID0gUm91dGVyVXRpbHMuc2VnbWVudHNUb0NvbW1hbmRzKGV2ZW50LnNvdXJjZS52aWV3VXJsU2VnbWVudHMpO1xuXG4gICAgYXdhaXQgdGhpcy5fd29ya2JlbmNoUm91dGVyLm5hdmlnYXRlKGxheW91dCA9PiB7XG4gICAgICBjb25zdCBuZXdWaWV3SWQgPSBldmVudC5zb3VyY2UuYWx0ZXJuYXRpdmVWaWV3SWQgPz8gbGF5b3V0LmNvbXB1dGVOZXh0Vmlld0lkKCk7XG4gICAgICBpZiAoYWRkVG9OZXdQYXJ0KSB7XG4gICAgICAgIGNvbnN0IG5ld1BhcnRJZCA9IGV2ZW50LnRhcmdldC5uZXdQYXJ0Py5pZCA/PyBVSUQucmFuZG9tVUlEKCk7XG4gICAgICAgIHJldHVybiBsYXlvdXRcbiAgICAgICAgICAuYWRkUGFydChuZXdQYXJ0SWQsIHtyZWxhdGl2ZVRvOiBldmVudC50YXJnZXQuZWxlbWVudElkLCBhbGlnbjogY29lcmNlQWxpZ25Qcm9wZXJ0eShyZWdpb24hKSwgcmF0aW86IGV2ZW50LnRhcmdldC5uZXdQYXJ0Py5yYXRpb30sIHtzdHJ1Y3R1cmFsOiBmYWxzZX0pXG4gICAgICAgICAgLmFkZFZpZXcobmV3Vmlld0lkLCB7cGFydElkOiBuZXdQYXJ0SWQsIGFjdGl2YXRlVmlldzogdHJ1ZSwgYWN0aXZhdGVQYXJ0OiB0cnVlLCBjc3NDbGFzczogZXZlbnQuc291cmNlLmNsYXNzTGlzdD8uZ2V0KCdsYXlvdXQnKX0pXG4gICAgICAgICAgLm5hdmlnYXRlVmlldyhuZXdWaWV3SWQsIGNvbW1hbmRzLCB7aGludDogZXZlbnQuc291cmNlLm5hdmlnYXRpb25IaW50LCBjc3NDbGFzczogZXZlbnQuc291cmNlLmNsYXNzTGlzdD8uZ2V0KCduYXZpZ2F0aW9uJyl9KTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gbGF5b3V0XG4gICAgICAgICAgLmFkZFZpZXcobmV3Vmlld0lkLCB7XG4gICAgICAgICAgICBwYXJ0SWQ6IERlZmluZWQub3JFbHNlVGhyb3coZXZlbnQudGFyZ2V0LmVsZW1lbnRJZCwgKCkgPT4gRXJyb3IoYFtWaWV3TW92ZUVycm9yXSBUYXJnZXQgcGFydCByZXF1aXJlZCBmb3IgcmVnaW9uICdjZW50ZXInLmApKSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBldmVudC50YXJnZXQucG9zaXRpb24gPz8gJ2FmdGVyLWFjdGl2ZS12aWV3JyxcbiAgICAgICAgICAgIGNzc0NsYXNzOiBldmVudC5zb3VyY2UuY2xhc3NMaXN0Py5nZXQoJ2xheW91dCcpLFxuICAgICAgICAgICAgYWN0aXZhdGVWaWV3OiB0cnVlLFxuICAgICAgICAgICAgYWN0aXZhdGVQYXJ0OiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLm5hdmlnYXRlVmlldyhuZXdWaWV3SWQsIGNvbW1hbmRzLCB7aGludDogZXZlbnQuc291cmNlLm5hdmlnYXRpb25IaW50LCBjc3NDbGFzczogZXZlbnQuc291cmNlLmNsYXNzTGlzdD8uZ2V0KCduYXZpZ2F0aW9uJyl9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbW92ZVZpZXdUb05ld1dpbmRvdyhldmVudDogVmlld01vdmVFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIE9wZW4gdGhlIHZpZXcgXCJzdGFuZGFsb25lXCIgaW4gYSBibGFuayB3aW5kb3cgaW4gYW4gYW5vbnltb3VzIHBlcnNwZWN0aXZlLlxuICAgIGNvbnN0IHVybFRyZWUgPSBhd2FpdCB0aGlzLl93b3JrYmVuY2hSb3V0ZXIuY3JlYXRlVXJsVHJlZSgoKSA9PiB7XG4gICAgICBjb25zdCBuZXdMYXlvdXQgPSB0aGlzLl93b3JrYmVuY2hMYXlvdXRGYWN0b3J5LmNyZWF0ZSgpO1xuICAgICAgY29uc3QgbmV3Vmlld0lkID0gZXZlbnQuc291cmNlLmFsdGVybmF0aXZlVmlld0lkID8/IG5ld0xheW91dC5jb21wdXRlTmV4dFZpZXdJZCgpO1xuICAgICAgY29uc3QgY29tbWFuZHMgPSBSb3V0ZXJVdGlscy5zZWdtZW50c1RvQ29tbWFuZHMoZXZlbnQuc291cmNlLnZpZXdVcmxTZWdtZW50cyk7XG4gICAgICByZXR1cm4gbmV3TGF5b3V0XG4gICAgICAgIC5hZGRWaWV3KG5ld1ZpZXdJZCwge1xuICAgICAgICAgIHBhcnRJZDogbmV3TGF5b3V0LmFjdGl2ZVBhcnQoe2dyaWQ6ICdtYWluQXJlYSd9KSEuaWQsXG4gICAgICAgICAgYWN0aXZhdGVWaWV3OiB0cnVlLFxuICAgICAgICAgIGNzc0NsYXNzOiBldmVudC5zb3VyY2UuY2xhc3NMaXN0Py5nZXQoJ2xheW91dCcpLFxuICAgICAgICB9KVxuICAgICAgICAubmF2aWdhdGVWaWV3KG5ld1ZpZXdJZCwgY29tbWFuZHMsIHtoaW50OiBldmVudC5zb3VyY2UubmF2aWdhdGlvbkhpbnQsIGNzc0NsYXNzOiBldmVudC5zb3VyY2UuY2xhc3NMaXN0Py5nZXQoJ25hdmlnYXRpb24nKX0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHRhcmdldCA9IGdlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKGAke0FOT05ZTU9VU19QRVJTUEVDVElWRV9JRF9QUkVGSVh9JHtVSUQucmFuZG9tVUlEKCl9YCk7XG4gICAgaWYgKHdpbmRvdy5vcGVuKHRoaXMuX2xvY2F0aW9uU3RyYXRlZ3kucHJlcGFyZUV4dGVybmFsVXJsKHRoaXMuX3JvdXRlci5zZXJpYWxpemVVcmwodXJsVHJlZSEpKSwgdGFyZ2V0KSkge1xuICAgICAgYXdhaXQgdGhpcy5yZW1vdmVWaWV3KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlbW92ZVZpZXcoZXZlbnQ6IFZpZXdNb3ZlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLl93b3JrYmVuY2hSb3V0ZXIubmF2aWdhdGUobGF5b3V0ID0+IGxheW91dC5yZW1vdmVWaWV3KGV2ZW50LnNvdXJjZS52aWV3SWQsIHtmb3JjZTogdHJ1ZX0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbW92ZVZpZXcoZXZlbnQ6IFZpZXdNb3ZlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBhZGRUb05ld1BhcnQgPSAhIWV2ZW50LnRhcmdldC5yZWdpb247XG4gICAgaWYgKGFkZFRvTmV3UGFydCkge1xuICAgICAgY29uc3QgbmV3UGFydElkID0gZXZlbnQudGFyZ2V0Lm5ld1BhcnQ/LmlkID8/IFVJRC5yYW5kb21VSUQoKTtcbiAgICAgIGF3YWl0IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5uYXZpZ2F0ZShsYXlvdXQgPT4gbGF5b3V0XG4gICAgICAgIC5hZGRQYXJ0KG5ld1BhcnRJZCwge3JlbGF0aXZlVG86IGV2ZW50LnRhcmdldC5lbGVtZW50SWQsIGFsaWduOiBjb2VyY2VBbGlnblByb3BlcnR5KGV2ZW50LnRhcmdldC5yZWdpb24hKSwgcmF0aW86IGV2ZW50LnRhcmdldC5uZXdQYXJ0Py5yYXRpb30sIHtzdHJ1Y3R1cmFsOiBmYWxzZX0pXG4gICAgICAgIC5tb3ZlVmlldyhldmVudC5zb3VyY2Uudmlld0lkLCBuZXdQYXJ0SWQsIHthY3RpdmF0ZVBhcnQ6IHRydWUsIGFjdGl2YXRlVmlldzogdHJ1ZX0pLFxuICAgICAgKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zdCB0YXJnZXRQYXJ0SWQgPSBEZWZpbmVkLm9yRWxzZVRocm93KGV2ZW50LnRhcmdldC5lbGVtZW50SWQsICgpID0+IEVycm9yKGBbVmlld01vdmVFcnJvcl0gVGFyZ2V0IHBhcnQgcmVxdWlyZWQgZm9yIHJlZ2lvbiAnY2VudGVyJy5gKSk7XG4gICAgICBhd2FpdCB0aGlzLl93b3JrYmVuY2hSb3V0ZXIubmF2aWdhdGUobGF5b3V0ID0+IGxheW91dC5tb3ZlVmlldyhldmVudC5zb3VyY2Uudmlld0lkLCB0YXJnZXRQYXJ0SWQsIHtcbiAgICAgICAgcG9zaXRpb246IGV2ZW50LnRhcmdldC5wb3NpdGlvbiA/PyAoZXZlbnQuc291cmNlLnBhcnRJZCA9PT0gdGFyZ2V0UGFydElkID8gdW5kZWZpbmVkIDogJ2FmdGVyLWFjdGl2ZS12aWV3JyksXG4gICAgICAgIGFjdGl2YXRlVmlldzogdHJ1ZSxcbiAgICAgICAgYWN0aXZhdGVQYXJ0OiB0cnVlLFxuICAgICAgfSkpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjb2VyY2VBbGlnblByb3BlcnR5KHJlZ2lvbjogJ25vcnRoJyB8ICdlYXN0JyB8ICdzb3V0aCcgfCAnd2VzdCcgfCAnY2VudGVyJyk6ICdsZWZ0JyB8ICdyaWdodCcgfCAndG9wJyB8ICdib3R0b20nIHtcbiAgc3dpdGNoIChyZWdpb24pIHtcbiAgICBjYXNlICd3ZXN0JzpcbiAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgY2FzZSAnZWFzdCc6XG4gICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICBjYXNlICdub3J0aCc6XG4gICAgICByZXR1cm4gJ3RvcCc7XG4gICAgY2FzZSAnc291dGgnOlxuICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBFcnJvcihgW1Vuc3VwcG9ydGVkUmVnaW9uRXJyb3JdIFN1cHBvcnRlZCByZWdpb25zIGFyZSAnbm9ydGgnLCAnZWFzdCcsICdzb3V0aCcgb3IgJ3dlc3QnLCBidXQgaXMgJyR7cmVnaW9ufScuYCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -7,22 +7,24 @@
|
|
|
7
7
|
*
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
*/
|
|
10
|
-
import { Component, HostBinding, inject, ViewChild } from '@angular/core';
|
|
10
|
+
import { Component, ElementRef, HostBinding, inject, ViewChild } from '@angular/core';
|
|
11
11
|
import { AsyncSubject, combineLatest } from 'rxjs';
|
|
12
12
|
import { RouterOutlet } from '@angular/router';
|
|
13
13
|
import { SciViewportComponent } from '@scion/components/viewport';
|
|
14
|
+
import { ViewMenuService } from '../part/view-context-menu/view-menu.service';
|
|
14
15
|
import { ɵWorkbenchView } from './ɵworkbench-view.model';
|
|
15
16
|
import { LoggerNames } from '../logging';
|
|
16
17
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
17
18
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
18
19
|
import { GLASS_PANE_BLOCKABLE, GLASS_PANE_OPTIONS, GlassPaneDirective } from '../glass-pane/glass-pane.directive';
|
|
19
20
|
import { WorkbenchView } from './workbench-view.model';
|
|
21
|
+
import { NgClass } from '@angular/common';
|
|
20
22
|
import * as i0 from "@angular/core";
|
|
21
23
|
import * as i1 from "./\u0275workbench-view.model";
|
|
22
|
-
import * as i2 from "../
|
|
23
|
-
import * as i3 from "../
|
|
24
|
-
import * as i4 from "../
|
|
25
|
-
import * as i5 from "
|
|
24
|
+
import * as i2 from "../view-dnd/view-drag.service";
|
|
25
|
+
import * as i3 from "../logging";
|
|
26
|
+
import * as i4 from "../glass-pane/glass-pane.directive";
|
|
27
|
+
import * as i5 from "@angular/common";
|
|
26
28
|
import * as i6 from "@angular/cdk/a11y";
|
|
27
29
|
/**
|
|
28
30
|
* Renders the workbench view, using a router-outlet to display view content.
|
|
@@ -37,25 +39,18 @@ export class ViewComponent {
|
|
|
37
39
|
get viewId() {
|
|
38
40
|
return this._view.id;
|
|
39
41
|
}
|
|
40
|
-
get cssClasses() {
|
|
41
|
-
return this._view.classList.value.join(' ');
|
|
42
|
-
}
|
|
43
42
|
get isViewDragActive() {
|
|
44
43
|
return this._viewDragService.viewDragData !== null;
|
|
45
44
|
}
|
|
46
|
-
constructor(_view,
|
|
45
|
+
constructor(_view, _viewDragService, _logger) {
|
|
47
46
|
this._view = _view;
|
|
48
|
-
this._logger = _logger;
|
|
49
|
-
this._host = _host;
|
|
50
47
|
this._viewDragService = _viewDragService;
|
|
48
|
+
this._logger = _logger;
|
|
51
49
|
this._viewport$ = new AsyncSubject();
|
|
52
50
|
this._logger.debug(() => `Constructing ViewComponent. [viewId=${this.viewId}]`, LoggerNames.LIFECYCLE);
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
combineLatest([this._view.active$, this._viewport$])
|
|
57
|
-
.pipe(takeUntilDestroyed())
|
|
58
|
-
.subscribe(([active, viewport]) => active ? this.onActivateView(viewport) : this.onDeactivateView(viewport));
|
|
51
|
+
this.installMenuItemAccelerators();
|
|
52
|
+
this.subscribeForViewActivation();
|
|
53
|
+
this.addViewClassesToHost();
|
|
59
54
|
}
|
|
60
55
|
onActivateView(viewport) {
|
|
61
56
|
viewport.focus();
|
|
@@ -66,13 +61,33 @@ export class ViewComponent {
|
|
|
66
61
|
this._view.scrollTop = viewport.scrollTop;
|
|
67
62
|
this._view.scrollLeft = viewport.scrollLeft;
|
|
68
63
|
}
|
|
64
|
+
installMenuItemAccelerators() {
|
|
65
|
+
inject(ViewMenuService).installMenuItemAccelerators$(inject((ElementRef)), this._view)
|
|
66
|
+
.pipe(takeUntilDestroyed())
|
|
67
|
+
.subscribe();
|
|
68
|
+
}
|
|
69
|
+
subscribeForViewActivation() {
|
|
70
|
+
combineLatest([this._view.active$, this._viewport$])
|
|
71
|
+
.pipe(takeUntilDestroyed())
|
|
72
|
+
.subscribe(([active, viewport]) => {
|
|
73
|
+
active ? this.onActivateView(viewport) : this.onDeactivateView(viewport);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
addViewClassesToHost() {
|
|
77
|
+
const ngClass = inject(NgClass);
|
|
78
|
+
this._view.classList.value$
|
|
79
|
+
.pipe(takeUntilDestroyed())
|
|
80
|
+
.subscribe(cssClasses => {
|
|
81
|
+
ngClass.ngClass = cssClasses;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
69
84
|
ngOnDestroy() {
|
|
70
85
|
this._logger.debug(() => `Destroying ViewComponent [viewId=${this.viewId}]'`, LoggerNames.LIFECYCLE);
|
|
71
86
|
}
|
|
72
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewComponent, deps: [{ token: i1.ɵWorkbenchView }, { token: i2.
|
|
73
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ViewComponent, isStandalone: true, selector: "wb-view", host: { properties: { "attr.data-viewid": "this.viewId", "
|
|
87
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewComponent, deps: [{ token: i1.ɵWorkbenchView }, { token: i2.ViewDragService }, { token: i3.Logger }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ViewComponent, isStandalone: true, selector: "wb-view", host: { properties: { "attr.data-viewid": "this.viewId", "class.view-drag": "this.isViewDragActive" } }, providers: [
|
|
74
89
|
configureViewGlassPane(),
|
|
75
|
-
], viewQueries: [{ propertyName: "setViewport", first: true, predicate: SciViewportComponent, descendants: true }], hostDirectives: [{ directive:
|
|
90
|
+
], viewQueries: [{ propertyName: "setViewport", first: true, predicate: SciViewportComponent, descendants: true }], hostDirectives: [{ directive: i4.GlassPaneDirective }, { directive: i5.NgClass }], ngImport: i0, template: "<sci-viewport cdkTrapFocus>\n <router-outlet [name]=\"viewId\"/>\n</sci-viewport>\n", styles: [":host{display:flex;flex-direction:column;background-color:var(--sci-workbench-view-background-color);color:var(--sci-color-text)}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host{background-color:var(--sci-workbench-view-peripheral-background-color)}:host.view-drag{pointer-events:none}:host>sci-viewport{flex:1 1 0}:host>sci-viewport>router-outlet{position:absolute}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i6.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: SciViewportComponent, selector: "sci-viewport", inputs: ["scrollbarStyle"], outputs: ["scroll"] }] }); }
|
|
76
91
|
}
|
|
77
92
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewComponent, decorators: [{
|
|
78
93
|
type: Component,
|
|
@@ -82,18 +97,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
82
97
|
SciViewportComponent,
|
|
83
98
|
], hostDirectives: [
|
|
84
99
|
GlassPaneDirective,
|
|
100
|
+
NgClass,
|
|
85
101
|
], providers: [
|
|
86
102
|
configureViewGlassPane(),
|
|
87
103
|
], template: "<sci-viewport cdkTrapFocus>\n <router-outlet [name]=\"viewId\"/>\n</sci-viewport>\n", styles: [":host{display:flex;flex-direction:column;background-color:var(--sci-workbench-view-background-color);color:var(--sci-color-text)}wb-workbench:has(wb-main-area-layout) wb-part:not(.main-area) :host{background-color:var(--sci-workbench-view-peripheral-background-color)}:host.view-drag{pointer-events:none}:host>sci-viewport{flex:1 1 0}:host>sci-viewport>router-outlet{position:absolute}\n"] }]
|
|
88
|
-
}], ctorParameters: () => [{ type: i1.ɵWorkbenchView }, { type: i2.
|
|
104
|
+
}], ctorParameters: () => [{ type: i1.ɵWorkbenchView }, { type: i2.ViewDragService }, { type: i3.Logger }], propDecorators: { setViewport: [{
|
|
89
105
|
type: ViewChild,
|
|
90
106
|
args: [SciViewportComponent]
|
|
91
107
|
}], viewId: [{
|
|
92
108
|
type: HostBinding,
|
|
93
109
|
args: ['attr.data-viewid']
|
|
94
|
-
}], cssClasses: [{
|
|
95
|
-
type: HostBinding,
|
|
96
|
-
args: ['attr.class']
|
|
97
110
|
}], isViewDragActive: [{
|
|
98
111
|
type: HostBinding,
|
|
99
112
|
args: ['class.view-drag']
|
|
@@ -113,4 +126,4 @@ function configureViewGlassPane() {
|
|
|
113
126
|
},
|
|
114
127
|
];
|
|
115
128
|
}
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi92aWV3L3ZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvdmlldy92aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBYyxXQUFXLEVBQUUsTUFBTSxFQUF1QixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFDLFlBQVksRUFBRSxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQVMsV0FBVyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQW1CLE1BQU0sb0NBQW9DLENBQUM7QUFDbEksT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQUVyRDs7R0FFRztBQWtCSCxNQUFNLE9BQU8sYUFBYTtJQUl4QixJQUNXLFdBQVcsQ0FBQyxRQUE4QjtRQUNuRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7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QixNQUFNO3NCQURoQixXQUFXO3VCQUFDLGtCQUFrQjtnQkFNcEIsVUFBVTtzQkFEcEIsV0FBVzt1QkFBQyxZQUFZO2dCQU1kLGdCQUFnQjtzQkFEMUIsV0FBVzt1QkFBQyxpQkFBaUI7O0FBcUNoQzs7R0FFRztBQUNILFNBQVMsc0JBQXNCO0lBQzdCLE9BQU87UUFDTDtZQUNFLE9BQU8sRUFBRSxvQkFBb0I7WUFDN0IsV0FBVyxFQUFFLGNBQWM7U0FDNUI7UUFDRDtZQUNFLE9BQU8sRUFBRSxrQkFBa0I7WUFDM0IsVUFBVSxFQUFFLEdBQXFCLEVBQUUsQ0FBQyxDQUFDLEVBQUMsVUFBVSxFQUFFLEVBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBQyxDQUFDO1NBQzlGO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgaW5qZWN0LCBPbkRlc3Ryb3ksIFByb3ZpZGVyLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBc3luY1N1YmplY3QsIGNvbWJpbmVMYXRlc3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtSb3V0ZXJPdXRsZXR9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1NjaVZpZXdwb3J0Q29tcG9uZW50fSBmcm9tICdAc2Npb24vY29tcG9uZW50cy92aWV3cG9ydCc7XG5pbXBvcnQge1ZpZXdNZW51U2VydmljZX0gZnJvbSAnLi4vcGFydC92aWV3LWNvbnRleHQtbWVudS92aWV3LW1lbnUuc2VydmljZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoVmlld30gZnJvbSAnLi/JtXdvcmtiZW5jaC12aWV3Lm1vZGVsJztcbmltcG9ydCB7TG9nZ2VyLCBMb2dnZXJOYW1lc30gZnJvbSAnLi4vbG9nZ2luZyc7XG5pbXBvcnQge0ExMXlNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1ZpZXdEcmFnU2VydmljZX0gZnJvbSAnLi4vdmlldy1kbmQvdmlldy1kcmFnLnNlcnZpY2UnO1xuaW1wb3J0IHtHTEFTU19QQU5FX0JMT0NLQUJMRSwgR0xBU1NfUEFORV9PUFRJT05TLCBHbGFzc1BhbmVEaXJlY3RpdmUsIEdsYXNzUGFuZU9wdGlvbnN9IGZyb20gJy4uL2dsYXNzLXBhbmUvZ2xhc3MtcGFuZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hWaWV3fSBmcm9tICcuL3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcblxuLyoqXG4gKiBSZW5kZXJzIHRoZSB3b3JrYmVuY2ggdmlldywgdXNpbmcgYSByb3V0ZXItb3V0bGV0IHRvIGRpc3BsYXkgdmlldyBjb250ZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3Yi12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSb3V0ZXJPdXRsZXQsXG4gICAgQTExeU1vZHVsZSxcbiAgICBTY2lWaWV3cG9ydENvbXBvbmVudCxcbiAgXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICBHbGFzc1BhbmVEaXJlY3RpdmUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIGNvbmZpZ3VyZVZpZXdHbGFzc1BhbmUoKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfdmlld3BvcnQkID0gbmV3IEFzeW5jU3ViamVjdDxTY2lWaWV3cG9ydENvbXBvbmVudD4oKTtcblxuICBAVmlld0NoaWxkKFNjaVZpZXdwb3J0Q29tcG9uZW50KVxuICBwdWJsaWMgc2V0IHNldFZpZXdwb3J0KHZpZXdwb3J0OiBTY2lWaWV3cG9ydENvbXBvbmVudCkge1xuICAgIGlmICh2aWV3cG9ydCkge1xuICAgICAgdGhpcy5fdmlld3BvcnQkLm5leHQodmlld3BvcnQpO1xuICAgICAgdGhpcy5fdmlld3BvcnQkLmNvbXBsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdmlld2lkJylcbiAgcHVibGljIGdldCB2aWV3SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmlldy5pZDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5jbGFzcycpXG4gIHB1YmxpYyBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92aWV3LmNsYXNzTGlzdC52YWx1ZS5qb2luKCcgJyk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnZpZXctZHJhZycpXG4gIHB1YmxpYyBnZXQgaXNWaWV3RHJhZ0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld0RyYWdTZXJ2aWNlLnZpZXdEcmFnRGF0YSAhPT0gbnVsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3ZpZXc6IMm1V29ya2JlbmNoVmlldyxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9nZ2VyOiBMb2dnZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2hvc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICAgICAgICBwcml2YXRlIF92aWV3RHJhZ1NlcnZpY2U6IFZpZXdEcmFnU2VydmljZSxcbiAgICAgICAgICAgICAgdmlld0NvbnRleHRNZW51U2VydmljZTogVmlld01lbnVTZXJ2aWNlKSB7XG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+IGBDb25zdHJ1Y3RpbmcgVmlld0NvbXBvbmVudC4gW3ZpZXdJZD0ke3RoaXMudmlld0lkfV1gLCBMb2dnZXJOYW1lcy5MSUZFQ1lDTEUpO1xuXG4gICAgdmlld0NvbnRleHRNZW51U2VydmljZS5pbnN0YWxsTWVudUl0ZW1BY2NlbGVyYXRvcnMkKHRoaXMuX2hvc3QsIHRoaXMuX3ZpZXcpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3ZpZXcuYWN0aXZlJCwgdGhpcy5fdmlld3BvcnQkXSlcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZSgoW2FjdGl2ZSwgdmlld3BvcnRdKSA9PiBhY3RpdmUgPyB0aGlzLm9uQWN0aXZhdGVWaWV3KHZpZXdwb3J0KSA6IHRoaXMub25EZWFjdGl2YXRlVmlldyh2aWV3cG9ydCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkFjdGl2YXRlVmlldyh2aWV3cG9ydDogU2NpVmlld3BvcnRDb21wb25lbnQpOiB2b2lkIHtcbiAgICB2aWV3cG9ydC5mb2N1cygpO1xuICAgIHZpZXdwb3J0LnNjcm9sbFRvcCA9IHRoaXMuX3ZpZXcuc2Nyb2xsVG9wO1xuICAgIHZpZXdwb3J0LnNjcm9sbExlZnQgPSB0aGlzLl92aWV3LnNjcm9sbExlZnQ7XG4gIH1cblxuICBwcml2YXRlIG9uRGVhY3RpdmF0ZVZpZXcodmlld3BvcnQ6IFNjaVZpZXdwb3J0Q29tcG9uZW50KTogdm9pZCB7XG4gICAgdGhpcy5fdmlldy5zY3JvbGxUb3AgPSB2aWV3cG9ydC5zY3JvbGxUb3A7XG4gICAgdGhpcy5fdmlldy5zY3JvbGxMZWZ0ID0gdmlld3BvcnQuc2Nyb2xsTGVmdDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoKCkgPT4gYERlc3Ryb3lpbmcgVmlld0NvbXBvbmVudCBbdmlld0lkPSR7dGhpcy52aWV3SWR9XSdgLCBMb2dnZXJOYW1lcy5MSUZFQ1lDTEUpO1xuICB9XG59XG5cbi8qKlxuICogQmxvY2tzIHRoaXMgdmlldyB3aGVuIGRpYWxvZyhzKSBvdmVybGF5IGl0LlxuICovXG5mdW5jdGlvbiBjb25maWd1cmVWaWV3R2xhc3NQYW5lKCk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEdMQVNTX1BBTkVfQkxPQ0tBQkxFLFxuICAgICAgdXNlRXhpc3Rpbmc6IMm1V29ya2JlbmNoVmlldyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEdMQVNTX1BBTkVfT1BUSU9OUyxcbiAgICAgIHVzZUZhY3Rvcnk6ICgpOiBHbGFzc1BhbmVPcHRpb25zID0+ICh7YXR0cmlidXRlczogeydkYXRhLXZpZXdpZCc6IGluamVjdChXb3JrYmVuY2hWaWV3KS5pZH19KSxcbiAgICB9LFxuICBdO1xufVxuIiwiPHNjaS12aWV3cG9ydCBjZGtUcmFwRm9jdXM+XG4gIDxyb3V0ZXItb3V0bGV0IFtuYW1lXT1cInZpZXdJZFwiLz5cbjwvc2NpLXZpZXdwb3J0PlxuIl19
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi92aWV3L3ZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvdmlldy92aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBdUIsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBQyxZQUFZLEVBQUUsYUFBYSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDNUUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBUyxXQUFXLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBbUIsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsSSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQUV4Qzs7R0FFRztBQW1CSCxNQUFNLE9BQU8sYUFBYTtJQUl4QixJ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QUksQ0FBQyxNQUFNLElBQUksRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkcsQ0FBQzs4R0FuRVUsYUFBYTtrR0FBYixhQUFhLCtKQUpiO1lBQ1Qsc0JBQXNCLEVBQUU7U0FDekIsdUVBTVUsb0JBQW9CLG1JQ2pEakMsc0ZBR0EsNmJEOEJJLFlBQVksMEpBQ1osVUFBVSwwTEFDVixvQkFBb0I7OzJGQVVYLGFBQWE7a0JBbEJ6QixTQUFTOytCQUNFLFNBQVMsY0FHUCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixVQUFVO3dCQUNWLG9CQUFvQjtxQkFDckIsa0JBQ2U7d0JBQ2Qsa0JBQWtCO3dCQUNsQixPQUFPO3FCQUNSLGFBQ1U7d0JBQ1Qsc0JBQXNCLEVBQUU7cUJBQ3pCO3NJQU9VLFdBQVc7c0JBRHJCLFNBQVM7dUJBQUMsb0JBQW9CO2dCQVNwQixNQUFNO3NCQURoQixXQUFXO3VCQUFDLGtCQUFrQjtnQkFNcEIsZ0JBQWdCO3NCQUQxQixXQUFXO3VCQUFDLGlCQUFpQjs7QUFxRGhDOztHQUVHO0FBQ0gsU0FBUyxzQkFBc0I7SUFDN0IsT0FBTztRQUNMO1lBQ0UsT0FBTyxFQUFFLG9CQUFvQjtZQUM3QixXQUFXLEVBQUUsY0FBYztTQUM1QjtRQUNEO1lBQ0UsT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixVQUFVLEVBQUUsR0FBcUIsRUFBRSxDQUFDLENBQUMsRUFBQyxVQUFVLEVBQUUsRUFBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFDLENBQUM7U0FDOUY7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBpbmplY3QsIE9uRGVzdHJveSwgUHJvdmlkZXIsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FzeW5jU3ViamVjdCwgY29tYmluZUxhdGVzdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1JvdXRlck91dGxldH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7U2NpVmlld3BvcnRDb21wb25lbnR9IGZyb20gJ0BzY2lvbi9jb21wb25lbnRzL3ZpZXdwb3J0JztcbmltcG9ydCB7Vmlld01lbnVTZXJ2aWNlfSBmcm9tICcuLi9wYXJ0L3ZpZXctY29udGV4dC1tZW51L3ZpZXctbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7ybVXb3JrYmVuY2hWaWV3fSBmcm9tICcuL8m1d29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtMb2dnZXIsIExvZ2dlck5hbWVzfSBmcm9tICcuLi9sb2dnaW5nJztcbmltcG9ydCB7QTExeU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Vmlld0RyYWdTZXJ2aWNlfSBmcm9tICcuLi92aWV3LWRuZC92aWV3LWRyYWcuc2VydmljZSc7XG5pbXBvcnQge0dMQVNTX1BBTkVfQkxPQ0tBQkxFLCBHTEFTU19QQU5FX09QVElPTlMsIEdsYXNzUGFuZURpcmVjdGl2ZSwgR2xhc3NQYW5lT3B0aW9uc30gZnJvbSAnLi4vZ2xhc3MtcGFuZS9nbGFzcy1wYW5lLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1dvcmtiZW5jaFZpZXd9IGZyb20gJy4vd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtOZ0NsYXNzfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIFJlbmRlcnMgdGhlIHdvcmtiZW5jaCB2aWV3LCB1c2luZyBhIHJvdXRlci1vdXRsZXQgdG8gZGlzcGxheSB2aWV3IGNvbnRlbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3diLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlck91dGxldCxcbiAgICBBMTF5TW9kdWxlLFxuICAgIFNjaVZpZXdwb3J0Q29tcG9uZW50LFxuICBdLFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIEdsYXNzUGFuZURpcmVjdGl2ZSxcbiAgICBOZ0NsYXNzLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBjb25maWd1cmVWaWV3R2xhc3NQYW5lKCksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX3ZpZXdwb3J0JCA9IG5ldyBBc3luY1N1YmplY3Q8U2NpVmlld3BvcnRDb21wb25lbnQ+KCk7XG5cbiAgQFZpZXdDaGlsZChTY2lWaWV3cG9ydENvbXBvbmVudClcbiAgcHVibGljIHNldCBzZXRWaWV3cG9ydCh2aWV3cG9ydDogU2NpVmlld3BvcnRDb21wb25lbnQpIHtcbiAgICBpZiAodmlld3BvcnQpIHtcbiAgICAgIHRoaXMuX3ZpZXdwb3J0JC5uZXh0KHZpZXdwb3J0KTtcbiAgICAgIHRoaXMuX3ZpZXdwb3J0JC5jb21wbGV0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXZpZXdpZCcpXG4gIHB1YmxpYyBnZXQgdmlld0lkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXcuaWQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnZpZXctZHJhZycpXG4gIHB1YmxpYyBnZXQgaXNWaWV3RHJhZ0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld0RyYWdTZXJ2aWNlLnZpZXdEcmFnRGF0YSAhPT0gbnVsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3ZpZXc6IMm1V29ya2JlbmNoVmlldyxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlld0RyYWdTZXJ2aWNlOiBWaWV3RHJhZ1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2xvZ2dlcjogTG9nZ2VyKSB7XG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+IGBDb25zdHJ1Y3RpbmcgVmlld0NvbXBvbmVudC4gW3ZpZXdJZD0ke3RoaXMudmlld0lkfV1gLCBMb2dnZXJOYW1lcy5MSUZFQ1lDTEUpO1xuICAgIHRoaXMuaW5zdGFsbE1lbnVJdGVtQWNjZWxlcmF0b3JzKCk7XG4gICAgdGhpcy5zdWJzY3JpYmVGb3JWaWV3QWN0aXZhdGlvbigpO1xuICAgIHRoaXMuYWRkVmlld0NsYXNzZXNUb0hvc3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25BY3RpdmF0ZVZpZXcodmlld3BvcnQ6IFNjaVZpZXdwb3J0Q29tcG9uZW50KTogdm9pZCB7XG4gICAgdmlld3BvcnQuZm9jdXMoKTtcbiAgICB2aWV3cG9ydC5zY3JvbGxUb3AgPSB0aGlzLl92aWV3LnNjcm9sbFRvcDtcbiAgICB2aWV3cG9ydC5zY3JvbGxMZWZ0ID0gdGhpcy5fdmlldy5zY3JvbGxMZWZ0O1xuICB9XG5cbiAgcHJpdmF0ZSBvbkRlYWN0aXZhdGVWaWV3KHZpZXdwb3J0OiBTY2lWaWV3cG9ydENvbXBvbmVudCk6IHZvaWQge1xuICAgIHRoaXMuX3ZpZXcuc2Nyb2xsVG9wID0gdmlld3BvcnQuc2Nyb2xsVG9wO1xuICAgIHRoaXMuX3ZpZXcuc2Nyb2xsTGVmdCA9IHZpZXdwb3J0LnNjcm9sbExlZnQ7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbGxNZW51SXRlbUFjY2VsZXJhdG9ycygpOiB2b2lkIHtcbiAgICBpbmplY3QoVmlld01lbnVTZXJ2aWNlKS5pbnN0YWxsTWVudUl0ZW1BY2NlbGVyYXRvcnMkKGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50PiksIHRoaXMuX3ZpZXcpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlRm9yVmlld0FjdGl2YXRpb24oKTogdm9pZCB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5fdmlldy5hY3RpdmUkLCB0aGlzLl92aWV3cG9ydCRdKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChbYWN0aXZlLCB2aWV3cG9ydF0pID0+IHtcbiAgICAgICAgYWN0aXZlID8gdGhpcy5vbkFjdGl2YXRlVmlldyh2aWV3cG9ydCkgOiB0aGlzLm9uRGVhY3RpdmF0ZVZpZXcodmlld3BvcnQpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZFZpZXdDbGFzc2VzVG9Ib3N0KCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ2xhc3MgPSBpbmplY3QoTmdDbGFzcyk7XG4gICAgdGhpcy5fdmlldy5jbGFzc0xpc3QudmFsdWUkXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoY3NzQ2xhc3NlcyA9PiB7XG4gICAgICAgIG5nQ2xhc3MubmdDbGFzcyA9IGNzc0NsYXNzZXM7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoKCkgPT4gYERlc3Ryb3lpbmcgVmlld0NvbXBvbmVudCBbdmlld0lkPSR7dGhpcy52aWV3SWR9XSdgLCBMb2dnZXJOYW1lcy5MSUZFQ1lDTEUpO1xuICB9XG59XG5cbi8qKlxuICogQmxvY2tzIHRoaXMgdmlldyB3aGVuIGRpYWxvZyhzKSBvdmVybGF5IGl0LlxuICovXG5mdW5jdGlvbiBjb25maWd1cmVWaWV3R2xhc3NQYW5lKCk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEdMQVNTX1BBTkVfQkxPQ0tBQkxFLFxuICAgICAgdXNlRXhpc3Rpbmc6IMm1V29ya2JlbmNoVmlldyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEdMQVNTX1BBTkVfT1BUSU9OUyxcbiAgICAgIHVzZUZhY3Rvcnk6ICgpOiBHbGFzc1BhbmVPcHRpb25zID0+ICh7YXR0cmlidXRlczogeydkYXRhLXZpZXdpZCc6IGluamVjdChXb3JrYmVuY2hWaWV3KS5pZH19KSxcbiAgICB9LFxuICBdO1xufVxuIiwiPHNjaS12aWV3cG9ydCBjZGtUcmFwRm9jdXM+XG4gIDxyb3V0ZXItb3V0bGV0IFtuYW1lXT1cInZpZXdJZFwiLz5cbjwvc2NpLXZpZXdwb3J0PlxuIl19
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import { inject } from '@angular/core';
|
|
11
11
|
import { ɵWorkbenchRouter } from '../routing/ɵworkbench-router.service';
|
|
12
12
|
import { WorkbenchLayouts } from '../layout/workbench-layouts.util';
|
|
13
|
-
import { WORKBENCH_AUXILIARY_ROUTE_OUTLET } from '../routing/workbench-auxiliary-
|
|
13
|
+
import { WORKBENCH_AUXILIARY_ROUTE_OUTLET } from '../routing/workbench-auxiliary-route-installer.service';
|
|
14
14
|
export function canMatchWorkbenchView(condition) {
|
|
15
15
|
return () => {
|
|
16
16
|
const outlet = inject(WORKBENCH_AUXILIARY_ROUTE_OUTLET, { optional: true });
|
|
@@ -44,4 +44,4 @@ export const canMatchNotFoundPage = () => {
|
|
|
44
44
|
const view = layout.view({ viewId: outlet }, { orElse: null });
|
|
45
45
|
return !view || !!view.navigation;
|
|
46
46
|
};
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXZpZXctcm91dGUtZ3VhcmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvdmlldy93b3JrYmVuY2gtdmlldy1yb3V0ZS1ndWFyZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFHSCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBK0J4RyxNQUFNLFVBQVUscUJBQXFCLENBQUMsU0FBMkI7SUFDL0QsT0FBTyxHQUFZLEVBQUU7UUFDbkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGdDQUFnQyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFFMUUsUUFBUSxTQUFTLEVBQUUsQ0FBQztZQUNsQixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0MsS0FBSyxLQUFLO2dCQUNSLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU87Z0JBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDdkMsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztnQkFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQywyQkFBMkIsRUFBRSxDQUFDLE1BQU0sQ0FBQztnQkFDN0UsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUMsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO2dCQUMzRCxPQUFPLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxLQUFLLFNBQVMsQ0FBQztZQUM5QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQWUsR0FBWSxFQUFFO0lBQzVELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBRTFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN2QyxNQUFNLEtBQUssQ0FBQywrRUFBK0UsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDN0UsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUMsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQzNELE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDcEMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0Nhbk1hdGNoRm59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2luamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoUm91dGVyfSBmcm9tICcuLi9yb3V0aW5nL8m1d29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0c30gZnJvbSAnLi4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXRzLnV0aWwnO1xuaW1wb3J0IHtXT1JLQkVOQ0hfQVVYSUxJQVJZX1JPVVRFX09VVExFVH0gZnJvbSAnLi4vcm91dGluZy93b3JrYmVuY2gtYXV4aWxpYXJ5LXJvdXRlLWluc3RhbGxlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBNYXRjaGVzIHRoZSByb3V0ZSBpZiB0YXJnZXQgb2YgYSB3b3JrYmVuY2ggdmlldyBhbmQgbmF2aWdhdGluZyB3aXRoIHRoZSBnaXZlbiBoaW50LlxuICpcbiAqIENhbiBiZSB1c2VkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiByb3V0ZXMgd2l0aCBhbiBpZGVudGljYWwgcGF0aC4gRm9yIGV4YW1wbGUsIHRoZSB2aWV3cyBvZiB0aGUgaW5pdGlhbCBsYXlvdXQgb3IgYSBwZXJzcGVjdGl2ZVxuICogYXJlIHVzdWFsbHkgbmF2aWdhdGVkIHRvIHRoZSBlbXB0eSBwYXRoIHJvdXRlIHRvIGF2b2lkIGNsdXR0ZXJpbmcgdGhlIFVSTC4gQSBoaW50IGNhbiBiZSBzZXQgd2hlbiBuYXZpZ2F0aW5nIHRoZSB2aWV3IHRvIG1hdGNoIGFcbiAqIHBhcnRpY3VsYXIgcm91dGUuXG4gKlxuICogIyMjIEV4YW1wbGU6XG4gKlxuICogVGhlIGZvbGxvd2luZyByb3V0ZXMgYm90aCBtYXRjaCB0aGUgZW1wdHkgcGF0aCwgYnV0IG9ubHkgaWYgbmF2aWdhdGVkIHdpdGggYSBzcGVjaWZpYyBoaW50LlxuICogYGBgdHNcbiAqIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICogICB7cGF0aDogJycsIGNhbk1hdGNoOiBbY2FuTWF0Y2hXb3JrYmVuY2hWaWV3KCduYXZpZ2F0b3InKV0sIGNvbXBvbmVudDogTmF2aWdhdG9yQ29tcG9uZW50fSxcbiAqICAge3BhdGg6ICcnLCBjYW5NYXRjaDogW2Nhbk1hdGNoV29ya2JlbmNoVmlldygnb3V0bGluZScpXSwgY29tcG9uZW50OiBPdXRsaW5lQ29tcG9uZW50fSxcbiAqIF07XG4gKiBgYGBcbiAqXG4gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgbmF2aWdhdGVzIHRvIHRoZSBgT3V0bGluZUNvbXBvbmVudGAsIHBhc3NpbmcgYSBoaW50IHRvIG1hdGNoIHRoZSByb3V0ZS5cbiAqIGBgYHRzXG4gKiBpbmplY3QoV29ya2JlbmNoUm91dGVyKS5uYXZpZ2F0ZShbXSwge2hpbnQ6ICdvdXRsaW5lJ30pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5NYXRjaFdvcmtiZW5jaFZpZXcobmF2aWdhdGlvbkhpbnQ6IHN0cmluZyk6IENhbk1hdGNoRm47XG4vKipcbiAqIE1hdGNoZXMgdGhlIHJvdXRlIGlmLCBvciBpZiBub3QgdGFyZ2V0IG9mIGEgd29ya2JlbmNoIHZpZXcuXG4gKlxuICogQ2FuIGJlIHVzZWQgdG8gZ3VhcmQgdGhlIGFwcGxpY2F0aW9uJ3Mgcm9vdCByb3V0ZSBmcm9tIG1hdGNoaW5nIGFuIGVtcHR5IHBhdGggdmlldyBuYXZpZ2F0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuTWF0Y2hXb3JrYmVuY2hWaWV3KGNhbk1hdGNoOiBib29sZWFuKTogQ2FuTWF0Y2hGbjtcbmV4cG9ydCBmdW5jdGlvbiBjYW5NYXRjaFdvcmtiZW5jaFZpZXcoY29uZGl0aW9uOiBzdHJpbmcgfCBib29sZWFuKTogQ2FuTWF0Y2hGbiB7XG4gIHJldHVybiAoKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3Qgb3V0bGV0ID0gaW5qZWN0KFdPUktCRU5DSF9BVVhJTElBUllfUk9VVEVfT1VUTEVULCB7b3B0aW9uYWw6IHRydWV9KTtcblxuICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7XG4gICAgICBjYXNlIHRydWU6XG4gICAgICAgIHJldHVybiBXb3JrYmVuY2hMYXlvdXRzLmlzVmlld0lkKG91dGxldCk7XG4gICAgICBjYXNlIGZhbHNlOlxuICAgICAgICByZXR1cm4gIVdvcmtiZW5jaExheW91dHMuaXNWaWV3SWQob3V0bGV0KTtcbiAgICAgIGRlZmF1bHQ6IHsgLy8gaGludFxuICAgICAgICBpZiAoIVdvcmtiZW5jaExheW91dHMuaXNWaWV3SWQob3V0bGV0KSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxheW91dCA9IGluamVjdCjJtVdvcmtiZW5jaFJvdXRlcikuZ2V0Q3VycmVudE5hdmlnYXRpb25Db250ZXh0KCkubGF5b3V0O1xuICAgICAgICBjb25zdCB2aWV3ID0gbGF5b3V0LnZpZXcoe3ZpZXdJZDogb3V0bGV0fSwge29yRWxzZTogbnVsbH0pO1xuICAgICAgICByZXR1cm4gdmlldz8ubmF2aWdhdGlvbj8uaGludCA9PT0gY29uZGl0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBNYXRjaGVzIGlmIHRoZSB2aWV3IGhhcyBiZWVuIG5hdmlnYXRlZCAob3IgY2Fubm90IGJlIGZvdW5kKS5cbiAqXG4gKiBUaGUgdmlldyBjYW5ub3QgYmUgZm91bmQgZHVyaW5nIGluaXRpYWwgbmF2aWdhdGlvbiBhcyB0aGUgd29ya2JlbmNoIGxheW91dCBpcyBsb2FkZWQgYXN5bmNocm9ub3VzbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBjYW5NYXRjaE5vdEZvdW5kUGFnZTogQ2FuTWF0Y2hGbiA9ICgpOiBib29sZWFuID0+IHtcbiAgY29uc3Qgb3V0bGV0ID0gaW5qZWN0KFdPUktCRU5DSF9BVVhJTElBUllfUk9VVEVfT1VUTEVULCB7b3B0aW9uYWw6IHRydWV9KTtcblxuICBpZiAoIVdvcmtiZW5jaExheW91dHMuaXNWaWV3SWQob3V0bGV0KSkge1xuICAgIHRocm93IEVycm9yKGBbVmlld0Vycm9yXSBDYW5NYXRjaEZuIG11c3QgYmUgaW5zdGFsbGVkIG9uIGEgdmlldyBhdXhpbGlhcnkgcm91dGUuIFtvdXRsZXQ9JHtvdXRsZXR9XWApO1xuICB9XG5cbiAgY29uc3QgbGF5b3V0ID0gaW5qZWN0KMm1V29ya2JlbmNoUm91dGVyKS5nZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQoKS5sYXlvdXQ7XG4gIGNvbnN0IHZpZXcgPSBsYXlvdXQudmlldyh7dmlld0lkOiBvdXRsZXR9LCB7b3JFbHNlOiBudWxsfSk7XG4gIHJldHVybiAhdmlldyB8fCAhIXZpZXcubmF2aWdhdGlvbjtcbn07XG4iXX0=
|