@opengeoweb/store 13.1.1 → 14.0.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.
package/index.esm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { createSlice, createSelector, createAction, createListenerMiddleware, isAnyOf, createEntityAdapter, combineReducers, configureStore } from '@reduxjs/toolkit';
2
- import { isEqual, isEmpty, compact } from 'lodash';
2
+ import { isEqual, isEmpty, merge, compact } from 'lodash';
3
3
  import { dateUtils, PROJECTION, defaultDelay } from '@opengeoweb/shared';
4
4
  import { webmapUtils, parseISO8601IntervalToDateInterval, LayerType, handleDateUtilsISOString, webmapTestSettings, WMLayer, getWMLayerById, WMInvalidDateValues, isProjectionSupported, queryWMSLayers } from '@opengeoweb/webmap';
5
5
  import { secondsPerPxFromCanvasWidth, defaultTimeSpan, defaultSecondsPerPx, defaultAnimationDelayAtStart, defaultTimeStep, roundWithTimeStep, getSpeedDelay } from '@opengeoweb/time-slider';
@@ -548,11 +548,7 @@ var slice$7 = createSlice({
548
548
  delete draft.byId[serviceId];
549
549
  }
550
550
  },
551
- fetchInitialServices: function fetchInitialServices(
552
- // eslint-disable-next-line no-unused-vars
553
- draft,
554
- // eslint-disable-next-line no-unused-vars
555
- action) {
551
+ fetchInitialServices: function fetchInitialServices(_draft, _action) {
556
552
  // This block is intentionally left empty so no code should be put in here
557
553
  }
558
554
  }
@@ -1077,7 +1073,7 @@ var getAnimationDuration = function getAnimationDuration(animationEndTime, anima
1077
1073
  * @param iso8601Intervals
1078
1074
  * @returns WebMapAnimationList with time points
1079
1075
  */
1080
- var generateAnimationList = function generateAnimationList(unixAnimationStart, unixAnimationEnd, timeValues) {
1076
+ var generateAnimationList = function generateAnimationList(unixAnimationStart, unixAnimationEnd, timeValues, animationInterval) {
1081
1077
  if (!unixAnimationStart || !unixAnimationEnd || !timeValues) {
1082
1078
  return [];
1083
1079
  }
@@ -1105,9 +1101,12 @@ var generateAnimationList = function generateAnimationList(unixAnimationStart, u
1105
1101
  // Convert interval start and end times to Unix time
1106
1102
  var unixIntervalStart = dateUtils.unix(dateUtils.utc(timeInterval.startTime));
1107
1103
  var unixIntervalEnd = dateUtils.unix(dateUtils.utc(timeInterval.endTime));
1108
- // Parse the duration and calculate interval step in seconds
1109
- var interval = parseISO8601IntervalToDateInterval(timeInterval.duration);
1110
- var intervalSeconds = getTimeStepFromDataInterval(interval) * 60;
1104
+ var getIntervalInSeconds = function getIntervalInSeconds(duration) {
1105
+ // Parse the duration and calculate interval step in seconds
1106
+ var interval = parseISO8601IntervalToDateInterval(duration);
1107
+ return getTimeStepFromDataInterval(interval) * 60;
1108
+ };
1109
+ var intervalSeconds = animationInterval ? animationInterval * 60 : getIntervalInSeconds(timeInterval.duration);
1111
1110
  // Generate animation points for the current interval
1112
1111
  for (var i = currentAnimationTime; i <= unixAnimationEnd; i += intervalSeconds) {
1113
1112
  if (i >= unixIntervalStart && i <= unixIntervalEnd) {
@@ -1333,7 +1332,11 @@ var setBbox = createAction('GENERIC_SETBBOX');
1333
1332
  *
1334
1333
  * These actions should not be used by components directly. Components should only use the generic actions.
1335
1334
  */
1336
- var setTimeSync = createAction('GENERIC_SYNC_SETTIME', function (setTimePayload, targets, groups) {
1335
+ var setTimeSync = createAction('GENERIC_SYNC_SETTIME', function (setTimePayload,
1336
+ // This payload is used to set the state in the syncgroup itself. This state is needed because other listeners (like the timeslider sync) might need this information to trigger new actions.
1337
+ targets,
1338
+ // The targets which will be updated by this action. It contains the payload as well.
1339
+ groups) {
1337
1340
  return {
1338
1341
  payload: {
1339
1342
  source: setTimePayload && setTime(setTimePayload),
@@ -1936,7 +1939,7 @@ var slice$6 = createSlice({
1936
1939
  layerStyle = _action$payload15.layerStyle,
1937
1940
  layerDimensions = _action$payload15.layerDimensions,
1938
1941
  error = _action$payload15.error;
1939
- if (error) {
1942
+ if (error && draft.byId[error.layerId]) {
1940
1943
  draft.byId[error.layerId].status = LayerStatus.error;
1941
1944
  return;
1942
1945
  }
@@ -1948,9 +1951,6 @@ var slice$6 = createSlice({
1948
1951
  return;
1949
1952
  }
1950
1953
  var layer = draft.byId[layerDimensions.layerId];
1951
- var incomingDimensionNames = layerDimensions.dimensions.map(function (dimension) {
1952
- return dimension.name;
1953
- });
1954
1954
  /* Find all other layers with the same name and service, and update these at once (atomic update) */
1955
1955
  var layersToUpdate = Object.values(draft.byId).filter(function (otherLayer) {
1956
1956
  return (otherLayer === null || otherLayer === void 0 ? void 0 : otherLayer.name) === (layer === null || layer === void 0 ? void 0 : layer.name) && (otherLayer === null || otherLayer === void 0 ? void 0 : otherLayer.service) === (layer === null || layer === void 0 ? void 0 : layer.service) && (otherLayer === null || otherLayer === void 0 ? void 0 : otherLayer.id);
@@ -1963,10 +1963,6 @@ var slice$6 = createSlice({
1963
1963
  /* Find the wmLayer */
1964
1964
  var wmLayer = webmapUtils.getWMLayerById(layerId);
1965
1965
  (_reduxLayer$dimension = reduxLayer.dimensions) !== null && _reduxLayer$dimension !== void 0 ? _reduxLayer$dimension : reduxLayer.dimensions = [];
1966
- // remove dimensions not in incoming list of dimensions
1967
- reduxLayer.dimensions = reduxLayer.dimensions.filter(function (dimension) {
1968
- return incomingDimensionNames.includes(dimension.name);
1969
- });
1970
1966
  var reduxDimensions = reduxLayer.dimensions;
1971
1967
  /* Now update or insert the dimension for each layer */
1972
1968
  layerDimensions.dimensions.forEach(function (newLayerDimension) {
@@ -1983,7 +1979,7 @@ var slice$6 = createSlice({
1983
1979
  var _existingDimension$va, _newLayerDimension$va;
1984
1980
  // update currentvalue to corresponding LATEST value
1985
1981
  // LATEST, LATEST-1, LATEST-2, LATEST-3
1986
- var existingValues = (_existingDimension$va = existingDimension.values) === null || _existingDimension$va === void 0 ? void 0 : _existingDimension$va.split(',');
1982
+ var existingValues = (_existingDimension$va = existingDimension.values) === null || _existingDimension$va === void 0 ? void 0 : _existingDimension$va.split(','); // TODO: Maarten Plieger 2025-09-08. What about start/stop/res values? https://gitlab.com/opengeoweb/geoweb-assets/-/issues/4273
1987
1983
  var newValues = (_newLayerDimension$va = newLayerDimension.values) === null || _newLayerDimension$va === void 0 ? void 0 : _newLayerDimension$va.split(',');
1988
1984
  if (existingValues && newValues) {
1989
1985
  var match = [1, 2, 3, 4].find(function (offset) {
@@ -1991,6 +1987,20 @@ var slice$6 = createSlice({
1991
1987
  });
1992
1988
  if (match) {
1993
1989
  existingDimension.currentValue = newValues.at(-match);
1990
+ } else {
1991
+ // Value should be one of latest values. If this is not the case, set value to Latest
1992
+ existingDimension.currentValue = newValues.at(-1);
1993
+ }
1994
+ var wmTimeDim = wmLayer === null || wmLayer === void 0 ? void 0 : wmLayer.getDimension('time');
1995
+ var existingReduxTimeDimension = reduxDimensions.find(function (dim) {
1996
+ return dim.name === 'time';
1997
+ });
1998
+ if (existingReduxTimeDimension && wmTimeDim) {
1999
+ // Update WM time dimension values with new reference time
2000
+ wmTimeDim === null || wmTimeDim === void 0 || wmTimeDim.setTimeValuesForReferenceTime(existingDimension.currentValue, wmDimension);
2001
+ // Also set the found range in the redux state.
2002
+ existingReduxTimeDimension.maxValue = wmTimeDim === null || wmTimeDim === void 0 ? void 0 : wmTimeDim.getLastValue();
2003
+ existingReduxTimeDimension.minValue = wmTimeDim === null || wmTimeDim === void 0 ? void 0 : wmTimeDim.getFirstValue();
1994
2004
  }
1995
2005
  }
1996
2006
  }
@@ -2012,10 +2022,10 @@ var slice$6 = createSlice({
2012
2022
  }
2013
2023
  });
2014
2024
  // Ensure that the time range is correctly set based on the current reference time value
2015
- var timeDimension = layerDimensions.dimensions.find(function (layerDim) {
2025
+ var timeDimension = reduxDimensions.find(function (layerDim) {
2016
2026
  return layerDim.name === 'time';
2017
2027
  });
2018
- var refTimeDimension = layerDimensions.dimensions.find(function (layerDim) {
2028
+ var refTimeDimension = reduxDimensions.find(function (layerDim) {
2019
2029
  return layerDim.name === 'reference_time';
2020
2030
  });
2021
2031
  if (timeDimension && refTimeDimension && wmLayer) {
@@ -2025,6 +2035,10 @@ var slice$6 = createSlice({
2025
2035
  if (wmTimeDimension && wmRefTimeDimension) {
2026
2036
  wmTimeDimension === null || wmTimeDimension === void 0 || wmTimeDimension.setTimeValuesForReferenceTime(refTimeDimension.currentValue, wmRefTimeDimension);
2027
2037
  }
2038
+ // Synchronize the updated redux currentValues back to wmLayers time dim.
2039
+ reduxDimensions.forEach(function (dim) {
2040
+ dim.name && wmLayer.setDimension(dim.name, dim.currentValue);
2041
+ });
2028
2042
  }
2029
2043
  });
2030
2044
  },
@@ -2149,6 +2163,14 @@ var slice$6 = createSlice({
2149
2163
  }
2150
2164
  }
2151
2165
  },
2166
+ toggleSelectableFeatures: function toggleSelectableFeatures(draft, action) {
2167
+ var layerId = action.payload.layerId;
2168
+ var layer = draft.byId[layerId];
2169
+ if (!layer) {
2170
+ return;
2171
+ }
2172
+ layer.isSelectable = !layer.isSelectable;
2173
+ },
2152
2174
  // layer info actions
2153
2175
  showLayerInfo: function showLayerInfo(draft, action) {
2154
2176
  var _action$payload21 = action.payload,
@@ -2422,11 +2444,7 @@ var slice$4 = createSlice({
2422
2444
  draft.allIds.splice(mapIndex, 1);
2423
2445
  }
2424
2446
  },
2425
- setStepBackwardOrForward: function setStepBackwardOrForward(
2426
- // eslint-disable-next-line no-unused-vars
2427
- _draft,
2428
- // eslint-disable-next-line no-unused-vars
2429
- _action) {},
2447
+ setStepBackwardOrForward: function setStepBackwardOrForward(_draft, _action) {},
2430
2448
  setBbox: function setBbox(draft, action) {
2431
2449
  var _action$payload = action.payload,
2432
2450
  mapId = _action$payload.mapId,
@@ -2534,11 +2552,16 @@ var slice$4 = createSlice({
2534
2552
  var _action$payload9 = action.payload,
2535
2553
  oldIndex = _action$payload9.oldIndex,
2536
2554
  newIndex = _action$payload9.newIndex,
2537
- mapId = _action$payload9.mapId;
2555
+ mapId = _action$payload9.mapId,
2556
+ layerType = _action$payload9.layerType;
2538
2557
  if (!draft.byId[mapId]) {
2539
2558
  return;
2540
2559
  }
2541
- draft.byId[mapId].mapLayers = moveArrayElements(draft.byId[mapId].mapLayers, oldIndex, newIndex);
2560
+ if (layerType !== LayerType.featureLayer) {
2561
+ draft.byId[mapId].mapLayers = moveArrayElements(draft.byId[mapId].mapLayers, oldIndex, newIndex);
2562
+ } else {
2563
+ draft.byId[mapId].featureLayers = moveArrayElements(draft.byId[mapId].featureLayers, oldIndex, newIndex);
2564
+ }
2542
2565
  },
2543
2566
  setAutoLayerId: function setAutoLayerId(draft, action) {
2544
2567
  var _action$payload0 = action.payload,
@@ -2708,11 +2731,7 @@ var slice$4 = createSlice({
2708
2731
  }
2709
2732
  draft.byId[mapId].dockedLayerManagerSize = dockedLayerManagerSize;
2710
2733
  },
2711
- setMapPresetError: function setMapPresetError(
2712
- // eslint-disable-next-line no-unused-vars
2713
- draft,
2714
- // eslint-disable-next-line no-unused-vars
2715
- action) {},
2734
+ setMapPresetError: function setMapPresetError(_draft, _action) {},
2716
2735
  setDefaultMapSettings: function setDefaultMapSettings(draft, action) {
2717
2736
  draft.defaultMapSettings = action.payload.preset;
2718
2737
  },
@@ -2752,6 +2771,7 @@ var slice$4 = createSlice({
2752
2771
  }).addCase(layerActions.duplicateMapLayer, function (draft, action) {
2753
2772
  var _action$payload27 = action.payload,
2754
2773
  newLayerId = _action$payload27.newLayerId,
2774
+ oldLayerId = _action$payload27.oldLayerId,
2755
2775
  mapId = _action$payload27.mapId;
2756
2776
  if (!draft.byId[mapId]) {
2757
2777
  return;
@@ -2760,7 +2780,14 @@ var slice$4 = createSlice({
2760
2780
  console.warn("Warning: Layer id ".concat(newLayerId, " was already taken"));
2761
2781
  return;
2762
2782
  }
2763
- draft.byId[mapId].mapLayers.unshift(newLayerId);
2783
+ var isFeatureLayer = draft.byId[mapId].featureLayers.some(function (id) {
2784
+ return id === oldLayerId;
2785
+ });
2786
+ if (!isFeatureLayer) {
2787
+ draft.byId[mapId].mapLayers.unshift(newLayerId);
2788
+ } else {
2789
+ draft.byId[mapId].featureLayers.unshift(newLayerId);
2790
+ }
2764
2791
  }).addCase(layerActions.addBaseLayer, function (draft, action) {
2765
2792
  var _action$payload28 = action.payload,
2766
2793
  layer = _action$payload28.layer,
@@ -3514,10 +3541,16 @@ var getLayerDisplayName = createSelector(getLayerType, getLayerOptions, getLayer
3514
3541
  */
3515
3542
  var getIsLayerMissing = createSelector(function (store) {
3516
3543
  return store;
3517
- }, getLayerService, getLayerName, getLayerStatus, function (store, service, name, status) {
3544
+ }, getLayerService, getLayerName, getLayerStatus, getLayerType, function (store, service, name, status, type) {
3545
+ if (type === LayerType.featureLayer) {
3546
+ return false;
3547
+ }
3518
3548
  var layer = getLayerFromService(store, service, name);
3519
3549
  return !layer || status === LayerStatus.error;
3520
3550
  }, selectorMemoizationOptions);
3551
+ var getIsLayerSelectable = createSelector(getLayerById, function (layer) {
3552
+ return Boolean(layer === null || layer === void 0 ? void 0 : layer.isSelectable);
3553
+ }, selectorMemoizationOptions);
3521
3554
 
3522
3555
  var selectors$6 = /*#__PURE__*/Object.freeze({
3523
3556
  __proto__: null,
@@ -3534,6 +3567,7 @@ var selectors$6 = /*#__PURE__*/Object.freeze({
3534
3567
  getIsLayerInEditMode: getIsLayerInEditMode,
3535
3568
  getIsLayerMissing: getIsLayerMissing,
3536
3569
  getIsLayerPresent: getIsLayerPresent,
3570
+ getIsLayerSelectable: getIsLayerSelectable,
3537
3571
  getLayerById: getLayerById,
3538
3572
  getLayerByIdWithoutTimeDimension: getLayerByIdWithoutTimeDimension,
3539
3573
  getLayerCurrentTime: getLayerCurrentTime,
@@ -3785,6 +3819,7 @@ var DialogTypes;
3785
3819
  DialogTypes["AreaObjectLoader"] = "areaObjectLoader";
3786
3820
  DialogTypes["DataExplorer"] = "dataExplorer";
3787
3821
  DialogTypes["DataExplorerInfo"] = "dataExplorerInfo";
3822
+ DialogTypes["SelectedFeatures"] = "selectedFeatures";
3788
3823
  DialogTypes["SoundingsSources"] = "soundingsSources";
3789
3824
  DialogTypes["SoundingsLocations"] = "soundingsLocations";
3790
3825
  DialogTypes["TimeseriesLocations"] = "timeseriesLocations";
@@ -4178,47 +4213,47 @@ var slice$3 = createSlice({
4178
4213
  });
4179
4214
  }
4180
4215
  });
4216
+ var getPayLoadKey = function getPayLoadKey(type) {
4217
+ switch (type) {
4218
+ case setTimeSync.type:
4219
+ return SYNCGROUPS_TYPE_SETTIME;
4220
+ case setBboxSync.type:
4221
+ return SYNCGROUPS_TYPE_SETBBOX;
4222
+ default:
4223
+ return null;
4224
+ }
4225
+ };
4226
+ var mergePayloadInToState = function mergePayloadInToState(draftSource, payloadKey, payload) {
4227
+ if (!draftSource) {
4228
+ // Do nothing if draftSource is undefined/null
4229
+ return;
4230
+ }
4231
+ if (!draftSource.payloadByType) {
4232
+ draftSource.payloadByType = {};
4233
+ draftSource.payloadByType[payloadKey] = payload;
4234
+ return;
4235
+ }
4236
+ draftSource.payloadByType[payloadKey] = merge(draftSource.payloadByType[payloadKey], payload);
4237
+ };
4181
4238
  var setBboxOrTimeSync = function setBboxOrTimeSync(draft, action) {
4182
4239
  var _action$payload8 = action.payload,
4183
4240
  targets = _action$payload8.targets,
4184
4241
  source = _action$payload8.source,
4185
4242
  groups = _action$payload8.groups;
4186
- var getPayLoadKey = function getPayLoadKey(type) {
4187
- switch (type) {
4188
- case setTimeSync.type:
4189
- return SYNCGROUPS_TYPE_SETTIME;
4190
- case setBboxSync.type:
4191
- return SYNCGROUPS_TYPE_SETBBOX;
4192
- default:
4193
- return null;
4194
- }
4195
- };
4196
4243
  if (source) {
4197
4244
  var payloadKey = getPayLoadKey(action.type);
4198
4245
  if (!source.payload || !payloadKey) {
4199
4246
  console.warn('Wrong sync action: ', action);
4200
4247
  return;
4201
4248
  }
4202
- if (draft.sources.byId[source.payload.sourceId]) {
4203
- if (!draft.sources.byId[source.payload.sourceId].payloadByType) {
4204
- draft.sources.byId[source.payload.sourceId].payloadByType = {};
4205
- }
4206
- draft.sources.byId[source.payload.sourceId].payloadByType[payloadKey] = source.payload;
4207
- }
4249
+ mergePayloadInToState(draft.sources.byId[source.payload.sourceId], payloadKey, source.payload);
4208
4250
  /* Update all targets */
4209
4251
  targets.forEach(function (target) {
4210
- if (draft.sources.byId[target.targetId]) {
4211
- if (!draft.sources.byId[target.targetId].payloadByType) {
4212
- draft.sources.byId[target.targetId].payloadByType = {};
4213
- }
4214
- draft.sources.byId[target.targetId].payloadByType[payloadKey] = source.payload;
4215
- }
4252
+ mergePayloadInToState(draft.sources.byId[target.targetId], payloadKey, source.payload);
4216
4253
  });
4217
4254
  /* Set the value in the group */
4218
4255
  groups.forEach(function (group) {
4219
- if (draft.groups.byId[group]) {
4220
- draft.groups.byId[group].payloadByType[payloadKey] = source.payload;
4221
- }
4256
+ mergePayloadInToState(draft.groups.byId[group], payloadKey, source.payload);
4222
4257
  });
4223
4258
  }
4224
4259
  };
@@ -4733,25 +4768,26 @@ function (state, mapId) {
4733
4768
  return feature.id === selectedFeatureId;
4734
4769
  });
4735
4770
  if (selectedFeature && selectedFeature.geometry.type === 'Point') {
4736
- var _selectedFeature$prop, _selectedFeature$prop2;
4771
+ var _selectedFeature$prop, _selectedFeature$prop2, _selectedFeature$prop3;
4737
4772
  var coordinates = selectedFeature.geometry.coordinates;
4738
4773
  return {
4739
4774
  lat: coordinates[1],
4740
4775
  lon: coordinates[0],
4741
4776
  id: selectedFeature.id,
4742
4777
  name: (_selectedFeature$prop = selectedFeature.properties) === null || _selectedFeature$prop === void 0 ? void 0 : _selectedFeature$prop.name,
4743
- occurrences: (_selectedFeature$prop2 = selectedFeature.properties) === null || _selectedFeature$prop2 === void 0 ? void 0 : _selectedFeature$prop2.occurrences
4778
+ occurrences: (_selectedFeature$prop2 = selectedFeature.properties) === null || _selectedFeature$prop2 === void 0 ? void 0 : _selectedFeature$prop2.occurrences,
4779
+ serviceId: (_selectedFeature$prop3 = selectedFeature.properties) === null || _selectedFeature$prop3 === void 0 ? void 0 : _selectedFeature$prop3.serviceId
4744
4780
  };
4745
4781
  }
4746
4782
  if (selectedFeature) {
4747
- var _selectedFeature$prop3, _selectedFeature$prop4;
4783
+ var _selectedFeature$prop4, _selectedFeature$prop5;
4748
4784
  var center = turf.center(selectedFeature);
4749
4785
  return {
4750
4786
  lat: center.geometry.coordinates[1],
4751
4787
  lon: center.geometry.coordinates[0],
4752
4788
  id: selectedFeature.id,
4753
- name: (_selectedFeature$prop3 = selectedFeature.properties) === null || _selectedFeature$prop3 === void 0 ? void 0 : _selectedFeature$prop3.name,
4754
- occurrences: (_selectedFeature$prop4 = selectedFeature.properties) === null || _selectedFeature$prop4 === void 0 ? void 0 : _selectedFeature$prop4.occurrences
4789
+ name: (_selectedFeature$prop4 = selectedFeature.properties) === null || _selectedFeature$prop4 === void 0 ? void 0 : _selectedFeature$prop4.name,
4790
+ occurrences: (_selectedFeature$prop5 = selectedFeature.properties) === null || _selectedFeature$prop5 === void 0 ? void 0 : _selectedFeature$prop5.occurrences
4755
4791
  };
4756
4792
  }
4757
4793
  return null;
@@ -4886,7 +4922,7 @@ var initLoadingIndicatorStateForId = function initLoadingIndicatorStateForId(dra
4886
4922
  if (!draft.entities[id]) {
4887
4923
  loadingIndicatorAdapter.addOne(draft, {
4888
4924
  id: id,
4889
- isGetMapLoading: false,
4925
+ getMapLoadingPercentage: 100,
4890
4926
  isGetCapabilitiesLoading: false,
4891
4927
  isEDRLoading: false
4892
4928
  });
@@ -4899,9 +4935,9 @@ var slice$2 = createSlice({
4899
4935
  setGetMapIsLoading: function setGetMapIsLoading(draft, action) {
4900
4936
  var _action$payload = action.payload,
4901
4937
  id = _action$payload.id,
4902
- isGetMapLoading = _action$payload.isGetMapLoading;
4938
+ getMapLoadingPercentage = _action$payload.getMapLoadingPercentage;
4903
4939
  initLoadingIndicatorStateForId(draft, id);
4904
- draft.entities[id].isGetMapLoading = isGetMapLoading;
4940
+ draft.entities[id].getMapLoadingPercentage = getMapLoadingPercentage;
4905
4941
  },
4906
4942
  setGetCapabilitiesIsLoading: function setGetCapabilitiesIsLoading(draft, action) {
4907
4943
  var _action$payload2 = action.payload,
@@ -4925,6 +4961,14 @@ var slice$2 = createSlice({
4925
4961
  draft.entities[id].isEDRLoading = isEDRLoading;
4926
4962
  }
4927
4963
  }
4964
+ },
4965
+ extraReducers: function extraReducers(builder) {
4966
+ builder.addCase(mapActions.unregisterMap, function (draft, action) {
4967
+ var mapId = action.payload.mapId;
4968
+ if (draft.entities[mapId]) {
4969
+ loadingIndicatorAdapter.removeOne(draft, mapId);
4970
+ }
4971
+ });
4928
4972
  }
4929
4973
  });
4930
4974
  var loadingIndicatorActions = slice$2.actions,
@@ -4947,16 +4991,20 @@ var loadingIndicatorActions = slice$2.actions,
4947
4991
  * Copyright 2024 - Finnish Meteorological Institute (FMI)
4948
4992
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
4949
4993
  * */
4994
+ var EMPTY_LOADING_INDICATOR = {
4995
+ entities: {},
4996
+ ids: []
4997
+ };
4950
4998
  var _loadingIndicatorAdap = loadingIndicatorAdapter.getSelectors(function (state) {
4951
4999
  var _state$loadingIndicat;
4952
- return (_state$loadingIndicat = state === null || state === void 0 ? void 0 : state.loadingIndicator) !== null && _state$loadingIndicat !== void 0 ? _state$loadingIndicat : {
4953
- entities: {},
4954
- ids: []
4955
- };
5000
+ return (_state$loadingIndicat = state === null || state === void 0 ? void 0 : state.loadingIndicator) !== null && _state$loadingIndicat !== void 0 ? _state$loadingIndicat : EMPTY_LOADING_INDICATOR;
4956
5001
  }),
4957
5002
  selectLoadingIndicatorById = _loadingIndicatorAdap.selectById;
4958
- var isGetMapLoading = createSelector(selectLoadingIndicatorById, function (loadingIndicator) {
4959
- return (loadingIndicator === null || loadingIndicator === void 0 ? void 0 : loadingIndicator.isGetMapLoading) || false;
5003
+ var getMapLoadingPercentage = createSelector(selectLoadingIndicatorById, function (loadingIndicator) {
5004
+ return loadingIndicator ? loadingIndicator === null || loadingIndicator === void 0 ? void 0 : loadingIndicator.getMapLoadingPercentage : 100;
5005
+ }, selectorMemoizationOptions);
5006
+ var isGetMapLoading = createSelector(getMapLoadingPercentage, function (percentage) {
5007
+ return percentage !== 100;
4960
5008
  }, selectorMemoizationOptions);
4961
5009
  var isGetCapabilitiesLoading = createSelector(selectLoadingIndicatorById, function (loadingIndicator) {
4962
5010
  return (loadingIndicator === null || loadingIndicator === void 0 ? void 0 : loadingIndicator.isGetCapabilitiesLoading) || false;
@@ -4974,6 +5022,7 @@ var isLoading = createSelector([isGetMapLoading, isGetCapabilitiesLoading, isEDR
4974
5022
 
4975
5023
  var selectors$2 = /*#__PURE__*/Object.freeze({
4976
5024
  __proto__: null,
5025
+ getMapLoadingPercentage: getMapLoadingPercentage,
4977
5026
  isEDRLoading: isEDRLoading,
4978
5027
  isGetCapabilitiesLoading: isGetCapabilitiesLoading,
4979
5028
  isGetMapLoading: isGetMapLoading,
@@ -5154,8 +5203,13 @@ var getMapOverLayersIds = createSelector(getMapById, function (store) {
5154
5203
  }, selectorMemoizationOptions);
5155
5204
  var getMapFeatureLayers = createSelector(getMapById, getFeatureLayers, function (store, featureLayers) {
5156
5205
  var featureLayersOnMap = (store === null || store === void 0 ? void 0 : store.featureLayers) || [];
5157
- return featureLayers.filter(function (layer) {
5158
- return featureLayersOnMap.indexOf(layer.id) !== -1;
5206
+ // We want to return the feature layers in the same order as in featureLayersOnMap
5207
+ return featureLayersOnMap.map(function (id) {
5208
+ return featureLayers.find(function (layer) {
5209
+ return layer.id === id;
5210
+ });
5211
+ }).filter(function (layer) {
5212
+ return !!layer;
5159
5213
  });
5160
5214
  }, selectorMemoizationOptions);
5161
5215
  /**
@@ -5701,9 +5755,9 @@ var getMapPreset = createSelector(getMapLayers, getMapBaseLayers, getMapOverLaye
5701
5755
  _ref3.mapId;
5702
5756
  var layer = _objectWithoutProperties(_ref3, _excluded$2);
5703
5757
  if (layer.dimensions !== undefined) {
5704
- // Filter out (reference) time dimension as these should not be part of the preset for now
5758
+ // Filter out time dimension as this should not be part of the preset for now
5705
5759
  var dimensions = layer.dimensions.filter(function (dimension) {
5706
- return dimension.name !== 'time' && dimension.name !== 'reference_time';
5760
+ return dimension.name !== 'time';
5707
5761
  });
5708
5762
  return _objectSpread2(_objectSpread2({}, layer), {}, {
5709
5763
  dimensions: dimensions
@@ -5812,7 +5866,7 @@ var getAnimationList = createSelector(getLayersById, getMapById, getAnimationSta
5812
5866
  values = _ref4.values;
5813
5867
  var unixAnimationStart = roundWithTimeStep(Number(animationStart && dateUtils.unix(dateUtils.utc(animationStart))), animationInterval, 'ceil');
5814
5868
  var unixAnimationEnd = roundWithTimeStep(Number(animationEnd && dateUtils.unix(dateUtils.utc(animationEnd))), animationInterval, 'floor');
5815
- var animationList = generateAnimationList(unixAnimationStart, unixAnimationEnd, values);
5869
+ var animationList = mapStore !== null && mapStore !== void 0 && mapStore.isTimestepAuto ? generateAnimationList(unixAnimationStart, unixAnimationEnd, values) : generateAnimationList(unixAnimationStart, unixAnimationEnd, values, animationInterval);
5816
5870
  // If no animationList is generated, generate a default list using the interval from map
5817
5871
  if (!animationList.length) {
5818
5872
  var timeList = [];
@@ -6441,11 +6495,11 @@ genericListener.startListening({
6441
6495
  });
6442
6496
  // Synchronize timeslider settings for actions 'centertime', 'span' and 'timestep'.
6443
6497
  genericListener.startListening({
6444
- matcher: isAnyOf(mapActions.setTimeSliderCenterTime, mapActions.setTimeSliderSpan, mapActions.setTimeStep, mapActions.setAnimationStartTime, mapActions.setAnimationEndTime, mapActions.setAnimationDelay),
6498
+ matcher: isAnyOf(mapActions.setTimeSliderCenterTime, mapActions.setTimeSliderSpan, mapActions.setTimeStep, mapActions.setAnimationStartTime, mapActions.setAnimationEndTime, mapActions.setAnimationDelay, mapActions.mapStartAnimation),
6445
6499
  effect: function () {
6446
6500
  var _effect2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2, listenerApi) {
6447
6501
  var _synchronizationGroup;
6448
- var payload, type, sourceId, syncGroupState, newPayload, targets, groups;
6502
+ var payload, type, sourceId, syncGroupState, newPayload, animationStartPayload, targets, groups;
6449
6503
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
6450
6504
  while (1) switch (_context2.prev = _context2.next) {
6451
6505
  case 0:
@@ -6466,10 +6520,19 @@ genericListener.startListening({
6466
6520
  timeSliderAnimationDelay: type === mapActions.setAnimationDelay.type ? payload.animationDelay : syncGroupState === null || syncGroupState === void 0 ? void 0 : syncGroupState.timeSliderAnimationDelay
6467
6521
  }
6468
6522
  };
6523
+ if (type === mapActions.mapStartAnimation.type) {
6524
+ animationStartPayload = payload;
6525
+ if (animationStartPayload.start) {
6526
+ newPayload.value.timeSliderAnimationStartTime = animationStartPayload.start;
6527
+ }
6528
+ if (animationStartPayload.end) {
6529
+ newPayload.value.timeSliderAnimationEndTime = animationStartPayload.end;
6530
+ }
6531
+ }
6469
6532
  targets = getTargets(listenerApi.getState(), newPayload, SYNCGROUPS_TYPE_SETTIME);
6470
6533
  groups = getTargetGroups(listenerApi.getState(), newPayload, SYNCGROUPS_TYPE_SETTIME);
6471
6534
  listenerApi.dispatch(setTimeSync(newPayload, targets, groups));
6472
- case 8:
6535
+ case 9:
6473
6536
  case "end":
6474
6537
  return _context2.stop();
6475
6538
  }
@@ -6903,7 +6966,13 @@ var olMetronomeHandler = function olMetronomeHandler(timerIds, listenerApi) {
6903
6966
  _iterator.f();
6904
6967
  }
6905
6968
  if (targetsWithUpdateValue.length > 0) {
6906
- listenerApi.dispatch(setTimeSync(null, targetsWithUpdateValue, ['metronomelistener']));
6969
+ // This ensures the source value is stored in the syncgroup
6970
+ var metronomelistenersource = {
6971
+ sourceId: 'metronomelistenersource',
6972
+ origin: 'metronomelistenersource',
6973
+ value: targetsWithUpdateValue[0].value
6974
+ };
6975
+ listenerApi.dispatch(setTimeSync(metronomelistenersource, targetsWithUpdateValue, ['metronomelistener']));
6907
6976
  }
6908
6977
  };
6909
6978
 
@@ -6992,7 +7061,6 @@ mapListener.startListening({
6992
7061
  updateAnimation(mapId, incomingMaxTime, listenerApi);
6993
7062
  }
6994
7063
  } catch (error) {
6995
- // eslint-disable-next-line no-console
6996
7064
  console.warn(error);
6997
7065
  }
6998
7066
  }
@@ -7090,7 +7158,6 @@ mapListener.startListening({
7090
7158
  });
7091
7159
  }
7092
7160
  } catch (error) {
7093
- // eslint-disable-next-line no-console
7094
7161
  console.warn(error);
7095
7162
  }
7096
7163
  case 6:
@@ -7343,7 +7410,7 @@ mapListener.startListening({
7343
7410
  animationStartTime: startTime
7344
7411
  }));
7345
7412
  listenerApi.dispatch(genericActions.setTime({
7346
- origin: '',
7413
+ origin: 'map/listener.ts, setMapPreset',
7347
7414
  sourceId: mapId,
7348
7415
  value: {
7349
7416
  currentTime: startTime
@@ -7366,7 +7433,7 @@ mapListener.startListening({
7366
7433
  animationStartTime: _startTime
7367
7434
  }));
7368
7435
  listenerApi.dispatch(genericActions.setTime({
7369
- origin: '',
7436
+ origin: 'map/listener.ts, setAnimationStartTime',
7370
7437
  sourceId: mapId,
7371
7438
  value: {
7372
7439
  currentTime: _startTime
@@ -7533,7 +7600,7 @@ mapListener.startListening({
7533
7600
  }));
7534
7601
  }
7535
7602
  listenerApi.dispatch(genericActions.setTime({
7536
- origin: '',
7603
+ origin: 'map/listener.ts, setStepBackwardOrForward',
7537
7604
  sourceId: mapId,
7538
7605
  value: {
7539
7606
  currentTime: handleDateUtilsISOString(selectedTimeString)
@@ -7789,7 +7856,6 @@ var fetchInitialServices = /*#__PURE__*/function () {
7789
7856
  case 7:
7790
7857
  _context2.prev = 7;
7791
7858
  _context2.t0 = _context2["catch"](2);
7792
- // eslint-disable-next-line no-console
7793
7859
  console.warn(_context2.t0);
7794
7860
  case 10:
7795
7861
  case "end":
@@ -7848,11 +7914,7 @@ var slice$1 = createSlice({
7848
7914
  initialState: initialState$1,
7849
7915
  name: 'router',
7850
7916
  reducers: {
7851
- navigateToUrl: function navigateToUrl(
7852
- // eslint-disable-next-line no-unused-vars
7853
- draft,
7854
- // eslint-disable-next-line no-unused-vars
7855
- action) {}
7917
+ navigateToUrl: function navigateToUrl(_draft, _action) {}
7856
7918
  }
7857
7919
  });
7858
7920
  var routerReducer = slice$1.reducer,
@@ -8012,11 +8074,7 @@ var slice = createSlice({
8012
8074
  });
8013
8075
  drawTool.drawModes = newModes;
8014
8076
  },
8015
- changeIntersectionBounds: function changeIntersectionBounds(
8016
- // eslint-disable-next-line no-unused-vars
8017
- draft,
8018
- // eslint-disable-next-line no-unused-vars
8019
- action) {
8077
+ changeIntersectionBounds: function changeIntersectionBounds(_draft, _action) {
8020
8078
  // action caught in drawingTool/listener
8021
8079
  }
8022
8080
  },
@@ -8095,12 +8153,13 @@ var getDrawingtoolStore = function getDrawingtoolStore(store) {
8095
8153
  }
8096
8154
  return null;
8097
8155
  };
8156
+ var EMPTY_DRAWING_TOOL_STATE = {
8157
+ entities: {},
8158
+ ids: []
8159
+ };
8098
8160
  var _drawAdapter$getSelec = drawAdapter.getSelectors(function (state) {
8099
8161
  var _state$drawingtools;
8100
- return (_state$drawingtools = state === null || state === void 0 ? void 0 : state.drawingtools) !== null && _state$drawingtools !== void 0 ? _state$drawingtools : {
8101
- entities: {},
8102
- ids: []
8103
- };
8162
+ return (_state$drawingtools = state === null || state === void 0 ? void 0 : state.drawingtools) !== null && _state$drawingtools !== void 0 ? _state$drawingtools : EMPTY_DRAWING_TOOL_STATE;
8104
8163
  }),
8105
8164
  selectDrawToolById = _drawAdapter$getSelec.selectById,
8106
8165
  selectAllDrawingTools = _drawAdapter$getSelec.selectAll;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/store",
3
- "version": "13.1.1",
3
+ "version": "14.0.0",
4
4
  "description": "GeoWeb Store library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -8,15 +8,15 @@
8
8
  "url": "git@gitlab.com:opengeoweb/opengeoweb.git"
9
9
  },
10
10
  "dependencies": {
11
- "@opengeoweb/shared": "13.1.1",
11
+ "@opengeoweb/shared": "14.0.0",
12
12
  "react-redux": "^9.2.0",
13
13
  "@reduxjs/toolkit": "^2.6.1",
14
- "@opengeoweb/webmap-react": "13.1.1",
15
- "@opengeoweb/webmap": "13.1.1",
14
+ "@opengeoweb/webmap-react": "14.0.0",
15
+ "@opengeoweb/webmap": "14.0.0",
16
16
  "immer": "^10.0.3",
17
17
  "lodash": "^4.17.21",
18
- "@opengeoweb/metronome": "13.1.1",
19
- "@opengeoweb/time-slider": "13.1.1",
18
+ "@opengeoweb/metronome": "14.0.0",
19
+ "@opengeoweb/time-slider": "14.0.0",
20
20
  "react-router-dom": "^6.23.1",
21
21
  "ol": "^10.4.0",
22
22
  "@turf/turf": "^7.2.0",
@@ -38,7 +38,7 @@ export declare const drawingToolReducer: import("redux").Reducer<DrawingToolStat
38
38
  shape: GeoJSON.FeatureCollection;
39
39
  title?: string;
40
40
  }>) => void;
41
- changeIntersectionBounds: (draft: Draft<DrawingToolState>, action: PayloadAction<{
41
+ changeIntersectionBounds: (_draft: Draft<DrawingToolState>, _action: PayloadAction<{
42
42
  drawToolId: string;
43
43
  geoJSON: GeoJSON.FeatureCollection;
44
44
  }>) => void;
@@ -1,35 +1,35 @@
1
1
  import { LoadingIndicatorModuleState, LoadingIndicatorType } from './types';
2
2
  export declare const selectLoadingIndicatorById: (state: LoadingIndicatorModuleState, id: string) => {
3
3
  id: string;
4
- isGetMapLoading: boolean;
4
+ getMapLoadingPercentage: number;
5
5
  isGetCapabilitiesLoading: boolean;
6
6
  isEDRLoading: boolean;
7
7
  };
8
- export declare const isGetMapLoading: ((state: LoadingIndicatorModuleState, id: string) => boolean) & {
8
+ export declare const getMapLoadingPercentage: ((state: LoadingIndicatorModuleState, id: string) => number) & {
9
9
  clearCache: () => void;
10
10
  resultsCount: () => number;
11
11
  resetResultsCount: () => void;
12
12
  } & {
13
13
  resultFunc: (resultFuncArgs_0: {
14
14
  id: string;
15
- isGetMapLoading: boolean;
15
+ getMapLoadingPercentage: number;
16
16
  isGetCapabilitiesLoading: boolean;
17
17
  isEDRLoading: boolean;
18
- }) => boolean;
18
+ }) => number;
19
19
  memoizedResultFunc: ((resultFuncArgs_0: {
20
20
  id: string;
21
- isGetMapLoading: boolean;
21
+ getMapLoadingPercentage: number;
22
22
  isGetCapabilitiesLoading: boolean;
23
23
  isEDRLoading: boolean;
24
- }) => boolean) & {
24
+ }) => number) & {
25
25
  clearCache: () => void;
26
26
  resultsCount: () => number;
27
27
  resetResultsCount: () => void;
28
28
  };
29
- lastResult: () => boolean;
29
+ lastResult: () => number;
30
30
  dependencies: [(state: LoadingIndicatorModuleState, id: string) => {
31
31
  id: string;
32
- isGetMapLoading: boolean;
32
+ getMapLoadingPercentage: number;
33
33
  isGetCapabilitiesLoading: boolean;
34
34
  isEDRLoading: boolean;
35
35
  }];
@@ -41,6 +41,62 @@ export declare const isGetMapLoading: ((state: LoadingIndicatorModuleState, id:
41
41
  memoize: typeof import("reselect").weakMapMemoize;
42
42
  argsMemoize: typeof import("reselect").weakMapMemoize;
43
43
  };
44
+ export declare const isGetMapLoading: ((state: LoadingIndicatorModuleState, id: string) => boolean) & {
45
+ clearCache: () => void;
46
+ resultsCount: () => number;
47
+ resetResultsCount: () => void;
48
+ } & {
49
+ resultFunc: (resultFuncArgs_0: number) => boolean;
50
+ memoizedResultFunc: ((resultFuncArgs_0: number) => boolean) & {
51
+ clearCache: () => void;
52
+ resultsCount: () => number;
53
+ resetResultsCount: () => void;
54
+ };
55
+ lastResult: () => boolean;
56
+ dependencies: [((state: LoadingIndicatorModuleState, id: string) => number) & {
57
+ clearCache: () => void;
58
+ resultsCount: () => number;
59
+ resetResultsCount: () => void;
60
+ } & {
61
+ resultFunc: (resultFuncArgs_0: {
62
+ id: string;
63
+ getMapLoadingPercentage: number;
64
+ isGetCapabilitiesLoading: boolean;
65
+ isEDRLoading: boolean;
66
+ }) => number;
67
+ memoizedResultFunc: ((resultFuncArgs_0: {
68
+ id: string;
69
+ getMapLoadingPercentage: number;
70
+ isGetCapabilitiesLoading: boolean;
71
+ isEDRLoading: boolean;
72
+ }) => number) & {
73
+ clearCache: () => void;
74
+ resultsCount: () => number;
75
+ resetResultsCount: () => void;
76
+ };
77
+ lastResult: () => number;
78
+ dependencies: [(state: LoadingIndicatorModuleState, id: string) => {
79
+ id: string;
80
+ getMapLoadingPercentage: number;
81
+ isGetCapabilitiesLoading: boolean;
82
+ isEDRLoading: boolean;
83
+ }];
84
+ recomputations: () => number;
85
+ resetRecomputations: () => void;
86
+ dependencyRecomputations: () => number;
87
+ resetDependencyRecomputations: () => void;
88
+ } & {
89
+ memoize: typeof import("reselect").weakMapMemoize;
90
+ argsMemoize: typeof import("reselect").weakMapMemoize;
91
+ }];
92
+ recomputations: () => number;
93
+ resetRecomputations: () => void;
94
+ dependencyRecomputations: () => number;
95
+ resetDependencyRecomputations: () => void;
96
+ } & {
97
+ memoize: typeof import("reselect").weakMapMemoize;
98
+ argsMemoize: typeof import("reselect").weakMapMemoize;
99
+ };
44
100
  export declare const isGetCapabilitiesLoading: ((state: LoadingIndicatorModuleState, id: string) => boolean) & {
45
101
  clearCache: () => void;
46
102
  resultsCount: () => number;
@@ -48,13 +104,13 @@ export declare const isGetCapabilitiesLoading: ((state: LoadingIndicatorModuleSt
48
104
  } & {
49
105
  resultFunc: (resultFuncArgs_0: {
50
106
  id: string;
51
- isGetMapLoading: boolean;
107
+ getMapLoadingPercentage: number;
52
108
  isGetCapabilitiesLoading: boolean;
53
109
  isEDRLoading: boolean;
54
110
  }) => boolean;
55
111
  memoizedResultFunc: ((resultFuncArgs_0: {
56
112
  id: string;
57
- isGetMapLoading: boolean;
113
+ getMapLoadingPercentage: number;
58
114
  isGetCapabilitiesLoading: boolean;
59
115
  isEDRLoading: boolean;
60
116
  }) => boolean) & {
@@ -65,7 +121,7 @@ export declare const isGetCapabilitiesLoading: ((state: LoadingIndicatorModuleSt
65
121
  lastResult: () => boolean;
66
122
  dependencies: [(state: LoadingIndicatorModuleState, id: string) => {
67
123
  id: string;
68
- isGetMapLoading: boolean;
124
+ getMapLoadingPercentage: number;
69
125
  isGetCapabilitiesLoading: boolean;
70
126
  isEDRLoading: boolean;
71
127
  }];
@@ -84,13 +140,13 @@ export declare const isEDRLoading: ((state: LoadingIndicatorModuleState, id: str
84
140
  } & {
85
141
  resultFunc: (resultFuncArgs_0: {
86
142
  id: string;
87
- isGetMapLoading: boolean;
143
+ getMapLoadingPercentage: number;
88
144
  isGetCapabilitiesLoading: boolean;
89
145
  isEDRLoading: boolean;
90
146
  }) => boolean;
91
147
  memoizedResultFunc: ((resultFuncArgs_0: {
92
148
  id: string;
93
- isGetMapLoading: boolean;
149
+ getMapLoadingPercentage: number;
94
150
  isGetCapabilitiesLoading: boolean;
95
151
  isEDRLoading: boolean;
96
152
  }) => boolean) & {
@@ -101,7 +157,7 @@ export declare const isEDRLoading: ((state: LoadingIndicatorModuleState, id: str
101
157
  lastResult: () => boolean;
102
158
  dependencies: [(state: LoadingIndicatorModuleState, id: string) => {
103
159
  id: string;
104
- isGetMapLoading: boolean;
160
+ getMapLoadingPercentage: number;
105
161
  isGetCapabilitiesLoading: boolean;
106
162
  isEDRLoading: boolean;
107
163
  }];
@@ -130,28 +186,48 @@ export declare const isLoading: ((state: LoadingIndicatorModuleState, id: string
130
186
  resultsCount: () => number;
131
187
  resetResultsCount: () => void;
132
188
  } & {
133
- resultFunc: (resultFuncArgs_0: {
134
- id: string;
135
- isGetMapLoading: boolean;
136
- isGetCapabilitiesLoading: boolean;
137
- isEDRLoading: boolean;
138
- }) => boolean;
139
- memoizedResultFunc: ((resultFuncArgs_0: {
140
- id: string;
141
- isGetMapLoading: boolean;
142
- isGetCapabilitiesLoading: boolean;
143
- isEDRLoading: boolean;
144
- }) => boolean) & {
189
+ resultFunc: (resultFuncArgs_0: number) => boolean;
190
+ memoizedResultFunc: ((resultFuncArgs_0: number) => boolean) & {
145
191
  clearCache: () => void;
146
192
  resultsCount: () => number;
147
193
  resetResultsCount: () => void;
148
194
  };
149
195
  lastResult: () => boolean;
150
- dependencies: [(state: LoadingIndicatorModuleState, id: string) => {
151
- id: string;
152
- isGetMapLoading: boolean;
153
- isGetCapabilitiesLoading: boolean;
154
- isEDRLoading: boolean;
196
+ dependencies: [((state: LoadingIndicatorModuleState, id: string) => number) & {
197
+ clearCache: () => void;
198
+ resultsCount: () => number;
199
+ resetResultsCount: () => void;
200
+ } & {
201
+ resultFunc: (resultFuncArgs_0: {
202
+ id: string;
203
+ getMapLoadingPercentage: number;
204
+ isGetCapabilitiesLoading: boolean;
205
+ isEDRLoading: boolean;
206
+ }) => number;
207
+ memoizedResultFunc: ((resultFuncArgs_0: {
208
+ id: string;
209
+ getMapLoadingPercentage: number;
210
+ isGetCapabilitiesLoading: boolean;
211
+ isEDRLoading: boolean;
212
+ }) => number) & {
213
+ clearCache: () => void;
214
+ resultsCount: () => number;
215
+ resetResultsCount: () => void;
216
+ };
217
+ lastResult: () => number;
218
+ dependencies: [(state: LoadingIndicatorModuleState, id: string) => {
219
+ id: string;
220
+ getMapLoadingPercentage: number;
221
+ isGetCapabilitiesLoading: boolean;
222
+ isEDRLoading: boolean;
223
+ }];
224
+ recomputations: () => number;
225
+ resetRecomputations: () => void;
226
+ dependencyRecomputations: () => number;
227
+ resetDependencyRecomputations: () => void;
228
+ } & {
229
+ memoize: typeof import("reselect").weakMapMemoize;
230
+ argsMemoize: typeof import("reselect").weakMapMemoize;
155
231
  }];
156
232
  recomputations: () => number;
157
233
  resetRecomputations: () => void;
@@ -167,13 +243,13 @@ export declare const isLoading: ((state: LoadingIndicatorModuleState, id: string
167
243
  } & {
168
244
  resultFunc: (resultFuncArgs_0: {
169
245
  id: string;
170
- isGetMapLoading: boolean;
246
+ getMapLoadingPercentage: number;
171
247
  isGetCapabilitiesLoading: boolean;
172
248
  isEDRLoading: boolean;
173
249
  }) => boolean;
174
250
  memoizedResultFunc: ((resultFuncArgs_0: {
175
251
  id: string;
176
- isGetMapLoading: boolean;
252
+ getMapLoadingPercentage: number;
177
253
  isGetCapabilitiesLoading: boolean;
178
254
  isEDRLoading: boolean;
179
255
  }) => boolean) & {
@@ -184,7 +260,7 @@ export declare const isLoading: ((state: LoadingIndicatorModuleState, id: string
184
260
  lastResult: () => boolean;
185
261
  dependencies: [(state: LoadingIndicatorModuleState, id: string) => {
186
262
  id: string;
187
- isGetMapLoading: boolean;
263
+ getMapLoadingPercentage: number;
188
264
  isGetCapabilitiesLoading: boolean;
189
265
  isEDRLoading: boolean;
190
266
  }];
@@ -202,13 +278,13 @@ export declare const isLoading: ((state: LoadingIndicatorModuleState, id: string
202
278
  } & {
203
279
  resultFunc: (resultFuncArgs_0: {
204
280
  id: string;
205
- isGetMapLoading: boolean;
281
+ getMapLoadingPercentage: number;
206
282
  isGetCapabilitiesLoading: boolean;
207
283
  isEDRLoading: boolean;
208
284
  }) => boolean;
209
285
  memoizedResultFunc: ((resultFuncArgs_0: {
210
286
  id: string;
211
- isGetMapLoading: boolean;
287
+ getMapLoadingPercentage: number;
212
288
  isGetCapabilitiesLoading: boolean;
213
289
  isEDRLoading: boolean;
214
290
  }) => boolean) & {
@@ -219,7 +295,7 @@ export declare const isLoading: ((state: LoadingIndicatorModuleState, id: string
219
295
  lastResult: () => boolean;
220
296
  dependencies: [(state: LoadingIndicatorModuleState, id: string) => {
221
297
  id: string;
222
- isGetMapLoading: boolean;
298
+ getMapLoadingPercentage: number;
223
299
  isGetCapabilitiesLoading: boolean;
224
300
  isEDRLoading: boolean;
225
301
  }];
@@ -1,7 +1,7 @@
1
1
  import { EntityState } from '@reduxjs/toolkit';
2
2
  export interface LoadingIndicatorType {
3
3
  id: string;
4
- isGetMapLoading: boolean;
4
+ getMapLoadingPercentage: number;
5
5
  isGetCapabilitiesLoading: boolean;
6
6
  isEDRLoading: boolean;
7
7
  }
@@ -10,7 +10,7 @@ export interface LoadingIndicatorModuleState {
10
10
  }
11
11
  export interface SetIsGetMapLoadingPayload {
12
12
  id: string;
13
- isGetMapLoading: boolean;
13
+ getMapLoadingPercentage: number;
14
14
  }
15
15
  export interface SetIsGetCapabilitiesLoadingPayload {
16
16
  id: string;
@@ -171,7 +171,7 @@ export declare const selectLinkedFeatures: ((state: any, props: {
171
171
  }) => {
172
172
  id: string;
173
173
  originalId?: string;
174
- geoJSON: GeoJSON.FeatureCollection;
174
+ geoJSON: GeoJSON.FeatureCollection<GeoJSON.Geometry, import("./syncGroups/types").PotentialDataProperties | null>;
175
175
  }[]) & {
176
176
  clearCache: () => void;
177
177
  resultsCount: () => number;
@@ -180,12 +180,12 @@ export declare const selectLinkedFeatures: ((state: any, props: {
180
180
  resultFunc: (resultFuncArgs_0: LinkedState | undefined, resultFuncArgs_1: string[]) => {
181
181
  id: string;
182
182
  originalId?: string;
183
- geoJSON: GeoJSON.FeatureCollection;
183
+ geoJSON: GeoJSON.FeatureCollection<GeoJSON.Geometry, import("./syncGroups/types").PotentialDataProperties | null>;
184
184
  }[];
185
185
  memoizedResultFunc: ((resultFuncArgs_0: LinkedState | undefined, resultFuncArgs_1: string[]) => {
186
186
  id: string;
187
187
  originalId?: string;
188
- geoJSON: GeoJSON.FeatureCollection;
188
+ geoJSON: GeoJSON.FeatureCollection<GeoJSON.Geometry, import("./syncGroups/types").PotentialDataProperties | null>;
189
189
  }[]) & {
190
190
  clearCache: () => void;
191
191
  resultsCount: () => number;
@@ -194,7 +194,7 @@ export declare const selectLinkedFeatures: ((state: any, props: {
194
194
  lastResult: () => {
195
195
  id: string;
196
196
  originalId?: string;
197
- geoJSON: GeoJSON.FeatureCollection;
197
+ geoJSON: GeoJSON.FeatureCollection<GeoJSON.Geometry, import("./syncGroups/types").PotentialDataProperties | null>;
198
198
  }[];
199
199
  dependencies: [(linkedState: any) => LinkedState | undefined, ((state: LinkedState, props: {
200
200
  mapId: string;
@@ -292,8 +292,16 @@ export declare const getSelectedFeature: ((state: SynchronizationGroupState, map
292
292
  lat: number;
293
293
  lon: number;
294
294
  id: string;
295
- name: any;
296
- occurrences: any;
295
+ name: string | undefined;
296
+ occurrences: import("./syncGroups/types").Occurrence[] | undefined;
297
+ serviceId: string | undefined;
298
+ } | {
299
+ lat: number;
300
+ lon: number;
301
+ id: string;
302
+ name: string | undefined;
303
+ occurrences: import("./syncGroups/types").Occurrence[] | undefined;
304
+ serviceId?: undefined;
297
305
  } | null) & {
298
306
  clearCache: () => void;
299
307
  resultsCount: () => number;
@@ -303,15 +311,31 @@ export declare const getSelectedFeature: ((state: SynchronizationGroupState, map
303
311
  lat: number;
304
312
  lon: number;
305
313
  id: string;
306
- name: any;
307
- occurrences: any;
314
+ name: string | undefined;
315
+ occurrences: import("./syncGroups/types").Occurrence[] | undefined;
316
+ serviceId: string | undefined;
317
+ } | {
318
+ lat: number;
319
+ lon: number;
320
+ id: string;
321
+ name: string | undefined;
322
+ occurrences: import("./syncGroups/types").Occurrence[] | undefined;
323
+ serviceId?: undefined;
308
324
  } | null;
309
325
  memoizedResultFunc: ((resultFuncArgs_0: PotentialData) => {
310
326
  lat: number;
311
327
  lon: number;
312
328
  id: string;
313
- name: any;
314
- occurrences: any;
329
+ name: string | undefined;
330
+ occurrences: import("./syncGroups/types").Occurrence[] | undefined;
331
+ serviceId: string | undefined;
332
+ } | {
333
+ lat: number;
334
+ lon: number;
335
+ id: string;
336
+ name: string | undefined;
337
+ occurrences: import("./syncGroups/types").Occurrence[] | undefined;
338
+ serviceId?: undefined;
315
339
  } | null) & {
316
340
  clearCache: () => void;
317
341
  resultsCount: () => number;
@@ -321,8 +345,16 @@ export declare const getSelectedFeature: ((state: SynchronizationGroupState, map
321
345
  lat: number;
322
346
  lon: number;
323
347
  id: string;
324
- name: any;
325
- occurrences: any;
348
+ name: string | undefined;
349
+ occurrences: import("./syncGroups/types").Occurrence[] | undefined;
350
+ serviceId: string | undefined;
351
+ } | {
352
+ lat: number;
353
+ lon: number;
354
+ id: string;
355
+ name: string | undefined;
356
+ occurrences: import("./syncGroups/types").Occurrence[] | undefined;
357
+ serviceId?: undefined;
326
358
  } | null;
327
359
  dependencies: [(state: SynchronizationGroupState, mapId: string) => PotentialData];
328
360
  recomputations: () => number;
@@ -333,18 +365,18 @@ export declare const getSelectedFeature: ((state: SynchronizationGroupState, map
333
365
  memoize: typeof import("reselect").weakMapMemoize;
334
366
  argsMemoize: typeof import("reselect").weakMapMemoize;
335
367
  };
336
- export declare const getSelectedFeatureAsGeoJSON: ((state: SynchronizationGroupState, mapId: string) => import("geojson").Feature<import("geojson").Geometry, import("geojson").GeoJsonProperties> | null | undefined) & {
368
+ export declare const getSelectedFeatureAsGeoJSON: ((state: SynchronizationGroupState, mapId: string) => import("geojson").Feature<import("geojson").Geometry, import("./syncGroups/types").PotentialDataProperties | null> | null | undefined) & {
337
369
  clearCache: () => void;
338
370
  resultsCount: () => number;
339
371
  resetResultsCount: () => void;
340
372
  } & {
341
- resultFunc: (resultFuncArgs_0: PotentialData) => import("geojson").Feature<import("geojson").Geometry, import("geojson").GeoJsonProperties> | null | undefined;
342
- memoizedResultFunc: ((resultFuncArgs_0: PotentialData) => import("geojson").Feature<import("geojson").Geometry, import("geojson").GeoJsonProperties> | null | undefined) & {
373
+ resultFunc: (resultFuncArgs_0: PotentialData) => import("geojson").Feature<import("geojson").Geometry, import("./syncGroups/types").PotentialDataProperties | null> | null | undefined;
374
+ memoizedResultFunc: ((resultFuncArgs_0: PotentialData) => import("geojson").Feature<import("geojson").Geometry, import("./syncGroups/types").PotentialDataProperties | null> | null | undefined) & {
343
375
  clearCache: () => void;
344
376
  resultsCount: () => number;
345
377
  resetResultsCount: () => void;
346
378
  };
347
- lastResult: () => import("geojson").Feature<import("geojson").Geometry, import("geojson").GeoJsonProperties> | null | undefined;
379
+ lastResult: () => import("geojson").Feature<import("geojson").Geometry, import("./syncGroups/types").PotentialDataProperties | null> | null | undefined;
348
380
  dependencies: [(state: SynchronizationGroupState, mapId: string) => PotentialData];
349
381
  recomputations: () => number;
350
382
  resetRecomputations: () => void;
@@ -1,4 +1,5 @@
1
1
  import { SystemScope } from '@opengeoweb/shared';
2
+ import { MapFeatureClass } from '@opengeoweb/webmap-react';
2
3
  import { LoadingIndicatorModuleState } from '../loadingIndicator/types';
3
4
  import type { GenericActionPayload } from '../types';
4
5
  import { SYNCGROUPS_TYPE_SETBBOX, SYNCGROUPS_TYPE_SETLAYERACTIONS, SYNCGROUPS_TYPE_SETTIME } from './constants';
@@ -31,11 +32,37 @@ export interface SynchronizationGroup {
31
32
  allIds: string[];
32
33
  };
33
34
  }
35
+ export interface Occurrence {
36
+ id: string;
37
+ properties: OccurrenceProperties;
38
+ }
39
+ export interface OccurrenceProperties {
40
+ name?: string;
41
+ serviceId: string;
42
+ collectionId: string;
43
+ parameterName?: string | string[];
44
+ }
45
+ export interface FeatureNameObject {
46
+ serviceId: string;
47
+ serviceName?: string;
48
+ collectionId: string;
49
+ collectionName: string;
50
+ }
51
+ export interface PotentialDataProperties {
52
+ occurrences?: Occurrence[];
53
+ name?: string;
54
+ names?: Record<string, FeatureNameObject[]>;
55
+ hidden?: boolean;
56
+ highlightSelectedFeature?: boolean;
57
+ mapFeatureClass?: MapFeatureClass;
58
+ serviceId?: string;
59
+ selectionType?: string;
60
+ }
34
61
  export interface PotentialData {
35
62
  features?: {
36
63
  id: string;
37
64
  originalId?: string;
38
- geoJSON: GeoJSON.FeatureCollection;
65
+ geoJSON: GeoJSON.FeatureCollection<GeoJSON.Geometry, PotentialDataProperties | null>;
39
66
  }[];
40
67
  selectedFeatureId?: string;
41
68
  formFeatures?: {
@@ -5,7 +5,7 @@ import type { SetBboxSyncActionPayload, SetBboxSyncPayload, SetLayerActionsSyncP
5
5
  *
6
6
  * These actions should not be used by components directly. Components should only use the generic actions.
7
7
  */
8
- export declare const setTimeSync: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[setTimePayload: SetTimePayload | null, targets: SetTimeSyncPayload[], groups: string[]], SetTimeSyncActionPayload, "GENERIC_SYNC_SETTIME", never, never>;
8
+ export declare const setTimeSync: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[setTimePayload: SetTimePayload, targets: SetTimeSyncPayload[], groups: string[]], SetTimeSyncActionPayload, "GENERIC_SYNC_SETTIME", never, never>;
9
9
  export declare const setBboxSync: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload: SetBboxPayload, targets: SetBboxSyncPayload[], groups: string[]], SetBboxSyncActionPayload, "GENERIC_SYNC_SETBBOX", never, never>;
10
10
  export declare const setLayerActionSync: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload: SyncLayerPayloads, targets: SyncLayerPayloads[], type: string], SetLayerActionsSyncPayload, "GENERIC_SYNC_SETLAYERACTIONS", never, never>;
11
11
  export type GenericSyncActions = ReturnType<typeof setTimeSync> | ReturnType<typeof setBboxSync> | ReturnType<typeof setLayerActionSync>;
@@ -41,6 +41,9 @@ export declare const slice: import("@reduxjs/toolkit").Slice<LayerState, {
41
41
  updateFeatureProperties: (draft: Draft<LayerState>, action: PayloadAction<UpdateFeaturePropertiesPayload>) => void;
42
42
  toggleFeatureMode: (draft: Draft<LayerState>, action: PayloadAction<ToggleFeatureModePayload>) => void;
43
43
  exitFeatureDrawMode: (draft: Draft<LayerState>, action: PayloadAction<ExitFeatureDrawModePayload>) => void;
44
+ toggleSelectableFeatures: (draft: Draft<LayerState>, action: PayloadAction<{
45
+ layerId: string;
46
+ }>) => void;
44
47
  showLayerInfo: (draft: Draft<LayerState>, action: PayloadAction<ShowLayerInfoPayload>) => void;
45
48
  hideLayerInfo: (draft: Draft<LayerState>) => void;
46
49
  }, "layerReducer", "layerReducer", import("@reduxjs/toolkit").SliceSelectors<LayerState>>;
@@ -82,6 +85,9 @@ export declare const layerReducer: import("redux").Reducer<LayerState>, layerAct
82
85
  updateFeatureProperties: (draft: Draft<LayerState>, action: PayloadAction<UpdateFeaturePropertiesPayload>) => void;
83
86
  toggleFeatureMode: (draft: Draft<LayerState>, action: PayloadAction<ToggleFeatureModePayload>) => void;
84
87
  exitFeatureDrawMode: (draft: Draft<LayerState>, action: PayloadAction<ExitFeatureDrawModePayload>) => void;
88
+ toggleSelectableFeatures: (draft: Draft<LayerState>, action: PayloadAction<{
89
+ layerId: string;
90
+ }>) => void;
85
91
  showLayerInfo: (draft: Draft<LayerState>, action: PayloadAction<ShowLayerInfoPayload>) => void;
86
92
  hideLayerInfo: (draft: Draft<LayerState>) => void;
87
93
  }, "layerReducer">;
@@ -2470,3 +2470,44 @@ export declare const getIsLayerMissing: ((state: any, ...params: any[]) => boole
2470
2470
  memoize: typeof import("reselect").weakMapMemoize;
2471
2471
  argsMemoize: typeof import("reselect").weakMapMemoize;
2472
2472
  };
2473
+ export declare const getIsLayerSelectable: ((state: any, layerId: any) => boolean) & {
2474
+ clearCache: () => void;
2475
+ resultsCount: () => number;
2476
+ resetResultsCount: () => void;
2477
+ } & {
2478
+ resultFunc: (resultFuncArgs_0: ReduxLayer | undefined) => boolean;
2479
+ memoizedResultFunc: ((resultFuncArgs_0: ReduxLayer | undefined) => boolean) & {
2480
+ clearCache: () => void;
2481
+ resultsCount: () => number;
2482
+ resetResultsCount: () => void;
2483
+ };
2484
+ lastResult: () => boolean;
2485
+ dependencies: [((state: any, layerId: any) => ReduxLayer | undefined) & {
2486
+ clearCache: () => void;
2487
+ resultsCount: () => number;
2488
+ resetResultsCount: () => void;
2489
+ } & {
2490
+ resultFunc: (resultFuncArgs_0: LayerState | undefined, resultFuncArgs_1: string) => ReduxLayer | undefined;
2491
+ memoizedResultFunc: ((resultFuncArgs_0: LayerState | undefined, resultFuncArgs_1: string) => ReduxLayer | undefined) & {
2492
+ clearCache: () => void;
2493
+ resultsCount: () => number;
2494
+ resetResultsCount: () => void;
2495
+ };
2496
+ lastResult: () => ReduxLayer | undefined;
2497
+ dependencies: [(store: CoreAppStore) => LayerState | undefined, (layerStore: any, layerId: any) => string];
2498
+ recomputations: () => number;
2499
+ resetRecomputations: () => void;
2500
+ dependencyRecomputations: () => number;
2501
+ resetDependencyRecomputations: () => void;
2502
+ } & {
2503
+ memoize: typeof import("reselect").weakMapMemoize;
2504
+ argsMemoize: typeof import("reselect").weakMapMemoize;
2505
+ }];
2506
+ recomputations: () => number;
2507
+ resetRecomputations: () => void;
2508
+ dependencyRecomputations: () => number;
2509
+ resetDependencyRecomputations: () => void;
2510
+ } & {
2511
+ memoize: typeof import("reselect").weakMapMemoize;
2512
+ argsMemoize: typeof import("reselect").weakMapMemoize;
2513
+ };
@@ -24,6 +24,7 @@ export interface FeatureLayer {
24
24
  selectedFeatureIndex?: number;
25
25
  isInEditMode?: boolean;
26
26
  drawMode?: string;
27
+ isSelectable?: boolean;
27
28
  }
28
29
  /**
29
30
  * ReduxLayer is used to reflect the shape of the layer in the redux layers store.
@@ -13,7 +13,7 @@ export declare const mapUtils: {
13
13
  getTimeStepFromDataInterval: (timeInterval: import("@opengeoweb/webmap").TimeInterval) => number;
14
14
  getSpeedFactor: (speedDelay: number) => import("@opengeoweb/time-slider").SpeedFactorType;
15
15
  getAnimationDuration: (animationEndTime: string | undefined, animationStartTime: string | undefined) => number;
16
- generateAnimationList: (unixAnimationStart: number, unixAnimationEnd: number, timeValues: string | undefined) => mapTypes.WebMapAnimationList;
16
+ generateAnimationList: (unixAnimationStart: number, unixAnimationEnd: number, timeValues: string | undefined, animationInterval?: number) => mapTypes.WebMapAnimationList;
17
17
  parseTimeDimToISO8601Interval: (timeInterval: string | undefined) => mapTypes.ISO8601Interval[];
18
18
  produceTimeSliderTimeSpan: (draft: import("immer").Draft<mapTypes.WebMapState>, mapId: string, timeSliderSpan: number) => void;
19
19
  };
@@ -54,7 +54,7 @@ export declare const slice: import("@reduxjs/toolkit").Slice<WebMapState, {
54
54
  setDisableMapPin: (draft: Draft<WebMapState>, action: PayloadAction<DisableMapPinPayload>) => void;
55
55
  toggleMapPinIsVisible: (draft: Draft<WebMapState>, action: PayloadAction<ToggleMapPinIsVisiblePayload>) => void;
56
56
  setDockedLayerManagerSize: (draft: Draft<WebMapState>, action: PayloadAction<SetDockedLayerManagerSize>) => void;
57
- setMapPresetError: (draft: Draft<WebMapState>, action: PayloadAction<{
57
+ setMapPresetError: (_draft: Draft<WebMapState>, _action: PayloadAction<{
58
58
  mapId: string;
59
59
  error: string;
60
60
  }>) => void;
@@ -120,6 +120,7 @@ export interface MoveLayerPayload {
120
120
  oldIndex: number;
121
121
  newIndex: number;
122
122
  origin: string;
123
+ layerType?: string;
123
124
  }
124
125
  export interface TimeListType {
125
126
  name: string;
@@ -77,7 +77,7 @@ export declare const getAnimationDuration: (animationEndTime: string | undefined
77
77
  * @param iso8601Intervals
78
78
  * @returns WebMapAnimationList with time points
79
79
  */
80
- export declare const generateAnimationList: (unixAnimationStart: number, unixAnimationEnd: number, timeValues: string | undefined) => WebMapAnimationList;
80
+ export declare const generateAnimationList: (unixAnimationStart: number, unixAnimationEnd: number, timeValues: string | undefined, animationInterval?: number) => WebMapAnimationList;
81
81
  /**
82
82
  * Parses the time dimension values string to an array of ISO8601 intervals
83
83
  * @param timeInterval
@@ -5,6 +5,6 @@ export declare const initialState: ServiceState;
5
5
  export declare const serviceReducer: import("redux").Reducer<ServiceState>, serviceActions: import("@reduxjs/toolkit").CaseReducerActions<{
6
6
  serviceSetLayers: (draft: Draft<ServiceState>, action: PayloadAction<SetLayersForServicePayload>) => void;
7
7
  mapStoreRemoveService: (draft: Draft<ServiceState>, action: PayloadAction<MapStoreRemoveServicePayload>) => void;
8
- fetchInitialServices: (draft: Draft<ServiceState>, action: PayloadAction<FetchInitialServicesPayload>) => void;
8
+ fetchInitialServices: (_draft: Draft<ServiceState>, _action: PayloadAction<FetchInitialServicesPayload>) => void;
9
9
  }, "serviceReducer">;
10
10
  export type ServiceActions = ReturnType<typeof serviceActions.mapStoreRemoveService> | ReturnType<typeof serviceActions.serviceSetLayers> | ReturnType<typeof serviceActions.fetchInitialServices> | ReturnType<typeof layerActions.onUpdateLayerInformation>;
@@ -1,4 +1,4 @@
1
- import { SystemScope } from '@opengeoweb/shared';
1
+ import { ServiceInterface, SystemScope } from '@opengeoweb/shared';
2
2
  import { LayerProps } from '@opengeoweb/webmap';
3
3
  export interface InitialService {
4
4
  id: string;
@@ -17,6 +17,7 @@ export interface ReduxService {
17
17
  active?: boolean;
18
18
  layers?: ServiceLayer[];
19
19
  scope?: SystemScope;
20
+ type?: ServiceInterface;
20
21
  }
21
22
  /**
22
23
  Used in the services object of webmap to keep a list of available layers in the service
@@ -34,6 +35,7 @@ export interface SetLayersForServicePayload {
34
35
  layers: ServiceLayer[];
35
36
  scope: SystemScope;
36
37
  isUpdating?: boolean;
38
+ type?: ServiceInterface;
37
39
  }
38
40
  export interface MapStoreRemoveServicePayload {
39
41
  id: string;
@@ -3,6 +3,6 @@ import { PayloadAction } from '@reduxjs/toolkit';
3
3
  import { NavigateToUrlPayload } from './types';
4
4
  export declare const initialState: {};
5
5
  export declare const routerReducer: import("redux").Reducer<{}>, routerActions: import("@reduxjs/toolkit").CaseReducerActions<{
6
- navigateToUrl: (draft: Draft<unknown>, action: PayloadAction<NavigateToUrlPayload>) => void;
6
+ navigateToUrl: (_draft: Draft<unknown>, _action: PayloadAction<NavigateToUrlPayload>) => void;
7
7
  }, "router">;
8
8
  export type RouterActions = ReturnType<typeof routerActions.navigateToUrl>;
@@ -21,6 +21,7 @@ export declare enum DialogTypes {
21
21
  AreaObjectLoader = "areaObjectLoader",
22
22
  DataExplorer = "dataExplorer",
23
23
  DataExplorerInfo = "dataExplorerInfo",
24
+ SelectedFeatures = "selectedFeatures",
24
25
  SoundingsSources = "soundingsSources",
25
26
  SoundingsLocations = "soundingsLocations",
26
27
  TimeseriesLocations = "timeseriesLocations"