@vcmap/ui 6.1.0-rc.2 → 6.1.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.
Files changed (105) hide show
  1. package/config/base.config.json +6 -0
  2. package/config/clipping.config.json +384 -0
  3. package/config/cluster.config.json +106 -0
  4. package/config/concepts-show-case.config.json +4 -0
  5. package/config/projects.config.json +5 -2
  6. package/dist/assets/{cesium-57fbd309.js → cesium-87d5e72d.js} +438 -432
  7. package/dist/assets/cesium.js +1 -1
  8. package/dist/assets/{core-fd079400.js → core-72f9f393.js} +4907 -4514
  9. package/dist/assets/core.js +1 -1
  10. package/dist/assets/{ol-50dfef96.js → ol-e468ba43.js} +23518 -22404
  11. package/dist/assets/ol.js +1 -1
  12. package/dist/assets/ui-73257b15.css +1 -0
  13. package/dist/assets/{ui-5135917c.js → ui-73257b15.js} +13440 -12742
  14. package/dist/assets/ui.js +1 -1
  15. package/dist/assets/vue.js +1 -1
  16. package/dist/assets/{vuetify-f02b7bb9.css → vuetify-2437380c.css} +2 -2
  17. package/dist/assets/{vuetify-f02b7bb9.js → vuetify-2437380c.js} +8024 -7634
  18. package/dist/assets/vuetify.js +1 -1
  19. package/index.d.ts +38 -19
  20. package/index.js +35 -6
  21. package/lib/olLib.js +25 -3
  22. package/package.json +6 -6
  23. package/plugins/@vcmap-show-case/callback-tester/README.md +3 -0
  24. package/plugins/@vcmap-show-case/callback-tester/package.json +5 -0
  25. package/plugins/@vcmap-show-case/callback-tester/src/CallbackTester.vue +62 -0
  26. package/plugins/@vcmap-show-case/callback-tester/src/index.js +48 -0
  27. package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +1 -0
  28. package/src/actions/actionHelper.d.ts +1 -0
  29. package/src/actions/actionHelper.js +70 -19
  30. package/src/application/VcsApp.vue +83 -50
  31. package/src/application/VcsApp.vue.d.ts +24 -2
  32. package/src/application/VcsContainer.vue.d.ts +8 -0
  33. package/src/application/VcsObliqueFooter.vue +9 -3
  34. package/src/application/VcsSplashScreen.vue +37 -0
  35. package/src/application/VcsSplashScreen.vue.d.ts +6 -0
  36. package/src/application/positionDisplayInteraction.js +1 -1
  37. package/src/callback/activateClippingPolygonCallback.d.ts +29 -0
  38. package/src/callback/activateClippingPolygonCallback.js +54 -0
  39. package/src/callback/closeSplashScreenCallback.d.ts +8 -0
  40. package/src/callback/closeSplashScreenCallback.js +33 -0
  41. package/src/callback/deactivateClippingPolygonCallback.d.ts +29 -0
  42. package/src/callback/deactivateClippingPolygonCallback.js +54 -0
  43. package/src/callback/openSplashScreenCallback.d.ts +8 -0
  44. package/src/callback/openSplashScreenCallback.js +35 -0
  45. package/src/callback/toggleNavbarButtonCallback.d.ts +36 -0
  46. package/src/callback/toggleNavbarButtonCallback.js +62 -0
  47. package/src/components/form-inputs-controls/VcsSelect.vue +1 -1
  48. package/src/components/form-inputs-controls/VcsTextArea.vue +12 -7
  49. package/src/components/form-output/markdownHelper.d.ts +0 -25
  50. package/src/components/form-output/markdownHelper.js +1 -386
  51. package/src/components/lists/VcsGroupedList.vue +178 -0
  52. package/src/components/lists/VcsGroupedList.vue.d.ts +17 -0
  53. package/src/components/lists/VcsList.vue +142 -396
  54. package/src/components/lists/VcsList.vue.d.ts +38 -168
  55. package/src/components/lists/VcsTreeview.vue +11 -12
  56. package/src/components/lists/listHelper.d.ts +87 -0
  57. package/src/components/lists/listHelper.js +348 -0
  58. package/src/components/section/VcsFormSection.vue +7 -2
  59. package/src/components/section/VcsFormSection.vue.d.ts +9 -0
  60. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +1 -1
  61. package/src/contentTree/LayerTree.vue +2 -1
  62. package/src/contentTree/LayerTree.vue.d.ts +2 -0
  63. package/src/contentTree/contentTreeCollection.d.ts +1 -0
  64. package/src/contentTree/contentTreeCollection.js +7 -3
  65. package/src/contentTree/contentTreeItem.js +4 -2
  66. package/src/contentTree/groupContentTreeItem.js +5 -3
  67. package/src/featureInfo/ClusterFeatureComponent.vue +58 -0
  68. package/src/featureInfo/ClusterFeatureComponent.vue.d.ts +6 -0
  69. package/src/featureInfo/abstractFeatureInfoView.js +1 -2
  70. package/src/featureInfo/featureInfo.d.ts +87 -1
  71. package/src/featureInfo/featureInfo.js +342 -34
  72. package/src/featureInfo/featureInfoInteraction.js +18 -3
  73. package/src/featureInfo/iframeFeatureInfoView.js +1 -1
  74. package/src/featureInfo/markdownBalloonFeatureInfoView.js +2 -4
  75. package/src/featureInfo/markdownFeatureInfoView.js +1 -1
  76. package/src/i18n/de.d.ts +17 -4
  77. package/src/i18n/de.js +7 -0
  78. package/src/i18n/en.d.ts +17 -4
  79. package/src/i18n/en.js +7 -0
  80. package/src/legend/legendHelper.d.ts +1 -1
  81. package/src/legend/legendHelper.js +52 -9
  82. package/src/localStorage.d.ts +21 -0
  83. package/src/localStorage.js +51 -0
  84. package/src/manager/collectionManager/CollectionComponent.vue +1 -1
  85. package/src/manager/collectionManager/CollectionComponentContent.vue +2 -3
  86. package/src/manager/collectionManager/CollectionComponentList.vue +2 -3
  87. package/src/manager/collectionManager/CollectionComponentStandalone.vue +1 -1
  88. package/src/manager/navbarManager.js +9 -4
  89. package/src/manager/toolbox/ToolboxManagerComponent.vue +10 -8
  90. package/src/manager/toolbox/ToolboxManagerComponent.vue.d.ts +11 -0
  91. package/src/manager/window/windowHelper.d.ts +7 -3
  92. package/src/manager/window/windowHelper.js +30 -10
  93. package/src/navigation/overviewMap.d.ts +1 -0
  94. package/src/navigation/overviewMap.js +4 -3
  95. package/src/pluginHelper.d.ts +7 -0
  96. package/src/pluginHelper.js +18 -4
  97. package/src/search/ResultItem.vue.d.ts +1 -1
  98. package/src/search/search.js +1 -1
  99. package/src/state.d.ts +4 -2
  100. package/src/state.js +54 -31
  101. package/src/uiConfig.d.ts +27 -0
  102. package/src/uiConfig.js +16 -1
  103. package/src/vcsUiApp.js +7 -11
  104. package/dist/assets/ui-5135917c.css +0 -1
  105. /package/dist/assets/{vue-c3c55d88.js → vue-ff37ea23.js} +0 -0
@@ -64,6 +64,7 @@
64
64
  * @vue-prop {Array<VcsAction>} headerActions - Icons to be displayed on the right side
65
65
  * @vue-prop {number} [actionButtonListOverflowCount] - overflow count to use for action lists in the title and items
66
66
  * @vue-prop {string} [helpText] - Optional help text. Must be plain string. Use 'help' slot for html based help texts. Help slot has precedence over helpText prop.
67
+ * @vue-prop {boolean} [startHelpOpen=false] - If help text starts open.
67
68
  * @vue-computed {Array<VcsAction>} actions - Returns header actions extended by a help action, if help prop is passed or help slot is used.
68
69
  */
69
70
  export default {
@@ -104,6 +105,10 @@
104
105
  type: String,
105
106
  default: undefined,
106
107
  },
108
+ startHelpOpen: {
109
+ type: Boolean,
110
+ default: false,
111
+ },
107
112
  },
108
113
  setup(props, { slots }) {
109
114
  const open = ref(props.startOpen);
@@ -116,7 +121,7 @@
116
121
  const helpAction = reactive({
117
122
  name: 'help',
118
123
  title: 'components.vcsFormSection.help',
119
- active: false,
124
+ active: props.startHelpOpen,
120
125
  icon: 'mdi-help-circle',
121
126
  callback() {
122
127
  this.active = !this.active;
@@ -128,7 +133,7 @@
128
133
  */
129
134
  const actions = computed(() => {
130
135
  if (props.helpText || (slots.help && slots.help().length > 0)) {
131
- return [helpAction, ...props.headerActions];
136
+ return [...props.headerActions, helpAction];
132
137
  }
133
138
  return props.headerActions;
134
139
  });
@@ -28,6 +28,10 @@ declare const _default: import("vue").DefineComponent<{
28
28
  type: StringConstructor;
29
29
  default: undefined;
30
30
  };
31
+ startHelpOpen: {
32
+ type: BooleanConstructor;
33
+ default: boolean;
34
+ };
31
35
  }, {
32
36
  open: import("vue").Ref<boolean>;
33
37
  showContent: import("vue").ComputedRef<boolean>;
@@ -64,6 +68,10 @@ declare const _default: import("vue").DefineComponent<{
64
68
  type: StringConstructor;
65
69
  default: undefined;
66
70
  };
71
+ startHelpOpen: {
72
+ type: BooleanConstructor;
73
+ default: boolean;
74
+ };
67
75
  }>>, {
68
76
  disabled: boolean;
69
77
  headerActions: unknown[];
@@ -72,5 +80,6 @@ declare const _default: import("vue").DefineComponent<{
72
80
  helpText: string;
73
81
  expandable: boolean;
74
82
  startOpen: boolean;
83
+ startHelpOpen: boolean;
75
84
  }, {}>;
76
85
  export default _default;
@@ -218,7 +218,7 @@ declare const _default: import("vue").DefineComponent<{
218
218
  getPrimitiveOptions: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => import("@vcmap/core", { with: { "resolution-mode": "import" } }).VectorPropertiesPrimitiveOptions<import("@vcmap/core", { with: { "resolution-mode": "import" } }).PrimitiveOptionsType> | undefined;
219
219
  getPrimitive: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => import("@vcmap/core", { with: { "resolution-mode": "import" } }).VectorPropertiesPrimitive | null;
220
220
  getModel: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => import("@vcmap/core", { with: { "resolution-mode": "import" } }).VectorPropertiesModelOptions | null;
221
- renderAs: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => "geometry" | "model" | "primitive";
221
+ renderAs: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => "geometry" | "primitive" | "model";
222
222
  setVcsMeta: (vcsMeta: import("@vcmap/core", { with: { "resolution-mode": "import" } }).VcsMeta) => void;
223
223
  setValues: (options: import("@vcmap/core", { with: { "resolution-mode": "import" } }).VectorPropertiesOptions) => void;
224
224
  getValues: () => import("@vcmap/core", { with: { "resolution-mode": "import" } }).VectorPropertiesOptions;
@@ -20,7 +20,8 @@
20
20
  import { VSheet } from 'vuetify/components';
21
21
  import VcsTreeview from '../components/lists/VcsTreeview.vue';
22
22
 
23
- const openStateMapSymbol = Symbol('openStateMap');
23
+ /** The open state Symbol of the ContentTree */
24
+ export const openStateMapSymbol = Symbol('openStateMap');
24
25
  /**
25
26
  * @description
26
27
  * Implements Treeview and shows content tree
@@ -1,3 +1,5 @@
1
+ /** The open state Symbol of the ContentTree */
2
+ export const openStateMapSymbol: unique symbol;
1
3
  declare const _default: import("vue").DefineComponent<{
2
4
  windowState: {
3
5
  type: ObjectConstructor;
@@ -3,6 +3,7 @@
3
3
  * @returns {import("@vcmap/core").OverrideCollection<ContentTreeItem, ContentTreeCollection>}
4
4
  */
5
5
  export function createContentTreeCollection(app: import("@src/vcsUiApp.js").default): import("@vcmap/core").OverrideCollection<ContentTreeItem, ContentTreeCollection>;
6
+ export const defaultContentTreeComponentId: "Content";
6
7
  export default ContentTreeCollection;
7
8
  export type ParentTreeViewItem = {
8
9
  treeViewItem?: import("./contentTreeItem.js").TreeViewItem | undefined;
@@ -20,6 +20,8 @@ import { ButtonLocation } from '../manager/navbarManager.js';
20
20
  const subTreeOpenStateSymbol = Symbol('SubTreeOpenState');
21
21
  const subTreeItemWeight = Symbol('SubTreeItemWeight');
22
22
 
23
+ export const defaultContentTreeComponentId = 'Content';
24
+
23
25
  /**
24
26
  * @typedef {Object} ParentTreeViewItem
25
27
  * @property {import("./contentTreeItem.js").TreeViewItem} [treeViewItem]
@@ -77,7 +79,9 @@ class ContentTreeCollection extends IndexedCollection {
77
79
  contentTreeActiveOnStartup?.value &&
78
80
  contentTreeActiveOnStartup[moduleIdSymbol] !== this._app.dynamicModuleId
79
81
  ) {
80
- const action = this._app.navbarManager.get('Content')?.action;
82
+ const action = this._app.navbarManager.get(
83
+ defaultContentTreeComponentId,
84
+ )?.action;
81
85
  if (action && !action.active) {
82
86
  action.callback();
83
87
  }
@@ -119,7 +123,7 @@ class ContentTreeCollection extends IndexedCollection {
119
123
  */
120
124
  this._defaultSubtreeItem = new SubContentTreeItem(
121
125
  {
122
- name: 'Content',
126
+ name: defaultContentTreeComponentId,
123
127
  icon: '$vcsLayers',
124
128
  title: 'content.title',
125
129
  tooltip: 'content.title',
@@ -198,7 +202,7 @@ class ContentTreeCollection extends IndexedCollection {
198
202
  'contentTreeActiveOnStartup',
199
203
  );
200
204
  if (
201
- id === 'Content' &&
205
+ id === defaultContentTreeComponentId &&
202
206
  contentTreeActiveOnStartup?.value &&
203
207
  contentTreeActiveOnStartup[moduleIdSymbol] !== this._app.dynamicModuleId
204
208
  ) {
@@ -422,9 +422,11 @@ class ContentTreeItem {
422
422
  (a) => a[actionWeightSymbol] > weight,
423
423
  );
424
424
  if (insertIndex > -1) {
425
- this._actions.value.splice(insertIndex, 0, action);
425
+ const newActions = [...this._actions.value];
426
+ newActions.splice(insertIndex, 0, action);
427
+ this._actions.value = newActions;
426
428
  } else {
427
- this._actions.value.push(action);
429
+ this._actions.value = [...this._actions.value, action];
428
430
  }
429
431
  }
430
432
 
@@ -33,11 +33,13 @@ class GroupContentTreeItem extends ContentTreeItem {
33
33
  () => {
34
34
  const children = this._children.value;
35
35
  this.visible = children.some((c) => c.visible);
36
- if (children.every((c) => c.state === StateActionState.NONE)) {
36
+ if (
37
+ children.every((c) => c.state === StateActionState.NONE || !c.visible)
38
+ ) {
37
39
  this.state = StateActionState.NONE;
38
40
  } else {
39
41
  const childrenWithState = children.filter(
40
- (c) => c.state !== StateActionState.NONE,
42
+ (c) => c.visible && c.state !== StateActionState.NONE,
41
43
  );
42
44
  if (
43
45
  childrenWithState.every((c) => c.state === StateActionState.ACTIVE)
@@ -54,7 +56,7 @@ class GroupContentTreeItem extends ContentTreeItem {
54
56
  }
55
57
  }
56
58
  },
57
- { deep: true },
59
+ { deep: true, immediate: true },
58
60
  );
59
61
  }
60
62
 
@@ -0,0 +1,58 @@
1
+ <script setup>
2
+ import { ref, shallowRef, inject, onUnmounted } from 'vue';
3
+ import VcsGroupedList from '../components/lists/VcsGroupedList.vue';
4
+
5
+ const props = defineProps({
6
+ /** @type {import("../components/lists/VcsGroupedList.vue").VcsGroupedListItem} */
7
+ items: {
8
+ type: Array,
9
+ default: () => [],
10
+ },
11
+ /** @type {import("../components/lists/VcsGroupedList.vue").VcsListGroup} */
12
+ groups: {
13
+ type: Array,
14
+ default: () => [],
15
+ },
16
+ });
17
+
18
+ const app = inject('vcsApp');
19
+ const open = ref(true);
20
+ const selected = shallowRef([]);
21
+
22
+ const selectionListener = app.featureInfo.featureChanged.addEventListener(
23
+ (f) => {
24
+ if (f === null) {
25
+ selected.value = [];
26
+ } else {
27
+ const item = props.items.find((i) => i.name === f.getId());
28
+ if (item) {
29
+ selected.value = [item];
30
+ }
31
+ }
32
+ },
33
+ );
34
+
35
+ onUnmounted(() => {
36
+ selectionListener();
37
+ });
38
+ </script>
39
+
40
+ <template>
41
+ <div>
42
+ <template v-if="items.length > 0">
43
+ <vcs-grouped-list
44
+ v-if="open"
45
+ :items="items"
46
+ :groups="groups"
47
+ v-model="selected"
48
+ selectable
49
+ single-select
50
+ searchable
51
+ open-all
52
+ />
53
+ </template>
54
+ <p v-else>{{ $t('featureInfo.cluster.empty') }}</p>
55
+ </div>
56
+ </template>
57
+
58
+ <style scoped lang="scss"></style>
@@ -0,0 +1,6 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {
2
+ $props: {
3
+ readonly [x: string]: any;
4
+ };
5
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
6
+ export default _default;
@@ -1,7 +1,6 @@
1
- import { VcsObject } from '@vcmap/core';
1
+ import { renderTemplate, VcsObject } from '@vcmap/core';
2
2
  import { WindowSlot } from '../manager/window/windowManager.js';
3
3
  import { defaultTagOptions } from '../components/tables/VcsTable.vue';
4
- import { renderTemplate } from '../components/form-output/markdownHelper.js';
5
4
 
6
5
  /**
7
6
  * @typedef {Object} FeatureInfoProps
@@ -1,3 +1,10 @@
1
+ /**
2
+ *
3
+ * @param {import("ol/style/Style.js").default?} style
4
+ * @param {import("@vcmap-cesium/engine").Color} fillColor
5
+ * @returns {import("ol/style/Style.js").default}
6
+ */
7
+ export function getHighlightStyleFromStyle(style: import("ol/style/Style.js").default | null, fillColor: import("@vcmap-cesium/engine").Color): import("ol/style/Style.js").default;
1
8
  /**
2
9
  * @param {FeatureType} feature
3
10
  * @param {import("@vcmap/core").Layer} layer
@@ -5,6 +12,14 @@
5
12
  * @returns {import("ol/style/Style.js").default|import("@vcmap/core").VectorStyleItem}
6
13
  */
7
14
  export function getHighlightStyle(feature: FeatureType, layer: import("@vcmap/core").Layer, defaultFillColor: string): import("ol/style/Style.js").default | import("@vcmap/core").VectorStyleItem;
15
+ /**
16
+ * @param {import("ol").Feature} clusterFeature
17
+ * @param {import("@vcmap/core").VectorClusterGroup} clusterGroup
18
+ * @param {import("ol/style/Style.js").default} clusterStyle
19
+ * @param {string} defaultFillColor
20
+ * @returns {import("ol/style/Style.js").default}
21
+ */
22
+ export function getClusterHighlightStyle(clusterFeature: import("ol").Feature, clusterGroup: import("@vcmap/core").VectorClusterGroup, clusterStyle: import("ol/style/Style.js").default, defaultFillColor: string): import("ol/style/Style.js").default;
8
23
  /**
9
24
  * @param {import("../vcsUiApp.js").default} app
10
25
  * @returns {FeatureInfoSession}
@@ -69,7 +84,12 @@ declare class FeatureInfo extends Collection<AbstractFeatureInfoView> {
69
84
  */
70
85
  private _windowId;
71
86
  /**
72
- * @type {VcsEvent<FeatureType>}
87
+ * @type {string|null}
88
+ * @private
89
+ */
90
+ private _clusterWindowId;
91
+ /**
92
+ * @type {VcsEvent<FeatureType|null>}
73
93
  * @private
74
94
  */
75
95
  private _featureChanged;
@@ -83,6 +103,21 @@ declare class FeatureInfo extends Collection<AbstractFeatureInfoView> {
83
103
  * @private
84
104
  */
85
105
  private _selectedFeatureId;
106
+ /**
107
+ * @type {VcsEvent<import("ol").Feature|null>}
108
+ * @private
109
+ */
110
+ private _clusterFeatureChanged;
111
+ /**
112
+ * @type {import("ol").Feature|null}
113
+ * @private
114
+ */
115
+ private _selectedClusterFeature;
116
+ /**
117
+ * @type {string|null}
118
+ * @private
119
+ */
120
+ private _selectedClusterFeatureId;
86
121
  /**
87
122
  * @type {Array<function():void>}
88
123
  * @private
@@ -96,6 +131,8 @@ declare class FeatureInfo extends Collection<AbstractFeatureInfoView> {
96
131
  */
97
132
  private _scratchLayer;
98
133
  /**
134
+ * Emitted whenever a feature is selected or cleared.
135
+ * Does not reflect cluster feature changes!
99
136
  * @type {VcsEvent<null|FeatureType>}
100
137
  */
101
138
  get featureChanged(): VcsEvent<FeatureType | null>;
@@ -107,11 +144,29 @@ declare class FeatureInfo extends Collection<AbstractFeatureInfoView> {
107
144
  * @type {null|string}
108
145
  */
109
146
  get selectedFeatureId(): string | null;
147
+ /**
148
+ * Emitted whenever a cluster feature is selected or cleared.
149
+ * @type {VcsEvent<null|import("ol").Feature>}
150
+ */
151
+ get clusterFeatureChanged(): VcsEvent<Feature<import("ol/geom.js").Geometry> | null>;
152
+ /**
153
+ * @type {null|import("ol").Feature}
154
+ */
155
+ get selectedClusterFeature(): Feature<import("ol/geom.js").Geometry> | null;
156
+ /**
157
+ * @type {null|string}
158
+ */
159
+ get selectedClusterFeatureId(): string | null;
110
160
  /**
111
161
  * The window id of the current features FeatureInfoView window
112
162
  * @type {string|null}
113
163
  */
114
164
  get windowId(): string | null;
165
+ /**
166
+ * The window id of the current cluster feature window
167
+ * @type {string|null}
168
+ */
169
+ get clusterWindowId(): string | null;
115
170
  /**
116
171
  * @private
117
172
  */
@@ -136,11 +191,42 @@ declare class FeatureInfo extends Collection<AbstractFeatureInfoView> {
136
191
  * @returns {Promise<void>}
137
192
  */
138
193
  selectFeature(feature: FeatureType, position?: import("ol/coordinate.js").Coordinate | undefined, windowPosition?: import("ol/coordinate.js").Coordinate | undefined, featureInfoView?: AbstractFeatureInfoView | undefined): Promise<void>;
194
+ /**
195
+ * Selecting a cluster feature opens a window listing the features belonging to the cluster feature.
196
+ * To be listed the feature must meet the following criteria: a) the feature must be part of a layer, b) said layer must be managed in
197
+ * the same VcsApp as provided to the FeatureInfo on construction. if not providing a feature info view, then c) said layer must have a featureInfo property set on
198
+ * its properties bag and d) said featureInfo property must provide the name of a FeatureInfoView present on this FeatureInfos
199
+ * collection.
200
+ * The cluster feature will be cloned, highlighted and added on an internal scratch layer to ensure availability until deselection.
201
+ * The original cluster feature will be hidden until deselection.
202
+ * @param {import("ol").Feature} clusterFeature
203
+ * @returns {Promise<void>}
204
+ */
205
+ selectClusterFeature(clusterFeature: import("ol").Feature): Promise<void>;
139
206
  /**
140
207
  * Clears the current feature. remove window, highlighting and provided feature.
141
208
  * @private
142
209
  */
143
210
  private _clearInternal;
211
+ /**
212
+ * Clears the current cluster feature. remove window, highlighting and provided cluster feature.
213
+ * @private
214
+ */
215
+ private _clearClusterInternal;
216
+ /**
217
+ * Deselecting feature clears highlighting and closes FeatureInfoView. fires feature changed with null
218
+ */
219
+ clearFeature(): void;
220
+ /**
221
+ * Deselecting and removing cluster feature. Closing cluster window and fires cluster feature changed with null
222
+ */
223
+ clearCluster(): void;
224
+ /**
225
+ * Clears selection by deselecting current feature and cluster and closing all related windows.
226
+ * Fires feature changed and cluster feature changed events with null.
227
+ */
228
+ clearSelection(): void;
144
229
  }
145
230
  import { VcsEvent } from '@vcmap/core';
146
231
  import { Collection } from '@vcmap/core';
232
+ import { Feature } from 'ol';