@vcmap/ui 6.1.0-rc.7 → 6.1.0

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 (94) hide show
  1. package/config/base.config.json +7 -3
  2. package/config/cluster.config.json +1 -1
  3. package/config/dev.config.json +172 -56
  4. package/config/projects.config.json +2 -1
  5. package/config/vectorTile.config.json +42 -1
  6. package/dist/assets/cesium.js +1 -1
  7. package/dist/assets/{core-52c2ef11.js → core-841b71a4.js} +7544 -5485
  8. package/dist/assets/core.js +1 -1
  9. package/dist/assets/ol.js +1 -1
  10. package/dist/assets/{ui-dccb9009.css → ui-2fd6f47d.css} +1 -1
  11. package/dist/assets/{ui-dccb9009.js → ui-2fd6f47d.js} +21402 -20661
  12. package/dist/assets/ui.js +1 -1
  13. package/dist/assets/vue.js +1 -1
  14. package/dist/assets/{vuetify-43a20e18.css → vuetify-4bc77ff7.css} +2 -2
  15. package/dist/assets/{vuetify-43a20e18.js → vuetify-4bc77ff7.js} +6694 -6593
  16. package/dist/assets/vuetify.js +1 -1
  17. package/index.d.ts +13 -5
  18. package/index.js +13 -5
  19. package/package.json +9 -8
  20. package/plugins/@vcmap-show-case/vector-properties-example/src/LayerSettings.vue +39 -0
  21. package/plugins/@vcmap-show-case/vector-properties-example/src/VectorPropertiesExample.vue +3 -0
  22. package/plugins/@vcmap-show-case/vector-properties-example/src/lib.js +13 -0
  23. package/plugins/@vcmap-show-case/window-tester/src/WindowExample.vue +9 -0
  24. package/plugins/package.json +7 -5
  25. package/src/actions/actionHelper.d.ts +6 -0
  26. package/src/actions/actionHelper.js +22 -0
  27. package/src/actions/deepPickingAction.d.ts +23 -0
  28. package/src/actions/deepPickingAction.js +399 -0
  29. package/src/application/VcsApp.vue +3 -0
  30. package/src/application/VcsApp.vue.d.ts +4 -0
  31. package/src/application/VcsAttributionsFooter.vue +1 -0
  32. package/src/application/VcsContainer.vue +1 -0
  33. package/src/application/VcsContainer.vue.d.ts +4 -0
  34. package/src/application/VcsMobileMenuList.vue +34 -41
  35. package/src/application/VcsNavbar.vue +3 -0
  36. package/src/application/VcsNavbarMobile.vue +6 -18
  37. package/src/application/VcsNavbarMobile.vue.d.ts +0 -1
  38. package/src/application/VcsPositionDisplay.vue +1 -0
  39. package/src/components/buttons/VcsActionButtonList.vue +1 -0
  40. package/src/components/form-inputs-controls/VcsSelect.vue +8 -6
  41. package/src/components/icons/+all.d.ts +5 -0
  42. package/src/components/icons/+all.js +14 -0
  43. package/src/components/lists/VcsActionList.vue +1 -0
  44. package/src/components/lists/VcsGroupedList.vue +2 -1
  45. package/src/components/lists/VcsListItemComponent.vue +1 -0
  46. package/src/components/lists/VcsTreeNode.vue +5 -1
  47. package/src/components/lists/VcsTreeview.vue +4 -1
  48. package/src/components/style/{MenuWrapper.vue → StyleMenuWrapper.vue} +2 -1
  49. package/src/components/style/VcsFillMenu.vue +4 -4
  50. package/src/components/style/VcsImageMenu.vue +4 -4
  51. package/src/components/style/VcsStrokeMenu.vue +4 -4
  52. package/src/components/style/VcsTextMenu.vue +4 -4
  53. package/src/contentTree/LayerTree.vue +8 -46
  54. package/src/contentTree/LayerTree.vue.d.ts +1 -3
  55. package/src/contentTree/contentTreeCollection.d.ts +7 -0
  56. package/src/contentTree/contentTreeCollection.js +30 -10
  57. package/src/contentTree/contentTreeItem.d.ts +4 -4
  58. package/src/contentTree/contentTreeItem.js +2 -2
  59. package/src/contentTree/groupContentTreeItem.d.ts +5 -0
  60. package/src/contentTree/groupContentTreeItem.js +1 -1
  61. package/src/contentTree/layerContentTreeItem.js +1 -1
  62. package/src/contentTree/nodeContentTreeItem.d.ts +21 -0
  63. package/src/contentTree/nodeContentTreeItem.js +31 -2
  64. package/src/contentTree/wmsChildContentTreeItem.d.ts +56 -0
  65. package/src/contentTree/wmsChildContentTreeItem.js +159 -0
  66. package/src/contentTree/wmsGroupContentTreeItem.d.ts +171 -0
  67. package/src/contentTree/wmsGroupContentTreeItem.js +619 -0
  68. package/src/featureInfo/ClusterFeatureComponent.vue +47 -11
  69. package/src/featureInfo/ClusterFeatureComponent.vue.d.ts +1 -0
  70. package/src/featureInfo/balloonFeatureInfoView.d.ts +3 -0
  71. package/src/featureInfo/balloonFeatureInfoView.js +78 -11
  72. package/src/featureInfo/balloonHelper.js +8 -12
  73. package/src/featureInfo/featureInfo.d.ts +32 -7
  74. package/src/featureInfo/featureInfo.js +190 -90
  75. package/src/i18n/de.d.ts +22 -16
  76. package/src/i18n/de.js +4 -0
  77. package/src/i18n/en.d.ts +22 -16
  78. package/src/i18n/en.js +4 -0
  79. package/src/manager/toolbox/GroupToolboxComponent.vue +1 -0
  80. package/src/manager/toolbox/SelectToolboxComponent.vue +2 -0
  81. package/src/manager/toolbox/ToolboxManagerComponent.vue +1 -0
  82. package/src/manager/window/windowManager.d.ts +2 -2
  83. package/src/manager/window/windowManager.js +12 -10
  84. package/src/navigation/MapNavigation.vue +3 -1
  85. package/src/notifier/NotifierComponent.vue +1 -0
  86. package/src/search/search.js +3 -16
  87. package/src/state.d.ts +2 -1
  88. package/src/state.js +2 -1
  89. package/src/uiConfig.d.ts +9 -0
  90. package/src/uiConfig.js +1 -0
  91. /package/dist/assets/{cesium-6c6aa853.js → cesium-664ad022.js} +0 -0
  92. /package/dist/assets/{ol-b0589b0c.js → ol-2e095c08.js} +0 -0
  93. /package/dist/assets/{vue-f7a0b088.js → vue-71fd14e8.js} +0 -0
  94. /package/src/components/style/{MenuWrapper.vue.d.ts → StyleMenuWrapper.vue.d.ts} +0 -0
@@ -1 +1 @@
1
- export * from "./vuetify-43a20e18.js";
1
+ export * from "./vuetify-4bc77ff7.js";
package/index.d.ts CHANGED
@@ -39,10 +39,14 @@ export { default as ContentTreeItem } from "./src/contentTree/contentTreeItem.js
39
39
  export type * from "./src/contentTree/contentTreeItem.d.ts";
40
40
  export { default as GroupContentTreeItem } from "./src/contentTree/groupContentTreeItem.js";
41
41
  export type * from "./src/contentTree/groupContentTreeItem.d.ts";
42
+ export { default as WMSGroupContentTreeItem } from "./src/contentTree/wmsGroupContentTreeItem.js";
43
+ export type * from "./src/contentTree/wmsGroupContentTreeItem.d.ts";
42
44
  export { default as LayerGroupContentTreeItem } from "./src/contentTree/layerGroupContentTreeItem.js";
43
45
  export type * from "./src/contentTree/layerGroupContentTreeItem.d.ts";
44
46
  export { default as FlightContentTreeItem } from "./src/contentTree/flightContentTreeItem.js";
45
47
  export type * from "./src/contentTree/flightContentTreeItem.d.ts";
48
+ export { default as LayerTree } from "./src/contentTree/LayerTree.vue";
49
+ export type * from "./src/contentTree/LayerTree.vue.d.ts";
46
50
  export { default as NodeContentTreeItem } from "./src/contentTree/nodeContentTreeItem.js";
47
51
  export type * from "./src/contentTree/nodeContentTreeItem.d.ts";
48
52
  export { default as ObliqueCollectionContentTreeItem } from "./src/contentTree/obliqueCollectionContentTreeItem.js";
@@ -127,8 +131,6 @@ export { default as UiConfig } from "./src/uiConfig.js";
127
131
  export type * from "./src/uiConfig.d.ts";
128
132
  export { default as VcsUiApp } from "./src/vcsUiApp.js";
129
133
  export type * from "./src/vcsUiApp.d.ts";
130
- export { default as Icons } from "./src/components/icons/+all.js";
131
- export type * from "./src/components/icons/+all.d.ts";
132
134
  export { default as VcsButton } from "./src/components/buttons/VcsButton.vue";
133
135
  export type * from "./src/components/buttons/VcsButton.vue.d.ts";
134
136
  export { default as VcsToolButton } from "./src/components/buttons/VcsToolButton.vue";
@@ -139,6 +141,8 @@ export { default as VcsActionButtonList } from "./src/components/buttons/VcsActi
139
141
  export type * from "./src/components/buttons/VcsActionButtonList.vue.d.ts";
140
142
  export { default as VcsHelp } from "./src/components/notification/VcsHelp.vue";
141
143
  export type * from "./src/components/notification/VcsHelp.vue.d.ts";
144
+ export { default as VcsHelpTooltip } from "./src/components/notification/VcsHelpTooltip.vue";
145
+ export type * from "./src/components/notification/VcsHelpTooltip.vue.d.ts";
142
146
  export { default as VcsTable } from "./src/components/tables/VcsTable.vue";
143
147
  export type * from "./src/components/tables/VcsTable.vue.d.ts";
144
148
  export { default as VcsDataTable } from "./src/components/tables/VcsDataTable.vue";
@@ -205,6 +209,8 @@ export { default as VcsTreeviewSearchbar } from "./src/components/lists/VcsTreev
205
209
  export type * from "./src/components/lists/VcsTreeviewSearchbar.vue.d.ts";
206
210
  export { default as VcsBadge } from "./src/components/notification/VcsBadge.vue";
207
211
  export type * from "./src/components/notification/VcsBadge.vue.d.ts";
212
+ export { default as StyleMenuWrapper } from "./src/components/style/StyleMenuWrapper.vue";
213
+ export type * from "./src/components/style/StyleMenuWrapper.vue.d.ts";
208
214
  export { default as VcsFillSelector } from "./src/components/style/VcsFillSelector.vue";
209
215
  export type * from "./src/components/style/VcsFillSelector.vue.d.ts";
210
216
  export { default as VcsFillMenu } from "./src/components/style/VcsFillMenu.vue";
@@ -263,8 +269,10 @@ export { default as ResultItemComponent } from "./src/search/ResultItem.vue";
263
269
  export type * from "./src/search/ResultItem.vue.d.ts";
264
270
  export { default as ResultsComponent } from "./src/search/ResultsComponent.vue";
265
271
  export type * from "./src/search/ResultsComponent.vue.d.ts";
266
- export { createMapButtonAction, createToggleAction, createOverviewMapAction, createModalAction, createLinkAction, createGoToViewpointAction, createZoomToFeatureAction, searchComponentId } from "./src/actions/actionHelper.js";
272
+ export { callSafeAction, createMapButtonAction, createToggleAction, createOverviewMapAction, createModalAction, createLinkAction, createGoToViewpointAction, createZoomToFeatureAction, searchComponentId } from "./src/actions/actionHelper.js";
267
273
  export type * from "./src/actions/actionHelper.d.ts";
274
+ export { createDeepPickingAction, deepPickingWindowId } from "./src/actions/deepPickingAction.js";
275
+ export type * from "./src/actions/deepPickingAction.d.ts";
268
276
  export { createStateRefAction, StateActionState } from "./src/actions/stateRefAction.js";
269
277
  export type * from "./src/actions/stateRefAction.d.ts";
270
278
  export { createLayerToggleAction, createZoomToExtentAction, createExtentFeatureAction, setupExtentComponentActions } from "./src/actions/extentActions.js";
@@ -281,8 +289,6 @@ export { default as ContentTreeCollection, createContentTreeCollection, defaultC
281
289
  export type * from "./src/contentTree/contentTreeCollection.d.ts";
282
290
  export { default as LayerContentTreeItem, setViewpointAction, getStateFromLayer } from "./src/contentTree/layerContentTreeItem.js";
283
291
  export type * from "./src/contentTree/layerContentTreeItem.d.ts";
284
- export { default as LayerTree, openStateMapSymbol } from "./src/contentTree/LayerTree.vue";
285
- export type * from "./src/contentTree/LayerTree.vue.d.ts";
286
292
  export { default as WindowManager, WindowSlot, WindowPositions, posToPixel, windowPositionFromOptions } from "./src/manager/window/windowManager.js";
287
293
  export type * from "./src/manager/window/windowManager.d.ts";
288
294
  export { WindowAlignment, getFittedWindowPositionOptions, getFittedWindowPositionOptionsFromMapEvent, getTargetSize, getWindowPositionOptions, getWindowPositionOptionsFromMapEvent, posToNumber, posToPercent, optionsFromWindowPosition, updateWindowPosition, clipToTargetSize, moveWindow, applyParentPosition, getPositionAppliedOnTarget } from "./src/manager/window/windowHelper.js";
@@ -327,6 +333,8 @@ export { getStateFromURL, createEmptyState, setStateToUrl } from "./src/state.js
327
333
  export type * from "./src/state.d.ts";
328
334
  export { default as Notifier, NotificationType } from "./src/notifier/notifier.js";
329
335
  export type * from "./src/notifier/notifier.d.ts";
336
+ export { default as Icons, getColoredMapIcon } from "./src/components/icons/+all.js";
337
+ export type * from "./src/components/icons/+all.d.ts";
330
338
  export { default as VcsActionList, validateAction, validateActions } from "./src/components/lists/VcsActionList.vue";
331
339
  export type * from "./src/components/lists/VcsActionList.vue.d.ts";
332
340
  export { default as VcsVectorStyleComponent, VectorStyleMenus } from "./src/components/style/VcsVectorStyleComponent.vue";
package/index.js CHANGED
@@ -3,6 +3,7 @@ import './src/styles/main.scss';
3
3
 
4
4
  export { default as StyleSelector } from './src/actions/StyleSelector.vue';
5
5
  export {
6
+ callSafeAction,
6
7
  createMapButtonAction,
7
8
  createToggleAction,
8
9
  createOverviewMapAction,
@@ -12,6 +13,10 @@ export {
12
13
  createZoomToFeatureAction,
13
14
  searchComponentId,
14
15
  } from './src/actions/actionHelper.js';
16
+ export {
17
+ createDeepPickingAction,
18
+ deepPickingWindowId,
19
+ } from './src/actions/deepPickingAction.js';
15
20
  export { parseAndSanitizeMarkdown } from './src/components/form-output/markdownHelper.js';
16
21
  export { renderTemplate } from '@vcmap/core';
17
22
  export {
@@ -83,6 +88,7 @@ export {
83
88
  } from './src/contentTree/contentTreeCollection.js';
84
89
  export { default as ContentTreeItem } from './src/contentTree/contentTreeItem.js';
85
90
  export { default as GroupContentTreeItem } from './src/contentTree/groupContentTreeItem.js';
91
+ export { default as WMSGroupContentTreeItem } from './src/contentTree/wmsGroupContentTreeItem.js';
86
92
  export {
87
93
  default as LayerContentTreeItem,
88
94
  setViewpointAction,
@@ -90,10 +96,7 @@ export {
90
96
  } from './src/contentTree/layerContentTreeItem.js';
91
97
  export { default as LayerGroupContentTreeItem } from './src/contentTree/layerGroupContentTreeItem.js';
92
98
  export { default as FlightContentTreeItem } from './src/contentTree/flightContentTreeItem.js';
93
- export {
94
- default as LayerTree,
95
- openStateMapSymbol,
96
- } from './src/contentTree/LayerTree.vue';
99
+ export { default as LayerTree } from './src/contentTree/LayerTree.vue';
97
100
  export { default as NodeContentTreeItem } from './src/contentTree/nodeContentTreeItem.js';
98
101
  export { default as ObliqueCollectionContentTreeItem } from './src/contentTree/obliqueCollectionContentTreeItem.js';
99
102
  export { default as SubContentTreeItem } from './src/contentTree/subContentTreeItem.js';
@@ -264,13 +267,17 @@ export {
264
267
  default as Notifier,
265
268
  NotificationType,
266
269
  } from './src/notifier/notifier.js';
267
- export { default as Icons } from './src/components/icons/+all.js';
270
+ export {
271
+ default as Icons,
272
+ getColoredMapIcon,
273
+ } from './src/components/icons/+all.js';
268
274
 
269
275
  export { default as VcsButton } from './src/components/buttons/VcsButton.vue';
270
276
  export { default as VcsToolButton } from './src/components/buttons/VcsToolButton.vue';
271
277
  export { default as VcsFormButton } from './src/components/buttons/VcsFormButton.vue';
272
278
  export { default as VcsActionButtonList } from './src/components/buttons/VcsActionButtonList.vue';
273
279
  export { default as VcsHelp } from './src/components/notification/VcsHelp.vue';
280
+ export { default as VcsHelpTooltip } from './src/components/notification/VcsHelpTooltip.vue';
274
281
  export { default as VcsTable } from './src/components/tables/VcsTable.vue';
275
282
  export { default as VcsDataTable } from './src/components/tables/VcsDataTable.vue';
276
283
  export { default as VcsLabel } from './src/components/form-inputs-controls/VcsLabel.vue';
@@ -307,6 +314,7 @@ export { default as VcsTreeviewSearchbar } from './src/components/lists/VcsTreev
307
314
  export { default as VcsBadge } from './src/components/notification/VcsBadge.vue';
308
315
  export { default as VcsDefaultLogo } from './src/logo.svg';
309
316
  export { default as VcsDefaultMobileLogo } from './src/logo-mobile.svg';
317
+ export { default as StyleMenuWrapper } from './src/components/style/StyleMenuWrapper.vue';
310
318
  export { default as VcsFillSelector } from './src/components/style/VcsFillSelector.vue';
311
319
  export { default as VcsFillMenu } from './src/components/style/VcsFillMenu.vue';
312
320
  export { default as VcsStrokeSelector } from './src/components/style/VcsStrokeSelector.vue';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vcmap/ui",
3
- "version": "6.1.0-rc.7",
3
+ "version": "6.1.0",
4
4
  "author": "Virtual City Systems",
5
5
  "license": "MIT",
6
6
  "scripts": {
@@ -48,26 +48,26 @@
48
48
  "@vcsuite/check": "^2.1.0",
49
49
  "@vcsuite/logger": "^1.0.1",
50
50
  "@vcsuite/parsers": "^2.0.1",
51
- "dompurify": "^3.1.6",
51
+ "dompurify": "^3.2.4",
52
52
  "fast-deep-equal": "^3.1.3",
53
- "marked": "^15.0.0",
53
+ "marked": "^15.0.7",
54
54
  "semver": "^7.6.3",
55
- "uuid": "^11.0.0",
55
+ "uuid": "^11.1.0",
56
56
  "vue-i18n": "^9.13.1"
57
57
  },
58
58
  "peerDependencies": {
59
59
  "@vcmap-cesium/engine": "^11.0.2",
60
- "@vcmap/core": "^6.1.0-rc.6",
60
+ "@vcmap/core": "^6.1.1",
61
61
  "ol": "^10.4.0",
62
62
  "vue": "~3.4.38",
63
- "vuetify": "^3.7.12"
63
+ "vuetify": "^3.7.14"
64
64
  },
65
65
  "overrides": {
66
66
  "esbuild": "^0.25.0"
67
67
  },
68
68
  "devDependencies": {
69
69
  "@histoire/plugin-vue": "^0.17.17",
70
- "@vcmap/rollup-plugin-vcs-ol": "^1.0.2",
70
+ "@vcmap/rollup-plugin-vcs-ol": "^1.0.5",
71
71
  "@vcsuite/eslint-config": "^3.0.5",
72
72
  "@vitejs/plugin-vue": "^5.1.4",
73
73
  "@vitest/coverage-v8": "^2.1.3",
@@ -88,7 +88,8 @@
88
88
  "vite": "^5.4.9",
89
89
  "vite-plugin-vuetify": "^2.0.4",
90
90
  "vitest": "^2.1.3",
91
- "vue-tsc": "^2.1.6"
91
+ "vue-tsc": "^2.1.6",
92
+ "nock": "^14.0.1"
92
93
  },
93
94
  "stylelint": {
94
95
  "extends": "stylelint-config-standard",
@@ -0,0 +1,39 @@
1
+ <script setup>
2
+ import { computed, inject, ref } from 'vue';
3
+ import { VcsFormSection, VcsCheckbox } from '@vcmap/ui';
4
+ import { VContainer, VRow, VCol } from 'vuetify/components';
5
+ import { name } from '../package.json';
6
+ import { getBalloonFeatureInfo } from './lib.js';
7
+
8
+ const vcsApp = inject('vcsApp');
9
+ const plugin = vcsApp.plugins.getByKey(name);
10
+
11
+ const { layer } = plugin;
12
+ const featureInfo = getBalloonFeatureInfo(vcsApp);
13
+ const hasBallon = ref(layer.properties.featureInfo === featureInfo.name);
14
+ const useBallon = computed({
15
+ get: () => hasBallon.value,
16
+ set: (value) => {
17
+ if (value) {
18
+ layer.properties.featureInfo = featureInfo.name;
19
+ } else {
20
+ layer.properties.featureInfo = undefined;
21
+ }
22
+ hasBallon.value = layer.properties.featureInfo === featureInfo.name;
23
+ },
24
+ });
25
+ </script>
26
+
27
+ <template>
28
+ <vcs-form-section heading="Layer Settings" expandable>
29
+ <v-container class="pa-2">
30
+ <v-row no-gutters>
31
+ <v-col>
32
+ <vcs-checkbox v-model="useBallon" label="Ballon Feature Info" />
33
+ </v-col>
34
+ </v-row>
35
+ </v-container>
36
+ </vcs-form-section>
37
+ </template>
38
+
39
+ <style scoped lang="scss"></style>
@@ -50,6 +50,7 @@
50
50
  :expandable="expandable"
51
51
  :show-reset="showReset"
52
52
  />
53
+ <layer-settings />
53
54
  </v-sheet>
54
55
  </template>
55
56
 
@@ -76,10 +77,12 @@
76
77
  import { name } from '../package.json';
77
78
  import GeometrySettings from './GeometrySettings.vue';
78
79
  import TerrainSettings from './TerrainSettings.vue';
80
+ import LayerSettings from './LayerSettings.vue';
79
81
 
80
82
  export default {
81
83
  name: 'VectorPropertiesExample',
82
84
  components: {
85
+ LayerSettings,
83
86
  TerrainSettings,
84
87
  GeometrySettings,
85
88
  VcsVectorPropertiesComponent,
@@ -16,6 +16,7 @@ import {
16
16
  Polygon,
17
17
  } from 'ol/geom';
18
18
  import { Stroke, Style, Text as OLText } from 'ol/style';
19
+ import { BalloonFeatureInfoView } from '@vcmap/ui';
19
20
 
20
21
  function layoutHelper(feature, layout = 'XYZ') {
21
22
  if (layout !== 'XYZ') {
@@ -292,3 +293,15 @@ export function getTiltedLineStringFeature(layout) {
292
293
  layoutHelper(feature, layout);
293
294
  return feature;
294
295
  }
296
+
297
+ let balloonFeatureInfo;
298
+ export function getBalloonFeatureInfo(app) {
299
+ if (!balloonFeatureInfo) {
300
+ balloonFeatureInfo = new BalloonFeatureInfoView({
301
+ title: 'Vector Properties Example',
302
+ attributeKeys: ['featureId'],
303
+ });
304
+ app.featureInfo.add(balloonFeatureInfo);
305
+ }
306
+ return balloonFeatureInfo;
307
+ }
@@ -12,6 +12,9 @@
12
12
  <VcsFormButton @click="toggleClass()" :active="showTestClass" class="pa-1">
13
13
  Change Static2 TestClass
14
14
  </VcsFormButton>
15
+ <vcs-form-button @click="logStates"
16
+ >Log Current window states</vcs-form-button
17
+ >
15
18
  </div>
16
19
  </template>
17
20
  <style></style>
@@ -218,6 +221,12 @@
218
221
  app.windowManager.add(windowComponentOptions, owner);
219
222
  }
220
223
  },
224
+ logStates() {
225
+ app.windowManager.componentIds.forEach((id) => {
226
+ console.log(app.windowManager.get(id));
227
+ console.log(app.windowManager.getCachedPosition(id));
228
+ });
229
+ },
221
230
  examples: exampleWindows.map((item) => item.id),
222
231
  };
223
232
  },
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "dependencies": {
3
- "@vcmap/print": "^2.0.0",
3
+ "@vcmap/print": "^3.0.0",
4
4
  "@vcmap/walk": "^2.0.0",
5
5
  "@vcmap/clipping-tool": "^2.0.0",
6
6
  "@vcmap/transparent-terrain": "^2.0.0",
7
7
  "@vcmap/height-profile": "^2.0.0",
8
8
  "@vcmap/flight": "^2.0.0",
9
- "@vcmap/swipe-tool": "^2.0.0",
9
+ "@vcmap/swipe-tool": "^3.0.0",
10
10
  "@vcmap/export": "^2.0.0",
11
11
  "@vcmap/viewshed": "^3.0.0",
12
- "@vcmap/measurement": "^2.0.0",
12
+ "@vcmap/measurement": "^3.0.0",
13
13
  "@vcmap/multi-view": "^2.0.0",
14
14
  "@vcmap/draw": "^3.0.0",
15
15
  "@vcmap/shadow": "^3.0.0",
@@ -19,11 +19,13 @@
19
19
  "@vcmap/link-button": "^2.0.0",
20
20
  "@vcmap/cesium-filters": "^2.0.0",
21
21
  "@vcmap/search-nominatim": "^2.0.0",
22
- "@vcmap/create-link": "^2.0.0",
22
+ "@vcmap/create-link": "^3.0.0",
23
23
  "@vcmap/module-selector": "^2.0.0",
24
24
  "@vcmap/line-of-sight": "^1.0.0",
25
25
  "@vcmap/layer-slider": "^2.0.0",
26
- "@vcmap/vcs-solar-balloon": "^2.0.0"
26
+ "@vcmap/vcs-solar-balloon": "^2.0.0",
27
+ "@vcmap/list-view": "^1.0.0",
28
+ "@vcmap/pointcloud-settings": "^1.0.0"
27
29
  },
28
30
  "optionalDependencies": {
29
31
  "@vcmap/planning": "^6.0.0"
@@ -107,6 +107,12 @@ export function getViewpointFromFeature(feature: import("ol").Feature): Viewpoin
107
107
  * @returns {VcsAction|null} returns null if the feature does not have a geometry with a valid extent
108
108
  */
109
109
  export function createZoomToFeatureAction(actionOptions: ActionOptions, feature: import("ol").Feature, mapCollection: import("@vcmap/core").MapCollection): VcsAction | null;
110
+ /**
111
+ * Calls the callback of an action and handles potential error.
112
+ * @param {VcsAction} action
113
+ * @param {PointerEvent} [p]
114
+ */
115
+ export function callSafeAction(action: VcsAction, p?: PointerEvent | undefined): void;
110
116
  export const searchComponentId: "searchId";
111
117
  export type ActionOptions = Omit<VcsAction, 'callback'>;
112
118
  export type ActionCallback = (p?: PointerEvent) => (void | Promise<void>);
@@ -1,5 +1,6 @@
1
1
  import { v4 as uuid } from 'uuid';
2
2
  import { check, maybe, oneOf, optional } from '@vcsuite/check';
3
+ import { getLogger } from '@vcsuite/logger';
3
4
  import {
4
5
  Collection,
5
6
  Extent,
@@ -498,3 +499,24 @@ export function createZoomToFeatureAction(
498
499
  },
499
500
  };
500
501
  }
502
+
503
+ /**
504
+ * Calls the callback of an action and handles potential error.
505
+ * @param {VcsAction} action
506
+ * @param {PointerEvent} [p]
507
+ */
508
+ export function callSafeAction(action, p) {
509
+ const logError = (e) =>
510
+ getLogger(action.name).error(
511
+ `Error while calling the ${action.title ?? action.name} callback:`,
512
+ e,
513
+ );
514
+ try {
515
+ const optPromise = action.callback(p);
516
+ if (optPromise instanceof Promise) {
517
+ optPromise.catch(logError);
518
+ }
519
+ } catch (e) {
520
+ logError(e);
521
+ }
522
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @param {import("@vcmap/ui").VcsUiApp} app
3
+ * @returns {{ layer: import("@vcmap/core").VectorLayer, destroy: () => void }}
4
+ */
5
+ export function setupDeepPickingLayer(app: import("@vcmap/ui").VcsUiApp): {
6
+ layer: import("@vcmap/core").VectorLayer;
7
+ destroy: () => void;
8
+ };
9
+ /**
10
+ * @param {import("../vcsUiApp.js").default} app
11
+ * @param {import("@vcmap/core").VectorLayer} layer
12
+ * @param {(event: import("@vcmap/core").InteractionEvent) => Promise<import("@vcmap/core").EventFeature[]>} collectFeatures
13
+ * @param {import("@vcmap/core").InteractionEvent} event
14
+ * @returns {import("./actionHelper.js").VcsAction}
15
+ */
16
+ export function createDeepPickingAction(app: import("../vcsUiApp.js").default, layer: import("@vcmap/core").VectorLayer, collectFeatures: (event: import("@vcmap/core").InteractionEvent) => Promise<import("@vcmap/core").EventFeature[]>, event: import("@vcmap/core").InteractionEvent): import("./actionHelper.js").VcsAction;
17
+ /**
18
+ * This adds deep picking action to the context menu, if not disabled in uiConfig
19
+ * @param {import("../vcsUiApp.js").default} app
20
+ * @returns {() => void}
21
+ */
22
+ export function setupDeepPicking(app: import("../vcsUiApp.js").default): () => void;
23
+ export const deepPickingWindowId: "deep-picking-window";