@opengeoweb/store 13.2.1 → 14.0.1

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,
@@ -4956,8 +5000,11 @@ var _loadingIndicatorAdap = loadingIndicatorAdapter.getSelectors(function (state
4956
5000
  return (_state$loadingIndicat = state === null || state === void 0 ? void 0 : state.loadingIndicator) !== null && _state$loadingIndicat !== void 0 ? _state$loadingIndicat : EMPTY_LOADING_INDICATOR;
4957
5001
  }),
4958
5002
  selectLoadingIndicatorById = _loadingIndicatorAdap.selectById;
4959
- var isGetMapLoading = createSelector(selectLoadingIndicatorById, function (loadingIndicator) {
4960
- 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;
4961
5008
  }, selectorMemoizationOptions);
4962
5009
  var isGetCapabilitiesLoading = createSelector(selectLoadingIndicatorById, function (loadingIndicator) {
4963
5010
  return (loadingIndicator === null || loadingIndicator === void 0 ? void 0 : loadingIndicator.isGetCapabilitiesLoading) || false;
@@ -4975,6 +5022,7 @@ var isLoading = createSelector([isGetMapLoading, isGetCapabilitiesLoading, isEDR
4975
5022
 
4976
5023
  var selectors$2 = /*#__PURE__*/Object.freeze({
4977
5024
  __proto__: null,
5025
+ getMapLoadingPercentage: getMapLoadingPercentage,
4978
5026
  isEDRLoading: isEDRLoading,
4979
5027
  isGetCapabilitiesLoading: isGetCapabilitiesLoading,
4980
5028
  isGetMapLoading: isGetMapLoading,
@@ -5155,8 +5203,13 @@ var getMapOverLayersIds = createSelector(getMapById, function (store) {
5155
5203
  }, selectorMemoizationOptions);
5156
5204
  var getMapFeatureLayers = createSelector(getMapById, getFeatureLayers, function (store, featureLayers) {
5157
5205
  var featureLayersOnMap = (store === null || store === void 0 ? void 0 : store.featureLayers) || [];
5158
- return featureLayers.filter(function (layer) {
5159
- 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;
5160
5213
  });
5161
5214
  }, selectorMemoizationOptions);
5162
5215
  /**
@@ -5813,7 +5866,7 @@ var getAnimationList = createSelector(getLayersById, getMapById, getAnimationSta
5813
5866
  values = _ref4.values;
5814
5867
  var unixAnimationStart = roundWithTimeStep(Number(animationStart && dateUtils.unix(dateUtils.utc(animationStart))), animationInterval, 'ceil');
5815
5868
  var unixAnimationEnd = roundWithTimeStep(Number(animationEnd && dateUtils.unix(dateUtils.utc(animationEnd))), animationInterval, 'floor');
5816
- 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);
5817
5870
  // If no animationList is generated, generate a default list using the interval from map
5818
5871
  if (!animationList.length) {
5819
5872
  var timeList = [];
@@ -6442,31 +6495,37 @@ genericListener.startListening({
6442
6495
  });
6443
6496
  // Synchronize timeslider settings for actions 'centertime', 'span' and 'timestep'.
6444
6497
  genericListener.startListening({
6445
- 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),
6446
6499
  effect: function () {
6447
6500
  var _effect2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2, listenerApi) {
6448
- var _synchronizationGroup;
6449
- var payload, type, sourceId, syncGroupState, newPayload, targets, groups;
6501
+ var payload, type, sourceId, newPayload, animationStartPayload, targets, groups;
6450
6502
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
6451
6503
  while (1) switch (_context2.prev = _context2.next) {
6452
6504
  case 0:
6453
6505
  payload = _ref2.payload, type = _ref2.type;
6454
6506
  listenerApi.cancelActiveListeners();
6455
6507
  sourceId = payload.mapId;
6456
- syncGroupState = (_synchronizationGroup = getSynchronizationGroupSource(listenerApi.getState(), sourceId)) === null || _synchronizationGroup === void 0 || (_synchronizationGroup = _synchronizationGroup.payloadByType['SYNCGROUPS_TYPE_SETTIME']) === null || _synchronizationGroup === void 0 ? void 0 : _synchronizationGroup.value;
6457
6508
  newPayload = {
6458
6509
  sourceId: sourceId,
6459
6510
  origin: 'timeslidersynclistener',
6460
6511
  value: {
6461
- currentTime: syncGroupState === null || syncGroupState === void 0 ? void 0 : syncGroupState.currentTime,
6462
- timeSliderCenterTime: type === mapActions.setTimeSliderCenterTime.type ? payload.timeSliderCenterTime : (syncGroupState === null || syncGroupState === void 0 ? void 0 : syncGroupState.timeSliderCenterTime) || 0,
6463
- timeSliderSpan: type === mapActions.setTimeSliderSpan.type ? payload.timeSliderSpan : syncGroupState === null || syncGroupState === void 0 ? void 0 : syncGroupState.timeSliderSpan,
6464
- timeSliderStep: type === mapActions.setTimeStep.type ? payload.timeStep : syncGroupState === null || syncGroupState === void 0 ? void 0 : syncGroupState.timeSliderStep,
6465
- timeSliderAnimationStartTime: type === mapActions.setAnimationStartTime.type ? payload.animationStartTime : syncGroupState === null || syncGroupState === void 0 ? void 0 : syncGroupState.timeSliderAnimationStartTime,
6466
- timeSliderAnimationEndTime: type === mapActions.setAnimationEndTime.type ? payload.animationEndTime : syncGroupState === null || syncGroupState === void 0 ? void 0 : syncGroupState.timeSliderAnimationEndTime,
6467
- timeSliderAnimationDelay: type === mapActions.setAnimationDelay.type ? payload.animationDelay : syncGroupState === null || syncGroupState === void 0 ? void 0 : syncGroupState.timeSliderAnimationDelay
6512
+ timeSliderCenterTime: type === mapActions.setTimeSliderCenterTime.type ? payload.timeSliderCenterTime : undefined,
6513
+ timeSliderSpan: type === mapActions.setTimeSliderSpan.type ? payload.timeSliderSpan : undefined,
6514
+ timeSliderStep: type === mapActions.setTimeStep.type ? payload.timeStep : undefined,
6515
+ timeSliderAnimationStartTime: type === mapActions.setAnimationStartTime.type ? payload.animationStartTime : undefined,
6516
+ timeSliderAnimationEndTime: type === mapActions.setAnimationEndTime.type ? payload.animationEndTime : undefined,
6517
+ timeSliderAnimationDelay: type === mapActions.setAnimationDelay.type ? payload.animationDelay : undefined
6468
6518
  }
6469
6519
  };
6520
+ if (type === mapActions.mapStartAnimation.type) {
6521
+ animationStartPayload = payload;
6522
+ if (animationStartPayload.start) {
6523
+ newPayload.value.timeSliderAnimationStartTime = animationStartPayload.start;
6524
+ }
6525
+ if (animationStartPayload.end) {
6526
+ newPayload.value.timeSliderAnimationEndTime = animationStartPayload.end;
6527
+ }
6528
+ }
6470
6529
  targets = getTargets(listenerApi.getState(), newPayload, SYNCGROUPS_TYPE_SETTIME);
6471
6530
  groups = getTargetGroups(listenerApi.getState(), newPayload, SYNCGROUPS_TYPE_SETTIME);
6472
6531
  listenerApi.dispatch(setTimeSync(newPayload, targets, groups));
@@ -6801,12 +6860,12 @@ var isNextStepAvailable = function isNextStepAvailable(reduxLayers, nextTimeStri
6801
6860
  var wmLayers = reduxLayers.map(function (reduxLayer) {
6802
6861
  return reduxLayer.id && getWMLayerById(reduxLayer.id);
6803
6862
  }).filter(function (layer) {
6804
- return !!layer;
6863
+ return !!layer && layer.enabled;
6805
6864
  });
6806
6865
  // Returns a layer which could have an image for the requested time, but which isn't loaded yet.
6807
6866
  var isThereSomethingNotAvailable = wmLayers.map(function (layer) {
6808
6867
  var _layer$getDimension;
6809
- if (!layer || !layer.olSource) {
6868
+ if (!layer || !layer.olSource || layer.enabled !== true) {
6810
6869
  // No OpenLayers source, do nothing, so do not flag that something is not available
6811
6870
  return {
6812
6871
  status: true
@@ -6904,7 +6963,13 @@ var olMetronomeHandler = function olMetronomeHandler(timerIds, listenerApi) {
6904
6963
  _iterator.f();
6905
6964
  }
6906
6965
  if (targetsWithUpdateValue.length > 0) {
6907
- listenerApi.dispatch(setTimeSync(null, targetsWithUpdateValue, ['metronomelistener']));
6966
+ // This ensures the source value is stored in the syncgroup
6967
+ var metronomelistenersource = {
6968
+ sourceId: 'metronomelistenersource',
6969
+ origin: 'metronomelistenersource',
6970
+ value: targetsWithUpdateValue[0].value
6971
+ };
6972
+ listenerApi.dispatch(setTimeSync(metronomelistenersource, targetsWithUpdateValue, ['metronomelistener']));
6908
6973
  }
6909
6974
  };
6910
6975
 
@@ -6993,7 +7058,6 @@ mapListener.startListening({
6993
7058
  updateAnimation(mapId, incomingMaxTime, listenerApi);
6994
7059
  }
6995
7060
  } catch (error) {
6996
- // eslint-disable-next-line no-console
6997
7061
  console.warn(error);
6998
7062
  }
6999
7063
  }
@@ -7091,7 +7155,6 @@ mapListener.startListening({
7091
7155
  });
7092
7156
  }
7093
7157
  } catch (error) {
7094
- // eslint-disable-next-line no-console
7095
7158
  console.warn(error);
7096
7159
  }
7097
7160
  case 6:
@@ -7344,7 +7407,7 @@ mapListener.startListening({
7344
7407
  animationStartTime: startTime
7345
7408
  }));
7346
7409
  listenerApi.dispatch(genericActions.setTime({
7347
- origin: '',
7410
+ origin: 'map/listener.ts, setMapPreset',
7348
7411
  sourceId: mapId,
7349
7412
  value: {
7350
7413
  currentTime: startTime
@@ -7367,7 +7430,7 @@ mapListener.startListening({
7367
7430
  animationStartTime: _startTime
7368
7431
  }));
7369
7432
  listenerApi.dispatch(genericActions.setTime({
7370
- origin: '',
7433
+ origin: 'map/listener.ts, setAnimationStartTime',
7371
7434
  sourceId: mapId,
7372
7435
  value: {
7373
7436
  currentTime: _startTime
@@ -7534,7 +7597,7 @@ mapListener.startListening({
7534
7597
  }));
7535
7598
  }
7536
7599
  listenerApi.dispatch(genericActions.setTime({
7537
- origin: '',
7600
+ origin: 'map/listener.ts, setStepBackwardOrForward',
7538
7601
  sourceId: mapId,
7539
7602
  value: {
7540
7603
  currentTime: handleDateUtilsISOString(selectedTimeString)
@@ -7790,7 +7853,6 @@ var fetchInitialServices = /*#__PURE__*/function () {
7790
7853
  case 7:
7791
7854
  _context2.prev = 7;
7792
7855
  _context2.t0 = _context2["catch"](2);
7793
- // eslint-disable-next-line no-console
7794
7856
  console.warn(_context2.t0);
7795
7857
  case 10:
7796
7858
  case "end":
@@ -7849,11 +7911,7 @@ var slice$1 = createSlice({
7849
7911
  initialState: initialState$1,
7850
7912
  name: 'router',
7851
7913
  reducers: {
7852
- navigateToUrl: function navigateToUrl(
7853
- // eslint-disable-next-line no-unused-vars
7854
- draft,
7855
- // eslint-disable-next-line no-unused-vars
7856
- action) {}
7914
+ navigateToUrl: function navigateToUrl(_draft, _action) {}
7857
7915
  }
7858
7916
  });
7859
7917
  var routerReducer = slice$1.reducer,
@@ -8013,11 +8071,7 @@ var slice = createSlice({
8013
8071
  });
8014
8072
  drawTool.drawModes = newModes;
8015
8073
  },
8016
- changeIntersectionBounds: function changeIntersectionBounds(
8017
- // eslint-disable-next-line no-unused-vars
8018
- draft,
8019
- // eslint-disable-next-line no-unused-vars
8020
- action) {
8074
+ changeIntersectionBounds: function changeIntersectionBounds(_draft, _action) {
8021
8075
  // action caught in drawingTool/listener
8022
8076
  }
8023
8077
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/store",
3
- "version": "13.2.1",
3
+ "version": "14.0.1",
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.2.1",
11
+ "@opengeoweb/shared": "14.0.1",
12
12
  "react-redux": "^9.2.0",
13
13
  "@reduxjs/toolkit": "^2.6.1",
14
- "@opengeoweb/webmap-react": "13.2.1",
15
- "@opengeoweb/webmap": "13.2.1",
14
+ "@opengeoweb/webmap-react": "14.0.1",
15
+ "@opengeoweb/webmap": "14.0.1",
16
16
  "immer": "^10.0.3",
17
17
  "lodash": "^4.17.21",
18
- "@opengeoweb/metronome": "13.2.1",
19
- "@opengeoweb/time-slider": "13.2.1",
18
+ "@opengeoweb/metronome": "14.0.1",
19
+ "@opengeoweb/time-slider": "14.0.1",
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"