@opengeoweb/core 2.14.0 → 4.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 (49) hide show
  1. package/index.esm.js +570 -411
  2. package/index.umd.js +596 -411
  3. package/lib/components/ConfigurableMap/ConfigurableMapConnect.d.ts +1 -0
  4. package/lib/components/LayerManager/BaseLayerRow/BaseLayers/BaseLayersConnect.d.ts +1 -0
  5. package/lib/components/LayerManager/LayerSelect/LayerSelectUtils.d.ts +3 -3
  6. package/lib/components/LayerManager/LayerSelect/ServiceOptionsDialog/ServiceOptionsDialog.d.ts +0 -2
  7. package/lib/components/LayerManager/LayerSelect/ServicePopup/ServicePopup.d.ts +3 -1
  8. package/lib/components/LayerManager/LayerSelect/ServicePopup/ServicePopupConnect.d.ts +1 -0
  9. package/lib/components/Legend/LegendConnect.d.ts +1 -1
  10. package/lib/components/MapView/MapViewConnect.MapPin.stories.d.ts +4 -0
  11. package/lib/components/MapView/MapViewConnect.stories.d.ts +0 -1
  12. package/lib/components/MapWarning/MapWarningProperties.d.ts +16 -1
  13. package/lib/components/ReactMapView/ReactMapView.d.ts +1 -0
  14. package/lib/components/Snackbar/SnackbarWrapper.d.ts +9 -0
  15. package/lib/components/{CustomSwitch/CustomSwitch.spec.d.ts → Snackbar/SnackbarWrapper.spec.d.ts} +0 -0
  16. package/lib/components/Snackbar/SnackbarWrapper.stories.d.ts +7 -0
  17. package/lib/components/Snackbar/SnackbarWrapperConnect.d.ts +3 -0
  18. package/lib/components/Snackbar/SnackbarWrapperConnect.spec.d.ts +1 -0
  19. package/lib/components/TimeSlider/TimeSliderButtons/AutoUpdateButton/AutoUpdateButton.d.ts +2 -0
  20. package/lib/components/TimeSlider/TimeSliderButtons/SpeedButton/SpeedButton.d.ts +1 -0
  21. package/lib/components/TimeSlider/TimeSliderButtons/TimeStepButton/TimeStepButton.d.ts +1 -0
  22. package/lib/components/WMSLoader/services.d.ts +1 -0
  23. package/lib/index.d.ts +1 -0
  24. package/lib/store/coreModuleConfig.d.ts +1 -1
  25. package/lib/store/index.d.ts +1 -0
  26. package/lib/store/layerSelect/types.d.ts +2 -0
  27. package/lib/store/mapStore/layers/reducer.d.ts +3 -1
  28. package/lib/store/mapStore/layers/types.d.ts +1 -0
  29. package/lib/store/mapStore/map/selectors.d.ts +1 -1
  30. package/lib/store/mapStore/map/types.d.ts +1 -0
  31. package/lib/store/mapStore/map/utils.d.ts +2 -1
  32. package/lib/store/mapStore/service/selectors.d.ts +2 -0
  33. package/lib/store/mapStore/service/types.d.ts +1 -0
  34. package/lib/store/snackbar/config.d.ts +4 -0
  35. package/lib/store/snackbar/index.d.ts +2 -0
  36. package/lib/store/snackbar/reducer.d.ts +11 -0
  37. package/lib/store/snackbar/reducer.spec.d.ts +1 -0
  38. package/lib/store/snackbar/sagas.d.ts +5 -0
  39. package/lib/store/snackbar/sagas.spec.d.ts +1 -0
  40. package/lib/store/snackbar/selectors.d.ts +10 -0
  41. package/lib/store/snackbar/selectors.spec.d.ts +1 -0
  42. package/lib/store/snackbar/types.d.ts +17 -0
  43. package/lib/utils/jsonPresetFilter.d.ts +11 -12
  44. package/lib/utils/types.d.ts +2 -1
  45. package/package.json +8 -7
  46. package/lib/components/CustomSwitch/CustomSwitch.d.ts +0 -3
  47. package/lib/components/CustomSwitch/CustomSwitch.stories.d.ts +0 -7
  48. package/lib/components/CustomSwitch/index.d.ts +0 -1
  49. 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
  };
@@ -1303,7 +1306,7 @@
1303
1306
  status: status
1304
1307
  });
1305
1308
  };
1306
- var initialState$5 = {
1309
+ var initialState$6 = {
1307
1310
  byId: {},
1308
1311
  allIds: [],
1309
1312
  availableBaseLayers: {
@@ -1311,8 +1314,8 @@
1311
1314
  allIds: []
1312
1315
  }
1313
1316
  };
1314
- var slice$5 = toolkit.createSlice({
1315
- initialState: initialState$5,
1317
+ var slice$6 = toolkit.createSlice({
1318
+ initialState: initialState$6,
1316
1319
  name: 'layerReducer',
1317
1320
  reducers: {
1318
1321
  addLayer: function addLayer(draft, action) {
@@ -1529,15 +1532,26 @@
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,
1535
1549
  layerDimensions = _a.layerDimensions;
1536
1550
  var layerStyleAction = layerActions.layerChangeStyle(layerStyle);
1537
1551
  var state = produce.current(draft);
1538
- var intermediateState = layerStyle === null ? state : reducer$5(state, layerStyleAction);
1552
+ var intermediateState = layerStyle === null ? state : reducer$6(state, layerStyleAction);
1539
1553
  var dimensionsAction = layerActions.layerSetDimensions(layerDimensions);
1540
- var newState = layerDimensions === null ? intermediateState : reducer$5(intermediateState, dimensionsAction);
1554
+ var newState = layerDimensions === null ? intermediateState : reducer$6(intermediateState, dimensionsAction);
1541
1555
  return newState;
1542
1556
  }
1543
1557
  },
@@ -1582,7 +1596,7 @@
1582
1596
  };
1583
1597
  /* Handle the Layer action with the same logic, using the same reducer */
1584
1598
 
1585
- return reducer$5(prevState, action);
1599
+ return reducer$6(prevState, action);
1586
1600
  }, state);
1587
1601
  }).addCase(setMapPreset, function (draft, action) {
1588
1602
  var mapId = action.payload.mapId;
@@ -1602,8 +1616,8 @@
1602
1616
  });
1603
1617
  }
1604
1618
  });
1605
- var reducer$5 = slice$5.reducer;
1606
- var layerActions = slice$5.actions;
1619
+ var reducer$6 = slice$6.reducer;
1620
+ var layerActions = slice$6.actions;
1607
1621
 
1608
1622
  /* *
1609
1623
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -1621,12 +1635,12 @@
1621
1635
  * Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
1622
1636
  * Copyright 2020 - Finnish Meteorological Institute (FMI)
1623
1637
  * */
1624
- var initialState$4 = {
1638
+ var initialState$5 = {
1625
1639
  byId: {},
1626
1640
  allIds: []
1627
1641
  };
1628
- var slice$4 = toolkit.createSlice({
1629
- initialState: initialState$4,
1642
+ var slice$5 = toolkit.createSlice({
1643
+ initialState: initialState$5,
1630
1644
  name: 'serviceReducer',
1631
1645
  reducers: {
1632
1646
  serviceSetLayers: function serviceSetLayers(draft, action) {
@@ -1653,13 +1667,13 @@
1653
1667
  var serviceLayers = action.payload.serviceLayers;
1654
1668
  if (serviceLayers === null) return draft;
1655
1669
  var mapAction = serviceActions.serviceSetLayers(serviceLayers);
1656
- var newState = reducer$4(draft, mapAction);
1670
+ var newState = reducer$5(draft, mapAction);
1657
1671
  return newState;
1658
1672
  });
1659
1673
  }
1660
1674
  });
1661
- var reducer$4 = slice$4.reducer;
1662
- var serviceActions = slice$4.actions;
1675
+ var reducer$5 = slice$5.reducer;
1676
+ var serviceActions = slice$5.actions;
1663
1677
 
1664
1678
  /* *
1665
1679
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -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;
@@ -1861,13 +1876,13 @@
1861
1876
  source: source
1862
1877
  };
1863
1878
  };
1864
- var initialState$3 = {
1879
+ var initialState$4 = {
1865
1880
  order: [],
1866
1881
  dialogs: {},
1867
1882
  activeWindowId: undefined
1868
1883
  };
1869
- var slice$3 = toolkit.createSlice({
1870
- initialState: initialState$3,
1884
+ var slice$4 = toolkit.createSlice({
1885
+ initialState: initialState$4,
1871
1886
  name: 'uiReducer',
1872
1887
  reducers: {
1873
1888
  registerDialog: function registerDialog(draft, action) {
@@ -1944,8 +1959,8 @@
1944
1959
  }
1945
1960
  }
1946
1961
  });
1947
- var reducer$3 = slice$3.reducer;
1948
- var uiActions = slice$3.actions;
1962
+ var reducer$4 = slice$4.reducer;
1963
+ var uiActions = slice$4.actions;
1949
1964
 
1950
1965
  /* *
1951
1966
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -2012,12 +2027,12 @@
2012
2027
  });
2013
2028
  };
2014
2029
 
2015
- var initialState$2 = {
2030
+ var initialState$3 = {
2016
2031
  byId: {},
2017
2032
  allIds: []
2018
2033
  };
2019
- var slice$2 = toolkit.createSlice({
2020
- initialState: initialState$2,
2034
+ var slice$3 = toolkit.createSlice({
2035
+ initialState: initialState$3,
2021
2036
  name: 'mapReducer',
2022
2037
  reducers: {
2023
2038
  registerMap: function registerMap(draft, action) {
@@ -2583,13 +2598,13 @@
2583
2598
  };
2584
2599
  /* Handle the Layer action with the same logic, using the same reducer */
2585
2600
 
2586
- return reducer$2(prevState, action);
2601
+ return reducer$3(prevState, action);
2587
2602
  }, draft);
2588
2603
  }).addCase(onUpdateLayerInformation, function (draft, action) {
2589
2604
  var mapDimensions = action.payload.mapDimensions;
2590
2605
  if (mapDimensions === null) return draft;
2591
2606
  var mapAction = mapActions$1.mapUpdateAllMapDimensions(mapDimensions);
2592
- return reducer$2(draft, mapAction);
2607
+ return reducer$3(draft, mapAction);
2593
2608
  }).addCase(mapChangeDimension, function (draft, action) {
2594
2609
  var _a = action.payload,
2595
2610
  mapId = _a.mapId,
@@ -2628,11 +2643,11 @@
2628
2643
  });
2629
2644
  }
2630
2645
  });
2631
- var mapActions$1 = __assign(__assign({}, slice$2.actions), {
2646
+ var mapActions$1 = __assign(__assign({}, slice$3.actions), {
2632
2647
  setMapPreset: setMapPreset,
2633
2648
  mapChangeDimension: mapChangeDimension
2634
2649
  });
2635
- var reducer$2 = slice$2.reducer;
2650
+ var reducer$3 = slice$3.reducer;
2636
2651
 
2637
2652
  /* *
2638
2653
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -3130,7 +3145,7 @@
3130
3145
  * Copyright 2020 - Finnish Meteorological Institute (FMI)
3131
3146
  * */
3132
3147
  var _a$2;
3133
- var initialState$1 = {
3148
+ var initialState$2 = {
3134
3149
  sources: {
3135
3150
  byId: {},
3136
3151
  allIds: []
@@ -3154,8 +3169,8 @@
3154
3169
  }
3155
3170
  }
3156
3171
  };
3157
- var slice$1 = toolkit.createSlice({
3158
- initialState: initialState$1,
3172
+ var slice$2 = toolkit.createSlice({
3173
+ initialState: initialState$2,
3159
3174
  name: 'synchronizationGroupsReducer',
3160
3175
  reducers: {
3161
3176
  syncGroupAddSource: function syncGroupAddSource(draft, action) {
@@ -3299,7 +3314,7 @@
3299
3314
  });
3300
3315
  },
3301
3316
  syncGroupClear: function syncGroupClear() {
3302
- return initialState$1;
3317
+ return initialState$2;
3303
3318
  },
3304
3319
  syncGroupSetViewState: function syncGroupSetViewState(draft, action) {
3305
3320
  var viewState = action.payload.viewState;
@@ -3371,7 +3386,7 @@
3371
3386
  });
3372
3387
  };
3373
3388
 
3374
- var syncGroupAddGroup = (_a$2 = slice$1.actions, _a$2.syncGroupAddGroup),
3389
+ var syncGroupAddGroup = (_a$2 = slice$2.actions, _a$2.syncGroupAddGroup),
3375
3390
  syncGroupAddSource = _a$2.syncGroupAddSource,
3376
3391
  syncGroupAddTarget = _a$2.syncGroupAddTarget;
3377
3392
  _a$2.syncGroupClear;
@@ -3380,8 +3395,8 @@
3380
3395
  syncGroupRemoveSource = _a$2.syncGroupRemoveSource,
3381
3396
  syncGroupRemoveTarget = _a$2.syncGroupRemoveTarget,
3382
3397
  syncGroupSetViewState = _a$2.syncGroupSetViewState;
3383
- var actions = slice$1.actions,
3384
- reducer$1 = slice$1.reducer;
3398
+ var actions = slice$2.actions,
3399
+ reducer$2 = slice$2.reducer;
3385
3400
 
3386
3401
  /* *
3387
3402
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -3438,7 +3453,7 @@
3438
3453
  actions: actions,
3439
3454
  constants: constants,
3440
3455
  types: types$1,
3441
- initialState: initialState$1
3456
+ initialState: initialState$2
3442
3457
  });
3443
3458
 
3444
3459
  /* *
@@ -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
@@ -4277,7 +4292,7 @@
4277
4292
  * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4278
4293
  * Copyright 2021 - Finnish Meteorological Institute (FMI)
4279
4294
  * */
4280
- var initialState = {
4295
+ var initialState$1 = {
4281
4296
  filters: {
4282
4297
  searchFilter: '',
4283
4298
  activeServices: {
@@ -4290,8 +4305,8 @@
4290
4305
  }
4291
4306
  }
4292
4307
  };
4293
- var slice = toolkit.createSlice({
4294
- initialState: initialState,
4308
+ var slice$1 = toolkit.createSlice({
4309
+ initialState: initialState$1,
4295
4310
  name: 'layerSelect',
4296
4311
  reducers: {
4297
4312
  setSearchFilter: function setSearchFilter(draft, action) {
@@ -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
  },
@@ -4475,8 +4492,8 @@
4475
4492
  }
4476
4493
  }
4477
4494
  });
4478
- var reducer = slice.reducer;
4479
- var layerSelectActions = slice.actions;
4495
+ var reducer$1 = slice$1.reducer;
4496
+ var layerSelectActions = slice$1.actions;
4480
4497
 
4481
4498
  /* *
4482
4499
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -4608,6 +4625,78 @@
4608
4625
  return (_d = (_c = (_b = (_a = store === null || store === void 0 ? void 0 : store.layerSelect) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.keywords) === null || _c === void 0 ? void 0 : _c.byId[keywordId]) !== null && _d !== void 0 ? _d : {};
4609
4626
  };
4610
4627
 
4628
+ /* *
4629
+ * Licensed under the Apache License, Version 2.0 (the "License");
4630
+ * you may not use this file except in compliance with the License.
4631
+ * You may obtain a copy of the License at
4632
+ *
4633
+ * http://www.apache.org/licenses/LICENSE-2.0
4634
+ *
4635
+ * Unless required by applicable law or agreed to in writing, software
4636
+ * distributed under the License is distributed on an "AS IS" BASIS,
4637
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4638
+ * See the License for the specific language governing permissions and
4639
+ * limitations under the License.
4640
+ *
4641
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4642
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
4643
+ * */
4644
+ var snackbarAdapter = toolkit.createEntityAdapter();
4645
+ var initialState = snackbarAdapter.getInitialState();
4646
+ var slice = toolkit.createSlice({
4647
+ initialState: initialState,
4648
+ name: 'snackbar',
4649
+ reducers: {
4650
+ // To open the snackbar call this action
4651
+ // eslint-disable-next-line no-unused-vars
4652
+ openSnackbar: function openSnackbar(draft, action) {},
4653
+ // triggerOpenSnackbarBySaga is triggered by the saga to open the snackbar after the current snackbars have all been closed
4654
+ // DO NOT CALL THIS ACTION DIRECTLY!
4655
+ triggerOpenSnackbarBySaga: function triggerOpenSnackbarBySaga(draft, action) {
4656
+ var snackbarContent = action.payload.snackbarContent; // Ensure we have an id before proceeding
4657
+
4658
+ if (snackbarContent.id === undefined) {
4659
+ return;
4660
+ }
4661
+
4662
+ snackbarAdapter.setOne(draft, snackbarContent);
4663
+ },
4664
+ closeSnackbar: function closeSnackbar(draft) {
4665
+ snackbarAdapter.removeAll(draft);
4666
+ }
4667
+ }
4668
+ });
4669
+ var reducer = slice.reducer;
4670
+ var snackbarActions = slice.actions;
4671
+
4672
+ /* *
4673
+ * Licensed under the Apache License, Version 2.0 (the "License");
4674
+ * you may not use this file except in compliance with the License.
4675
+ * You may obtain a copy of the License at
4676
+ *
4677
+ * http://www.apache.org/licenses/LICENSE-2.0
4678
+ *
4679
+ * Unless required by applicable law or agreed to in writing, software
4680
+ * distributed under the License is distributed on an "AS IS" BASIS,
4681
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4682
+ * See the License for the specific language governing permissions and
4683
+ * limitations under the License.
4684
+ *
4685
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4686
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
4687
+ * */
4688
+ var getCurrentSnackbarMessages = snackbarAdapter.getSelectors(function (state) {
4689
+ var _a;
4690
+
4691
+ return (_a = state === null || state === void 0 ? void 0 : state.snackbar) !== null && _a !== void 0 ? _a : {
4692
+ entities: {},
4693
+ ids: []
4694
+ };
4695
+ }).selectAll;
4696
+ toolkit.createSelector(getCurrentSnackbarMessages, function (currentMessages) {
4697
+ return currentMessages.length > 0 ? currentMessages[0] : undefined;
4698
+ });
4699
+
4611
4700
  var types = /*#__PURE__*/Object.freeze({
4612
4701
  __proto__: null
4613
4702
  });
@@ -5252,7 +5341,7 @@
5252
5341
  }
5253
5342
  });
5254
5343
  }
5255
- function rootSaga$4() {
5344
+ function rootSaga$5() {
5256
5345
  return __generator(this, function (_a) {
5257
5346
  switch (_a.label) {
5258
5347
  case 0:
@@ -5622,7 +5711,7 @@
5622
5711
  });
5623
5712
  }
5624
5713
 
5625
- function rootSaga$3() {
5714
+ function rootSaga$4() {
5626
5715
  return __generator(this, function (_a) {
5627
5716
  switch (_a.label) {
5628
5717
  case 0:
@@ -5715,9 +5804,9 @@
5715
5804
  var synchronizationGroupConfig = {
5716
5805
  id: 'syncronizationGroupStore-module',
5717
5806
  reducerMap: {
5718
- syncronizationGroupStore: reducer$1
5807
+ syncronizationGroupStore: reducer$2
5719
5808
  },
5720
- sagas: [rootSaga$4, rootSaga$3]
5809
+ sagas: [rootSaga$5, rootSaga$4]
5721
5810
  };
5722
5811
 
5723
5812
  /* *
@@ -5839,7 +5928,7 @@
5839
5928
  }
5840
5929
  });
5841
5930
  }
5842
- function rootSaga$2() {
5931
+ function rootSaga$3() {
5843
5932
  return __generator(this, function (_a) {
5844
5933
  switch (_a.label) {
5845
5934
  case 0:
@@ -5883,9 +5972,9 @@
5883
5972
  var uiModuleConfig = {
5884
5973
  id: 'ui-module',
5885
5974
  reducerMap: {
5886
- ui: reducer$3
5975
+ ui: reducer$4
5887
5976
  },
5888
- sagas: [rootSaga$2]
5977
+ sagas: [rootSaga$3]
5889
5978
  };
5890
5979
 
5891
5980
  /* *
@@ -6053,103 +6142,57 @@
6053
6142
  * Copyright 2022 - Finnish Meteorological Institute (FMI)
6054
6143
  * */
6055
6144
 
6056
- var parseBoolean = function parseBoolean(value) {
6057
- return ['true', 'false', true, false].includes(value) && JSON.parse(value);
6058
- };
6059
-
6060
- var isBaseLayer = function isBaseLayer(layer) {
6061
- return ['baseLayer'].includes(layer.layerType);
6062
- };
6063
-
6064
- var isMapLayer = function isMapLayer(layer) {
6065
- return ['mapLayer'].includes(layer.layerType);
6066
- };
6067
-
6068
- var isOverLayer = function isOverLayer(layer) {
6069
- return ['overLayer'].includes(layer.layerType);
6070
- };
6071
-
6072
6145
  var isValidService = function isValidService(service) {
6073
6146
  return Object.prototype.hasOwnProperty.call(service, 'url');
6074
6147
  };
6075
6148
 
6076
- var parseLayerType = function parseLayerType(layer, defaultValue) {
6077
- if (isBaseLayer(layer)) {
6078
- return LayerType.baseLayer;
6079
- }
6080
-
6081
- if (isMapLayer(layer)) {
6082
- return LayerType.mapLayer;
6083
- }
6084
-
6085
- if (isOverLayer(layer)) {
6086
- return LayerType.overLayer;
6087
- }
6088
-
6089
- return defaultValue;
6149
+ var parseBoolean = function parseBoolean(value) {
6150
+ return typeof value === 'boolean' ? value : value === 'true';
6090
6151
  };
6091
-
6092
6152
  var parseLayer = function parseLayer(layer) {
6093
- var lr = JSON.parse(JSON.stringify(layer)); // Cloning used here to achieve object immutability
6094
-
6095
- if (!lr.id) {
6096
- lr.id = generateLayerId();
6097
- }
6098
-
6099
- if (lr.layerType) {
6100
- lr.layerType = parseLayerType(lr, null);
6101
- }
6102
-
6103
- if (lr.enabled) {
6104
- lr.enabled = parseBoolean(lr.enabled);
6105
- }
6106
-
6107
- return lr;
6153
+ return __assign(__assign(__assign({}, layer), !layer.id && {
6154
+ id: generateLayerId()
6155
+ }), layer.enabled && {
6156
+ enabled: parseBoolean(layer.enabled)
6157
+ });
6108
6158
  };
6109
6159
 
6110
- var filterBaseLayers = function filterBaseLayers(presetArray) {
6111
- var hasLayers = presetArray && Array.isArray(presetArray) && presetArray.length > 0;
6112
- var filteredBaseLayers = hasLayers ? presetArray.filter(function (preset) {
6113
- return isBaseLayer(preset);
6114
- }).map(function (filteredPresetLayer) {
6115
- return parseLayer(filteredPresetLayer);
6116
- }) : null;
6117
- var hasBaseLayers = filteredBaseLayers && filteredBaseLayers.length > 0;
6118
- var baseLayers = hasBaseLayers ? filteredBaseLayers : undefined;
6119
- return baseLayers;
6120
- };
6121
- var filterMapLayers = function filterMapLayers(presetArray) {
6122
- var hasLayers = presetArray && Array.isArray(presetArray) && presetArray.length > 0;
6123
- var filteredMapLayers = hasLayers ? presetArray.filter(function (preset) {
6124
- return isMapLayer(preset);
6125
- }).map(function (filteredPresetLayer) {
6126
- return parseLayer(filteredPresetLayer);
6127
- }) : null;
6128
- var hasMapLayers = filteredMapLayers && filteredMapLayers.length > 0;
6129
- var mapLayers = hasMapLayers ? filteredMapLayers : undefined;
6130
- return mapLayers;
6160
+ var createEmtpyFilteredList = function createEmtpyFilteredList(existingList) {
6161
+ return {
6162
+ mapLayers: existingList,
6163
+ baseLayers: existingList,
6164
+ overLayers: existingList
6165
+ };
6131
6166
  };
6132
- var filterLayers = function filterLayers(layers) {
6167
+
6168
+ var filterLayers = function filterLayers(layers, layerParser) {
6133
6169
  if (layers === void 0) {
6134
6170
  layers = [];
6135
6171
  }
6136
6172
 
6173
+ if (layerParser === void 0) {
6174
+ layerParser = function layerParser(layer) {
6175
+ return layer;
6176
+ };
6177
+ }
6178
+
6137
6179
  return layers.reduce(function (layers, layer) {
6138
6180
  var mapLayers = layers.mapLayers,
6139
6181
  baseLayers = layers.baseLayers,
6140
6182
  overLayers = layers.overLayers;
6183
+ var parsedLayer = layerParser(layer);
6141
6184
 
6142
6185
  if (layer.layerType === LayerType.baseLayer) {
6143
6186
  return {
6144
6187
  mapLayers: mapLayers,
6145
- baseLayers: baseLayers.concat(layer),
6188
+ baseLayers: baseLayers.concat(parsedLayer),
6146
6189
  overLayers: overLayers
6147
6190
  };
6148
6191
  }
6149
6192
 
6150
6193
  if (layer.layerType === LayerType.mapLayer) {
6151
6194
  return {
6152
- mapLayers: mapLayers.concat(layer),
6195
+ mapLayers: mapLayers.concat(parsedLayer),
6153
6196
  baseLayers: baseLayers,
6154
6197
  overLayers: overLayers
6155
6198
  };
@@ -6159,16 +6202,12 @@
6159
6202
  return {
6160
6203
  mapLayers: mapLayers,
6161
6204
  baseLayers: baseLayers,
6162
- overLayers: overLayers.concat(layer)
6205
+ overLayers: overLayers.concat(parsedLayer)
6163
6206
  };
6164
6207
  }
6165
6208
 
6166
6209
  return layers;
6167
- }, {
6168
- mapLayers: [],
6169
- baseLayers: [],
6170
- overLayers: []
6171
- });
6210
+ }, createEmtpyFilteredList([]));
6172
6211
  };
6173
6212
  var filterServices = function filterServices(presetArray) {
6174
6213
  var hasServices = presetArray && Array.isArray(presetArray) && presetArray.length > 0;
@@ -6179,21 +6218,28 @@
6179
6218
  var services = hasValidServices ? validServices : undefined;
6180
6219
  return services;
6181
6220
  };
6182
- var filterMapPresets = function filterMapPresets(presets) {
6183
- var preset = presets && presets.preset;
6184
- var filterredServices = preset && preset.services ? filterServices(preset.services) : undefined;
6185
- var baseServices = preset && preset.baseServices ? filterServices(preset.baseServices) : undefined;
6186
- var filteredBaseLayers = preset && preset.layers ? filterBaseLayers(preset.layers) : undefined;
6187
- var filteredMapLayers = preset && preset.layers ? filterMapLayers(preset.layers) : undefined;
6221
+ var filterMapPresets = function filterMapPresets(initialAppPreset) {
6222
+ var preset = initialAppPreset && initialAppPreset.preset || {};
6223
+ var layers = preset.layers,
6224
+ services = preset.services,
6225
+ baseServices = preset.baseServices;
6226
+
6227
+ var _a = layers ? filterLayers(layers, parseLayer) : createEmtpyFilteredList(undefined),
6228
+ baseLayers = _a.baseLayers,
6229
+ mapLayers = _a.mapLayers;
6230
+
6231
+ var filterredServices = services ? filterServices(services) : undefined;
6232
+ var filteredBaseServices = baseServices ? filterServices(baseServices) : undefined;
6188
6233
  var filteredPreset = {
6189
6234
  services: filterredServices,
6190
- baseServices: baseServices,
6191
- baseLayers: filteredBaseLayers,
6192
- mapLayers: filteredMapLayers
6235
+ baseServices: filteredBaseServices,
6236
+ baseLayers: baseLayers,
6237
+ mapLayers: mapLayers
6193
6238
  };
6194
6239
  return filteredPreset;
6195
- };
6196
- var getInitialPresets = function getInitialPresets(mapPreset, defaultInitialPresets) {
6240
+ }; // loads the initialPresets.json
6241
+
6242
+ var getInitialAppPresets = function getInitialAppPresets(mapPreset, defaultInitialPresets) {
6197
6243
  var filteredPresets = mapPreset ? filterMapPresets(mapPreset) : null;
6198
6244
  var initialPresets = filteredPresets || filterMapPresets(defaultInitialPresets);
6199
6245
  return initialPresets;
@@ -7132,7 +7178,7 @@
7132
7178
  var defaultCanvasWidth = 150;
7133
7179
  var defaultCanvasHeight = 30; // TODO: remove fontFamily styles after theming is fully implemented
7134
7180
 
7135
- var useStyles$s = makeStyles__default["default"](function (theme) {
7181
+ var useStyles$r = makeStyles__default["default"](function (theme) {
7136
7182
  return {
7137
7183
  legendCanvas: {
7138
7184
  margin: '10px 0px 10px 0px'
@@ -7200,7 +7246,7 @@
7200
7246
 
7201
7247
  var Legend = function Legend(_a) {
7202
7248
  var layer = _a.layer;
7203
- var classes = useStyles$s();
7249
+ var classes = useStyles$r();
7204
7250
  /* Variable to remember the previous image */
7205
7251
 
7206
7252
  var previousLegendImage = React.useRef(null);
@@ -7352,7 +7398,7 @@
7352
7398
  * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7353
7399
  * Copyright 2021 - Finnish Meteorological Institute (FMI)
7354
7400
  * */
7355
- var useStyles$r = makeStyles__default["default"](function () {
7401
+ var useStyles$q = makeStyles__default["default"](function () {
7356
7402
  return {
7357
7403
  legendList: {
7358
7404
  display: 'flex',
@@ -7380,7 +7426,7 @@
7380
7426
  order = _d === void 0 ? 0 : _d,
7381
7427
  _e = _a.source,
7382
7428
  source = _e === void 0 ? 'app' : _e;
7383
- var classes = useStyles$r();
7429
+ var classes = useStyles$q();
7384
7430
  return /*#__PURE__*/React__namespace.createElement(shared.ToolContainerDraggable, {
7385
7431
  startPosition: {
7386
7432
  right: 20,
@@ -7433,7 +7479,7 @@
7433
7479
  * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7434
7480
  * Copyright 2021 - Finnish Meteorological Institute (FMI)
7435
7481
  * */
7436
- var IS_LEGEND_OPEN_BY_DEFAULT = true;
7482
+ var IS_LEGEND_OPEN_BY_DEFAULT = false;
7437
7483
 
7438
7484
  var LegendConnectComponent = function LegendConnectComponent(_a) {
7439
7485
  var _b = _a.showMapId,
@@ -8325,7 +8371,7 @@
8325
8371
  }
8326
8372
  });
8327
8373
  }
8328
- function rootSaga$1() {
8374
+ function rootSaga$2() {
8329
8375
  return __generator(this, function (_a) {
8330
8376
  switch (_a.label) {
8331
8377
  case 0:
@@ -8408,11 +8454,11 @@
8408
8454
  var moduleConfig = {
8409
8455
  id: 'webmap-module',
8410
8456
  reducerMap: {
8411
- webmap: reducer$2,
8412
- services: reducer$4,
8413
- layers: reducer$5
8457
+ webmap: reducer$3,
8458
+ services: reducer$5,
8459
+ layers: reducer$6
8414
8460
  },
8415
- sagas: [rootSaga$1]
8461
+ sagas: [rootSaga$2]
8416
8462
  };
8417
8463
 
8418
8464
  function _typeof(obj) {
@@ -8448,15 +8494,15 @@
8448
8494
  * Copyright 2022 - Finnish Meteorological Institute (FMI)
8449
8495
  * */
8450
8496
  var mergePresetsAndUserAddedServices = function mergePresetsAndUserAddedServices(presets, userAddedServices) {
8451
- return Object.values(__assign(__assign({}, presets.reduce(function (byId, preset) {
8497
+ return Object.values(__assign(__assign({}, presets.reduce(function (byUrl, preset) {
8452
8498
  var _a;
8453
8499
 
8454
- return __assign(__assign({}, byId), (_a = {}, _a[preset.id] = preset, _a));
8500
+ return __assign(__assign({}, byUrl), (_a = {}, _a[preset.url] = preset, _a));
8455
8501
  }, {})), userAddedServices));
8456
8502
  };
8457
- var isService = function isService(param) {
8503
+ var isNoIdService = function isNoIdService(param) {
8458
8504
  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));
8505
+ return !!((serviceParam === null || serviceParam === void 0 ? void 0 : serviceParam.name) && (serviceParam === null || serviceParam === void 0 ? void 0 : serviceParam.url));
8460
8506
  };
8461
8507
 
8462
8508
  var getUserAddedServices = function getUserAddedServices() {
@@ -8472,7 +8518,9 @@
8472
8518
  serviceUrl = _c[0],
8473
8519
  service = _c[1];
8474
8520
 
8475
- return __assign(__assign({}, userServices), isService(service) ? (_b = {}, _b[serviceUrl] = service, _b) : {});
8521
+ return __assign(__assign({}, userServices), isNoIdService(service) ? (_b = {}, _b[serviceUrl] = __assign(__assign({}, service), {
8522
+ isUserAddedService: true
8523
+ }), _b) : {});
8476
8524
  }, {});
8477
8525
  }
8478
8526
  } catch (e) {
@@ -8506,40 +8554,26 @@
8506
8554
  * Copyright 2022 - Finnish Meteorological Institute (FMI)
8507
8555
  * */
8508
8556
  function newServiceAddedSaga(capturedAction) {
8509
- var addedService, id, serviceUrl, name, keywords, services, findServiceName;
8557
+ var addedService, id, serviceUrl, name, isUserAddedService, keywords;
8510
8558
  return __generator(this, function (_a) {
8511
8559
  switch (_a.label) {
8512
8560
  case 0:
8513
8561
  addedService = capturedAction.payload;
8514
- id = addedService.id, serviceUrl = addedService.serviceUrl, name = addedService.name;
8562
+ id = addedService.id, serviceUrl = addedService.serviceUrl, name = addedService.name, isUserAddedService = addedService.isUserAddedService;
8515
8563
  keywords = addedService.layers.reduce(function (keywordAccumulator, layer) {
8516
8564
  return keywordAccumulator.concat(layer.path, layer.keywords);
8517
8565
  }, []);
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
8566
  return [4
8534
8567
  /*yield*/
8535
8568
  , effects.put(layerSelectActions.addKeywordsAndActiveServices({
8536
8569
  serviceId: id,
8537
- serviceName: findServiceName(),
8570
+ serviceName: name,
8538
8571
  serviceUrl: serviceUrl,
8539
- keywords: keywords
8572
+ keywords: keywords,
8573
+ isUserAddedService: isUserAddedService
8540
8574
  }))];
8541
8575
 
8542
- case 2:
8576
+ case 1:
8543
8577
  _a.sent();
8544
8578
 
8545
8579
  return [2
@@ -8580,7 +8614,6 @@
8580
8614
  if (!isUserAddedService) return;
8581
8615
  var localStorageServices = getUserAddedServices();
8582
8616
  setUserAddedServices(__assign(__assign({}, localStorageServices), (_b = {}, _b[serviceUrl] = {
8583
- id: serviceUrl,
8584
8617
  name: name,
8585
8618
  url: serviceUrl
8586
8619
  }, _b)));
@@ -8596,7 +8629,7 @@
8596
8629
  delete updatedServices[serviceUrl];
8597
8630
  setUserAddedServices(updatedServices);
8598
8631
  }
8599
- function rootSaga() {
8632
+ function rootSaga$1() {
8600
8633
  return __generator(this, function (_a) {
8601
8634
  switch (_a.label) {
8602
8635
  case 0:
@@ -8654,7 +8687,138 @@
8654
8687
  var layerSelectConfig = {
8655
8688
  id: 'layerSelect-module',
8656
8689
  reducerMap: {
8657
- layerSelect: reducer
8690
+ layerSelect: reducer$1
8691
+ },
8692
+ sagas: [rootSaga$1]
8693
+ };
8694
+
8695
+ /* *
8696
+ * Licensed under the Apache License, Version 2.0 (the "License");
8697
+ * you may not use this file except in compliance with the License.
8698
+ * You may obtain a copy of the License at
8699
+ *
8700
+ * http://www.apache.org/licenses/LICENSE-2.0
8701
+ *
8702
+ * Unless required by applicable law or agreed to in writing, software
8703
+ * distributed under the License is distributed on an "AS IS" BASIS,
8704
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8705
+ * See the License for the specific language governing permissions and
8706
+ * limitations under the License.
8707
+ *
8708
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
8709
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
8710
+ * */
8711
+ var hideTime = 4000;
8712
+ function openSnackbarSaga(capturedAction) {
8713
+ var snackbarMessage, currentSnackbarMessages, id, currentSnackbarMessagesOpen;
8714
+ return __generator(this, function (_a) {
8715
+ switch (_a.label) {
8716
+ case 0:
8717
+ snackbarMessage = capturedAction.payload.snackbarContent.message;
8718
+ return [4
8719
+ /*yield*/
8720
+ , effects.select(getCurrentSnackbarMessages)];
8721
+
8722
+ case 1:
8723
+ currentSnackbarMessages = _a.sent();
8724
+ if (!currentSnackbarMessages.length) return [3
8725
+ /*break*/
8726
+ , 3];
8727
+ return [4
8728
+ /*yield*/
8729
+ , effects.put(snackbarActions.closeSnackbar())];
8730
+
8731
+ case 2:
8732
+ _a.sent();
8733
+
8734
+ _a.label = 3;
8735
+
8736
+ case 3:
8737
+ id = "snackbar" + Date.now().toString();
8738
+ return [4
8739
+ /*yield*/
8740
+ , effects.put(snackbarActions.triggerOpenSnackbarBySaga({
8741
+ snackbarContent: {
8742
+ message: snackbarMessage,
8743
+ id: id
8744
+ }
8745
+ }))];
8746
+
8747
+ case 4:
8748
+ _a.sent(); // If no new snackbar is triggered cancelling this saga, hide the snackbar after X seconds
8749
+
8750
+
8751
+ return [4
8752
+ /*yield*/
8753
+ , effects.delay(hideTime)];
8754
+
8755
+ case 5:
8756
+ // If no new snackbar is triggered cancelling this saga, hide the snackbar after X seconds
8757
+ _a.sent();
8758
+
8759
+ return [4
8760
+ /*yield*/
8761
+ , effects.select(getCurrentSnackbarMessages)];
8762
+
8763
+ case 6:
8764
+ currentSnackbarMessagesOpen = _a.sent();
8765
+ if (!currentSnackbarMessagesOpen.length) return [3
8766
+ /*break*/
8767
+ , 8];
8768
+ return [4
8769
+ /*yield*/
8770
+ , effects.put(snackbarActions.closeSnackbar())];
8771
+
8772
+ case 7:
8773
+ _a.sent();
8774
+
8775
+ _a.label = 8;
8776
+
8777
+ case 8:
8778
+ return [2
8779
+ /*return*/
8780
+ ];
8781
+ }
8782
+ });
8783
+ }
8784
+ function rootSaga() {
8785
+ return __generator(this, function (_a) {
8786
+ switch (_a.label) {
8787
+ case 0:
8788
+ return [4
8789
+ /*yield*/
8790
+ , effects.takeLatest(snackbarActions.openSnackbar.type, openSnackbarSaga)];
8791
+
8792
+ case 1:
8793
+ _a.sent();
8794
+
8795
+ return [2
8796
+ /*return*/
8797
+ ];
8798
+ }
8799
+ });
8800
+ }
8801
+
8802
+ /* *
8803
+ * Licensed under the Apache License, Version 2.0 (the "License");
8804
+ * you may not use this file except in compliance with the License.
8805
+ * You may obtain a copy of the License at
8806
+ *
8807
+ * http://www.apache.org/licenses/LICENSE-2.0
8808
+ *
8809
+ * Unless required by applicable law or agreed to in writing, software
8810
+ * distributed under the License is distributed on an "AS IS" BASIS,
8811
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8812
+ * See the License for the specific language governing permissions and
8813
+ * limitations under the License.
8814
+ *
8815
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
8816
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
8817
+ * */
8818
+ var snackbarModuleConfig = {
8819
+ id: 'snackbar-module',
8820
+ reducerMap: {
8821
+ snackbar: reducer
8658
8822
  },
8659
8823
  sagas: [rootSaga]
8660
8824
  };
@@ -8675,7 +8839,7 @@
8675
8839
  * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
8676
8840
  * Copyright 2021 - Finnish Meteorological Institute (FMI)
8677
8841
  * */
8678
- var coreModuleConfig = [moduleConfig, synchronizationGroupConfig, uiModuleConfig, layerSelectConfig];
8842
+ var coreModuleConfig = [moduleConfig, synchronizationGroupConfig, uiModuleConfig, layerSelectConfig, snackbarModuleConfig];
8679
8843
 
8680
8844
  /* *
8681
8845
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -9255,7 +9419,7 @@
9255
9419
  * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
9256
9420
  * Copyright 2021 - Finnish Meteorological Institute (FMI)
9257
9421
  * */
9258
- var useStyles$q = makeStyles__default["default"]({
9422
+ var useStyles$p = makeStyles__default["default"]({
9259
9423
  buttonDiv: {
9260
9424
  position: 'relative'
9261
9425
  },
@@ -9288,7 +9452,7 @@
9288
9452
  handleClose = _a.handleClose,
9289
9453
  _d = _a.layerType,
9290
9454
  layerType = _d === void 0 ? LayerType.mapLayer : _d;
9291
- var classes = useStyles$q();
9455
+ var classes = useStyles$p();
9292
9456
 
9293
9457
  var _e = __read(React__namespace.useState(''), 2),
9294
9458
  serviceURL = _e[0],
@@ -9356,6 +9520,12 @@
9356
9520
  }
9357
9521
  };
9358
9522
 
9523
+ React__namespace.useEffect(function () {
9524
+ if (!_.isEqual(preloadedServices, services)) {
9525
+ setServices(preloadedServices);
9526
+ } // eslint-disable-next-line react-hooks/exhaustive-deps
9527
+
9528
+ }, [preloadedServices]);
9359
9529
  return /*#__PURE__*/React__namespace.createElement(material.Dialog, {
9360
9530
  fullWidth: true,
9361
9531
  maxWidth: "md",
@@ -9485,10 +9655,21 @@
9485
9655
  open = _f[0],
9486
9656
  setOpen = _f[1];
9487
9657
 
9658
+ var _g = __read(React__namespace.useState(shouldFocus), 2),
9659
+ isTooltipDisabled = _g[0],
9660
+ setTooltipDisabled = _g[1];
9661
+
9488
9662
  var handleClose = function handleClose() {
9489
9663
  setOpen(!open);
9490
9664
  };
9491
9665
 
9666
+ var onBlurTooltip = function onBlurTooltip(event) {
9667
+ // enable tooltip again after user blurs
9668
+ if (event.relatedTarget) {
9669
+ setTooltipDisabled(false);
9670
+ }
9671
+ };
9672
+
9492
9673
  React__namespace.useEffect(function () {
9493
9674
  if (shouldFocus && ref.current) {
9494
9675
  ref.current.focus();
@@ -9496,7 +9677,9 @@
9496
9677
 
9497
9678
  }, []);
9498
9679
  return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
9499
- title: tooltip
9680
+ title: tooltip,
9681
+ disableFocusListener: isTooltipDisabled,
9682
+ onBlur: onBlurTooltip
9500
9683
  }, /*#__PURE__*/React__namespace.createElement(material.IconButton, {
9501
9684
  onClick: handleClose,
9502
9685
  sx: styles$2.button,
@@ -9662,7 +9845,7 @@
9662
9845
  * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
9663
9846
  * Copyright 2021 - Finnish Meteorological Institute (FMI)
9664
9847
  * */
9665
- var useStyles$p = makeStyles__default["default"]({
9848
+ var useStyles$o = makeStyles__default["default"]({
9666
9849
  row: {
9667
9850
  height: '32px'
9668
9851
  },
@@ -9686,7 +9869,7 @@
9686
9869
  layerManagerWidth = _a.layerManagerWidth,
9687
9870
  _e = _a.layerSelect,
9688
9871
  layerSelect = _e === void 0 ? false : _e;
9689
- var classes = useStyles$p();
9872
+ var classes = useStyles$o();
9690
9873
  var columnSizes = layerManagerWidth === LayerManagerWidth.sm ? LayerManagerColumnsSmall() : LayerManagerColumnsLarge();
9691
9874
  return /*#__PURE__*/React__namespace.createElement(material.Grid, {
9692
9875
  container: true,
@@ -9910,7 +10093,7 @@
9910
10093
  * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
9911
10094
  * Copyright 2021 - Finnish Meteorological Institute (FMI)
9912
10095
  * */
9913
- var useStyles$o = makeStyles__default["default"](function (theme) {
10096
+ var useStyles$n = makeStyles__default["default"](function (theme) {
9914
10097
  return createStyles__default["default"]({
9915
10098
  dropdownEmpty: {
9916
10099
  paddingLeft: 8,
@@ -9962,7 +10145,7 @@
9962
10145
  layers = _c === void 0 ? [] : _c,
9963
10146
  _d = _a.isEnabled,
9964
10147
  isEnabled = _d === void 0 ? true : _d;
9965
- var classes = useStyles$o();
10148
+ var classes = useStyles$n();
9966
10149
 
9967
10150
  if (!layers || !layers.length) {
9968
10151
  return /*#__PURE__*/React__namespace.createElement("div", {
@@ -10044,7 +10227,7 @@
10044
10227
  * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
10045
10228
  * Copyright 2021 - Finnish Meteorological Institute (FMI)
10046
10229
  * */
10047
- var useStyles$n = makeStyles__default["default"](function (theme) {
10230
+ var useStyles$m = makeStyles__default["default"](function (theme) {
10048
10231
  return {
10049
10232
  opacityDiv: {
10050
10233
  height: 'calc(100% - 5px)',
@@ -10104,8 +10287,7 @@
10104
10287
  onLayerChangeOpacity = _a.onLayerChangeOpacity,
10105
10288
  _b = _a.isEnabled,
10106
10289
  isEnabled = _b === void 0 ? true : _b;
10107
- var classes = useStyles$n();
10108
- var sliderClasses = shared.sliderStyles();
10290
+ var classes = useStyles$m();
10109
10291
 
10110
10292
  var _c = __read(React__namespace.useState(false), 2),
10111
10293
  open = _c[0],
@@ -10169,8 +10351,8 @@
10169
10351
  onBlur: onBlur
10170
10352
  }, currentOpacityText)), open ? /*#__PURE__*/React__namespace.createElement("div", {
10171
10353
  className: classes.sliderBackground
10172
- }, /*#__PURE__*/React__namespace.createElement("div", {
10173
- className: sliderClasses.sliderHeader
10354
+ }, /*#__PURE__*/React__namespace.createElement(material.Box, {
10355
+ sx: shared.sliderHeaderStyle
10174
10356
  }, "Opacity"), /*#__PURE__*/React__namespace.createElement(shared.CustomSlider, {
10175
10357
  "data-testid": "opacitySlider",
10176
10358
  orientation: "vertical",
@@ -10318,26 +10500,22 @@
10318
10500
  * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
10319
10501
  * Copyright 2021 - Finnish Meteorological Institute (FMI)
10320
10502
  * */
10321
- var useStyles$m = makeStyles__default["default"](function (theme) {
10322
- return createStyles__default["default"]({
10323
- svgIcon: {
10324
- fill: function fill(_a) {
10325
- var isActive = _a.isActive,
10326
- isEnabled = _a.isEnabled;
10327
-
10328
- if (isActive) {
10329
- return theme.palette.common.white;
10330
- }
10331
10503
 
10332
- if (isEnabled) {
10333
- return theme.palette.geowebColors.buttons.flat["default"].color;
10334
- }
10504
+ var makeIconStyle = function makeIconStyle(isActive, isEnabled) {
10505
+ return {
10506
+ color: function color() {
10507
+ if (isActive) {
10508
+ return 'common.white';
10509
+ }
10335
10510
 
10336
- return theme.palette.geowebColors.buttons.flat.disabled.color;
10511
+ if (isEnabled) {
10512
+ return 'geowebColors.buttons.flat.default.color';
10337
10513
  }
10514
+
10515
+ return 'geowebColors.buttons.flat.disabled.color';
10338
10516
  }
10339
- });
10340
- });
10517
+ };
10518
+ };
10341
10519
 
10342
10520
  var ActivateLayer = function ActivateLayer(_a) {
10343
10521
  var _b = _a.tooltipTitle,
@@ -10347,15 +10525,12 @@
10347
10525
  isActive = _c === void 0 ? false : _c,
10348
10526
  _d = _a.isEnabled,
10349
10527
  isEnabled = _d === void 0 ? true : _d;
10350
- var classes = useStyles$m({
10351
- isActive: isActive,
10352
- isEnabled: isEnabled
10353
- });
10528
+ var iconStyle = makeIconStyle(isActive, isEnabled);
10354
10529
  return /*#__PURE__*/React__namespace.createElement(shared.ManagerButton, {
10355
10530
  tooltipTitle: tooltipTitle,
10356
10531
  onClick: onClickActivate,
10357
10532
  icon: /*#__PURE__*/React__namespace.createElement(theme.Flag, {
10358
- className: classes.svgIcon
10533
+ sx: iconStyle
10359
10534
  }),
10360
10535
  testId: "activateLayerButton",
10361
10536
  isActive: isActive
@@ -11357,6 +11532,15 @@
11357
11532
  }));
11358
11533
  }, baseLayersWithMapId);
11359
11534
  };
11535
+ var areAvailableBaseLayersSame = function areAvailableBaseLayersSame(availableBaseLayerList, newBaseLayerList) {
11536
+ var availableList = availableBaseLayerList.map(function (layer) {
11537
+ return layer.name;
11538
+ });
11539
+ var newList = newBaseLayerList.map(function (layer) {
11540
+ return layer.name;
11541
+ });
11542
+ return _.isEqual(availableList, newList);
11543
+ };
11360
11544
 
11361
11545
  var BaseLayersConnect = function BaseLayersConnect(_a) {
11362
11546
  var mapId = _a.mapId,
@@ -11370,14 +11554,16 @@
11370
11554
  });
11371
11555
  React__namespace.useEffect(function () {
11372
11556
  // Set initial availableBaseLayers only if none set for that map yet
11373
- if (currentAvailableBaseLayers.length < 1) {
11374
- var availableBaseLayersToBeAdded = constructListAvailableBaseLayers(selectedBaseLayers, preloadedAvailableBaseLayers, mapId);
11375
- dispatch(layerActions.addAvailableBaseLayers({
11557
+ var availableBaseLayersToBeAdded = constructListAvailableBaseLayers(selectedBaseLayers, preloadedAvailableBaseLayers, mapId);
11558
+ var areBaseLayersSame = areAvailableBaseLayersSame(availableBaseLayersToBeAdded, currentAvailableBaseLayers);
11559
+
11560
+ if (!areBaseLayersSame) {
11561
+ dispatch(layerActions.setAvailableBaseLayers({
11376
11562
  layers: availableBaseLayersToBeAdded
11377
11563
  }));
11378
11564
  } // eslint-disable-next-line react-hooks/exhaustive-deps
11379
11565
 
11380
- }, [mapId]);
11566
+ }, [mapId, preloadedAvailableBaseLayers]);
11381
11567
 
11382
11568
  var onChangeBaseLayers = function onChangeBaseLayers(newSelectedLayerId) {
11383
11569
  var newBaseLayer = currentAvailableBaseLayers.filter(function (layer) {
@@ -11703,52 +11889,64 @@
11703
11889
  };
11704
11890
 
11705
11891
  var ServicePopup = function ServicePopup(_a) {
11706
- var _b, _c;
11707
-
11708
11892
  var servicePopupVariant = _a.servicePopupVariant,
11709
- _d = _a.hideBackdrop,
11710
- hideBackdrop = _d === void 0 ? false : _d,
11893
+ _b = _a.hideBackdrop,
11894
+ hideBackdrop = _b === void 0 ? false : _b,
11711
11895
  isOpen = _a.isOpen,
11712
11896
  closePopup = _a.closePopup,
11897
+ serviceId = _a.serviceId,
11713
11898
  url = _a.url,
11714
11899
  services = _a.services,
11715
11900
  serviceSetLayers = _a.serviceSetLayers;
11716
11901
 
11717
- var _e = __read(React__namespace.useState(servicePopupVariant !== 'edit' || services === undefined ? '' : (_b = services[url]) === null || _b === void 0 ? void 0 : _b.name), 2),
11718
- serviceName = _e[0],
11719
- setServiceName = _e[1];
11902
+ var _c = __read(React__namespace.useState(''), 2),
11903
+ serviceName = _c[0],
11904
+ setServiceName = _c[1];
11905
+
11906
+ var _d = __read(React__namespace.useState(''), 2),
11907
+ serviceUrl = _d[0],
11908
+ setServiceUrl = _d[1];
11720
11909
 
11721
- var _f = __read(React__namespace.useState(servicePopupVariant === 'add' || url === undefined ? '' : url), 2),
11722
- serviceUrl = _f[0],
11723
- setServiceUrl = _f[1];
11910
+ var _e = __read(React__namespace.useState(''), 2),
11911
+ _abstract = _e[0],
11912
+ setAbstract = _e[1];
11724
11913
 
11725
- var _g = __read(React__namespace.useState(servicePopupVariant !== 'edit' || services === undefined ? '' : (_c = services[url]) === null || _c === void 0 ? void 0 : _c["abstract"]), 2),
11726
- _abstract = _g[0],
11727
- setAbstract = _g[1];
11914
+ var _f = __read(React__namespace.useState(false), 2),
11915
+ disableButton = _f[0],
11916
+ setDisableButton = _f[1];
11917
+
11918
+ var _g = __read(React__namespace.useState(false), 2),
11919
+ isLoading = _g[0],
11920
+ setIsLoading = _g[1];
11728
11921
 
11729
11922
  var _h = __read(React__namespace.useState(false), 2),
11730
- disableButton = _h[0],
11731
- setDisableButton = _h[1];
11923
+ serviceNameHasError = _h[0],
11924
+ setServiceNameHasError = _h[1];
11732
11925
 
11733
- var _j = __read(React__namespace.useState(false), 2),
11734
- isLoading = _j[0],
11735
- setIsLoading = _j[1];
11926
+ var _j = __read(React__namespace.useState(''), 2),
11927
+ serviceNameHelperText = _j[0],
11928
+ setServiceNameHelperText = _j[1];
11736
11929
 
11737
11930
  var _k = __read(React__namespace.useState(false), 2),
11738
- serviceNameHasError = _k[0],
11739
- setServiceNameHasError = _k[1];
11931
+ serviceUrlHasError = _k[0],
11932
+ setServiceUrlHasError = _k[1];
11740
11933
 
11741
11934
  var _l = __read(React__namespace.useState(''), 2),
11742
- serviceNameHelperText = _l[0],
11743
- setServiceNameHelperText = _l[1];
11935
+ serviceUrlHelperText = _l[0],
11936
+ setServiceUrlHelperText = _l[1];
11744
11937
 
11745
- var _m = __read(React__namespace.useState(false), 2),
11746
- serviceUrlHasError = _m[0],
11747
- setServiceUrlHasError = _m[1];
11938
+ React__namespace.useEffect(function () {
11939
+ var _a;
11940
+
11941
+ if (servicePopupVariant === 'edit') {
11942
+ setServiceName(((_a = services[serviceId]) === null || _a === void 0 ? void 0 : _a.serviceName) || '');
11943
+ setServiceUrl(url || '');
11944
+ }
11748
11945
 
11749
- var _o = __read(React__namespace.useState(''), 2),
11750
- serviceUrlHelperText = _o[0],
11751
- setServiceUrlHelperText = _o[1];
11946
+ if (servicePopupVariant === 'save') {
11947
+ setServiceUrl(url || '');
11948
+ }
11949
+ }, [serviceId, services, url, servicePopupVariant, isOpen]);
11752
11950
 
11753
11951
  var validateServiceUrl = function validateServiceUrl(url) {
11754
11952
  if (url === '' || url === null || typeof url === 'undefined') return false;
@@ -11847,11 +12045,10 @@
11847
12045
 
11848
12046
  var ServiceNameInRedux = function ServiceNameInRedux() {
11849
12047
  if (servicePopupVariant === 'add' || servicePopupVariant === 'save') {
11850
- for (var service in services) {
11851
- if (services && services[service].name.toLowerCase() === serviceName.toLowerCase()) return true;
11852
- }
11853
-
11854
- return false;
12048
+ var foundName = Object.keys(services).find(function (serviceId) {
12049
+ return services[serviceId].serviceName.toLowerCase() === (serviceName === null || serviceName === void 0 ? void 0 : serviceName.toLowerCase());
12050
+ });
12051
+ return foundName !== undefined;
11855
12052
  }
11856
12053
 
11857
12054
  return false;
@@ -11859,11 +12056,10 @@
11859
12056
 
11860
12057
  var UrlInRedux = function UrlInRedux() {
11861
12058
  if (servicePopupVariant === 'add' || servicePopupVariant === 'save') {
11862
- if (services && services[serviceUrl]) {
11863
- return true;
11864
- }
11865
-
11866
- return false;
12059
+ var foundUrl = Object.keys(services).find(function (serviceId) {
12060
+ return services[serviceId].serviceUrl === serviceUrl;
12061
+ });
12062
+ return foundUrl !== undefined;
11867
12063
  }
11868
12064
 
11869
12065
  return false;
@@ -11871,6 +12067,7 @@
11871
12067
 
11872
12068
 
11873
12069
  React__namespace.useEffect(function () {
12070
+ if (serviceName === undefined) return;
11874
12071
  setServiceNameHelperText('');
11875
12072
 
11876
12073
  if (ServiceNameInRedux()) {
@@ -11886,7 +12083,7 @@
11886
12083
  React__namespace.useEffect(function () {
11887
12084
  setServiceUrlHelperText('');
11888
12085
 
11889
- if (serviceUrl.length > 0 && !validateServiceUrl(serviceUrl)) {
12086
+ if (serviceUrl && serviceUrl.length > 0 && !validateServiceUrl(serviceUrl)) {
11890
12087
  setServiceUrlHasError(true);
11891
12088
  setServiceUrlHelperText('Error: Not a valid URL.');
11892
12089
  } else if (UrlInRedux()) {
@@ -11973,7 +12170,8 @@
11973
12170
  return setAbstract(event.target.value);
11974
12171
  },
11975
12172
  value: _abstract,
11976
- "data-testid": "abstractTextField"
12173
+ "data-testid": "abstractTextField",
12174
+ disabled: true
11977
12175
  })), /*#__PURE__*/React__namespace.createElement(material.DialogActions, {
11978
12176
  sx: style$1.footerContent
11979
12177
  }, /*#__PURE__*/React__namespace.createElement(material.Button, {
@@ -12029,10 +12227,11 @@
12029
12227
  hideBackdrop = _a.hideBackdrop,
12030
12228
  isOpen = _a.isOpen,
12031
12229
  closePopup = _a.closePopup,
12230
+ serviceId = _a.serviceId,
12032
12231
  url = _a.url;
12033
12232
  var dispatch = reactRedux.useDispatch();
12034
12233
  var services = reactRedux.useSelector(function (store) {
12035
- return getServices(store);
12234
+ return getActiveServices(store);
12036
12235
  });
12037
12236
  var serviceSetLayers = React__default["default"].useCallback(function (payload) {
12038
12237
  dispatch(serviceActions.serviceSetLayers(payload));
@@ -12042,9 +12241,10 @@
12042
12241
  hideBackdrop: hideBackdrop,
12043
12242
  isOpen: isOpen,
12044
12243
  closePopup: closePopup,
12045
- url: url,
12244
+ serviceId: serviceId,
12046
12245
  services: services,
12047
- serviceSetLayers: serviceSetLayers
12246
+ serviceSetLayers: serviceSetLayers,
12247
+ url: url
12048
12248
  });
12049
12249
  };
12050
12250
 
@@ -12437,15 +12637,27 @@
12437
12637
  mapLayers = _a.mapLayers,
12438
12638
  keywordIds = _a.keywordIds,
12439
12639
  allKeywordsActive = _a.allKeywordsActive;
12640
+ var layerSelectFilterHeight = 199;
12440
12641
 
12441
12642
  var _b = __read(React__namespace.useState(0), 2),
12442
12643
  numberOfLayers = _b[0],
12443
12644
  setNumberOfLayers = _b[1];
12444
12645
 
12646
+ var _c = __read(React__namespace.useState([]), 2),
12647
+ layersFilteredFromService = _c[0],
12648
+ setLayersFilteredFromService = _c[1];
12649
+
12445
12650
  React__namespace.useEffect(function () {
12446
12651
  setNumberOfLayers(serviceIds.reduce(function (totalNumberOfLayers, serviceId) {
12447
12652
  return totalNumberOfLayers + filterLayersFromService(serviceId, services, keywordIds, allKeywordsActive, searchString).length;
12448
12653
  }, 0));
12654
+ setLayersFilteredFromService(serviceIds.reduce(function (layerList, serviceId) {
12655
+ return layerList.concat(filterLayersFromService(serviceId, services, keywordIds, allKeywordsActive, searchString).map(function (layer) {
12656
+ return __assign(__assign({}, layer), {
12657
+ serviceId: serviceId
12658
+ });
12659
+ }));
12660
+ }, []));
12449
12661
  }, [serviceIds, keywordIds, services, searchString, allKeywordsActive]);
12450
12662
  return /*#__PURE__*/React__namespace.createElement(material.Box, {
12451
12663
  "data-testid": "layerList"
@@ -12454,25 +12666,26 @@
12454
12666
  marginBottom: '4px',
12455
12667
  fontSize: '12px'
12456
12668
  }
12457
- }, numberOfLayers, " results"), /*#__PURE__*/React__namespace.createElement(material.Box, {
12458
- sx: {
12459
- height: layerSelectHeight - 199,
12460
- overflow: 'auto'
12461
- }
12462
- }, serviceIds.map(function (serviceId) {
12463
- return filterLayersFromService(serviceId, services, keywordIds, allKeywordsActive, searchString).map(function (layer, layerIndex) {
12464
- return /*#__PURE__*/React__namespace.createElement(LayerListRow, {
12465
- key: layer.name,
12466
- layer: layer,
12467
- layerIndex: layerIndex,
12468
- service: services[serviceId],
12469
- serviceUrl: services[serviceId].serviceUrl,
12470
- addLayer: addLayer,
12471
- deleteLayer: deleteLayer,
12472
- mapLayers: mapLayers
12473
- });
12474
- });
12475
- })));
12669
+ }, numberOfLayers, " results"), /*#__PURE__*/React__namespace.createElement(reactWindow.FixedSizeList, {
12670
+ height: layerSelectHeight - layerSelectFilterHeight,
12671
+ itemCount: numberOfLayers,
12672
+ itemSize: 68
12673
+ }, function (_a) {
12674
+ var index = _a.index,
12675
+ style = _a.style;
12676
+ return /*#__PURE__*/React__namespace.createElement("div", {
12677
+ style: style,
12678
+ key: layersFilteredFromService[index].name
12679
+ }, /*#__PURE__*/React__namespace.createElement(LayerListRow, {
12680
+ layer: layersFilteredFromService[index],
12681
+ layerIndex: index,
12682
+ service: services[layersFilteredFromService[index].serviceId],
12683
+ serviceUrl: services[layersFilteredFromService[index].serviceId].serviceUrl,
12684
+ addLayer: addLayer,
12685
+ deleteLayer: deleteLayer,
12686
+ mapLayers: mapLayers
12687
+ }));
12688
+ }));
12476
12689
  };
12477
12690
 
12478
12691
  /* *
@@ -12991,13 +13204,19 @@
12991
13204
 
12992
13205
  var ServiceOptionsDialog = function ServiceOptionsDialog(_a) {
12993
13206
  var services = _a.services,
12994
- mapStoreRemoveService = _a.mapStoreRemoveService,
12995
- _b = _a.layers,
12996
- layers = _b === void 0 ? [] : _b;
13207
+ mapStoreRemoveService = _a.mapStoreRemoveService;
12997
13208
 
12998
- var _c = __read(React__namespace.useState(false), 2),
12999
- addServiceisOpen = _c[0],
13000
- setAddServiceIsOpen = _c[1];
13209
+ var _b = __read(React__namespace.useState(false), 2),
13210
+ addServiceIsOpen = _b[0],
13211
+ setAddServiceIsOpen = _b[1];
13212
+
13213
+ var _c = __read(React__namespace.useState({
13214
+ isOpen: false,
13215
+ serviceId: '',
13216
+ serviceUrl: ''
13217
+ }), 2),
13218
+ editServiceIsOpen = _c[0],
13219
+ setEditServiceIsOpen = _c[1];
13001
13220
 
13002
13221
  var openAddService = function openAddService() {
13003
13222
  setAddServiceIsOpen(true);
@@ -13005,13 +13224,10 @@
13005
13224
 
13006
13225
  var closePopup = function closePopup() {
13007
13226
  setAddServiceIsOpen(false);
13008
- };
13009
-
13010
- var isDisabled = function isDisabled(service) {
13011
- return layers.some(function (layer) {
13012
- return layer.service && layer.service.includes(service);
13013
- }) || preloadedDefaultMapServices.some(function (defaultMapService) {
13014
- return defaultMapService.url && defaultMapService.url.includes(service);
13227
+ setEditServiceIsOpen({
13228
+ isOpen: false,
13229
+ serviceId: '',
13230
+ serviceUrl: ''
13015
13231
  });
13016
13232
  };
13017
13233
 
@@ -13040,16 +13256,25 @@
13040
13256
  marginRight: '-10px'
13041
13257
  }
13042
13258
  }, /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
13043
- title: "Edit Service"
13259
+ title: "Edit Service",
13260
+ disableHoverListener: !services[serviceId].isUserAddedService
13044
13261
  }, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(material.IconButton, {
13045
- disabled: isDisabled(services[serviceId].serviceUrl),
13262
+ disabled: !services[serviceId].isUserAddedService,
13046
13263
  "data-testid": "openEditServiceButton",
13047
- size: "large"
13264
+ size: "large",
13265
+ onClick: function onClick() {
13266
+ setEditServiceIsOpen({
13267
+ isOpen: true,
13268
+ serviceId: serviceId,
13269
+ serviceUrl: services[serviceId].serviceUrl
13270
+ });
13271
+ }
13048
13272
  }, /*#__PURE__*/React__namespace.createElement(theme.Edit, null)))), /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
13049
- title: "Delete Service"
13273
+ title: "Delete Service",
13274
+ disableHoverListener: !services[serviceId].isUserAddedService
13050
13275
  }, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(material.IconButton, {
13051
13276
  size: "large",
13052
- disabled: isDisabled(services[serviceId].serviceUrl),
13277
+ disabled: !services[serviceId].isUserAddedService,
13053
13278
  onClick: function onClick() {
13054
13279
  return mapStoreRemoveService(serviceId, services[serviceId].serviceUrl);
13055
13280
  },
@@ -13063,10 +13288,16 @@
13063
13288
  sx: styles.button,
13064
13289
  variant: "tertiary",
13065
13290
  startIcon: /*#__PURE__*/React__namespace.createElement(theme.Add, null)
13066
- }, "Add a new service"))), addServiceisOpen && /*#__PURE__*/React__namespace.createElement(ServicePopupConnect, {
13291
+ }, "Add a new service"))), addServiceIsOpen && /*#__PURE__*/React__namespace.createElement(ServicePopupConnect, {
13067
13292
  servicePopupVariant: "add",
13068
- isOpen: addServiceisOpen,
13293
+ isOpen: addServiceIsOpen,
13069
13294
  closePopup: closePopup
13295
+ }), editServiceIsOpen && /*#__PURE__*/React__namespace.createElement(ServicePopupConnect, {
13296
+ servicePopupVariant: "edit",
13297
+ isOpen: editServiceIsOpen.isOpen,
13298
+ closePopup: closePopup,
13299
+ serviceId: editServiceIsOpen.serviceId,
13300
+ url: editServiceIsOpen.serviceUrl
13070
13301
  }));
13071
13302
  };
13072
13303
 
@@ -13089,9 +13320,6 @@
13089
13320
 
13090
13321
  var ServiceOptionsDialogConnect = function ServiceOptionsDialogConnect() {
13091
13322
  var dispatch = reactRedux.useDispatch();
13092
- var allLayers = reactRedux.useSelector(function (store) {
13093
- return getAllLayers(store);
13094
- });
13095
13323
  var mapStoreRemoveService = React__namespace.useCallback(function (serviceId, serviceUrl) {
13096
13324
  dispatch(serviceActions.mapStoreRemoveService({
13097
13325
  id: serviceId,
@@ -13103,7 +13331,6 @@
13103
13331
  });
13104
13332
  return /*#__PURE__*/React__namespace.createElement(ServiceOptionsDialog, {
13105
13333
  services: services,
13106
- layers: allLayers,
13107
13334
  mapStoreRemoveService: mapStoreRemoveService
13108
13335
  });
13109
13336
  };
@@ -13394,40 +13621,6 @@
13394
13621
  });
13395
13622
  };
13396
13623
 
13397
- /* *
13398
- * Licensed under the Apache License, Version 2.0 (the "License");
13399
- * you may not use this file except in compliance with the License.
13400
- * You may obtain a copy of the License at
13401
- *
13402
- * http://www.apache.org/licenses/LICENSE-2.0
13403
- *
13404
- * Unless required by applicable law or agreed to in writing, software
13405
- * distributed under the License is distributed on an "AS IS" BASIS,
13406
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13407
- * See the License for the specific language governing permissions and
13408
- * limitations under the License.
13409
- *
13410
- * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
13411
- * Copyright 2021 - Finnish Meteorological Institute (FMI)
13412
- * */
13413
- var CustomSwitch = withStyles__default["default"](function (theme) {
13414
- return {
13415
- switchBase: {
13416
- '&$checked': {
13417
- color: theme.palette.geowebColors.customSlider.thumb
13418
- },
13419
- '&$checked + $track': {
13420
- backgroundColor: theme.palette.geowebColors.buttons.primary["default"].fill
13421
- }
13422
- },
13423
- checked: {},
13424
- track: {
13425
- backgroundColor: theme.palette.geowebColors.customSlider.switchTrackDisabled,
13426
- opacity: '1 !important'
13427
- }
13428
- };
13429
- })(material.Switch);
13430
-
13431
13624
  /* *
13432
13625
  * Licensed under the Apache License, Version 2.0 (the "License");
13433
13626
  * you may not use this file except in compliance with the License.
@@ -13464,7 +13657,7 @@
13464
13657
  keywords: keywords
13465
13658
  }));
13466
13659
  }, [allKeywordIds, allKeywordsActive, checkedKeywordIds, dispatch]);
13467
- return /*#__PURE__*/React__namespace.createElement(CustomSwitch, {
13660
+ return /*#__PURE__*/React__namespace.createElement(material.Switch, {
13468
13661
  checked: allKeywordsActive,
13469
13662
  onChange: toggleKeywords,
13470
13663
  "data-testid": "customSwitch"
@@ -13753,6 +13946,11 @@
13753
13946
  var serviceSetLayers = React__namespace.useCallback(function (payload) {
13754
13947
  dispatch(serviceActions.serviceSetLayers(payload));
13755
13948
  }, [dispatch]);
13949
+
13950
+ var checkIfUserAddedService = function checkIfUserAddedService(service) {
13951
+ return !!service.isUserAddedService;
13952
+ };
13953
+
13756
13954
  React__namespace.useEffect(function () {
13757
13955
  if (isOpenInStore && preloadedServices && preloadedServices.length > 0) {
13758
13956
  mergePresetsAndUserAddedServices(preloadedServices, getUserAddedServices()).forEach(function (service) {
@@ -13764,7 +13962,7 @@
13764
13962
  name: service.name,
13765
13963
  serviceUrl: service.url,
13766
13964
  layers: layers,
13767
- isUserAddedService: false
13965
+ isUserAddedService: checkIfUserAddedService(service)
13768
13966
  });
13769
13967
  }
13770
13968
  })["catch"](function () {
@@ -13938,15 +14136,10 @@
13938
14136
  return /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
13939
14137
  placement: placement,
13940
14138
  title: title
13941
- }, /*#__PURE__*/React__namespace.createElement(material.Box, {
13942
- component: "span",
13943
- sx: {
13944
- marginBottom: '8px'
13945
- }
13946
14139
  }, /*#__PURE__*/React__namespace.createElement(shared.ToolButton, __assign({
13947
14140
  onClick: onClick,
13948
14141
  active: isActive
13949
- }, props), children)));
14142
+ }, props), children));
13950
14143
  };
13951
14144
 
13952
14145
  /* *
@@ -14779,6 +14972,8 @@
14779
14972
  * Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
14780
14973
  * Copyright 2020 - Finnish Meteorological Institute (FMI)
14781
14974
  * */
14975
+ var titleOn = 'Auto update on';
14976
+ var titleOff = 'Auto update off';
14782
14977
 
14783
14978
  var AutoUpdateButton = function AutoUpdateButton(_a) {
14784
14979
  var _b = _a.toggleAutoUpdate,
@@ -14790,10 +14985,9 @@
14790
14985
  _d = _a.disabled,
14791
14986
  disabled = _d === void 0 ? false : _d;
14792
14987
  return /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
14793
- title: isAutoUpdating ? 'Auto update on' : 'Auto update off'
14794
- }, /*#__PURE__*/React__namespace.createElement("span", {
14988
+ title: isAutoUpdating ? titleOn : titleOff,
14795
14989
  "data-testid": "autoUpdateButtonTooltip"
14796
- }, /*#__PURE__*/React__namespace.createElement(shared.ToolButton, {
14990
+ }, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(shared.ToolButton, {
14797
14991
  active: isAutoUpdating,
14798
14992
  disabled: disabled,
14799
14993
  onClick: function onClick() {
@@ -14841,12 +15035,12 @@
14841
15035
  }
14842
15036
  };
14843
15037
  });
15038
+ var speedTooltipTitle = 'Speed';
14844
15039
 
14845
15040
  var SpeedButton = function SpeedButton(_a) {
14846
15041
  var animationDelay = _a.animationDelay,
14847
15042
  setMapAnimationDelay = _a.setMapAnimationDelay;
14848
15043
  var classes = useStyles$c();
14849
- var sliderClasses = shared.sliderStyles();
14850
15044
 
14851
15045
  var _b = __read(React__namespace.useState(false), 2),
14852
15046
  open = _b[0],
@@ -14901,17 +15095,17 @@
14901
15095
  return /*#__PURE__*/React__namespace.createElement("div", {
14902
15096
  className: classes.speedButtonDiv
14903
15097
  }, /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
14904
- title: "Speed"
14905
- }, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(shared.ToolButton, {
15098
+ title: speedTooltipTitle
15099
+ }, /*#__PURE__*/React__namespace.createElement(shared.ToolButton, {
14906
15100
  onClick: onClickButton,
14907
15101
  active: true,
14908
15102
  "data-testid": "speedButton"
14909
15103
  }, /*#__PURE__*/React__namespace.createElement(theme.TextIcon, {
14910
15104
  text: text
14911
- })))), open ? /*#__PURE__*/React__namespace.createElement("div", {
15105
+ }))), open ? /*#__PURE__*/React__namespace.createElement("div", {
14912
15106
  className: classes.sliderBackground
14913
- }, /*#__PURE__*/React__namespace.createElement("div", {
14914
- className: sliderClasses.sliderHeader
15107
+ }, /*#__PURE__*/React__namespace.createElement(material.Box, {
15108
+ sx: shared.sliderHeaderStyle
14915
15109
  }, "Speed"), /*#__PURE__*/React__namespace.createElement(shared.CustomSlider, {
14916
15110
  "data-testid": "speedSlider",
14917
15111
  orientation: "vertical",
@@ -15088,31 +15282,7 @@
15088
15282
  disabled: {}
15089
15283
  };
15090
15284
  });
15091
- var TimeStepSwitch = withStyles__default["default"](function (theme) {
15092
- return {
15093
- root: {
15094
- marginLeft: '18px'
15095
- },
15096
- thumb: {
15097
- width: 20,
15098
- height: 20,
15099
- margin: '0 0 0 0'
15100
- },
15101
- switchBase: {
15102
- '&$checked': {
15103
- color: theme.palette.geowebColors.customSlider.thumb
15104
- },
15105
- '&$checked + $track': {
15106
- backgroundColor: theme.palette.geowebColors.customSlider.switchTrack
15107
- }
15108
- },
15109
- checked: {},
15110
- track: {
15111
- backgroundColor: theme.palette.geowebColors.customSlider.switchTrackDisabled,
15112
- opacity: '1 !important'
15113
- }
15114
- };
15115
- })(material.Switch);
15285
+ var timeStepTitle = 'Time step';
15116
15286
 
15117
15287
  var TimeStepButton = function TimeStepButton(_a) {
15118
15288
  var timeStep = _a.timeStep,
@@ -15127,7 +15297,6 @@
15127
15297
  return null;
15128
15298
  } : _d;
15129
15299
  var classes = useStyles$b();
15130
- var sliderClasses = shared.sliderStyles();
15131
15300
 
15132
15301
  var _e = __read(React__namespace.useState(false), 2),
15133
15302
  open = _e[0],
@@ -15184,8 +15353,8 @@
15184
15353
  return /*#__PURE__*/React__namespace.createElement("div", {
15185
15354
  className: classes.timeStepDiv
15186
15355
  }, /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
15187
- title: "Time step"
15188
- }, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(shared.ToolButton, {
15356
+ title: timeStepTitle
15357
+ }, /*#__PURE__*/React__namespace.createElement(shared.ToolButton, {
15189
15358
  active: true,
15190
15359
  onClick: onClickButton,
15191
15360
  "data-testid": "timeStepButton",
@@ -15193,10 +15362,10 @@
15193
15362
  }, /*#__PURE__*/React__namespace.createElement(theme.FastForward, null), /*#__PURE__*/React__namespace.createElement(theme.TextIcon, {
15194
15363
  text: currentMark && currentMark.text || '',
15195
15364
  "data-testid": "timeStepButtonText"
15196
- })))), open ? /*#__PURE__*/React__namespace.createElement("div", {
15365
+ }))), open ? /*#__PURE__*/React__namespace.createElement("div", {
15197
15366
  className: classes.sliderBackground
15198
- }, /*#__PURE__*/React__namespace.createElement("div", {
15199
- className: sliderClasses.sliderHeader
15367
+ }, /*#__PURE__*/React__namespace.createElement(material.Box, {
15368
+ sx: shared.sliderHeaderStyle
15200
15369
  }, "Time step"), /*#__PURE__*/React__namespace.createElement(shared.CustomSlider, {
15201
15370
  "data-testid": "timeStepButtonSlider",
15202
15371
  orientation: "vertical",
@@ -15214,14 +15383,17 @@
15214
15383
  }, /*#__PURE__*/React__namespace.createElement("span", {
15215
15384
  "data-testid": "timestepAutoSwitchTooltip"
15216
15385
  }, /*#__PURE__*/React__namespace.createElement(material.FormControlLabel, {
15217
- control: /*#__PURE__*/React__namespace.createElement(TimeStepSwitch, {
15386
+ control: /*#__PURE__*/React__namespace.createElement(material.Switch, {
15218
15387
  checked: isTimestepAuto,
15219
15388
  onChange: function onChange() {
15220
15389
  return onToggleTimestepAuto();
15221
15390
  },
15222
15391
  disabled: disabled,
15223
15392
  id: "timestepAutoSwitch",
15224
- disableRipple: true
15393
+ disableRipple: true,
15394
+ sx: {
15395
+ marginLeft: '18px'
15396
+ }
15225
15397
  }),
15226
15398
  label: "Auto",
15227
15399
  labelPlacement: "end",
@@ -15280,13 +15452,13 @@
15280
15452
  var id = open ? 'simple-popover' : undefined;
15281
15453
  return /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
15282
15454
  title: "Options"
15283
- }, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(shared.ToolButton, {
15455
+ }, /*#__PURE__*/React__namespace.createElement(shared.ToolButton, {
15284
15456
  onClick: onClickButton,
15285
15457
  "data-testid": "optionsMenuButton",
15286
15458
  active: open
15287
15459
  }, /*#__PURE__*/React__namespace.createElement(theme.Options, {
15288
15460
  "data-testid": "optionsIcon"
15289
- })))), /*#__PURE__*/React__namespace.createElement(OptionsPopOver, {
15461
+ }))), /*#__PURE__*/React__namespace.createElement(OptionsPopOver, {
15290
15462
  id: id,
15291
15463
  open: open,
15292
15464
  "data-testid": "optionsMenuPopOver",
@@ -21052,8 +21224,10 @@
21052
21224
 
21053
21225
 
21054
21226
  if (!prevProps || prevProps.disableMapPin !== props.disableMapPin) {
21055
- if (!(props.disableMapPin === undefined)) {
21056
- this.adaguc.webMapJS.getMapPin().toggleDisableMapPin();
21227
+ if (props.disableMapPin === true) {
21228
+ this.adaguc.webMapJS.getMapPin().setMapPinDisabled();
21229
+ } else if (props.disableMapPin === false) {
21230
+ this.adaguc.webMapJS.getMapPin().setMapPinEnabled();
21057
21231
  }
21058
21232
  }
21059
21233
  /* Change the animation delay */
@@ -21376,7 +21550,10 @@
21376
21550
  _this.onUpdateBBoxListener(newBbox);
21377
21551
  }, true);
21378
21552
  this.adaguc.webMapJS.addListener('onsetmappin', function (mapPinLatLonCoordinate) {
21379
- if (onMapPinChangeLocation) {
21553
+ // only change location when mapPin is visible and enabled
21554
+ if (onMapPinChangeLocation && // eslint-disable-next-line react/destructuring-assignment
21555
+ _this.props.displayMapPin && // eslint-disable-next-line react/destructuring-assignment
21556
+ !_this.props.disableMapPin) {
21380
21557
  onMapPinChangeLocation({
21381
21558
  mapPinLocation: {
21382
21559
  lat: mapPinLatLonCoordinate.lat,
@@ -21485,6 +21662,7 @@
21485
21662
  },
21486
21663
  shouldAutoFetch: true,
21487
21664
  displayMapPin: false,
21665
+ disableMapPin: false,
21488
21666
  onMount: function onMount() {
21489
21667
  return null;
21490
21668
  },
@@ -22029,7 +22207,8 @@
22029
22207
  displayDimensionSelectButtonInMap = _o === void 0 ? true : _o,
22030
22208
  _p = _a.multiLegend,
22031
22209
  multiLegend = _p === void 0 ? true : _p,
22032
- props = __rest(_a, ["id", "title", "layers", "shouldAutoUpdate", "shouldAnimate", "bbox", "srs", "shouldShowZoomControls", "displayMapPin", "showTimeSlider", "disableTimeSlider", "displayTimeInMap", "displayLayerManagerAndLegendButtonInMap", "displayDimensionSelectButtonInMap", "multiLegend"]);
22210
+ shouldShowLayerManager = _a.shouldShowLayerManager,
22211
+ props = __rest(_a, ["id", "title", "layers", "shouldAutoUpdate", "shouldAnimate", "bbox", "srs", "shouldShowZoomControls", "displayMapPin", "showTimeSlider", "disableTimeSlider", "displayTimeInMap", "displayLayerManagerAndLegendButtonInMap", "displayDimensionSelectButtonInMap", "multiLegend", "shouldShowLayerManager"]);
22033
22212
 
22034
22213
  var dispatch = reactRedux.useDispatch();
22035
22214
  var mapId = React__default["default"].useRef(id || generateMapId()).current;
@@ -22060,7 +22239,17 @@
22060
22239
  dispatch(mapActions$1.setMapPreset({
22061
22240
  mapId: mapId,
22062
22241
  initialProps: initialProps
22063
- })); // eslint-disable-next-line react-hooks/exhaustive-deps
22242
+ }));
22243
+
22244
+ if (shouldShowLayerManager !== undefined) {
22245
+ dispatch(uiActions.setActiveMapIdForDialog({
22246
+ type: 'layerManager',
22247
+ mapId: mapId,
22248
+ setOpen: shouldShowLayerManager,
22249
+ source: 'app'
22250
+ }));
22251
+ } // eslint-disable-next-line react-hooks/exhaustive-deps
22252
+
22064
22253
  }, []);
22065
22254
  return /*#__PURE__*/React__default["default"].createElement(material.Box, {
22066
22255
  sx: {
@@ -23131,21 +23320,17 @@
23131
23320
  }
23132
23321
  }, /*#__PURE__*/React__default["default"].createElement("h1", {
23133
23322
  "data-testid": "map-warning-properties-title"
23134
- }, selectedFeatureProperties.country), selectedFeatureProperties.details[0].event && /*#__PURE__*/React__default["default"].createElement("pre", {
23135
- "data-testid": "map-warning-properties-row"
23136
- }, "Event: ", selectedFeatureProperties.details[0].event), selectedFeatureProperties.details[0].sent && /*#__PURE__*/React__default["default"].createElement("pre", {
23137
- "data-testid": "map-warning-properties-row"
23138
- }, "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", {
23323
+ }, selectedFeatureProperties.areaDesc), selectedFeatureProperties.areaDesc && /*#__PURE__*/React__default["default"].createElement("pre", {
23139
23324
  "data-testid": "map-warning-properties-row"
23140
- }, "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", {
23325
+ }, "event: ", selectedFeatureProperties.languages[2].event), selectedFeatureProperties.onset && /*#__PURE__*/React__default["default"].createElement("pre", {
23141
23326
  "data-testid": "map-warning-properties-row"
23142
- }, "Web: ", selectedFeatureProperties.details[0].web), selectedFeatureProperties.details[0].sender && /*#__PURE__*/React__default["default"].createElement("pre", {
23327
+ }, "Sent:", ' ', moment__default["default"].utc(selectedFeatureProperties.onset).format('DD MMM YYYY, HH:mm'), ' ', "UTC"), selectedFeatureProperties.expires && /*#__PURE__*/React__default["default"].createElement("pre", {
23143
23328
  "data-testid": "map-warning-properties-row"
23144
- }, "Sender: ", selectedFeatureProperties.details[0].sender), selectedFeatureProperties.details[0].identifier && /*#__PURE__*/React__default["default"].createElement("pre", {
23329
+ }, "Expires:", ' ', moment__default["default"].utc(selectedFeatureProperties.expires).format('DD MMM YYYY, HH:mm'), ' ', "UTC"), selectedFeatureProperties.languages[2].senderName && /*#__PURE__*/React__default["default"].createElement("pre", {
23145
23330
  "data-testid": "map-warning-properties-row"
23146
- }, "Identifier: ", selectedFeatureProperties.details[0].identifier), selectedFeatureProperties.details[0].area && /*#__PURE__*/React__default["default"].createElement("pre", {
23331
+ }, "Sender: ", selectedFeatureProperties.languages[2].senderName), selectedFeatureProperties.identifier && /*#__PURE__*/React__default["default"].createElement("pre", {
23147
23332
  "data-testid": "map-warning-properties-row"
23148
- }, "area: ", selectedFeatureProperties.details[0].area));
23333
+ }, "Identifier: ", selectedFeatureProperties.identifier));
23149
23334
  };
23150
23335
 
23151
23336
  /* *
@@ -23195,9 +23380,7 @@
23195
23380
  exports.dateFormat = dateFormat;
23196
23381
  exports.defaultBbox = defaultBbox;
23197
23382
  exports.defaultConfigurations = defaultConfigurations;
23198
- exports.filterBaseLayers = filterBaseLayers;
23199
23383
  exports.filterLayers = filterLayers;
23200
- exports.filterMapLayers = filterMapLayers;
23201
23384
  exports.filterMapPresets = filterMapPresets;
23202
23385
  exports.filterNonTimeDimensions = filterNonTimeDimensions;
23203
23386
  exports.filterServices = filterServices;
@@ -23205,7 +23388,7 @@
23205
23388
  exports.generateMapId = generateMapId;
23206
23389
  exports.generateTimesliderId = generateTimesliderId;
23207
23390
  exports.getFirstTimeStepForLayerId = getFirstTimeStepForLayerId;
23208
- exports.getInitialPresets = getInitialPresets;
23391
+ exports.getInitialAppPresets = getInitialAppPresets;
23209
23392
  exports.getLastTimeStepForLayerId = getLastTimeStepForLayerId;
23210
23393
  exports.getNextTimeStepForLayerId = getNextTimeStepForLayerId;
23211
23394
  exports.getPreviousTimeStepForLayerId = getPreviousTimeStepForLayerId;
@@ -23214,12 +23397,14 @@
23214
23397
  exports.getWMJSTimeDimensionForLayerId = getWMJSTimeDimensionForLayerId;
23215
23398
  exports.getWMLayerById = getWMLayerById;
23216
23399
  exports.layerActions = layerActions;
23217
- exports.layerReducer = reducer$5;
23400
+ exports.layerReducer = reducer$6;
23218
23401
  exports.mapActions = mapActions;
23219
23402
  exports.mapModuleConfig = moduleConfig;
23220
23403
  exports.mapSelectors = selectors;
23221
23404
  exports.mapTypes = types$2;
23222
23405
  exports.mapUtils = utils;
23406
+ exports.parseBoolean = parseBoolean;
23407
+ exports.parseLayer = parseLayer;
23223
23408
  exports.publicLayers = publicLayers;
23224
23409
  exports.publicServices = publicServices;
23225
23410
  exports.registerWMJSMap = registerWMJSMap;