@opengeoweb/core 2.13.0 → 3.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.
Files changed (42) hide show
  1. package/index.esm.js +249 -209
  2. package/index.umd.js +305 -270
  3. package/lib/components/ConfigurableMap/ConfigurableMapConnect.d.ts +1 -0
  4. package/lib/components/LayerManager/AddLayersButton/AddLayersButton.d.ts +0 -2
  5. package/lib/components/LayerManager/AddLayersPopup/AddLayersPopup.d.ts +0 -2
  6. package/lib/components/LayerManager/BaseLayerRow/BaseLayers/BaseLayersConnect.d.ts +1 -0
  7. package/lib/components/LayerManager/LayerSelect/ServiceOptionsDialog/ServiceOptionsDialog.d.ts +0 -2
  8. package/lib/components/LayerManager/LayerSelect/ServicePopup/ServicePopup.d.ts +3 -1
  9. package/lib/components/LayerManager/LayerSelect/ServicePopup/ServicePopupConnect.d.ts +1 -0
  10. package/lib/components/Legend/LegendConnect.d.ts +1 -1
  11. package/lib/components/MapView/MapViewConnect.LayerChangeEnabledOpacity.stories.d.ts +2 -2
  12. package/lib/components/MapView/MapViewConnect.MapPin.stories.d.ts +4 -0
  13. package/lib/components/MapView/MapViewConnect.stories.d.ts +0 -1
  14. package/lib/components/MapWarning/MapWarningProperties.d.ts +16 -1
  15. package/lib/components/MultiMapDimensionSelect/DimensionSelectSlider.d.ts +1 -1
  16. package/lib/components/ReactMapView/ReactMapView.d.ts +1 -0
  17. package/lib/components/SyncGroups/SimpleTimeSliderConnect.d.ts +11 -1
  18. package/lib/components/TimeSlider/TimeSliderButtons/AutoUpdateButton/AutoUpdateButtonConnect.d.ts +8 -1
  19. package/lib/components/TimeSlider/TimeSliderButtons/PlayButton/PlayButtonConnect.d.ts +27 -2
  20. package/lib/components/TimeSlider/TimeSliderButtons/SpeedButton/SpeedButtonConnect.d.ts +2 -2
  21. package/lib/components/TimeSlider/TimeSliderConnect.d.ts +13 -1
  22. package/lib/components/TimeSlider/TimeSliderLegend/TimeSliderLegendConnect.d.ts +26 -1
  23. package/lib/components/TimeSlider/TimeSliderRail/TimeSliderRailConnect.d.ts +21 -2
  24. package/lib/components/TimeSlider/TimeSliderScaleSlider/TimeSliderScaleSliderConnect.d.ts +15 -1
  25. package/lib/components/WMSLoader/WMSLayerTree/WMSLayerTreeConnect.d.ts +14 -1
  26. package/lib/components/WMSLoader/services.d.ts +1 -0
  27. package/lib/index.d.ts +1 -0
  28. package/lib/store/layerSelect/types.d.ts +2 -0
  29. package/lib/store/mapStore/layers/reducer.d.ts +3 -1
  30. package/lib/store/mapStore/layers/selectors.d.ts +5 -5
  31. package/lib/store/mapStore/layers/types.d.ts +1 -0
  32. package/lib/store/mapStore/map/selectors.d.ts +4 -4
  33. package/lib/store/mapStore/map/types.d.ts +1 -0
  34. package/lib/store/mapStore/map/utils.d.ts +2 -1
  35. package/lib/store/mapStore/service/selectors.d.ts +2 -0
  36. package/lib/store/mapStore/service/types.d.ts +1 -0
  37. package/package.json +8 -7
  38. package/lib/components/CustomSwitch/CustomSwitch.d.ts +0 -3
  39. package/lib/components/CustomSwitch/CustomSwitch.spec.d.ts +0 -1
  40. package/lib/components/CustomSwitch/CustomSwitch.stories.d.ts +0 -7
  41. package/lib/components/CustomSwitch/index.d.ts +0 -1
  42. package/lib/components/MapView/MapViewConnect.DisableMapPin.stories.d.ts +0 -5
package/index.esm.js CHANGED
@@ -7,12 +7,13 @@ import _, { isEqual, debounce, throttle, range } from 'lodash';
7
7
  import { takeLatest, put, select, call, all, takeEvery } from 'redux-saga/effects';
8
8
  import { connect, useDispatch, useSelector, Provider } from 'react-redux';
9
9
  import { Tooltip, Paper, Typography, Grid, InputLabel, IconButton, Box, CircularProgress, List, ListSubheader, ListItem, ListItemText, Dialog, DialogTitle, DialogContent, DialogContentText, TextField, DialogActions, Button, MenuItem, FormControl, LinearProgress, InputAdornment, ListItemSecondaryAction, ListItemIcon, Checkbox, Switch, Slider, FormControlLabel, Popover, useMediaQuery, useTheme, SliderThumb } from '@mui/material';
10
- import { ToolButton, ToolContainerDraggable, TooltipSelect, AlertIcon, sliderStyles, tooltipContainerStyles, CustomSlider, ToggleMenu, ManagerButton, EnableButton, AlertBanner, ManagerDeleteButton, CustomToggleButton, useIsMounted } from '@opengeoweb/shared';
10
+ import { ToolButton, ToolContainerDraggable, TooltipSelect, AlertIcon, tooltipContainerStyles, sliderHeaderStyle, CustomSlider, ToggleMenu, ManagerButton, EnableButton, AlertBanner, ManagerDeleteButton, CustomToggleButton, useIsMounted } from '@opengeoweb/shared';
11
11
  import { Pause, Play, Cached, Add, Copy, Flag, DragHandle as DragHandle$1, Filter, Close, Search, Clear, ChevronLeft, ChevronRight, Edit, Delete, Home, Minus, Layers, Equalizer, Sort, Link, LinkOff, AutoUpdateActive, AutoUpdateInActive, TextIcon, FastForward, Options, SliderThumb as SliderThumb$1, List as List$1, ThemeWrapper, lightTheme } from '@opengeoweb/theme';
12
12
  import makeStyles from '@mui/styles/makeStyles';
13
13
  import { legendImageStore, WMImageEventType, getLegendGraphicURLForLayer, WMGetServiceFromStore, LayerType as LayerType$1, getMapImageStore, WMBBOX, debug, DebugType, WMJSMap, WMLayer } from '@opengeoweb/webmap';
14
14
  import { Sortable, ReactSortable } from 'react-sortablejs';
15
15
  import createStyles from '@mui/styles/createStyles';
16
+ import { FixedSizeList } from 'react-window';
16
17
  import withStyles from '@mui/styles/withStyles';
17
18
  import { debounce as debounce$1 } from 'throttle-debounce';
18
19
  import cloneDeep from 'lodash.clonedeep';
@@ -971,6 +972,8 @@ var createMap = function createMap(_ref) {
971
972
  activeMapPresetId = _ref$activeMapPresetI === void 0 ? null : _ref$activeMapPresetI,
972
973
  _ref$displayMapPin = _ref.displayMapPin,
973
974
  displayMapPin = _ref$displayMapPin === void 0 ? false : _ref$displayMapPin,
975
+ _ref$disableMapPin = _ref.disableMapPin,
976
+ disableMapPin = _ref$disableMapPin === void 0 ? false : _ref$disableMapPin,
974
977
  _ref$shouldShowZoomCo = _ref.shouldShowZoomControls,
975
978
  shouldShowZoomControls = _ref$shouldShowZoomCo === void 0 ? true : _ref$shouldShowZoomCo;
976
979
  return {
@@ -998,6 +1001,7 @@ var createMap = function createMap(_ref) {
998
1001
  isTimeSliderVisible: isTimeSliderVisible,
999
1002
  activeMapPresetId: activeMapPresetId,
1000
1003
  displayMapPin: displayMapPin,
1004
+ disableMapPin: disableMapPin,
1001
1005
  shouldShowZoomControls: shouldShowZoomControls
1002
1006
  };
1003
1007
  };
@@ -1662,6 +1666,17 @@ var slice$5 = createSlice({
1662
1666
  draft.availableBaseLayers.allIds.push(layer.id);
1663
1667
  });
1664
1668
  },
1669
+ setAvailableBaseLayers: function setAvailableBaseLayers(draft, action) {
1670
+ var layers = action.payload.layers;
1671
+ draft.availableBaseLayers.byId = {};
1672
+ draft.availableBaseLayers.allIds = []; // add new available baselayers
1673
+
1674
+ layers.forEach(function (layer) {
1675
+ if (layer.layerType !== LayerType.baseLayer || !layer.mapId) return;
1676
+ draft.availableBaseLayers.byId[layer.id] = createLayer(Object.assign({}, layer));
1677
+ draft.availableBaseLayers.allIds.push(layer.id);
1678
+ });
1679
+ },
1665
1680
  onUpdateLayerInformation: function onUpdateLayerInformation(draft, action) {
1666
1681
  var _action$payload11 = action.payload,
1667
1682
  layerStyle = _action$payload11.layerStyle,
@@ -1945,12 +1960,13 @@ var getLayerStyles = createSelector(getLayerFromService, function (layer) {
1945
1960
  * @returns {array} returnType: [] - array containing services
1946
1961
  */
1947
1962
 
1948
- var getServicesInArray = createSelector(servicesStore, function (store) {
1963
+ createSelector(servicesStore, function (store) {
1949
1964
  var services = store ? store.byId : {};
1950
1965
  var arrayOfServiceObjects = Object.keys(services).map(function (key) {
1951
1966
  return {
1952
1967
  name: services[key].name,
1953
- serviceUrl: services[key].serviceUrl
1968
+ serviceUrl: services[key].serviceUrl,
1969
+ isUserAddedService: services[key].isUserAddedService
1954
1970
  };
1955
1971
  });
1956
1972
  return arrayOfServiceObjects;
@@ -4150,11 +4166,11 @@ var getPinLocation = createSelector(getMapById, function (store) {
4150
4166
  * Example getDisableMapPin(store);
4151
4167
  * @param {object} store store: object - store object
4152
4168
  * @param {string} mapId mapId: string - Id of the map
4153
- * @returns {boolean} returnType: boolean or undefined
4169
+ * @returns {boolean} returnType: boolean
4154
4170
  */
4155
4171
 
4156
4172
  var getDisableMapPin = createSelector(getMapById, function (store) {
4157
- return store ? store.disableMapPin : undefined;
4173
+ return store ? store.disableMapPin : false;
4158
4174
  });
4159
4175
  /**
4160
4176
  * Returns the diplay map pin boolean for the current map
@@ -4369,7 +4385,8 @@ var slice = createSlice({
4369
4385
  serviceId = _action$payload.serviceId,
4370
4386
  serviceName = _action$payload.serviceName,
4371
4387
  serviceUrl = _action$payload.serviceUrl,
4372
- keywords = _action$payload.keywords;
4388
+ keywords = _action$payload.keywords,
4389
+ isUserAddedService = _action$payload.isUserAddedService;
4373
4390
 
4374
4391
  if (!draft.filters.activeServices.byId[serviceId]) {
4375
4392
  draft.filters.activeServices.byId[serviceId] = {};
@@ -4404,6 +4421,7 @@ var slice = createSlice({
4404
4421
  draft.filters.activeServices.byId[serviceId].serviceName = serviceName;
4405
4422
  draft.filters.activeServices.byId[serviceId].serviceUrl = serviceUrl;
4406
4423
  draft.filters.activeServices.byId[serviceId].enabled = true;
4424
+ draft.filters.activeServices.byId[serviceId].isUserAddedService = isUserAddedService;
4407
4425
  draft.filters.activeServices.byId[serviceId].keywordsPerService = keywords;
4408
4426
  if (!draft.filters.activeServices.allIds.includes(serviceId)) draft.filters.activeServices.allIds.push(serviceId);
4409
4427
  },
@@ -7307,7 +7325,7 @@ var LegendDialog = function LegendDialog(_ref) {
7307
7325
  }, "No layers")));
7308
7326
  };
7309
7327
 
7310
- var IS_LEGEND_OPEN_BY_DEFAULT = true;
7328
+ var IS_LEGEND_OPEN_BY_DEFAULT = false;
7311
7329
 
7312
7330
  var LegendConnectComponent = function LegendConnectComponent(_ref) {
7313
7331
  var _ref$showMapId = _ref.showMapId,
@@ -7349,7 +7367,7 @@ var LegendConnectComponent = function LegendConnectComponent(_ref) {
7349
7367
  });
7350
7368
 
7351
7369
  var onClose = function onClose() {
7352
- return dispatch(uiActions.setToggleOpenDialog({
7370
+ dispatch(uiActions.setToggleOpenDialog({
7353
7371
  type: legendType,
7354
7372
  setOpen: false,
7355
7373
  origin: MapActionOrigin.map,
@@ -8194,7 +8212,7 @@ var mergePresetsAndUserAddedServices = function mergePresetsAndUserAddedServices
8194
8212
  };
8195
8213
  var isService = function isService(param) {
8196
8214
  var serviceParam = param;
8197
- return !!((serviceParam === null || serviceParam === void 0 ? void 0 : serviceParam.id) && (serviceParam === null || serviceParam === void 0 ? void 0 : serviceParam.name) && (serviceParam === null || serviceParam === void 0 ? void 0 : serviceParam.url));
8215
+ return !!((serviceParam === null || serviceParam === void 0 ? void 0 : serviceParam.id) && (serviceParam === null || serviceParam === void 0 ? void 0 : serviceParam.name) && (serviceParam === null || serviceParam === void 0 ? void 0 : serviceParam.url), serviceParam === null || serviceParam === void 0 ? void 0 : serviceParam.isUserAddedService);
8198
8216
  };
8199
8217
 
8200
8218
  var getUserAddedServices = function getUserAddedServices() {
@@ -8203,6 +8221,13 @@ var getUserAddedServices = function getUserAddedServices() {
8203
8221
  var parsedData = JSON.parse(storedString);
8204
8222
 
8205
8223
  if (parsedData && _typeof(parsedData) === 'object') {
8224
+ Object.values(parsedData).forEach(function (value) {
8225
+ // eslint-disable-next-line no-prototype-builtins
8226
+ if (value.hasOwnProperty('url') && value.hasOwnProperty('id')) {
8227
+ var service = value;
8228
+ service.isUserAddedService = true;
8229
+ }
8230
+ });
8206
8231
  return Object.entries(parsedData).reduce(function (userServices, _ref) {
8207
8232
  var _ref2 = _slicedToArray(_ref, 2),
8208
8233
  serviceUrl = _ref2[0],
@@ -8229,39 +8254,26 @@ var _marked = /*#__PURE__*/regeneratorRuntime.mark(newServiceAddedSaga),
8229
8254
  _marked2 = /*#__PURE__*/regeneratorRuntime.mark(layerSelectServiceRemovedSaga),
8230
8255
  _marked3 = /*#__PURE__*/regeneratorRuntime.mark(rootSaga);
8231
8256
  function newServiceAddedSaga(capturedAction) {
8232
- var addedService, id, serviceUrl, name, keywords, services, findServiceName;
8257
+ var addedService, id, serviceUrl, name, isUserAddedService, keywords;
8233
8258
  return regeneratorRuntime.wrap(function newServiceAddedSaga$(_context) {
8234
8259
  while (1) {
8235
8260
  switch (_context.prev = _context.next) {
8236
8261
  case 0:
8237
8262
  addedService = capturedAction.payload;
8238
- id = addedService.id, serviceUrl = addedService.serviceUrl, name = addedService.name;
8263
+ id = addedService.id, serviceUrl = addedService.serviceUrl, name = addedService.name, isUserAddedService = addedService.isUserAddedService;
8239
8264
  keywords = addedService.layers.reduce(function (keywordAccumulator, layer) {
8240
8265
  return keywordAccumulator.concat(layer.path, layer.keywords);
8241
8266
  }, []);
8242
8267
  _context.next = 5;
8243
- return select(getServicesInArray);
8244
-
8245
- case 5:
8246
- services = _context.sent;
8247
-
8248
- findServiceName = function findServiceName() {
8249
- var foundService = services.find(function (object) {
8250
- return (object === null || object === void 0 ? void 0 : object.url) === serviceUrl;
8251
- });
8252
- if (foundService) return foundService.name;
8253
- return name;
8254
- };
8255
-
8256
- _context.next = 9;
8257
8268
  return put(layerSelectActions.addKeywordsAndActiveServices({
8258
8269
  serviceId: id,
8259
- serviceName: findServiceName(),
8270
+ serviceName: name,
8260
8271
  serviceUrl: serviceUrl,
8261
- keywords: keywords
8272
+ keywords: keywords,
8273
+ isUserAddedService: isUserAddedService
8262
8274
  }));
8263
8275
 
8264
- case 9:
8276
+ case 5:
8265
8277
  case "end":
8266
8278
  return _context.stop();
8267
8279
  }
@@ -8931,10 +8943,7 @@ var validateServiceUrl = function validateServiceUrl(url) {
8931
8943
  };
8932
8944
 
8933
8945
  var AddLayersPopup = function AddLayersPopup(_ref) {
8934
- var onClickService = _ref.onClickService,
8935
- onRenderTree = _ref.onRenderTree,
8936
- _ref$highlightedLayer = _ref.highlightedLayers,
8937
- highlightedLayers = _ref$highlightedLayer === void 0 ? [] : _ref$highlightedLayer,
8946
+ var onRenderTree = _ref.onRenderTree,
8938
8947
  _ref$preloadedService = _ref.preloadedServices,
8939
8948
  preloadedServices = _ref$preloadedService === void 0 ? preloadedDefaultMapServices : _ref$preloadedService,
8940
8949
  _ref$open = _ref.open,
@@ -9015,6 +9024,12 @@ var AddLayersPopup = function AddLayersPopup(_ref) {
9015
9024
  }
9016
9025
  };
9017
9026
 
9027
+ React.useEffect(function () {
9028
+ if (!isEqual(preloadedServices, services)) {
9029
+ setServices(preloadedServices);
9030
+ } // eslint-disable-next-line react-hooks/exhaustive-deps
9031
+
9032
+ }, [preloadedServices]);
9018
9033
  return /*#__PURE__*/React.createElement(Dialog, {
9019
9034
  fullWidth: true,
9020
9035
  maxWidth: "md",
@@ -9085,9 +9100,8 @@ var AddLayersPopup = function AddLayersPopup(_ref) {
9085
9100
  item: true,
9086
9101
  xs: 8
9087
9102
  }, onRenderTree ? onRenderTree(activeService) : /*#__PURE__*/React.createElement(WMSLayerTreeConnect, {
9103
+ mapId: "",
9088
9104
  service: activeService,
9089
- onClickLayer: onClickService,
9090
- highlightedLayers: highlightedLayers,
9091
9105
  layerType: layerType
9092
9106
  }))))), /*#__PURE__*/React.createElement(DialogActions, null, /*#__PURE__*/React.createElement(Button, {
9093
9107
  onClick: handleClose,
@@ -9114,12 +9128,9 @@ var styles$2 = {
9114
9128
  };
9115
9129
 
9116
9130
  var AddLayersButton = function AddLayersButton(_ref) {
9117
- var onClickService = _ref.onClickService,
9118
- onRenderTree = _ref.onRenderTree,
9131
+ var onRenderTree = _ref.onRenderTree,
9119
9132
  _ref$tooltip = _ref.tooltip,
9120
9133
  tooltip = _ref$tooltip === void 0 ? '' : _ref$tooltip,
9121
- _ref$highlightedLayer = _ref.highlightedLayers,
9122
- highlightedLayers = _ref$highlightedLayer === void 0 ? [] : _ref$highlightedLayer,
9123
9134
  _ref$preloadedService = _ref.preloadedServices,
9124
9135
  preloadedServices = _ref$preloadedService === void 0 ? preloadedDefaultMapServices : _ref$preloadedService,
9125
9136
  _ref$layerType = _ref.layerType,
@@ -9133,10 +9144,22 @@ var AddLayersButton = function AddLayersButton(_ref) {
9133
9144
  open = _React$useState2[0],
9134
9145
  setOpen = _React$useState2[1];
9135
9146
 
9147
+ var _React$useState3 = React.useState(shouldFocus),
9148
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
9149
+ isTooltipDisabled = _React$useState4[0],
9150
+ setTooltipDisabled = _React$useState4[1];
9151
+
9136
9152
  var handleClose = function handleClose() {
9137
9153
  setOpen(!open);
9138
9154
  };
9139
9155
 
9156
+ var onBlurTooltip = function onBlurTooltip(event) {
9157
+ // enable tooltip again after user blurs
9158
+ if (event.relatedTarget) {
9159
+ setTooltipDisabled(false);
9160
+ }
9161
+ };
9162
+
9140
9163
  React.useEffect(function () {
9141
9164
  if (shouldFocus && ref.current) {
9142
9165
  ref.current.focus();
@@ -9144,7 +9167,9 @@ var AddLayersButton = function AddLayersButton(_ref) {
9144
9167
 
9145
9168
  }, []);
9146
9169
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Tooltip, {
9147
- title: tooltip
9170
+ title: tooltip,
9171
+ disableFocusListener: isTooltipDisabled,
9172
+ onBlur: onBlurTooltip
9148
9173
  }, /*#__PURE__*/React.createElement(IconButton, {
9149
9174
  onClick: handleClose,
9150
9175
  sx: styles$2.button,
@@ -9155,9 +9180,7 @@ var AddLayersButton = function AddLayersButton(_ref) {
9155
9180
  }, /*#__PURE__*/React.createElement(Add, null))), /*#__PURE__*/React.createElement(AddLayersPopup, {
9156
9181
  open: open,
9157
9182
  handleClose: handleClose,
9158
- onClickService: onClickService,
9159
9183
  onRenderTree: onRenderTree,
9160
- highlightedLayers: highlightedLayers,
9161
9184
  preloadedServices: preloadedServices,
9162
9185
  layerType: layerType
9163
9186
  }));
@@ -9708,7 +9731,6 @@ var OpacitySelect = function OpacitySelect(_ref) {
9708
9731
  _ref$isEnabled = _ref.isEnabled,
9709
9732
  isEnabled = _ref$isEnabled === void 0 ? true : _ref$isEnabled;
9710
9733
  var classes = useStyles$n();
9711
- var sliderClasses = sliderStyles();
9712
9734
 
9713
9735
  var _React$useState = React.useState(false),
9714
9736
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -9774,8 +9796,8 @@ var OpacitySelect = function OpacitySelect(_ref) {
9774
9796
  onBlur: onBlur
9775
9797
  }, currentOpacityText)), open ? /*#__PURE__*/React.createElement("div", {
9776
9798
  className: classes.sliderBackground
9777
- }, /*#__PURE__*/React.createElement("div", {
9778
- className: sliderClasses.sliderHeader
9799
+ }, /*#__PURE__*/React.createElement(Box, {
9800
+ sx: sliderHeaderStyle
9779
9801
  }, "Opacity"), /*#__PURE__*/React.createElement(CustomSlider, {
9780
9802
  "data-testid": "opacitySlider",
9781
9803
  orientation: "vertical",
@@ -10796,7 +10818,11 @@ var LayerContainerRow = function LayerContainerRow(_ref) {
10796
10818
  "data-testid": "layerContainerRow"
10797
10819
  }, /*#__PURE__*/React.createElement(ReactSortable, {
10798
10820
  tag: "div",
10799
- list: layerIds,
10821
+ list: layerIds.map(function (layerId) {
10822
+ return {
10823
+ id: layerId
10824
+ };
10825
+ }),
10800
10826
  setList: onSetList,
10801
10827
  animation: 200,
10802
10828
  onSort: onSortEnd,
@@ -10944,6 +10970,15 @@ var constructListAvailableBaseLayers = function constructListAvailableBaseLayers
10944
10970
  }));
10945
10971
  }, baseLayersWithMapId);
10946
10972
  };
10973
+ var areAvailableBaseLayersSame = function areAvailableBaseLayersSame(availableBaseLayerList, newBaseLayerList) {
10974
+ var availableList = availableBaseLayerList.map(function (layer) {
10975
+ return layer.name;
10976
+ });
10977
+ var newList = newBaseLayerList.map(function (layer) {
10978
+ return layer.name;
10979
+ });
10980
+ return isEqual(availableList, newList);
10981
+ };
10947
10982
 
10948
10983
  var BaseLayersConnect = function BaseLayersConnect(_ref) {
10949
10984
  var mapId = _ref.mapId,
@@ -10957,14 +10992,16 @@ var BaseLayersConnect = function BaseLayersConnect(_ref) {
10957
10992
  });
10958
10993
  React.useEffect(function () {
10959
10994
  // Set initial availableBaseLayers only if none set for that map yet
10960
- if (currentAvailableBaseLayers.length < 1) {
10961
- var availableBaseLayersToBeAdded = constructListAvailableBaseLayers(selectedBaseLayers, preloadedAvailableBaseLayers, mapId);
10962
- dispatch(layerActions.addAvailableBaseLayers({
10995
+ var availableBaseLayersToBeAdded = constructListAvailableBaseLayers(selectedBaseLayers, preloadedAvailableBaseLayers, mapId);
10996
+ var areBaseLayersSame = areAvailableBaseLayersSame(availableBaseLayersToBeAdded, currentAvailableBaseLayers);
10997
+
10998
+ if (!areBaseLayersSame) {
10999
+ dispatch(layerActions.setAvailableBaseLayers({
10963
11000
  layers: availableBaseLayersToBeAdded
10964
11001
  }));
10965
11002
  } // eslint-disable-next-line react-hooks/exhaustive-deps
10966
11003
 
10967
- }, [mapId]);
11004
+ }, [mapId, preloadedAvailableBaseLayers]);
10968
11005
 
10969
11006
  var onChangeBaseLayers = function onChangeBaseLayers(newSelectedLayerId) {
10970
11007
  var newBaseLayer = currentAvailableBaseLayers.filter(function (layer) {
@@ -11264,23 +11301,22 @@ var ServicePopup = function ServicePopup(_ref) {
11264
11301
  hideBackdrop = _ref$hideBackdrop === void 0 ? false : _ref$hideBackdrop,
11265
11302
  isOpen = _ref.isOpen,
11266
11303
  closePopup = _ref.closePopup,
11304
+ serviceId = _ref.serviceId,
11267
11305
  url = _ref.url,
11268
11306
  services = _ref.services,
11269
11307
  serviceSetLayers = _ref.serviceSetLayers;
11270
11308
 
11271
- var _a, _b;
11272
-
11273
- var _React$useState = React.useState(servicePopupVariant !== 'edit' || services === undefined ? '' : (_a = services[url]) === null || _a === void 0 ? void 0 : _a.name),
11309
+ var _React$useState = React.useState(''),
11274
11310
  _React$useState2 = _slicedToArray(_React$useState, 2),
11275
11311
  serviceName = _React$useState2[0],
11276
11312
  setServiceName = _React$useState2[1];
11277
11313
 
11278
- var _React$useState3 = React.useState(servicePopupVariant === 'add' || url === undefined ? '' : url),
11314
+ var _React$useState3 = React.useState(''),
11279
11315
  _React$useState4 = _slicedToArray(_React$useState3, 2),
11280
11316
  serviceUrl = _React$useState4[0],
11281
11317
  setServiceUrl = _React$useState4[1];
11282
11318
 
11283
- var _React$useState5 = React.useState(servicePopupVariant !== 'edit' || services === undefined ? '' : (_b = services[url]) === null || _b === void 0 ? void 0 : _b["abstract"]),
11319
+ var _React$useState5 = React.useState(''),
11284
11320
  _React$useState6 = _slicedToArray(_React$useState5, 2),
11285
11321
  _abstract = _React$useState6[0],
11286
11322
  setAbstract = _React$useState6[1];
@@ -11315,6 +11351,19 @@ var ServicePopup = function ServicePopup(_ref) {
11315
11351
  serviceUrlHelperText = _React$useState18[0],
11316
11352
  setServiceUrlHelperText = _React$useState18[1];
11317
11353
 
11354
+ React.useEffect(function () {
11355
+ var _a;
11356
+
11357
+ if (servicePopupVariant === 'edit') {
11358
+ setServiceName(((_a = services[serviceId]) === null || _a === void 0 ? void 0 : _a.serviceName) || '');
11359
+ setServiceUrl(url || '');
11360
+ }
11361
+
11362
+ if (servicePopupVariant === 'save') {
11363
+ setServiceUrl(url || '');
11364
+ }
11365
+ }, [serviceId, services, url, servicePopupVariant, isOpen]);
11366
+
11318
11367
  var validateServiceUrl = function validateServiceUrl(url) {
11319
11368
  if (url === '' || url === null || typeof url === 'undefined') return false;
11320
11369
  var matcher = /^(?:\w+:)?\/\/([^\s.]+\.\S{2}|[0-9a-zA-Z]+[:?\d]*)\S*$/;
@@ -11401,11 +11450,10 @@ var ServicePopup = function ServicePopup(_ref) {
11401
11450
 
11402
11451
  var ServiceNameInRedux = function ServiceNameInRedux() {
11403
11452
  if (servicePopupVariant === 'add' || servicePopupVariant === 'save') {
11404
- for (var service in services) {
11405
- if (services && services[service].name.toLowerCase() === serviceName.toLowerCase()) return true;
11406
- }
11407
-
11408
- return false;
11453
+ var foundName = Object.keys(services).find(function (serviceId) {
11454
+ return services[serviceId].serviceName.toLowerCase() === (serviceName === null || serviceName === void 0 ? void 0 : serviceName.toLowerCase());
11455
+ });
11456
+ return foundName !== undefined;
11409
11457
  }
11410
11458
 
11411
11459
  return false;
@@ -11413,11 +11461,10 @@ var ServicePopup = function ServicePopup(_ref) {
11413
11461
 
11414
11462
  var UrlInRedux = function UrlInRedux() {
11415
11463
  if (servicePopupVariant === 'add' || servicePopupVariant === 'save') {
11416
- if (services && services[serviceUrl]) {
11417
- return true;
11418
- }
11419
-
11420
- return false;
11464
+ var foundUrl = Object.keys(services).find(function (serviceId) {
11465
+ return services[serviceId].serviceUrl === serviceUrl;
11466
+ });
11467
+ return foundUrl !== undefined;
11421
11468
  }
11422
11469
 
11423
11470
  return false;
@@ -11425,6 +11472,7 @@ var ServicePopup = function ServicePopup(_ref) {
11425
11472
 
11426
11473
 
11427
11474
  React.useEffect(function () {
11475
+ if (serviceName === undefined) return;
11428
11476
  setServiceNameHelperText('');
11429
11477
 
11430
11478
  if (ServiceNameInRedux()) {
@@ -11440,7 +11488,7 @@ var ServicePopup = function ServicePopup(_ref) {
11440
11488
  React.useEffect(function () {
11441
11489
  setServiceUrlHelperText('');
11442
11490
 
11443
- if (serviceUrl.length > 0 && !validateServiceUrl(serviceUrl)) {
11491
+ if (serviceUrl && serviceUrl.length > 0 && !validateServiceUrl(serviceUrl)) {
11444
11492
  setServiceUrlHasError(true);
11445
11493
  setServiceUrlHelperText('Error: Not a valid URL.');
11446
11494
  } else if (UrlInRedux()) {
@@ -11527,7 +11575,8 @@ var ServicePopup = function ServicePopup(_ref) {
11527
11575
  return setAbstract(event.target.value);
11528
11576
  },
11529
11577
  value: _abstract,
11530
- "data-testid": "abstractTextField"
11578
+ "data-testid": "abstractTextField",
11579
+ disabled: true
11531
11580
  })), /*#__PURE__*/React.createElement(DialogActions, {
11532
11581
  sx: style$1.footerContent
11533
11582
  }, /*#__PURE__*/React.createElement(Button, {
@@ -11583,10 +11632,11 @@ var ServicePopupConnect = function ServicePopupConnect(_ref) {
11583
11632
  hideBackdrop = _ref.hideBackdrop,
11584
11633
  isOpen = _ref.isOpen,
11585
11634
  closePopup = _ref.closePopup,
11635
+ serviceId = _ref.serviceId,
11586
11636
  url = _ref.url;
11587
11637
  var dispatch = useDispatch();
11588
11638
  var services = useSelector(function (store) {
11589
- return getServices(store);
11639
+ return getActiveServices(store);
11590
11640
  });
11591
11641
  var serviceSetLayers = React__default.useCallback(function (payload) {
11592
11642
  dispatch(serviceActions.serviceSetLayers(payload));
@@ -11596,9 +11646,10 @@ var ServicePopupConnect = function ServicePopupConnect(_ref) {
11596
11646
  hideBackdrop: hideBackdrop,
11597
11647
  isOpen: isOpen,
11598
11648
  closePopup: closePopup,
11599
- url: url,
11649
+ serviceId: serviceId,
11600
11650
  services: services,
11601
- serviceSetLayers: serviceSetLayers
11651
+ serviceSetLayers: serviceSetLayers,
11652
+ url: url
11602
11653
  });
11603
11654
  };
11604
11655
 
@@ -11727,7 +11778,7 @@ var SearchFieldConnect = function SearchFieldConnect() {
11727
11778
  });
11728
11779
  return /*#__PURE__*/React.createElement(SearchField, {
11729
11780
  setSearchFilter: function setSearchFilter(filterText) {
11730
- return dispatch(layerSelectActions.setSearchFilter({
11781
+ dispatch(layerSelectActions.setSearchFilter({
11731
11782
  filterText: filterText
11732
11783
  }));
11733
11784
  },
@@ -11943,16 +11994,29 @@ var LayerList = function LayerList(_ref) {
11943
11994
  mapLayers = _ref.mapLayers,
11944
11995
  keywordIds = _ref.keywordIds,
11945
11996
  allKeywordsActive = _ref.allKeywordsActive;
11997
+ var layerSelectFilterHeight = 199;
11946
11998
 
11947
11999
  var _React$useState = React.useState(0),
11948
12000
  _React$useState2 = _slicedToArray(_React$useState, 2),
11949
12001
  numberOfLayers = _React$useState2[0],
11950
12002
  setNumberOfLayers = _React$useState2[1];
11951
12003
 
12004
+ var _React$useState3 = React.useState([]),
12005
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
12006
+ layersFilteredFromService = _React$useState4[0],
12007
+ setLayersFilteredFromService = _React$useState4[1];
12008
+
11952
12009
  React.useEffect(function () {
11953
12010
  setNumberOfLayers(serviceIds.reduce(function (totalNumberOfLayers, serviceId) {
11954
12011
  return totalNumberOfLayers + filterLayersFromService(serviceId, services, keywordIds, allKeywordsActive, searchString).length;
11955
12012
  }, 0));
12013
+ setLayersFilteredFromService(serviceIds.reduce(function (layerList, serviceId) {
12014
+ return layerList.concat(filterLayersFromService(serviceId, services, keywordIds, allKeywordsActive, searchString).map(function (layer) {
12015
+ return Object.assign(Object.assign({}, layer), {
12016
+ serviceId: serviceId
12017
+ });
12018
+ }));
12019
+ }, []));
11956
12020
  }, [serviceIds, keywordIds, services, searchString, allKeywordsActive]);
11957
12021
  return /*#__PURE__*/React.createElement(Box, {
11958
12022
  "data-testid": "layerList"
@@ -11961,25 +12025,26 @@ var LayerList = function LayerList(_ref) {
11961
12025
  marginBottom: '4px',
11962
12026
  fontSize: '12px'
11963
12027
  }
11964
- }, numberOfLayers, " results"), /*#__PURE__*/React.createElement(Box, {
11965
- sx: {
11966
- height: layerSelectHeight - 199,
11967
- overflow: 'auto'
11968
- }
11969
- }, serviceIds.map(function (serviceId) {
11970
- return filterLayersFromService(serviceId, services, keywordIds, allKeywordsActive, searchString).map(function (layer, layerIndex) {
11971
- return /*#__PURE__*/React.createElement(LayerListRow, {
11972
- key: layer.name,
11973
- layer: layer,
11974
- layerIndex: layerIndex,
11975
- service: services[serviceId],
11976
- serviceUrl: services[serviceId].serviceUrl,
11977
- addLayer: addLayer,
11978
- deleteLayer: deleteLayer,
11979
- mapLayers: mapLayers
11980
- });
11981
- });
11982
- })));
12028
+ }, numberOfLayers, " results"), /*#__PURE__*/React.createElement(FixedSizeList, {
12029
+ height: layerSelectHeight - layerSelectFilterHeight,
12030
+ itemCount: numberOfLayers,
12031
+ itemSize: 68
12032
+ }, function (_ref2) {
12033
+ var index = _ref2.index,
12034
+ style = _ref2.style;
12035
+ return /*#__PURE__*/React.createElement("div", {
12036
+ style: style,
12037
+ key: layersFilteredFromService[index].name
12038
+ }, /*#__PURE__*/React.createElement(LayerListRow, {
12039
+ layer: layersFilteredFromService[index],
12040
+ layerIndex: index,
12041
+ service: services[layersFilteredFromService[index].serviceId],
12042
+ serviceUrl: services[layersFilteredFromService[index].serviceId].serviceUrl,
12043
+ addLayer: addLayer,
12044
+ deleteLayer: deleteLayer,
12045
+ mapLayers: mapLayers
12046
+ }));
12047
+ }));
11983
12048
  };
11984
12049
 
11985
12050
  /* *
@@ -12426,28 +12491,32 @@ var styles = {
12426
12491
 
12427
12492
  var ServiceOptionsDialog = function ServiceOptionsDialog(_ref) {
12428
12493
  var services = _ref.services,
12429
- mapStoreRemoveService = _ref.mapStoreRemoveService,
12430
- _ref$layers = _ref.layers,
12431
- layers = _ref$layers === void 0 ? [] : _ref$layers;
12494
+ mapStoreRemoveService = _ref.mapStoreRemoveService;
12432
12495
 
12433
12496
  var _React$useState = React.useState(false),
12434
12497
  _React$useState2 = _slicedToArray(_React$useState, 2),
12435
- addServiceisOpen = _React$useState2[0],
12498
+ addServiceIsOpen = _React$useState2[0],
12436
12499
  setAddServiceIsOpen = _React$useState2[1];
12437
12500
 
12501
+ var _React$useState3 = React.useState({
12502
+ isOpen: false,
12503
+ serviceId: '',
12504
+ serviceUrl: ''
12505
+ }),
12506
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
12507
+ editServiceIsOpen = _React$useState4[0],
12508
+ setEditServiceIsOpen = _React$useState4[1];
12509
+
12438
12510
  var openAddService = function openAddService() {
12439
12511
  setAddServiceIsOpen(true);
12440
12512
  };
12441
12513
 
12442
12514
  var closePopup = function closePopup() {
12443
12515
  setAddServiceIsOpen(false);
12444
- };
12445
-
12446
- var isDisabled = function isDisabled(service) {
12447
- return layers.some(function (layer) {
12448
- return layer.service && layer.service.includes(service);
12449
- }) || preloadedDefaultMapServices.some(function (defaultMapService) {
12450
- return defaultMapService.url && defaultMapService.url.includes(service);
12516
+ setEditServiceIsOpen({
12517
+ isOpen: false,
12518
+ serviceId: '',
12519
+ serviceUrl: ''
12451
12520
  });
12452
12521
  };
12453
12522
 
@@ -12476,16 +12545,25 @@ var ServiceOptionsDialog = function ServiceOptionsDialog(_ref) {
12476
12545
  marginRight: '-10px'
12477
12546
  }
12478
12547
  }, /*#__PURE__*/React.createElement(Tooltip, {
12479
- title: "Edit Service"
12548
+ title: "Edit Service",
12549
+ disableHoverListener: !services[serviceId].isUserAddedService
12480
12550
  }, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(IconButton, {
12481
- disabled: isDisabled(services[serviceId].serviceUrl),
12551
+ disabled: !services[serviceId].isUserAddedService,
12482
12552
  "data-testid": "openEditServiceButton",
12483
- size: "large"
12553
+ size: "large",
12554
+ onClick: function onClick() {
12555
+ setEditServiceIsOpen({
12556
+ isOpen: true,
12557
+ serviceId: serviceId,
12558
+ serviceUrl: services[serviceId].serviceUrl
12559
+ });
12560
+ }
12484
12561
  }, /*#__PURE__*/React.createElement(Edit, null)))), /*#__PURE__*/React.createElement(Tooltip, {
12485
- title: "Delete Service"
12562
+ title: "Delete Service",
12563
+ disableHoverListener: !services[serviceId].isUserAddedService
12486
12564
  }, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(IconButton, {
12487
12565
  size: "large",
12488
- disabled: isDisabled(services[serviceId].serviceUrl),
12566
+ disabled: !services[serviceId].isUserAddedService,
12489
12567
  onClick: function onClick() {
12490
12568
  return mapStoreRemoveService(serviceId, services[serviceId].serviceUrl);
12491
12569
  },
@@ -12499,10 +12577,16 @@ var ServiceOptionsDialog = function ServiceOptionsDialog(_ref) {
12499
12577
  sx: styles.button,
12500
12578
  variant: "tertiary",
12501
12579
  startIcon: /*#__PURE__*/React.createElement(Add, null)
12502
- }, "Add a new service"))), addServiceisOpen && /*#__PURE__*/React.createElement(ServicePopupConnect, {
12580
+ }, "Add a new service"))), addServiceIsOpen && /*#__PURE__*/React.createElement(ServicePopupConnect, {
12503
12581
  servicePopupVariant: "add",
12504
- isOpen: addServiceisOpen,
12582
+ isOpen: addServiceIsOpen,
12505
12583
  closePopup: closePopup
12584
+ }), editServiceIsOpen && /*#__PURE__*/React.createElement(ServicePopupConnect, {
12585
+ servicePopupVariant: "edit",
12586
+ isOpen: editServiceIsOpen.isOpen,
12587
+ closePopup: closePopup,
12588
+ serviceId: editServiceIsOpen.serviceId,
12589
+ url: editServiceIsOpen.serviceUrl
12506
12590
  }));
12507
12591
  };
12508
12592
 
@@ -12525,9 +12609,6 @@ var ServiceOptionsDialog = function ServiceOptionsDialog(_ref) {
12525
12609
 
12526
12610
  var ServiceOptionsDialogConnect = function ServiceOptionsDialogConnect() {
12527
12611
  var dispatch = useDispatch();
12528
- var allLayers = useSelector(function (store) {
12529
- return getAllLayers(store);
12530
- });
12531
12612
  var mapStoreRemoveService = React.useCallback(function (serviceId, serviceUrl) {
12532
12613
  dispatch(serviceActions.mapStoreRemoveService({
12533
12614
  id: serviceId,
@@ -12539,7 +12620,6 @@ var ServiceOptionsDialogConnect = function ServiceOptionsDialogConnect() {
12539
12620
  });
12540
12621
  return /*#__PURE__*/React.createElement(ServiceOptionsDialog, {
12541
12622
  services: services,
12542
- layers: allLayers,
12543
12623
  mapStoreRemoveService: mapStoreRemoveService
12544
12624
  });
12545
12625
  };
@@ -12801,40 +12881,6 @@ var KeywordFilterResultsListItemConnect = function KeywordFilterResultsListItemC
12801
12881
  });
12802
12882
  };
12803
12883
 
12804
- /* *
12805
- * Licensed under the Apache License, Version 2.0 (the "License");
12806
- * you may not use this file except in compliance with the License.
12807
- * You may obtain a copy of the License at
12808
- *
12809
- * http://www.apache.org/licenses/LICENSE-2.0
12810
- *
12811
- * Unless required by applicable law or agreed to in writing, software
12812
- * distributed under the License is distributed on an "AS IS" BASIS,
12813
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12814
- * See the License for the specific language governing permissions and
12815
- * limitations under the License.
12816
- *
12817
- * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
12818
- * Copyright 2021 - Finnish Meteorological Institute (FMI)
12819
- * */
12820
- var CustomSwitch = withStyles(function (theme) {
12821
- return {
12822
- switchBase: {
12823
- '&$checked': {
12824
- color: theme.palette.geowebColors.customSlider.thumb
12825
- },
12826
- '&$checked + $track': {
12827
- backgroundColor: theme.palette.geowebColors.buttons.primary["default"].fill
12828
- }
12829
- },
12830
- checked: {},
12831
- track: {
12832
- backgroundColor: theme.palette.geowebColors.customSlider.switchTrackDisabled,
12833
- opacity: '1 !important'
12834
- }
12835
- };
12836
- })(Switch);
12837
-
12838
12884
  /* *
12839
12885
  * Licensed under the Apache License, Version 2.0 (the "License");
12840
12886
  * you may not use this file except in compliance with the License.
@@ -12871,7 +12917,7 @@ var KeywordFilterSelectAllSwitchConnect = function KeywordFilterSelectAllSwitchC
12871
12917
  keywords: keywords
12872
12918
  }));
12873
12919
  }, [allKeywordIds, allKeywordsActive, checkedKeywordIds, dispatch]);
12874
- return /*#__PURE__*/React.createElement(CustomSwitch, {
12920
+ return /*#__PURE__*/React.createElement(Switch, {
12875
12921
  checked: allKeywordsActive,
12876
12922
  onChange: toggleKeywords,
12877
12923
  "data-testid": "customSwitch"
@@ -13161,8 +13207,13 @@ var LayerSelectConnect = function LayerSelectConnect(_ref) {
13161
13207
  }; // eslint-disable-next-line react-hooks/exhaustive-deps
13162
13208
  }, []);
13163
13209
  var serviceSetLayers = React.useCallback(function (payload) {
13164
- return dispatch(serviceActions.serviceSetLayers(payload));
13210
+ dispatch(serviceActions.serviceSetLayers(payload));
13165
13211
  }, [dispatch]);
13212
+
13213
+ var checkIfUserAddedService = function checkIfUserAddedService(service) {
13214
+ return !!service.isUserAddedService;
13215
+ };
13216
+
13166
13217
  React.useEffect(function () {
13167
13218
  if (isOpenInStore && preloadedServices && preloadedServices.length > 0) {
13168
13219
  mergePresetsAndUserAddedServices(preloadedServices, getUserAddedServices()).forEach(function (service) {
@@ -13174,7 +13225,7 @@ var LayerSelectConnect = function LayerSelectConnect(_ref) {
13174
13225
  name: service.name,
13175
13226
  serviceUrl: service.url,
13176
13227
  layers: layers,
13177
- isUserAddedService: false
13228
+ isUserAddedService: checkIfUserAddedService(service)
13178
13229
  });
13179
13230
  }
13180
13231
  })["catch"](function () {
@@ -14226,7 +14277,6 @@ var SpeedButton = function SpeedButton(_ref) {
14226
14277
  var animationDelay = _ref.animationDelay,
14227
14278
  setMapAnimationDelay = _ref.setMapAnimationDelay;
14228
14279
  var classes = useStyles$c();
14229
- var sliderClasses = sliderStyles();
14230
14280
 
14231
14281
  var _React$useState = React.useState(false),
14232
14282
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -14291,8 +14341,8 @@ var SpeedButton = function SpeedButton(_ref) {
14291
14341
  text: text
14292
14342
  })))), open ? /*#__PURE__*/React.createElement("div", {
14293
14343
  className: classes.sliderBackground
14294
- }, /*#__PURE__*/React.createElement("div", {
14295
- className: sliderClasses.sliderHeader
14344
+ }, /*#__PURE__*/React.createElement(Box, {
14345
+ sx: sliderHeaderStyle
14296
14346
  }, "Speed"), /*#__PURE__*/React.createElement(CustomSlider, {
14297
14347
  "data-testid": "speedSlider",
14298
14348
  orientation: "vertical",
@@ -14453,31 +14503,6 @@ var useStyles$b = makeStyles(function (theme) {
14453
14503
  disabled: {}
14454
14504
  };
14455
14505
  });
14456
- var TimeStepSwitch = withStyles(function (theme) {
14457
- return {
14458
- root: {
14459
- marginLeft: '18px'
14460
- },
14461
- thumb: {
14462
- width: 20,
14463
- height: 20,
14464
- margin: '0 0 0 0'
14465
- },
14466
- switchBase: {
14467
- '&$checked': {
14468
- color: theme.palette.geowebColors.customSlider.thumb
14469
- },
14470
- '&$checked + $track': {
14471
- backgroundColor: theme.palette.geowebColors.customSlider.switchTrack
14472
- }
14473
- },
14474
- checked: {},
14475
- track: {
14476
- backgroundColor: theme.palette.geowebColors.customSlider.switchTrackDisabled,
14477
- opacity: '1 !important'
14478
- }
14479
- };
14480
- })(Switch);
14481
14506
 
14482
14507
  var TimeStepButton = function TimeStepButton(_ref) {
14483
14508
  var timeStep = _ref.timeStep,
@@ -14492,7 +14517,6 @@ var TimeStepButton = function TimeStepButton(_ref) {
14492
14517
  return null;
14493
14518
  } : _ref$onToggleTimestep;
14494
14519
  var classes = useStyles$b();
14495
- var sliderClasses = sliderStyles();
14496
14520
 
14497
14521
  var _React$useState = React.useState(false),
14498
14522
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -14561,8 +14585,8 @@ var TimeStepButton = function TimeStepButton(_ref) {
14561
14585
  "data-testid": "timeStepButtonText"
14562
14586
  })))), open ? /*#__PURE__*/React.createElement("div", {
14563
14587
  className: classes.sliderBackground
14564
- }, /*#__PURE__*/React.createElement("div", {
14565
- className: sliderClasses.sliderHeader
14588
+ }, /*#__PURE__*/React.createElement(Box, {
14589
+ sx: sliderHeaderStyle
14566
14590
  }, "Time step"), /*#__PURE__*/React.createElement(CustomSlider, {
14567
14591
  "data-testid": "timeStepButtonSlider",
14568
14592
  orientation: "vertical",
@@ -14580,14 +14604,17 @@ var TimeStepButton = function TimeStepButton(_ref) {
14580
14604
  }, /*#__PURE__*/React.createElement("span", {
14581
14605
  "data-testid": "timestepAutoSwitchTooltip"
14582
14606
  }, /*#__PURE__*/React.createElement(FormControlLabel, {
14583
- control: /*#__PURE__*/React.createElement(TimeStepSwitch, {
14607
+ control: /*#__PURE__*/React.createElement(Switch, {
14584
14608
  checked: isTimestepAuto,
14585
14609
  onChange: function onChange() {
14586
14610
  return onToggleTimestepAuto();
14587
14611
  },
14588
14612
  disabled: disabled,
14589
14613
  id: "timestepAutoSwitch",
14590
- disableRipple: true
14614
+ disableRipple: true,
14615
+ sx: {
14616
+ marginLeft: '18px'
14617
+ }
14591
14618
  }),
14592
14619
  label: "Auto",
14593
14620
  labelPlacement: "end",
@@ -20410,8 +20437,10 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
20410
20437
 
20411
20438
 
20412
20439
  if (!prevProps || prevProps.disableMapPin !== props.disableMapPin) {
20413
- if (!(props.disableMapPin === undefined)) {
20414
- this.adaguc.webMapJS.getMapPin().toggleDisableMapPin();
20440
+ if (props.disableMapPin === true) {
20441
+ this.adaguc.webMapJS.getMapPin().setMapPinDisabled();
20442
+ } else if (props.disableMapPin === false) {
20443
+ this.adaguc.webMapJS.getMapPin().setMapPinEnabled();
20415
20444
  }
20416
20445
  }
20417
20446
  /* Change the animation delay */
@@ -20756,7 +20785,10 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
20756
20785
  _this4.onUpdateBBoxListener(newBbox);
20757
20786
  }, true);
20758
20787
  this.adaguc.webMapJS.addListener('onsetmappin', function (mapPinLatLonCoordinate) {
20759
- if (onMapPinChangeLocation) {
20788
+ // only change location when mapPin is visible and enabled
20789
+ if (onMapPinChangeLocation && // eslint-disable-next-line react/destructuring-assignment
20790
+ _this4.props.displayMapPin && // eslint-disable-next-line react/destructuring-assignment
20791
+ !_this4.props.disableMapPin) {
20760
20792
  onMapPinChangeLocation({
20761
20793
  mapPinLocation: {
20762
20794
  lat: mapPinLatLonCoordinate.lat,
@@ -20871,6 +20903,7 @@ ReactMapView.defaultProps = {
20871
20903
  },
20872
20904
  shouldAutoFetch: true,
20873
20905
  displayMapPin: false,
20906
+ disableMapPin: false,
20874
20907
  onMount: function onMount() {
20875
20908
  return null;
20876
20909
  },
@@ -21116,28 +21149,28 @@ var MapViewConnect = function MapViewConnect(_a) {
21116
21149
  dispatch(layerActions.onUpdateLayerInformation(payload));
21117
21150
  }, [dispatch]);
21118
21151
  var registerMap = React.useCallback(function (payload) {
21119
- return dispatch(mapActions$1.registerMap(payload));
21152
+ dispatch(mapActions$1.registerMap(payload));
21120
21153
  }, [dispatch]);
21121
21154
  var unregisterMap = React.useCallback(function (payload) {
21122
- return dispatch(mapActions$1.unregisterMap(payload));
21155
+ dispatch(mapActions$1.unregisterMap(payload));
21123
21156
  }, [dispatch]);
21124
21157
  var genericSetBbox = React.useCallback(function (payload) {
21125
- return dispatch(genericActions.setBbox(payload));
21158
+ dispatch(genericActions.setBbox(payload));
21126
21159
  }, [dispatch]);
21127
21160
  var syncGroupAddSource = React.useCallback(function (payload) {
21128
- return dispatch(genericActions.syncGroupAddSource(payload));
21161
+ dispatch(genericActions.syncGroupAddSource(payload));
21129
21162
  }, [dispatch]);
21130
21163
  var syncGroupRemoveSource = React.useCallback(function (payload) {
21131
- return dispatch(genericActions.syncGroupRemoveSource(payload));
21164
+ dispatch(genericActions.syncGroupRemoveSource(payload));
21132
21165
  }, [dispatch]);
21133
21166
  var layerError = React.useCallback(function (payload) {
21134
- return dispatch(layerActions.layerError(payload));
21167
+ dispatch(layerActions.layerError(payload));
21135
21168
  }, [dispatch]);
21136
21169
  var mapPinChangeLocation = React.useCallback(function (payload) {
21137
- return dispatch(mapActions$1.setMapPinLocation(payload));
21170
+ dispatch(mapActions$1.setMapPinLocation(payload));
21138
21171
  }, [dispatch]);
21139
21172
  var setSelectedFeature = React.useCallback(function (payload) {
21140
- return dispatch(mapActions$1.setSelectedFeature(payload));
21173
+ dispatch(mapActions$1.setSelectedFeature(payload));
21141
21174
  }, [dispatch]);
21142
21175
  useKeyboardZoomAndPan(mapId);
21143
21176
  return /*#__PURE__*/React.createElement("div", {
@@ -21395,7 +21428,8 @@ var ConfigurableMapConnect = function ConfigurableMapConnect(_a) {
21395
21428
  displayDimensionSelectButtonInMap = _a$displayDimensionSe === void 0 ? true : _a$displayDimensionSe,
21396
21429
  _a$multiLegend = _a.multiLegend,
21397
21430
  multiLegend = _a$multiLegend === void 0 ? true : _a$multiLegend,
21398
- props = __rest(_a, ["id", "title", "layers", "shouldAutoUpdate", "shouldAnimate", "bbox", "srs", "shouldShowZoomControls", "displayMapPin", "showTimeSlider", "disableTimeSlider", "displayTimeInMap", "displayLayerManagerAndLegendButtonInMap", "displayDimensionSelectButtonInMap", "multiLegend"]);
21431
+ shouldShowLayerManager = _a.shouldShowLayerManager,
21432
+ props = __rest(_a, ["id", "title", "layers", "shouldAutoUpdate", "shouldAnimate", "bbox", "srs", "shouldShowZoomControls", "displayMapPin", "showTimeSlider", "disableTimeSlider", "displayTimeInMap", "displayLayerManagerAndLegendButtonInMap", "displayDimensionSelectButtonInMap", "multiLegend", "shouldShowLayerManager"]);
21399
21433
 
21400
21434
  var dispatch = useDispatch();
21401
21435
  var mapId = React__default.useRef(id || generateMapId()).current;
@@ -21424,7 +21458,17 @@ var ConfigurableMapConnect = function ConfigurableMapConnect(_a) {
21424
21458
  dispatch(mapActions$1.setMapPreset({
21425
21459
  mapId: mapId,
21426
21460
  initialProps: initialProps
21427
- })); // eslint-disable-next-line react-hooks/exhaustive-deps
21461
+ }));
21462
+
21463
+ if (shouldShowLayerManager !== undefined) {
21464
+ dispatch(uiActions.setActiveMapIdForDialog({
21465
+ type: 'layerManager',
21466
+ mapId: mapId,
21467
+ setOpen: shouldShowLayerManager,
21468
+ source: 'app'
21469
+ }));
21470
+ } // eslint-disable-next-line react-hooks/exhaustive-deps
21471
+
21428
21472
  }, []);
21429
21473
  return /*#__PURE__*/React__default.createElement(Box, {
21430
21474
  sx: {
@@ -21514,7 +21558,7 @@ var MultiMapViewConnect = function MultiMapViewConnect(_ref) {
21514
21558
  var classes = useStyles$2();
21515
21559
  var dispatch = useDispatch();
21516
21560
  var syncGroupAddTarget = React__default.useCallback(function (payload) {
21517
- return dispatch(genericActions.syncGroupAddTarget(payload));
21561
+ dispatch(genericActions.syncGroupAddTarget(payload));
21518
21562
  }, [dispatch]);
21519
21563
  React__default.useEffect(function () {
21520
21564
  maps.forEach(function (map) {
@@ -22157,16 +22201,16 @@ var SyncGroupViewerConnect = function SyncGroupViewerConnect() {
22157
22201
 
22158
22202
  var viewState = useSelector(syncGroupGetViewState);
22159
22203
  var syncGroupAddGroup = React.useCallback(function (payload) {
22160
- return dispatch(actions.syncGroupAddGroup(payload));
22204
+ dispatch(actions.syncGroupAddGroup(payload));
22161
22205
  }, [dispatch]);
22162
22206
  var syncGroupRemoveGroup = React.useCallback(function (payload) {
22163
- return dispatch(actions.syncGroupRemoveGroup(payload));
22207
+ dispatch(actions.syncGroupRemoveGroup(payload));
22164
22208
  }, [dispatch]);
22165
22209
  var syncGroupAddTarget = React.useCallback(function (payload) {
22166
- return dispatch(actions.syncGroupAddTarget(payload));
22210
+ dispatch(actions.syncGroupAddTarget(payload));
22167
22211
  }, [dispatch]);
22168
22212
  var syncGroupRemoveTarget = React.useCallback(function (payload) {
22169
- return dispatch(actions.syncGroupRemoveTarget(payload));
22213
+ dispatch(actions.syncGroupRemoveTarget(payload));
22170
22214
  }, [dispatch]);
22171
22215
  var isOpenInStore = useSelector(function (store) {
22172
22216
  return getisDialogOpen(store, 'syncGroups');
@@ -22442,21 +22486,17 @@ var MapWarningProperties = function MapWarningProperties(_ref) {
22442
22486
  }
22443
22487
  }, /*#__PURE__*/React__default.createElement("h1", {
22444
22488
  "data-testid": "map-warning-properties-title"
22445
- }, selectedFeatureProperties.country), selectedFeatureProperties.details[0].event && /*#__PURE__*/React__default.createElement("pre", {
22446
- "data-testid": "map-warning-properties-row"
22447
- }, "Event: ", selectedFeatureProperties.details[0].event), selectedFeatureProperties.details[0].sent && /*#__PURE__*/React__default.createElement("pre", {
22448
- "data-testid": "map-warning-properties-row"
22449
- }, "Sent:", ' ', moment.utc(selectedFeatureProperties.details[0].sent).format('DD MMM YYYY, HH:mm'), ' ', "UTC"), selectedFeatureProperties.details[0].expires && /*#__PURE__*/React__default.createElement("pre", {
22489
+ }, selectedFeatureProperties.areaDesc), selectedFeatureProperties.areaDesc && /*#__PURE__*/React__default.createElement("pre", {
22450
22490
  "data-testid": "map-warning-properties-row"
22451
- }, "Expires:", ' ', moment.utc(selectedFeatureProperties.details[0].expires).format('DD MMM YYYY, HH:mm'), ' ', "UTC"), selectedFeatureProperties.details[0].web && /*#__PURE__*/React__default.createElement("pre", {
22491
+ }, "event: ", selectedFeatureProperties.languages[2].event), selectedFeatureProperties.onset && /*#__PURE__*/React__default.createElement("pre", {
22452
22492
  "data-testid": "map-warning-properties-row"
22453
- }, "Web: ", selectedFeatureProperties.details[0].web), selectedFeatureProperties.details[0].sender && /*#__PURE__*/React__default.createElement("pre", {
22493
+ }, "Sent:", ' ', moment.utc(selectedFeatureProperties.onset).format('DD MMM YYYY, HH:mm'), ' ', "UTC"), selectedFeatureProperties.expires && /*#__PURE__*/React__default.createElement("pre", {
22454
22494
  "data-testid": "map-warning-properties-row"
22455
- }, "Sender: ", selectedFeatureProperties.details[0].sender), selectedFeatureProperties.details[0].identifier && /*#__PURE__*/React__default.createElement("pre", {
22495
+ }, "Expires:", ' ', moment.utc(selectedFeatureProperties.expires).format('DD MMM YYYY, HH:mm'), ' ', "UTC"), selectedFeatureProperties.languages[2].senderName && /*#__PURE__*/React__default.createElement("pre", {
22456
22496
  "data-testid": "map-warning-properties-row"
22457
- }, "Identifier: ", selectedFeatureProperties.details[0].identifier), selectedFeatureProperties.details[0].area && /*#__PURE__*/React__default.createElement("pre", {
22497
+ }, "Sender: ", selectedFeatureProperties.languages[2].senderName), selectedFeatureProperties.identifier && /*#__PURE__*/React__default.createElement("pre", {
22458
22498
  "data-testid": "map-warning-properties-row"
22459
- }, "area: ", selectedFeatureProperties.details[0].area));
22499
+ }, "Identifier: ", selectedFeatureProperties.identifier));
22460
22500
  };
22461
22501
 
22462
22502
  /* *