@vcmap/ui 6.2.0-rc.1 → 6.2.0-rc.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/build/build.js +52 -7
- package/build/postInstall.js +32 -0
- package/config/dev.config.json +40 -0
- package/config/pano.config.json +420 -0
- package/config/projects.config.json +5 -0
- package/dist/assets/cesium/Workers/{chunk-P6TRGU3S.js → chunk-2PFJ45KC.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-7ZZ5LMZY.js → chunk-35ALNMG5.js} +15 -15
- package/dist/assets/cesium/Workers/{chunk-7YIOHQWH.js → chunk-35EJBV7X.js} +13 -13
- package/dist/assets/cesium/Workers/{chunk-EJVGYGLF.js → chunk-3E3OH65K.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-JBSKHTNX.js → chunk-4FHUY275.js} +4 -4
- package/dist/assets/cesium/Workers/{chunk-Z2QP3CXW.js → chunk-565T3GIE.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-IZGUQO6Q.js → chunk-5LGDCKCZ.js} +13 -13
- package/dist/assets/cesium/Workers/{chunk-3IFRSGEY.js → chunk-6JXJYBWN.js} +9 -9
- package/dist/assets/cesium/Workers/{chunk-WGDFYAGC.js → chunk-6RAEC3AW.js} +4 -4
- package/dist/assets/cesium/Workers/{chunk-44QAAS4P.js → chunk-6Z67VIOY.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-NGZJIN5Z.js → chunk-ADDGROZ6.js} +4 -4
- package/dist/assets/cesium/Workers/{chunk-GBT7MJ6X.js → chunk-ASYGMBRG.js} +1 -1
- package/dist/assets/cesium/Workers/{chunk-C4WPMOKT.js → chunk-BABDQOWA.js} +5 -5
- package/dist/assets/cesium/Workers/{chunk-IBRIWOCM.js → chunk-BQHHGIFB.js} +13 -13
- package/dist/assets/cesium/Workers/{chunk-LLAF3CPH.js → chunk-C33B4KHN.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-JXVLNVXC.js → chunk-CMCR2ZK4.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-3HQMMUPU.js → chunk-EGGJIATZ.js} +1 -1
- package/dist/assets/cesium/Workers/{chunk-RJM36CNY.js → chunk-EWS5LXAB.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-OPP2SKMA.js → chunk-FDXPBTSX.js} +12 -12
- package/dist/assets/cesium/Workers/{chunk-QN6TBED4.js → chunk-FIFQP4YX.js} +11 -11
- package/dist/assets/cesium/Workers/{chunk-JISPSEF3.js → chunk-HOGDZ2EB.js} +4 -4
- package/dist/assets/cesium/Workers/{chunk-2PTKXHJB.js → chunk-I4NB77NH.js} +10 -10
- package/dist/assets/cesium/Workers/{chunk-QQOZO7KO.js → chunk-JX4A2BCF.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-XIUSRWL6.js → chunk-K6PDUSH6.js} +5 -5
- package/dist/assets/cesium/Workers/{chunk-KHZNBFOH.js → chunk-KFHZFU5O.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-U5HSOKPQ.js → chunk-KYGXRFA6.js} +1 -1
- package/dist/assets/cesium/Workers/{chunk-56EDBCGT.js → chunk-LNWNAP2C.js} +10 -10
- package/dist/assets/cesium/Workers/{chunk-YCDZX5LS.js → chunk-LWN2B3KW.js} +1 -1
- package/dist/assets/cesium/Workers/{chunk-TI3TRKIC.js → chunk-LXLABO2L.js} +10 -10
- package/dist/assets/cesium/Workers/{chunk-C3EQ27WF.js → chunk-MB6B2UUL.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-57H6I3SV.js → chunk-MZSRINXK.js} +5 -5
- package/dist/assets/cesium/Workers/{chunk-ZVUUPJEM.js → chunk-NBI3GZSK.js} +17 -17
- package/dist/assets/cesium/Workers/{chunk-O72GZTSE.js → chunk-NUAXNUP5.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-M24KHENR.js → chunk-PNZR4RLL.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-HJMNR3GC.js → chunk-Q4K22DSJ.js} +11 -11
- package/dist/assets/cesium/Workers/{chunk-2LOWCAMW.js → chunk-Q4OS4EFN.js} +13 -13
- package/dist/assets/cesium/Workers/{chunk-TK5IIG2F.js → chunk-QLIMO7TQ.js} +4 -4
- package/dist/assets/cesium/Workers/{chunk-EDLRS3AW.js → chunk-RQ4F6YFU.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-JSQJDZI4.js → chunk-SB67D3JL.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-RTJKHZWU.js → chunk-SS6WRJ5J.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-L5GODJAR.js → chunk-TC4NTWIJ.js} +14 -14
- package/dist/assets/cesium/Workers/{chunk-IZJ42N4W.js → chunk-TKNA6WSZ.js} +17 -17
- package/dist/assets/cesium/Workers/{chunk-HP5XLODI.js → chunk-VQYEP77L.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-YSIJTJ7N.js → chunk-WKS5H3VW.js} +5 -5
- package/dist/assets/cesium/Workers/{chunk-XWOUPGUF.js → chunk-WPGX7DEA.js} +1 -1
- package/dist/assets/cesium/Workers/{chunk-6SQMLVGV.js → chunk-X3EPFVG3.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-NDDI2LWR.js → chunk-XH7MSR3A.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-FFLMY4TE.js → chunk-YDEBBUNQ.js} +5 -5
- package/dist/assets/cesium/Workers/{chunk-YK3QIKY7.js → chunk-YSVI7YNN.js} +9 -9
- package/dist/assets/cesium/Workers/{chunk-BVKITG4N.js → chunk-YVAS5WPH.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-X7IQYYHF.js → chunk-Z4QVAZM6.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-LJ2JQHJT.js → chunk-ZXOK77EW.js} +7 -7
- package/dist/assets/cesium/Workers/combineGeometry.js +22 -22
- package/dist/assets/cesium/Workers/createBoxGeometry.js +16 -16
- package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +14 -14
- package/dist/assets/cesium/Workers/createCircleGeometry.js +24 -24
- package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +17 -17
- package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +31 -31
- package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +29 -29
- package/dist/assets/cesium/Workers/createCorridorGeometry.js +27 -27
- package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +26 -26
- package/dist/assets/cesium/Workers/createCylinderGeometry.js +18 -18
- package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +16 -16
- package/dist/assets/cesium/Workers/createEllipseGeometry.js +24 -24
- package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +17 -17
- package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +17 -17
- package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +16 -16
- package/dist/assets/cesium/Workers/createFrustumGeometry.js +16 -16
- package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +16 -16
- package/dist/assets/cesium/Workers/createGeometry.js +22 -22
- package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +20 -20
- package/dist/assets/cesium/Workers/createPlaneGeometry.js +14 -14
- package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +13 -13
- package/dist/assets/cesium/Workers/createPolygonGeometry.js +30 -30
- package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +28 -28
- package/dist/assets/cesium/Workers/createPolylineGeometry.js +23 -23
- package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +29 -29
- package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +25 -25
- package/dist/assets/cesium/Workers/createRectangleGeometry.js +25 -25
- package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +18 -18
- package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +21 -21
- package/dist/assets/cesium/Workers/createSphereGeometry.js +17 -17
- package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +16 -16
- package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +3 -3
- package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +13 -13
- package/dist/assets/cesium/Workers/createVectorTileGeometries.js +22 -22
- package/dist/assets/cesium/Workers/createVectorTilePoints.js +12 -12
- package/dist/assets/cesium/Workers/createVectorTilePolygons.js +20 -20
- package/dist/assets/cesium/Workers/createVectorTilePolylines.js +13 -13
- package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +20 -20
- package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +20 -20
- package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +17 -17
- package/dist/assets/cesium/Workers/createWallGeometry.js +22 -22
- package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +21 -21
- package/dist/assets/cesium/Workers/decodeDraco.js +11 -11
- package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/dist/assets/cesium/Workers/decodeI3S.js +10 -10
- package/dist/assets/cesium/Workers/transcodeKTX2.js +7 -7
- package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
- package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +20 -20
- package/dist/assets/{cesium-ac6c193a.js → cesium-7d4ab914.js} +44609 -44606
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/core-deeb2b8d.js +34569 -0
- package/dist/assets/core-workers/panoramaImageWorker.js +1 -0
- package/dist/assets/core-workers/panoramaImageWorker.js-f8148bc6.js +34 -0
- package/dist/assets/core.js +1 -1
- package/dist/assets/{ol-94c57f2e.js → ol-8db5c824.js} +1 -1
- package/dist/assets/ol.js +1 -1
- package/dist/assets/start.js +3 -1
- package/dist/assets/ui-62439099.css +1 -0
- package/dist/assets/{ui-4f308e45.js → ui-62439099.js} +9581 -8853
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.js +1 -1
- package/dist/assets/{vuetify-99195777.js → vuetify-439ba6d5.js} +1 -1
- package/dist/assets/vuetify.js +1 -1
- package/index.d.ts +14 -4
- package/index.js +8 -6
- package/package.json +5 -4
- package/plugins/@vcmap-show-case/panorama-inspector/package.json +10 -0
- package/plugins/@vcmap-show-case/panorama-inspector/src/PanoramaDebugInfo.vue +86 -0
- package/plugins/@vcmap-show-case/panorama-inspector/src/PanoramaDebugTools.vue +259 -0
- package/plugins/@vcmap-show-case/panorama-inspector/src/PanoramaInspector.vue +31 -0
- package/plugins/@vcmap-show-case/panorama-inspector/src/api.js +161 -0
- package/plugins/@vcmap-show-case/panorama-inspector/src/index.js +57 -0
- package/plugins/@vcmap-show-case/panorama-inspector/src/showClickInteraction.js +20 -0
- package/plugins/package.json +1 -1
- package/src/actions/actionHelper.d.ts +16 -11
- package/src/actions/actionHelper.js +190 -87
- package/src/actions/flightActions.d.ts +10 -0
- package/src/actions/flightActions.js +109 -13
- package/src/application/VcsApp.vue +11 -0
- package/src/application/VcsApp.vue.d.ts +4 -0
- package/src/application/VcsContainer.vue.d.ts +4 -0
- package/src/application/VcsMainMap.vue +40 -2
- package/src/application/VcsMainMap.vue.d.ts +4 -0
- package/src/application/VcsMap.vue +0 -9
- package/src/application/VcsNavbar.vue +2 -1
- package/src/callback/activateMapCallback.d.ts +30 -0
- package/src/callback/activateMapCallback.js +63 -0
- package/src/callback/activateOverviewMapCallback.d.ts +7 -0
- package/src/callback/activateOverviewMapCallback.js +26 -0
- package/src/callback/deactivateOverviewMapCallback.d.ts +7 -0
- package/src/callback/deactivateOverviewMapCallback.js +20 -0
- package/src/components/flight/VcsFlightAnchorsComponent.vue +1 -0
- package/src/components/flight/VcsFlightPlayer.vue +31 -17
- package/src/components/flight/VcsFlightPlayer.vue.d.ts +1 -0
- package/src/components/lists/VcsGroupedList.vue +10 -2
- package/src/components/lists/VcsTreeNode.vue +3 -0
- package/src/components/plugins/VcsLoadingOverlay.vue +138 -0
- package/src/components/plugins/VcsLoadingOverlay.vue.d.ts +2 -0
- package/src/components/plugins/VcsWorkspaceWrapper.vue +104 -0
- package/src/components/plugins/VcsWorkspaceWrapper.vue.d.ts +82 -0
- package/src/components/section/VcsExpansionPanel.vue +13 -3
- package/src/components/vector-properties/VcsFeatureEditingWindow.vue +20 -1
- package/src/components/vector-properties/VcsFeatureEditingWindow.vue.d.ts +11 -0
- package/src/components/vector-properties/VcsFeatureInputEditor.vue +166 -0
- package/src/components/vector-properties/VcsFeatureInputEditor.vue.d.ts +17 -0
- package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +1 -1
- package/src/contentTree/LayerSwap.vue +15 -6
- package/src/contentTree/contentTreeCollection.js +2 -2
- package/src/contentTree/contentTreeItem.d.ts +2 -2
- package/src/contentTree/wmsGroupContentTreeItem.js +10 -3
- package/src/featureInfo/featureInfo.js +6 -25
- package/src/featureInfo/iframeWmsFeatureInfoView.d.ts +10 -0
- package/src/featureInfo/iframeWmsFeatureInfoView.js +42 -0
- package/src/i18n/de.d.ts +25 -7
- package/src/i18n/de.js +14 -0
- package/src/i18n/en.d.ts +25 -7
- package/src/i18n/en.js +14 -0
- package/src/legend/VcsLegend.vue +5 -1
- package/src/navigation/MapNavigation.vue +82 -45
- package/src/navigation/MapNavigation.vue.d.ts +3 -34
- package/src/navigation/TiltSlider.vue +10 -2
- package/src/navigation/TiltSlider.vue.d.ts +20 -0
- package/src/navigation/VcsCompass.vue +3 -1
- package/src/navigation/overviewMap.d.ts +23 -8
- package/src/navigation/overviewMap.js +82 -60
- package/src/search/ResultsComponent.vue +8 -1
- package/src/search/SearchComponent.vue +3 -17
- package/src/search/SearchComponent.vue.d.ts +1 -2
- package/src/search/search.d.ts +13 -0
- package/src/search/search.js +21 -1
- package/src/uiConfig.d.ts +9 -0
- package/src/uiConfig.js +1 -0
- package/dist/assets/core-de8e51b5.js +0 -26236
- package/dist/assets/ui-4f308e45.css +0 -1
- /package/dist/assets/{vue-62303c82.js → vue-1b861f55.js} +0 -0
- /package/dist/assets/{vuetify-99195777.css → vuetify-439ba6d5.css} +0 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import {
|
|
2
|
+
GeometryInstance,
|
|
3
|
+
Material,
|
|
4
|
+
MaterialAppearance,
|
|
5
|
+
Matrix4,
|
|
6
|
+
Primitive,
|
|
7
|
+
SphereGeometry,
|
|
8
|
+
Color,
|
|
9
|
+
Cartesian3,
|
|
10
|
+
Globe,
|
|
11
|
+
ImageryLayer as CesiumImageryLayer,
|
|
12
|
+
OpenStreetMapImageryProvider,
|
|
13
|
+
} from '@vcmap-cesium/engine';
|
|
14
|
+
import {
|
|
15
|
+
mercatorToCartesian,
|
|
16
|
+
PanoramaMap,
|
|
17
|
+
PanoramaDatasetLayer,
|
|
18
|
+
} from '@vcmap/core';
|
|
19
|
+
import { reactive, ref, computed, watch } from 'vue';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @typedef {Object} ClickedPrimitive
|
|
23
|
+
* @property {boolean} show
|
|
24
|
+
* @property {Cartesian3} position
|
|
25
|
+
* @property {() => void} destroy
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @param {import("@vcmap/core").PanoramaMap} map
|
|
30
|
+
* @param {ShowClickInteraction} clickedInteraction
|
|
31
|
+
* @returns {ClickedPrimitive}
|
|
32
|
+
*/
|
|
33
|
+
export function setupClickedPrimitive(map, clickedInteraction) {
|
|
34
|
+
const position = new Cartesian3();
|
|
35
|
+
const appearance = new MaterialAppearance({
|
|
36
|
+
flat: true,
|
|
37
|
+
material: Material.fromType('Color', { color: Color.ORANGERED }),
|
|
38
|
+
});
|
|
39
|
+
const primitive = new Primitive({
|
|
40
|
+
geometryInstances: [
|
|
41
|
+
new GeometryInstance({
|
|
42
|
+
geometry: new SphereGeometry({
|
|
43
|
+
radius: 0.2,
|
|
44
|
+
}),
|
|
45
|
+
}),
|
|
46
|
+
],
|
|
47
|
+
appearance,
|
|
48
|
+
depthFailAppearance: new MaterialAppearance({
|
|
49
|
+
translucent: true,
|
|
50
|
+
material: Material.fromType('Color', {
|
|
51
|
+
color: Color.LIMEGREEN.withAlpha(0.6),
|
|
52
|
+
}),
|
|
53
|
+
}),
|
|
54
|
+
asynchronous: false,
|
|
55
|
+
show: false,
|
|
56
|
+
modelMatrix: Matrix4.IDENTITY,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
map.getCesiumWidget().scene.primitives.add(primitive);
|
|
60
|
+
clickedInteraction.clicked.addEventListener((event) => {
|
|
61
|
+
mercatorToCartesian(event.position, position);
|
|
62
|
+
primitive.modelMatrix = Matrix4.fromTranslation(position);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
return {
|
|
66
|
+
get show() {
|
|
67
|
+
return primitive.show;
|
|
68
|
+
},
|
|
69
|
+
set show(value) {
|
|
70
|
+
primitive.show = value;
|
|
71
|
+
},
|
|
72
|
+
get position() {
|
|
73
|
+
return position;
|
|
74
|
+
},
|
|
75
|
+
destroy() {
|
|
76
|
+
map.getCesiumWidget().scene.primitives.remove(primitive);
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @param {import("@vcmap/core").VcsApp} app
|
|
83
|
+
* @returns {{ action: import("@vcmap/ui").Action, destroy: () => void }}
|
|
84
|
+
*/
|
|
85
|
+
export function createOsmGlobeAction(app) {
|
|
86
|
+
/** @type {import("@vcmap/core").PanoramaMap} */
|
|
87
|
+
const map = app.maps.getByType(PanoramaMap.className)[0];
|
|
88
|
+
|
|
89
|
+
const action = reactive({
|
|
90
|
+
name: 'OSM Globe',
|
|
91
|
+
icon: 'mdi-earth',
|
|
92
|
+
title: 'Open Street Map Globe',
|
|
93
|
+
active: false,
|
|
94
|
+
callback() {
|
|
95
|
+
if (action.active) {
|
|
96
|
+
map.getCesiumWidget().scene.globe = undefined;
|
|
97
|
+
action.active = false;
|
|
98
|
+
} else {
|
|
99
|
+
const { scene } = map.getCesiumWidget();
|
|
100
|
+
scene.globe = new Globe();
|
|
101
|
+
scene.imageryLayers.add(
|
|
102
|
+
new CesiumImageryLayer(
|
|
103
|
+
new OpenStreetMapImageryProvider({ maximumLevel: 18 }),
|
|
104
|
+
),
|
|
105
|
+
);
|
|
106
|
+
action.active = true;
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
return {
|
|
112
|
+
action,
|
|
113
|
+
destroy: () => {
|
|
114
|
+
if (map.initialized) {
|
|
115
|
+
map.getCesiumWidget().scene.globe = undefined;
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* @param {import("@vcmap/core").VcsApp} app
|
|
123
|
+
* @returns {{action: import("@vcmap/ui").VcsAction, destroy(): void}}
|
|
124
|
+
*/
|
|
125
|
+
export function createMapMarkerAction(app) {
|
|
126
|
+
const hideFootprint = ref(false);
|
|
127
|
+
|
|
128
|
+
const hideFootprintWatcher = watch(hideFootprint, () => {
|
|
129
|
+
for (const layer of app.layers) {
|
|
130
|
+
if (layer instanceof PanoramaDatasetLayer) {
|
|
131
|
+
layer.hideInPanorama = hideFootprint.value;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
const layerAdded = app.layers.added.addEventListener((layer) => {
|
|
137
|
+
if (layer instanceof PanoramaDatasetLayer) {
|
|
138
|
+
layer.hideInPanorama = hideFootprint.value;
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
const action = reactive({
|
|
143
|
+
name: 'Hide Footprint',
|
|
144
|
+
icon: computed(() => {
|
|
145
|
+
return hideFootprint.value ? 'mdi-map-marker-off' : 'mdi-map-marker';
|
|
146
|
+
}),
|
|
147
|
+
title: 'Hide Footprint',
|
|
148
|
+
active: computed(() => hideFootprint.value),
|
|
149
|
+
callback() {
|
|
150
|
+
hideFootprint.value = !hideFootprint.value;
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
return {
|
|
155
|
+
action,
|
|
156
|
+
destroy() {
|
|
157
|
+
hideFootprintWatcher();
|
|
158
|
+
layerAdded();
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ButtonLocation, createToggleAction, WindowSlot } from '@vcmap/ui';
|
|
2
|
+
import { name, version, mapVersion } from '../package.json';
|
|
3
|
+
import PanoramaInspector from './PanoramaInspector.vue';
|
|
4
|
+
import ShowClickInteraction from './showClickInteraction.js';
|
|
5
|
+
|
|
6
|
+
export default function panoramaInspector() {
|
|
7
|
+
let destroy;
|
|
8
|
+
let clickedInteraction;
|
|
9
|
+
let removeInteraction;
|
|
10
|
+
let clickedPrimitive;
|
|
11
|
+
|
|
12
|
+
return {
|
|
13
|
+
name,
|
|
14
|
+
version,
|
|
15
|
+
mapVersion,
|
|
16
|
+
get clickedInteraction() {
|
|
17
|
+
return clickedInteraction;
|
|
18
|
+
},
|
|
19
|
+
get clickedPrimitive() {
|
|
20
|
+
return clickedPrimitive;
|
|
21
|
+
},
|
|
22
|
+
async initialize(app) {
|
|
23
|
+
const { action, destroy: destroyAction } = createToggleAction(
|
|
24
|
+
{
|
|
25
|
+
name: 'Panorama Inspector',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: 'panorama-inspector',
|
|
29
|
+
state: {
|
|
30
|
+
headerTitle: 'panoramaInspector.title',
|
|
31
|
+
},
|
|
32
|
+
component: PanoramaInspector,
|
|
33
|
+
slot: WindowSlot.DYNAMIC_RIGHT,
|
|
34
|
+
},
|
|
35
|
+
app.windowManager,
|
|
36
|
+
name,
|
|
37
|
+
);
|
|
38
|
+
app.navbarManager.add(
|
|
39
|
+
{ id: 'panorama-inspector', action },
|
|
40
|
+
name,
|
|
41
|
+
ButtonLocation.MENU,
|
|
42
|
+
);
|
|
43
|
+
clickedInteraction = new ShowClickInteraction();
|
|
44
|
+
removeInteraction =
|
|
45
|
+
app.maps.eventHandler.addPersistentInteraction(clickedInteraction);
|
|
46
|
+
destroy = destroyAction;
|
|
47
|
+
},
|
|
48
|
+
destroy() {
|
|
49
|
+
destroy?.();
|
|
50
|
+
removeInteraction?.();
|
|
51
|
+
clickedInteraction?.destroy();
|
|
52
|
+
clickedInteraction = undefined;
|
|
53
|
+
clickedPrimitive?.destroy();
|
|
54
|
+
clickedPrimitive = undefined;
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AbstractInteraction, EventType, VcsEvent } from '@vcmap/core';
|
|
2
|
+
|
|
3
|
+
export default class ShowClickInteraction extends AbstractInteraction {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(EventType.CLICK);
|
|
6
|
+
|
|
7
|
+
this.clicked = new VcsEvent();
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
pipe(event) {
|
|
11
|
+
if (
|
|
12
|
+
event.map.className === 'PanoramaMap' &&
|
|
13
|
+
!event.map.getCesiumWidget().scene.screenSpaceCameraController
|
|
14
|
+
.enableInputs
|
|
15
|
+
) {
|
|
16
|
+
this.clicked.raiseEvent(event);
|
|
17
|
+
}
|
|
18
|
+
return Promise.resolve(event);
|
|
19
|
+
}
|
|
20
|
+
}
|
package/plugins/package.json
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"@vcmap/cesium-filters": "^2.0.0",
|
|
21
21
|
"@vcmap/search-nominatim": "^2.0.0",
|
|
22
22
|
"@vcmap/create-link": "^3.0.0",
|
|
23
|
-
"@vcmap/module-selector": "^
|
|
23
|
+
"@vcmap/module-selector": "^3.0.0",
|
|
24
24
|
"@vcmap/line-of-sight": "^1.0.0",
|
|
25
25
|
"@vcmap/layer-slider": "^2.0.0",
|
|
26
26
|
"@vcmap/vcs-solar-balloon": "^2.0.0",
|
|
@@ -54,17 +54,6 @@ export function createSearchButtonAction(app: import("../vcsUiApp.js").default):
|
|
|
54
54
|
searchAction: import("vue").Ref<import("vue").UnwrapRef<VcsAction> | null>;
|
|
55
55
|
destroy: () => void;
|
|
56
56
|
};
|
|
57
|
-
/**
|
|
58
|
-
* Creates an action which will toggle the overview map (opening & closing the window and activating/ deactivating the overview map).
|
|
59
|
-
* @param {import("../navigation/overviewMap.js").default} overviewMap
|
|
60
|
-
* @param {import("../manager/window/windowManager.js").WindowComponentOptions} windowComponent
|
|
61
|
-
* @param {import("../manager/window/windowManager.js").default} windowManager
|
|
62
|
-
* @returns {{action: VcsAction, destroy: function(): void}}
|
|
63
|
-
*/
|
|
64
|
-
export function createOverviewMapAction(overviewMap: import("../navigation/overviewMap.js").default, windowComponent: import("../manager/window/windowManager.js").WindowComponentOptions, windowManager: import("../manager/window/windowManager.js").default): {
|
|
65
|
-
action: VcsAction;
|
|
66
|
-
destroy: () => void;
|
|
67
|
-
};
|
|
68
57
|
/**
|
|
69
58
|
* Creates a header less window which will close if anything outside of the window is clicked. The window will open
|
|
70
59
|
* at the clicked position (the actions position) by default, unless the window component already has a position set.
|
|
@@ -113,6 +102,22 @@ export function createZoomToFeatureAction(actionOptions: ActionOptions, feature:
|
|
|
113
102
|
* @param {PointerEvent} [p]
|
|
114
103
|
*/
|
|
115
104
|
export function callSafeAction(action: VcsAction, p?: PointerEvent | undefined): void;
|
|
105
|
+
/**
|
|
106
|
+
* Adds a loading overlay to the application.
|
|
107
|
+
* @param {import("../vcsUiApp.js").default} app
|
|
108
|
+
* @param {string|symbol} owner The owner of the loading overlay.
|
|
109
|
+
* @param {string} id The ID of the loading overlay.
|
|
110
|
+
* @param {{progress?:import('vue').Ref<number>|undefined, title?:string, text?:string, cancel?:Function, maxWidth?:number|string, persistent?:boolean}} [options] The options for the loading overlay, passed as props.
|
|
111
|
+
* @returns {Function} A function to remove the loading overlay.
|
|
112
|
+
*/
|
|
113
|
+
export function addLoadingOverlay(app: import("../vcsUiApp.js").default, owner: string | symbol, id: string, options?: {
|
|
114
|
+
progress?: import('vue').Ref<number> | undefined;
|
|
115
|
+
title?: string | undefined;
|
|
116
|
+
text?: string | undefined;
|
|
117
|
+
cancel?: Function | undefined;
|
|
118
|
+
maxWidth?: string | number | undefined;
|
|
119
|
+
persistent?: boolean | undefined;
|
|
120
|
+
} | undefined): Function;
|
|
116
121
|
export const searchComponentId: "searchId";
|
|
117
122
|
export type ActionOptions = Omit<VcsAction, 'callback'>;
|
|
118
123
|
export type ActionCallback = (p?: PointerEvent) => (void | Promise<void>);
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
Extent,
|
|
7
7
|
MapCollection,
|
|
8
8
|
mercatorProjection,
|
|
9
|
+
PanoramaMap,
|
|
9
10
|
Viewpoint,
|
|
10
11
|
} from '@vcmap/core';
|
|
11
12
|
import { Feature } from 'ol';
|
|
@@ -18,6 +19,7 @@ import {
|
|
|
18
19
|
getTargetSize,
|
|
19
20
|
} from '../manager/window/windowHelper.js';
|
|
20
21
|
import SearchComponent from '../search/SearchComponent.vue';
|
|
22
|
+
import VcsLoadingOverlay from '../components/plugins/VcsLoadingOverlay.vue';
|
|
21
23
|
|
|
22
24
|
/**
|
|
23
25
|
* @typedef {Omit<VcsAction, 'callback'>} ActionOptions
|
|
@@ -56,6 +58,64 @@ export function getActionFromOptions(options) {
|
|
|
56
58
|
return options;
|
|
57
59
|
}
|
|
58
60
|
|
|
61
|
+
/**
|
|
62
|
+
* @param {import("@vcmap/core").PanoramaMap} map
|
|
63
|
+
* @param {import("../actions/actionHelper.js").VcsAction} action
|
|
64
|
+
* @returns {() => void}
|
|
65
|
+
*/
|
|
66
|
+
function setupDisablePanorama(map, action) {
|
|
67
|
+
const datasetListeners = new Map();
|
|
68
|
+
|
|
69
|
+
action.disabled = true;
|
|
70
|
+
const setupDataset = (dataset) => {
|
|
71
|
+
datasetListeners.get(dataset.name)?.();
|
|
72
|
+
if (dataset.active) {
|
|
73
|
+
action.disabled = false;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const listener = dataset.stateChanged.addEventListener(() => {
|
|
77
|
+
if (!dataset.active) {
|
|
78
|
+
action.disabled = ![...map.layerCollection].find(
|
|
79
|
+
(d) => d.active && d.className === 'PanoramaDatasetLayer',
|
|
80
|
+
);
|
|
81
|
+
} else if (dataset.active) {
|
|
82
|
+
action.disabled = false;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
datasetListeners.set(dataset.name, () => {
|
|
87
|
+
listener();
|
|
88
|
+
action.disabled = ![...map.layerCollection].find(
|
|
89
|
+
(d) => d.active && d.className === 'PanoramaDatasetLayer',
|
|
90
|
+
);
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
let datasetCollectionListeners = [];
|
|
95
|
+
const setupDatasets = () => {
|
|
96
|
+
datasetCollectionListeners.forEach((cb) => cb());
|
|
97
|
+
datasetListeners.forEach((cb) => cb());
|
|
98
|
+
datasetListeners.clear();
|
|
99
|
+
|
|
100
|
+
[...map.layerCollection].forEach(setupDataset);
|
|
101
|
+
|
|
102
|
+
datasetCollectionListeners = [
|
|
103
|
+
map.layerCollection.added.addEventListener(setupDataset),
|
|
104
|
+
map.layerCollection.removed.addEventListener((removedDataset) => {
|
|
105
|
+
datasetListeners.get(removedDataset.name)?.();
|
|
106
|
+
datasetListeners.delete(removedDataset.name);
|
|
107
|
+
}),
|
|
108
|
+
];
|
|
109
|
+
};
|
|
110
|
+
setupDatasets();
|
|
111
|
+
|
|
112
|
+
return () => {
|
|
113
|
+
datasetCollectionListeners.forEach((cb) => cb());
|
|
114
|
+
datasetListeners.forEach((cb) => cb());
|
|
115
|
+
datasetListeners.clear();
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
|
|
59
119
|
/**
|
|
60
120
|
* @param {ActionOptions} actionOptions
|
|
61
121
|
* @param {string} mapName
|
|
@@ -79,11 +139,23 @@ export function createMapButtonAction(actionOptions, mapName, maps) {
|
|
|
79
139
|
maps.setActiveMap(mapName);
|
|
80
140
|
},
|
|
81
141
|
});
|
|
82
|
-
|
|
83
|
-
|
|
142
|
+
|
|
143
|
+
const map = maps.getByKey(mapName);
|
|
144
|
+
let datasetListener;
|
|
145
|
+
if (map instanceof PanoramaMap) {
|
|
146
|
+
datasetListener = setupDisablePanorama(map, action);
|
|
147
|
+
}
|
|
148
|
+
const destroyListener = maps.mapActivated.addEventListener((activatedMap) => {
|
|
149
|
+
action.active = activatedMap?.name === mapName;
|
|
84
150
|
});
|
|
85
151
|
|
|
86
|
-
return {
|
|
152
|
+
return {
|
|
153
|
+
action,
|
|
154
|
+
destroy() {
|
|
155
|
+
datasetListener?.();
|
|
156
|
+
destroyListener();
|
|
157
|
+
},
|
|
158
|
+
};
|
|
87
159
|
}
|
|
88
160
|
|
|
89
161
|
/**
|
|
@@ -145,6 +217,64 @@ export function createToggleAction(
|
|
|
145
217
|
|
|
146
218
|
export const searchComponentId = 'searchId';
|
|
147
219
|
|
|
220
|
+
/**
|
|
221
|
+
* @param {import("../vcsUiApp.js").default} app
|
|
222
|
+
* @returns {{action: import("vue").UnwrapRef<VcsAction>, destroy: function():void}}
|
|
223
|
+
*/
|
|
224
|
+
function createSearchAction(app) {
|
|
225
|
+
const windowComponent = {
|
|
226
|
+
id: searchComponentId,
|
|
227
|
+
component: SearchComponent,
|
|
228
|
+
position: { width: 440 },
|
|
229
|
+
state: { hideHeader: true },
|
|
230
|
+
slot: WindowSlot.DYNAMIC_RIGHT,
|
|
231
|
+
};
|
|
232
|
+
const action = reactive({
|
|
233
|
+
name: 'search.title',
|
|
234
|
+
icon: '$vcsSearch',
|
|
235
|
+
title: 'search.tooltip',
|
|
236
|
+
active: false,
|
|
237
|
+
background: false,
|
|
238
|
+
callback() {
|
|
239
|
+
if (this.active && !this.background) {
|
|
240
|
+
app.windowManager.remove(searchComponentId);
|
|
241
|
+
this.active = false;
|
|
242
|
+
app.search.clearSearch();
|
|
243
|
+
} else {
|
|
244
|
+
app.windowManager.add(windowComponent, vcsAppSymbol);
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
});
|
|
248
|
+
const addedListener = app.windowManager.added.addEventListener(({ id }) => {
|
|
249
|
+
if (id === searchComponentId) {
|
|
250
|
+
action.active = true;
|
|
251
|
+
action.background = false;
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
const removedListener = app.windowManager.removed.addEventListener(
|
|
255
|
+
({ id }) => {
|
|
256
|
+
if (id === searchComponentId) {
|
|
257
|
+
if (app.search.currentResults.value.length) {
|
|
258
|
+
action.active = true;
|
|
259
|
+
action.background = true;
|
|
260
|
+
} else {
|
|
261
|
+
action.active = false;
|
|
262
|
+
action.background = false;
|
|
263
|
+
app.search.clearSearch();
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
);
|
|
268
|
+
|
|
269
|
+
return {
|
|
270
|
+
action,
|
|
271
|
+
destroy: () => {
|
|
272
|
+
addedListener();
|
|
273
|
+
removedListener();
|
|
274
|
+
},
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
|
|
148
278
|
/**
|
|
149
279
|
* Creates a toggle button for the search tool, which is only available, if at least one search implementation is registered.
|
|
150
280
|
* @param {import("../vcsUiApp.js").default} app
|
|
@@ -156,38 +286,21 @@ export function createSearchButtonAction(app) {
|
|
|
156
286
|
const uiConfig = app.uiConfig.config;
|
|
157
287
|
|
|
158
288
|
const determineAction = () => {
|
|
159
|
-
if (app.windowManager.has(searchComponentId)) {
|
|
160
|
-
app.windowManager.remove(searchComponentId);
|
|
161
|
-
}
|
|
162
289
|
if (
|
|
163
290
|
!uiConfig.hideSearch &&
|
|
164
291
|
app.search.size > 0 &&
|
|
165
292
|
searchAction.value === null
|
|
166
293
|
) {
|
|
167
|
-
const action =
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
icon: '$vcsSearch',
|
|
171
|
-
title: 'search.tooltip',
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
id: searchComponentId,
|
|
175
|
-
component: SearchComponent,
|
|
176
|
-
state: { hideHeader: true },
|
|
177
|
-
slot: WindowSlot.DYNAMIC_RIGHT,
|
|
178
|
-
position: {
|
|
179
|
-
width: 440,
|
|
180
|
-
},
|
|
181
|
-
},
|
|
182
|
-
app.windowManager,
|
|
183
|
-
vcsAppSymbol,
|
|
184
|
-
);
|
|
185
|
-
destroyAction = action.destroy;
|
|
186
|
-
searchAction.value = reactive(action.action);
|
|
294
|
+
const { action, destroy } = createSearchAction(app);
|
|
295
|
+
destroyAction = destroy;
|
|
296
|
+
searchAction.value = action;
|
|
187
297
|
} else if (
|
|
188
298
|
(uiConfig.hideSearch || app.search.size === 0) &&
|
|
189
299
|
searchAction.value !== null
|
|
190
300
|
) {
|
|
301
|
+
if (app.windowManager.has(searchComponentId)) {
|
|
302
|
+
app.windowManager.remove(searchComponentId);
|
|
303
|
+
}
|
|
191
304
|
destroyAction();
|
|
192
305
|
destroyAction = () => {};
|
|
193
306
|
searchAction.value = null;
|
|
@@ -210,57 +323,6 @@ export function createSearchButtonAction(app) {
|
|
|
210
323
|
return { searchAction, destroy };
|
|
211
324
|
}
|
|
212
325
|
|
|
213
|
-
/**
|
|
214
|
-
* Creates an action which will toggle the overview map (opening & closing the window and activating/ deactivating the overview map).
|
|
215
|
-
* @param {import("../navigation/overviewMap.js").default} overviewMap
|
|
216
|
-
* @param {import("../manager/window/windowManager.js").WindowComponentOptions} windowComponent
|
|
217
|
-
* @param {import("../manager/window/windowManager.js").default} windowManager
|
|
218
|
-
* @returns {{action: VcsAction, destroy: function(): void}}
|
|
219
|
-
*/
|
|
220
|
-
export function createOverviewMapAction(
|
|
221
|
-
overviewMap,
|
|
222
|
-
windowComponent,
|
|
223
|
-
windowManager,
|
|
224
|
-
) {
|
|
225
|
-
const { action, destroy } = createToggleAction(
|
|
226
|
-
{
|
|
227
|
-
name: 'overviewMapToggle',
|
|
228
|
-
icon: '$vcsMap',
|
|
229
|
-
title: 'navigation.overviewMapTooltip',
|
|
230
|
-
},
|
|
231
|
-
windowComponent,
|
|
232
|
-
windowManager,
|
|
233
|
-
vcsAppSymbol,
|
|
234
|
-
);
|
|
235
|
-
|
|
236
|
-
const listeners = [
|
|
237
|
-
windowManager.added.addEventListener(({ id }) => {
|
|
238
|
-
if (id === windowComponent.id) {
|
|
239
|
-
overviewMap.activate().catch((e) => {
|
|
240
|
-
getLogger('createOverviewMapAction').error(
|
|
241
|
-
'failed to activate overview map',
|
|
242
|
-
e,
|
|
243
|
-
);
|
|
244
|
-
windowManager.remove(windowComponent.id);
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
}),
|
|
248
|
-
windowManager.removed.addEventListener(({ id }) => {
|
|
249
|
-
if (id === windowComponent.id) {
|
|
250
|
-
overviewMap.deactivate();
|
|
251
|
-
}
|
|
252
|
-
}),
|
|
253
|
-
];
|
|
254
|
-
|
|
255
|
-
const destroyAction = () => {
|
|
256
|
-
destroy();
|
|
257
|
-
listeners.forEach((cb) => {
|
|
258
|
-
cb();
|
|
259
|
-
});
|
|
260
|
-
};
|
|
261
|
-
return { action, destroy: destroyAction };
|
|
262
|
-
}
|
|
263
|
-
|
|
264
326
|
/**
|
|
265
327
|
* Creates a header less window which will close if anything outside of the window is clicked. The window will open
|
|
266
328
|
* at the clicked position (the actions position) by default, unless the window component already has a position set.
|
|
@@ -306,10 +368,7 @@ export function createModalAction(actionOptions, modalComponent, app, owner) {
|
|
|
306
368
|
width,
|
|
307
369
|
height,
|
|
308
370
|
);
|
|
309
|
-
const position = {
|
|
310
|
-
...fittedPosition,
|
|
311
|
-
...windowPositionOptions,
|
|
312
|
-
};
|
|
371
|
+
const position = { ...fittedPosition, ...windowPositionOptions };
|
|
313
372
|
const targetSize = getTargetSize(app.maps.target);
|
|
314
373
|
if (contentHeight) {
|
|
315
374
|
if (position.bottom) {
|
|
@@ -339,12 +398,7 @@ export function createModalAction(actionOptions, modalComponent, app, owner) {
|
|
|
339
398
|
clickedWindowPosition = { x: event.x, y: event.y };
|
|
340
399
|
const state = { ...modalComponent?.state, hideHeader: true };
|
|
341
400
|
app.windowManager.add(
|
|
342
|
-
{
|
|
343
|
-
position: getPositionOptions(),
|
|
344
|
-
...component,
|
|
345
|
-
id,
|
|
346
|
-
state,
|
|
347
|
-
},
|
|
401
|
+
{ position: getPositionOptions(), ...component, id, state },
|
|
348
402
|
owner,
|
|
349
403
|
);
|
|
350
404
|
document.addEventListener('mousedown', handleMouseDown);
|
|
@@ -526,3 +580,52 @@ export function callSafeAction(action, p) {
|
|
|
526
580
|
logError(e);
|
|
527
581
|
}
|
|
528
582
|
}
|
|
583
|
+
|
|
584
|
+
/**
|
|
585
|
+
* Adds a loading overlay to the application.
|
|
586
|
+
* @param {import("../vcsUiApp.js").default} app
|
|
587
|
+
* @param {string|symbol} owner The owner of the loading overlay.
|
|
588
|
+
* @param {string} id The ID of the loading overlay.
|
|
589
|
+
* @param {{progress?:import('vue').Ref<number>|undefined, title?:string, text?:string, cancel?:Function, maxWidth?:number|string, persistent?:boolean}} [options] The options for the loading overlay, passed as props.
|
|
590
|
+
* @returns {Function} A function to remove the loading overlay.
|
|
591
|
+
*/
|
|
592
|
+
export function addLoadingOverlay(app, owner, id, options) {
|
|
593
|
+
check(owner, oneOf(String, Symbol));
|
|
594
|
+
check(id, String);
|
|
595
|
+
check(options?.progress?.value, optional(Number));
|
|
596
|
+
check(
|
|
597
|
+
options,
|
|
598
|
+
optional({
|
|
599
|
+
title: optional(String),
|
|
600
|
+
text: optional(String),
|
|
601
|
+
cancel: optional(Function),
|
|
602
|
+
maxWidth: optional(oneOf(Number, String)),
|
|
603
|
+
persistent: optional(Boolean),
|
|
604
|
+
}),
|
|
605
|
+
);
|
|
606
|
+
|
|
607
|
+
const removeWindow = () => {
|
|
608
|
+
if (app.windowManager.has(id)) {
|
|
609
|
+
app.windowManager.remove(id);
|
|
610
|
+
}
|
|
611
|
+
};
|
|
612
|
+
|
|
613
|
+
app.windowManager.add(
|
|
614
|
+
{
|
|
615
|
+
component: VcsLoadingOverlay,
|
|
616
|
+
id,
|
|
617
|
+
state: { hideHeader: true, styles: { display: 'none !important' } },
|
|
618
|
+
props: {
|
|
619
|
+
...options,
|
|
620
|
+
cancellable: !!options.cancel,
|
|
621
|
+
onCancel: () => {
|
|
622
|
+
options?.cancel?.();
|
|
623
|
+
removeWindow();
|
|
624
|
+
},
|
|
625
|
+
},
|
|
626
|
+
},
|
|
627
|
+
owner,
|
|
628
|
+
);
|
|
629
|
+
|
|
630
|
+
return removeWindow;
|
|
631
|
+
}
|
|
@@ -69,6 +69,16 @@ export function createFlightVisualizationAction(app: import("../vcsUiApp.js").de
|
|
|
69
69
|
action: import("./actionHelper.js").VcsAction;
|
|
70
70
|
destroy: () => void;
|
|
71
71
|
}>;
|
|
72
|
+
/**
|
|
73
|
+
*
|
|
74
|
+
* @param {import("../vcsUiApp.js").default} app
|
|
75
|
+
* @param {import("@vcmap/core").FlightInstance} instance
|
|
76
|
+
* @returns {{actions: import("./actionHelper.js").VcsAction[], destroy: function(): void}}
|
|
77
|
+
*/
|
|
78
|
+
export function createFlightMovieActions(app: import("../vcsUiApp.js").default, instance: import("@vcmap/core").FlightInstance): {
|
|
79
|
+
actions: import("./actionHelper.js").VcsAction[];
|
|
80
|
+
destroy: () => void;
|
|
81
|
+
};
|
|
72
82
|
/**
|
|
73
83
|
*
|
|
74
84
|
* @param {import("@vcmap/core").FlightInstance} instance
|