@opengeoweb/store 12.13.0 → 13.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,8 +1,8 @@
1
1
  import { createSlice, createSelector, createAction, createListenerMiddleware, isAnyOf, createEntityAdapter, combineReducers, configureStore } from '@reduxjs/toolkit';
2
2
  import { isEqual, isEmpty, compact } from 'lodash';
3
3
  import { dateUtils, PROJECTION, defaultDelay } from '@opengeoweb/shared';
4
- import { webmapUtils, parseISO8601IntervalToDateInterval, LayerType, webmapTestSettings, WMLayer, getWMLayerById, WMInvalidDateValues, handleDateUtilsISOString, isProjectionSupported, queryWMSLayers } from '@opengeoweb/webmap';
5
- import { defaultSecondsPerPx, defaultAnimationDelayAtStart, defaultTimeStep, defaultTimeSpan, roundWithTimeStep, getSpeedDelay } from '@opengeoweb/timeslider';
4
+ import { webmapUtils, parseISO8601IntervalToDateInterval, LayerType, handleDateUtilsISOString, webmapTestSettings, WMLayer, getWMLayerById, WMInvalidDateValues, isProjectionSupported, queryWMSLayers } from '@opengeoweb/webmap';
5
+ import { secondsPerPxFromCanvasWidth, defaultTimeSpan, defaultSecondsPerPx, defaultAnimationDelayAtStart, defaultTimeStep, roundWithTimeStep, getSpeedDelay } from '@opengeoweb/time-slider';
6
6
  import { produce } from 'immer';
7
7
  import { getLastEmptyFeatureIndex, getGeoJson, moveFeature, createInterSections, defaultLayers, emptyGeoJSON, defaultIntersectionStyleProperties, addSelectionTypeToGeoJSON, getFeatureCollection } from '@opengeoweb/webmap-react';
8
8
  export { defaultLayers } from '@opengeoweb/webmap-react';
@@ -663,25 +663,15 @@ var getLayersFromServiceSelector = createSelector(getServiceByUrl, function (ser
663
663
  /**
664
664
  * Gets the layer from the store using the serviceUrl and layerName
665
665
  *
666
- * Example: layer = getLayerFromService(store, 'https://geoservices.knmi.nl/...', 'radar', true)
666
+ * Example: layer = getLayerFromService(store, 'https://geoservices.knmi.nl/...', 'radar')
667
667
  * @param {object} store store: object - The application store
668
668
  * @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
669
669
  * @param {string} layerName layerName: string - Name of the layer in the service
670
- * @param {boolean} isEDRService isEDRService: boolean - if service is EDR (optional, default to false)
671
670
  * @returns {ServiceLayer} returnType: ServiceLayer - The layer from the service object.
672
671
  */
673
672
  var getLayerFromService = createSelector(getLayersFromServiceSelector, function (_store, _serviceUrl, layerName) {
674
673
  return layerName;
675
- }, function (_store, _serviceUrl, _layerName) {
676
- var isEDRService = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
677
- return isEDRService;
678
- }, function (layers, layerName, isEDRService) {
679
- if (isEDRService) {
680
- var firstParam = layerName.split(',')[0];
681
- return layers.find(function (serviceLayer) {
682
- return serviceLayer.name === firstParam;
683
- });
684
- }
674
+ }, function (layers, layerName) {
685
675
  return layers.find(function (serviceLayer) {
686
676
  return serviceLayer.name === layerName;
687
677
  });
@@ -699,11 +689,24 @@ var getLayerStyles = createSelector(getLayerFromService, function (layer) {
699
689
  var _layer$styles;
700
690
  return (_layer$styles = layer === null || layer === void 0 ? void 0 : layer.styles) !== null && _layer$styles !== void 0 ? _layer$styles : [];
701
691
  }, selectorMemoizationOptions);
692
+ /**
693
+ * Gets the layer title from the servicestore using the serviceUrl and layerName
694
+ *
695
+ * Example: layerStyles = getLayerTitle(store, layerService, layerName);
696
+ * @param {object} store store: object - store from which the layers state will be extracted
697
+ * @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
698
+ * @param {string} layerName layerName: string - Name of the layer in the service
699
+ * @returns {array} returnType: string - string containing layer title
700
+ */
701
+ var getLayerTitle = createSelector(getLayerFromService, function (layer) {
702
+ return layer === null || layer === void 0 ? void 0 : layer.title;
703
+ }, selectorMemoizationOptions);
702
704
 
703
705
  var selectors$7 = /*#__PURE__*/Object.freeze({
704
706
  __proto__: null,
705
707
  getLayerFromService: getLayerFromService,
706
708
  getLayerStyles: getLayerStyles,
709
+ getLayerTitle: getLayerTitle,
707
710
  getLayersFromServiceSelector: getLayersFromServiceSelector,
708
711
  getServiceByUrl: getServiceByUrl,
709
712
  getServiceIds: getServiceIds,
@@ -1149,6 +1152,17 @@ var parseTimeDimToISO8601Interval = function parseTimeDimToISO8601Interval(timeI
1149
1152
  return interval.startTime && interval.endTime && interval.duration;
1150
1153
  });
1151
1154
  };
1155
+ var produceTimeSliderTimeSpan = function produceTimeSliderTimeSpan(draft, mapId, timeSliderSpan) {
1156
+ if (!draft.byId[mapId] || !timeSliderSpan) {
1157
+ return;
1158
+ }
1159
+ draft.byId[mapId].timeSliderSpan = timeSliderSpan;
1160
+ if (draft.byId[mapId].timeSliderWidth) {
1161
+ draft.byId[mapId].timeSliderSecondsPerPx = secondsPerPxFromCanvasWidth(draft.byId[mapId].timeSliderWidth, draft.byId[mapId].timeSliderSpan || defaultTimeSpan);
1162
+ } else {
1163
+ draft.byId[mapId].timeSliderSecondsPerPx = draft.byId[mapId].timeSliderSecondsPerPx || defaultSecondsPerPx;
1164
+ }
1165
+ };
1152
1166
 
1153
1167
  var utils$2 = /*#__PURE__*/Object.freeze({
1154
1168
  __proto__: null,
@@ -1164,7 +1178,8 @@ var utils$2 = /*#__PURE__*/Object.freeze({
1164
1178
  moveArrayElements: moveArrayElements,
1165
1179
  parseTimeDimToISO8601Interval: parseTimeDimToISO8601Interval,
1166
1180
  produceDraftStateSetMapDimensionFromLayerChangeDimension: produceDraftStateSetMapDimensionFromLayerChangeDimension,
1167
- produceDraftStateSetWebMapDimension: produceDraftStateSetWebMapDimension
1181
+ produceDraftStateSetWebMapDimension: produceDraftStateSetWebMapDimension,
1182
+ produceTimeSliderTimeSpan: produceTimeSliderTimeSpan
1168
1183
  });
1169
1184
 
1170
1185
  var replaceLayerIdsToEnsureUniqueLayerIdsInStore = function replaceLayerIdsToEnsureUniqueLayerIdsInStore(layerIds) {
@@ -1719,18 +1734,26 @@ var slice$6 = createSlice({
1719
1734
  draft.byId[layerId].name = name;
1720
1735
  }
1721
1736
  },
1722
- layerChangeGeojson: function layerChangeGeojson(draft, action) {
1737
+ layerChangeOptions: function layerChangeOptions(draft, action) {
1723
1738
  var _action$payload9 = action.payload,
1724
1739
  layerId = _action$payload9.layerId,
1725
- geojson = _action$payload9.geojson;
1740
+ options = _action$payload9.options;
1741
+ if (draft.byId[layerId] && options) {
1742
+ draft.byId[layerId].options = _objectSpread2({}, options);
1743
+ }
1744
+ },
1745
+ layerChangeGeojson: function layerChangeGeojson(draft, action) {
1746
+ var _action$payload0 = action.payload,
1747
+ layerId = _action$payload0.layerId,
1748
+ geojson = _action$payload0.geojson;
1726
1749
  if (draft.byId[layerId]) {
1727
1750
  draft.byId[layerId].geojson = geojson;
1728
1751
  }
1729
1752
  },
1730
1753
  layerSetGeojsonFromLayer: function layerSetGeojsonFromLayer(draft, action) {
1731
- var _action$payload0 = action.payload,
1732
- layerId = _action$payload0.layerId,
1733
- sourceLayerId = _action$payload0.sourceLayerId;
1754
+ var _action$payload1 = action.payload,
1755
+ layerId = _action$payload1.layerId,
1756
+ sourceLayerId = _action$payload1.sourceLayerId;
1734
1757
  if (draft.byId[layerId]) {
1735
1758
  var _draft$byId$sourceLay;
1736
1759
  draft.byId[layerId].geojson = (_draft$byId$sourceLay = draft.byId[sourceLayerId]) === null || _draft$byId$sourceLay === void 0 ? void 0 : _draft$byId$sourceLay.geojson;
@@ -1764,9 +1787,9 @@ var slice$6 = createSlice({
1764
1787
  }
1765
1788
  },
1766
1789
  setLayers: function setLayers(draft, action) {
1767
- var _action$payload1 = action.payload,
1768
- layers = _action$payload1.layers,
1769
- mapId = _action$payload1.mapId;
1790
+ var _action$payload10 = action.payload,
1791
+ layers = _action$payload10.layers,
1792
+ mapId = _action$payload10.mapId;
1770
1793
  if (!checkValidLayersPayload(layers, mapId)) {
1771
1794
  return;
1772
1795
  }
@@ -1794,9 +1817,9 @@ var slice$6 = createSlice({
1794
1817
  });
1795
1818
  },
1796
1819
  setBaseLayers: function setBaseLayers(draft, action) {
1797
- var _action$payload10 = action.payload,
1798
- layers = _action$payload10.layers,
1799
- mapId = _action$payload10.mapId;
1820
+ var _action$payload11 = action.payload,
1821
+ layers = _action$payload11.layers,
1822
+ mapId = _action$payload11.mapId;
1800
1823
  var filtererdBaseLayers = layers.filter(function (layer) {
1801
1824
  return layer.layerType === LayerType.baseLayer || layer.layerType === LayerType.overLayer;
1802
1825
  });
@@ -1842,9 +1865,9 @@ var slice$6 = createSlice({
1842
1865
  }
1843
1866
  },
1844
1867
  layerSetDimensions: function layerSetDimensions(draft, action) {
1845
- var _action$payload11 = action.payload,
1846
- dimensions = _action$payload11.dimensions,
1847
- layerId = _action$payload11.layerId;
1868
+ var _action$payload12 = action.payload,
1869
+ dimensions = _action$payload12.dimensions,
1870
+ layerId = _action$payload12.layerId;
1848
1871
  if (draft.byId[layerId]) {
1849
1872
  draft.byId[layerId].dimensions = dimensions;
1850
1873
  }
@@ -1878,9 +1901,9 @@ var slice$6 = createSlice({
1878
1901
  },
1879
1902
  // Overwrites all baselayer for a certain map
1880
1903
  setAvailableBaseLayers: function setAvailableBaseLayers(draft, action) {
1881
- var _action$payload12 = action.payload,
1882
- layers = _action$payload12.layers,
1883
- mapId = _action$payload12.mapId;
1904
+ var _action$payload13 = action.payload,
1905
+ layers = _action$payload13.layers,
1906
+ mapId = _action$payload13.mapId;
1884
1907
  // remove current baselayers for passed map
1885
1908
  draft.availableBaseLayers.allIds = draft.availableBaseLayers.allIds.filter(function (layerId) {
1886
1909
  if (draft.availableBaseLayers.byId[layerId] && draft.availableBaseLayers.byId[layerId].mapId === mapId) {
@@ -1899,9 +1922,9 @@ var slice$6 = createSlice({
1899
1922
  });
1900
1923
  },
1901
1924
  setUseLatestReferenceTime: function setUseLatestReferenceTime(draft, action) {
1902
- var _action$payload13 = action.payload,
1903
- id = _action$payload13.id,
1904
- useLatestReferenceTime = _action$payload13.useLatestReferenceTime;
1925
+ var _action$payload14 = action.payload,
1926
+ id = _action$payload14.id,
1927
+ useLatestReferenceTime = _action$payload14.useLatestReferenceTime;
1905
1928
  var layer = draft.byId[id];
1906
1929
  if (!layer) {
1907
1930
  return;
@@ -1909,10 +1932,10 @@ var slice$6 = createSlice({
1909
1932
  layer.useLatestReferenceTime = useLatestReferenceTime;
1910
1933
  },
1911
1934
  onUpdateLayerInformation: function onUpdateLayerInformation(draft, action) {
1912
- var _action$payload14 = action.payload,
1913
- layerStyle = _action$payload14.layerStyle,
1914
- layerDimensions = _action$payload14.layerDimensions,
1915
- error = _action$payload14.error;
1935
+ var _action$payload15 = action.payload,
1936
+ layerStyle = _action$payload15.layerStyle,
1937
+ layerDimensions = _action$payload15.layerDimensions,
1938
+ error = _action$payload15.error;
1916
1939
  if (error) {
1917
1940
  draft.byId[error.layerId].status = LayerStatus.error;
1918
1941
  return;
@@ -2007,25 +2030,25 @@ var slice$6 = createSlice({
2007
2030
  },
2008
2031
  // feature layer actions
2009
2032
  setSelectedFeature: function setSelectedFeature(draft, action) {
2010
- var _action$payload15 = action.payload,
2011
- layerId = _action$payload15.layerId,
2012
- selectedFeatureIndex = _action$payload15.selectedFeatureIndex;
2033
+ var _action$payload16 = action.payload,
2034
+ layerId = _action$payload16.layerId,
2035
+ selectedFeatureIndex = _action$payload16.selectedFeatureIndex;
2013
2036
  if (!draft.byId[layerId]) {
2014
2037
  return;
2015
2038
  }
2016
2039
  draft.byId[layerId].selectedFeatureIndex = selectedFeatureIndex;
2017
2040
  },
2018
2041
  updateFeature: function updateFeature(draft, action) {
2019
- var _action$payload16 = action.payload,
2020
- layerId = _action$payload16.layerId,
2021
- geojson = _action$payload16.geojson,
2022
- _action$payload16$sho = _action$payload16.shouldAllowMultipleShapes,
2023
- shouldAllowMultipleShapes = _action$payload16$sho === void 0 ? false : _action$payload16$sho,
2024
- _action$payload16$rea = _action$payload16.reason,
2025
- reason = _action$payload16$rea === void 0 ? '' : _action$payload16$rea,
2026
- geoJSONIntersectionLayerId = _action$payload16.geoJSONIntersectionLayerId,
2027
- geoJSONIntersectionBoundsLayerId = _action$payload16.geoJSONIntersectionBoundsLayerId,
2028
- selectionType = _action$payload16.selectionType;
2042
+ var _action$payload17 = action.payload,
2043
+ layerId = _action$payload17.layerId,
2044
+ geojson = _action$payload17.geojson,
2045
+ _action$payload17$sho = _action$payload17.shouldAllowMultipleShapes,
2046
+ shouldAllowMultipleShapes = _action$payload17$sho === void 0 ? false : _action$payload17$sho,
2047
+ _action$payload17$rea = _action$payload17.reason,
2048
+ reason = _action$payload17$rea === void 0 ? '' : _action$payload17$rea,
2049
+ geoJSONIntersectionLayerId = _action$payload17.geoJSONIntersectionLayerId,
2050
+ geoJSONIntersectionBoundsLayerId = _action$payload17.geoJSONIntersectionBoundsLayerId,
2051
+ selectionType = _action$payload17.selectionType;
2029
2052
  var currentLayer = draft.byId[layerId];
2030
2053
  if (!currentLayer) {
2031
2054
  return;
@@ -2054,10 +2077,10 @@ var slice$6 = createSlice({
2054
2077
  }
2055
2078
  },
2056
2079
  updateFeatureProperties: function updateFeatureProperties(draft, action) {
2057
- var _action$payload17 = action.payload,
2058
- layerId = _action$payload17.layerId,
2059
- properties = _action$payload17.properties,
2060
- selectedFeatureIndex = _action$payload17.selectedFeatureIndex;
2080
+ var _action$payload18 = action.payload,
2081
+ layerId = _action$payload18.layerId,
2082
+ properties = _action$payload18.properties,
2083
+ selectedFeatureIndex = _action$payload18.selectedFeatureIndex;
2061
2084
  var currentLayer = draft.byId[layerId];
2062
2085
  if (!currentLayer) {
2063
2086
  return;
@@ -2073,10 +2096,10 @@ var slice$6 = createSlice({
2073
2096
  }
2074
2097
  },
2075
2098
  toggleFeatureMode: function toggleFeatureMode(draft, action) {
2076
- var _action$payload18 = action.payload,
2077
- layerId = _action$payload18.layerId,
2078
- isInEditMode = _action$payload18.isInEditMode,
2079
- drawMode = _action$payload18.drawMode;
2099
+ var _action$payload19 = action.payload,
2100
+ layerId = _action$payload19.layerId,
2101
+ isInEditMode = _action$payload19.isInEditMode,
2102
+ drawMode = _action$payload19.drawMode;
2080
2103
  if (!draft.byId[layerId]) {
2081
2104
  return;
2082
2105
  }
@@ -2088,10 +2111,10 @@ var slice$6 = createSlice({
2088
2111
  }
2089
2112
  },
2090
2113
  exitFeatureDrawMode: function exitFeatureDrawMode(draft, action) {
2091
- var _action$payload19 = action.payload,
2092
- layerId = _action$payload19.layerId,
2093
- shouldAllowMultipleShapes = _action$payload19.shouldAllowMultipleShapes,
2094
- reason = _action$payload19.reason;
2114
+ var _action$payload20 = action.payload,
2115
+ layerId = _action$payload20.layerId,
2116
+ shouldAllowMultipleShapes = _action$payload20.shouldAllowMultipleShapes,
2117
+ reason = _action$payload20.reason;
2095
2118
  if (!draft.byId[layerId]) {
2096
2119
  return;
2097
2120
  }
@@ -2116,9 +2139,9 @@ var slice$6 = createSlice({
2116
2139
  },
2117
2140
  // layer info actions
2118
2141
  showLayerInfo: function showLayerInfo(draft, action) {
2119
- var _action$payload20 = action.payload,
2120
- serviceUrl = _action$payload20.serviceUrl,
2121
- layerName = _action$payload20.layerName;
2142
+ var _action$payload21 = action.payload,
2143
+ serviceUrl = _action$payload21.serviceUrl,
2144
+ layerName = _action$payload21.layerName;
2122
2145
  draft.activeLayerInfo = {
2123
2146
  serviceUrl: serviceUrl,
2124
2147
  layerName: layerName
@@ -2130,9 +2153,9 @@ var slice$6 = createSlice({
2130
2153
  },
2131
2154
  extraReducers: function extraReducers(builder) {
2132
2155
  builder.addCase(setTimeSync, function (draft, action) {
2133
- var _action$payload21 = action.payload,
2134
- targetsFromAction = _action$payload21.targets,
2135
- source = _action$payload21.source;
2156
+ var _action$payload22 = action.payload,
2157
+ targetsFromAction = _action$payload22.targets,
2158
+ source = _action$payload22.source;
2136
2159
  /* Because we want backwards compatibility with the previous code, we also need to listen to the original source action */
2137
2160
  var targets = [];
2138
2161
  if (source) {
@@ -2146,11 +2169,14 @@ var slice$6 = createSlice({
2146
2169
  targets.forEach(function (payload) {
2147
2170
  var targetId = payload.targetId,
2148
2171
  value = payload.value;
2149
- var dimension = {
2150
- name: 'time',
2151
- currentValue: value
2152
- };
2153
- produceDraftStateForAllLayersForDimensionWithinMap(draft, dimension, targetId, null);
2172
+ if (value !== null && value !== void 0 && value.currentTime) {
2173
+ var currentTime = value.currentTime;
2174
+ var dimension = {
2175
+ name: 'time',
2176
+ currentValue: currentTime
2177
+ };
2178
+ produceDraftStateForAllLayersForDimensionWithinMap(draft, dimension, targetId, null);
2179
+ }
2154
2180
  });
2155
2181
  }).addCase(setLayerActionSync, function (draft, action) {
2156
2182
  /*
@@ -2159,9 +2185,9 @@ var slice$6 = createSlice({
2159
2185
  * These targets can be used as payloads in new Layer actions.
2160
2186
  * These actions are here handled via the layer reducer, as it is the same logic
2161
2187
  */
2162
- var _action$payload22 = action.payload,
2163
- targets = _action$payload22.targets,
2164
- source = _action$payload22.source;
2188
+ var _action$payload23 = action.payload,
2189
+ targets = _action$payload23.targets,
2190
+ source = _action$payload23.source;
2165
2191
  return targets.reduce(function (prevState, target) {
2166
2192
  var actionType = (source === null || source === void 0 ? void 0 : source.type) || 'GENERIC_SYNC_SETLAYERACTIONS';
2167
2193
  var action = {
@@ -2452,10 +2478,7 @@ var slice$4 = createSlice({
2452
2478
  var _action$payload4 = action.payload,
2453
2479
  mapId = _action$payload4.mapId,
2454
2480
  timeSliderSpan = _action$payload4.timeSliderSpan;
2455
- if (!draft.byId[mapId]) {
2456
- return;
2457
- }
2458
- draft.byId[mapId].timeSliderSpan = timeSliderSpan;
2481
+ produceTimeSliderTimeSpan(draft, mapId, timeSliderSpan);
2459
2482
  },
2460
2483
  setTimeStep: function setTimeStep(draft, action) {
2461
2484
  var _action$payload5 = action.payload,
@@ -2554,6 +2577,7 @@ var slice$4 = createSlice({
2554
2577
  return;
2555
2578
  }
2556
2579
  draft.byId[mapId].timeSliderWidth = timeSliderWidth;
2580
+ draft.byId[mapId].timeSliderSecondsPerPx = secondsPerPxFromCanvasWidth(timeSliderWidth, draft.byId[mapId].timeSliderSpan || defaultTimeSpan);
2557
2581
  },
2558
2582
  setTimeSliderCenterTime: function setTimeSliderCenterTime(draft, action) {
2559
2583
  var _action$payload12 = action.payload,
@@ -2564,118 +2588,109 @@ var slice$4 = createSlice({
2564
2588
  }
2565
2589
  draft.byId[mapId].timeSliderCenterTime = timeSliderCenterTime;
2566
2590
  },
2567
- setTimeSliderSecondsPerPx: function setTimeSliderSecondsPerPx(draft, action) {
2591
+ toggleAutoUpdate: function toggleAutoUpdate(draft, action) {
2568
2592
  var _action$payload13 = action.payload,
2569
2593
  mapId = _action$payload13.mapId,
2570
- timeSliderSecondsPerPx = _action$payload13.timeSliderSecondsPerPx;
2571
- if (!draft.byId[mapId]) {
2572
- return;
2573
- }
2574
- draft.byId[mapId].timeSliderSecondsPerPx = timeSliderSecondsPerPx;
2575
- },
2576
- toggleAutoUpdate: function toggleAutoUpdate(draft, action) {
2577
- var _action$payload14 = action.payload,
2578
- mapId = _action$payload14.mapId,
2579
- shouldAutoUpdate = _action$payload14.shouldAutoUpdate;
2594
+ shouldAutoUpdate = _action$payload13.shouldAutoUpdate;
2580
2595
  if (!draft.byId[mapId]) {
2581
2596
  return;
2582
2597
  }
2583
2598
  draft.byId[mapId].isAutoUpdating = shouldAutoUpdate;
2584
2599
  },
2585
2600
  setEndTimeOverriding: function setEndTimeOverriding(draft, action) {
2586
- var _action$payload15 = action.payload,
2587
- mapId = _action$payload15.mapId,
2588
- shouldEndtimeOverride = _action$payload15.shouldEndtimeOverride;
2601
+ var _action$payload14 = action.payload,
2602
+ mapId = _action$payload14.mapId,
2603
+ shouldEndtimeOverride = _action$payload14.shouldEndtimeOverride;
2589
2604
  if (!draft.byId[mapId]) {
2590
2605
  return;
2591
2606
  }
2592
2607
  draft.byId[mapId].shouldEndtimeOverride = shouldEndtimeOverride;
2593
2608
  },
2594
2609
  toggleTimestepAuto: function toggleTimestepAuto(draft, action) {
2595
- var _action$payload16 = action.payload,
2596
- mapId = _action$payload16.mapId,
2597
- timestepAuto = _action$payload16.timestepAuto;
2610
+ var _action$payload15 = action.payload,
2611
+ mapId = _action$payload15.mapId,
2612
+ timestepAuto = _action$payload15.timestepAuto;
2598
2613
  if (!draft.byId[mapId]) {
2599
2614
  return;
2600
2615
  }
2601
2616
  draft.byId[mapId].isTimestepAuto = timestepAuto;
2602
2617
  },
2603
2618
  toggleTimeSpanAuto: function toggleTimeSpanAuto(draft, action) {
2604
- var _action$payload17 = action.payload,
2605
- mapId = _action$payload17.mapId,
2606
- timeSpanAuto = _action$payload17.timeSpanAuto;
2619
+ var _action$payload16 = action.payload,
2620
+ mapId = _action$payload16.mapId,
2621
+ timeSpanAuto = _action$payload16.timeSpanAuto;
2607
2622
  if (!draft.byId[mapId]) {
2608
2623
  return;
2609
2624
  }
2610
2625
  draft.byId[mapId].isTimeSpanAuto = timeSpanAuto;
2611
2626
  },
2612
2627
  toggleAnimationLengthAuto: function toggleAnimationLengthAuto(draft, action) {
2613
- var _action$payload18 = action.payload,
2614
- mapId = _action$payload18.mapId,
2615
- autoAnimationLength = _action$payload18.autoAnimationLength;
2628
+ var _action$payload17 = action.payload,
2629
+ mapId = _action$payload17.mapId,
2630
+ autoAnimationLength = _action$payload17.autoAnimationLength;
2616
2631
  if (!draft.byId[mapId]) {
2617
2632
  return;
2618
2633
  }
2619
2634
  draft.byId[mapId].isAnimationLengthAuto = autoAnimationLength;
2620
2635
  },
2621
2636
  toggleTimeSliderHover: function toggleTimeSliderHover(draft, action) {
2622
- var _action$payload19 = action.payload,
2623
- mapId = _action$payload19.mapId,
2624
- isTimeSliderHoverOn = _action$payload19.isTimeSliderHoverOn;
2637
+ var _action$payload18 = action.payload,
2638
+ mapId = _action$payload18.mapId,
2639
+ isTimeSliderHoverOn = _action$payload18.isTimeSliderHoverOn;
2625
2640
  if (!draft.byId[mapId]) {
2626
2641
  return;
2627
2642
  }
2628
2643
  draft.byId[mapId].isTimeSliderHoverOn = isTimeSliderHoverOn;
2629
2644
  },
2630
2645
  toggleTimeSliderIsVisible: function toggleTimeSliderIsVisible(draft, action) {
2631
- var _action$payload20 = action.payload,
2632
- mapId = _action$payload20.mapId,
2633
- isTimeSliderVisible = _action$payload20.isTimeSliderVisible;
2646
+ var _action$payload19 = action.payload,
2647
+ mapId = _action$payload19.mapId,
2648
+ isTimeSliderVisible = _action$payload19.isTimeSliderVisible;
2634
2649
  if (!draft.byId[mapId]) {
2635
2650
  return;
2636
2651
  }
2637
2652
  draft.byId[mapId].isTimeSliderVisible = isTimeSliderVisible;
2638
2653
  },
2639
2654
  toggleZoomControls: function toggleZoomControls(draft, action) {
2640
- var _action$payload21 = action.payload,
2641
- mapId = _action$payload21.mapId,
2642
- shouldShowZoomControls = _action$payload21.shouldShowZoomControls;
2655
+ var _action$payload20 = action.payload,
2656
+ mapId = _action$payload20.mapId,
2657
+ shouldShowZoomControls = _action$payload20.shouldShowZoomControls;
2643
2658
  if (!draft.byId[mapId]) {
2644
2659
  return;
2645
2660
  }
2646
2661
  draft.byId[mapId].shouldShowZoomControls = shouldShowZoomControls;
2647
2662
  },
2648
2663
  setMapPinLocation: function setMapPinLocation(draft, action) {
2649
- var _action$payload22 = action.payload,
2650
- mapId = _action$payload22.mapId,
2651
- mapPinLocation = _action$payload22.mapPinLocation;
2664
+ var _action$payload21 = action.payload,
2665
+ mapId = _action$payload21.mapId,
2666
+ mapPinLocation = _action$payload21.mapPinLocation;
2652
2667
  if (!draft.byId[mapId]) {
2653
2668
  return;
2654
2669
  }
2655
2670
  draft.byId[mapId].mapPinLocation = mapPinLocation;
2656
2671
  },
2657
2672
  setDisableMapPin: function setDisableMapPin(draft, action) {
2658
- var _action$payload23 = action.payload,
2659
- mapId = _action$payload23.mapId,
2660
- disableMapPin = _action$payload23.disableMapPin;
2673
+ var _action$payload22 = action.payload,
2674
+ mapId = _action$payload22.mapId,
2675
+ disableMapPin = _action$payload22.disableMapPin;
2661
2676
  if (!draft.byId[mapId]) {
2662
2677
  return;
2663
2678
  }
2664
2679
  draft.byId[mapId].disableMapPin = disableMapPin;
2665
2680
  },
2666
2681
  toggleMapPinIsVisible: function toggleMapPinIsVisible(draft, action) {
2667
- var _action$payload24 = action.payload,
2668
- mapId = _action$payload24.mapId,
2669
- displayMapPin = _action$payload24.displayMapPin;
2682
+ var _action$payload23 = action.payload,
2683
+ mapId = _action$payload23.mapId,
2684
+ displayMapPin = _action$payload23.displayMapPin;
2670
2685
  if (!draft.byId[mapId]) {
2671
2686
  return;
2672
2687
  }
2673
2688
  draft.byId[mapId].displayMapPin = displayMapPin;
2674
2689
  },
2675
2690
  setDockedLayerManagerSize: function setDockedLayerManagerSize(draft, action) {
2676
- var _action$payload25 = action.payload,
2677
- mapId = _action$payload25.mapId,
2678
- dockedLayerManagerSize = _action$payload25.dockedLayerManagerSize;
2691
+ var _action$payload24 = action.payload,
2692
+ mapId = _action$payload24.mapId,
2693
+ dockedLayerManagerSize = _action$payload24.dockedLayerManagerSize;
2679
2694
  if (!draft.byId[mapId]) {
2680
2695
  return;
2681
2696
  }
@@ -2690,9 +2705,9 @@ var slice$4 = createSlice({
2690
2705
  draft.defaultMapSettings = action.payload.preset;
2691
2706
  },
2692
2707
  changeOverlayer: function changeOverlayer(draft, action) {
2693
- var _action$payload26 = action.payload,
2694
- mapId = _action$payload26.mapId,
2695
- selectedOverlayer = _action$payload26.selectedOverlayer;
2708
+ var _action$payload25 = action.payload,
2709
+ mapId = _action$payload25.mapId,
2710
+ selectedOverlayer = _action$payload25.selectedOverlayer;
2696
2711
  if (!draft.byId[mapId]) {
2697
2712
  return;
2698
2713
  }
@@ -2701,10 +2716,10 @@ var slice$4 = createSlice({
2701
2716
  },
2702
2717
  extraReducers: function extraReducers(builder) {
2703
2718
  builder.addCase(layerActions.addLayer, function (draft, action) {
2704
- var _action$payload27 = action.payload,
2705
- layerId = _action$payload27.layerId,
2706
- mapId = _action$payload27.mapId,
2707
- layer = _action$payload27.layer;
2719
+ var _action$payload26 = action.payload,
2720
+ layerId = _action$payload26.layerId,
2721
+ mapId = _action$payload26.mapId,
2722
+ layer = _action$payload26.layer;
2708
2723
  if (!draft.byId[mapId]) {
2709
2724
  return;
2710
2725
  }
@@ -2723,9 +2738,9 @@ var slice$4 = createSlice({
2723
2738
  draft.byId[mapId].mapLayers.unshift(layerId);
2724
2739
  }
2725
2740
  }).addCase(layerActions.duplicateMapLayer, function (draft, action) {
2726
- var _action$payload28 = action.payload,
2727
- newLayerId = _action$payload28.newLayerId,
2728
- mapId = _action$payload28.mapId;
2741
+ var _action$payload27 = action.payload,
2742
+ newLayerId = _action$payload27.newLayerId,
2743
+ mapId = _action$payload27.mapId;
2729
2744
  if (!draft.byId[mapId]) {
2730
2745
  return;
2731
2746
  }
@@ -2735,10 +2750,10 @@ var slice$4 = createSlice({
2735
2750
  }
2736
2751
  draft.byId[mapId].mapLayers.unshift(newLayerId);
2737
2752
  }).addCase(layerActions.addBaseLayer, function (draft, action) {
2738
- var _action$payload29 = action.payload,
2739
- layer = _action$payload29.layer,
2740
- layerId = _action$payload29.layerId,
2741
- mapId = _action$payload29.mapId;
2753
+ var _action$payload28 = action.payload,
2754
+ layer = _action$payload28.layer,
2755
+ layerId = _action$payload28.layerId,
2756
+ mapId = _action$payload28.mapId;
2742
2757
  if (!draft.byId[mapId]) {
2743
2758
  return;
2744
2759
  }
@@ -2768,9 +2783,9 @@ var slice$4 = createSlice({
2768
2783
  draft.byId[mapId].autoTimeStepLayerId = activeLayerId;
2769
2784
  }
2770
2785
  }).addCase(layerActions.setBaseLayers, function (draft, action) {
2771
- var _action$payload30 = action.payload,
2772
- layers = _action$payload30.layers,
2773
- mapId = _action$payload30.mapId;
2786
+ var _action$payload29 = action.payload,
2787
+ layers = _action$payload29.layers,
2788
+ mapId = _action$payload29.mapId;
2774
2789
  // Split into base and overlayers
2775
2790
  var baseLayers = [];
2776
2791
  var overLayers = [];
@@ -2800,9 +2815,9 @@ var slice$4 = createSlice({
2800
2815
  }
2801
2816
  }
2802
2817
  }).addCase(layerActions.layerDelete, function (draft, action) {
2803
- var _action$payload31 = action.payload,
2804
- mapId = _action$payload31.mapId,
2805
- layerId = _action$payload31.layerId;
2818
+ var _action$payload30 = action.payload,
2819
+ mapId = _action$payload30.mapId,
2820
+ layerId = _action$payload30.layerId;
2806
2821
  var map = draft.byId[mapId];
2807
2822
  if (!map) {
2808
2823
  return;
@@ -2828,9 +2843,9 @@ var slice$4 = createSlice({
2828
2843
  return id !== layerId;
2829
2844
  });
2830
2845
  }).addCase(layerActions.baseLayerDelete, function (draft, action) {
2831
- var _action$payload32 = action.payload,
2832
- mapId = _action$payload32.mapId,
2833
- layerId = _action$payload32.layerId;
2846
+ var _action$payload31 = action.payload,
2847
+ mapId = _action$payload31.mapId,
2848
+ layerId = _action$payload31.layerId;
2834
2849
  if (!draft.byId[mapId]) {
2835
2850
  return;
2836
2851
  }
@@ -2841,14 +2856,14 @@ var slice$4 = createSlice({
2841
2856
  return id !== layerId;
2842
2857
  });
2843
2858
  }).addCase(layerActions.layerChangeDimension, function (draft, action) {
2844
- var _action$payload33 = action.payload,
2845
- layerId = _action$payload33.layerId,
2846
- dimension = _action$payload33.dimension;
2859
+ var _action$payload32 = action.payload,
2860
+ layerId = _action$payload32.layerId,
2861
+ dimension = _action$payload32.dimension;
2847
2862
  produceDraftStateSetMapDimensionFromLayerChangeDimension(draft, layerId, dimension);
2848
2863
  }).addCase(setTimeSync, function (draft, action) {
2849
- var _action$payload34 = action.payload,
2850
- targetsFromAction = _action$payload34.targets,
2851
- source = _action$payload34.source;
2864
+ var _action$payload33 = action.payload,
2865
+ targetsFromAction = _action$payload33.targets,
2866
+ source = _action$payload33.source;
2852
2867
  /* Because we want backwards compatibility with the previous code, we also need to listen to the original source action */
2853
2868
  var targets = [];
2854
2869
  if (source) {
@@ -2863,18 +2878,47 @@ var slice$4 = createSlice({
2863
2878
  var targetId = target.targetId,
2864
2879
  value = target.value;
2865
2880
  if (draft.byId[targetId]) {
2866
- var dimension = {
2867
- name: 'time',
2868
- currentValue: value
2869
- };
2870
- produceDraftStateSetWebMapDimension(draft, targetId, dimension, true);
2871
- produceDraftStateSetMapDimensionFromLayerChangeDimension(draft, targetId, dimension);
2881
+ // SetTimeSliderSpan
2882
+ if (value !== null && value !== void 0 && value.timeSliderSpan) {
2883
+ produceTimeSliderTimeSpan(draft, targetId, value.timeSliderSpan);
2884
+ }
2885
+ // SetTimeSliderCenterTime
2886
+ if (value !== null && value !== void 0 && value.timeSliderCenterTime) {
2887
+ draft.byId[targetId].timeSliderCenterTime = value.timeSliderCenterTime;
2888
+ }
2889
+ // SetTimeSliderStep
2890
+ if (value !== null && value !== void 0 && value.timeSliderStep) {
2891
+ draft.byId[targetId].timeStep = value.timeSliderStep;
2892
+ // When timestep is synced between slider, isTimestepAuto should be set to false.
2893
+ draft.byId[targetId].isTimestepAuto = false;
2894
+ }
2895
+ // SetAnimationStartTime
2896
+ if (value !== null && value !== void 0 && value.timeSliderAnimationStartTime) {
2897
+ draft.byId[targetId].animationStartTime = value.timeSliderAnimationStartTime;
2898
+ }
2899
+ // SetAnimationEndTime
2900
+ if (value !== null && value !== void 0 && value.timeSliderAnimationEndTime) {
2901
+ draft.byId[targetId].animationEndTime = value.timeSliderAnimationEndTime;
2902
+ }
2903
+ // SetAnimationDelay
2904
+ if (value !== null && value !== void 0 && value.timeSliderAnimationDelay) {
2905
+ draft.byId[targetId].animationDelay = value.timeSliderAnimationDelay;
2906
+ }
2907
+ // SetTime / update actual current value
2908
+ if (value !== null && value !== void 0 && value.currentTime) {
2909
+ var dimension = {
2910
+ name: 'time',
2911
+ currentValue: value.currentTime
2912
+ };
2913
+ produceDraftStateSetWebMapDimension(draft, targetId, dimension, true);
2914
+ produceDraftStateSetMapDimensionFromLayerChangeDimension(draft, targetId, dimension);
2915
+ }
2872
2916
  }
2873
2917
  });
2874
2918
  }).addCase(setBboxSync, function (draft, action) {
2875
- var _action$payload35 = action.payload,
2876
- targetsFromAction = _action$payload35.targets,
2877
- source = _action$payload35.source;
2919
+ var _action$payload34 = action.payload,
2920
+ targetsFromAction = _action$payload34.targets,
2921
+ source = _action$payload34.source;
2878
2922
  /* Because we want backwards compatibility with the previous code, we also need to listen to the original source action */
2879
2923
  var targets = [];
2880
2924
  if (source) {
@@ -2906,9 +2950,9 @@ var slice$4 = createSlice({
2906
2950
  * These targets can be used as payloads in new Layer actions.
2907
2951
  * These actions are here handled via the layer reducer, as it is the same logic
2908
2952
  */
2909
- var _action$payload36 = action.payload,
2910
- targets = _action$payload36.targets,
2911
- source = _action$payload36.source;
2953
+ var _action$payload35 = action.payload,
2954
+ targets = _action$payload35.targets,
2955
+ source = _action$payload35.source;
2912
2956
  return targets.reduce(function (prevState, target) {
2913
2957
  var actionType = (source === null || source === void 0 ? void 0 : source.type) || 'GENERIC_SYNC_SETLAYERACTIONS';
2914
2958
  var action = {
@@ -2930,9 +2974,9 @@ var slice$4 = createSlice({
2930
2974
  });
2931
2975
  return draft;
2932
2976
  }).addCase(mapChangeDimension, function (draft, action) {
2933
- var _action$payload37 = action.payload,
2934
- mapId = _action$payload37.mapId,
2935
- dimensionFromAction = _action$payload37.dimension;
2977
+ var _action$payload36 = action.payload,
2978
+ mapId = _action$payload36.mapId,
2979
+ dimensionFromAction = _action$payload36.dimension;
2936
2980
  produceDraftStateSetWebMapDimension(draft, mapId, dimensionFromAction, true);
2937
2981
  }).addCase(setMapPreset, function (draft, action) {
2938
2982
  var mapId = action.payload.mapId;
@@ -2952,9 +2996,9 @@ var slice$4 = createSlice({
2952
2996
  draft.byId[mapId].animationDelay = defaultAnimationDelayAtStart;
2953
2997
  draft.byId[mapId].dockedLayerManagerSize = '';
2954
2998
  }).addCase(uiActions.registerDialog, function (draft, action) {
2955
- var _action$payload38 = action.payload,
2956
- mapId = _action$payload38.mapId,
2957
- type = _action$payload38.type;
2999
+ var _action$payload37 = action.payload,
3000
+ mapId = _action$payload37.mapId,
3001
+ type = _action$payload37.type;
2958
3002
  if (!draft.byId[mapId]) {
2959
3003
  return;
2960
3004
  }
@@ -3204,8 +3248,13 @@ var getLayerEnabled = createSelector(getLayerById, function (layer) {
3204
3248
  * @returns {string} returnType: string - layer name
3205
3249
  */
3206
3250
  var getLayerName = createSelector(getLayerById, function (layer) {
3207
- var _layer$name;
3208
- return (_layer$name = layer === null || layer === void 0 ? void 0 : layer.name) !== null && _layer$name !== void 0 ? _layer$name : '';
3251
+ if (!layer) {
3252
+ return '';
3253
+ }
3254
+ if (layer.layerType === LayerType.edrFeatureLayer && layer.options && layer.options.parameterNames.length) {
3255
+ return layer.options.parameterNames[0];
3256
+ }
3257
+ return (layer === null || layer === void 0 ? void 0 : layer.name) || '';
3209
3258
  }, selectorMemoizationOptions);
3210
3259
  /**
3211
3260
  * Gets layer service
@@ -3392,6 +3441,9 @@ var getLayerType = createSelector(getLayerById, function (layer) {
3392
3441
  var _layer$layerType;
3393
3442
  return (_layer$layerType = layer === null || layer === void 0 ? void 0 : layer.layerType) !== null && _layer$layerType !== void 0 ? _layer$layerType : 'mapLayer';
3394
3443
  }, selectorMemoizationOptions);
3444
+ var getLayerOptions = createSelector(getLayerById, function (layer) {
3445
+ return layer === null || layer === void 0 ? void 0 : layer.options;
3446
+ }, selectorMemoizationOptions);
3395
3447
  /**
3396
3448
  * Gets all overlayers for a given mapId
3397
3449
  * Example: overlayers = getOverlayersForMapId(store, 'mapId123')
@@ -3413,6 +3465,47 @@ var getOverlayersForMapId = createSelector([layerStore, function (_store, mapId)
3413
3465
  });
3414
3466
  return overLayers;
3415
3467
  }, selectorMemoizationOptions);
3468
+ /**
3469
+ * Gets the layer title from the service store using the layerId
3470
+ *
3471
+ * Example: layerTitle = getLayerTitleFromService(store, 'layerId_1')
3472
+ * @param {object} store store: object - object from which the layers state will be extracted
3473
+ * @param {string} layerId layerId: string - Id of the layer
3474
+ * @returns {string} returnType: string - string containing layer title
3475
+ */
3476
+ var getLayerTitleFromService = createSelector(function (store) {
3477
+ return store;
3478
+ }, getLayerService, getLayerName, function (store, service, name) {
3479
+ return getLayerTitle(store, service, name);
3480
+ }, selectorMemoizationOptions);
3481
+ /**
3482
+ * Gets layer displayname. For EDR layers with multiple parameters, the collectionId is used as displayname. Otherwise the layer title from the service is used.
3483
+ *
3484
+ * Example: layerName = getLayerDisplayName(store, 'layerId_1')
3485
+ * @param {object} store store: object - object from which the layers state will be extracted
3486
+ * @param {string} layerId layerId: string - Id of the layer
3487
+ * @returns {string} returnType: string - layer displayname
3488
+ */
3489
+ var getLayerDisplayName = createSelector(getLayerType, getLayerOptions, getLayerTitleFromService, getLayerName, function (layerType, layerOptions, layerTitle, layerName) {
3490
+ if (layerType === LayerType.edrFeatureLayer && layerOptions) {
3491
+ return (layerOptions === null || layerOptions === void 0 ? void 0 : layerOptions.parameterNames.length) > 1 && layerOptions.collectionId ? layerOptions.collectionId : layerTitle || layerName;
3492
+ }
3493
+ return layerTitle || layerName;
3494
+ }, selectorMemoizationOptions);
3495
+ /**
3496
+ * Gets the layer missing status. A layer is missing if it is not found in the service store or if its status is 'error'.
3497
+ *
3498
+ * Example: isLayerMissing = getIsLayerMissing(store, 'layerId_1')
3499
+ * @param {object} store store: object - object from which the layers state will be extracted
3500
+ * @param {string} layerId layerId: string - Id of the layer
3501
+ * @returns {boolean} returnType: boolean - true if layer is missing
3502
+ */
3503
+ var getIsLayerMissing = createSelector(function (store) {
3504
+ return store;
3505
+ }, getLayerService, getLayerName, getLayerStatus, function (store, service, name, status) {
3506
+ var layer = getLayerFromService(store, service, name);
3507
+ return !layer || status === LayerStatus.error;
3508
+ }, selectorMemoizationOptions);
3416
3509
 
3417
3510
  var selectors$6 = /*#__PURE__*/Object.freeze({
3418
3511
  __proto__: null,
@@ -3427,22 +3520,26 @@ var selectors$6 = /*#__PURE__*/Object.freeze({
3427
3520
  getFeatureLayers: getFeatureLayers,
3428
3521
  getHasFeatureLayerGeoJSON: getHasFeatureLayerGeoJSON,
3429
3522
  getIsLayerInEditMode: getIsLayerInEditMode,
3523
+ getIsLayerMissing: getIsLayerMissing,
3430
3524
  getIsLayerPresent: getIsLayerPresent,
3431
3525
  getLayerById: getLayerById,
3432
3526
  getLayerByIdWithoutTimeDimension: getLayerByIdWithoutTimeDimension,
3433
3527
  getLayerCurrentTime: getLayerCurrentTime,
3434
3528
  getLayerDimension: getLayerDimension,
3435
3529
  getLayerDimensions: getLayerDimensions,
3530
+ getLayerDisplayName: getLayerDisplayName,
3436
3531
  getLayerEnabled: getLayerEnabled,
3437
3532
  getLayerHasTimeDimension: getLayerHasTimeDimension,
3438
3533
  getLayerIsInsideAcceptanceTime: getLayerIsInsideAcceptanceTime,
3439
3534
  getLayerName: getLayerName,
3440
3535
  getLayerNonTimeDimensions: getLayerNonTimeDimensions,
3441
3536
  getLayerOpacity: getLayerOpacity,
3537
+ getLayerOptions: getLayerOptions,
3442
3538
  getLayerService: getLayerService,
3443
3539
  getLayerStatus: getLayerStatus,
3444
3540
  getLayerStyle: getLayerStyle,
3445
3541
  getLayerTimeDimension: getLayerTimeDimension,
3542
+ getLayerTitleFromService: getLayerTitleFromService,
3446
3543
  getLayerType: getLayerType,
3447
3544
  getLayers: getLayers,
3448
3545
  getLayersById: getLayersById,
@@ -4649,26 +4746,21 @@ function (state, mapId) {
4649
4746
  });
4650
4747
  var getSelectedFeatureAsGeoJSON = createSelector([function (state, mapId) {
4651
4748
  var _state$linkedState2;
4652
- var sharedData = (_state$linkedState2 = state.linkedState) === null || _state$linkedState2 === void 0 ? void 0 : _state$linkedState2.sharedData[mapId];
4653
- var _ref = sharedData || {},
4654
- _ref$features = _ref.features,
4655
- features = _ref$features === void 0 ? [] : _ref$features,
4656
- selectedFeatureId = _ref.selectedFeatureId;
4657
- return {
4658
- features: features,
4659
- selectedFeatureId: selectedFeatureId
4660
- };
4661
- }], function (_ref2) {
4662
- var features = _ref2.features,
4663
- selectedFeatureId = _ref2.selectedFeatureId;
4664
- if (features && selectedFeatureId) {
4665
- var _features$2;
4666
- var selectedFeature = (_features$2 = features[0]) === null || _features$2 === void 0 ? void 0 : _features$2.geoJSON.features.find(function (feature) {
4667
- return feature.id === selectedFeatureId;
4668
- });
4669
- return selectedFeature;
4749
+ return (_state$linkedState2 = state.linkedState) === null || _state$linkedState2 === void 0 ? void 0 : _state$linkedState2.sharedData[mapId];
4750
+ }], function (sharedData) {
4751
+ var _features$2;
4752
+ if (!sharedData) {
4753
+ return null;
4670
4754
  }
4671
- return null;
4755
+ var features = sharedData.features,
4756
+ selectedFeatureId = sharedData.selectedFeatureId;
4757
+ if (!features || !selectedFeatureId) {
4758
+ return null;
4759
+ }
4760
+ var selectedFeature = (_features$2 = features[0]) === null || _features$2 === void 0 ? void 0 : _features$2.geoJSON.features.find(function (feature) {
4761
+ return feature.id === selectedFeatureId;
4762
+ });
4763
+ return selectedFeature;
4672
4764
  });
4673
4765
 
4674
4766
  var selectors$3 = /*#__PURE__*/Object.freeze({
@@ -5166,16 +5258,16 @@ var isAnimating = function isAnimating(store, mapId) {
5166
5258
  * @param {string} mapId mapId: string - Id of the map
5167
5259
  * @returns {object} returnType: object - object containing isAnimating boolean and id string
5168
5260
  */
5169
- var linkedMapAnimationInfo = function linkedMapAnimationInfo(store, mapId) {
5170
- var _genericSelectors$get;
5261
+ var linkedMapAnimationInfo = createSelector(getMapStore, getSynchronizationGroupStore, getMapById, function (mapStore, syncStore, mapState) {
5171
5262
  var animationInfo = {
5172
- isAnimating: isAnimating(store, mapId),
5173
- id: mapId
5263
+ isAnimating: (mapState === null || mapState === void 0 ? void 0 : mapState.isAnimating) || false,
5264
+ id: (mapState === null || mapState === void 0 ? void 0 : mapState.id) || ''
5174
5265
  };
5175
- (_genericSelectors$get = getSynchronizationGroupStore(store)) === null || _genericSelectors$get === void 0 || _genericSelectors$get.groups.allIds.forEach(function (groupId) {
5176
- if (getSynchronizationGroupStore(store).groups.byId[groupId].targets.byId[animationInfo.id] && getSynchronizationGroupStore(store).groups.byId[groupId].targets.byId[animationInfo.id].linked) {
5177
- getSynchronizationGroupStore(store).groups.byId[groupId].targets.allIds.forEach(function (id) {
5178
- if (isAnimating(store, id) === true) {
5266
+ syncStore === null || syncStore === void 0 || syncStore.groups.allIds.forEach(function (groupId) {
5267
+ if (syncStore.groups.byId[groupId].targets.byId[animationInfo.id] && syncStore.groups.byId[groupId].targets.byId[animationInfo.id].linked) {
5268
+ syncStore.groups.byId[groupId].targets.allIds.forEach(function (id) {
5269
+ var _mapStore$byId$id;
5270
+ if ((mapStore === null || mapStore === void 0 || (_mapStore$byId$id = mapStore.byId[id]) === null || _mapStore$byId$id === void 0 ? void 0 : _mapStore$byId$id.isAnimating) === true) {
5179
5271
  animationInfo.isAnimating = true;
5180
5272
  animationInfo.id = id;
5181
5273
  }
@@ -5183,7 +5275,7 @@ var linkedMapAnimationInfo = function linkedMapAnimationInfo(store, mapId) {
5183
5275
  }
5184
5276
  });
5185
5277
  return animationInfo;
5186
- };
5278
+ }, selectorMemoizationOptions);
5187
5279
  /**
5188
5280
  * Gets start time of animation
5189
5281
  *
@@ -5702,6 +5794,11 @@ var getAnimationList = createSelector(getLayersById, getMapById, getAnimationSta
5702
5794
  }
5703
5795
  return animationList;
5704
5796
  }, selectorMemoizationOptions);
5797
+ var getAnimationListAsEpochTimes = createSelector(getAnimationList, function (list) {
5798
+ return list.map(function (kvp) {
5799
+ return dateUtils.parseISO(handleDateUtilsISOString(kvp.value)).getTime();
5800
+ });
5801
+ }, selectorMemoizationOptions);
5705
5802
  /**
5706
5803
  * @param {object} store store: object - store object
5707
5804
  * @param {string} mapId mapId: string - Id of the map
@@ -5759,6 +5856,7 @@ var selectors$1 = /*#__PURE__*/Object.freeze({
5759
5856
  getAllUniqueDimensions: getAllUniqueDimensions,
5760
5857
  getAnimationEndTime: getAnimationEndTime,
5761
5858
  getAnimationList: getAnimationList,
5859
+ getAnimationListAsEpochTimes: getAnimationListAsEpochTimes,
5762
5860
  getAnimationRange: getAnimationRange,
5763
5861
  getAnimationStartTime: getAnimationStartTime,
5764
5862
  getAutoTimeStepLayerId: getAutoTimeStepLayerId,
@@ -5880,7 +5978,7 @@ var filterLayers = function filterLayers() {
5880
5978
  overLayers: overLayers
5881
5979
  };
5882
5980
  }
5883
- if (layer.layerType === LayerType.mapLayer || layer.layerType === LayerType.edrLayer) {
5981
+ if (layer.layerType === LayerType.mapLayer || layer.layerType === LayerType.edrFeatureLayer) {
5884
5982
  return {
5885
5983
  mapLayers: mapLayers.concat(parsedLayer),
5886
5984
  baseLayers: baseLayers,
@@ -6297,20 +6395,23 @@ genericListener.startListening({
6297
6395
  actionCreator: setTime,
6298
6396
  effect: function () {
6299
6397
  var _effect = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref, listenerApi) {
6300
- var payload, value, origin, targets, groups;
6398
+ var payload, value, origin, currentTime, targets, groups;
6301
6399
  return _regeneratorRuntime().wrap(function _callee$(_context) {
6302
6400
  while (1) switch (_context.prev = _context.next) {
6303
6401
  case 0:
6304
6402
  payload = _ref.payload;
6305
6403
  listenerApi.cancelActiveListeners();
6306
6404
  value = payload.value, origin = payload.origin;
6307
- /* Test if the value is according to the expected time format */
6308
- if (!setTimeValidatorRexexp.test(value)) {
6309
- console.error("setTime value ".concat(value, " does not conform to format [YYYY-MM-DDThh:mm:ssZ]. It was triggered by ").concat(origin));
6310
- } else {
6311
- targets = getTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETTIME);
6312
- groups = getTargetGroups(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETTIME);
6313
- listenerApi.dispatch(setTimeSync(payload, targets, groups));
6405
+ if (value !== null && value !== void 0 && value.currentTime) {
6406
+ currentTime = value.currentTime;
6407
+ /* Test if the current is according to the expected time format */
6408
+ if (!setTimeValidatorRexexp.test(currentTime)) {
6409
+ console.error("setTime value ".concat(currentTime, " does not conform to format [YYYY-MM-DDThh:mm:ssZ]. It was triggered by ").concat(origin));
6410
+ } else {
6411
+ targets = getTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETTIME);
6412
+ groups = getTargetGroups(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETTIME);
6413
+ listenerApi.dispatch(setTimeSync(payload, targets, groups));
6414
+ }
6314
6415
  }
6315
6416
  case 4:
6316
6417
  case "end":
@@ -6324,20 +6425,37 @@ genericListener.startListening({
6324
6425
  return effect;
6325
6426
  }()
6326
6427
  });
6428
+ // Synchronize timeslider settings for actions 'centertime', 'span' and 'timestep'.
6327
6429
  genericListener.startListening({
6328
- actionCreator: setBbox,
6430
+ matcher: isAnyOf(mapActions.setTimeSliderCenterTime, mapActions.setTimeSliderSpan, mapActions.setTimeStep, mapActions.setAnimationStartTime, mapActions.setAnimationEndTime, mapActions.setAnimationDelay),
6329
6431
  effect: function () {
6330
6432
  var _effect2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2, listenerApi) {
6331
- var payload, targets, groups;
6433
+ var _synchronizationGroup;
6434
+ var payload, type, sourceId, syncGroupState, newPayload, targets, groups;
6332
6435
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
6333
6436
  while (1) switch (_context2.prev = _context2.next) {
6334
6437
  case 0:
6335
- payload = _ref2.payload;
6438
+ payload = _ref2.payload, type = _ref2.type;
6336
6439
  listenerApi.cancelActiveListeners();
6337
- targets = getTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETBBOX);
6338
- groups = getTargetGroups(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETBBOX);
6339
- listenerApi.dispatch(setBboxSync(payload, targets, groups));
6340
- case 5:
6440
+ sourceId = payload.mapId;
6441
+ syncGroupState = (_synchronizationGroup = getSynchronizationGroupSource(listenerApi.getState(), sourceId)) === null || _synchronizationGroup === void 0 || (_synchronizationGroup = _synchronizationGroup.payloadByType['SYNCGROUPS_TYPE_SETTIME']) === null || _synchronizationGroup === void 0 ? void 0 : _synchronizationGroup.value;
6442
+ newPayload = {
6443
+ sourceId: sourceId,
6444
+ origin: 'timeslidersynclistener',
6445
+ value: {
6446
+ currentTime: syncGroupState === null || syncGroupState === void 0 ? void 0 : syncGroupState.currentTime,
6447
+ timeSliderCenterTime: type === mapActions.setTimeSliderCenterTime.type ? payload.timeSliderCenterTime : (syncGroupState === null || syncGroupState === void 0 ? void 0 : syncGroupState.timeSliderCenterTime) || 0,
6448
+ timeSliderSpan: type === mapActions.setTimeSliderSpan.type ? payload.timeSliderSpan : syncGroupState === null || syncGroupState === void 0 ? void 0 : syncGroupState.timeSliderSpan,
6449
+ timeSliderStep: type === mapActions.setTimeStep.type ? payload.timeStep : syncGroupState === null || syncGroupState === void 0 ? void 0 : syncGroupState.timeSliderStep,
6450
+ timeSliderAnimationStartTime: type === mapActions.setAnimationStartTime.type ? payload.animationStartTime : syncGroupState === null || syncGroupState === void 0 ? void 0 : syncGroupState.timeSliderAnimationStartTime,
6451
+ timeSliderAnimationEndTime: type === mapActions.setAnimationEndTime.type ? payload.animationEndTime : syncGroupState === null || syncGroupState === void 0 ? void 0 : syncGroupState.timeSliderAnimationEndTime,
6452
+ timeSliderAnimationDelay: type === mapActions.setAnimationDelay.type ? payload.animationDelay : syncGroupState === null || syncGroupState === void 0 ? void 0 : syncGroupState.timeSliderAnimationDelay
6453
+ }
6454
+ };
6455
+ targets = getTargets(listenerApi.getState(), newPayload, SYNCGROUPS_TYPE_SETTIME);
6456
+ groups = getTargetGroups(listenerApi.getState(), newPayload, SYNCGROUPS_TYPE_SETTIME);
6457
+ listenerApi.dispatch(setTimeSync(newPayload, targets, groups));
6458
+ case 8:
6341
6459
  case "end":
6342
6460
  return _context2.stop();
6343
6461
  }
@@ -6350,27 +6468,19 @@ genericListener.startListening({
6350
6468
  }()
6351
6469
  });
6352
6470
  genericListener.startListening({
6353
- matcher: isAnyOf(layerActions.layerChangeName, layerActions.layerChangeEnabled, layerActions.layerChangeOpacity, layerActions.layerChangeDimension, layerActions.layerChangeStyle),
6471
+ actionCreator: setBbox,
6354
6472
  effect: function () {
6355
6473
  var _effect3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref3, listenerApi) {
6356
- var payload, type, targets;
6474
+ var payload, targets, groups;
6357
6475
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
6358
6476
  while (1) switch (_context3.prev = _context3.next) {
6359
6477
  case 0:
6360
- payload = _ref3.payload, type = _ref3.type;
6478
+ payload = _ref3.payload;
6361
6479
  listenerApi.cancelActiveListeners();
6362
- /* Should not listen to actions from itself */
6363
- if (!(payload && payload.origin === LayerActionOrigin.ReactMapViewParseLayer)) {
6364
- _context3.next = 4;
6365
- break;
6366
- }
6367
- return _context3.abrupt("return");
6368
- case 4:
6369
- targets = getLayerActionsTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETLAYERACTIONS);
6370
- if (targets && targets.length > 0) {
6371
- listenerApi.dispatch(setLayerActionSync(payload, targets, type));
6372
- }
6373
- case 6:
6480
+ targets = getTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETBBOX);
6481
+ groups = getTargetGroups(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETBBOX);
6482
+ listenerApi.dispatch(setBboxSync(payload, targets, groups));
6483
+ case 5:
6374
6484
  case "end":
6375
6485
  return _context3.stop();
6376
6486
  }
@@ -6383,7 +6493,7 @@ genericListener.startListening({
6383
6493
  }()
6384
6494
  });
6385
6495
  genericListener.startListening({
6386
- actionCreator: layerActions.addLayer,
6496
+ matcher: isAnyOf(layerActions.layerChangeName, layerActions.layerChangeEnabled, layerActions.layerChangeOpacity, layerActions.layerChangeDimension, layerActions.layerChangeStyle),
6387
6497
  effect: function () {
6388
6498
  var _effect4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref4, listenerApi) {
6389
6499
  var payload, type, targets;
@@ -6399,7 +6509,7 @@ genericListener.startListening({
6399
6509
  }
6400
6510
  return _context4.abrupt("return");
6401
6511
  case 4:
6402
- targets = getAddLayerActionsTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETLAYERACTIONS);
6512
+ targets = getLayerActionsTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETLAYERACTIONS);
6403
6513
  if (targets && targets.length > 0) {
6404
6514
  listenerApi.dispatch(setLayerActionSync(payload, targets, type));
6405
6515
  }
@@ -6416,24 +6526,25 @@ genericListener.startListening({
6416
6526
  }()
6417
6527
  });
6418
6528
  genericListener.startListening({
6419
- actionCreator: layerActions.duplicateMapLayer,
6529
+ actionCreator: layerActions.addLayer,
6420
6530
  effect: function () {
6421
6531
  var _effect5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(_ref5, listenerApi) {
6422
- var payload, sourceLayer, newPayload, targets;
6532
+ var payload, type, targets;
6423
6533
  return _regeneratorRuntime().wrap(function _callee5$(_context5) {
6424
6534
  while (1) switch (_context5.prev = _context5.next) {
6425
6535
  case 0:
6426
- payload = _ref5.payload;
6536
+ payload = _ref5.payload, type = _ref5.type;
6427
6537
  listenerApi.cancelActiveListeners();
6428
- sourceLayer = getLayerById(listenerApi.getState(), payload.oldLayerId);
6429
- newPayload = {
6430
- mapId: payload.mapId,
6431
- layer: sourceLayer,
6432
- origin: payload.origin
6433
- };
6434
- targets = getAddLayerActionsTargets(listenerApi.getState(), newPayload, SYNCGROUPS_TYPE_SETLAYERACTIONS);
6538
+ /* Should not listen to actions from itself */
6539
+ if (!(payload && payload.origin === LayerActionOrigin.ReactMapViewParseLayer)) {
6540
+ _context5.next = 4;
6541
+ break;
6542
+ }
6543
+ return _context5.abrupt("return");
6544
+ case 4:
6545
+ targets = getAddLayerActionsTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETLAYERACTIONS);
6435
6546
  if (targets && targets.length > 0) {
6436
- listenerApi.dispatch(setLayerActionSync(newPayload, targets, layerActions.addLayer.type));
6547
+ listenerApi.dispatch(setLayerActionSync(payload, targets, type));
6437
6548
  }
6438
6549
  case 6:
6439
6550
  case "end":
@@ -6448,25 +6559,24 @@ genericListener.startListening({
6448
6559
  }()
6449
6560
  });
6450
6561
  genericListener.startListening({
6451
- actionCreator: mapActions.layerMoveLayer,
6562
+ actionCreator: layerActions.duplicateMapLayer,
6452
6563
  effect: function () {
6453
6564
  var _effect6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(_ref6, listenerApi) {
6454
- var payload, type, targets;
6565
+ var payload, sourceLayer, newPayload, targets;
6455
6566
  return _regeneratorRuntime().wrap(function _callee6$(_context6) {
6456
6567
  while (1) switch (_context6.prev = _context6.next) {
6457
6568
  case 0:
6458
- payload = _ref6.payload, type = _ref6.type;
6569
+ payload = _ref6.payload;
6459
6570
  listenerApi.cancelActiveListeners();
6460
- /* Should not listen to actions from itself */
6461
- if (!(payload && payload.origin === LayerActionOrigin.ReactMapViewParseLayer)) {
6462
- _context6.next = 4;
6463
- break;
6464
- }
6465
- return _context6.abrupt("return");
6466
- case 4:
6467
- targets = getLayerMoveActionsTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETLAYERACTIONS);
6571
+ sourceLayer = getLayerById(listenerApi.getState(), payload.oldLayerId);
6572
+ newPayload = {
6573
+ mapId: payload.mapId,
6574
+ layer: sourceLayer,
6575
+ origin: payload.origin
6576
+ };
6577
+ targets = getAddLayerActionsTargets(listenerApi.getState(), newPayload, SYNCGROUPS_TYPE_SETLAYERACTIONS);
6468
6578
  if (targets && targets.length > 0) {
6469
- listenerApi.dispatch(setLayerActionSync(payload, targets, type));
6579
+ listenerApi.dispatch(setLayerActionSync(newPayload, targets, layerActions.addLayer.type));
6470
6580
  }
6471
6581
  case 6:
6472
6582
  case "end":
@@ -6481,7 +6591,7 @@ genericListener.startListening({
6481
6591
  }()
6482
6592
  });
6483
6593
  genericListener.startListening({
6484
- matcher: isAnyOf(mapActions.setAutoLayerId, mapActions.setAutoUpdateLayerId, mapActions.setAutoTimestepLayerId),
6594
+ actionCreator: mapActions.layerMoveLayer,
6485
6595
  effect: function () {
6486
6596
  var _effect7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(_ref7, listenerApi) {
6487
6597
  var payload, type, targets;
@@ -6490,11 +6600,18 @@ genericListener.startListening({
6490
6600
  case 0:
6491
6601
  payload = _ref7.payload, type = _ref7.type;
6492
6602
  listenerApi.cancelActiveListeners();
6493
- targets = getSetAutoLayerIdActionsTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETLAYERACTIONS);
6603
+ /* Should not listen to actions from itself */
6604
+ if (!(payload && payload.origin === LayerActionOrigin.ReactMapViewParseLayer)) {
6605
+ _context7.next = 4;
6606
+ break;
6607
+ }
6608
+ return _context7.abrupt("return");
6609
+ case 4:
6610
+ targets = getLayerMoveActionsTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETLAYERACTIONS);
6494
6611
  if (targets && targets.length > 0) {
6495
6612
  listenerApi.dispatch(setLayerActionSync(payload, targets, type));
6496
6613
  }
6497
- case 4:
6614
+ case 6:
6498
6615
  case "end":
6499
6616
  return _context7.stop();
6500
6617
  }
@@ -6507,7 +6624,7 @@ genericListener.startListening({
6507
6624
  }()
6508
6625
  });
6509
6626
  genericListener.startListening({
6510
- actionCreator: layerActions.setBaseLayers,
6627
+ matcher: isAnyOf(mapActions.setAutoLayerId, mapActions.setAutoUpdateLayerId, mapActions.setAutoTimestepLayerId),
6511
6628
  effect: function () {
6512
6629
  var _effect8 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(_ref8, listenerApi) {
6513
6630
  var payload, type, targets;
@@ -6516,18 +6633,11 @@ genericListener.startListening({
6516
6633
  case 0:
6517
6634
  payload = _ref8.payload, type = _ref8.type;
6518
6635
  listenerApi.cancelActiveListeners();
6519
- /* Should not listen to actions from itself */
6520
- if (!(payload && payload.origin === LayerActionOrigin.ReactMapViewParseLayer)) {
6521
- _context8.next = 4;
6522
- break;
6523
- }
6524
- return _context8.abrupt("return");
6525
- case 4:
6526
- targets = getMapBaseLayerActionsTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETLAYERACTIONS);
6636
+ targets = getSetAutoLayerIdActionsTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETLAYERACTIONS);
6527
6637
  if (targets && targets.length > 0) {
6528
6638
  listenerApi.dispatch(setLayerActionSync(payload, targets, type));
6529
6639
  }
6530
- case 6:
6640
+ case 4:
6531
6641
  case "end":
6532
6642
  return _context8.stop();
6533
6643
  }
@@ -6540,7 +6650,7 @@ genericListener.startListening({
6540
6650
  }()
6541
6651
  });
6542
6652
  genericListener.startListening({
6543
- actionCreator: layerActions.layerDelete,
6653
+ actionCreator: layerActions.setBaseLayers,
6544
6654
  effect: function () {
6545
6655
  var _effect9 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee9(_ref9, listenerApi) {
6546
6656
  var payload, type, targets;
@@ -6556,7 +6666,7 @@ genericListener.startListening({
6556
6666
  }
6557
6667
  return _context9.abrupt("return");
6558
6668
  case 4:
6559
- targets = getLayerDeleteActionsTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETLAYERACTIONS);
6669
+ targets = getMapBaseLayerActionsTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETLAYERACTIONS);
6560
6670
  if (targets && targets.length > 0) {
6561
6671
  listenerApi.dispatch(setLayerActionSync(payload, targets, type));
6562
6672
  }
@@ -6572,6 +6682,39 @@ genericListener.startListening({
6572
6682
  return effect;
6573
6683
  }()
6574
6684
  });
6685
+ genericListener.startListening({
6686
+ actionCreator: layerActions.layerDelete,
6687
+ effect: function () {
6688
+ var _effect0 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee0(_ref0, listenerApi) {
6689
+ var payload, type, targets;
6690
+ return _regeneratorRuntime().wrap(function _callee0$(_context0) {
6691
+ while (1) switch (_context0.prev = _context0.next) {
6692
+ case 0:
6693
+ payload = _ref0.payload, type = _ref0.type;
6694
+ listenerApi.cancelActiveListeners();
6695
+ /* Should not listen to actions from itself */
6696
+ if (!(payload && payload.origin === LayerActionOrigin.ReactMapViewParseLayer)) {
6697
+ _context0.next = 4;
6698
+ break;
6699
+ }
6700
+ return _context0.abrupt("return");
6701
+ case 4:
6702
+ targets = getLayerDeleteActionsTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETLAYERACTIONS);
6703
+ if (targets && targets.length > 0) {
6704
+ listenerApi.dispatch(setLayerActionSync(payload, targets, type));
6705
+ }
6706
+ case 6:
6707
+ case "end":
6708
+ return _context0.stop();
6709
+ }
6710
+ }, _callee0);
6711
+ }));
6712
+ function effect(_x17, _x18) {
6713
+ return _effect0.apply(this, arguments);
6714
+ }
6715
+ return effect;
6716
+ }()
6717
+ });
6575
6718
 
6576
6719
  /* A map with all the timerIds and their current step */
6577
6720
  var stepMap = new Map();
@@ -6663,14 +6806,14 @@ var isNextStepAvailable = function isNextStepAvailable(reduxLayers, nextTimeStri
6663
6806
  };
6664
6807
  }
6665
6808
  var olSource = layer.olSource;
6666
- var hasImageAvailableForRequestedTimeStep = olSource.hasImageForTimeValue(closestValue);
6809
+ var hasImageAvailableForRequestedTimeStep = olSource.isImageLoadingForTimestep(closestValue);
6667
6810
  // If there is no image available for requested timestep, return true and flag that this thing is not ready yet.
6668
6811
  if (hasImageAvailableForRequestedTimeStep) {
6669
6812
  return {
6670
6813
  status: true
6671
6814
  };
6672
6815
  }
6673
- olSource.loadImageForTimeValue(closestValue);
6816
+ olSource.setImageForTimeValue(closestValue);
6674
6817
  return {
6675
6818
  status: false
6676
6819
  };
@@ -6706,7 +6849,9 @@ var olMetronomeHandler = function olMetronomeHandler(timerIds, listenerApi) {
6706
6849
  // When there are no targets, default to one
6707
6850
  targets.push({
6708
6851
  targetId: timerId,
6709
- value: ''
6852
+ value: {
6853
+ currentTime: ''
6854
+ }
6710
6855
  });
6711
6856
  }
6712
6857
  var timerIsInDwell = handleTimerDwell(timerId, animationListValues.length);
@@ -6725,7 +6870,9 @@ var olMetronomeHandler = function olMetronomeHandler(timerIds, listenerApi) {
6725
6870
  var updatedValue = animationListValues[timerStep];
6726
6871
  targetsWithUpdateValue.push.apply(targetsWithUpdateValue, _toConsumableArray(targets.map(function (target) {
6727
6872
  return _objectSpread2(_objectSpread2({}, target), {}, {
6728
- value: updatedValue
6873
+ value: {
6874
+ currentTime: updatedValue
6875
+ }
6729
6876
  });
6730
6877
  })));
6731
6878
  var speedDelay = getMapAnimationDelay(listenerApi.getState(), timerId);
@@ -6763,7 +6910,8 @@ mapListener.startListening({
6763
6910
  var payload = _ref.payload;
6764
6911
  var mapId = payload.mapId;
6765
6912
  var layers = getMapLayersWithoutDimensionCurrentValue(listenerApi.getState(), mapId);
6766
- if (!layers.length) {
6913
+ var isAnimating$1 = isAnimating(listenerApi.getState(), mapId);
6914
+ if (!layers.length && isAnimating$1) {
6767
6915
  listenerApi.dispatch(mapActions.mapStopAnimation({
6768
6916
  mapId: mapId
6769
6917
  }));
@@ -6820,7 +6968,9 @@ mapListener.startListening({
6820
6968
  return listenerApi.dispatch(setTime({
6821
6969
  origin: LayerActionOrigin.updateLayerInformationListener,
6822
6970
  sourceId: syncedMapId,
6823
- value: incomingMaxTime
6971
+ value: {
6972
+ currentTime: incomingMaxTime
6973
+ }
6824
6974
  }));
6825
6975
  });
6826
6976
  }
@@ -6902,7 +7052,9 @@ mapListener.startListening({
6902
7052
  return listenerApi.dispatch(setTime({
6903
7053
  origin: LayerActionOrigin.toggleAutoUpdateListener,
6904
7054
  sourceId: syncedMapId,
6905
- value: timeDimension.maxValue
7055
+ value: {
7056
+ currentTime: timeDimension.maxValue
7057
+ }
6906
7058
  }));
6907
7059
  });
6908
7060
  }
@@ -7016,7 +7168,7 @@ mapListener.startListening({
7016
7168
  actionCreator: mapActions.setMapPreset,
7017
7169
  effect: function () {
7018
7170
  var _effect2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref6, listenerApi) {
7019
- var payload, mapId, initialProps, mapPreset, layers, activeLayerId, autoTimeStepLayerId, autoUpdateLayerId, proj, shouldAutoUpdate, shouldAnimate, animationPayload, toggleTimestepAuto, showTimeSlider, displayMapPin, shouldShowZoomControls, shouldShowLegend, shouldShowDataExplorer, dockedLayerManagerSize, timeSliderSpan, toggleTimeSpanAuto, defaultOverlayer, _filterLayers, mapLayers, baseLayers, overLayers, _newLayerIds$layers$f, _newLayerIds$layers$f2, autoTimeStepLayerIdNew, autoUpdateLayerIdNew, onlyActiveLayerIdIsSet, newLayerIds, newAutoTimeStepLayerId, newAutoUpdateLayerId, customLayers, customBaseLayer, customOverLayer, baseLayersWithDefaultLayer, overLayersWithDefaultLayer, allBaseLayers, _overLayers$find, foundOverlayerId, checkIsprojectionSupported, animationLength, animationEndTime, shouldEndtimeOverride, interval, endTime, startTime, centerTimeInSeconds, animationEnd, _startTime, duration, _animationEnd, animationStart, shouldOpenLegend, legendId, fiveMinuteDelayForAnimation, _animationEnd2, _animationStart;
7171
+ var payload, mapId, initialProps, mapPreset, layers, activeLayerId, autoTimeStepLayerId, autoUpdateLayerId, proj, shouldAutoUpdate, shouldAnimate, animationPayload, toggleTimestepAuto, showTimeSlider, displayMapPin, shouldShowZoomControls, shouldShowLegend, shouldShowDataExplorer, dockedLayerManagerSize, timeSliderSpan, toggleTimeSpanAuto, defaultOverlayer, _filterLayers, mapLayers, baseLayers, overLayers, _newLayerIds$layers$f, _newLayerIds$layers$f2, autoTimeStepLayerIdNew, autoUpdateLayerIdNew, onlyActiveLayerIdIsSet, newLayerIds, newAutoTimeStepLayerId, newAutoUpdateLayerId, customLayers, customBaseLayer, customOverLayer, baseLayersWithDefaultLayer, overLayersWithDefaultLayer, allBaseLayers, _overlayersFromStore$, overlayersFromStore, foundOverlayerId, checkIsprojectionSupported, animationLength, animationEndTime, shouldEndtimeOverride, interval, endTime, startTime, centerTimeInSeconds, animationEnd, _startTime, duration, _animationEnd, animationStart, shouldOpenLegend, legendId, fiveMinuteDelayForAnimation, _animationEnd2, _animationStart;
7020
7172
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
7021
7173
  while (1) switch (_context2.prev = _context2.next) {
7022
7174
  case 0:
@@ -7075,10 +7227,11 @@ mapListener.startListening({
7075
7227
  });
7076
7228
  });
7077
7229
  handleBaseLayers(mapId, allBaseLayers, listenerApi);
7078
- if (defaultOverlayer && overLayers) {
7079
- foundOverlayerId = ((_overLayers$find = overLayers.find(function (overlayer) {
7230
+ if (defaultOverlayer) {
7231
+ overlayersFromStore = getOverlayersForMapId(listenerApi.getState(), mapId);
7232
+ foundOverlayerId = ((_overlayersFromStore$ = overlayersFromStore.find(function (overlayer) {
7080
7233
  return overlayer.name === defaultOverlayer;
7081
- })) === null || _overLayers$find === void 0 ? void 0 : _overLayers$find.id) || 'none';
7234
+ })) === null || _overlayersFromStore$ === void 0 ? void 0 : _overlayersFromStore$.id) || 'none';
7082
7235
  listenerApi.dispatch(mapActions.changeOverlayer({
7083
7236
  mapId: mapId,
7084
7237
  selectedOverlayer: foundOverlayerId,
@@ -7178,7 +7331,9 @@ mapListener.startListening({
7178
7331
  listenerApi.dispatch(genericActions.setTime({
7179
7332
  origin: '',
7180
7333
  sourceId: mapId,
7181
- value: startTime
7334
+ value: {
7335
+ currentTime: startTime
7336
+ }
7182
7337
  }));
7183
7338
  centerTimeInSeconds = new Date(handleDateUtilsISOString(endTime)).getTime();
7184
7339
  listenerApi.dispatch(mapActions.setTimeSliderCenterTime({
@@ -7199,7 +7354,9 @@ mapListener.startListening({
7199
7354
  listenerApi.dispatch(genericActions.setTime({
7200
7355
  origin: '',
7201
7356
  sourceId: mapId,
7202
- value: _startTime
7357
+ value: {
7358
+ currentTime: _startTime
7359
+ }
7203
7360
  }));
7204
7361
  }
7205
7362
  // sets animationDelay by speed of animationPayload
@@ -7364,7 +7521,9 @@ mapListener.startListening({
7364
7521
  listenerApi.dispatch(genericActions.setTime({
7365
7522
  origin: '',
7366
7523
  sourceId: mapId,
7367
- value: handleDateUtilsISOString(selectedTimeString)
7524
+ value: {
7525
+ currentTime: handleDateUtilsISOString(selectedTimeString)
7526
+ }
7368
7527
  }));
7369
7528
  }
7370
7529
  }
@@ -8753,8 +8912,9 @@ var SupportedComponentTypes;
8753
8912
  (function (SupportedComponentTypes) {
8754
8913
  SupportedComponentTypes["WarningList"] = "WarningList";
8755
8914
  SupportedComponentTypes["TimeSeries"] = "TimeSeries";
8915
+ SupportedComponentTypes["Soundings"] = "Soundings";
8756
8916
  })(SupportedComponentTypes || (SupportedComponentTypes = {}));
8757
- var supportedComponentTypesForLinking = [SupportedComponentTypes.WarningList, SupportedComponentTypes.TimeSeries];
8917
+ var supportedComponentTypesForLinking = [SupportedComponentTypes.WarningList, SupportedComponentTypes.TimeSeries, SupportedComponentTypes.Soundings];
8758
8918
 
8759
8919
  var constants = /*#__PURE__*/Object.freeze({
8760
8920
  __proto__: null,