@opengeoweb/core 4.8.0 → 4.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/index.esm.js +488 -367
  2. package/index.umd.js +529 -393
  3. package/lib/components/LayerManager/LayerContainerRow/LayerRow/ActivateLayer/ActivateLayer.d.ts +3 -5
  4. package/lib/components/LayerManager/LayerContainerRow/LayerRow/DragHandle/DragHandle.d.ts +1 -0
  5. package/lib/components/LayerManager/LayerManagerHeaderOptions.d.ts +4 -0
  6. package/lib/components/LayerManager/index.d.ts +1 -0
  7. package/lib/components/TimeSlider/TimeSlider.d.ts +7 -0
  8. package/lib/components/TimeSlider/TimeSliderButtons/AnimationLengthButton/AnimationLengthButton.d.ts +1 -2
  9. package/lib/components/TimeSlider/TimeSliderButtons/TimeSliderMenu/TimeSliderMenu.d.ts +3 -2
  10. package/lib/components/TimeSlider/TimeSliderButtons/TimeStepButton/TimeStepButton.d.ts +2 -1
  11. package/lib/components/TimeSlider/TimeSliderConnect.d.ts +2 -27
  12. package/lib/components/TimeSlider/TimeSliderCurrentTimeBox/TimeSliderCurrentTimeBox.d.ts +1 -0
  13. package/lib/components/TimeSlider/TimeSliderCurrentTimeBox/TimeSliderCurrentTimeBoxConnect.d.ts +2 -0
  14. package/lib/components/TimeSlider/TimeSliderCurrentTimeBox/TimeSliderCurrentTimeBoxRenderFunctions.d.ts +1 -1
  15. package/lib/components/TimeSlider/TimeSliderLegend/TimeSliderLegend.d.ts +0 -1
  16. package/lib/components/TimeSlider/TimeSliderLegend/TimeSliderLegendConnect.d.ts +2 -57
  17. package/lib/components/TimeSlider/TimeSliderLegend/{TimeSliderLegendUtils.d.ts → timeSliderLegendUtils.d.ts} +0 -0
  18. package/lib/components/TimeSlider/TimeSliderLegend/{TimeSliderLegenedUtils.spec.d.ts → timeSliderLegenedUtils.spec.d.ts} +0 -0
  19. package/lib/components/TimeSlider/index.d.ts +1 -1
  20. package/lib/components/TimeSlider/{TimeSliderUtils.d.ts → timeSliderUtils.d.ts} +7 -1
  21. package/lib/components/TimeSlider/{TimeSliderUtils.spec.d.ts → timeSliderUtils.spec.d.ts} +0 -0
  22. package/lib/index.d.ts +2 -2
  23. package/lib/store/mapStore/layers/selectors.d.ts +11 -11
  24. package/lib/store/mapStore/layers/types.d.ts +0 -2
  25. package/lib/store/mapStore/map/types.d.ts +1 -1
  26. package/lib/store/mapStore/map/utils.d.ts +1 -1
  27. package/lib/store/mapStore/service/selectors.d.ts +4 -4
  28. package/lib/store/mapStore/service/types.d.ts +2 -12
  29. package/lib/utils/__mocks__/getCapabilities.d.ts +1 -1
  30. package/lib/utils/defaultTestSettings.d.ts +21 -1
  31. package/lib/utils/getCapabilities.d.ts +1 -17
  32. package/package.json +7 -7
package/index.esm.js CHANGED
@@ -6,9 +6,9 @@ import React__default, { Component, useRef, useState, useEffect, useCallback } f
6
6
  import _, { debounce, isEqual, escapeRegExp, groupBy, throttle, range } from 'lodash';
7
7
  import { takeLatest, put, select, call, takeEvery, all, delay } from 'redux-saga/effects';
8
8
  import { connect, useDispatch, useSelector, Provider } from 'react-redux';
9
- import { CustomTooltip, ToolButton, ToolContainerDraggable, IS_JEST, TooltipSelect, AlertIcon, useControlledTooltip, tooltipContainerStyles, sliderHeaderStyle, CustomSlider, ToggleMenu, ManagerButton, CustomAccordion, EnableButton, ManagerDeleteButton, AlertBanner, calculateDialogSizeAndPosition, useIsMounted, CustomToggleButton, useMakeSureContainerStaysInsideWindow, withEggs } from '@opengeoweb/shared';
10
- import { Pause, Play, CollapseSmall, CollapseMedium, CollapseLarge, CollapseWindow, ExpandWindow, Add, Copy, Both, None, DragHandle as DragHandle$1, Cached, Filter, Search, Clear, Info, DimensionsOther, DimensionsElevation, DimensionsRefTime, DimensionsTime, Edit, Visibility, Delete, Close, Home, Minus, Layers, Equalizer, Link, LinkOff, AutoUpdateActive, AutoUpdateInActive, TextIcon, Speed, FastForward, Clock, Now, Animation, Options, StepForward, StepBackward, dragHandlePath, ChevronDown, ChevronUp, List as List$1, ChevronRight, ChevronLeft, Resize, ExitDomain, ThemeWrapper, lightTheme } from '@opengeoweb/theme';
11
- import { Paper, Box, Typography, IconButton, Grid, MenuItem, Button, Popper, FormControl, InputLabel, List, ListItem, ListItemText, CircularProgress, ListSubheader, Dialog, DialogTitle, DialogContent, DialogContentText, TextField, DialogActions, LinearProgress, InputAdornment, Backdrop, ListItemSecondaryAction, ListItemIcon, Checkbox, Switch, styled, Slider, Menu, useTheme, Snackbar } from '@mui/material';
9
+ import { CustomTooltip, ToolButton, ToolContainerDraggable, IS_JEST, TooltipSelect, AlertIcon, useControlledTooltip, tooltipContainerStyles, sliderHeaderStyle, CustomSlider, ToggleMenu, CustomAccordion, EnableButton, ManagerDeleteButton, AlertBanner, ManagerButton, calculateDialogSizeAndPosition, useIsMounted, CustomToggleButton, useMakeSureContainerStaysInsideWindow, withEggs } from '@opengeoweb/shared';
10
+ import { Pause, Play, CollapseSmall, CollapseMedium, CollapseLarge, CollapseWindow, ExpandWindow, Add, Copy, None, Both, DragHandle as DragHandle$1, Cached, Filter, Search, Clear, Info, DimensionsOther, DimensionsElevation, DimensionsRefTime, DimensionsTime, Edit, Visibility, Delete, Close, Home, Minus, Layers, Equalizer, Link, LinkOff, AutoUpdateActive, AutoUpdateInActive, Speed, FastForward, Clock, Now, Animation, Options, StepForward, StepBackward, dragHandlePath, ChevronDown, ChevronUp, List as List$1, ChevronRight, ChevronLeft, Resize, ExitDomain, ThemeWrapper, lightTheme } from '@opengeoweb/theme';
11
+ import { Paper, Box, Typography, IconButton, Grid, MenuItem, Button, Popper, ListItemText, ListItemIcon, FormControl, InputLabel, List, ListItem, CircularProgress, ListSubheader, Dialog, DialogTitle, DialogContent, DialogContentText, TextField, DialogActions, LinearProgress, InputAdornment, Backdrop, ListItemSecondaryAction, Checkbox, Switch, styled, Slider, Menu, useTheme, Snackbar } from '@mui/material';
12
12
  import { legendImageStore, WMImageEventType, getLegendGraphicURLForLayer, WMGetServiceFromStore, LayerType as LayerType$1, clearImageCache, getMapImageStore, WMBBOX, debug, DebugType, WMJSMap, WMLayer } from '@opengeoweb/webmap';
13
13
  import { ReactSortable } from 'react-sortablejs';
14
14
  import Sortable from 'sortablejs';
@@ -991,46 +991,66 @@ var TimeInMinutes;
991
991
  TimeInMinutes[TimeInMinutes["MONTH"] = 43800] = "MONTH";
992
992
  TimeInMinutes[TimeInMinutes["DAY"] = 1440] = "DAY";
993
993
  TimeInMinutes[TimeInMinutes["HOUR"] = 60] = "HOUR";
994
+ TimeInMinutes[TimeInMinutes["MINUTE"] = 1] = "MINUTE";
994
995
  })(TimeInMinutes || (TimeInMinutes = {}));
996
+ /**
997
+ *
998
+ * @param minutes
999
+ * @returns the two highest values in the format yr(s) mo(s) d h m
1000
+ */
995
1001
 
996
- var minutesToDescribedDuration = function minutesToDescribedDuration(minutes) {
997
- var dateStr = '';
998
- var time = minutes; // subtracting whole years/months/days from time duration and adding the amount to the string to be printed.
999
-
1000
- if (time >= TimeInMinutes.YEAR) {
1001
- var yearsInMintues = Math.floor(time / TimeInMinutes.YEAR);
1002
- dateStr += "".concat(yearsInMintues, "y");
1003
- time -= yearsInMintues * TimeInMinutes.YEAR;
1004
- }
1005
-
1006
- if (time >= TimeInMinutes.MONTH) {
1007
- var monthsInMinutes = Math.floor(time / TimeInMinutes.MONTH);
1008
- dateStr += "".concat(monthsInMinutes, "m");
1009
- time -= monthsInMinutes * TimeInMinutes.MONTH;
1010
- }
1011
1002
 
1012
- if (time >= TimeInMinutes.DAY) {
1013
- var daysInMinutes = Math.floor(time / TimeInMinutes.DAY);
1014
- dateStr += "".concat(daysInMinutes, "d");
1015
- time -= daysInMinutes * TimeInMinutes.DAY;
1016
- } // we will always print hour/minutes if there are any of them in the XX:XX format
1017
-
1018
-
1019
- if (time > 0) {
1020
- if (dateStr !== '') dateStr += ' ';
1021
- dateStr += "".concat(Math.floor(time / TimeInMinutes.HOUR).toLocaleString(undefined, {
1022
- minimumIntegerDigits: 2,
1023
- useGrouping: false
1024
- }), "h").concat((time % TimeInMinutes.HOUR).toLocaleString(undefined, {
1025
- minimumIntegerDigits: 2,
1026
- useGrouping: false
1027
- }), "min");
1028
- }
1003
+ var minutesToDescribedDuration = function minutesToDescribedDuration(minutes) {
1004
+ var units = [{
1005
+ label: 'yr',
1006
+ value: TimeInMinutes.YEAR,
1007
+ plural: 's'
1008
+ }, {
1009
+ label: 'mo',
1010
+ value: TimeInMinutes.MONTH,
1011
+ plural: 's'
1012
+ }, {
1013
+ label: 'd',
1014
+ value: TimeInMinutes.DAY
1015
+ }, {
1016
+ label: 'h',
1017
+ value: TimeInMinutes.HOUR
1018
+ }, {
1019
+ label: 'm',
1020
+ value: TimeInMinutes.MINUTE
1021
+ }];
1022
+ var durations = units.reduce(function (units, duration) {
1023
+ var min = units.min,
1024
+ time = units.time,
1025
+ count = units.count;
1026
+ var label = duration.label,
1027
+ value = duration.value,
1028
+ _duration$plural = duration.plural,
1029
+ plural = _duration$plural === void 0 ? '' : _duration$plural;
1030
+ var unit = Math.floor(min / value);
1031
+
1032
+ if (unit > 0 && count < 2) {
1033
+ return {
1034
+ time: "".concat(time).concat(unit).concat(label).concat(unit > 1 ? plural : '', " "),
1035
+ min: min - unit * value,
1036
+ count: count + 1
1037
+ };
1038
+ }
1029
1039
 
1030
- return dateStr;
1040
+ return {
1041
+ min: min,
1042
+ time: time,
1043
+ count: count
1044
+ };
1045
+ }, {
1046
+ min: minutes,
1047
+ time: '',
1048
+ count: 0
1049
+ });
1050
+ return durations.time.trim();
1031
1051
  };
1032
1052
 
1033
- var TimeSliderUtils = /*#__PURE__*/Object.freeze({
1053
+ var timeSliderUtils = /*#__PURE__*/Object.freeze({
1034
1054
  __proto__: null,
1035
1055
  millisecondsInSecond: millisecondsInSecond,
1036
1056
  defaultAnimationDelayAtStart: defaultAnimationDelayAtStart,
@@ -1327,7 +1347,7 @@ var getTimeStepFromDataInterval = function getTimeStepFromDataInterval(timeInter
1327
1347
  }
1328
1348
  };
1329
1349
  var getActiveLayerTimeStep = function getActiveLayerTimeStep(timeDimension) {
1330
- return (timeDimension === null || timeDimension === void 0 ? void 0 : timeDimension.timeInterval) ? getTimeStepFromDataInterval(timeDimension.timeInterval) : null;
1350
+ return (timeDimension === null || timeDimension === void 0 ? void 0 : timeDimension.timeInterval) ? getTimeStepFromDataInterval(timeDimension.timeInterval) : undefined;
1331
1351
  };
1332
1352
 
1333
1353
  var utils = /*#__PURE__*/Object.freeze({
@@ -2943,11 +2963,11 @@ var layerStore = function layerStore(store) {
2943
2963
 
2944
2964
 
2945
2965
  var getLayerById = function getLayerById(store, layerId) {
2946
- if (store && store.layers && store.layers.byId[layerId]) {
2966
+ if (layerId && store && store.layers && store.layers.byId[layerId]) {
2947
2967
  return store.layers.byId[layerId];
2948
2968
  }
2949
2969
 
2950
- return null;
2970
+ return undefined;
2951
2971
  };
2952
2972
  /**
2953
2973
  * Retrieves all layers indexed by layerId
@@ -3847,7 +3867,7 @@ var getSyncSourceBySourceId = function getSyncSourceBySourceId(state, id) {
3847
3867
  return null;
3848
3868
  };
3849
3869
 
3850
- var getTime = createSelector(getSyncSourceBySourceId, function (store) {
3870
+ createSelector(getSyncSourceBySourceId, function (store) {
3851
3871
  return store && store.payloadByType && store.payloadByType[SYNCGROUPS_TYPE_SETTIME] ? store.payloadByType[SYNCGROUPS_TYPE_SETTIME].value : null;
3852
3872
  });
3853
3873
 
@@ -4714,7 +4734,7 @@ var initialState$2 = {
4714
4734
  allServicesEnabled: true,
4715
4735
  activeLayerInfo: {
4716
4736
  name: '',
4717
- text: '',
4737
+ title: '',
4718
4738
  leaf: true,
4719
4739
  path: [],
4720
4740
  serviceName: ''
@@ -4930,7 +4950,7 @@ var filterLayersFromService = function filterLayersFromService(serviceId, servic
4930
4950
  return filterId.toLowerCase().includes(searchLowercase);
4931
4951
  });
4932
4952
  var isSearchTextInLayerName = (_a = layer.name) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(searchLowercase);
4933
- var isSearchTextInLayerText = (_b = layer.text) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes(searchLowercase);
4953
+ var isSearchTextInLayerText = (_b = layer.title) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes(searchLowercase);
4934
4954
  var isSearchTextInLayerAbstract = (_c = layer["abstract"]) === null || _c === void 0 ? void 0 : _c.toLowerCase().includes(searchLowercase);
4935
4955
  var isSearchTextInServiceName = mapStoreService.name.toLowerCase().includes(searchLowercase);
4936
4956
  var isSearchTextInLayer = isSearchTextInLayerName || isSearchTextInLayerText || isSearchTextInLayerAbstract || isSearchTextInLayerFilter || isSearchTextInServiceName;
@@ -6480,7 +6500,7 @@ var PlayButton = function PlayButton(_ref) {
6480
6500
  * Copyright 2020 - Finnish Meteorological Institute (FMI)
6481
6501
  * */
6482
6502
  var animationIntervalDefault = 5;
6483
- var connectRedux$5 = connect(function (store, props) {
6503
+ var connectRedux$3 = connect(function (store, props) {
6484
6504
  return {
6485
6505
  animationStartTime: getAnimationStartTime(store, props.mapId),
6486
6506
  animationEndTime: getAnimationEndTime$1(store, props.mapId),
@@ -6491,7 +6511,7 @@ var connectRedux$5 = connect(function (store, props) {
6491
6511
  mapStartAnimation: mapActions$1.mapStartAnimation,
6492
6512
  mapStopAnimation: mapActions$1.mapStopAnimation
6493
6513
  });
6494
- var PlayButtonConnect = connectRedux$5(function (_ref) {
6514
+ var PlayButtonConnect = connectRedux$3(function (_ref) {
6495
6515
  var mapId = _ref.mapId,
6496
6516
  animationStartTime = _ref.animationStartTime,
6497
6517
  animationEndTime = _ref.animationEndTime,
@@ -8163,7 +8183,7 @@ function updateAnimation(mapId, maxValue) {
8163
8183
  }, _marked4$1);
8164
8184
  }
8165
8185
  function setLayerDimensionsSaga(_ref4) {
8166
- var payload, layerDimensions, dimensions, layerId, layer, newTimeDimension, mapId, activeLayerId, shouldAutoUpdate, prevTimeDimension, isAnimating$1, webmapInstance, isActiveLayer, timeStep, newTimeStep;
8186
+ var payload, layerDimensions, dimensions, layerId, layer, newTimeDimension, mapId, activeLayerId, shouldAutoUpdate, prevTimeDimension, isAnimating$1, webmapInstance, isActiveLayer, timeStep, isTimestepAuto$1, newTimeStep;
8167
8187
  return regeneratorRuntime.wrap(function setLayerDimensionsSaga$(_context5) {
8168
8188
  while (1) {
8169
8189
  switch (_context5.prev = _context5.next) {
@@ -8226,38 +8246,43 @@ function setLayerDimensionsSaga(_ref4) {
8226
8246
 
8227
8247
  case 29:
8228
8248
  timeStep = _context5.sent;
8249
+ _context5.next = 32;
8250
+ return select(isTimestepAuto, mapId);
8251
+
8252
+ case 32:
8253
+ isTimestepAuto$1 = _context5.sent;
8229
8254
 
8230
- if (!(isActiveLayer && timeStep === undefined && newTimeDimension)) {
8231
- _context5.next = 35;
8255
+ if (!(isTimestepAuto$1 && isActiveLayer && timeStep === undefined && newTimeDimension)) {
8256
+ _context5.next = 38;
8232
8257
  break;
8233
8258
  }
8234
8259
 
8235
8260
  newTimeStep = getActiveLayerTimeStep(newTimeDimension);
8236
8261
 
8237
8262
  if (!newTimeStep) {
8238
- _context5.next = 35;
8263
+ _context5.next = 38;
8239
8264
  break;
8240
8265
  }
8241
8266
 
8242
- _context5.next = 35;
8267
+ _context5.next = 38;
8243
8268
  return put(mapActions$1.setTimeStep({
8244
8269
  mapId: mapId,
8245
8270
  timeStep: newTimeStep
8246
8271
  }));
8247
8272
 
8248
- case 35:
8273
+ case 38:
8249
8274
  if (!(isActiveLayer && // only update the active layer
8250
8275
  shouldAutoUpdate && newTimeDimension && newTimeDimension.maxValue && prevTimeDimension && prevTimeDimension.currentValue && prevTimeDimension.currentValue !== newTimeDimension.maxValue)) {
8251
- _context5.next = 43;
8276
+ _context5.next = 46;
8252
8277
  break;
8253
8278
  }
8254
8279
 
8255
8280
  if (isAnimating$1) {
8256
- _context5.next = 39;
8281
+ _context5.next = 42;
8257
8282
  break;
8258
8283
  }
8259
8284
 
8260
- _context5.next = 39;
8285
+ _context5.next = 42;
8261
8286
  return put(layerActions.layerChangeDimension({
8262
8287
  layerId: layerId,
8263
8288
  origin: LayerActionOrigin.setLayerDimensionSaga,
@@ -8267,39 +8292,39 @@ function setLayerDimensionsSaga(_ref4) {
8267
8292
  }
8268
8293
  }));
8269
8294
 
8270
- case 39:
8271
- _context5.next = 41;
8295
+ case 42:
8296
+ _context5.next = 44;
8272
8297
  return call(updateAnimation, mapId, newTimeDimension.maxValue);
8273
8298
 
8274
- case 41:
8275
- _context5.next = 46;
8299
+ case 44:
8300
+ _context5.next = 49;
8276
8301
  break;
8277
8302
 
8278
- case 43:
8303
+ case 46:
8279
8304
  if (!(isAnimating$1 && !webmapInstance.isAnimating && newTimeDimension && newTimeDimension.maxValue)) {
8280
- _context5.next = 46;
8305
+ _context5.next = 49;
8281
8306
  break;
8282
8307
  }
8283
8308
 
8284
- _context5.next = 46;
8309
+ _context5.next = 49;
8285
8310
  return call(updateAnimation, mapId, newTimeDimension.maxValue);
8286
8311
 
8287
- case 46:
8288
- _context5.next = 51;
8312
+ case 49:
8313
+ _context5.next = 54;
8289
8314
  break;
8290
8315
 
8291
- case 48:
8292
- _context5.prev = 48;
8316
+ case 51:
8317
+ _context5.prev = 51;
8293
8318
  _context5.t0 = _context5["catch"](1);
8294
8319
  // eslint-disable-next-line no-console
8295
8320
  console.warn(_context5.t0);
8296
8321
 
8297
- case 51:
8322
+ case 54:
8298
8323
  case "end":
8299
8324
  return _context5.stop();
8300
8325
  }
8301
8326
  }
8302
- }, _marked5, null, [[1, 48]]);
8327
+ }, _marked5, null, [[1, 51]]);
8303
8328
  }
8304
8329
  function toggleAutoUpdateSaga(_ref5) {
8305
8330
  var payload, shouldAutoUpdate, mapId, layerId, timeDimension;
@@ -9016,8 +9041,8 @@ function layerSelectCloseInfoDialogSaga(_ref) {
9016
9041
  dialogInfo = _context2.sent;
9017
9042
 
9018
9043
  if (filteredLayers.map(function (layer) {
9019
- return layer.text;
9020
- }).includes(dialogInfo.text)) {
9044
+ return layer.title;
9045
+ }).includes(dialogInfo.title)) {
9021
9046
  _context2.next = 31;
9022
9047
  break;
9023
9048
  }
@@ -9840,7 +9865,7 @@ var getRenderLayersValues = function getRenderLayersValues(layerName, layers) {
9840
9865
  currentIndex: layers.length,
9841
9866
  extendedLayers: [].concat(_toConsumableArray(layers), [{
9842
9867
  name: layerName,
9843
- text: layerName,
9868
+ title: layerName,
9844
9869
  leaf: true,
9845
9870
  path: []
9846
9871
  }])
@@ -9903,7 +9928,7 @@ var RenderLayers = function RenderLayers(_ref) {
9903
9928
  });
9904
9929
  return /*#__PURE__*/React.createElement(TooltipSelect, {
9905
9930
  disableUnderline: true,
9906
- tooltip: "Layer: ".concat((_a = extendedLayers[currentIndex]) === null || _a === void 0 ? void 0 : _a.text),
9931
+ tooltip: "Layer: ".concat((_a = extendedLayers[currentIndex]) === null || _a === void 0 ? void 0 : _a.title),
9907
9932
  inputProps: {
9908
9933
  SelectDisplayProps: {
9909
9934
  'data-testid': 'selectLayer'
@@ -9921,7 +9946,7 @@ var RenderLayers = function RenderLayers(_ref) {
9921
9946
  renderValue: function renderValue(value) {
9922
9947
  return extendedLayers.find(function (layer) {
9923
9948
  return layer.name === value;
9924
- }).text;
9949
+ }).title;
9925
9950
  }
9926
9951
  }, /*#__PURE__*/React.createElement(MenuItem, {
9927
9952
  disabled: true
@@ -9935,7 +9960,7 @@ var RenderLayers = function RenderLayers(_ref) {
9935
9960
  marginLeft: '28px'
9936
9961
  }
9937
9962
  }
9938
- }, layerFromServiceLayers.text, currentIndex === layers.length && /*#__PURE__*/React.createElement(AlertIcon, {
9963
+ }, layerFromServiceLayers.title, currentIndex === layers.length && /*#__PURE__*/React.createElement(AlertIcon, {
9939
9964
  severity: "error"
9940
9965
  }));
9941
9966
  }));
@@ -10178,7 +10203,6 @@ var RenderStyles = function RenderStyles(_ref) {
10178
10203
  return currentStyle === style.name;
10179
10204
  });
10180
10205
  return /*#__PURE__*/React.createElement(TooltipSelect, {
10181
- disableUnderline: true,
10182
10206
  tooltip: "Style: ".concat((_a = styles[currentIndex]) === null || _a === void 0 ? void 0 : _a.title),
10183
10207
  inputProps: {
10184
10208
  SelectDisplayProps: {
@@ -10221,51 +10245,108 @@ var RenderStyles = function RenderStyles(_ref) {
10221
10245
  * Copyright 2021 - Finnish Meteorological Institute (FMI)
10222
10246
  * */
10223
10247
 
10224
- var makeIconStyle = function makeIconStyle(isActive, isEnabled) {
10225
- return {
10226
- color: function color() {
10227
- if (isActive) {
10228
- return 'common.white';
10229
- }
10248
+ var getIconColor = function getIconColor(isActive, isEnabled) {
10249
+ if (isActive) {
10250
+ return 'common.white';
10251
+ }
10230
10252
 
10231
- if (isEnabled) {
10232
- return 'geowebColors.buttons.flat.default.color';
10233
- }
10253
+ if (isEnabled) {
10254
+ return 'geowebColors.buttons.flat.default.color';
10255
+ }
10234
10256
 
10235
- return 'geowebColors.buttons.flat.disabled.color';
10236
- }
10237
- };
10257
+ return 'geowebColors.buttons.flat.disabled.color';
10238
10258
  };
10239
10259
 
10240
10260
  var ActivateLayer = function ActivateLayer(_ref) {
10241
- var _ref$tooltipTitle = _ref.tooltipTitle,
10242
- tooltipTitle = _ref$tooltipTitle === void 0 ? 'Leading layer' : _ref$tooltipTitle,
10243
- onClickActivate = _ref.onClickActivate,
10244
- _ref$isActive = _ref.isActive,
10245
- isActive = _ref$isActive === void 0 ? false : _ref$isActive,
10246
- _ref$isEnabled = _ref.isEnabled,
10247
- isEnabled = _ref$isEnabled === void 0 ? true : _ref$isEnabled,
10248
- _ref$id = _ref.id,
10249
- id = _ref$id === void 0 ? 'activateLayer-btn' : _ref$id;
10250
- var iconStyle = makeIconStyle(isActive, isEnabled);
10261
+ var _onChange = _ref.onChange,
10262
+ isActive = _ref.isActive,
10263
+ isEnabled = _ref.isEnabled;
10264
+ return /*#__PURE__*/React.createElement(TooltipSelect, {
10265
+ variant: "standard",
10266
+ tooltip: "Auto update",
10267
+ // Don't show arrow https://stackoverflow.com/questions/69085735/how-to-remove-arrow-from-react-textfield-select
10268
+ inputProps: {
10269
+ IconComponent: function IconComponent() {
10270
+ return null;
10271
+ }
10272
+ },
10273
+ value: isActive ? 'Both' : 'None',
10274
+ sx: {
10275
+ '&& .MuiOutlinedInput-input': {
10276
+ padding: '0'
10277
+ },
10278
+ '&&& .MuiInput-input': {
10279
+ paddingRight: 0
10280
+ }
10281
+ },
10282
+ renderValue: function renderValue(optionSelected) {
10283
+ return /*#__PURE__*/React.createElement(AutoUpdateButton$1, {
10284
+ optionSelected: optionSelected,
10285
+ isActive: isActive,
10286
+ isEnabled: isEnabled
10287
+ });
10288
+ },
10289
+ onChange: function onChange(event) {
10290
+ event.stopPropagation();
10251
10291
 
10252
- var onClick = function onClick(event) {
10253
- event.stopPropagation();
10254
- onClickActivate();
10255
- };
10292
+ _onChange(event.target.value === 'Both');
10293
+ },
10294
+ onClose: function onClose(event) {
10295
+ event.stopPropagation();
10296
+ }
10297
+ }, /*#__PURE__*/React.createElement(MenuItem, {
10298
+ disabled: true
10299
+ }, "Auto-update"), /*#__PURE__*/React.createElement(MenuItem, {
10300
+ value: "None"
10301
+ }, /*#__PURE__*/React.createElement(AutoOption, {
10302
+ icon: /*#__PURE__*/React.createElement(None, null),
10303
+ text: "None"
10304
+ })), /*#__PURE__*/React.createElement(MenuItem, {
10305
+ value: "Both"
10306
+ }, /*#__PURE__*/React.createElement(AutoOption, {
10307
+ icon: /*#__PURE__*/React.createElement(Both, null),
10308
+ text: "Both"
10309
+ })));
10310
+ };
10256
10311
 
10257
- return /*#__PURE__*/React.createElement(ManagerButton, {
10258
- tooltipTitle: tooltipTitle,
10259
- onClick: onClick,
10260
- icon: isActive ? /*#__PURE__*/React.createElement(Both, {
10261
- sx: iconStyle
10262
- }) : /*#__PURE__*/React.createElement(None, {
10263
- sx: iconStyle
10264
- }),
10265
- testId: id,
10266
- isActive: isActive,
10267
- className: "activateLayer-btn"
10312
+ var AutoUpdateButton$1 = function AutoUpdateButton(_ref2) {
10313
+ var optionSelected = _ref2.optionSelected,
10314
+ isActive = _ref2.isActive,
10315
+ isEnabled = _ref2.isEnabled;
10316
+ var style = {
10317
+ backgroundColor: isActive ? 'geowebColors.buttons.primary.active.fill' : 'transparent!important',
10318
+ borderRadius: '5px',
10319
+ color: getIconColor(isActive, isEnabled)
10320
+ };
10321
+ var Icon = isActive ? /*#__PURE__*/React.createElement(Both, {
10322
+ sx: style
10323
+ }) : /*#__PURE__*/React.createElement(None, {
10324
+ sx: style
10268
10325
  });
10326
+ return /*#__PURE__*/React.createElement(ToolButton, {
10327
+ "data-testid": "activateLayer-btn",
10328
+ "aria-label": "Auto update ".concat(optionSelected),
10329
+ sx: {
10330
+ '&.MuiButtonBase-root': {
10331
+ backgroundColor: 'transparent'
10332
+ }
10333
+ }
10334
+ }, Icon);
10335
+ };
10336
+
10337
+ var AutoOption = function AutoOption(_ref3) {
10338
+ var icon = _ref3.icon,
10339
+ text = _ref3.text;
10340
+ return /*#__PURE__*/React.createElement(Box, {
10341
+ sx: {
10342
+ display: 'flex',
10343
+ alignItems: 'center'
10344
+ }
10345
+ }, /*#__PURE__*/React.createElement(ListItemText, {
10346
+ sx: {
10347
+ width: '112px'
10348
+ }
10349
+ }, text), /*#__PURE__*/React.createElement(ListItemIcon, null, icon));
10269
10350
  };
10270
10351
 
10271
10352
  /* *
@@ -10330,8 +10411,8 @@ var LayerRow = function LayerRow(_ref) {
10330
10411
  borderRadius: 1,
10331
10412
  marginBottom: 0.5,
10332
10413
  minHeight: '34px',
10333
- '&.sortable-drag': {
10334
- boxShadow: 4
10414
+ '&.sortable-chosen': {
10415
+ boxShadow: 1
10335
10416
  },
10336
10417
  '&.sortable-ghost': {
10337
10418
  opacity: 0.5
@@ -10363,8 +10444,9 @@ var LayerRow = function LayerRow(_ref) {
10363
10444
  },
10364
10445
  id: "enableButton-medium"
10365
10446
  }), layerActiveLayout || /*#__PURE__*/React__default.createElement(ActivateLayer, {
10366
- onClickActivate: onClickRow,
10367
- id: "activateLayer-btn-medium"
10447
+ onChange: onClickRow,
10448
+ isActive: false,
10449
+ isEnabled: true
10368
10450
  }), /*#__PURE__*/React__default.createElement(Typography, {
10369
10451
  sx: {
10370
10452
  fontWeight: '500',
@@ -10386,7 +10468,7 @@ var LayerRow = function LayerRow(_ref) {
10386
10468
  }, /*#__PURE__*/React__default.createElement(Grid, {
10387
10469
  item: true
10388
10470
  }, "Style"), layerStylesLayout || /*#__PURE__*/React__default.createElement(RenderStyles, {
10389
- layerStyles: layer.styles,
10471
+ layerStyles: [],
10390
10472
  currentLayerStyle: layer.style,
10391
10473
  onChangeLayerStyle: function onChangeLayerStyle(style) {
10392
10474
  onLayerChangeStyle({
@@ -10443,7 +10525,9 @@ var LayerRow = function LayerRow(_ref) {
10443
10525
  });
10444
10526
  }
10445
10527
  }), layerActiveLayout || /*#__PURE__*/React__default.createElement(ActivateLayer, {
10446
- onClickActivate: onClickRow
10528
+ onChange: onClickRow,
10529
+ isActive: false,
10530
+ isEnabled: true
10447
10531
  })), /*#__PURE__*/React__default.createElement(Grid, {
10448
10532
  item: true,
10449
10533
  className: columnClasses.column2
@@ -10466,7 +10550,7 @@ var LayerRow = function LayerRow(_ref) {
10466
10550
  item: true,
10467
10551
  className: columnClasses.column3
10468
10552
  }, layerStylesLayout || /*#__PURE__*/React__default.createElement(RenderStyles, {
10469
- layerStyles: layer.styles,
10553
+ layerStyles: [],
10470
10554
  currentLayerStyle: layer.style,
10471
10555
  onChangeLayerStyle: function onChangeLayerStyle(style) {
10472
10556
  onLayerChangeStyle({
@@ -10800,7 +10884,7 @@ var recurseNodes = function recurseNodes(nodesToRecur) {
10800
10884
  var newLayerTreeObj = {
10801
10885
  leaf: nodesToRecur.leaf,
10802
10886
  name: nodesToRecur.name,
10803
- title: nodesToRecur.text,
10887
+ title: nodesToRecur.title,
10804
10888
  path: nodesToRecur.path || [],
10805
10889
  children: [],
10806
10890
  keywords: nodesToRecur.keywords || [],
@@ -11057,11 +11141,10 @@ var ActivateLayerConnect = function ActivateLayerConnect(_ref) {
11057
11141
  }, [dispatch]);
11058
11142
  var isActive = activeLayerId === layerId;
11059
11143
  return /*#__PURE__*/React.createElement(ActivateLayer, {
11060
- tooltipTitle: "Leading layer",
11061
- onClickActivate: function onClickActivate() {
11144
+ onChange: function onChange(isActive) {
11062
11145
  setActiveLayerId({
11063
11146
  mapId: mapId,
11064
- layerId: layerId
11147
+ layerId: isActive ? layerId : undefined
11065
11148
  });
11066
11149
 
11067
11150
  if (isAutoUpdating$1) {
@@ -11110,7 +11193,7 @@ var LayerRowConnect = function LayerRowConnect(_ref) {
11110
11193
  });
11111
11194
  var fullLayerName = ((_a = useSelector(function (store) {
11112
11195
  return getLayerFromService(store, layerService, layerName);
11113
- })) === null || _a === void 0 ? void 0 : _a.text) || '';
11196
+ })) === null || _a === void 0 ? void 0 : _a.title) || '';
11114
11197
  var layers = useSelector(function (store) {
11115
11198
  return getLayersFromService$1(store, layerService);
11116
11199
  });
@@ -11186,7 +11269,9 @@ var DragHandle = function DragHandle(_ref) {
11186
11269
  _ref$index = _ref.index,
11187
11270
  index = _ref$index === void 0 ? undefined : _ref$index,
11188
11271
  _ref$hideTooltip = _ref.hideTooltip,
11189
- hideTooltip = _ref$hideTooltip === void 0 ? false : _ref$hideTooltip;
11272
+ hideTooltip = _ref$hideTooltip === void 0 ? false : _ref$hideTooltip,
11273
+ _ref$isSorting = _ref.isSorting,
11274
+ isSorting = _ref$isSorting === void 0 ? false : _ref$isSorting;
11190
11275
  var tooltipTitle = hideTooltip ? '' : TOOLTIP_TITLE;
11191
11276
  return /*#__PURE__*/React__default.createElement(ManagerButton, {
11192
11277
  tooltipTitle: tooltipTitle,
@@ -11200,7 +11285,7 @@ var DragHandle = function DragHandle(_ref) {
11200
11285
  disabled: isDisabled,
11201
11286
  isAccessible: true,
11202
11287
  sx: {
11203
- cursor: 'grab',
11288
+ cursor: isSorting ? 'grabbing' : 'grab',
11204
11289
  '&:hover': {
11205
11290
  backgroundColor: 'inherit!important'
11206
11291
  },
@@ -11247,7 +11332,7 @@ var LayerContainerRow = function LayerContainerRow(_ref) {
11247
11332
  var onStart = React.useCallback(function (_ref3) {
11248
11333
  var oldIndex = _ref3.oldIndex;
11249
11334
  setActiveDragIndex(oldIndex);
11250
- Sortable.ghost.style.opacity = '1';
11335
+ if (Sortable.ghost) Sortable.ghost.style.opacity = '1';
11251
11336
  }, []);
11252
11337
  var onEnd = React.useCallback(function () {
11253
11338
  if (activeDragIndex !== null) {
@@ -11327,12 +11412,11 @@ var LayerContainerRow = function LayerContainerRow(_ref) {
11327
11412
  handle: ".handle",
11328
11413
  direction: "vertical",
11329
11414
  // hover props
11330
- forceFallback: true,
11415
+ forceFallback: false,
11331
11416
  onStart: onStart,
11332
11417
  onEnd: onEnd,
11333
11418
  style: {
11334
- width: '100%',
11335
- cursor: isSorting ? 'grabbing' : 'inherit'
11419
+ width: '100%'
11336
11420
  }
11337
11421
  }, layerIds.map(function (layerId, index) {
11338
11422
  return /*#__PURE__*/React.createElement(LayerRowConnect, {
@@ -11343,7 +11427,8 @@ var LayerContainerRow = function LayerContainerRow(_ref) {
11343
11427
  dragHandle: /*#__PURE__*/React.createElement(DragHandle, {
11344
11428
  isDisabled: isDragDisabled,
11345
11429
  index: index,
11346
- hideTooltip: isSorting || isDragDisabled
11430
+ hideTooltip: isSorting || isDragDisabled,
11431
+ isSorting: isSorting
11347
11432
  })
11348
11433
  });
11349
11434
  })));
@@ -11779,7 +11864,7 @@ var WMSLayerTree = function WMSLayerTree(_ref) {
11779
11864
  * Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
11780
11865
  * Copyright 2020 - Finnish Meteorological Institute (FMI)
11781
11866
  * */
11782
- var connectRedux$4 = connect(function (store, props) {
11867
+ var connectRedux$2 = connect(function (store, props) {
11783
11868
  return {
11784
11869
  loadedLayers: getMapLayers(store, props.mapId)
11785
11870
  };
@@ -11843,7 +11928,7 @@ var ConnectedTree = function ConnectedTree(_ref) {
11843
11928
  });
11844
11929
  };
11845
11930
 
11846
- var WMSLayerTreeConnect = connectRedux$4(ConnectedTree);
11931
+ var WMSLayerTreeConnect = connectRedux$2(ConnectedTree);
11847
11932
 
11848
11933
  var preset = {
11849
11934
  presetType: "mapPreset",
@@ -13409,7 +13494,7 @@ var LayerInfoDialog = function LayerInfoDialog(_ref) {
13409
13494
  }
13410
13495
  }, /*#__PURE__*/React__default.createElement(LayerInfoText, {
13411
13496
  label: "Title",
13412
- value: layer.text
13497
+ value: layer.title
13413
13498
  }), /*#__PURE__*/React__default.createElement(LayerInfoText, {
13414
13499
  label: "Name",
13415
13500
  value: layer.name
@@ -13435,7 +13520,7 @@ var LayerInfoDialog = function LayerInfoDialog(_ref) {
13435
13520
  label: "Keywords",
13436
13521
  value: ((_a = layer.keywords) === null || _a === void 0 ? void 0 : _a.join(', ')) || '-'
13437
13522
  }), /*#__PURE__*/React__default.createElement(LayerInfoLegend, {
13438
- title: layer.text,
13523
+ title: layer.title,
13439
13524
  name: layer.name,
13440
13525
  dimensions: layer.dimensions,
13441
13526
  legendURL: ((_b = layer.styles) === null || _b === void 0 ? void 0 : _b.length) ? layer.styles[0].legendURL : undefined
@@ -13704,7 +13789,7 @@ var LayerListRow = function LayerListRow(_ref) {
13704
13789
  overflow: 'hidden'
13705
13790
  }
13706
13791
  }, /*#__PURE__*/React__default.createElement(SearchHighlight, {
13707
- text: layer.text,
13792
+ text: layer.title,
13708
13793
  search: searchFilter
13709
13794
  }))), /*#__PURE__*/React__default.createElement(Grid, {
13710
13795
  item: true,
@@ -16509,7 +16594,8 @@ var TimeSliderMenu = function TimeSliderMenu(_ref) {
16509
16594
  icon = _ref.icon,
16510
16595
  _ref$onChangeMouseWhe = _ref.onChangeMouseWheel,
16511
16596
  onChangeMouseWheel = _ref$onChangeMouseWhe === void 0 ? function () {} : _ref$onChangeMouseWhe,
16512
- animationLength = _ref.animationLength;
16597
+ displayVariableDuration = _ref.displayVariableDuration,
16598
+ layerHasTimeStep = _ref.layerHasTimeStep;
16513
16599
  var currentMarkIndex = marks.findIndex(function (mark) {
16514
16600
  return mark.value === value;
16515
16601
  });
@@ -16551,11 +16637,12 @@ var TimeSliderMenu = function TimeSliderMenu(_ref) {
16551
16637
  },
16552
16638
  ref: setAnchorRef,
16553
16639
  active: true,
16554
- width: "58px",
16640
+ width: "100%",
16555
16641
  onWheel: onWheel
16556
- }, icon, /*#__PURE__*/React.createElement(TextIcon, {
16557
- text: currentMark === null || currentMark === void 0 ? void 0 : currentMark.text
16558
- }))), /*#__PURE__*/React.createElement(Menu, {
16642
+ }, icon, /*#__PURE__*/React.createElement(Typography, {
16643
+ fontSize: 12,
16644
+ fontWeight: 400
16645
+ }, displayVariableDuration ? minutesToDescribedDuration(value) : currentMark === null || currentMark === void 0 ? void 0 : currentMark.text))), /*#__PURE__*/React.createElement(Menu, {
16559
16646
  anchorEl: anchorRef,
16560
16647
  open: open,
16561
16648
  onClose: function onClose() {
@@ -16591,7 +16678,7 @@ var TimeSliderMenu = function TimeSliderMenu(_ref) {
16591
16678
  setOpen(false);
16592
16679
  },
16593
16680
  key: mark.value,
16594
- selected: (currentMark === null || currentMark === void 0 ? void 0 : currentMark.value) === mark.value,
16681
+ selected: (currentMark === null || currentMark === void 0 ? void 0 : currentMark.value) === mark.value && !isAutoSelected,
16595
16682
  disabled: isDisabled
16596
16683
  }, mark.label || mark.text);
16597
16684
  }), handleAutoClick && /*#__PURE__*/React.createElement(MenuItem, {
@@ -16600,8 +16687,8 @@ var TimeSliderMenu = function TimeSliderMenu(_ref) {
16600
16687
  setOpen(false);
16601
16688
  },
16602
16689
  selected: isAutoSelected,
16603
- disabled: isDisabled
16604
- }, "Auto"), animationLength && /*#__PURE__*/React.createElement(MenuItem, {
16690
+ disabled: isDisabled || !layerHasTimeStep
16691
+ }, "Auto"), displayVariableDuration && /*#__PURE__*/React.createElement(MenuItem, {
16605
16692
  disabled: true,
16606
16693
  sx: {
16607
16694
  fontSize: '12px',
@@ -16611,12 +16698,12 @@ var TimeSliderMenu = function TimeSliderMenu(_ref) {
16611
16698
  minHeight: '30px!important'
16612
16699
  }
16613
16700
  }
16614
- }, "length"), animationLength && /*#__PURE__*/React.createElement(ToolButton, {
16701
+ }, "length"), displayVariableDuration && /*#__PURE__*/React.createElement(ToolButton, {
16615
16702
  "data-testid": "menu-animation-length-button",
16616
16703
  active: false,
16617
16704
  disableRipple: true,
16618
16705
  width: "100%"
16619
- }, minutesToDescribedDuration(animationLength))));
16706
+ }, minutesToDescribedDuration(value))));
16620
16707
  };
16621
16708
 
16622
16709
  var speedTooltipTitle = 'Speed';
@@ -16732,16 +16819,16 @@ var marks$2 = [{
16732
16819
  text: '2w'
16733
16820
  }, {
16734
16821
  label: '1 month',
16735
- value: 40320,
16736
- text: '4w'
16822
+ value: 43800,
16823
+ text: '1mo'
16737
16824
  }, {
16738
16825
  label: '2 months',
16739
- value: 80640,
16740
- text: '8w'
16826
+ value: 87600,
16827
+ text: '2mos'
16741
16828
  }, {
16742
16829
  label: '6 months',
16743
- value: 241920,
16744
- text: '24w'
16830
+ value: 262800,
16831
+ text: '6mos'
16745
16832
  }, {
16746
16833
  label: '1 year',
16747
16834
  value: 525600,
@@ -16756,7 +16843,8 @@ var marks$2 = [{
16756
16843
  var timeStepTitle = 'Time step';
16757
16844
 
16758
16845
  var TimeStepButton = function TimeStepButton(_ref) {
16759
- var timeStep = _ref.timeStep,
16846
+ var _ref$timeStep = _ref.timeStep,
16847
+ timeStep = _ref$timeStep === void 0 ? marks$2[0].value : _ref$timeStep,
16760
16848
  _ref$disabled = _ref.disabled,
16761
16849
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
16762
16850
  isTimestepAuto = _ref.isTimestepAuto,
@@ -16764,7 +16852,8 @@ var TimeStepButton = function TimeStepButton(_ref) {
16764
16852
  _ref$onToggleTimestep = _ref.onToggleTimestepAuto,
16765
16853
  onToggleTimestepAuto = _ref$onToggleTimestep === void 0 ? function () {} : _ref$onToggleTimestep,
16766
16854
  _ref$isOpenByDefault = _ref.isOpenByDefault,
16767
- isOpenByDefault = _ref$isOpenByDefault === void 0 ? false : _ref$isOpenByDefault;
16855
+ isOpenByDefault = _ref$isOpenByDefault === void 0 ? false : _ref$isOpenByDefault,
16856
+ timeStepFromLayer = _ref.timeStepFromLayer;
16768
16857
 
16769
16858
  var handleMenuItemClick = function handleMenuItemClick(mark) {
16770
16859
  if (isTimestepAuto) {
@@ -16774,6 +16863,12 @@ var TimeStepButton = function TimeStepButton(_ref) {
16774
16863
  onChangeTimeStep(mark.value, MapActionOrigin.map);
16775
16864
  };
16776
16865
 
16866
+ var handleToggleTimeStep = function handleToggleTimeStep() {
16867
+ if (isTimestepAuto) return;
16868
+ onToggleTimestepAuto();
16869
+ timeStepFromLayer && onChangeTimeStep(timeStepFromLayer, MapActionOrigin.map);
16870
+ };
16871
+
16777
16872
  return /*#__PURE__*/React.createElement(TimeSliderMenu, {
16778
16873
  title: timeStepTitle,
16779
16874
  isOpenByDefault: isOpenByDefault,
@@ -16782,9 +16877,11 @@ var TimeStepButton = function TimeStepButton(_ref) {
16782
16877
  handleMenuItemClick: handleMenuItemClick,
16783
16878
  isDisabled: disabled,
16784
16879
  isAutoSelected: isTimestepAuto,
16785
- handleAutoClick: onToggleTimestepAuto,
16880
+ handleAutoClick: handleToggleTimeStep,
16786
16881
  icon: /*#__PURE__*/React.createElement(FastForward, null),
16787
- onChangeMouseWheel: handleMenuItemClick
16882
+ onChangeMouseWheel: handleMenuItemClick,
16883
+ displayVariableDuration: true,
16884
+ layerHasTimeStep: Boolean(timeStepFromLayer)
16788
16885
  });
16789
16886
  };
16790
16887
 
@@ -16968,7 +17065,6 @@ var AnimationLengthButton = function AnimationLengthButton(_ref) {
16968
17065
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
16969
17066
  _ref$animationLength = _ref.animationLength,
16970
17067
  animationLength = _ref$animationLength === void 0 ? AnimationLength.Hours1 : _ref$animationLength,
16971
- animationLengthInMinutes = _ref.animationLengthInMinutes,
16972
17068
  onChangeAnimationLength = _ref.onChangeAnimationLength;
16973
17069
 
16974
17070
  var onChangeSliderValue = function onChangeSliderValue(mark) {
@@ -16988,7 +17084,7 @@ var AnimationLengthButton = function AnimationLengthButton(_ref) {
16988
17084
  isDisabled: disabled,
16989
17085
  value: animationLength,
16990
17086
  onChangeMouseWheel: onChangeSliderValue,
16991
- animationLength: animationLengthInMinutes
17087
+ displayVariableDuration: true
16992
17088
  });
16993
17089
  };
16994
17090
 
@@ -17036,7 +17132,6 @@ var OptionsMenu = function OptionsMenu(_ref) {
17036
17132
  item: true,
17037
17133
  xs: "auto"
17038
17134
  }, timeStepBtn || /*#__PURE__*/React__default.createElement(TimeStepButton, {
17039
- timeStep: 0,
17040
17135
  onChangeTimeStep: function onChangeTimeStep() {},
17041
17136
  isTimestepAuto: false
17042
17137
  })), /*#__PURE__*/React__default.createElement(Grid, {
@@ -18188,34 +18283,6 @@ function useAnimationTime(animationStartTime, animationEndTime, onSetAnimationSt
18188
18283
  };
18189
18284
  }
18190
18285
 
18191
- function useHandleKeyDown(mapIsActive, timeStep, dataStartTime, dataEndTime, currentTime, onSetNewDate, onSetCenterTime, selectedTime) {
18192
- var curTime = selectedTime !== undefined ? moment.unix(selectedTime).toISOString() : moment.utc().toISOString();
18193
- React.useEffect(function () {
18194
- var handleKeyDown = function handleKeyDown(event) {
18195
- if (event.key === 'Home' && mapIsActive) {
18196
- handleSetNowEvent(timeStep, dataStartTime, dataEndTime, currentTime, onSetNewDate, onSetCenterTime);
18197
- }
18198
-
18199
- if (event.ctrlKey && dataStartTime && dataEndTime && mapIsActive) {
18200
- switch (event.code) {
18201
- case 'ArrowLeft':
18202
- setPreviousTimeStep(timeStep, curTime, dataStartTime, onSetNewDate);
18203
- break;
18204
-
18205
- case 'ArrowRight':
18206
- setNextTimeStep(timeStep, curTime, dataEndTime, onSetNewDate);
18207
- break;
18208
- }
18209
- }
18210
- };
18211
-
18212
- document.addEventListener('keydown', handleKeyDown);
18213
- return function () {
18214
- document.removeEventListener('keydown', handleKeyDown);
18215
- };
18216
- }, [curTime, currentTime, dataEndTime, dataStartTime, mapIsActive, onSetCenterTime, onSetNewDate, timeStep]);
18217
- }
18218
-
18219
18286
  function convertStringTimeToUnix(time) {
18220
18287
  return time ? moment.utc(time).unix() : undefined;
18221
18288
  } // Explanation of props can be found here:
@@ -18237,8 +18304,6 @@ var TimeSliderLegend = function TimeSliderLegend(_ref) {
18237
18304
  animationStartTime = _ref.animationStartTime,
18238
18305
  animationEndTime = _ref.animationEndTime,
18239
18306
  timeStep = _ref.timeStep,
18240
- _ref$mapIsActive = _ref.mapIsActive,
18241
- mapIsActive = _ref$mapIsActive === void 0 ? true : _ref$mapIsActive,
18242
18307
  unfilteredSelectedTime = _ref.unfilteredSelectedTime,
18243
18308
  setUnfilteredSelectedTime = _ref.setUnfilteredSelectedTime,
18244
18309
  _ref$onSetNewDate = _ref.onSetNewDate,
@@ -18249,7 +18314,6 @@ var TimeSliderLegend = function TimeSliderLegend(_ref) {
18249
18314
  onSetAnimationStartTime = _ref$onSetAnimationSt === void 0 ? function () {} : _ref$onSetAnimationSt,
18250
18315
  _ref$onSetAnimationEn = _ref.onSetAnimationEndTime,
18251
18316
  onSetAnimationEndTime = _ref$onSetAnimationEn === void 0 ? function () {} : _ref$onSetAnimationEn;
18252
- useHandleKeyDown(mapIsActive, timeStep, dataStartTime, dataEndTime, currentTime, onSetNewDate, onSetCenterTime, selectedTime);
18253
18317
 
18254
18318
  var _useCanvasTarget = useCanvasTarget('mousedown'),
18255
18319
  _useCanvasTarget2 = _slicedToArray(_useCanvasTarget, 2),
@@ -18589,6 +18653,26 @@ var drawRoundedRectangle = function drawRoundedRectangle(ctx, x, y, width, heigh
18589
18653
  ctx.restore();
18590
18654
  };
18591
18655
 
18656
+ var drawAutoUpdateIcon = function drawAutoUpdateIcon(ctx, x, y, theme, isAutoUpdating) {
18657
+ ctx.save();
18658
+ ctx.translate(x, y);
18659
+ var playerTimeText = theme.palette.geowebColors.timeSlider.playerTimeText;
18660
+ ctx.fillStyle = isAutoUpdating ? '#7BACFF' : '#B4B4B4';
18661
+ var path = new Path2D('M12.385 3.295l5 3-5 3V7.723l-.085.014c-3.08.548-5.418 3.24-5.418 6.479 0 3.634 2.945 6.58 6.577 6.58 2.914 0 5.385-1.896 6.248-4.523l2.815-1.626c-.225 4.814-4.197 8.648-9.063 8.648-5.012 0-9.074-4.065-9.074-9.08 0-4.65 3.495-8.484 8-9.015V3.295z');
18662
+ ctx.translate(7, -8);
18663
+ ctx.rotate(13.295);
18664
+ ctx.fill(path);
18665
+ ctx.restore();
18666
+ var text = 'Auto';
18667
+ ctx.save();
18668
+ ctx.translate(x, y);
18669
+ ctx.fillStyle = isAutoUpdating ? '#7BACFF' : '#B4B4B4'; // ON
18670
+
18671
+ ctx.font = "7px ".concat(playerTimeText.fontFamily);
18672
+ ctx.fillText(text, 5, 14);
18673
+ ctx.restore();
18674
+ };
18675
+
18592
18676
  var drawTextAnnotation = function drawTextAnnotation(ctx, x, y, text, theme) {
18593
18677
  var playerTimeText = theme.palette.geowebColors.timeSlider.playerTimeText;
18594
18678
  ctx.save();
@@ -18602,20 +18686,22 @@ var drawTextAnnotation = function drawTextAnnotation(ctx, x, y, text, theme) {
18602
18686
  ctx.restore();
18603
18687
  };
18604
18688
 
18605
- var drawNewCurrentTimeBox = function drawNewCurrentTimeBox(ctx, selectedTime, selectedPx, scale, theme) {
18689
+ var drawNewCurrentTimeBox = function drawNewCurrentTimeBox(ctx, selectedTime, selectedPx, scale, theme, isAutoUpdating) {
18690
+ var iconWidth = 25;
18606
18691
  var smallWidth = needleGeom.smallWidth,
18607
18692
  largeWidth = needleGeom.largeWidth,
18608
18693
  height = needleGeom.height;
18609
- var needleWidth = scale === Scale.Year ? largeWidth : smallWidth;
18610
- var needleX = selectedPx - needleWidth / 2;
18694
+ var boxWidth = scale === Scale.Year ? largeWidth : smallWidth;
18695
+ var needleX = selectedPx - boxWidth / 2;
18611
18696
  var needleY = needleGeom.lineWidth;
18612
- drawRoundedRectangle(ctx, needleX, needleY, needleWidth, height, needleGeom.cornerRadius, theme);
18697
+ drawRoundedRectangle(ctx, needleX - iconWidth, needleY, boxWidth + iconWidth, height, needleGeom.cornerRadius, theme);
18613
18698
  var timeFormat = scale === Scale.Year ? 'Y ddd DD MMM HH:mm' : 'ddd DD MMM HH:mm';
18614
18699
  var timeText = moment.utc(selectedTime * 1000).format(timeFormat).toString();
18615
- drawTextAnnotation(ctx, needleX + needleWidth / 2, needleY + height / 2, timeText, theme);
18700
+ drawTextAnnotation(ctx, needleX + boxWidth / 2 - iconWidth, needleY + height / 2, timeText, theme);
18701
+ drawAutoUpdateIcon(ctx, needleX + boxWidth - iconWidth, needleY, theme, isAutoUpdating);
18616
18702
  };
18617
18703
 
18618
- var renderTimeSliderCurrentTimeBox = function renderTimeSliderCurrentTimeBox(ctx, theme, width, height, centerTime, selected, secondsPerPx, scale) {
18704
+ var renderTimeSliderCurrentTimeBox = function renderTimeSliderCurrentTimeBox(ctx, theme, width, height, centerTime, selected, secondsPerPx, scale, isAutoUpdating) {
18619
18705
  // map unix timestamps to pixel values
18620
18706
  var _map = [selected].map(function (t) {
18621
18707
  return timestampToPixel(t, centerTime, width, secondsPerPx);
@@ -18624,7 +18710,7 @@ var renderTimeSliderCurrentTimeBox = function renderTimeSliderCurrentTimeBox(ctx
18624
18710
  selectedPx = _map2[0];
18625
18711
 
18626
18712
  ctx.clearRect(0, 0, width, height);
18627
- drawNewCurrentTimeBox(ctx, selected, selectedPx, scale, theme);
18713
+ drawNewCurrentTimeBox(ctx, selected, selectedPx, scale, theme, isAutoUpdating);
18628
18714
  };
18629
18715
 
18630
18716
  var TimeSliderCurrentTimeBox = function TimeSliderCurrentTimeBox(_ref) {
@@ -18639,6 +18725,7 @@ var TimeSliderCurrentTimeBox = function TimeSliderCurrentTimeBox(_ref) {
18639
18725
  dataStartTime = _ref.dataStartTime,
18640
18726
  dataEndTime = _ref.dataEndTime,
18641
18727
  unfilteredSelectedTime = _ref.unfilteredSelectedTime,
18728
+ isAutoUpdating = _ref.isAutoUpdating,
18642
18729
  onSetNewDate = _ref.onSetNewDate,
18643
18730
  setUnfilteredSelectedTime = _ref.setUnfilteredSelectedTime;
18644
18731
  var TIME_BOX_WIDTH = 140;
@@ -18723,12 +18810,12 @@ var TimeSliderCurrentTimeBox = function TimeSliderCurrentTimeBox(_ref) {
18723
18810
  },
18724
18811
  onRenderCanvas: function onRenderCanvas(ctx, width, height) {
18725
18812
  setCanvasWidth(width);
18726
- renderTimeSliderCurrentTimeBox(ctx, theme, width, height, centerTime, selectedTime, secondsPerPx, scale);
18813
+ renderTimeSliderCurrentTimeBox(ctx, theme, width, height, centerTime, selectedTime, secondsPerPx, scale, isAutoUpdating);
18727
18814
  }
18728
18815
  }));
18729
18816
  };
18730
18817
 
18731
- var useTimeSliderKeyBoardControl = function useTimeSliderKeyBoardControl(mapIsActive, isVisible, onToggleTimeSlider) {
18818
+ var useToggleTimesliderVisibility = function useToggleTimesliderVisibility(mapIsActive, isVisible, onToggleTimeSlider) {
18732
18819
  React.useEffect(function () {
18733
18820
  var handleKeyDown = function handleKeyDown(event) {
18734
18821
  var target = event.target;
@@ -18745,6 +18832,34 @@ var useTimeSliderKeyBoardControl = function useTimeSliderKeyBoardControl(mapIsAc
18745
18832
  }, [mapIsActive, isVisible, onToggleTimeSlider]);
18746
18833
  };
18747
18834
 
18835
+ var useMoveTimeWithKeyboard = function useMoveTimeWithKeyboard(mapIsActive, timeStep, dataStartTime, dataEndTime, onSetNewDate, onSetCenterTime, selectedTime, currentTime) {
18836
+ var curTime = selectedTime !== undefined ? moment.unix(selectedTime).toISOString() : moment.utc().toISOString();
18837
+ React.useEffect(function () {
18838
+ var handleKeyDown = function handleKeyDown(event) {
18839
+ if (event.key === 'Home' && mapIsActive) {
18840
+ handleSetNowEvent(timeStep, dataStartTime, dataEndTime, currentTime, onSetNewDate, onSetCenterTime);
18841
+ }
18842
+
18843
+ if (event.ctrlKey && dataStartTime && dataEndTime && mapIsActive) {
18844
+ switch (event.code) {
18845
+ case 'ArrowLeft':
18846
+ setPreviousTimeStep(timeStep, curTime, dataStartTime, onSetNewDate);
18847
+ break;
18848
+
18849
+ case 'ArrowRight':
18850
+ setNextTimeStep(timeStep, curTime, dataEndTime, onSetNewDate);
18851
+ break;
18852
+ }
18853
+ }
18854
+ };
18855
+
18856
+ document.addEventListener('keydown', handleKeyDown);
18857
+ return function () {
18858
+ document.removeEventListener('keydown', handleKeyDown);
18859
+ };
18860
+ }, [curTime, currentTime, dataEndTime, dataStartTime, mapIsActive, onSetCenterTime, onSetNewDate, timeStep]);
18861
+ };
18862
+
18748
18863
  var defaultProps = {
18749
18864
  centerTime: moment.utc().startOf('day').hours(12).unix(),
18750
18865
  secondsPerPx: 5,
@@ -18761,9 +18876,17 @@ var TimeSlider = function TimeSlider(_ref) {
18761
18876
  mapIsActive = _ref$mapIsActive === void 0 ? true : _ref$mapIsActive,
18762
18877
  _ref$isVisible = _ref.isVisible,
18763
18878
  isVisible = _ref$isVisible === void 0 ? true : _ref$isVisible,
18879
+ timeStep = _ref.timeStep,
18880
+ dataStartTime = _ref.dataStartTime,
18881
+ dataEndTime = _ref.dataEndTime,
18882
+ selectedTime = _ref.selectedTime,
18883
+ currentTime = _ref.currentTime,
18884
+ onSetNewDate = _ref.onSetNewDate,
18885
+ onSetCenterTime = _ref.onSetCenterTime,
18764
18886
  _ref$onToggleTimeSlid = _ref.onToggleTimeSlider,
18765
18887
  onToggleTimeSlider = _ref$onToggleTimeSlid === void 0 ? function () {} : _ref$onToggleTimeSlid;
18766
- useTimeSliderKeyBoardControl(mapIsActive, isVisible, onToggleTimeSlider);
18888
+ useToggleTimesliderVisibility(mapIsActive, isVisible, onToggleTimeSlider);
18889
+ useMoveTimeWithKeyboard(mapIsActive, timeStep, dataStartTime, dataEndTime, onSetNewDate, onSetCenterTime, selectedTime, currentTime);
18767
18890
 
18768
18891
  var _React$useState = React.useState(defaultProps.selectedTime),
18769
18892
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -18778,7 +18901,7 @@ var TimeSlider = function TimeSlider(_ref) {
18778
18901
  container: true,
18779
18902
  sx: {
18780
18903
  display: 'grid',
18781
- gridTemplateColumns: 'minmax(100px, 210px) minmax(66%, 1fr) minmax(40px, 40px)',
18904
+ gridTemplateColumns: '120px 1fr 40px',
18782
18905
  gridTemplateRows: TIME_SLIDER_LEGEND_HEIGHT,
18783
18906
  paddingBottom: 1,
18784
18907
  alignItems: 'center',
@@ -18804,7 +18927,6 @@ var TimeSlider = function TimeSlider(_ref) {
18804
18927
  item: true
18805
18928
  }, legend || /*#__PURE__*/React.createElement(TimeSliderLegend, Object.assign({}, defaultProps, {
18806
18929
  mapId: mapId,
18807
- mapIsActive: mapIsActive,
18808
18930
  unfilteredSelectedTime: unfilteredSelectedTime,
18809
18931
  setUnfilteredSelectedTime: setUnfilteredSelectedTime
18810
18932
  })), ' '), /*#__PURE__*/React.createElement(Grid, {
@@ -18845,14 +18967,14 @@ var TimeSlider = function TimeSlider(_ref) {
18845
18967
  * Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
18846
18968
  * Copyright 2020 - Finnish Meteorological Institute (FMI)
18847
18969
  * */
18848
- var connectRedux$3 = connect(function (store, props) {
18970
+ var connectRedux$1 = connect(function (store, props) {
18849
18971
  return {
18850
18972
  isAutoUpdating: isAutoUpdating(store, props.mapId)
18851
18973
  };
18852
18974
  }, {
18853
18975
  toggleAutoUpdate: mapActions$1.toggleAutoUpdate
18854
18976
  });
18855
- var AutoUpdateButtonConnectComponent = connectRedux$3(function (_ref) {
18977
+ var AutoUpdateButtonConnectComponent = connectRedux$1(function (_ref) {
18856
18978
  var mapId = _ref.mapId,
18857
18979
  isAutoUpdating = _ref.isAutoUpdating,
18858
18980
  toggleAutoUpdate = _ref.toggleAutoUpdate;
@@ -18871,7 +18993,7 @@ var AutoUpdateButtonConnectComponent = connectRedux$3(function (_ref) {
18871
18993
  disabled: false
18872
18994
  });
18873
18995
  });
18874
- var AutoUpdateButtonConnect = connectRedux$3(AutoUpdateButtonConnectComponent);
18996
+ var AutoUpdateButtonConnect = connectRedux$1(AutoUpdateButtonConnectComponent);
18875
18997
 
18876
18998
  /* *
18877
18999
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -18946,26 +19068,15 @@ var TimeStepButtonComponent = function TimeStepButtonComponent(_ref) {
18946
19068
  var activeLayerTimeDimension = useSelector(function (store) {
18947
19069
  return getLayerTimeDimension(store, activeLayerId);
18948
19070
  });
18949
-
18950
- var onToggleTimestepAuto = function onToggleTimestepAuto() {
18951
- var newTimestepAuto = !isTimestepAuto$1;
18952
-
18953
- if (newTimestepAuto) {
18954
- var timeStepFromLayer = getActiveLayerTimeStep(activeLayerTimeDimension);
18955
-
18956
- if (timeStepFromLayer) {
18957
- dispatch(mapActions$1.setTimeStep({
18958
- mapId: mapId,
18959
- timeStep: timeStepFromLayer
18960
- }));
18961
- }
18962
- }
18963
-
19071
+ var timeStepFromLayer = getActiveLayerTimeStep(activeLayerTimeDimension);
19072
+ var onToggleTimestepAuto = React.useCallback(function () {
18964
19073
  dispatch(mapActions$1.toggleTimestepAuto({
18965
19074
  mapId: mapId,
18966
- timestepAuto: newTimestepAuto
19075
+ timestepAuto: !isTimestepAuto$1,
19076
+ origin: MapActionOrigin.map
18967
19077
  }));
18968
- };
19078
+ }, [dispatch, isTimestepAuto$1, mapId]);
19079
+ var activeTimeStep = isTimestepAuto$1 && timeStepFromLayer ? timeStepFromLayer : timeStep;
18969
19080
 
18970
19081
  var onSetTimeStep = function onSetTimeStep(timeStep) {
18971
19082
  dispatch(mapActions$1.setTimeStep({
@@ -18975,11 +19086,12 @@ var TimeStepButtonComponent = function TimeStepButtonComponent(_ref) {
18975
19086
  };
18976
19087
 
18977
19088
  return /*#__PURE__*/React.createElement(TimeStepButton, {
18978
- timeStep: timeStep,
19089
+ timeStep: activeTimeStep,
18979
19090
  onChangeTimeStep: onSetTimeStep,
18980
19091
  disabled: isAnimating$1,
18981
19092
  onToggleTimestepAuto: onToggleTimestepAuto,
18982
- isTimestepAuto: Boolean(isTimestepAuto$1)
19093
+ isTimestepAuto: Boolean(isTimestepAuto$1) && Boolean(timeStepFromLayer),
19094
+ timeStepFromLayer: timeStepFromLayer
18983
19095
  });
18984
19096
  };
18985
19097
 
@@ -19129,11 +19241,6 @@ var AnimationLengthButtonConnect = function AnimationLengthButtonConnect(_ref) {
19129
19241
  return getAnimationEndTime$1(store, mapId);
19130
19242
  });
19131
19243
  var currentDiffInMinutes = moment(animationEndTime).diff(moment(animationStartTime), 'minutes');
19132
- var currentLength = Object.values(AnimationLength).map(function (val) {
19133
- return Number(val);
19134
- }).find(function (val) {
19135
- return val >= currentDiffInMinutes;
19136
- });
19137
19244
 
19138
19245
  var handlechangeAnimationLength = function handlechangeAnimationLength(length) {
19139
19246
  var animationEndTime = moment(animationStartTime).add(length, 'minutes').toISOString();
@@ -19145,9 +19252,8 @@ var AnimationLengthButtonConnect = function AnimationLengthButtonConnect(_ref) {
19145
19252
 
19146
19253
  return /*#__PURE__*/React.createElement(AnimationLengthButton, {
19147
19254
  disabled: isAnimating$1,
19148
- animationLength: currentLength || Number(AnimationLength.Hours24),
19149
- onChangeAnimationLength: handlechangeAnimationLength,
19150
- animationLengthInMinutes: currentDiffInMinutes
19255
+ animationLength: currentDiffInMinutes || Number(AnimationLength.Hours24),
19256
+ onChangeAnimationLength: handlechangeAnimationLength
19151
19257
  });
19152
19258
  };
19153
19259
 
@@ -19306,56 +19412,45 @@ var TimeSliderButtonsConnect = function TimeSliderButtonsConnect(_ref) {
19306
19412
  });
19307
19413
  };
19308
19414
 
19309
- var connectRedux$2 = connect(function (store, props) {
19310
- return {
19311
- layers: getMapLayers(store, props.mapId),
19312
- dimensions: getMapDimensions(store, props.mapId),
19313
- scale: getMapTimeSliderScale(store, props.mapId),
19314
- centerTime: getMapTimeSliderCenterTime(store, props.mapId),
19315
- secondsPerPx: getMapTimeSliderSecondsPerPx(store, props.mapId),
19316
- dataScaleToSecondsPerPx: getMapTimeSliderDataScaleToSecondsPerPx(store, props.mapId),
19317
- isAnimating: isAnimating(store, props.mapId),
19318
- timeStep: getMapTimeStep(store, props.mapId),
19319
- isTimeSliderHoverOn: isTimeSliderHoverOn(store, props.mapId),
19320
- timeValue: getTime(getSynchronizationGroupStore(store), props.sourceId),
19321
- animationStartTime: getAnimationStartTime(store, props.mapId),
19322
- animationEndTime: getAnimationEndTime$1(store, props.mapId),
19323
- activeWindowId: getActiveWindowId(store),
19324
- unfilteredSelectedTime: getTimeSliderUnfilteredSelectedTime(store, props.mapId)
19325
- };
19326
- }, {
19327
- setTimeSliderUnfilteredSelectedTime: mapActions$1.setTimeSliderUnfilteredSelectedTime,
19328
- stopMapAnimation: mapActions$1.mapStopAnimation,
19329
- setTime: genericActions.setTime,
19330
- mapSetTimeSliderCenterTime: mapActions$1.setTimeSliderCenterTime,
19331
- mapSetTimeSliderSecondsPerPx: mapActions$1.setTimeSliderSecondsPerPx,
19332
- setAnimationStartTime: mapActions$1.setAnimationStartTime,
19333
- setAnimationEndTime: mapActions$1.setAnimationEndTime
19334
- });
19335
-
19336
19415
  var TimeSliderLegendConnect = function TimeSliderLegendConnect(_ref) {
19337
19416
  var sourceId = _ref.sourceId,
19338
- mapId = _ref.mapId,
19339
- dimensions = _ref.dimensions,
19340
- scale = _ref.scale,
19341
- centerTime = _ref.centerTime,
19342
- secondsPerPx = _ref.secondsPerPx,
19343
- dataScaleToSecondsPerPx = _ref.dataScaleToSecondsPerPx,
19344
- layers = _ref.layers,
19345
- isAnimating = _ref.isAnimating,
19346
- timeStep = _ref.timeStep,
19347
- isTimeSliderHoverOn = _ref.isTimeSliderHoverOn,
19348
- animationStartTime = _ref.animationStartTime,
19349
- animationEndTime = _ref.animationEndTime,
19350
- activeWindowId = _ref.activeWindowId,
19351
- stopMapAnimation = _ref.stopMapAnimation,
19352
- setTime = _ref.setTime,
19353
- mapSetTimeSliderCenterTime = _ref.mapSetTimeSliderCenterTime,
19354
- mapSetTimeSliderSecondsPerPx = _ref.mapSetTimeSliderSecondsPerPx,
19355
- setAnimationStartTime = _ref.setAnimationStartTime,
19356
- setAnimationEndTime = _ref.setAnimationEndTime,
19357
- unfilteredSelectedTime = _ref.unfilteredSelectedTime,
19358
- setTimeSliderUnfilteredSelectedTime = _ref.setTimeSliderUnfilteredSelectedTime;
19417
+ mapId = _ref.mapId;
19418
+ var layers = useSelector(function (store) {
19419
+ return getMapLayers(store, mapId);
19420
+ });
19421
+ var dimensions = useSelector(function (store) {
19422
+ return getMapDimensions(store, mapId);
19423
+ });
19424
+ var scale = useSelector(function (store) {
19425
+ return getMapTimeSliderScale(store, mapId);
19426
+ });
19427
+ var centerTime = useSelector(function (store) {
19428
+ return getMapTimeSliderCenterTime(store, mapId);
19429
+ });
19430
+ var secondsPerPx = useSelector(function (store) {
19431
+ return getMapTimeSliderSecondsPerPx(store, mapId);
19432
+ });
19433
+ var dataScaleToSecondsPerPx = useSelector(function (store) {
19434
+ return getMapTimeSliderDataScaleToSecondsPerPx(store, mapId);
19435
+ });
19436
+ var isAnimating$1 = useSelector(function (store) {
19437
+ return isAnimating(store, mapId);
19438
+ });
19439
+ var timeStep = useSelector(function (store) {
19440
+ return getMapTimeStep(store, mapId);
19441
+ });
19442
+ var isTimeSliderHoverOn$1 = useSelector(function (store) {
19443
+ return isTimeSliderHoverOn(store, mapId);
19444
+ });
19445
+ var animationStartTime = useSelector(function (store) {
19446
+ return getAnimationStartTime(store, mapId);
19447
+ });
19448
+ var animationEndTime = useSelector(function (store) {
19449
+ return getAnimationEndTime$1(store, mapId);
19450
+ });
19451
+ var unfilteredSelectedTime = useSelector(function (store) {
19452
+ return getTimeSliderUnfilteredSelectedTime(store, mapId);
19453
+ });
19359
19454
 
19360
19455
  var _getTimeBounds = getTimeBounds(dimensions),
19361
19456
  selectedTime = _getTimeBounds.selectedTime;
@@ -19367,7 +19462,7 @@ var TimeSliderLegendConnect = function TimeSliderLegendConnect(_ref) {
19367
19462
  dataStartTime = _getDataLimitsFromLay2[0],
19368
19463
  dataEndTime = _getDataLimitsFromLay2[1];
19369
19464
 
19370
- var mapIsActive = mapId === activeWindowId;
19465
+ var dispatch = useDispatch();
19371
19466
  return /*#__PURE__*/React.createElement(TimeSliderLegend, {
19372
19467
  mapId: mapId,
19373
19468
  centerTime: centerTime,
@@ -19376,76 +19471,64 @@ var TimeSliderLegendConnect = function TimeSliderLegendConnect(_ref) {
19376
19471
  selectedTime: selectedTime,
19377
19472
  scale: scale,
19378
19473
  currentTime: currentTime,
19379
- isTimeSliderHoverOn: isTimeSliderHoverOn,
19474
+ isTimeSliderHoverOn: isTimeSliderHoverOn$1,
19380
19475
  dataStartTime: dataStartTime,
19381
19476
  dataEndTime: dataEndTime,
19382
19477
  animationStartTime: animationStartTime,
19383
19478
  animationEndTime: animationEndTime,
19384
19479
  timeStep: timeStep,
19385
- mapIsActive: mapIsActive,
19386
19480
  unfilteredSelectedTime: unfilteredSelectedTime || selectedTime,
19387
19481
  setUnfilteredSelectedTime: function setUnfilteredSelectedTime(timeSliderUnfilteredSelectedTime) {
19388
- if (setTimeSliderUnfilteredSelectedTime) setTimeSliderUnfilteredSelectedTime({
19482
+ dispatch(mapActions$1.setTimeSliderUnfilteredSelectedTime({
19389
19483
  timeSliderUnfilteredSelectedTime: timeSliderUnfilteredSelectedTime,
19390
19484
  mapId: mapId
19391
- });
19485
+ }));
19392
19486
  },
19393
19487
  onSetNewDate: function onSetNewDate(newDate) {
19394
- if (isAnimating) {
19395
- stopMapAnimation({
19488
+ if (isAnimating$1) {
19489
+ dispatch(mapActions$1.mapStopAnimation({
19396
19490
  mapId: mapId
19397
- });
19491
+ }));
19398
19492
  }
19399
19493
 
19400
- setTime({
19494
+ dispatch(genericActions.setTime({
19401
19495
  sourceId: sourceId,
19402
19496
  origin: 'TimeSliderConnect, 139',
19403
19497
  value: handleMomentISOString(newDate)
19404
- });
19498
+ }));
19405
19499
  },
19406
19500
  onSetCenterTime: function onSetCenterTime(newTime) {
19407
- mapSetTimeSliderCenterTime({
19501
+ dispatch(mapActions$1.setTimeSliderCenterTime({
19408
19502
  mapId: mapId,
19409
19503
  timeSliderCenterTime: newTime
19410
- });
19504
+ }));
19411
19505
  },
19412
19506
  onZoom: function onZoom(newSecondsPerPx, newCenterTime) {
19413
- mapSetTimeSliderSecondsPerPx({
19507
+ dispatch(mapActions$1.setTimeSliderSecondsPerPx({
19414
19508
  mapId: mapId,
19415
19509
  timeSliderSecondsPerPx: newSecondsPerPx
19416
- });
19417
- mapSetTimeSliderCenterTime({
19510
+ }));
19511
+ dispatch(mapActions$1.setTimeSliderCenterTime({
19418
19512
  mapId: mapId,
19419
19513
  timeSliderCenterTime: newCenterTime
19420
- });
19514
+ }));
19421
19515
  },
19422
19516
  onSetAnimationStartTime: function onSetAnimationStartTime(animationStartTime) {
19423
- setAnimationStartTime({
19517
+ dispatch(mapActions$1.setAnimationStartTime({
19424
19518
  mapId: mapId,
19425
19519
  animationStartTime: animationStartTime
19426
- });
19520
+ }));
19427
19521
  },
19428
19522
  onSetAnimationEndTime: function onSetAnimationEndTime(animationEndTime) {
19429
- setAnimationEndTime({
19523
+ dispatch(mapActions$1.setAnimationEndTime({
19430
19524
  mapId: mapId,
19431
19525
  animationEndTime: animationEndTime
19432
- });
19526
+ }));
19433
19527
  }
19434
19528
  });
19435
19529
  };
19436
- /**
19437
- * TimeSliderLegend component connected to the store displaying a legend of the time slider
19438
- *
19439
- * Expects the following props:
19440
- * @param {string} mapId mapId: string - Id of the map
19441
- * @example
19442
- * ``` <TimeSliderLegendConnect mapId={mapId} />```
19443
- */
19444
19530
 
19445
-
19446
- var TimeSliderLegendConnect$1 = connectRedux$2(TimeSliderLegendConnect);
19447
-
19448
- var connectRedux$1 = connect(function (store, props) {
19531
+ var connectRedux = connect(function (store, props) {
19449
19532
  return {
19450
19533
  layers: getMapLayers(store, props.mapId),
19451
19534
  dimensions: getMapDimensions(store, props.mapId),
@@ -19454,6 +19537,7 @@ var connectRedux$1 = connect(function (store, props) {
19454
19537
  scale: getMapTimeSliderScale(store, props.mapId),
19455
19538
  timeStep: getMapTimeStep(store, props.mapId),
19456
19539
  isAnimating: isAnimating(store, props.mapId),
19540
+ isAutoUpdating: isAutoUpdating(store, props.mapId),
19457
19541
  unfilteredSelectedTime: getTimeSliderUnfilteredSelectedTime(store, props.mapId)
19458
19542
  };
19459
19543
  }, {
@@ -19472,6 +19556,7 @@ var TimeSliderCurrentTimeBoxConnectComponent = function TimeSliderCurrentTimeBox
19472
19556
  layers = _ref.layers,
19473
19557
  timeStep = _ref.timeStep,
19474
19558
  isAnimating = _ref.isAnimating,
19559
+ isAutoUpdating = _ref.isAutoUpdating,
19475
19560
  stopMapAnimation = _ref.stopMapAnimation,
19476
19561
  unfilteredSelectedTime = _ref.unfilteredSelectedTime,
19477
19562
  setTimeSliderUnfilteredSelectedTime = _ref.setTimeSliderUnfilteredSelectedTime,
@@ -19493,6 +19578,7 @@ var TimeSliderCurrentTimeBoxConnectComponent = function TimeSliderCurrentTimeBox
19493
19578
  dataStartTime: dataStartTime,
19494
19579
  dataEndTime: dataEndTime,
19495
19580
  timeStep: timeStep,
19581
+ isAutoUpdating: isAutoUpdating,
19496
19582
  unfilteredSelectedTime: unfilteredSelectedTime || selectedTime,
19497
19583
  setUnfilteredSelectedTime: function setUnfilteredSelectedTime(timeSliderUnfilteredSelectedTime) {
19498
19584
  if (setTimeSliderUnfilteredSelectedTime) setTimeSliderUnfilteredSelectedTime({
@@ -19516,56 +19602,56 @@ var TimeSliderCurrentTimeBoxConnectComponent = function TimeSliderCurrentTimeBox
19516
19602
  });
19517
19603
  };
19518
19604
 
19519
- var TimeSliderCurrentTimeBoxConnect = connectRedux$1(TimeSliderCurrentTimeBoxConnectComponent);
19605
+ var TimeSliderCurrentTimeBoxConnect = connectRedux(TimeSliderCurrentTimeBoxConnectComponent);
19520
19606
 
19521
- /* *
19522
- * Licensed under the Apache License, Version 2.0 (the "License");
19523
- * you may not use this file except in compliance with the License.
19524
- * You may obtain a copy of the License at
19525
- *
19526
- * http://www.apache.org/licenses/LICENSE-2.0
19527
- *
19528
- * Unless required by applicable law or agreed to in writing, software
19529
- * distributed under the License is distributed on an "AS IS" BASIS,
19530
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19531
- * See the License for the specific language governing permissions and
19532
- * limitations under the License.
19533
- *
19534
- * Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
19535
- * Copyright 2020 - Finnish Meteorological Institute (FMI)
19536
- * */
19537
- var connectRedux = connect(function (store, props) {
19538
- return {
19539
- isTimeSliderHoverOn: isTimeSliderHoverOn(store, props.mapId),
19540
- activeWindowId: getActiveWindowId(store),
19541
- isTimeSliderVisible: isTimeSliderVisible(store, props.mapId)
19542
- };
19543
- }, {
19544
- toggleTimeSliderHover: mapActions$1.toggleTimeSliderHover,
19545
- toggleTimeSliderIsVisible: mapActions$1.toggleTimeSliderIsVisible
19546
- });
19607
+ var useUpdateTimestep = function useUpdateTimestep(mapId) {
19608
+ var activeLayerId = useSelector(function (store) {
19609
+ return getActiveLayerId(store, mapId);
19610
+ });
19611
+ var isTimeStepAuto = useSelector(function (store) {
19612
+ return isTimestepAuto(store, mapId);
19613
+ });
19614
+ var timeDimension = useSelector(function (store) {
19615
+ return getLayerTimeDimension(store, activeLayerId);
19616
+ });
19617
+ var dispatch = useDispatch();
19618
+ React.useEffect(function () {
19619
+ if (isTimeStepAuto) {
19620
+ var timeStep = getActiveLayerTimeStep(timeDimension);
19621
+ dispatch(mapActions$1.setTimeStep({
19622
+ mapId: mapId,
19623
+ timeStep: timeStep
19624
+ }));
19625
+ }
19626
+ }, [activeLayerId, dispatch, isTimeStepAuto, mapId, timeDimension]);
19627
+ };
19547
19628
 
19548
- var ConnectedTimeSlider = function ConnectedTimeSlider(_ref) {
19629
+ var TimeSliderConnect = function TimeSliderConnect(_ref) {
19549
19630
  var sourceId = _ref.sourceId,
19550
19631
  mapId = _ref.mapId,
19551
- isTimeSliderHoverOn = _ref.isTimeSliderHoverOn,
19552
- toggleTimeSliderHover = _ref.toggleTimeSliderHover,
19553
- activeWindowId = _ref.activeWindowId,
19554
- isTimeSliderVisible = _ref.isTimeSliderVisible,
19555
- toggleTimeSliderIsVisible = _ref.toggleTimeSliderIsVisible,
19556
19632
  _ref$isAlwaysVisible = _ref.isAlwaysVisible,
19557
19633
  isAlwaysVisible = _ref$isAlwaysVisible === void 0 ? false : _ref$isAlwaysVisible;
19558
- // don't use redux state if isAlwaysVisible
19559
- var isVisible = isAlwaysVisible || isTimeSliderVisible;
19560
- var mapIsActive = mapId === activeWindowId; // TODO: move keyboard logic to TimeSlider.tsx
19634
+ var isTimeSliderHoverOn$1 = useSelector(function (store) {
19635
+ return isTimeSliderHoverOn(store, mapId);
19636
+ });
19637
+ var activeWindowId = useSelector(function (store) {
19638
+ return getActiveWindowId(store);
19639
+ });
19640
+ var isTimeSliderVisible$1 = useSelector(function (store) {
19641
+ return isTimeSliderVisible(store, mapId);
19642
+ }); // don't use redux state if isAlwaysVisible
19643
+
19644
+ var isVisible = isAlwaysVisible || isTimeSliderVisible$1;
19645
+ var mapIsActive = mapId === activeWindowId;
19646
+ var dispatch = useDispatch(); // TODO: move keyboard logic to TimeSlider.tsx
19561
19647
 
19562
19648
  React.useEffect(function () {
19563
19649
  var handleKeyDown = function handleKeyDown(event) {
19564
19650
  if (event.ctrlKey && event.altKey && event.key === 'h') {
19565
- toggleTimeSliderHover({
19651
+ dispatch(mapActions$1.toggleTimeSliderHover({
19566
19652
  mapId: mapId,
19567
- isTimeSliderHoverOn: !isTimeSliderHoverOn
19568
- });
19653
+ isTimeSliderHoverOn: !isTimeSliderHoverOn$1
19654
+ }));
19569
19655
  }
19570
19656
  };
19571
19657
 
@@ -19573,17 +19659,64 @@ var ConnectedTimeSlider = function ConnectedTimeSlider(_ref) {
19573
19659
  return function () {
19574
19660
  document.removeEventListener('keydown', handleKeyDown);
19575
19661
  };
19576
- }, [mapId, isTimeSliderHoverOn, toggleTimeSliderHover]);
19662
+ }, [mapId, isTimeSliderHoverOn$1, dispatch]);
19577
19663
 
19578
19664
  var onToggleTimeSliderVisibility = function onToggleTimeSliderVisibility(isTimeSliderVisible) {
19579
- toggleTimeSliderIsVisible({
19665
+ dispatch(mapActions$1.toggleTimeSliderIsVisible({
19580
19666
  mapId: mapId,
19581
19667
  isTimeSliderVisible: isTimeSliderVisible,
19582
19668
  origin: MapActionOrigin.map
19583
- });
19669
+ }));
19584
19670
  };
19585
19671
 
19672
+ var timeStep = useSelector(function (store) {
19673
+ return getMapTimeStep(store, mapId);
19674
+ });
19675
+ var layers = useSelector(function (store) {
19676
+ return getMapLayers(store, mapId);
19677
+ });
19678
+
19679
+ var _getDataLimitsFromLay = getDataLimitsFromLayers(layers),
19680
+ _getDataLimitsFromLay2 = _slicedToArray(_getDataLimitsFromLay, 2),
19681
+ dataStartTime = _getDataLimitsFromLay2[0],
19682
+ dataEndTime = _getDataLimitsFromLay2[1];
19683
+
19684
+ var isAnimating$1 = useSelector(function (store) {
19685
+ return isAnimating(store, mapId);
19686
+ });
19687
+ var dimensions = useSelector(function (store) {
19688
+ return getMapDimensions(store, mapId);
19689
+ });
19690
+
19691
+ var _getTimeBounds = getTimeBounds(dimensions),
19692
+ selectedTime = _getTimeBounds.selectedTime;
19693
+
19694
+ useUpdateTimestep(mapId);
19586
19695
  return /*#__PURE__*/React.createElement(TimeSlider, {
19696
+ currentTime: moment.utc().unix(),
19697
+ timeStep: timeStep,
19698
+ dataStartTime: dataStartTime,
19699
+ dataEndTime: dataEndTime,
19700
+ onSetNewDate: function onSetNewDate(newDate) {
19701
+ if (isAnimating$1) {
19702
+ dispatch(mapActions$1.mapStopAnimation({
19703
+ mapId: mapId
19704
+ }));
19705
+ }
19706
+
19707
+ dispatch(genericActions.setTime({
19708
+ sourceId: sourceId,
19709
+ value: handleMomentISOString(newDate),
19710
+ origin: ''
19711
+ }));
19712
+ },
19713
+ onSetCenterTime: function onSetCenterTime(newTime) {
19714
+ dispatch(mapActions$1.setTimeSliderCenterTime({
19715
+ mapId: mapId,
19716
+ timeSliderCenterTime: newTime
19717
+ }));
19718
+ },
19719
+ selectedTime: selectedTime,
19587
19720
  mapId: mapId,
19588
19721
  buttons: /*#__PURE__*/React.createElement(TimeSliderButtonsConnect, {
19589
19722
  mapId: mapId,
@@ -19593,7 +19726,7 @@ var ConnectedTimeSlider = function ConnectedTimeSlider(_ref) {
19593
19726
  mapId: mapId,
19594
19727
  sourceId: sourceId
19595
19728
  }),
19596
- legend: /*#__PURE__*/React.createElement(TimeSliderLegendConnect$1, {
19729
+ legend: /*#__PURE__*/React.createElement(TimeSliderLegendConnect, {
19597
19730
  mapId: mapId,
19598
19731
  sourceId: sourceId
19599
19732
  }),
@@ -19602,18 +19735,6 @@ var ConnectedTimeSlider = function ConnectedTimeSlider(_ref) {
19602
19735
  isVisible: isVisible
19603
19736
  });
19604
19737
  };
19605
- /**
19606
- * TimeSlider component with components connected to the store displaying the time slider
19607
- *
19608
- * Expects the following props:
19609
- * @param {string} mapId mapId: string - Id of the map
19610
- * @param {string} sourceId sourceId: string - Source Id of the timeslider
19611
- * @example
19612
- * ``` <TimeSliderConnect sourceId="timeslider-1" mapId={mapId} />```
19613
- */
19614
-
19615
-
19616
- var TimeSliderConnect = connectRedux(ConnectedTimeSlider);
19617
19738
 
19618
19739
  /* *
19619
19740
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26327,4 +26448,4 @@ var MapWarningProperties = function MapWarningProperties(_ref) {
26327
26448
  * */
26328
26449
  var mapActions = Object.assign(Object.assign(Object.assign({}, layerActions), mapActions$1), serviceActions);
26329
26450
 
26330
- export { AppWrapperConnect, ConfigurableMapConnect, CoreThemeProvider, CoreThemeStoreProvider, DockedLayerManagerConnect, HarmonieTempAndPrecipPreset, LayerManagerConnect, LayerManagerMapButtonConnect, LayerSelectConnect, Legend, LegendConnect, LegendMapButtonConnect, MapControls, MapView, MapViewConnect, MapViewLayer, MapWarningProperties, MultiDimensionSelectMapButtonsConnect, MultiMapMultiDimensionSelectConnect as MultiMapDimensionSelectConnect, MultiMapViewConnect, ReactMapView, ReactMapViewLayer, SnackbarWrapperConnect, SyncGroupViewerConnect, index as SyncGroups, TimeSliderConnect, ZoomControlConnect, ZoomControls, appActions, componentsLookUp, coreModuleConfig, dateFormat, defaultBbox, defaultConfigurations, filterLayers, filterMapPresets, filterNonTimeDimensions, filterServices, generateLayerId, generateMapId, generateTimesliderId, getDrawFunctionFromStore, getFirstTimeStepForLayerId, getInitialAppPresets, getLastTimeStepForLayerId, getNextTimeStepForLayerId, getPreviousTimeStepForLayerId, getWMJSDimensionForLayerAndDimension, getWMJSMapById, getWMJSTimeDimensionForLayerId, getWMLayerById, layerActions, reducer$7 as layerReducer, selectors$2 as layerSelectors, types$3 as layerTypes, mapActions, moduleConfig as mapModuleConfig, selectors as mapSelectors, types$2 as mapTypes, utils as mapUtils, parseBoolean, parseLayer, publicLayers, publicServices, registerDrawFunction, registerWMJSMap, registerWMLayer, snackbarActions, store, genericActions as syncGroupActions, synchronizationGroupConfig as synchronizationGroupModuleConfig, synchronizationGroupConfig as synchronizationGroupsConfig, testLayers, TimeSliderUtils as timeSliderUtils, uiActions, uiModuleConfig, selectors$1 as uiSelectors, types as uiTypes, unRegisterWMJSLayer, unRegisterWMJSMap, useSetupDialog };
26451
+ export { AppWrapperConnect, ConfigurableMapConnect, CoreThemeProvider, CoreThemeStoreProvider, DockedLayerManagerConnect, HarmonieTempAndPrecipPreset, LayerManager, LayerManagerConnect, LayerManagerMapButtonConnect, LayerSelectConnect, Legend, LegendConnect, LegendMapButtonConnect, MapControls, MapView, MapViewConnect, MapViewLayer, MapWarningProperties, MultiDimensionSelectMapButtonsConnect, MultiMapMultiDimensionSelectConnect as MultiMapDimensionSelectConnect, MultiMapViewConnect, ReactMapView, ReactMapViewLayer, SnackbarWrapperConnect, SyncGroupViewerConnect, index as SyncGroups, TimeSliderConnect, ZoomControlConnect, ZoomControls, appActions, componentsLookUp, coreModuleConfig, dateFormat, defaultBbox, defaultConfigurations, filterLayers, filterMapPresets, filterNonTimeDimensions, filterServices, generateLayerId, generateMapId, generateTimesliderId, getDrawFunctionFromStore, getFirstTimeStepForLayerId, getInitialAppPresets, getLastTimeStepForLayerId, getNextTimeStepForLayerId, getPreviousTimeStepForLayerId, getWMJSDimensionForLayerAndDimension, getWMJSMapById, getWMJSTimeDimensionForLayerId, getWMLayerById, layerActions, reducer$7 as layerReducer, selectors$2 as layerSelectors, types$3 as layerTypes, mapActions, moduleConfig as mapModuleConfig, selectors as mapSelectors, types$2 as mapTypes, utils as mapUtils, parseBoolean, parseLayer, publicLayers, publicServices, registerDrawFunction, registerWMJSMap, registerWMLayer, snackbarActions, store, genericActions as syncGroupActions, synchronizationGroupConfig as synchronizationGroupModuleConfig, synchronizationGroupConfig as synchronizationGroupsConfig, testLayers, timeSliderUtils, uiActions, uiModuleConfig, selectors$1 as uiSelectors, types as uiTypes, unRegisterWMJSLayer, unRegisterWMJSMap, useSetupDialog };