@vcmap/ui 6.2.0-rc.1 → 6.2.0-rc.2

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.
Files changed (173) hide show
  1. package/build/build.js +52 -7
  2. package/config/dev.config.json +28 -0
  3. package/config/pano.config.json +420 -0
  4. package/config/projects.config.json +5 -0
  5. package/dist/assets/cesium/Workers/{chunk-P6TRGU3S.js → chunk-2PFJ45KC.js} +2 -2
  6. package/dist/assets/cesium/Workers/{chunk-7ZZ5LMZY.js → chunk-35ALNMG5.js} +15 -15
  7. package/dist/assets/cesium/Workers/{chunk-7YIOHQWH.js → chunk-35EJBV7X.js} +13 -13
  8. package/dist/assets/cesium/Workers/{chunk-EJVGYGLF.js → chunk-3E3OH65K.js} +7 -7
  9. package/dist/assets/cesium/Workers/{chunk-JBSKHTNX.js → chunk-4FHUY275.js} +4 -4
  10. package/dist/assets/cesium/Workers/{chunk-Z2QP3CXW.js → chunk-565T3GIE.js} +2 -2
  11. package/dist/assets/cesium/Workers/{chunk-IZGUQO6Q.js → chunk-5LGDCKCZ.js} +13 -13
  12. package/dist/assets/cesium/Workers/{chunk-3IFRSGEY.js → chunk-6JXJYBWN.js} +9 -9
  13. package/dist/assets/cesium/Workers/{chunk-WGDFYAGC.js → chunk-6RAEC3AW.js} +4 -4
  14. package/dist/assets/cesium/Workers/{chunk-44QAAS4P.js → chunk-6Z67VIOY.js} +7 -7
  15. package/dist/assets/cesium/Workers/{chunk-NGZJIN5Z.js → chunk-ADDGROZ6.js} +4 -4
  16. package/dist/assets/cesium/Workers/{chunk-GBT7MJ6X.js → chunk-ASYGMBRG.js} +1 -1
  17. package/dist/assets/cesium/Workers/{chunk-C4WPMOKT.js → chunk-BABDQOWA.js} +5 -5
  18. package/dist/assets/cesium/Workers/{chunk-IBRIWOCM.js → chunk-BQHHGIFB.js} +13 -13
  19. package/dist/assets/cesium/Workers/{chunk-LLAF3CPH.js → chunk-C33B4KHN.js} +2 -2
  20. package/dist/assets/cesium/Workers/{chunk-JXVLNVXC.js → chunk-CMCR2ZK4.js} +7 -7
  21. package/dist/assets/cesium/Workers/{chunk-3HQMMUPU.js → chunk-EGGJIATZ.js} +1 -1
  22. package/dist/assets/cesium/Workers/{chunk-RJM36CNY.js → chunk-EWS5LXAB.js} +6 -6
  23. package/dist/assets/cesium/Workers/{chunk-OPP2SKMA.js → chunk-FDXPBTSX.js} +12 -12
  24. package/dist/assets/cesium/Workers/{chunk-QN6TBED4.js → chunk-FIFQP4YX.js} +11 -11
  25. package/dist/assets/cesium/Workers/{chunk-JISPSEF3.js → chunk-HOGDZ2EB.js} +4 -4
  26. package/dist/assets/cesium/Workers/{chunk-2PTKXHJB.js → chunk-I4NB77NH.js} +10 -10
  27. package/dist/assets/cesium/Workers/{chunk-QQOZO7KO.js → chunk-JX4A2BCF.js} +7 -7
  28. package/dist/assets/cesium/Workers/{chunk-XIUSRWL6.js → chunk-K6PDUSH6.js} +5 -5
  29. package/dist/assets/cesium/Workers/{chunk-KHZNBFOH.js → chunk-KFHZFU5O.js} +7 -7
  30. package/dist/assets/cesium/Workers/{chunk-U5HSOKPQ.js → chunk-KYGXRFA6.js} +1 -1
  31. package/dist/assets/cesium/Workers/{chunk-56EDBCGT.js → chunk-LNWNAP2C.js} +10 -10
  32. package/dist/assets/cesium/Workers/{chunk-YCDZX5LS.js → chunk-LWN2B3KW.js} +1 -1
  33. package/dist/assets/cesium/Workers/{chunk-TI3TRKIC.js → chunk-LXLABO2L.js} +10 -10
  34. package/dist/assets/cesium/Workers/{chunk-C3EQ27WF.js → chunk-MB6B2UUL.js} +6 -6
  35. package/dist/assets/cesium/Workers/{chunk-57H6I3SV.js → chunk-MZSRINXK.js} +5 -5
  36. package/dist/assets/cesium/Workers/{chunk-ZVUUPJEM.js → chunk-NBI3GZSK.js} +17 -17
  37. package/dist/assets/cesium/Workers/{chunk-O72GZTSE.js → chunk-NUAXNUP5.js} +2 -2
  38. package/dist/assets/cesium/Workers/{chunk-M24KHENR.js → chunk-PNZR4RLL.js} +2 -2
  39. package/dist/assets/cesium/Workers/{chunk-HJMNR3GC.js → chunk-Q4K22DSJ.js} +11 -11
  40. package/dist/assets/cesium/Workers/{chunk-2LOWCAMW.js → chunk-Q4OS4EFN.js} +13 -13
  41. package/dist/assets/cesium/Workers/{chunk-TK5IIG2F.js → chunk-QLIMO7TQ.js} +4 -4
  42. package/dist/assets/cesium/Workers/{chunk-EDLRS3AW.js → chunk-RQ4F6YFU.js} +6 -6
  43. package/dist/assets/cesium/Workers/{chunk-JSQJDZI4.js → chunk-SB67D3JL.js} +6 -6
  44. package/dist/assets/cesium/Workers/{chunk-RTJKHZWU.js → chunk-SS6WRJ5J.js} +6 -6
  45. package/dist/assets/cesium/Workers/{chunk-L5GODJAR.js → chunk-TC4NTWIJ.js} +14 -14
  46. package/dist/assets/cesium/Workers/{chunk-IZJ42N4W.js → chunk-TKNA6WSZ.js} +17 -17
  47. package/dist/assets/cesium/Workers/{chunk-HP5XLODI.js → chunk-VQYEP77L.js} +6 -6
  48. package/dist/assets/cesium/Workers/{chunk-YSIJTJ7N.js → chunk-WKS5H3VW.js} +5 -5
  49. package/dist/assets/cesium/Workers/{chunk-XWOUPGUF.js → chunk-WPGX7DEA.js} +1 -1
  50. package/dist/assets/cesium/Workers/{chunk-6SQMLVGV.js → chunk-X3EPFVG3.js} +7 -7
  51. package/dist/assets/cesium/Workers/{chunk-NDDI2LWR.js → chunk-XH7MSR3A.js} +6 -6
  52. package/dist/assets/cesium/Workers/{chunk-FFLMY4TE.js → chunk-YDEBBUNQ.js} +5 -5
  53. package/dist/assets/cesium/Workers/{chunk-YK3QIKY7.js → chunk-YSVI7YNN.js} +9 -9
  54. package/dist/assets/cesium/Workers/{chunk-BVKITG4N.js → chunk-YVAS5WPH.js} +7 -7
  55. package/dist/assets/cesium/Workers/{chunk-X7IQYYHF.js → chunk-Z4QVAZM6.js} +2 -2
  56. package/dist/assets/cesium/Workers/{chunk-LJ2JQHJT.js → chunk-ZXOK77EW.js} +7 -7
  57. package/dist/assets/cesium/Workers/combineGeometry.js +22 -22
  58. package/dist/assets/cesium/Workers/createBoxGeometry.js +16 -16
  59. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +14 -14
  60. package/dist/assets/cesium/Workers/createCircleGeometry.js +24 -24
  61. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +17 -17
  62. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +31 -31
  63. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +29 -29
  64. package/dist/assets/cesium/Workers/createCorridorGeometry.js +27 -27
  65. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +26 -26
  66. package/dist/assets/cesium/Workers/createCylinderGeometry.js +18 -18
  67. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +16 -16
  68. package/dist/assets/cesium/Workers/createEllipseGeometry.js +24 -24
  69. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +17 -17
  70. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +17 -17
  71. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +16 -16
  72. package/dist/assets/cesium/Workers/createFrustumGeometry.js +16 -16
  73. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +16 -16
  74. package/dist/assets/cesium/Workers/createGeometry.js +22 -22
  75. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +20 -20
  76. package/dist/assets/cesium/Workers/createPlaneGeometry.js +14 -14
  77. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +13 -13
  78. package/dist/assets/cesium/Workers/createPolygonGeometry.js +30 -30
  79. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +28 -28
  80. package/dist/assets/cesium/Workers/createPolylineGeometry.js +23 -23
  81. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +29 -29
  82. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +25 -25
  83. package/dist/assets/cesium/Workers/createRectangleGeometry.js +25 -25
  84. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +18 -18
  85. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +21 -21
  86. package/dist/assets/cesium/Workers/createSphereGeometry.js +17 -17
  87. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +16 -16
  88. package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +3 -3
  89. package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +13 -13
  90. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +22 -22
  91. package/dist/assets/cesium/Workers/createVectorTilePoints.js +12 -12
  92. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +20 -20
  93. package/dist/assets/cesium/Workers/createVectorTilePolylines.js +13 -13
  94. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +20 -20
  95. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +20 -20
  96. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +17 -17
  97. package/dist/assets/cesium/Workers/createWallGeometry.js +22 -22
  98. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +21 -21
  99. package/dist/assets/cesium/Workers/decodeDraco.js +11 -11
  100. package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  101. package/dist/assets/cesium/Workers/decodeI3S.js +10 -10
  102. package/dist/assets/cesium/Workers/transcodeKTX2.js +7 -7
  103. package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
  104. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +20 -20
  105. package/dist/assets/{cesium-ac6c193a.js → cesium-8dd00805.js} +44609 -44606
  106. package/dist/assets/cesium.js +1 -1
  107. package/dist/assets/core-6b5c0363.js +34173 -0
  108. package/dist/assets/core-workers/panoramaImageWorker.js +1 -0
  109. package/dist/assets/core-workers/panoramaImageWorker.js-0ce7d2f3.js +34 -0
  110. package/dist/assets/core.js +1 -1
  111. package/dist/assets/ol.js +1 -1
  112. package/dist/assets/start.js +3 -1
  113. package/dist/assets/ui-aadb7707.css +1 -0
  114. package/dist/assets/{ui-4f308e45.js → ui-aadb7707.js} +7917 -7606
  115. package/dist/assets/ui.js +1 -1
  116. package/dist/assets/vue.js +1 -1
  117. package/dist/assets/{vuetify-99195777.js → vuetify-533fb61b.js} +1 -1
  118. package/dist/assets/vuetify.js +1 -1
  119. package/index.d.ts +8 -0
  120. package/index.js +4 -0
  121. package/package.json +4 -4
  122. package/plugins/@vcmap-show-case/panorama-inspector/package.json +10 -0
  123. package/plugins/@vcmap-show-case/panorama-inspector/src/PanoramaDebugInfo.vue +86 -0
  124. package/plugins/@vcmap-show-case/panorama-inspector/src/PanoramaDebugTools.vue +259 -0
  125. package/plugins/@vcmap-show-case/panorama-inspector/src/PanoramaInspector.vue +31 -0
  126. package/plugins/@vcmap-show-case/panorama-inspector/src/api.js +161 -0
  127. package/plugins/@vcmap-show-case/panorama-inspector/src/index.js +57 -0
  128. package/plugins/@vcmap-show-case/panorama-inspector/src/showClickInteraction.js +20 -0
  129. package/src/actions/actionHelper.js +138 -26
  130. package/src/application/VcsApp.vue +11 -0
  131. package/src/application/VcsApp.vue.d.ts +4 -0
  132. package/src/application/VcsContainer.vue.d.ts +4 -0
  133. package/src/application/VcsNavbar.vue +2 -1
  134. package/src/callback/activateMapCallback.d.ts +30 -0
  135. package/src/callback/activateMapCallback.js +63 -0
  136. package/src/callback/activateOverviewMapCallback.d.ts +7 -0
  137. package/src/callback/activateOverviewMapCallback.js +26 -0
  138. package/src/callback/deactivateOverviewMapCallback.d.ts +7 -0
  139. package/src/callback/deactivateOverviewMapCallback.js +20 -0
  140. package/src/components/lists/VcsGroupedList.vue +10 -2
  141. package/src/components/lists/VcsTreeNode.vue +3 -0
  142. package/src/components/plugins/AbstractWorkspaceItemCreator.vue +104 -0
  143. package/src/components/plugins/AbstractWorkspaceItemCreator.vue.d.ts +82 -0
  144. package/src/components/section/VcsExpansionPanel.vue +13 -3
  145. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +1 -1
  146. package/src/contentTree/LayerSwap.vue +15 -6
  147. package/src/featureInfo/featureInfo.js +6 -25
  148. package/src/featureInfo/iframeWmsFeatureInfoView.d.ts +10 -0
  149. package/src/featureInfo/iframeWmsFeatureInfoView.js +42 -0
  150. package/src/i18n/de.d.ts +4 -0
  151. package/src/i18n/de.js +3 -0
  152. package/src/i18n/en.d.ts +4 -0
  153. package/src/i18n/en.js +3 -0
  154. package/src/legend/VcsLegend.vue +5 -1
  155. package/src/navigation/MapNavigation.vue +60 -18
  156. package/src/navigation/MapNavigation.vue.d.ts +1 -0
  157. package/src/navigation/TiltSlider.vue +10 -2
  158. package/src/navigation/TiltSlider.vue.d.ts +20 -0
  159. package/src/navigation/VcsCompass.vue +3 -1
  160. package/src/navigation/overviewMap.d.ts +5 -0
  161. package/src/navigation/overviewMap.js +17 -0
  162. package/src/search/ResultsComponent.vue +8 -1
  163. package/src/search/SearchComponent.vue +3 -17
  164. package/src/search/SearchComponent.vue.d.ts +1 -2
  165. package/src/search/search.d.ts +13 -0
  166. package/src/search/search.js +21 -1
  167. package/src/uiConfig.d.ts +9 -0
  168. package/src/uiConfig.js +1 -0
  169. package/dist/assets/core-de8e51b5.js +0 -26236
  170. package/dist/assets/ui-4f308e45.css +0 -1
  171. /package/dist/assets/{ol-94c57f2e.js → ol-f58f403b.js} +0 -0
  172. /package/dist/assets/{vue-62303c82.js → vue-d7691a29.js} +0 -0
  173. /package/dist/assets/{vuetify-99195777.css → vuetify-533fb61b.css} +0 -0
@@ -0,0 +1,82 @@
1
+ declare const _default: import("vue").DefineComponent<{
2
+ showFooter: {
3
+ type: BooleanConstructor;
4
+ default: boolean;
5
+ };
6
+ showAdd: {
7
+ type: BooleanConstructor;
8
+ default: boolean;
9
+ };
10
+ disableAdd: {
11
+ type: BooleanConstructor;
12
+ default: boolean;
13
+ };
14
+ tooltipAdd: {
15
+ type: StringConstructor;
16
+ default: string;
17
+ };
18
+ newButtonTitle: {
19
+ type: StringConstructor;
20
+ default: string;
21
+ };
22
+ disableNew: {
23
+ type: BooleanConstructor;
24
+ default: boolean;
25
+ };
26
+ tooltipNew: {
27
+ type: StringConstructor;
28
+ default: string;
29
+ };
30
+ actions: {
31
+ type: ArrayConstructor;
32
+ default: () => never[];
33
+ };
34
+ }, {
35
+ workspaceHidden: import("vue").ComputedRef<boolean>;
36
+ }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("addClicked" | "newClicked")[], "addClicked" | "newClicked", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
37
+ showFooter: {
38
+ type: BooleanConstructor;
39
+ default: boolean;
40
+ };
41
+ showAdd: {
42
+ type: BooleanConstructor;
43
+ default: boolean;
44
+ };
45
+ disableAdd: {
46
+ type: BooleanConstructor;
47
+ default: boolean;
48
+ };
49
+ tooltipAdd: {
50
+ type: StringConstructor;
51
+ default: string;
52
+ };
53
+ newButtonTitle: {
54
+ type: StringConstructor;
55
+ default: string;
56
+ };
57
+ disableNew: {
58
+ type: BooleanConstructor;
59
+ default: boolean;
60
+ };
61
+ tooltipNew: {
62
+ type: StringConstructor;
63
+ default: string;
64
+ };
65
+ actions: {
66
+ type: ArrayConstructor;
67
+ default: () => never[];
68
+ };
69
+ }>> & {
70
+ onAddClicked?: ((...args: any[]) => any) | undefined;
71
+ onNewClicked?: ((...args: any[]) => any) | undefined;
72
+ }, {
73
+ actions: unknown[];
74
+ showFooter: boolean;
75
+ showAdd: boolean;
76
+ disableAdd: boolean;
77
+ tooltipAdd: string;
78
+ newButtonTitle: string;
79
+ disableNew: boolean;
80
+ tooltipNew: string;
81
+ }, {}>;
82
+ export default _default;
@@ -4,8 +4,8 @@
4
4
  VExpansionPanelText,
5
5
  VExpansionPanelTitle,
6
6
  VIcon,
7
- VTooltip,
8
7
  VListItemTitle,
8
+ VTooltip,
9
9
  } from 'vuetify/components';
10
10
  import { computed, ref, useSlots } from 'vue';
11
11
  import VcsActionButtonList from '../buttons/VcsActionButtonList.vue';
@@ -96,7 +96,9 @@
96
96
  line-height: 1.2;
97
97
  padding: 0 8px;
98
98
  }
99
-
99
+ :deep(.v-list-item-title) > span {
100
+ font-weight: bold;
101
+ }
100
102
  .vcs-panel-title__append {
101
103
  width: 90%;
102
104
  display: inline-block;
@@ -104,8 +106,16 @@
104
106
  text-overflow: ellipsis;
105
107
  vertical-align: bottom;
106
108
  }
107
-
108
109
  :deep(.v-expansion-panel-text__wrapper) {
109
110
  padding: 0 0;
110
111
  }
111
112
  </style>
113
+
114
+ <style lang="scss">
115
+ .v-expansion-panels {
116
+ z-index: auto;
117
+ > div:not(:last-child):has(.vcs-expansion-panel) {
118
+ border-bottom: 1px solid rgb(var(--v-theme-base-lighten-2));
119
+ }
120
+ }
121
+ </style>
@@ -84,7 +84,7 @@ declare const _default: import("vue").DefineComponent<{
84
84
  } | undefined;
85
85
  getEyeOffset: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => import("@vcmap-cesium/engine", { with: { "resolution-mode": "import" } }).Cartesian3 | undefined;
86
86
  heightAboveGround: number | undefined;
87
- getHeightAboveGround: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => number;
87
+ getHeightAboveGround: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => number | undefined;
88
88
  skirt: number;
89
89
  getSkirt: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => number;
90
90
  groundLevel: number | undefined;
@@ -72,11 +72,15 @@
72
72
  const wmsGroupItemsMap = getWmsGroupItemsMap(app);
73
73
 
74
74
  /**
75
- * @param {import("@vcmap/core").Layer}l
75
+ * @param {import("@vcmap/core").Layer} l
76
76
  * @returns {boolean}
77
77
  */
78
78
  const layerFilter = (l) => {
79
- return l.active && l[moduleIdSymbol] !== volatileModuleId;
79
+ return (
80
+ l.active &&
81
+ l[moduleIdSymbol] !== volatileModuleId &&
82
+ l.isSupported(app.maps.activeMap)
83
+ );
80
84
  };
81
85
 
82
86
  function getLayerTreeItems() {
@@ -101,11 +105,16 @@
101
105
 
102
106
  const items = shallowRef(getLayerTreeItems());
103
107
 
104
- const listener = app.layers.stateChanged.addEventListener(() => {
105
- items.value = getLayerTreeItems();
106
- });
108
+ const listeners = [
109
+ app.layers.stateChanged.addEventListener(() => {
110
+ items.value = getLayerTreeItems();
111
+ }),
112
+ app.maps.mapActivated.addEventListener(() => {
113
+ items.value = getLayerTreeItems();
114
+ }),
115
+ ];
107
116
 
108
- onUnmounted(() => listener());
117
+ onUnmounted(() => listeners.forEach((l) => l()));
109
118
 
110
119
  return {
111
120
  items,
@@ -229,10 +229,7 @@ export function getGroupedFeatureList(app, features, position = undefined) {
229
229
  if (layerName) {
230
230
  if (!groups[layerName]) {
231
231
  const title = app.layers.getByKey(layerName)?.properties?.title;
232
- groups[layerName] = {
233
- name: layerName,
234
- title: title || layerName,
235
- };
232
+ groups[layerName] = { name: layerName, title: title || layerName };
236
233
  }
237
234
  listItem.group = layerName;
238
235
  }
@@ -265,10 +262,7 @@ export function createFeatureInfoSession(app) {
265
262
  stopped.destroy();
266
263
  };
267
264
 
268
- return {
269
- stopped,
270
- stop,
271
- };
265
+ return { stopped, stop };
272
266
  }
273
267
 
274
268
  /**
@@ -307,11 +301,7 @@ function setupFeatureInfoTool(app) {
307
301
  }
308
302
  if (!app.toolboxManager.has('featureInfo')) {
309
303
  app.toolboxManager.add(
310
- {
311
- id: 'featureInfo',
312
- type: ToolboxType.SINGLE,
313
- action,
314
- },
304
+ { id: 'featureInfo', type: ToolboxType.SINGLE, action },
315
305
  vcsAppSymbol,
316
306
  { desktop: true, tablet: true, mobile: true },
317
307
  );
@@ -743,11 +733,7 @@ class FeatureInfo extends Collection {
743
733
  }
744
734
  }
745
735
  this._app.windowManager.add(
746
- {
747
- id: this._windowId,
748
- ...windowComponentOptions,
749
- props,
750
- },
736
+ { id: this._windowId, ...windowComponentOptions, props },
751
737
  vcsAppSymbol,
752
738
  );
753
739
 
@@ -821,13 +807,8 @@ class FeatureInfo extends Collection {
821
807
  {
822
808
  id,
823
809
  component: ClusterFeatureComponent,
824
- props: reactive({
825
- items,
826
- groups,
827
- }),
828
- state: {
829
- headerTitle: 'featureInfo.cluster.headerTitle',
830
- },
810
+ props: reactive({ items, groups }),
811
+ state: { headerTitle: 'featureInfo.cluster.headerTitle' },
831
812
  slot: WindowSlot.DYNAMIC_LEFT,
832
813
  },
833
814
  vcsAppSymbol,
@@ -7,6 +7,8 @@ export type IframeWmsFeatureInfoViewOptions = import("./abstractFeatureInfoView.
7
7
  * @typedef {import("./abstractFeatureInfoView.js").FeatureInfoViewOptions & { infoFormat: string, title?: string }} IframeWmsFeatureInfoViewOptions
8
8
  * @property {string} infoFormat - Specifies the response format of WMS GetFeatureInfo
9
9
  * @property {string} [title] - optional title for the <iframe>
10
+ * @property {string} [sandbox] - optional sandbox attribute for the <iframe>
11
+ * @property {boolean} [disableSandbox] - optional flag to disable the sandbox attribute for the <iframe>
10
12
  */
11
13
  /**
12
14
  * @class
@@ -26,6 +28,14 @@ declare class IframeWmsFeatureInfoView extends AbstractFeatureInfoView {
26
28
  * @type {string|undefined}
27
29
  */
28
30
  title: string | undefined;
31
+ /**
32
+ * @type {string}
33
+ */
34
+ sandbox: string;
35
+ /**
36
+ * @type {boolean}
37
+ */
38
+ disableSandbox: boolean;
29
39
  /**
30
40
  * Gets feature info from WMS GetFeatureInfo in html/text format
31
41
  * @param {import("./featureInfo.js").FeatureInfoEvent} featureInfo
@@ -6,6 +6,8 @@ import IframeComponent from './IframeComponent.vue';
6
6
  * @typedef {import("./abstractFeatureInfoView.js").FeatureInfoViewOptions & { infoFormat: string, title?: string }} IframeWmsFeatureInfoViewOptions
7
7
  * @property {string} infoFormat - Specifies the response format of WMS GetFeatureInfo
8
8
  * @property {string} [title] - optional title for the <iframe>
9
+ * @property {string} [sandbox] - optional sandbox attribute for the <iframe>
10
+ * @property {boolean} [disableSandbox] - optional flag to disable the sandbox attribute for the <iframe>
9
11
  */
10
12
 
11
13
  /**
@@ -35,6 +37,39 @@ class IframeWmsFeatureInfoView extends AbstractFeatureInfoView {
35
37
  * @type {string|undefined}
36
38
  */
37
39
  this.title = options.title || undefined;
40
+ /**
41
+ * @type {string}
42
+ */
43
+ this.sandbox = options.sandbox || '';
44
+ /**
45
+ * @type {boolean}
46
+ */
47
+ this.disableSandbox = options.disableSandbox || false;
48
+ }
49
+
50
+ /**
51
+ * @param {import("../vcsUiApp.js").default} app
52
+ * @param {import("./featureInfo.js").FeatureInfoEvent} featureInfo
53
+ * @param {import("@vcmap/core").Layer} layer
54
+ * @returns {import("../manager/window/windowManager.js").WindowComponentOptions}
55
+ */
56
+ getWindowComponentOptions(app, featureInfo, layer) {
57
+ const componentOptions = super.getWindowComponentOptions(
58
+ app,
59
+ featureInfo,
60
+ layer,
61
+ );
62
+ const resolution = app.maps.activeMap.getCurrentResolution(
63
+ featureInfo.position,
64
+ );
65
+ componentOptions.props.src =
66
+ layer.featureProvider.wmsSource.getFeatureInfoUrl(
67
+ featureInfo.position,
68
+ resolution,
69
+ getOlProj('EPSG:3857'),
70
+ { INFO_FORMAT: this.infoFormat },
71
+ );
72
+ return componentOptions;
38
73
  }
39
74
 
40
75
  /**
@@ -52,6 +87,7 @@ class IframeWmsFeatureInfoView extends AbstractFeatureInfoView {
52
87
  { INFO_FORMAT: this.infoFormat },
53
88
  ),
54
89
  title: this.title,
90
+ ...(!this.disableSandbox && { sandbox: this.sandbox }),
55
91
  };
56
92
  }
57
93
 
@@ -66,6 +102,12 @@ class IframeWmsFeatureInfoView extends AbstractFeatureInfoView {
66
102
  if (this.title) {
67
103
  config.title = this.title;
68
104
  }
105
+ if (this.sandbox) {
106
+ config.sandbox = this.sandbox;
107
+ }
108
+ if (this.disableSandbox) {
109
+ config.disableSandbox = this.disableSandbox;
110
+ }
69
111
  return config;
70
112
  }
71
113
  }
package/src/i18n/de.d.ts CHANGED
@@ -114,6 +114,7 @@ declare namespace messages {
114
114
  let CesiumMap: string;
115
115
  let OpenlayersMap: string;
116
116
  let ObliqueMap: string;
117
+ let PanoramaMap: string;
117
118
  }
118
119
  namespace menu {
119
120
  let tooltip: string;
@@ -205,8 +206,11 @@ declare namespace messages {
205
206
  export let pin: string;
206
207
  export let close: string;
207
208
  export let add: string;
209
+ let _new: string;
210
+ export { _new as new };
208
211
  export let apply: string;
209
212
  export let cancel: string;
213
+ export let addToMyWorkspace: string;
210
214
  export namespace _import {
211
215
  let submit: string;
212
216
  let fileDrop: string;
package/src/i18n/de.js CHANGED
@@ -14,6 +14,7 @@ const messages = {
14
14
  CesiumMap: '3D-Karte',
15
15
  OpenlayersMap: '2D-Karte',
16
16
  ObliqueMap: 'Schrägluftbildkarte',
17
+ PanoramaMap: 'Panoramabildkarte',
17
18
  },
18
19
  menu: {
19
20
  tooltip: 'Menü',
@@ -93,8 +94,10 @@ const messages = {
93
94
  pin: 'Fenster andocken',
94
95
  close: 'Fenster schließen',
95
96
  add: 'Hinzufügen',
97
+ new: 'Neu',
96
98
  apply: 'Anwenden',
97
99
  cancel: 'Abbrechen',
100
+ addToMyWorkspace: 'Zu Mein Arbeitsbereich hinzufügen',
98
101
  import: {
99
102
  submit: 'Importieren',
100
103
  fileDrop: 'Dateien hierher ziehen',
package/src/i18n/en.d.ts CHANGED
@@ -114,6 +114,7 @@ declare namespace messages {
114
114
  let CesiumMap: string;
115
115
  let OpenlayersMap: string;
116
116
  let ObliqueMap: string;
117
+ let PanoramaMap: string;
117
118
  }
118
119
  namespace menu {
119
120
  let tooltip: string;
@@ -205,8 +206,11 @@ declare namespace messages {
205
206
  export let pin: string;
206
207
  export let close: string;
207
208
  export let add: string;
209
+ let _new: string;
210
+ export { _new as new };
208
211
  export let apply: string;
209
212
  export let cancel: string;
213
+ export let addToMyWorkspace: string;
210
214
  export namespace _import {
211
215
  let submit: string;
212
216
  let fileDrop: string;
package/src/i18n/en.js CHANGED
@@ -14,6 +14,7 @@ const messages = {
14
14
  CesiumMap: '3D map',
15
15
  OpenlayersMap: '2D map',
16
16
  ObliqueMap: 'Oblique imagery map',
17
+ PanoramaMap: 'Panorama imagery map',
17
18
  },
18
19
  menu: {
19
20
  tooltip: 'Menu',
@@ -93,8 +94,10 @@ const messages = {
93
94
  pin: 'Dock window',
94
95
  close: 'Close window',
95
96
  add: 'Add',
97
+ new: 'New',
96
98
  apply: 'Apply',
97
99
  cancel: 'Cancel',
100
+ addToMyWorkspace: 'Add to My Workspace',
98
101
  import: {
99
102
  submit: 'Import',
100
103
  fileDrop: 'Drop files here',
@@ -2,10 +2,11 @@
2
2
  <v-sheet class="overflow-y-auto vcs-legend">
3
3
  <v-expansion-panels
4
4
  variant="accordion"
5
+ flat
5
6
  multiple
6
7
  v-if="entries.length > 0"
7
8
  v-model="panels"
8
- class="rounded-0"
9
+ class="rounded-0 legend-panels"
9
10
  >
10
11
  <vcs-expansion-panel
11
12
  v-for="(entry, i) in entries"
@@ -142,4 +143,7 @@
142
143
  background-color: rgb(var(--v-theme-base-lighten-2));
143
144
  z-index: 1;
144
145
  }
146
+ .legend-panels .vcs-expansion-panel:not(:last-child) {
147
+ border-bottom: 1px solid rgb(var(--v-theme-base-lighten-2));
148
+ }
145
149
  </style>
@@ -35,8 +35,13 @@
35
35
  :disabled="movementApiCallsDisabled"
36
36
  />
37
37
  </v-row>
38
- <v-row justify="center" v-if="is3D">
39
- <TiltSlider v-model="tilt" :disabled="movementApiCallsDisabled" />
38
+ <v-row justify="center" v-if="is3D || isPanorama">
39
+ <TiltSlider
40
+ v-model="tilt"
41
+ :disabled="movementApiCallsDisabled"
42
+ :max-tilt="isPanorama ? 89 : undefined"
43
+ :min-tilt="isPanorama ? -89 : undefined"
44
+ />
40
45
  </v-row>
41
46
  <v-row v-if="!hideRotationButton && is3D" justify="center">
42
47
  <OrientationToolsButton
@@ -79,6 +84,7 @@
79
84
  ObliqueViewDirection,
80
85
  startRotation,
81
86
  rotationMapControlSymbol,
87
+ PanoramaMap,
82
88
  } from '@vcmap/core';
83
89
  import { VContainer, VRow } from 'vuetify/components';
84
90
  import { useDisplay } from 'vuetify';
@@ -207,6 +213,7 @@
207
213
  THREE_D: '3d',
208
214
  TWO_D: '2d',
209
215
  OBLIQUE: 'oblique',
216
+ PANORAMA: 'panorama',
210
217
  };
211
218
 
212
219
  function getViewModeForMap(map) {
@@ -214,6 +221,8 @@
214
221
  return OrientationToolsViewMode.OBLIQUE;
215
222
  } else if (map instanceof CesiumMap) {
216
223
  return OrientationToolsViewMode.THREE_D;
224
+ } else if (map instanceof PanoramaMap) {
225
+ return OrientationToolsViewMode.PANORAMA;
217
226
  }
218
227
  return OrientationToolsViewMode.TWO_D;
219
228
  }
@@ -225,16 +234,24 @@
225
234
  * @returns {Promise<void>}
226
235
  */
227
236
  async function zoom(map, out = false, zoomFactor = 2) {
228
- const viewpoint = await map.getViewpoint();
229
- if (out) {
230
- viewpoint.distance *= zoomFactor;
237
+ if (map instanceof PanoramaMap) {
238
+ if (out) {
239
+ map.panoramaCameraController.zoomOut();
240
+ } else {
241
+ map.panoramaCameraController.zoomIn();
242
+ }
231
243
  } else {
232
- viewpoint.distance /= zoomFactor;
244
+ const viewpoint = await map.getViewpoint();
245
+ if (out) {
246
+ viewpoint.distance *= zoomFactor;
247
+ } else {
248
+ viewpoint.distance /= zoomFactor;
249
+ }
250
+ viewpoint.animate = true;
251
+ viewpoint.duration = 0.5;
252
+ viewpoint.cameraPosition = null;
253
+ await map.gotoViewpoint(viewpoint);
233
254
  }
234
- viewpoint.animate = true;
235
- viewpoint.duration = 0.5;
236
- viewpoint.cameraPosition = null;
237
- await map.gotoViewpoint(viewpoint);
238
255
  }
239
256
 
240
257
  /**
@@ -314,11 +331,22 @@
314
331
  return headingRef.value;
315
332
  },
316
333
  async set(headingValue) {
317
- const vp = await app.maps.activeMap.getViewpoint();
318
- delete vp.cameraPosition;
319
- vp.heading = headingValue;
320
- vp.animate = true;
321
- app.maps.activeMap.gotoViewpoint(vp);
334
+ if (app.maps.activeMap instanceof PanoramaMap) {
335
+ const { camera } = app.maps.activeMap.getCesiumWidget();
336
+ camera.setView({
337
+ orientation: {
338
+ heading: CesiumMath.toRadians(headingValue),
339
+ pitch: camera.pitch,
340
+ roll: camera.roll,
341
+ },
342
+ });
343
+ } else {
344
+ const vp = await app.maps.activeMap.getViewpoint();
345
+ delete vp.cameraPosition;
346
+ vp.heading = headingValue;
347
+ vp.animate = true;
348
+ app.maps.activeMap.gotoViewpoint(vp);
349
+ }
322
350
  },
323
351
  });
324
352
 
@@ -327,9 +355,20 @@
327
355
  return tiltRef.value;
328
356
  },
329
357
  set(tiltValue) {
330
- const vp = app.maps.activeMap.getViewpointSync(); // XXX make async and debounce
331
- vp.pitch = tiltValue;
332
- app.maps.activeMap.gotoViewpoint(vp);
358
+ if (app.maps.activeMap instanceof PanoramaMap) {
359
+ const { camera } = app.maps.activeMap.getCesiumWidget();
360
+ camera.setView({
361
+ orientation: {
362
+ heading: camera.heading,
363
+ pitch: CesiumMath.toRadians(tiltValue),
364
+ roll: camera.roll,
365
+ },
366
+ });
367
+ } else {
368
+ const vp = app.maps.activeMap.getViewpointSync(); // XXX make async and debounce
369
+ vp.pitch = tiltValue;
370
+ app.maps.activeMap.gotoViewpoint(vp);
371
+ }
333
372
  },
334
373
  });
335
374
 
@@ -420,6 +459,9 @@
420
459
  isOblique: computed(
421
460
  () => viewMode.value === OrientationToolsViewMode.OBLIQUE,
422
461
  ),
462
+ isPanorama: computed(
463
+ () => viewMode.value === OrientationToolsViewMode.PANORAMA,
464
+ ),
423
465
  zoomIn() {
424
466
  zoom(app.maps.activeMap);
425
467
  }, // debounce?
@@ -7,6 +7,7 @@ declare const _default: import("vue").DefineComponent<{}, {
7
7
  tilt: import("vue").WritableComputedRef<number>;
8
8
  is3D: import("vue").ComputedRef<boolean>;
9
9
  isOblique: import("vue").ComputedRef<boolean>;
10
+ isPanorama: import("vue").ComputedRef<boolean>;
10
11
  zoomIn(): void;
11
12
  zoomOut(): void;
12
13
  overviewAction: {
@@ -12,8 +12,8 @@
12
12
  :track-color="'base-lighten-3'"
13
13
  thumb-color="base-darken-4"
14
14
  track-fill-color="'base-darken-4'"
15
- :max="0"
16
- :min="-90"
15
+ :max="maxTilt"
16
+ :min="minTilt"
17
17
  direction="vertical"
18
18
  hide-details
19
19
  class="vcs-tilt-slider"
@@ -51,6 +51,14 @@
51
51
  required: false,
52
52
  default: false,
53
53
  },
54
+ minTilt: {
55
+ type: Number,
56
+ default: -90,
57
+ },
58
+ maxTilt: {
59
+ type: Number,
60
+ default: 0,
61
+ },
54
62
  },
55
63
  setup(props, { emit }) {
56
64
  const fontSize = useFontSize();
@@ -8,6 +8,14 @@ declare const _default: import("vue").DefineComponent<{
8
8
  required: false;
9
9
  default: boolean;
10
10
  };
11
+ minTilt: {
12
+ type: NumberConstructor;
13
+ default: number;
14
+ };
15
+ maxTilt: {
16
+ type: NumberConstructor;
17
+ default: number;
18
+ };
11
19
  }, {
12
20
  localValue: import("vue").Ref<any>;
13
21
  tickSize: import("vue").ComputedRef<number>;
@@ -15,6 +23,8 @@ declare const _default: import("vue").DefineComponent<{
15
23
  props: import("@vue/shared").LooseRequired<{
16
24
  readonly disabled: boolean;
17
25
  readonly modelValue: number;
26
+ readonly minTilt: number;
27
+ readonly maxTilt: number;
18
28
  } & {}>;
19
29
  minWidth: import("vue").ComputedRef<number>;
20
30
  minHeight: import("vue").ComputedRef<number>;
@@ -28,7 +38,17 @@ declare const _default: import("vue").DefineComponent<{
28
38
  required: false;
29
39
  default: boolean;
30
40
  };
41
+ minTilt: {
42
+ type: NumberConstructor;
43
+ default: number;
44
+ };
45
+ maxTilt: {
46
+ type: NumberConstructor;
47
+ default: number;
48
+ };
31
49
  }>>, {
32
50
  disabled: boolean;
51
+ minTilt: number;
52
+ maxTilt: number;
33
53
  }, {}>;
34
54
  export default _default;
@@ -16,7 +16,9 @@
16
16
  @click="!xs && $event.stopPropagation()"
17
17
  @direction-click="$emit('update:modelValue', $event)"
18
18
  :can-emit="
19
- !disabled && !xs && (viewMode === '3d' || viewMode === 'oblique')
19
+ !disabled &&
20
+ !xs &&
21
+ (viewMode === '3d' || viewMode === 'oblique' || viewMode === 'panorama')
20
22
  "
21
23
  :hide-ticks="viewMode === 'oblique'"
22
24
  />
@@ -5,6 +5,11 @@ export function getWindowComponentOptions(): import("../manager/window/windowMan
5
5
  export const overviewMapWindowId: "overview-map-container";
6
6
  export const overviewMapLayerSymbol: unique symbol;
7
7
  export default OverviewMap;
8
+ /**
9
+ * panorama behavior
10
+ * 1. in panorama, only allow clicking on a footprint
11
+ * 2. in other maps, if you click directly on a panorama footprint, switch maps and go to image (same as clicking on the footprint in the main map)
12
+ */
8
13
  /**
9
14
  * A 2D OverviewMap for cesium, openlayers and oblique map.
10
15
  * Baselayers are added to the OverviewMap using `showInOverviewMap` flag within the properties bag of a layer configuration.