@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.umd.js CHANGED
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@reduxjs/toolkit'), require('immer'), require('moment'), require('react'), require('lodash'), require('redux-saga/effects'), require('react-redux'), require('@mui/material'), require('@opengeoweb/shared'), require('@opengeoweb/theme'), require('@mui/styles/makeStyles'), require('@opengeoweb/webmap'), require('react-sortablejs'), require('@mui/styles/createStyles'), require('@mui/styles/withStyles'), require('throttle-debounce'), require('lodash.clonedeep'), require('proj4'), require('@turf/turf'), require('redux-dynamic-modules'), require('redux-dynamic-modules-saga')) :
3
- typeof define === 'function' && define.amd ? define(['exports', '@reduxjs/toolkit', 'immer', 'moment', 'react', 'lodash', 'redux-saga/effects', 'react-redux', '@mui/material', '@opengeoweb/shared', '@opengeoweb/theme', '@mui/styles/makeStyles', '@opengeoweb/webmap', 'react-sortablejs', '@mui/styles/createStyles', '@mui/styles/withStyles', 'throttle-debounce', 'lodash.clonedeep', 'proj4', '@turf/turf', 'redux-dynamic-modules', 'redux-dynamic-modules-saga'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Core = {}, global.toolkit, global.produce, global.moment, global.React, global._, global.effects, global.reactRedux, global.material, global.shared, global.theme, global.makeStyles, global.webmap, global.reactSortablejs, global.createStyles, global.withStyles, global.throttleDebounce, global.cloneDeep, global.proj4, global.turf, global.reduxDynamicModules, global.reduxDynamicModulesSaga));
5
- })(this, (function (exports, toolkit, produce, moment, React, _, effects, reactRedux, material, shared, theme, makeStyles, webmap, reactSortablejs, createStyles, withStyles, throttleDebounce, cloneDeep, proj4, turf, reduxDynamicModules, reduxDynamicModulesSaga) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@reduxjs/toolkit'), require('immer'), require('moment'), require('react'), require('lodash'), require('redux-saga/effects'), require('react-redux'), require('@mui/material'), require('@opengeoweb/shared'), require('@opengeoweb/theme'), require('@mui/styles/makeStyles'), require('@opengeoweb/webmap'), require('react-sortablejs'), require('@mui/styles/createStyles'), require('react-window'), require('@mui/styles/withStyles'), require('throttle-debounce'), require('lodash.clonedeep'), require('proj4'), require('@turf/turf'), require('redux-dynamic-modules'), require('redux-dynamic-modules-saga')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', '@reduxjs/toolkit', 'immer', 'moment', 'react', 'lodash', 'redux-saga/effects', 'react-redux', '@mui/material', '@opengeoweb/shared', '@opengeoweb/theme', '@mui/styles/makeStyles', '@opengeoweb/webmap', 'react-sortablejs', '@mui/styles/createStyles', 'react-window', '@mui/styles/withStyles', 'throttle-debounce', 'lodash.clonedeep', 'proj4', '@turf/turf', 'redux-dynamic-modules', 'redux-dynamic-modules-saga'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Core = {}, global.toolkit, global.produce, global.moment, global.React, global._, global.effects, global.reactRedux, global.material, global.shared, global.theme, global.makeStyles, global.webmap, global.reactSortablejs, global.createStyles, global.reactWindow, global.withStyles, global.throttleDebounce, global.cloneDeep, global.proj4, global.turf, global.reduxDynamicModules, global.reduxDynamicModulesSaga));
5
+ })(this, (function (exports, toolkit, produce, moment, React, _, effects, reactRedux, material, shared, theme, makeStyles, webmap, reactSortablejs, createStyles, reactWindow, withStyles, throttleDebounce, cloneDeep, proj4, turf, reduxDynamicModules, reduxDynamicModulesSaga) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -822,8 +822,10 @@
822
822
  activeMapPresetId = _y === void 0 ? null : _y,
823
823
  _z = _a.displayMapPin,
824
824
  displayMapPin = _z === void 0 ? false : _z,
825
- _0 = _a.shouldShowZoomControls,
826
- shouldShowZoomControls = _0 === void 0 ? true : _0;
825
+ _0 = _a.disableMapPin,
826
+ disableMapPin = _0 === void 0 ? false : _0,
827
+ _1 = _a.shouldShowZoomControls,
828
+ shouldShowZoomControls = _1 === void 0 ? true : _1;
827
829
  return {
828
830
  id: id,
829
831
  isAnimating: isAnimating,
@@ -849,6 +851,7 @@
849
851
  isTimeSliderVisible: isTimeSliderVisible,
850
852
  activeMapPresetId: activeMapPresetId,
851
853
  displayMapPin: displayMapPin,
854
+ disableMapPin: disableMapPin,
852
855
  shouldShowZoomControls: shouldShowZoomControls
853
856
  };
854
857
  };
@@ -1529,6 +1532,17 @@
1529
1532
  draft.availableBaseLayers.allIds.push(layer.id);
1530
1533
  });
1531
1534
  },
1535
+ setAvailableBaseLayers: function setAvailableBaseLayers(draft, action) {
1536
+ var layers = action.payload.layers;
1537
+ draft.availableBaseLayers.byId = {};
1538
+ draft.availableBaseLayers.allIds = []; // add new available baselayers
1539
+
1540
+ layers.forEach(function (layer) {
1541
+ if (layer.layerType !== LayerType.baseLayer || !layer.mapId) return;
1542
+ draft.availableBaseLayers.byId[layer.id] = createLayer(__assign({}, layer));
1543
+ draft.availableBaseLayers.allIds.push(layer.id);
1544
+ });
1545
+ },
1532
1546
  onUpdateLayerInformation: function onUpdateLayerInformation(draft, action) {
1533
1547
  var _a = action.payload,
1534
1548
  layerStyle = _a.layerStyle,
@@ -1812,12 +1826,13 @@
1812
1826
  * @returns {array} returnType: [] - array containing services
1813
1827
  */
1814
1828
 
1815
- var getServicesInArray = toolkit.createSelector(servicesStore, function (store) {
1829
+ toolkit.createSelector(servicesStore, function (store) {
1816
1830
  var services = store ? store.byId : {};
1817
1831
  var arrayOfServiceObjects = Object.keys(services).map(function (key) {
1818
1832
  return {
1819
1833
  name: services[key].name,
1820
- serviceUrl: services[key].serviceUrl
1834
+ serviceUrl: services[key].serviceUrl,
1835
+ isUserAddedService: services[key].isUserAddedService
1821
1836
  };
1822
1837
  });
1823
1838
  return arrayOfServiceObjects;
@@ -4067,11 +4082,11 @@
4067
4082
  * Example getDisableMapPin(store);
4068
4083
  * @param {object} store store: object - store object
4069
4084
  * @param {string} mapId mapId: string - Id of the map
4070
- * @returns {boolean} returnType: boolean or undefined
4085
+ * @returns {boolean} returnType: boolean
4071
4086
  */
4072
4087
 
4073
4088
  var getDisableMapPin = toolkit.createSelector(getMapById, function (store) {
4074
- return store ? store.disableMapPin : undefined;
4089
+ return store ? store.disableMapPin : false;
4075
4090
  });
4076
4091
  /**
4077
4092
  * Returns the diplay map pin boolean for the current map
@@ -4305,7 +4320,8 @@
4305
4320
  serviceId = _b.serviceId,
4306
4321
  serviceName = _b.serviceName,
4307
4322
  serviceUrl = _b.serviceUrl,
4308
- keywords = _b.keywords;
4323
+ keywords = _b.keywords,
4324
+ isUserAddedService = _b.isUserAddedService;
4309
4325
 
4310
4326
  if (!draft.filters.activeServices.byId[serviceId]) {
4311
4327
  draft.filters.activeServices.byId[serviceId] = {};
@@ -4343,6 +4359,7 @@
4343
4359
  draft.filters.activeServices.byId[serviceId].serviceName = serviceName;
4344
4360
  draft.filters.activeServices.byId[serviceId].serviceUrl = serviceUrl;
4345
4361
  draft.filters.activeServices.byId[serviceId].enabled = true;
4362
+ draft.filters.activeServices.byId[serviceId].isUserAddedService = isUserAddedService;
4346
4363
  draft.filters.activeServices.byId[serviceId].keywordsPerService = keywords;
4347
4364
  if (!draft.filters.activeServices.allIds.includes(serviceId)) draft.filters.activeServices.allIds.push(serviceId);
4348
4365
  },
@@ -7433,7 +7450,7 @@
7433
7450
  * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7434
7451
  * Copyright 2021 - Finnish Meteorological Institute (FMI)
7435
7452
  * */
7436
- var IS_LEGEND_OPEN_BY_DEFAULT = true;
7453
+ var IS_LEGEND_OPEN_BY_DEFAULT = false;
7437
7454
 
7438
7455
  var LegendConnectComponent = function LegendConnectComponent(_a) {
7439
7456
  var _b = _a.showMapId,
@@ -7474,7 +7491,7 @@
7474
7491
  });
7475
7492
 
7476
7493
  var onClose = function onClose() {
7477
- return dispatch(uiActions.setToggleOpenDialog({
7494
+ dispatch(uiActions.setToggleOpenDialog({
7478
7495
  type: legendType,
7479
7496
  setOpen: false,
7480
7497
  origin: MapActionOrigin.map,
@@ -8456,7 +8473,7 @@
8456
8473
  };
8457
8474
  var isService = function isService(param) {
8458
8475
  var serviceParam = param;
8459
- 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));
8476
+ 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);
8460
8477
  };
8461
8478
 
8462
8479
  var getUserAddedServices = function getUserAddedServices() {
@@ -8465,6 +8482,13 @@
8465
8482
  var parsedData = JSON.parse(storedString);
8466
8483
 
8467
8484
  if (parsedData && _typeof(parsedData) === 'object') {
8485
+ Object.values(parsedData).forEach(function (value) {
8486
+ // eslint-disable-next-line no-prototype-builtins
8487
+ if (value.hasOwnProperty('url') && value.hasOwnProperty('id')) {
8488
+ var service = value;
8489
+ service.isUserAddedService = true;
8490
+ }
8491
+ });
8468
8492
  return Object.entries(parsedData).reduce(function (userServices, _a) {
8469
8493
  var _b;
8470
8494
 
@@ -8506,40 +8530,26 @@
8506
8530
  * Copyright 2022 - Finnish Meteorological Institute (FMI)
8507
8531
  * */
8508
8532
  function newServiceAddedSaga(capturedAction) {
8509
- var addedService, id, serviceUrl, name, keywords, services, findServiceName;
8533
+ var addedService, id, serviceUrl, name, isUserAddedService, keywords;
8510
8534
  return __generator(this, function (_a) {
8511
8535
  switch (_a.label) {
8512
8536
  case 0:
8513
8537
  addedService = capturedAction.payload;
8514
- id = addedService.id, serviceUrl = addedService.serviceUrl, name = addedService.name;
8538
+ id = addedService.id, serviceUrl = addedService.serviceUrl, name = addedService.name, isUserAddedService = addedService.isUserAddedService;
8515
8539
  keywords = addedService.layers.reduce(function (keywordAccumulator, layer) {
8516
8540
  return keywordAccumulator.concat(layer.path, layer.keywords);
8517
8541
  }, []);
8518
- return [4
8519
- /*yield*/
8520
- , effects.select(getServicesInArray)];
8521
-
8522
- case 1:
8523
- services = _a.sent();
8524
-
8525
- findServiceName = function findServiceName() {
8526
- var foundService = services.find(function (object) {
8527
- return (object === null || object === void 0 ? void 0 : object.url) === serviceUrl;
8528
- });
8529
- if (foundService) return foundService.name;
8530
- return name;
8531
- };
8532
-
8533
8542
  return [4
8534
8543
  /*yield*/
8535
8544
  , effects.put(layerSelectActions.addKeywordsAndActiveServices({
8536
8545
  serviceId: id,
8537
- serviceName: findServiceName(),
8546
+ serviceName: name,
8538
8547
  serviceUrl: serviceUrl,
8539
- keywords: keywords
8548
+ keywords: keywords,
8549
+ isUserAddedService: isUserAddedService
8540
8550
  }))];
8541
8551
 
8542
- case 2:
8552
+ case 1:
8543
8553
  _a.sent();
8544
8554
 
8545
8555
  return [2
@@ -9280,38 +9290,35 @@
9280
9290
  };
9281
9291
 
9282
9292
  var AddLayersPopup = function AddLayersPopup(_a) {
9283
- var onClickService = _a.onClickService,
9284
- onRenderTree = _a.onRenderTree,
9285
- _b = _a.highlightedLayers,
9286
- highlightedLayers = _b === void 0 ? [] : _b,
9287
- _c = _a.preloadedServices,
9288
- preloadedServices = _c === void 0 ? preloadedDefaultMapServices : _c,
9289
- _d = _a.open,
9290
- open = _d === void 0 ? false : _d,
9293
+ var onRenderTree = _a.onRenderTree,
9294
+ _b = _a.preloadedServices,
9295
+ preloadedServices = _b === void 0 ? preloadedDefaultMapServices : _b,
9296
+ _c = _a.open,
9297
+ open = _c === void 0 ? false : _c,
9291
9298
  handleClose = _a.handleClose,
9292
- _e = _a.layerType,
9293
- layerType = _e === void 0 ? LayerType.mapLayer : _e;
9299
+ _d = _a.layerType,
9300
+ layerType = _d === void 0 ? LayerType.mapLayer : _d;
9294
9301
  var classes = useStyles$q();
9295
9302
 
9296
- var _f = __read(React__namespace.useState(''), 2),
9297
- serviceURL = _f[0],
9298
- setServiceURL = _f[1];
9303
+ var _e = __read(React__namespace.useState(''), 2),
9304
+ serviceURL = _e[0],
9305
+ setServiceURL = _e[1];
9299
9306
 
9300
- var _g = __read(React__namespace.useState(preloadedServices), 2),
9301
- services = _g[0],
9302
- setServices = _g[1];
9307
+ var _f = __read(React__namespace.useState(preloadedServices), 2),
9308
+ services = _f[0],
9309
+ setServices = _f[1];
9303
9310
 
9304
- var _h = __read(React__namespace.useState(preloadedServices[0]), 2),
9305
- activeService = _h[0],
9306
- setActiveService = _h[1];
9311
+ var _g = __read(React__namespace.useState(preloadedServices[0]), 2),
9312
+ activeService = _g[0],
9313
+ setActiveService = _g[1];
9307
9314
 
9308
- var _j = __read(React__namespace.useState(''), 2),
9309
- urlError = _j[0],
9310
- setUrlError = _j[1];
9315
+ var _h = __read(React__namespace.useState(''), 2),
9316
+ urlError = _h[0],
9317
+ setUrlError = _h[1];
9311
9318
 
9312
- var _k = __read(React__namespace.useState(false), 2),
9313
- loading = _k[0],
9314
- setLoading = _k[1];
9319
+ var _j = __read(React__namespace.useState(false), 2),
9320
+ loading = _j[0],
9321
+ setLoading = _j[1];
9315
9322
 
9316
9323
  var handleChangeService = function handleChangeService(service) {
9317
9324
  setActiveService(service);
@@ -9359,6 +9366,12 @@
9359
9366
  }
9360
9367
  };
9361
9368
 
9369
+ React__namespace.useEffect(function () {
9370
+ if (!_.isEqual(preloadedServices, services)) {
9371
+ setServices(preloadedServices);
9372
+ } // eslint-disable-next-line react-hooks/exhaustive-deps
9373
+
9374
+ }, [preloadedServices]);
9362
9375
  return /*#__PURE__*/React__namespace.createElement(material.Dialog, {
9363
9376
  fullWidth: true,
9364
9377
  maxWidth: "md",
@@ -9429,9 +9442,8 @@
9429
9442
  item: true,
9430
9443
  xs: 8
9431
9444
  }, onRenderTree ? onRenderTree(activeService) : /*#__PURE__*/React__namespace.createElement(WMSLayerTreeConnect, {
9445
+ mapId: "",
9432
9446
  service: activeService,
9433
- onClickLayer: onClickService,
9434
- highlightedLayers: highlightedLayers,
9435
9447
  layerType: layerType
9436
9448
  }))))), /*#__PURE__*/React__namespace.createElement(material.DialogActions, null, /*#__PURE__*/React__namespace.createElement(material.Button, {
9437
9449
  onClick: handleClose,
@@ -9474,28 +9486,36 @@
9474
9486
  };
9475
9487
 
9476
9488
  var AddLayersButton = function AddLayersButton(_a) {
9477
- var onClickService = _a.onClickService,
9478
- onRenderTree = _a.onRenderTree,
9489
+ var onRenderTree = _a.onRenderTree,
9479
9490
  _b = _a.tooltip,
9480
9491
  tooltip = _b === void 0 ? '' : _b,
9481
- _c = _a.highlightedLayers,
9482
- highlightedLayers = _c === void 0 ? [] : _c,
9483
- _d = _a.preloadedServices,
9484
- preloadedServices = _d === void 0 ? preloadedDefaultMapServices : _d,
9485
- _e = _a.layerType,
9486
- layerType = _e === void 0 ? LayerType.mapLayer : _e,
9487
- _f = _a.shouldFocus,
9488
- shouldFocus = _f === void 0 ? false : _f;
9492
+ _c = _a.preloadedServices,
9493
+ preloadedServices = _c === void 0 ? preloadedDefaultMapServices : _c,
9494
+ _d = _a.layerType,
9495
+ layerType = _d === void 0 ? LayerType.mapLayer : _d,
9496
+ _e = _a.shouldFocus,
9497
+ shouldFocus = _e === void 0 ? false : _e;
9489
9498
  var ref = React__namespace.useRef(null);
9490
9499
 
9491
- var _g = __read(React__namespace.useState(false), 2),
9492
- open = _g[0],
9493
- setOpen = _g[1];
9500
+ var _f = __read(React__namespace.useState(false), 2),
9501
+ open = _f[0],
9502
+ setOpen = _f[1];
9503
+
9504
+ var _g = __read(React__namespace.useState(shouldFocus), 2),
9505
+ isTooltipDisabled = _g[0],
9506
+ setTooltipDisabled = _g[1];
9494
9507
 
9495
9508
  var handleClose = function handleClose() {
9496
9509
  setOpen(!open);
9497
9510
  };
9498
9511
 
9512
+ var onBlurTooltip = function onBlurTooltip(event) {
9513
+ // enable tooltip again after user blurs
9514
+ if (event.relatedTarget) {
9515
+ setTooltipDisabled(false);
9516
+ }
9517
+ };
9518
+
9499
9519
  React__namespace.useEffect(function () {
9500
9520
  if (shouldFocus && ref.current) {
9501
9521
  ref.current.focus();
@@ -9503,7 +9523,9 @@
9503
9523
 
9504
9524
  }, []);
9505
9525
  return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
9506
- title: tooltip
9526
+ title: tooltip,
9527
+ disableFocusListener: isTooltipDisabled,
9528
+ onBlur: onBlurTooltip
9507
9529
  }, /*#__PURE__*/React__namespace.createElement(material.IconButton, {
9508
9530
  onClick: handleClose,
9509
9531
  sx: styles$2.button,
@@ -9514,9 +9536,7 @@
9514
9536
  }, /*#__PURE__*/React__namespace.createElement(theme.Add, null))), /*#__PURE__*/React__namespace.createElement(AddLayersPopup, {
9515
9537
  open: open,
9516
9538
  handleClose: handleClose,
9517
- onClickService: onClickService,
9518
9539
  onRenderTree: onRenderTree,
9519
- highlightedLayers: highlightedLayers,
9520
9540
  preloadedServices: preloadedServices,
9521
9541
  layerType: layerType
9522
9542
  }));
@@ -10114,7 +10134,6 @@
10114
10134
  _b = _a.isEnabled,
10115
10135
  isEnabled = _b === void 0 ? true : _b;
10116
10136
  var classes = useStyles$n();
10117
- var sliderClasses = shared.sliderStyles();
10118
10137
 
10119
10138
  var _c = __read(React__namespace.useState(false), 2),
10120
10139
  open = _c[0],
@@ -10178,8 +10197,8 @@
10178
10197
  onBlur: onBlur
10179
10198
  }, currentOpacityText)), open ? /*#__PURE__*/React__namespace.createElement("div", {
10180
10199
  className: classes.sliderBackground
10181
- }, /*#__PURE__*/React__namespace.createElement("div", {
10182
- className: sliderClasses.sliderHeader
10200
+ }, /*#__PURE__*/React__namespace.createElement(material.Box, {
10201
+ sx: shared.sliderHeaderStyle
10183
10202
  }, "Opacity"), /*#__PURE__*/React__namespace.createElement(shared.CustomSlider, {
10184
10203
  "data-testid": "opacitySlider",
10185
10204
  orientation: "vertical",
@@ -11214,7 +11233,11 @@
11214
11233
  "data-testid": "layerContainerRow"
11215
11234
  }, /*#__PURE__*/React__namespace.createElement(reactSortablejs.ReactSortable, {
11216
11235
  tag: "div",
11217
- list: layerIds,
11236
+ list: layerIds.map(function (layerId) {
11237
+ return {
11238
+ id: layerId
11239
+ };
11240
+ }),
11218
11241
  setList: onSetList,
11219
11242
  animation: 200,
11220
11243
  onSort: onSortEnd,
@@ -11362,6 +11385,15 @@
11362
11385
  }));
11363
11386
  }, baseLayersWithMapId);
11364
11387
  };
11388
+ var areAvailableBaseLayersSame = function areAvailableBaseLayersSame(availableBaseLayerList, newBaseLayerList) {
11389
+ var availableList = availableBaseLayerList.map(function (layer) {
11390
+ return layer.name;
11391
+ });
11392
+ var newList = newBaseLayerList.map(function (layer) {
11393
+ return layer.name;
11394
+ });
11395
+ return _.isEqual(availableList, newList);
11396
+ };
11365
11397
 
11366
11398
  var BaseLayersConnect = function BaseLayersConnect(_a) {
11367
11399
  var mapId = _a.mapId,
@@ -11375,14 +11407,16 @@
11375
11407
  });
11376
11408
  React__namespace.useEffect(function () {
11377
11409
  // Set initial availableBaseLayers only if none set for that map yet
11378
- if (currentAvailableBaseLayers.length < 1) {
11379
- var availableBaseLayersToBeAdded = constructListAvailableBaseLayers(selectedBaseLayers, preloadedAvailableBaseLayers, mapId);
11380
- dispatch(layerActions.addAvailableBaseLayers({
11410
+ var availableBaseLayersToBeAdded = constructListAvailableBaseLayers(selectedBaseLayers, preloadedAvailableBaseLayers, mapId);
11411
+ var areBaseLayersSame = areAvailableBaseLayersSame(availableBaseLayersToBeAdded, currentAvailableBaseLayers);
11412
+
11413
+ if (!areBaseLayersSame) {
11414
+ dispatch(layerActions.setAvailableBaseLayers({
11381
11415
  layers: availableBaseLayersToBeAdded
11382
11416
  }));
11383
11417
  } // eslint-disable-next-line react-hooks/exhaustive-deps
11384
11418
 
11385
- }, [mapId]);
11419
+ }, [mapId, preloadedAvailableBaseLayers]);
11386
11420
 
11387
11421
  var onChangeBaseLayers = function onChangeBaseLayers(newSelectedLayerId) {
11388
11422
  var newBaseLayer = currentAvailableBaseLayers.filter(function (layer) {
@@ -11708,52 +11742,64 @@
11708
11742
  };
11709
11743
 
11710
11744
  var ServicePopup = function ServicePopup(_a) {
11711
- var _b, _c;
11712
-
11713
11745
  var servicePopupVariant = _a.servicePopupVariant,
11714
- _d = _a.hideBackdrop,
11715
- hideBackdrop = _d === void 0 ? false : _d,
11746
+ _b = _a.hideBackdrop,
11747
+ hideBackdrop = _b === void 0 ? false : _b,
11716
11748
  isOpen = _a.isOpen,
11717
11749
  closePopup = _a.closePopup,
11750
+ serviceId = _a.serviceId,
11718
11751
  url = _a.url,
11719
11752
  services = _a.services,
11720
11753
  serviceSetLayers = _a.serviceSetLayers;
11721
11754
 
11722
- var _e = __read(React__namespace.useState(servicePopupVariant !== 'edit' || services === undefined ? '' : (_b = services[url]) === null || _b === void 0 ? void 0 : _b.name), 2),
11723
- serviceName = _e[0],
11724
- setServiceName = _e[1];
11755
+ var _c = __read(React__namespace.useState(''), 2),
11756
+ serviceName = _c[0],
11757
+ setServiceName = _c[1];
11758
+
11759
+ var _d = __read(React__namespace.useState(''), 2),
11760
+ serviceUrl = _d[0],
11761
+ setServiceUrl = _d[1];
11725
11762
 
11726
- var _f = __read(React__namespace.useState(servicePopupVariant === 'add' || url === undefined ? '' : url), 2),
11727
- serviceUrl = _f[0],
11728
- setServiceUrl = _f[1];
11763
+ var _e = __read(React__namespace.useState(''), 2),
11764
+ _abstract = _e[0],
11765
+ setAbstract = _e[1];
11766
+
11767
+ var _f = __read(React__namespace.useState(false), 2),
11768
+ disableButton = _f[0],
11769
+ setDisableButton = _f[1];
11729
11770
 
11730
- var _g = __read(React__namespace.useState(servicePopupVariant !== 'edit' || services === undefined ? '' : (_c = services[url]) === null || _c === void 0 ? void 0 : _c["abstract"]), 2),
11731
- _abstract = _g[0],
11732
- setAbstract = _g[1];
11771
+ var _g = __read(React__namespace.useState(false), 2),
11772
+ isLoading = _g[0],
11773
+ setIsLoading = _g[1];
11733
11774
 
11734
11775
  var _h = __read(React__namespace.useState(false), 2),
11735
- disableButton = _h[0],
11736
- setDisableButton = _h[1];
11776
+ serviceNameHasError = _h[0],
11777
+ setServiceNameHasError = _h[1];
11737
11778
 
11738
- var _j = __read(React__namespace.useState(false), 2),
11739
- isLoading = _j[0],
11740
- setIsLoading = _j[1];
11779
+ var _j = __read(React__namespace.useState(''), 2),
11780
+ serviceNameHelperText = _j[0],
11781
+ setServiceNameHelperText = _j[1];
11741
11782
 
11742
11783
  var _k = __read(React__namespace.useState(false), 2),
11743
- serviceNameHasError = _k[0],
11744
- setServiceNameHasError = _k[1];
11784
+ serviceUrlHasError = _k[0],
11785
+ setServiceUrlHasError = _k[1];
11745
11786
 
11746
11787
  var _l = __read(React__namespace.useState(''), 2),
11747
- serviceNameHelperText = _l[0],
11748
- setServiceNameHelperText = _l[1];
11788
+ serviceUrlHelperText = _l[0],
11789
+ setServiceUrlHelperText = _l[1];
11790
+
11791
+ React__namespace.useEffect(function () {
11792
+ var _a;
11749
11793
 
11750
- var _m = __read(React__namespace.useState(false), 2),
11751
- serviceUrlHasError = _m[0],
11752
- setServiceUrlHasError = _m[1];
11794
+ if (servicePopupVariant === 'edit') {
11795
+ setServiceName(((_a = services[serviceId]) === null || _a === void 0 ? void 0 : _a.serviceName) || '');
11796
+ setServiceUrl(url || '');
11797
+ }
11753
11798
 
11754
- var _o = __read(React__namespace.useState(''), 2),
11755
- serviceUrlHelperText = _o[0],
11756
- setServiceUrlHelperText = _o[1];
11799
+ if (servicePopupVariant === 'save') {
11800
+ setServiceUrl(url || '');
11801
+ }
11802
+ }, [serviceId, services, url, servicePopupVariant, isOpen]);
11757
11803
 
11758
11804
  var validateServiceUrl = function validateServiceUrl(url) {
11759
11805
  if (url === '' || url === null || typeof url === 'undefined') return false;
@@ -11852,11 +11898,10 @@
11852
11898
 
11853
11899
  var ServiceNameInRedux = function ServiceNameInRedux() {
11854
11900
  if (servicePopupVariant === 'add' || servicePopupVariant === 'save') {
11855
- for (var service in services) {
11856
- if (services && services[service].name.toLowerCase() === serviceName.toLowerCase()) return true;
11857
- }
11858
-
11859
- return false;
11901
+ var foundName = Object.keys(services).find(function (serviceId) {
11902
+ return services[serviceId].serviceName.toLowerCase() === (serviceName === null || serviceName === void 0 ? void 0 : serviceName.toLowerCase());
11903
+ });
11904
+ return foundName !== undefined;
11860
11905
  }
11861
11906
 
11862
11907
  return false;
@@ -11864,11 +11909,10 @@
11864
11909
 
11865
11910
  var UrlInRedux = function UrlInRedux() {
11866
11911
  if (servicePopupVariant === 'add' || servicePopupVariant === 'save') {
11867
- if (services && services[serviceUrl]) {
11868
- return true;
11869
- }
11870
-
11871
- return false;
11912
+ var foundUrl = Object.keys(services).find(function (serviceId) {
11913
+ return services[serviceId].serviceUrl === serviceUrl;
11914
+ });
11915
+ return foundUrl !== undefined;
11872
11916
  }
11873
11917
 
11874
11918
  return false;
@@ -11876,6 +11920,7 @@
11876
11920
 
11877
11921
 
11878
11922
  React__namespace.useEffect(function () {
11923
+ if (serviceName === undefined) return;
11879
11924
  setServiceNameHelperText('');
11880
11925
 
11881
11926
  if (ServiceNameInRedux()) {
@@ -11891,7 +11936,7 @@
11891
11936
  React__namespace.useEffect(function () {
11892
11937
  setServiceUrlHelperText('');
11893
11938
 
11894
- if (serviceUrl.length > 0 && !validateServiceUrl(serviceUrl)) {
11939
+ if (serviceUrl && serviceUrl.length > 0 && !validateServiceUrl(serviceUrl)) {
11895
11940
  setServiceUrlHasError(true);
11896
11941
  setServiceUrlHelperText('Error: Not a valid URL.');
11897
11942
  } else if (UrlInRedux()) {
@@ -11978,7 +12023,8 @@
11978
12023
  return setAbstract(event.target.value);
11979
12024
  },
11980
12025
  value: _abstract,
11981
- "data-testid": "abstractTextField"
12026
+ "data-testid": "abstractTextField",
12027
+ disabled: true
11982
12028
  })), /*#__PURE__*/React__namespace.createElement(material.DialogActions, {
11983
12029
  sx: style$1.footerContent
11984
12030
  }, /*#__PURE__*/React__namespace.createElement(material.Button, {
@@ -12034,10 +12080,11 @@
12034
12080
  hideBackdrop = _a.hideBackdrop,
12035
12081
  isOpen = _a.isOpen,
12036
12082
  closePopup = _a.closePopup,
12083
+ serviceId = _a.serviceId,
12037
12084
  url = _a.url;
12038
12085
  var dispatch = reactRedux.useDispatch();
12039
12086
  var services = reactRedux.useSelector(function (store) {
12040
- return getServices(store);
12087
+ return getActiveServices(store);
12041
12088
  });
12042
12089
  var serviceSetLayers = React__default["default"].useCallback(function (payload) {
12043
12090
  dispatch(serviceActions.serviceSetLayers(payload));
@@ -12047,9 +12094,10 @@
12047
12094
  hideBackdrop: hideBackdrop,
12048
12095
  isOpen: isOpen,
12049
12096
  closePopup: closePopup,
12050
- url: url,
12097
+ serviceId: serviceId,
12051
12098
  services: services,
12052
- serviceSetLayers: serviceSetLayers
12099
+ serviceSetLayers: serviceSetLayers,
12100
+ url: url
12053
12101
  });
12054
12102
  };
12055
12103
 
@@ -12209,7 +12257,7 @@
12209
12257
  });
12210
12258
  return /*#__PURE__*/React__namespace.createElement(SearchField, {
12211
12259
  setSearchFilter: function setSearchFilter(filterText) {
12212
- return dispatch(layerSelectActions.setSearchFilter({
12260
+ dispatch(layerSelectActions.setSearchFilter({
12213
12261
  filterText: filterText
12214
12262
  }));
12215
12263
  },
@@ -12442,15 +12490,27 @@
12442
12490
  mapLayers = _a.mapLayers,
12443
12491
  keywordIds = _a.keywordIds,
12444
12492
  allKeywordsActive = _a.allKeywordsActive;
12493
+ var layerSelectFilterHeight = 199;
12445
12494
 
12446
12495
  var _b = __read(React__namespace.useState(0), 2),
12447
12496
  numberOfLayers = _b[0],
12448
12497
  setNumberOfLayers = _b[1];
12449
12498
 
12499
+ var _c = __read(React__namespace.useState([]), 2),
12500
+ layersFilteredFromService = _c[0],
12501
+ setLayersFilteredFromService = _c[1];
12502
+
12450
12503
  React__namespace.useEffect(function () {
12451
12504
  setNumberOfLayers(serviceIds.reduce(function (totalNumberOfLayers, serviceId) {
12452
12505
  return totalNumberOfLayers + filterLayersFromService(serviceId, services, keywordIds, allKeywordsActive, searchString).length;
12453
12506
  }, 0));
12507
+ setLayersFilteredFromService(serviceIds.reduce(function (layerList, serviceId) {
12508
+ return layerList.concat(filterLayersFromService(serviceId, services, keywordIds, allKeywordsActive, searchString).map(function (layer) {
12509
+ return __assign(__assign({}, layer), {
12510
+ serviceId: serviceId
12511
+ });
12512
+ }));
12513
+ }, []));
12454
12514
  }, [serviceIds, keywordIds, services, searchString, allKeywordsActive]);
12455
12515
  return /*#__PURE__*/React__namespace.createElement(material.Box, {
12456
12516
  "data-testid": "layerList"
@@ -12459,25 +12519,26 @@
12459
12519
  marginBottom: '4px',
12460
12520
  fontSize: '12px'
12461
12521
  }
12462
- }, numberOfLayers, " results"), /*#__PURE__*/React__namespace.createElement(material.Box, {
12463
- sx: {
12464
- height: layerSelectHeight - 199,
12465
- overflow: 'auto'
12466
- }
12467
- }, serviceIds.map(function (serviceId) {
12468
- return filterLayersFromService(serviceId, services, keywordIds, allKeywordsActive, searchString).map(function (layer, layerIndex) {
12469
- return /*#__PURE__*/React__namespace.createElement(LayerListRow, {
12470
- key: layer.name,
12471
- layer: layer,
12472
- layerIndex: layerIndex,
12473
- service: services[serviceId],
12474
- serviceUrl: services[serviceId].serviceUrl,
12475
- addLayer: addLayer,
12476
- deleteLayer: deleteLayer,
12477
- mapLayers: mapLayers
12478
- });
12479
- });
12480
- })));
12522
+ }, numberOfLayers, " results"), /*#__PURE__*/React__namespace.createElement(reactWindow.FixedSizeList, {
12523
+ height: layerSelectHeight - layerSelectFilterHeight,
12524
+ itemCount: numberOfLayers,
12525
+ itemSize: 68
12526
+ }, function (_a) {
12527
+ var index = _a.index,
12528
+ style = _a.style;
12529
+ return /*#__PURE__*/React__namespace.createElement("div", {
12530
+ style: style,
12531
+ key: layersFilteredFromService[index].name
12532
+ }, /*#__PURE__*/React__namespace.createElement(LayerListRow, {
12533
+ layer: layersFilteredFromService[index],
12534
+ layerIndex: index,
12535
+ service: services[layersFilteredFromService[index].serviceId],
12536
+ serviceUrl: services[layersFilteredFromService[index].serviceId].serviceUrl,
12537
+ addLayer: addLayer,
12538
+ deleteLayer: deleteLayer,
12539
+ mapLayers: mapLayers
12540
+ }));
12541
+ }));
12481
12542
  };
12482
12543
 
12483
12544
  /* *
@@ -12996,13 +13057,19 @@
12996
13057
 
12997
13058
  var ServiceOptionsDialog = function ServiceOptionsDialog(_a) {
12998
13059
  var services = _a.services,
12999
- mapStoreRemoveService = _a.mapStoreRemoveService,
13000
- _b = _a.layers,
13001
- layers = _b === void 0 ? [] : _b;
13060
+ mapStoreRemoveService = _a.mapStoreRemoveService;
13002
13061
 
13003
- var _c = __read(React__namespace.useState(false), 2),
13004
- addServiceisOpen = _c[0],
13005
- setAddServiceIsOpen = _c[1];
13062
+ var _b = __read(React__namespace.useState(false), 2),
13063
+ addServiceIsOpen = _b[0],
13064
+ setAddServiceIsOpen = _b[1];
13065
+
13066
+ var _c = __read(React__namespace.useState({
13067
+ isOpen: false,
13068
+ serviceId: '',
13069
+ serviceUrl: ''
13070
+ }), 2),
13071
+ editServiceIsOpen = _c[0],
13072
+ setEditServiceIsOpen = _c[1];
13006
13073
 
13007
13074
  var openAddService = function openAddService() {
13008
13075
  setAddServiceIsOpen(true);
@@ -13010,13 +13077,10 @@
13010
13077
 
13011
13078
  var closePopup = function closePopup() {
13012
13079
  setAddServiceIsOpen(false);
13013
- };
13014
-
13015
- var isDisabled = function isDisabled(service) {
13016
- return layers.some(function (layer) {
13017
- return layer.service && layer.service.includes(service);
13018
- }) || preloadedDefaultMapServices.some(function (defaultMapService) {
13019
- return defaultMapService.url && defaultMapService.url.includes(service);
13080
+ setEditServiceIsOpen({
13081
+ isOpen: false,
13082
+ serviceId: '',
13083
+ serviceUrl: ''
13020
13084
  });
13021
13085
  };
13022
13086
 
@@ -13045,16 +13109,25 @@
13045
13109
  marginRight: '-10px'
13046
13110
  }
13047
13111
  }, /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
13048
- title: "Edit Service"
13112
+ title: "Edit Service",
13113
+ disableHoverListener: !services[serviceId].isUserAddedService
13049
13114
  }, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(material.IconButton, {
13050
- disabled: isDisabled(services[serviceId].serviceUrl),
13115
+ disabled: !services[serviceId].isUserAddedService,
13051
13116
  "data-testid": "openEditServiceButton",
13052
- size: "large"
13117
+ size: "large",
13118
+ onClick: function onClick() {
13119
+ setEditServiceIsOpen({
13120
+ isOpen: true,
13121
+ serviceId: serviceId,
13122
+ serviceUrl: services[serviceId].serviceUrl
13123
+ });
13124
+ }
13053
13125
  }, /*#__PURE__*/React__namespace.createElement(theme.Edit, null)))), /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
13054
- title: "Delete Service"
13126
+ title: "Delete Service",
13127
+ disableHoverListener: !services[serviceId].isUserAddedService
13055
13128
  }, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(material.IconButton, {
13056
13129
  size: "large",
13057
- disabled: isDisabled(services[serviceId].serviceUrl),
13130
+ disabled: !services[serviceId].isUserAddedService,
13058
13131
  onClick: function onClick() {
13059
13132
  return mapStoreRemoveService(serviceId, services[serviceId].serviceUrl);
13060
13133
  },
@@ -13068,10 +13141,16 @@
13068
13141
  sx: styles.button,
13069
13142
  variant: "tertiary",
13070
13143
  startIcon: /*#__PURE__*/React__namespace.createElement(theme.Add, null)
13071
- }, "Add a new service"))), addServiceisOpen && /*#__PURE__*/React__namespace.createElement(ServicePopupConnect, {
13144
+ }, "Add a new service"))), addServiceIsOpen && /*#__PURE__*/React__namespace.createElement(ServicePopupConnect, {
13072
13145
  servicePopupVariant: "add",
13073
- isOpen: addServiceisOpen,
13146
+ isOpen: addServiceIsOpen,
13074
13147
  closePopup: closePopup
13148
+ }), editServiceIsOpen && /*#__PURE__*/React__namespace.createElement(ServicePopupConnect, {
13149
+ servicePopupVariant: "edit",
13150
+ isOpen: editServiceIsOpen.isOpen,
13151
+ closePopup: closePopup,
13152
+ serviceId: editServiceIsOpen.serviceId,
13153
+ url: editServiceIsOpen.serviceUrl
13075
13154
  }));
13076
13155
  };
13077
13156
 
@@ -13094,9 +13173,6 @@
13094
13173
 
13095
13174
  var ServiceOptionsDialogConnect = function ServiceOptionsDialogConnect() {
13096
13175
  var dispatch = reactRedux.useDispatch();
13097
- var allLayers = reactRedux.useSelector(function (store) {
13098
- return getAllLayers(store);
13099
- });
13100
13176
  var mapStoreRemoveService = React__namespace.useCallback(function (serviceId, serviceUrl) {
13101
13177
  dispatch(serviceActions.mapStoreRemoveService({
13102
13178
  id: serviceId,
@@ -13108,7 +13184,6 @@
13108
13184
  });
13109
13185
  return /*#__PURE__*/React__namespace.createElement(ServiceOptionsDialog, {
13110
13186
  services: services,
13111
- layers: allLayers,
13112
13187
  mapStoreRemoveService: mapStoreRemoveService
13113
13188
  });
13114
13189
  };
@@ -13399,40 +13474,6 @@
13399
13474
  });
13400
13475
  };
13401
13476
 
13402
- /* *
13403
- * Licensed under the Apache License, Version 2.0 (the "License");
13404
- * you may not use this file except in compliance with the License.
13405
- * You may obtain a copy of the License at
13406
- *
13407
- * http://www.apache.org/licenses/LICENSE-2.0
13408
- *
13409
- * Unless required by applicable law or agreed to in writing, software
13410
- * distributed under the License is distributed on an "AS IS" BASIS,
13411
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13412
- * See the License for the specific language governing permissions and
13413
- * limitations under the License.
13414
- *
13415
- * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
13416
- * Copyright 2021 - Finnish Meteorological Institute (FMI)
13417
- * */
13418
- var CustomSwitch = withStyles__default["default"](function (theme) {
13419
- return {
13420
- switchBase: {
13421
- '&$checked': {
13422
- color: theme.palette.geowebColors.customSlider.thumb
13423
- },
13424
- '&$checked + $track': {
13425
- backgroundColor: theme.palette.geowebColors.buttons.primary["default"].fill
13426
- }
13427
- },
13428
- checked: {},
13429
- track: {
13430
- backgroundColor: theme.palette.geowebColors.customSlider.switchTrackDisabled,
13431
- opacity: '1 !important'
13432
- }
13433
- };
13434
- })(material.Switch);
13435
-
13436
13477
  /* *
13437
13478
  * Licensed under the Apache License, Version 2.0 (the "License");
13438
13479
  * you may not use this file except in compliance with the License.
@@ -13469,7 +13510,7 @@
13469
13510
  keywords: keywords
13470
13511
  }));
13471
13512
  }, [allKeywordIds, allKeywordsActive, checkedKeywordIds, dispatch]);
13472
- return /*#__PURE__*/React__namespace.createElement(CustomSwitch, {
13513
+ return /*#__PURE__*/React__namespace.createElement(material.Switch, {
13473
13514
  checked: allKeywordsActive,
13474
13515
  onChange: toggleKeywords,
13475
13516
  "data-testid": "customSwitch"
@@ -13756,8 +13797,13 @@
13756
13797
  }; // eslint-disable-next-line react-hooks/exhaustive-deps
13757
13798
  }, []);
13758
13799
  var serviceSetLayers = React__namespace.useCallback(function (payload) {
13759
- return dispatch(serviceActions.serviceSetLayers(payload));
13800
+ dispatch(serviceActions.serviceSetLayers(payload));
13760
13801
  }, [dispatch]);
13802
+
13803
+ var checkIfUserAddedService = function checkIfUserAddedService(service) {
13804
+ return !!service.isUserAddedService;
13805
+ };
13806
+
13761
13807
  React__namespace.useEffect(function () {
13762
13808
  if (isOpenInStore && preloadedServices && preloadedServices.length > 0) {
13763
13809
  mergePresetsAndUserAddedServices(preloadedServices, getUserAddedServices()).forEach(function (service) {
@@ -13769,7 +13815,7 @@
13769
13815
  name: service.name,
13770
13816
  serviceUrl: service.url,
13771
13817
  layers: layers,
13772
- isUserAddedService: false
13818
+ isUserAddedService: checkIfUserAddedService(service)
13773
13819
  });
13774
13820
  }
13775
13821
  })["catch"](function () {
@@ -14851,7 +14897,6 @@
14851
14897
  var animationDelay = _a.animationDelay,
14852
14898
  setMapAnimationDelay = _a.setMapAnimationDelay;
14853
14899
  var classes = useStyles$c();
14854
- var sliderClasses = shared.sliderStyles();
14855
14900
 
14856
14901
  var _b = __read(React__namespace.useState(false), 2),
14857
14902
  open = _b[0],
@@ -14915,8 +14960,8 @@
14915
14960
  text: text
14916
14961
  })))), open ? /*#__PURE__*/React__namespace.createElement("div", {
14917
14962
  className: classes.sliderBackground
14918
- }, /*#__PURE__*/React__namespace.createElement("div", {
14919
- className: sliderClasses.sliderHeader
14963
+ }, /*#__PURE__*/React__namespace.createElement(material.Box, {
14964
+ sx: shared.sliderHeaderStyle
14920
14965
  }, "Speed"), /*#__PURE__*/React__namespace.createElement(shared.CustomSlider, {
14921
14966
  "data-testid": "speedSlider",
14922
14967
  orientation: "vertical",
@@ -15093,31 +15138,6 @@
15093
15138
  disabled: {}
15094
15139
  };
15095
15140
  });
15096
- var TimeStepSwitch = withStyles__default["default"](function (theme) {
15097
- return {
15098
- root: {
15099
- marginLeft: '18px'
15100
- },
15101
- thumb: {
15102
- width: 20,
15103
- height: 20,
15104
- margin: '0 0 0 0'
15105
- },
15106
- switchBase: {
15107
- '&$checked': {
15108
- color: theme.palette.geowebColors.customSlider.thumb
15109
- },
15110
- '&$checked + $track': {
15111
- backgroundColor: theme.palette.geowebColors.customSlider.switchTrack
15112
- }
15113
- },
15114
- checked: {},
15115
- track: {
15116
- backgroundColor: theme.palette.geowebColors.customSlider.switchTrackDisabled,
15117
- opacity: '1 !important'
15118
- }
15119
- };
15120
- })(material.Switch);
15121
15141
 
15122
15142
  var TimeStepButton = function TimeStepButton(_a) {
15123
15143
  var timeStep = _a.timeStep,
@@ -15132,7 +15152,6 @@
15132
15152
  return null;
15133
15153
  } : _d;
15134
15154
  var classes = useStyles$b();
15135
- var sliderClasses = shared.sliderStyles();
15136
15155
 
15137
15156
  var _e = __read(React__namespace.useState(false), 2),
15138
15157
  open = _e[0],
@@ -15200,8 +15219,8 @@
15200
15219
  "data-testid": "timeStepButtonText"
15201
15220
  })))), open ? /*#__PURE__*/React__namespace.createElement("div", {
15202
15221
  className: classes.sliderBackground
15203
- }, /*#__PURE__*/React__namespace.createElement("div", {
15204
- className: sliderClasses.sliderHeader
15222
+ }, /*#__PURE__*/React__namespace.createElement(material.Box, {
15223
+ sx: shared.sliderHeaderStyle
15205
15224
  }, "Time step"), /*#__PURE__*/React__namespace.createElement(shared.CustomSlider, {
15206
15225
  "data-testid": "timeStepButtonSlider",
15207
15226
  orientation: "vertical",
@@ -15219,14 +15238,17 @@
15219
15238
  }, /*#__PURE__*/React__namespace.createElement("span", {
15220
15239
  "data-testid": "timestepAutoSwitchTooltip"
15221
15240
  }, /*#__PURE__*/React__namespace.createElement(material.FormControlLabel, {
15222
- control: /*#__PURE__*/React__namespace.createElement(TimeStepSwitch, {
15241
+ control: /*#__PURE__*/React__namespace.createElement(material.Switch, {
15223
15242
  checked: isTimestepAuto,
15224
15243
  onChange: function onChange() {
15225
15244
  return onToggleTimestepAuto();
15226
15245
  },
15227
15246
  disabled: disabled,
15228
15247
  id: "timestepAutoSwitch",
15229
- disableRipple: true
15248
+ disableRipple: true,
15249
+ sx: {
15250
+ marginLeft: '18px'
15251
+ }
15230
15252
  }),
15231
15253
  label: "Auto",
15232
15254
  labelPlacement: "end",
@@ -21057,8 +21079,10 @@
21057
21079
 
21058
21080
 
21059
21081
  if (!prevProps || prevProps.disableMapPin !== props.disableMapPin) {
21060
- if (!(props.disableMapPin === undefined)) {
21061
- this.adaguc.webMapJS.getMapPin().toggleDisableMapPin();
21082
+ if (props.disableMapPin === true) {
21083
+ this.adaguc.webMapJS.getMapPin().setMapPinDisabled();
21084
+ } else if (props.disableMapPin === false) {
21085
+ this.adaguc.webMapJS.getMapPin().setMapPinEnabled();
21062
21086
  }
21063
21087
  }
21064
21088
  /* Change the animation delay */
@@ -21381,7 +21405,10 @@
21381
21405
  _this.onUpdateBBoxListener(newBbox);
21382
21406
  }, true);
21383
21407
  this.adaguc.webMapJS.addListener('onsetmappin', function (mapPinLatLonCoordinate) {
21384
- if (onMapPinChangeLocation) {
21408
+ // only change location when mapPin is visible and enabled
21409
+ if (onMapPinChangeLocation && // eslint-disable-next-line react/destructuring-assignment
21410
+ _this.props.displayMapPin && // eslint-disable-next-line react/destructuring-assignment
21411
+ !_this.props.disableMapPin) {
21385
21412
  onMapPinChangeLocation({
21386
21413
  mapPinLocation: {
21387
21414
  lat: mapPinLatLonCoordinate.lat,
@@ -21490,6 +21517,7 @@
21490
21517
  },
21491
21518
  shouldAutoFetch: true,
21492
21519
  displayMapPin: false,
21520
+ disableMapPin: false,
21493
21521
  onMount: function onMount() {
21494
21522
  return null;
21495
21523
  },
@@ -21738,28 +21766,28 @@
21738
21766
  dispatch(layerActions.onUpdateLayerInformation(payload));
21739
21767
  }, [dispatch]);
21740
21768
  var registerMap = React__namespace.useCallback(function (payload) {
21741
- return dispatch(mapActions$1.registerMap(payload));
21769
+ dispatch(mapActions$1.registerMap(payload));
21742
21770
  }, [dispatch]);
21743
21771
  var unregisterMap = React__namespace.useCallback(function (payload) {
21744
- return dispatch(mapActions$1.unregisterMap(payload));
21772
+ dispatch(mapActions$1.unregisterMap(payload));
21745
21773
  }, [dispatch]);
21746
21774
  var genericSetBbox = React__namespace.useCallback(function (payload) {
21747
- return dispatch(genericActions.setBbox(payload));
21775
+ dispatch(genericActions.setBbox(payload));
21748
21776
  }, [dispatch]);
21749
21777
  var syncGroupAddSource = React__namespace.useCallback(function (payload) {
21750
- return dispatch(genericActions.syncGroupAddSource(payload));
21778
+ dispatch(genericActions.syncGroupAddSource(payload));
21751
21779
  }, [dispatch]);
21752
21780
  var syncGroupRemoveSource = React__namespace.useCallback(function (payload) {
21753
- return dispatch(genericActions.syncGroupRemoveSource(payload));
21781
+ dispatch(genericActions.syncGroupRemoveSource(payload));
21754
21782
  }, [dispatch]);
21755
21783
  var layerError = React__namespace.useCallback(function (payload) {
21756
- return dispatch(layerActions.layerError(payload));
21784
+ dispatch(layerActions.layerError(payload));
21757
21785
  }, [dispatch]);
21758
21786
  var mapPinChangeLocation = React__namespace.useCallback(function (payload) {
21759
- return dispatch(mapActions$1.setMapPinLocation(payload));
21787
+ dispatch(mapActions$1.setMapPinLocation(payload));
21760
21788
  }, [dispatch]);
21761
21789
  var setSelectedFeature = React__namespace.useCallback(function (payload) {
21762
- return dispatch(mapActions$1.setSelectedFeature(payload));
21790
+ dispatch(mapActions$1.setSelectedFeature(payload));
21763
21791
  }, [dispatch]);
21764
21792
  useKeyboardZoomAndPan(mapId);
21765
21793
  return /*#__PURE__*/React__namespace.createElement("div", {
@@ -22034,7 +22062,8 @@
22034
22062
  displayDimensionSelectButtonInMap = _o === void 0 ? true : _o,
22035
22063
  _p = _a.multiLegend,
22036
22064
  multiLegend = _p === void 0 ? true : _p,
22037
- props = __rest(_a, ["id", "title", "layers", "shouldAutoUpdate", "shouldAnimate", "bbox", "srs", "shouldShowZoomControls", "displayMapPin", "showTimeSlider", "disableTimeSlider", "displayTimeInMap", "displayLayerManagerAndLegendButtonInMap", "displayDimensionSelectButtonInMap", "multiLegend"]);
22065
+ shouldShowLayerManager = _a.shouldShowLayerManager,
22066
+ props = __rest(_a, ["id", "title", "layers", "shouldAutoUpdate", "shouldAnimate", "bbox", "srs", "shouldShowZoomControls", "displayMapPin", "showTimeSlider", "disableTimeSlider", "displayTimeInMap", "displayLayerManagerAndLegendButtonInMap", "displayDimensionSelectButtonInMap", "multiLegend", "shouldShowLayerManager"]);
22038
22067
 
22039
22068
  var dispatch = reactRedux.useDispatch();
22040
22069
  var mapId = React__default["default"].useRef(id || generateMapId()).current;
@@ -22065,7 +22094,17 @@
22065
22094
  dispatch(mapActions$1.setMapPreset({
22066
22095
  mapId: mapId,
22067
22096
  initialProps: initialProps
22068
- })); // eslint-disable-next-line react-hooks/exhaustive-deps
22097
+ }));
22098
+
22099
+ if (shouldShowLayerManager !== undefined) {
22100
+ dispatch(uiActions.setActiveMapIdForDialog({
22101
+ type: 'layerManager',
22102
+ mapId: mapId,
22103
+ setOpen: shouldShowLayerManager,
22104
+ source: 'app'
22105
+ }));
22106
+ } // eslint-disable-next-line react-hooks/exhaustive-deps
22107
+
22069
22108
  }, []);
22070
22109
  return /*#__PURE__*/React__default["default"].createElement(material.Box, {
22071
22110
  sx: {
@@ -22155,7 +22194,7 @@
22155
22194
  var classes = useStyles$2();
22156
22195
  var dispatch = reactRedux.useDispatch();
22157
22196
  var syncGroupAddTarget = React__default["default"].useCallback(function (payload) {
22158
- return dispatch(genericActions.syncGroupAddTarget(payload));
22197
+ dispatch(genericActions.syncGroupAddTarget(payload));
22159
22198
  }, [dispatch]);
22160
22199
  React__default["default"].useEffect(function () {
22161
22200
  maps.forEach(function (map) {
@@ -22851,16 +22890,16 @@
22851
22890
 
22852
22891
  var viewState = reactRedux.useSelector(syncGroupGetViewState);
22853
22892
  var syncGroupAddGroup = React__namespace.useCallback(function (payload) {
22854
- return dispatch(actions.syncGroupAddGroup(payload));
22893
+ dispatch(actions.syncGroupAddGroup(payload));
22855
22894
  }, [dispatch]);
22856
22895
  var syncGroupRemoveGroup = React__namespace.useCallback(function (payload) {
22857
- return dispatch(actions.syncGroupRemoveGroup(payload));
22896
+ dispatch(actions.syncGroupRemoveGroup(payload));
22858
22897
  }, [dispatch]);
22859
22898
  var syncGroupAddTarget = React__namespace.useCallback(function (payload) {
22860
- return dispatch(actions.syncGroupAddTarget(payload));
22899
+ dispatch(actions.syncGroupAddTarget(payload));
22861
22900
  }, [dispatch]);
22862
22901
  var syncGroupRemoveTarget = React__namespace.useCallback(function (payload) {
22863
- return dispatch(actions.syncGroupRemoveTarget(payload));
22902
+ dispatch(actions.syncGroupRemoveTarget(payload));
22864
22903
  }, [dispatch]);
22865
22904
  var isOpenInStore = reactRedux.useSelector(function (store) {
22866
22905
  return getisDialogOpen(store, 'syncGroups');
@@ -23136,21 +23175,17 @@
23136
23175
  }
23137
23176
  }, /*#__PURE__*/React__default["default"].createElement("h1", {
23138
23177
  "data-testid": "map-warning-properties-title"
23139
- }, selectedFeatureProperties.country), selectedFeatureProperties.details[0].event && /*#__PURE__*/React__default["default"].createElement("pre", {
23140
- "data-testid": "map-warning-properties-row"
23141
- }, "Event: ", selectedFeatureProperties.details[0].event), selectedFeatureProperties.details[0].sent && /*#__PURE__*/React__default["default"].createElement("pre", {
23142
- "data-testid": "map-warning-properties-row"
23143
- }, "Sent:", ' ', moment__default["default"].utc(selectedFeatureProperties.details[0].sent).format('DD MMM YYYY, HH:mm'), ' ', "UTC"), selectedFeatureProperties.details[0].expires && /*#__PURE__*/React__default["default"].createElement("pre", {
23178
+ }, selectedFeatureProperties.areaDesc), selectedFeatureProperties.areaDesc && /*#__PURE__*/React__default["default"].createElement("pre", {
23144
23179
  "data-testid": "map-warning-properties-row"
23145
- }, "Expires:", ' ', moment__default["default"].utc(selectedFeatureProperties.details[0].expires).format('DD MMM YYYY, HH:mm'), ' ', "UTC"), selectedFeatureProperties.details[0].web && /*#__PURE__*/React__default["default"].createElement("pre", {
23180
+ }, "event: ", selectedFeatureProperties.languages[2].event), selectedFeatureProperties.onset && /*#__PURE__*/React__default["default"].createElement("pre", {
23146
23181
  "data-testid": "map-warning-properties-row"
23147
- }, "Web: ", selectedFeatureProperties.details[0].web), selectedFeatureProperties.details[0].sender && /*#__PURE__*/React__default["default"].createElement("pre", {
23182
+ }, "Sent:", ' ', moment__default["default"].utc(selectedFeatureProperties.onset).format('DD MMM YYYY, HH:mm'), ' ', "UTC"), selectedFeatureProperties.expires && /*#__PURE__*/React__default["default"].createElement("pre", {
23148
23183
  "data-testid": "map-warning-properties-row"
23149
- }, "Sender: ", selectedFeatureProperties.details[0].sender), selectedFeatureProperties.details[0].identifier && /*#__PURE__*/React__default["default"].createElement("pre", {
23184
+ }, "Expires:", ' ', moment__default["default"].utc(selectedFeatureProperties.expires).format('DD MMM YYYY, HH:mm'), ' ', "UTC"), selectedFeatureProperties.languages[2].senderName && /*#__PURE__*/React__default["default"].createElement("pre", {
23150
23185
  "data-testid": "map-warning-properties-row"
23151
- }, "Identifier: ", selectedFeatureProperties.details[0].identifier), selectedFeatureProperties.details[0].area && /*#__PURE__*/React__default["default"].createElement("pre", {
23186
+ }, "Sender: ", selectedFeatureProperties.languages[2].senderName), selectedFeatureProperties.identifier && /*#__PURE__*/React__default["default"].createElement("pre", {
23152
23187
  "data-testid": "map-warning-properties-row"
23153
- }, "area: ", selectedFeatureProperties.details[0].area));
23188
+ }, "Identifier: ", selectedFeatureProperties.identifier));
23154
23189
  };
23155
23190
 
23156
23191
  /* *