@opengeoweb/core 2.1.3 → 2.1.4

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/{core.esm.js → index.esm.js} +745 -391
  2. package/{core.umd.js → index.umd.js} +959 -601
  3. package/lib/components/CustomSwitch/CustomSwitch.d.ts +1 -1
  4. package/lib/components/LayerManager/LayerContainerRow/LayerManagerButton.d.ts +1 -1
  5. package/lib/components/LayerManager/LayerManagerUtils.d.ts +2 -2
  6. package/lib/components/LayerManager/LayerSelect/LayerList/LayerList.d.ts +1 -0
  7. package/lib/components/LayerManager/LayerSelect/ServiceList/ServiceChip.d.ts +2 -0
  8. package/lib/components/LayerManager/LayerSelect/ServiceList/ServiceChipConnect.d.ts +9 -0
  9. package/lib/components/LayerManager/LayerSelect/ServiceList/ServiceChipConnect.spec.d.ts +1 -0
  10. package/lib/components/LayerManager/LayerSelect/ServiceList/ServiceList.d.ts +2 -0
  11. package/lib/components/LayerManager/tooltipContainerStyles.d.ts +1 -1
  12. package/lib/components/MapView/MapViewConnect.LayerChangeEnabledOpacity.stories.d.ts +7 -0
  13. package/lib/components/MapView/MapViewConnect.d.ts +2 -0
  14. package/lib/components/Mapcontrols/MapControlButton.d.ts +1 -1
  15. package/lib/components/MultiMapDimensionSelect/MultiDimensionSelectConfig.d.ts +1 -1
  16. package/lib/components/MultiMapView/MultiMapViewConnect.d.ts +1 -1
  17. package/lib/components/Providers/Providers.d.ts +1 -1
  18. package/lib/components/ReactMapView/ReactMapView.d.ts +3 -7
  19. package/lib/components/ReactMapView/ReactMapViewParseLayer.d.ts +2 -2
  20. package/lib/components/ReactMapView/types.d.ts +2 -7
  21. package/lib/components/TimeSlider/TimeSliderLegend/TimeSliderLegendRenderFunctions.d.ts +1 -1
  22. package/lib/components/TimeSlider/TimeSliderRail/TimeSliderRailRenderFunctions.d.ts +1 -1
  23. package/lib/components/ToggleIconButton/ToggleIconButton.d.ts +6 -3
  24. package/lib/components/TooltipSelect/TooltipSelect.d.ts +2 -2
  25. package/lib/store/layerSelect/actions.d.ts +19 -4
  26. package/lib/store/layerSelect/constants.d.ts +3 -0
  27. package/lib/store/layerSelect/sagas.d.ts +2 -1
  28. package/lib/store/layerSelect/selectors.d.ts +32 -2
  29. package/lib/store/layerSelect/types.d.ts +32 -6
  30. package/lib/store/mapStore/layers/actions.d.ts +2 -8
  31. package/lib/store/mapStore/layers/constants.d.ts +1 -1
  32. package/lib/store/mapStore/layers/selectors.d.ts +5 -14
  33. package/lib/store/mapStore/layers/types.d.ts +34 -21
  34. package/lib/store/mapStore/map/sagas.d.ts +2 -2
  35. package/lib/store/mapStore/map/selectors.d.ts +6 -6
  36. package/lib/store/mapStore/service/selectors.d.ts +35 -5
  37. package/lib/store/mapStore/service/types.d.ts +5 -1
  38. package/lib/storybookUtils/HelperComponents.d.ts +1 -1
  39. package/lib/storybookUtils/storyComponents/MapDrawGeoJSON.d.ts +5 -5
  40. package/lib/storybookUtils/storyComponents/MapDrawGeoJSONStyles.d.ts +2 -1
  41. package/lib/utils/defaultTestSettings.d.ts +13 -1
  42. package/package.json +13 -14
@@ -5,13 +5,15 @@ import React__default, { useState, Component, useRef, useEffect } from 'react';
5
5
  import produce, { produce as produce$1 } from 'immer';
6
6
  import { takeLatest, put, select, call, takeEvery } from 'redux-saga/effects';
7
7
  import { WMGetServiceFromStore, getMapImageStore, WMBBOX, debug, DebugType, WMJSMap, WMLayer, legendImageStore, WMImageEventType, getLegendGraphicURLForLayer } from '@opengeoweb/webmap';
8
- import { makeStyles, Tooltip, Select, Grid, InputLabel, IconButton, Paper, Box, Typography, CircularProgress, List, ListSubheader, ListItem, ListItemText, Dialog, DialogTitle, DialogContent, DialogContentText, TextField, DialogActions, Button, createStyles, MenuItem, Checkbox, SvgIcon, ListItemIcon, Menu, FormControl, InputAdornment, withStyles, Switch, ListItemSecondaryAction, Slider, FormControlLabel, Popover, useMediaQuery, useTheme } from '@material-ui/core';
8
+ import { Tooltip, Select, Grid, InputLabel, IconButton, Paper, Box, Typography, CircularProgress, List, ListSubheader, ListItem, ListItemText, Dialog, DialogTitle, DialogContent, DialogContentText, TextField, DialogActions, Button, MenuItem, Checkbox, SvgIcon, ListItemIcon, Menu, FormControl, ToggleButton, InputAdornment, Switch, ListItemSecondaryAction, Slider, FormControlLabel, Popover, useMediaQuery, useTheme, SliderThumb } from '@mui/material';
9
+ import makeStyles from '@mui/styles/makeStyles';
9
10
  import { connect, useDispatch, useSelector, Provider } from 'react-redux';
10
11
  import { sliderStyles, CustomSlider, ToolContainerDraggable, useIsMounted } from '@opengeoweb/shared';
11
12
  import _, { debounce } from 'lodash';
12
- import { Cached, Add, MoreVert, FileCopy, Delete, DragIndicator, Close, ChevronLeft, ChevronRight, Link, LinkOff, DeleteForever } from '@material-ui/icons';
13
+ import { Cached, Add, MoreVert, FileCopy, Delete, DragIndicator, Close, ChevronLeft, ChevronRight, Link, LinkOff, DeleteForever } from '@mui/icons-material';
13
14
  import { Sortable, ReactSortable } from 'react-sortablejs';
14
- import { ToggleButton } from '@material-ui/lab';
15
+ import createStyles from '@mui/styles/createStyles';
16
+ import withStyles from '@mui/styles/withStyles';
15
17
  import { debounce as debounce$1 } from 'throttle-debounce';
16
18
  import cloneDeep from 'lodash.clonedeep';
17
19
  import proj4 from 'proj4';
@@ -387,7 +389,6 @@ var WEBMAP_LAYER_CHANGE_NAME = 'WEBMAP_LAYER_CHANGE_NAME';
387
389
  var WEBMAP_LAYER_CHANGE_STYLE = 'WEBMAP_LAYER_CHANGE_STYLE';
388
390
  var WEBMAP_LAYER_CHANGE_DIMENSION = 'WEBMAP_LAYER_CHANGE_DIMENSION';
389
391
  var WEBMAP_LAYER_SET_DIMENSIONS = 'WEBMAP_LAYER_SET_DIMENSIONS';
390
- var WEBMAP_LAYER_SET_STYLES = 'WEBMAP_LAYER_SET_STYLES';
391
392
  var WEBMAP_LAYER_CHANGE_ENABLED = 'WEBMAP_LAYER_CHANGE_ENABLED';
392
393
  var WEBMAP_LAYER_DELETE = 'WEBMAP_LAYER_DELETE';
393
394
  var WEBMAP_LAYER_ERROR = 'WEBMAP_LAYER_ERROR';
@@ -398,6 +399,7 @@ var WEBMAP_SET_BASELAYERS = 'WEBMAP_SET_BASELAYERS';
398
399
  var WEBMAP_ADD_BASELAYER = 'WEBMAP_ADD_BASELAYER';
399
400
  var WEBMAP_ADD_AVAILABLE_BASELAYER = 'WEBMAP_ADD_AVAILABLE_BASELAYER';
400
401
  var WEBMAP_ADD_AVAILABLE_BASELAYERS = 'WEBMAP_ADD_AVAILABLE_BASELAYERS';
402
+ var WEBMAP_UPDATE_LAYER_INFO = 'WEBMAP_UPDATE_LAYER_INFO';
401
403
 
402
404
  /* *
403
405
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -536,19 +538,6 @@ var layerSetDimensions = function layerSetDimensions(payload) {
536
538
  payload: payload
537
539
  };
538
540
  };
539
- /**
540
- * Action layerSetStyles is used automatically after calling the setLayers action. Contents is based on WMS GetCapabilities
541
- *
542
- * Example: layerSetStyles({service: someService, name: 'layerName', styles: styleArray})
543
- * @param {object} payload consisting of service: string, name: string, styles: Style[]
544
- */
545
-
546
- var layerSetStyles = function layerSetStyles(payload) {
547
- return {
548
- type: WEBMAP_LAYER_SET_STYLES,
549
- payload: payload
550
- };
551
- };
552
541
  /**
553
542
  * Changes the name of the layer
554
543
  *
@@ -644,6 +633,12 @@ var addAvailableBaseLayers = function addAvailableBaseLayers(payload) {
644
633
  payload: payload
645
634
  };
646
635
  };
636
+ var onUpdateLayerInformation = function onUpdateLayerInformation(payload) {
637
+ return {
638
+ type: WEBMAP_UPDATE_LAYER_INFO,
639
+ payload: payload
640
+ };
641
+ };
647
642
 
648
643
  /* *
649
644
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -742,7 +737,6 @@ var actions$3 = /*#__PURE__*/Object.freeze({
742
737
  layerChangeEnabled: layerChangeEnabled,
743
738
  layerChangeDimension: layerChangeDimension,
744
739
  layerSetDimensions: layerSetDimensions,
745
- layerSetStyles: layerSetStyles,
746
740
  layerChangeName: layerChangeName,
747
741
  layerChangeStyle: layerChangeStyle,
748
742
  layerDelete: layerDelete,
@@ -750,6 +744,7 @@ var actions$3 = /*#__PURE__*/Object.freeze({
750
744
  layerError: layerError,
751
745
  addAvailableBaseLayer: addAvailableBaseLayer,
752
746
  addAvailableBaseLayers: addAvailableBaseLayers,
747
+ onUpdateLayerInformation: onUpdateLayerInformation,
753
748
  serviceSetLayers: serviceSetLayers
754
749
  });
755
750
 
@@ -1097,18 +1092,6 @@ var getOverLayers = createSelector(getAllLayers, function (layers) {
1097
1092
  return layer.layerType === LayerType.overLayer;
1098
1093
  });
1099
1094
  });
1100
- /**
1101
- * Gets styles of the passed layer
1102
- *
1103
- * Example: layerStyles = getLayerStyles(store, 'layerId_1')
1104
- * @param {object} store store: object - object from which the layers state will be extracted
1105
- * @param {string} layerId layerId: string - Id of the layer
1106
- * @returns {array} returnType: Style[] - array containing layer styles
1107
- */
1108
-
1109
- var getLayerStyles = createSelector(getLayerById, function (layer) {
1110
- return layer && layer.styles ? layer.styles : [];
1111
- });
1112
1095
  /**
1113
1096
  * Gets dimensions of the passed layer
1114
1097
  *
@@ -2638,8 +2621,8 @@ var servicesStore = function servicesStore(store) {
2638
2621
  */
2639
2622
 
2640
2623
 
2641
- var getServiceIds = createSelector(servicesStore, function (store) {
2642
- return store ? store.allIds : [];
2624
+ var getServiceIds = createSelector(servicesStore, function (serviceState) {
2625
+ return serviceState ? serviceState.allIds : [];
2643
2626
  });
2644
2627
  /**
2645
2628
  * Gets map services
@@ -2653,20 +2636,75 @@ var getServices = createSelector(servicesStore, function (store) {
2653
2636
  return store ? store.byId : {};
2654
2637
  });
2655
2638
  /**
2656
- * Gets map layers from servicename
2639
+ * Gets the service object by its url
2657
2640
  *
2658
- * Example: layers = getServices(store, 'serviceName')
2641
+ * Example: service = getServiceByName(store, 'serviceName')
2659
2642
  * @param {object} store store: object - Store object
2660
- * @returns {array} returnType: ServiceLayer[]
2643
+ * @returns {Service} returnType: Service
2661
2644
  */
2662
2645
 
2663
- var getServiceLayersByName = function getServiceLayersByName(store, serviceName) {
2664
- if (store && store.services && store.services.byId && store.services.byId[serviceName] && store.services.byId[serviceName].layers) {
2665
- return store.services.byId[serviceName].layers;
2646
+ var getServiceByName = createSelector([servicesStore, function (state, serviceName) {
2647
+ return serviceName;
2648
+ }], function (serviceState, serviceName) {
2649
+ if (serviceState && serviceState.byId && serviceState.byId[serviceName]) {
2650
+ return serviceState.byId[serviceName];
2666
2651
  }
2667
2652
 
2668
2653
  return null;
2669
- };
2654
+ });
2655
+ /**
2656
+ * Gets the layer from the store using the serviceUrl and layerName
2657
+ *
2658
+ * Example: layers = getLayersFromService(store, 'https://geoservices.knmi.nl/...')
2659
+ * @param {object} store store: object - object from which the layers state will be extracted
2660
+ * @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
2661
+ * @returns {arrayr} returnType: ServiceLayer[] - All layers within the service object.
2662
+ */
2663
+
2664
+ var getLayersFromService$1 = createSelector(getServiceByName, function (service) {
2665
+ return service && service.layers || null;
2666
+ });
2667
+ /**
2668
+ * Gets the layer from the store using the serviceUrl and layerName
2669
+ *
2670
+ * Example: layer = getLayerFromService(store, 'https://geoservices.knmi.nl/...', 'radar')
2671
+ * @param {object} store store: object - The application store
2672
+ * @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
2673
+ * @param {string} layerName layerName: string - Name of the layer in the service
2674
+ * @returns {ServiceLayer} returnType: ServiceLayer - The layer from the service object.
2675
+ */
2676
+
2677
+ var getLayerFromService = createSelector(function (store, serviceUrl) {
2678
+ return getLayersFromService$1(store, serviceUrl);
2679
+ }, function (store, serviceUrl) {
2680
+ return serviceUrl;
2681
+ }, function (store, serviceUrl, layerName) {
2682
+ return layerName;
2683
+ }, function (layers, serviceUrl, layerName) {
2684
+ if (!layers) return null;
2685
+ var index = layers.findIndex(function (serviceLayer) {
2686
+ return serviceLayer.name === layerName;
2687
+ });
2688
+
2689
+ if (index === -1) {
2690
+ return null;
2691
+ }
2692
+
2693
+ return layers[index];
2694
+ });
2695
+ /**
2696
+ * Gets the layers stylelist from the servicestore using the serviceUrl and layerName
2697
+ *
2698
+ * Example: layerStyles = getLayerStyles(store, layerService, layerName);
2699
+ * @param {object} store store: object - store from which the layers state will be extracted
2700
+ * @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
2701
+ * @param {string} layerName layerName: string - Name of the layer in the service
2702
+ * @returns {array} returnType: Style[] - array containing layer styles
2703
+ */
2704
+
2705
+ var getLayerStyles = createSelector(getLayerFromService, function (layer) {
2706
+ return layer && layer.styles ? layer.styles : [];
2707
+ });
2670
2708
 
2671
2709
  /* *
2672
2710
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -2730,7 +2768,6 @@ var selectors = /*#__PURE__*/Object.freeze({
2730
2768
  getLayers: getLayers,
2731
2769
  getBaseLayers: getBaseLayers,
2732
2770
  getOverLayers: getOverLayers,
2733
- getLayerStyles: getLayerStyles,
2734
2771
  getLayerDimensions: getLayerDimensions,
2735
2772
  getLayerNonTimeDimensions: getLayerNonTimeDimensions,
2736
2773
  getLayerTimeDimension: getLayerTimeDimension,
@@ -2744,7 +2781,10 @@ var selectors = /*#__PURE__*/Object.freeze({
2744
2781
  getAvailableBaseLayersForMap: getAvailableBaseLayersForMap,
2745
2782
  getServiceIds: getServiceIds,
2746
2783
  getServices: getServices,
2747
- getServiceLayersByName: getServiceLayersByName
2784
+ getServiceByName: getServiceByName,
2785
+ getLayersFromService: getLayersFromService$1,
2786
+ getLayerFromService: getLayerFromService,
2787
+ getLayerStyles: getLayerStyles
2748
2788
  });
2749
2789
 
2750
2790
  /* *
@@ -2793,7 +2833,6 @@ var constants$1 = /*#__PURE__*/Object.freeze({
2793
2833
  WEBMAP_LAYER_CHANGE_STYLE: WEBMAP_LAYER_CHANGE_STYLE,
2794
2834
  WEBMAP_LAYER_CHANGE_DIMENSION: WEBMAP_LAYER_CHANGE_DIMENSION,
2795
2835
  WEBMAP_LAYER_SET_DIMENSIONS: WEBMAP_LAYER_SET_DIMENSIONS,
2796
- WEBMAP_LAYER_SET_STYLES: WEBMAP_LAYER_SET_STYLES,
2797
2836
  WEBMAP_LAYER_CHANGE_ENABLED: WEBMAP_LAYER_CHANGE_ENABLED,
2798
2837
  WEBMAP_LAYER_DELETE: WEBMAP_LAYER_DELETE,
2799
2838
  WEBMAP_LAYER_ERROR: WEBMAP_LAYER_ERROR,
@@ -2804,6 +2843,7 @@ var constants$1 = /*#__PURE__*/Object.freeze({
2804
2843
  WEBMAP_ADD_BASELAYER: WEBMAP_ADD_BASELAYER,
2805
2844
  WEBMAP_ADD_AVAILABLE_BASELAYER: WEBMAP_ADD_AVAILABLE_BASELAYER,
2806
2845
  WEBMAP_ADD_AVAILABLE_BASELAYERS: WEBMAP_ADD_AVAILABLE_BASELAYERS,
2846
+ WEBMAP_UPDATE_LAYER_INFO: WEBMAP_UPDATE_LAYER_INFO,
2807
2847
  MAP_SERVICES_SET_LAYERS: MAP_SERVICES_SET_LAYERS
2808
2848
  });
2809
2849
 
@@ -3740,18 +3780,6 @@ var reducer$5 = function reducer() {
3740
3780
  });
3741
3781
  }
3742
3782
 
3743
- case WEBMAP_LAYER_SET_STYLES:
3744
- {
3745
- var _action$payload12 = action.payload,
3746
- styles = _action$payload12.styles,
3747
- _layerId9 = _action$payload12.layerId;
3748
- return produce(state, function (draft) {
3749
- if (draft.byId[_layerId9]) {
3750
- draft.byId[_layerId9].styles = styles;
3751
- }
3752
- });
3753
- }
3754
-
3755
3783
  case WEBMAP_ADD_AVAILABLE_BASELAYER:
3756
3784
  {
3757
3785
  var _layer2 = action.payload.layer;
@@ -3783,6 +3811,23 @@ var reducer$5 = function reducer() {
3783
3811
  });
3784
3812
  }
3785
3813
 
3814
+ case WEBMAP_UPDATE_LAYER_INFO:
3815
+ {
3816
+ var _action$payload12 = action.payload,
3817
+ layerStyle = _action$payload12.layerStyle,
3818
+ layerDimensions = _action$payload12.layerDimensions;
3819
+ var layerStyleAction = {
3820
+ payload: layerStyle,
3821
+ type: WEBMAP_LAYER_CHANGE_STYLE
3822
+ };
3823
+ var intermediateState = layerStyle === null ? state : reducer(state, layerStyleAction);
3824
+ var dimensionsAction = {
3825
+ payload: layerDimensions,
3826
+ type: WEBMAP_LAYER_SET_DIMENSIONS
3827
+ };
3828
+ return layerDimensions === null ? intermediateState : reducer(intermediateState, dimensionsAction);
3829
+ }
3830
+
3786
3831
  default:
3787
3832
  return state;
3788
3833
  }
@@ -4478,82 +4523,72 @@ var getMapBaseLayerActionsTargets = function getMapBaseLayerActionsTargets(state
4478
4523
  * Copyright 2020 - Finnish Meteorological Institute (FMI)
4479
4524
  * */
4480
4525
  var ORIGIN_REACTMAPVIEWPARSELAYER = 'ReactMapViewParseLayer';
4481
- var setServiceMetadata = function setServiceMetadata(wmLayer, mapId, webMapJSInstance, mapProperties, onMapUpdateAllDimensions, onLayerChangeStyle, onServiceSetLayers, onLayerSetStyles, onLayerSetDimensions) {
4526
+ var setServiceMetadata = function setServiceMetadata(wmLayer, mapId, webMapJSInstance, mapProperties, onUpdateLayerInformation) {
4482
4527
  var origin = ORIGIN_REACTMAPVIEWPARSELAYER;
4483
4528
  var service = WMGetServiceFromStore(wmLayer.service);
4484
4529
  /* Update list of layers for service */
4485
4530
 
4486
4531
  var done = function done(layers) {
4487
- onServiceSetLayers && onServiceSetLayers({
4488
- id: wmLayer.service,
4489
- name: wmLayer.title,
4490
- service: wmLayer.service,
4491
- layers: layers
4492
- });
4493
- /* Update style information in services for a layer */
4494
-
4495
- onLayerSetStyles && onLayerSetStyles({
4496
- origin: origin,
4497
- layerId: wmLayer.id,
4498
- styles: wmLayer.getStyles()
4499
- });
4500
- /* Select first style in service for a layer */
4501
-
4502
- onLayerChangeStyle && onLayerChangeStyle({
4503
- origin: origin,
4504
- layerId: wmLayer.ReactWMJSLayerId,
4505
- style: wmLayer.currentStyle // || wmjsLayer.getStyles().length > 0 ? wmjsLayer.getStyles()[0].Name.value : 'default'
4506
-
4507
- });
4508
- /* Trigger update of all map dimensions */
4509
-
4510
- onMapUpdateAllDimensions && onMapUpdateAllDimensions({
4511
- origin: origin,
4512
- mapId: mapId,
4513
- dimensions: webMapJSInstance.mapdimensions.map(function (_ref) {
4514
- var name = _ref.name,
4515
- units = _ref.units,
4516
- currentValue = _ref.currentValue,
4517
- synced = _ref.synced;
4518
- var reactDim = mapProperties.dimensions && mapProperties.dimensions.find(function (dim) {
4519
- return dim.name === name;
4520
- });
4521
- var newDimValue = reactDim && reactDim.currentValue || currentValue;
4522
- var newDimSynced = reactDim && reactDim.synced || synced;
4523
- return {
4524
- name: name,
4525
- units: units,
4526
- currentValue: newDimValue,
4527
- synced: newDimSynced
4528
- };
4529
- })
4530
- });
4531
- /* Trigger update layer dimensions */
4532
-
4533
- onLayerSetDimensions && onLayerSetDimensions({
4534
- origin: origin,
4535
- layerId: wmLayer.id,
4536
- dimensions: wmLayer.dimensions.map(function (_ref2) {
4537
- var name = _ref2.name,
4538
- units = _ref2.units,
4539
- currentValue = _ref2.currentValue,
4540
- dimMinValue = _ref2.dimMinValue,
4541
- dimMaxValue = _ref2.dimMaxValue,
4542
- dimTimeInterval = _ref2.dimTimeInterval,
4543
- values = _ref2.values,
4544
- synced = _ref2.synced;
4545
- return {
4546
- name: name,
4547
- units: units,
4548
- currentValue: currentValue,
4549
- maxValue: dimMaxValue,
4550
- minValue: dimMinValue,
4551
- timeInterval: dimTimeInterval,
4552
- values: values,
4553
- synced: synced
4554
- };
4555
- })
4556
- });
4532
+ var updateObject = {
4533
+ origin: ORIGIN_REACTMAPVIEWPARSELAYER,
4534
+ serviceLayers: {
4535
+ id: wmLayer.service,
4536
+ name: wmLayer.title,
4537
+ service: wmLayer.service,
4538
+ layers: layers
4539
+ },
4540
+ layerStyle: {
4541
+ origin: origin,
4542
+ layerId: wmLayer.ReactWMJSLayerId,
4543
+ style: wmLayer.currentStyle
4544
+ },
4545
+ mapDimensions: {
4546
+ origin: origin,
4547
+ mapId: mapId,
4548
+ dimensions: webMapJSInstance.mapdimensions.map(function (_ref) {
4549
+ var name = _ref.name,
4550
+ units = _ref.units,
4551
+ currentValue = _ref.currentValue,
4552
+ synced = _ref.synced;
4553
+ var reactDim = mapProperties.dimensions && mapProperties.dimensions.find(function (dim) {
4554
+ return dim.name === name;
4555
+ });
4556
+ var newDimValue = reactDim && reactDim.currentValue || currentValue;
4557
+ var newDimSynced = reactDim && reactDim.synced || synced;
4558
+ return {
4559
+ name: name,
4560
+ units: units,
4561
+ currentValue: newDimValue,
4562
+ synced: newDimSynced
4563
+ };
4564
+ })
4565
+ },
4566
+ layerDimensions: {
4567
+ origin: origin,
4568
+ layerId: wmLayer.id,
4569
+ dimensions: wmLayer.dimensions.map(function (_ref2) {
4570
+ var name = _ref2.name,
4571
+ units = _ref2.units,
4572
+ currentValue = _ref2.currentValue,
4573
+ dimMinValue = _ref2.dimMinValue,
4574
+ dimMaxValue = _ref2.dimMaxValue,
4575
+ dimTimeInterval = _ref2.dimTimeInterval,
4576
+ values = _ref2.values,
4577
+ synced = _ref2.synced;
4578
+ return {
4579
+ name: name,
4580
+ units: units,
4581
+ currentValue: currentValue,
4582
+ maxValue: dimMaxValue,
4583
+ minValue: dimMinValue,
4584
+ timeInterval: dimTimeInterval,
4585
+ values: values,
4586
+ synced: synced
4587
+ };
4588
+ })
4589
+ }
4590
+ };
4591
+ onUpdateLayerInformation && onUpdateLayerInformation(updateObject);
4557
4592
  };
4558
4593
 
4559
4594
  service.getLayerObjectsFlat(done, function () {// do nothing
@@ -4564,7 +4599,7 @@ var setServiceMetadata = function setServiceMetadata(wmLayer, mapId, webMapJSIns
4564
4599
 
4565
4600
  var _marked$4 = /*#__PURE__*/regeneratorRuntime.mark(setTimeSaga),
4566
4601
  _marked2$4 = /*#__PURE__*/regeneratorRuntime.mark(setBBoxSaga),
4567
- _marked3$3 = /*#__PURE__*/regeneratorRuntime.mark(layerActionsSaga),
4602
+ _marked3$4 = /*#__PURE__*/regeneratorRuntime.mark(layerActionsSaga),
4568
4603
  _marked4$2 = /*#__PURE__*/regeneratorRuntime.mark(addLayerActionsSaga),
4569
4604
  _marked5$1 = /*#__PURE__*/regeneratorRuntime.mark(deleteLayerActionsSaga),
4570
4605
  _marked6$1 = /*#__PURE__*/regeneratorRuntime.mark(moveLayerActionsSaga),
@@ -4674,7 +4709,7 @@ function layerActionsSaga(_ref3) {
4674
4709
  return _context3.stop();
4675
4710
  }
4676
4711
  }
4677
- }, _marked3$3);
4712
+ }, _marked3$4);
4678
4713
  }
4679
4714
  function addLayerActionsSaga(_ref4) {
4680
4715
  var payload, type, targets;
@@ -4914,7 +4949,7 @@ function rootSaga$4() {
4914
4949
 
4915
4950
  var _marked$3 = /*#__PURE__*/regeneratorRuntime.mark(updateSourceValueWhenLinkingComponentToGroupSaga),
4916
4951
  _marked2$3 = /*#__PURE__*/regeneratorRuntime.mark(addGroupTargetSaga),
4917
- _marked3$2 = /*#__PURE__*/regeneratorRuntime.mark(linkGroupTargetSaga),
4952
+ _marked3$3 = /*#__PURE__*/regeneratorRuntime.mark(linkGroupTargetSaga),
4918
4953
  _marked4$1 = /*#__PURE__*/regeneratorRuntime.mark(rootSaga$3);
4919
4954
  function updateSourceValueWhenLinkingComponentToGroupSaga(groupId, targetToUpdate) {
4920
4955
  var group;
@@ -5030,7 +5065,7 @@ function linkGroupTargetSaga(_ref2) {
5030
5065
  return _context3.stop();
5031
5066
  }
5032
5067
  }
5033
- }, _marked3$2);
5068
+ }, _marked3$3);
5034
5069
  }
5035
5070
 
5036
5071
  function rootSaga$3() {
@@ -5122,6 +5157,9 @@ var TooltipSelect = function TooltipSelect(_a) {
5122
5157
  onChangeMouseWheel = _a$onChangeMouseWheel === void 0 ? function () {} : _a$onChangeMouseWheel,
5123
5158
  props = __rest(_a, ["tooltip", "list", "currentIndex", "onChangeMouseWheel"]);
5124
5159
 
5160
+ props.disableUnderline;
5161
+ var otherProps = __rest(props, ["disableUnderline"]);
5162
+
5125
5163
  var _React$useState = React.useState(false),
5126
5164
  _React$useState2 = _slicedToArray(_React$useState, 2),
5127
5165
  selectOpen = _React$useState2[0],
@@ -5193,7 +5231,7 @@ var TooltipSelect = function TooltipSelect(_a) {
5193
5231
  paper: classes.select
5194
5232
  }
5195
5233
  }
5196
- }, props)));
5234
+ }, otherProps)));
5197
5235
  };
5198
5236
 
5199
5237
  /* *
@@ -5478,7 +5516,7 @@ var getDialogSource = createSelector(getDialogDetailsByType, function (details)
5478
5516
 
5479
5517
  var _marked$2 = /*#__PURE__*/regeneratorRuntime.mark(registerMapUISaga),
5480
5518
  _marked2$2 = /*#__PURE__*/regeneratorRuntime.mark(unregisterUIMapSaga),
5481
- _marked3$1 = /*#__PURE__*/regeneratorRuntime.mark(rootSaga$2);
5519
+ _marked3$2 = /*#__PURE__*/regeneratorRuntime.mark(rootSaga$2);
5482
5520
  function registerMapUISaga() {
5483
5521
  var fields, source;
5484
5522
  return regeneratorRuntime.wrap(function registerMapUISaga$(_context) {
@@ -5585,7 +5623,7 @@ function rootSaga$2() {
5585
5623
  return _context3.stop();
5586
5624
  }
5587
5625
  }
5588
- }, _marked3$1);
5626
+ }, _marked3$2);
5589
5627
  }
5590
5628
 
5591
5629
  /* *
@@ -6258,6 +6296,17 @@ var reducer$2 = function reducer() {
6258
6296
  }, state);
6259
6297
  }
6260
6298
 
6299
+ case WEBMAP_UPDATE_LAYER_INFO:
6300
+ {
6301
+ var mapDimensions = action.payload.mapDimensions;
6302
+ if (mapDimensions === null) return state;
6303
+ var mapAction = {
6304
+ payload: mapDimensions,
6305
+ type: WEBMAP_MAP_UPDATE_ALL_DIMENSIONS
6306
+ };
6307
+ return reducer(state, mapAction);
6308
+ }
6309
+
6261
6310
  default:
6262
6311
  return state;
6263
6312
  }
@@ -6298,6 +6347,17 @@ var reducer$1 = function reducer() {
6298
6347
  if (!draft.allIds.includes(action.payload.service)) draft.allIds.push(action.payload.service);
6299
6348
  });
6300
6349
 
6350
+ case WEBMAP_UPDATE_LAYER_INFO:
6351
+ {
6352
+ var serviceLayers = action.payload.serviceLayers;
6353
+ if (serviceLayers === null) return state;
6354
+ var mapAction = {
6355
+ payload: serviceLayers,
6356
+ type: MAP_SERVICES_SET_LAYERS
6357
+ };
6358
+ return reducer(state, mapAction);
6359
+ }
6360
+
6301
6361
  default:
6302
6362
  return state;
6303
6363
  }
@@ -6305,7 +6365,7 @@ var reducer$1 = function reducer() {
6305
6365
 
6306
6366
  var _marked$1 = /*#__PURE__*/regeneratorRuntime.mark(startAnimationSaga),
6307
6367
  _marked2$1 = /*#__PURE__*/regeneratorRuntime.mark(stopAnimationSaga),
6308
- _marked3 = /*#__PURE__*/regeneratorRuntime.mark(deleteLayerSaga),
6368
+ _marked3$1 = /*#__PURE__*/regeneratorRuntime.mark(deleteLayerSaga),
6309
6369
  _marked4 = /*#__PURE__*/regeneratorRuntime.mark(updateAnimation),
6310
6370
  _marked5 = /*#__PURE__*/regeneratorRuntime.mark(setLayerDimensionsSaga),
6311
6371
  _marked6 = /*#__PURE__*/regeneratorRuntime.mark(toggleAutoUpdateSaga),
@@ -6408,7 +6468,7 @@ function deleteLayerSaga(_ref3) {
6408
6468
  return _context3.stop();
6409
6469
  }
6410
6470
  }
6411
- }, _marked3);
6471
+ }, _marked3$1);
6412
6472
  }
6413
6473
  function updateAnimation(mapId, maxValue) {
6414
6474
  var animationStart, animationStartUnix, animationEnd, animationEndUnix, t, deltaT, start, end, isAnimating$1, timeStep;
@@ -6478,66 +6538,76 @@ function updateAnimation(mapId, maxValue) {
6478
6538
  }, _marked4);
6479
6539
  }
6480
6540
  function setLayerDimensionsSaga(_ref4) {
6481
- var payload, dimensions, layerId, layer, newTimeDimension, mapId, activeLayerId, shouldAutoUpdate, prevTimeDimension, isAnimating$1, webmapInstance;
6541
+ var payload, layerDimensions, dimensions, layerId, layer, newTimeDimension, mapId, activeLayerId, shouldAutoUpdate, prevTimeDimension, isAnimating$1, webmapInstance;
6482
6542
  return regeneratorRuntime.wrap(function setLayerDimensionsSaga$(_context5) {
6483
6543
  while (1) {
6484
6544
  switch (_context5.prev = _context5.next) {
6485
6545
  case 0:
6486
6546
  payload = _ref4.payload;
6487
6547
  _context5.prev = 1;
6488
- dimensions = payload.dimensions, layerId = payload.layerId;
6489
- _context5.next = 5;
6490
- return select(getLayerById, layerId);
6548
+ layerDimensions = payload.layerDimensions;
6549
+
6550
+ if (layerDimensions) {
6551
+ _context5.next = 5;
6552
+ break;
6553
+ }
6554
+
6555
+ return _context5.abrupt("return");
6491
6556
 
6492
6557
  case 5:
6558
+ dimensions = layerDimensions.dimensions, layerId = layerDimensions.layerId;
6559
+ _context5.next = 8;
6560
+ return select(getLayerById, layerId);
6561
+
6562
+ case 8:
6493
6563
  layer = _context5.sent;
6494
6564
 
6495
6565
  if (layer) {
6496
- _context5.next = 8;
6566
+ _context5.next = 11;
6497
6567
  break;
6498
6568
  }
6499
6569
 
6500
6570
  return _context5.abrupt("return");
6501
6571
 
6502
- case 8:
6572
+ case 11:
6503
6573
  newTimeDimension = dimensions.find(function (dimension) {
6504
6574
  return dimension.name === 'time';
6505
6575
  });
6506
6576
  mapId = layer.mapId;
6507
- _context5.next = 12;
6577
+ _context5.next = 15;
6508
6578
  return select(getActiveLayerId, mapId);
6509
6579
 
6510
- case 12:
6580
+ case 15:
6511
6581
  activeLayerId = _context5.sent;
6512
- _context5.next = 15;
6582
+ _context5.next = 18;
6513
6583
  return select(isAutoUpdating, mapId);
6514
6584
 
6515
- case 15:
6585
+ case 18:
6516
6586
  shouldAutoUpdate = _context5.sent;
6517
- _context5.next = 18;
6587
+ _context5.next = 21;
6518
6588
  return select(getLayerTimeDimension, layerId);
6519
6589
 
6520
- case 18:
6590
+ case 21:
6521
6591
  prevTimeDimension = _context5.sent;
6522
- _context5.next = 21;
6592
+ _context5.next = 24;
6523
6593
  return select(isAnimating, mapId);
6524
6594
 
6525
- case 21:
6595
+ case 24:
6526
6596
  isAnimating$1 = _context5.sent;
6527
6597
  webmapInstance = getWMJSMapById(mapId);
6528
6598
 
6529
6599
  if (!(layerId === activeLayerId && // only update the active layer
6530
6600
  shouldAutoUpdate && newTimeDimension && newTimeDimension.maxValue && prevTimeDimension && prevTimeDimension.currentValue && prevTimeDimension.currentValue !== newTimeDimension.maxValue)) {
6531
- _context5.next = 31;
6601
+ _context5.next = 34;
6532
6602
  break;
6533
6603
  }
6534
6604
 
6535
6605
  if (isAnimating$1) {
6536
- _context5.next = 27;
6606
+ _context5.next = 30;
6537
6607
  break;
6538
6608
  }
6539
6609
 
6540
- _context5.next = 27;
6610
+ _context5.next = 30;
6541
6611
  return put(layerChangeDimension({
6542
6612
  layerId: layerId,
6543
6613
  origin: 'setLayerDimensionSaga',
@@ -6547,39 +6617,39 @@ function setLayerDimensionsSaga(_ref4) {
6547
6617
  }
6548
6618
  }));
6549
6619
 
6550
- case 27:
6551
- _context5.next = 29;
6620
+ case 30:
6621
+ _context5.next = 32;
6552
6622
  return call(updateAnimation, mapId, newTimeDimension.maxValue);
6553
6623
 
6554
- case 29:
6555
- _context5.next = 34;
6624
+ case 32:
6625
+ _context5.next = 37;
6556
6626
  break;
6557
6627
 
6558
- case 31:
6628
+ case 34:
6559
6629
  if (!(isAnimating$1 && !webmapInstance.isAnimating && newTimeDimension && newTimeDimension.maxValue)) {
6560
- _context5.next = 34;
6630
+ _context5.next = 37;
6561
6631
  break;
6562
6632
  }
6563
6633
 
6564
- _context5.next = 34;
6634
+ _context5.next = 37;
6565
6635
  return call(updateAnimation, mapId, newTimeDimension.maxValue);
6566
6636
 
6567
- case 34:
6568
- _context5.next = 39;
6637
+ case 37:
6638
+ _context5.next = 42;
6569
6639
  break;
6570
6640
 
6571
- case 36:
6572
- _context5.prev = 36;
6641
+ case 39:
6642
+ _context5.prev = 39;
6573
6643
  _context5.t0 = _context5["catch"](1);
6574
6644
  // eslint-disable-next-line no-console
6575
6645
  console.warn(_context5.t0);
6576
6646
 
6577
- case 39:
6647
+ case 42:
6578
6648
  case "end":
6579
6649
  return _context5.stop();
6580
6650
  }
6581
6651
  }
6582
- }, _marked5, null, [[1, 36]]);
6652
+ }, _marked5, null, [[1, 39]]);
6583
6653
  }
6584
6654
  function toggleAutoUpdateSaga(_ref5) {
6585
6655
  var payload, shouldAutoUpdate, mapId, layerId, timeDimension;
@@ -6661,7 +6731,7 @@ function rootSaga$1() {
6661
6731
 
6662
6732
  case 6:
6663
6733
  _context7.next = 8;
6664
- return takeLatest(WEBMAP_LAYER_SET_DIMENSIONS, setLayerDimensionsSaga);
6734
+ return takeLatest(WEBMAP_UPDATE_LAYER_INFO, setLayerDimensionsSaga);
6665
6735
 
6666
6736
  case 8:
6667
6737
  _context7.next = 10;
@@ -6704,6 +6774,7 @@ var moduleConfig = {
6704
6774
  var initialState = {
6705
6775
  filters: {
6706
6776
  searchFilter: '',
6777
+ activeServices: [],
6707
6778
  keywords: [],
6708
6779
  addedServices: []
6709
6780
  }
@@ -6721,6 +6792,43 @@ var reducer = function reducer() {
6721
6792
  });
6722
6793
  }
6723
6794
 
6795
+ case 'LAYER_SELECT_SET_ACTIVE_SERVICES':
6796
+ {
6797
+ var activeServices = action.payload.activeServices;
6798
+ return produce(state, function (draft) {
6799
+ activeServices.forEach(function (service) {
6800
+ if (draft.filters.activeServices.filter(function (s) {
6801
+ return s.id === service;
6802
+ }).length === 0) draft.filters.activeServices.push({
6803
+ id: service,
6804
+ enabled: true
6805
+ });
6806
+ });
6807
+ });
6808
+ }
6809
+
6810
+ case 'LAYER_SELECT_ENABLE_ACTIVE_SERVICE':
6811
+ {
6812
+ var service = action.payload.service;
6813
+ return produce(state, function (draft) {
6814
+ var index = draft.filters.activeServices.findIndex(function (s) {
6815
+ return s.id === service;
6816
+ });
6817
+ draft.filters.activeServices[index].enabled = true;
6818
+ });
6819
+ }
6820
+
6821
+ case 'LAYER_SELECT_DISABLE_ACTIVE_SERVICE':
6822
+ {
6823
+ var _service = action.payload.service;
6824
+ return produce(state, function (draft) {
6825
+ var index = draft.filters.activeServices.findIndex(function (s) {
6826
+ return s.id === _service;
6827
+ });
6828
+ draft.filters.activeServices[index].enabled = false;
6829
+ });
6830
+ }
6831
+
6724
6832
  case 'LAYER_SELECT_ADD_NEW_KEYWORDS':
6725
6833
  {
6726
6834
  return produce(state, function (draft) {
@@ -6789,6 +6897,9 @@ var reducer = function reducer() {
6789
6897
  * Copyright 2021 - Finnish Meteorological Institute (FMI)
6790
6898
  * */
6791
6899
  var LAYER_SELECT_SET_SEARCH_FILTER = 'LAYER_SELECT_SET_SEARCH_FILTER';
6900
+ var LAYER_SELECT_SET_ACTIVE_SERVICES = 'LAYER_SELECT_SET_ACTIVE_SERVICES';
6901
+ var LAYER_SELECT_DISABLE_ACTIVE_SERVICE = 'LAYER_SELECT_DISABLE_ACTIVE_SERVICE';
6902
+ var LAYER_SELECT_ENABLE_ACTIVE_SERVICE = 'LAYER_SELECT_ENABLE_ACTIVE_SERVICE';
6792
6903
  var LAYER_SELECT_ADD_NEW_KEYWORDS = 'LAYER_SELECT_ADD_NEW_KEYWORDS';
6793
6904
 
6794
6905
  /* *
@@ -6821,6 +6932,45 @@ var setSearchFilter = function setSearchFilter(payload) {
6821
6932
  };
6822
6933
  };
6823
6934
  /**
6935
+ * Sets the given array of string as active services
6936
+ *
6937
+ * Example: setActiveServices({ activeServices: ['service-1', 'service-2'] })
6938
+ * @param {string} payload { activeServices: string[] }
6939
+ */
6940
+
6941
+ var setActiveServices = function setActiveServices(payload) {
6942
+ return {
6943
+ type: LAYER_SELECT_SET_ACTIVE_SERVICES,
6944
+ payload: payload
6945
+ };
6946
+ };
6947
+ /**
6948
+ * Activates given service in the activeServices array
6949
+ *
6950
+ * Example: enableActiveService({ serviceId: 'service-1' })
6951
+ * @param {string} payload { serviceId: string }
6952
+ */
6953
+
6954
+ var enableActiveService = function enableActiveService(payload) {
6955
+ return {
6956
+ type: LAYER_SELECT_ENABLE_ACTIVE_SERVICE,
6957
+ payload: payload
6958
+ };
6959
+ };
6960
+ /**
6961
+ * Disables given service in the activeServices array
6962
+ *
6963
+ * Example: disableActiveService({ serviceId: 'service-1' })
6964
+ * @param {string} payload { serviceId: string }
6965
+ */
6966
+
6967
+ var disableActiveService = function disableActiveService(payload) {
6968
+ return {
6969
+ type: LAYER_SELECT_DISABLE_ACTIVE_SERVICE,
6970
+ payload: payload
6971
+ };
6972
+ };
6973
+ /*
6824
6974
  * Sets the given keywords to Layer Select store
6825
6975
  *
6826
6976
  * Example: addNewKeywords({ keywords: ['keyword1', 'keyword2'] })
@@ -6834,11 +6984,12 @@ var addNewKeywords = function addNewKeywords(payload) {
6834
6984
  };
6835
6985
  };
6836
6986
 
6837
- var _marked = /*#__PURE__*/regeneratorRuntime.mark(newServiceAddedSaga),
6838
- _marked2 = /*#__PURE__*/regeneratorRuntime.mark(rootSaga);
6839
- function newServiceAddedSaga(capturedAction) {
6987
+ var _marked = /*#__PURE__*/regeneratorRuntime.mark(newServiceAddedSagaUpdateKeywords),
6988
+ _marked2 = /*#__PURE__*/regeneratorRuntime.mark(newServiceAddedSagaUpdateActiveServices),
6989
+ _marked3 = /*#__PURE__*/regeneratorRuntime.mark(rootSaga);
6990
+ function newServiceAddedSagaUpdateKeywords(capturedAction) {
6840
6991
  var addedService, serviceName, keywords;
6841
- return regeneratorRuntime.wrap(function newServiceAddedSaga$(_context) {
6992
+ return regeneratorRuntime.wrap(function newServiceAddedSagaUpdateKeywords$(_context) {
6842
6993
  while (1) {
6843
6994
  switch (_context.prev = _context.next) {
6844
6995
  case 0:
@@ -6870,21 +7021,48 @@ function newServiceAddedSaga(capturedAction) {
6870
7021
  }
6871
7022
  }, _marked);
6872
7023
  }
6873
- function rootSaga() {
6874
- return regeneratorRuntime.wrap(function rootSaga$(_context2) {
7024
+ function newServiceAddedSagaUpdateActiveServices() {
7025
+ var services;
7026
+ return regeneratorRuntime.wrap(function newServiceAddedSagaUpdateActiveServices$(_context2) {
6875
7027
  while (1) {
6876
7028
  switch (_context2.prev = _context2.next) {
6877
7029
  case 0:
6878
7030
  _context2.next = 2;
6879
- return takeEvery(MAP_SERVICES_SET_LAYERS, newServiceAddedSaga);
7031
+ return select(getServiceIds);
6880
7032
 
6881
7033
  case 2:
7034
+ services = _context2.sent;
7035
+ _context2.next = 5;
7036
+ return put(setActiveServices({
7037
+ activeServices: services
7038
+ }));
7039
+
7040
+ case 5:
6882
7041
  case "end":
6883
7042
  return _context2.stop();
6884
7043
  }
6885
7044
  }
6886
7045
  }, _marked2);
6887
7046
  }
7047
+ function rootSaga() {
7048
+ return regeneratorRuntime.wrap(function rootSaga$(_context3) {
7049
+ while (1) {
7050
+ switch (_context3.prev = _context3.next) {
7051
+ case 0:
7052
+ _context3.next = 2;
7053
+ return takeEvery(MAP_SERVICES_SET_LAYERS, newServiceAddedSagaUpdateKeywords);
7054
+
7055
+ case 2:
7056
+ _context3.next = 4;
7057
+ return takeLatest(MAP_SERVICES_SET_LAYERS, newServiceAddedSagaUpdateActiveServices);
7058
+
7059
+ case 4:
7060
+ case "end":
7061
+ return _context3.stop();
7062
+ }
7063
+ }
7064
+ }, _marked3);
7065
+ }
6888
7066
 
6889
7067
  /* *
6890
7068
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -7028,7 +7206,7 @@ var WMSLayerTreeHeader = function WMSLayerTreeHeader(_ref) {
7028
7206
  container: true,
7029
7207
  direction: "row",
7030
7208
  spacing: 1,
7031
- justify: "space-between"
7209
+ justifyContent: "space-between"
7032
7210
  }, /*#__PURE__*/React.createElement(Grid, {
7033
7211
  item: true
7034
7212
  }, /*#__PURE__*/React.createElement(InputLabel, {
@@ -7045,7 +7223,8 @@ var WMSLayerTreeHeader = function WMSLayerTreeHeader(_ref) {
7045
7223
  style: {
7046
7224
  padding: 3
7047
7225
  },
7048
- onClick: onClickReload
7226
+ onClick: onClickReload,
7227
+ size: "large"
7049
7228
  }, /*#__PURE__*/React.createElement(Cached, {
7050
7229
  fontSize: "small"
7051
7230
  })))));
@@ -7582,7 +7761,7 @@ var radarLayer$1 = {
7582
7761
  name: 'RAD_NL25_PCP_CM',
7583
7762
  format: 'image/png',
7584
7763
  enabled: true,
7585
- style: 'knmiradar/nearest',
7764
+ style: 'radar/nearest',
7586
7765
  id: generateLayerId(),
7587
7766
  layerType: LayerType.mapLayer
7588
7767
  };
@@ -8054,7 +8233,8 @@ var AddLayersPopup = function AddLayersPopup(_ref) {
8054
8233
  fullWidth: true,
8055
8234
  disabled: loading,
8056
8235
  error: urlError !== '',
8057
- helperText: urlError
8236
+ helperText: urlError,
8237
+ variant: "standard"
8058
8238
  })), /*#__PURE__*/React.createElement(Grid, {
8059
8239
  item: true,
8060
8240
  xs: 2,
@@ -8063,7 +8243,8 @@ var AddLayersPopup = function AddLayersPopup(_ref) {
8063
8243
  "data-testid": "add-service",
8064
8244
  onClick: handleAddServiceURL,
8065
8245
  color: "primary",
8066
- disabled: loading
8246
+ disabled: loading,
8247
+ size: "large"
8067
8248
  }, /*#__PURE__*/React.createElement(Add, null)), loading && /*#__PURE__*/React.createElement(CircularProgress, {
8068
8249
  size: 35,
8069
8250
  className: classes.loadingButton
@@ -8154,7 +8335,8 @@ var AddLayersButton = function AddLayersButton(_ref) {
8154
8335
  className: classes.button,
8155
8336
  disableRipple: true,
8156
8337
  "data-testid": "addLayersButton",
8157
- ref: ref
8338
+ ref: ref,
8339
+ size: "large"
8158
8340
  }, /*#__PURE__*/React.createElement(Add, null))), /*#__PURE__*/React.createElement(AddLayersPopup, {
8159
8341
  open: open,
8160
8342
  handleClose: handleClose,
@@ -8294,7 +8476,8 @@ var LayerSelectButtonConnect = function LayerSelectButtonConnect(_ref) {
8294
8476
  className: classes.button,
8295
8477
  id: "layerSelectButton",
8296
8478
  "data-testid": "layerSelectButton",
8297
- disableRipple: true
8479
+ disableRipple: true,
8480
+ size: "large"
8298
8481
  }, /*#__PURE__*/React.createElement(Add, null)));
8299
8482
  };
8300
8483
 
@@ -8408,6 +8591,12 @@ var useTooltipContainerStyles = makeStyles(function (theme) {
8408
8591
  color: function color(isEnabled) {
8409
8592
  return isEnabled ? theme.palette.geowebColors.layerManager.tableRowDefaultText.rgba : theme.palette.geowebColors.layerManager.tableRowDisabledText.rgba;
8410
8593
  },
8594
+ '& .MuiOutlinedInput-input': {
8595
+ padding: '6px 24px 6px 8px'
8596
+ },
8597
+ '& .MuiOutlinedInput-notchedOutline': {
8598
+ borderColor: 'transparent!important'
8599
+ },
8411
8600
  '&:hover .MuiSelect-select': {
8412
8601
  backgroundColor: theme.palette.geowebColors.layerManager.tableRowMouseover.rgba
8413
8602
  },
@@ -8514,7 +8703,7 @@ var DimensionSelect = function DimensionSelect(_ref) {
8514
8703
  return /*#__PURE__*/React.createElement(Grid, {
8515
8704
  container: true,
8516
8705
  direction: "row",
8517
- justify: "flex-start",
8706
+ justifyContent: "flex-start",
8518
8707
  alignItems: "center"
8519
8708
  }, /*#__PURE__*/React.createElement(Grid, {
8520
8709
  item: true,
@@ -8632,6 +8821,9 @@ var useStyles$E = makeStyles(function (theme) {
8632
8821
  return isActive ? theme.palette.geowebColors.buttons.primaryMouseover.fill : theme.palette.geowebColors.layerManager.tableRowMouseover.rgba;
8633
8822
  }
8634
8823
  }
8824
+ },
8825
+ popper: {
8826
+ pointerEvents: 'none'
8635
8827
  }
8636
8828
  });
8637
8829
  });
@@ -8660,7 +8852,10 @@ var LayerManagerButton = function LayerManagerButton(_a) {
8660
8852
 
8661
8853
  return /*#__PURE__*/React.createElement(Tooltip, {
8662
8854
  title: tooltipTitle,
8663
- placement: "top"
8855
+ placement: "top",
8856
+ classes: {
8857
+ popper: classes.popper
8858
+ }
8664
8859
  }, /*#__PURE__*/React.createElement(IconButton, Object.assign({
8665
8860
  size: "small",
8666
8861
  onClick: handleClick,
@@ -8982,7 +9177,7 @@ var OpacitySelect = function OpacitySelect(_ref) {
8982
9177
  onMouseLeave: onMouseLeave,
8983
9178
  onFocus: onFocus,
8984
9179
  onBlur: onBlur
8985
- }, /*#__PURE__*/React.createElement("div", null, Math.round(currentOpacity * 100), " %"))), open ? /*#__PURE__*/React.createElement("div", {
9180
+ }, "".concat(Math.round(currentOpacity * 100), " %"))), open ? /*#__PURE__*/React.createElement("div", {
8986
9181
  className: classes.sliderBackground
8987
9182
  }, /*#__PURE__*/React.createElement("div", {
8988
9183
  className: sliderClasses.sliderHeader
@@ -9672,11 +9867,14 @@ var DimensionSelectConnect = function DimensionSelectConnect(_ref) {
9672
9867
  var RenderStylesConnect = function RenderStylesConnect(_ref) {
9673
9868
  var layerId = _ref.layerId;
9674
9869
  var dispatch = useDispatch();
9870
+ var layerService = useSelector(function (store) {
9871
+ return getLayerService(store, layerId);
9872
+ });
9675
9873
  var layerName = useSelector(function (store) {
9676
9874
  return getLayerName(store, layerId);
9677
9875
  });
9678
9876
  var layerStyles = useSelector(function (store) {
9679
- return getLayerStyles(store, layerId);
9877
+ return getLayerStyles(store, layerService, layerName);
9680
9878
  });
9681
9879
  var currentLayerStyle = useSelector(function (store) {
9682
9880
  return getLayerStyle(store, layerId);
@@ -9729,7 +9927,7 @@ var RenderLayersConnect = function RenderLayersConnect(_ref) {
9729
9927
  return getLayerEnabled(store, layerId);
9730
9928
  });
9731
9929
  var layers = useSelector(function (store) {
9732
- return getServiceLayersByName(store, layerService);
9930
+ return getLayersFromService$1(store, layerService);
9733
9931
  });
9734
9932
  var layerChangeName$1 = React.useCallback(function (_ref2) {
9735
9933
  var layerId = _ref2.layerId,
@@ -9956,6 +10154,7 @@ var useStyles$v = makeStyles(function (theme) {
9956
10154
  '&:hover': {
9957
10155
  backgroundColor: 'inherit'
9958
10156
  },
10157
+ height: 32,
9959
10158
  color: function color(_ref) {
9960
10159
  var isDisabled = _ref.isDisabled;
9961
10160
  return isDisabled ? theme.palette.geowebColors.layerManager.tableRowDefaultIcon.rgba : theme.palette.geowebColors.layerManager.tableRowDisabledIcon.fill;
@@ -10447,7 +10646,8 @@ var useButtonStyles = makeStyles(function (theme) {
10447
10646
  backgroundColor: theme.palette.geowebColors.buttons.disabled.fill,
10448
10647
  '& svg path, svg text': {
10449
10648
  fill: theme.palette.geowebColors.typographyAndIcons.iconLinkDisabled
10450
- }
10649
+ },
10650
+ border: "1px solid ".concat(theme.palette.geowebColors.buttons.disabled.fill)
10451
10651
  },
10452
10652
  '&.Mui-selected': {
10453
10653
  backgroundColor: theme.palette.geowebColors.buttons.primaryActive.fill,
@@ -10469,7 +10669,9 @@ var ToggleIconButton = function ToggleIconButton(_a) {
10469
10669
  var active = _a.active,
10470
10670
  width = _a.width,
10471
10671
  children = _a.children,
10472
- props = __rest(_a, ["active", "width", "children"]);
10672
+ _a$value = _a.value,
10673
+ value = _a$value === void 0 ? 0 : _a$value,
10674
+ props = __rest(_a, ["active", "width", "children", "value"]);
10473
10675
 
10474
10676
  var classes = useButtonStyles({
10475
10677
  width: width
@@ -10478,7 +10680,7 @@ var ToggleIconButton = function ToggleIconButton(_a) {
10478
10680
  className: classes.button,
10479
10681
  disableRipple: true,
10480
10682
  selected: active,
10481
- value: 0
10683
+ value: value
10482
10684
  }, props), children);
10483
10685
  };
10484
10686
 
@@ -10554,10 +10756,57 @@ var KeywordFilterButtonConnect = function KeywordFilterButtonConnect(_ref) {
10554
10756
  var layerSelectStore = function layerSelectStore(store) {
10555
10757
  return store && store.layerSelect ? store.layerSelect : null;
10556
10758
  };
10759
+ /**
10760
+ * Returns search filter string
10761
+ *
10762
+ * Example getSearchFilter(store);
10763
+ * @param {object} store store: object - store object
10764
+ * @returns {array} returnType: string
10765
+ */
10766
+
10557
10767
 
10558
10768
  var getSearchFilter = createSelector(layerSelectStore, function (store) {
10559
10769
  return store ? store.filters.searchFilter : '';
10560
10770
  });
10771
+ /**
10772
+ * Returns active services array
10773
+ *
10774
+ * Example getActiveServices(store);
10775
+ * @param {object} store store: object - store object
10776
+ * @returns {array} returnType: array of active services
10777
+ */
10778
+
10779
+ var getActiveServices = createSelector(layerSelectStore, function (store) {
10780
+ var _a;
10781
+
10782
+ return store ? (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.activeServices : [];
10783
+ });
10784
+ /**
10785
+ * Returns all ids of enabled services
10786
+ *
10787
+ * Example getEnabledServiceIds(store);
10788
+ * @param {object} store store: object - store object
10789
+ * @returns {array} returnType: array of service ids that are enabled
10790
+ */
10791
+
10792
+ var getEnabledServiceIds = createSelector(layerSelectStore, function (store) {
10793
+ var _a, _b;
10794
+
10795
+ var enabledServices = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.activeServices.filter(function (service) {
10796
+ return service.enabled;
10797
+ })) !== null && _b !== void 0 ? _b : [];
10798
+ return enabledServices.map(function (service) {
10799
+ return service.id;
10800
+ });
10801
+ });
10802
+ /**
10803
+ * Returns all keywords
10804
+ *
10805
+ * Example getKeywords(store);
10806
+ * @param {object} store store: object - store object
10807
+ * @returns {array} returnType: array of keyword objects
10808
+ */
10809
+
10561
10810
  var getKeywords = createSelector(layerSelectStore, function (store) {
10562
10811
  return store ? store.filters.keywords : [];
10563
10812
  });
@@ -10593,12 +10842,23 @@ var useStyles$r = makeStyles(function (theme) {
10593
10842
  },
10594
10843
  '&.MuiButton-outlined': {
10595
10844
  color: theme.palette.geowebColors.typographyAndIcons.buttonIconTertiaryFlat
10845
+ },
10846
+ color: theme.palette.common.white
10847
+ },
10848
+ cancelButton: {
10849
+ border: "1px solid ".concat(theme.palette.action.disabled),
10850
+ color: theme.palette.text.secondary,
10851
+ '&:hover': {
10852
+ border: "1px solid ".concat(theme.palette.action.disabled)
10596
10853
  }
10597
10854
  },
10598
10855
  container: {
10599
10856
  '& .MuiDialog-paper': {
10600
10857
  backgroundColor: theme.palette.geowebColors.cards.cardContainer
10601
10858
  }
10859
+ },
10860
+ dialogContent: {
10861
+ padding: '8px 24px'
10602
10862
  }
10603
10863
  });
10604
10864
  });
@@ -10630,31 +10890,36 @@ var ServicePopup = function ServicePopup(_ref) {
10630
10890
  var classes = useStyles$r();
10631
10891
  return /*#__PURE__*/React.createElement(Dialog, {
10632
10892
  open: isOpen,
10633
- disableBackdropClick: true,
10634
10893
  hideBackdrop: hideBackdrop,
10635
10894
  fullWidth: true,
10636
10895
  maxWidth: "xs",
10637
10896
  className: classes.container
10638
10897
  }, /*#__PURE__*/React.createElement(DialogTitle, {
10639
- className: classes.dialogTitle,
10640
- disableTypography: true
10898
+ className: classes.dialogTitle
10641
10899
  }, /*#__PURE__*/React.createElement(Typography, {
10642
- variant: "h5"
10900
+ variant: "h5",
10901
+ component: "span"
10643
10902
  }, getTitleForVariant(servicePopupVariant)), /*#__PURE__*/React.createElement(IconButton, {
10644
10903
  size: "small",
10645
10904
  onClick: closePopup,
10646
10905
  "data-testid": "ClosePopupButtonCross"
10647
- }, /*#__PURE__*/React.createElement(Close, null))), /*#__PURE__*/React.createElement(DialogContent, null, /*#__PURE__*/React.createElement(TextField, {
10906
+ }, /*#__PURE__*/React.createElement(Close, null))), /*#__PURE__*/React.createElement(DialogContent, {
10907
+ className: classes.dialogContent
10908
+ }, /*#__PURE__*/React.createElement(TextField, {
10648
10909
  className: classes.textField,
10649
10910
  variant: "filled",
10650
10911
  label: "Service name"
10651
- })), /*#__PURE__*/React.createElement(DialogContent, null, /*#__PURE__*/React.createElement(TextField, {
10912
+ })), /*#__PURE__*/React.createElement(DialogContent, {
10913
+ className: classes.dialogContent
10914
+ }, /*#__PURE__*/React.createElement(TextField, {
10652
10915
  className: classes.textField,
10653
10916
  variant: "filled",
10654
10917
  label: "Service URL",
10655
10918
  defaultValue: url,
10656
10919
  id: "service-url"
10657
- })), /*#__PURE__*/React.createElement(DialogContent, null, /*#__PURE__*/React.createElement(TextField, {
10920
+ })), /*#__PURE__*/React.createElement(DialogContent, {
10921
+ className: classes.dialogContent
10922
+ }, /*#__PURE__*/React.createElement(TextField, {
10658
10923
  className: classes.textField,
10659
10924
  variant: "filled",
10660
10925
  multiline: true,
@@ -10663,7 +10928,7 @@ var ServicePopup = function ServicePopup(_ref) {
10663
10928
  helperText: "Short description of what this service does"
10664
10929
  })), /*#__PURE__*/React.createElement(DialogActions, null, /*#__PURE__*/React.createElement(Button, {
10665
10930
  variant: "outlined",
10666
- className: classes.button,
10931
+ className: classes.cancelButton,
10667
10932
  onClick: closePopup,
10668
10933
  "data-testid": "ClosePopupButtonCancel"
10669
10934
  }, "cancel"), /*#__PURE__*/React.createElement(Button, {
@@ -10729,7 +10994,8 @@ var SearchFieldButtonContainer = function SearchFieldButtonContainer(_ref) {
10729
10994
  edge: "end",
10730
10995
  onClick: function onClick() {
10731
10996
  onClickClear();
10732
- }
10997
+ },
10998
+ size: "large"
10733
10999
  }, clearIcon));
10734
11000
  if (isURL(localSearchString)) return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
10735
11001
  style: {
@@ -10755,7 +11021,8 @@ var SearchFieldButtonContainer = function SearchFieldButtonContainer(_ref) {
10755
11021
  placement: "top"
10756
11022
  }, /*#__PURE__*/React__default.createElement(IconButton, {
10757
11023
  className: classes.iconButton,
10758
- edge: "end"
11024
+ edge: "end",
11025
+ size: "large"
10759
11026
  }, searchIcon));
10760
11027
  };
10761
11028
 
@@ -10882,7 +11149,8 @@ var useStyles$p = makeStyles(function (theme) {
10882
11149
  var LayerList = function LayerList(_ref) {
10883
11150
  var services = _ref.services,
10884
11151
  serviceIds = _ref.serviceIds,
10885
- layerSelectHeight = _ref.layerSelectHeight;
11152
+ layerSelectHeight = _ref.layerSelectHeight,
11153
+ searchString = _ref.searchString;
10886
11154
  var classes = useStyles$p();
10887
11155
 
10888
11156
  var _React$useState = React.useState(0),
@@ -10890,11 +11158,20 @@ var LayerList = function LayerList(_ref) {
10890
11158
  numberOfLayers = _React$useState2[0],
10891
11159
  setNumberOfLayers = _React$useState2[1];
10892
11160
 
11161
+ var filterLayersFromService = React.useCallback(function (serviceId) {
11162
+ if (searchString === '') {
11163
+ return services[serviceId].layers;
11164
+ }
11165
+
11166
+ return services[serviceId].layers.filter(function (layer) {
11167
+ return searchString === '' || !!layer.name && layer.name.toLowerCase().includes(searchString.toLowerCase()) || !!layer.text && layer.text.toLowerCase().includes(searchString.toLowerCase()) || !!layer["abstract"] && layer["abstract"].toLowerCase().includes(searchString.toLowerCase());
11168
+ });
11169
+ }, [services, searchString]);
10893
11170
  React.useEffect(function () {
10894
11171
  setNumberOfLayers(serviceIds.reduce(function (totalNumberOfLayers, serviceId) {
10895
- return totalNumberOfLayers + services[serviceId].layers.length;
11172
+ return totalNumberOfLayers + filterLayersFromService(serviceId).length;
10896
11173
  }, 0));
10897
- }, [serviceIds, services]);
11174
+ }, [serviceIds, filterLayersFromService]);
10898
11175
  return /*#__PURE__*/React.createElement("div", {
10899
11176
  "data-testid": "layerList"
10900
11177
  }, /*#__PURE__*/React.createElement("div", {
@@ -10905,7 +11182,7 @@ var LayerList = function LayerList(_ref) {
10905
11182
  overflow: 'auto'
10906
11183
  }
10907
11184
  }, serviceIds.map(function (serviceId) {
10908
- return services[serviceId].layers.map(function (layer) {
11185
+ return filterLayersFromService(serviceId).map(function (layer) {
10909
11186
  return /*#__PURE__*/React.createElement("div", {
10910
11187
  key: "".concat(serviceId, "-").concat(layer.name),
10911
11188
  className: classes.layerRow,
@@ -10943,16 +11220,20 @@ var LayerList = function LayerList(_ref) {
10943
11220
 
10944
11221
  var LayerListConnect = function LayerListConnect(_ref) {
10945
11222
  var layerSelectHeight = _ref.layerSelectHeight;
10946
- var allServiceIds = useSelector(function (store) {
10947
- return getServiceIds(store);
10948
- });
10949
- var allServices = useSelector(function (store) {
11223
+ var services = useSelector(function (store) {
10950
11224
  return getServices(store);
10951
11225
  });
11226
+ var enabledServiceIds = useSelector(function (store) {
11227
+ return getEnabledServiceIds(store);
11228
+ });
11229
+ var searchString = useSelector(function (store) {
11230
+ return getSearchFilter(store);
11231
+ });
10952
11232
  return /*#__PURE__*/React.createElement(LayerList, {
10953
- services: allServices,
10954
- serviceIds: allServiceIds,
10955
- layerSelectHeight: layerSelectHeight
11233
+ services: services,
11234
+ serviceIds: enabledServiceIds,
11235
+ layerSelectHeight: layerSelectHeight,
11236
+ searchString: searchString
10956
11237
  });
10957
11238
  };
10958
11239
 
@@ -10979,41 +11260,118 @@ var useStyles$o = makeStyles(function (theme) {
10979
11260
  margin: '0 8px 0 0',
10980
11261
  padding: '5px 12px 7px',
10981
11262
  borderRadius: '20px',
10982
- border: "solid 1px ".concat(theme.palette.geowebColors.typographyAndIcons.buttonIconTertiaryFlat),
10983
- backgroundColor: theme.palette.geowebColors.buttons.surfaceIconDefault.fill,
10984
- color: theme.palette.geowebColors.typographyAndIcons.buttonIconTertiaryFlat,
11263
+ border: function border(_ref) {
11264
+ var isEnabled = _ref.isEnabled;
11265
+ return isEnabled ? "solid 1px ".concat(theme.palette.geowebColors.buttons.primaryActive.fill) : "solid 1px ".concat(theme.palette.geowebColors.typographyAndIcons.buttonIconTertiaryFlat);
11266
+ },
11267
+ backgroundColor: function backgroundColor(_ref2) {
11268
+ var isEnabled = _ref2.isEnabled;
11269
+ return isEnabled ? theme.palette.geowebColors.buttons.primaryActive.fill : theme.palette.geowebColors.buttons.surfaceIconDefault.fill;
11270
+ },
11271
+ color: function color(_ref3) {
11272
+ var isEnabled = _ref3.isEnabled;
11273
+ return isEnabled ? theme.palette.geowebColors.typographyAndIcons.buttonIcon : theme.palette.geowebColors.typographyAndIcons.buttonIconTertiaryFlat;
11274
+ },
10985
11275
  "float": 'left',
10986
11276
  whiteSpace: 'nowrap',
10987
11277
  '&:hover': {
10988
- backgroundColor: theme.palette.geowebColors.buttons.flatMouseover.fill,
11278
+ backgroundColor: function backgroundColor(_ref4) {
11279
+ var isEnabled = _ref4.isEnabled;
11280
+ return isEnabled ? theme.palette.geowebColors.buttons.primaryMouseover.fill : theme.palette.geowebColors.buttons.flatMouseover.fill;
11281
+ },
11282
+ border: function border(_ref5) {
11283
+ var isEnabled = _ref5.isEnabled;
11284
+ return isEnabled ? "solid 1px ".concat(theme.palette.geowebColors.buttons.primaryMouseover.fill) : "solid 1px ".concat(theme.palette.geowebColors.typographyAndIcons.buttonIconTertiaryFlat);
11285
+ },
10989
11286
  cursor: 'pointer'
10990
11287
  }
10991
11288
  }
10992
11289
  });
10993
11290
  });
10994
11291
 
10995
- var ServiceChip = function ServiceChip(_ref) {
11292
+ var ServiceChip = function ServiceChip(_ref6) {
11293
+ var _ref6$all = _ref6.all,
11294
+ all = _ref6$all === void 0 ? false : _ref6$all,
11295
+ service = _ref6.service,
11296
+ isEnabled = _ref6.isEnabled,
11297
+ toggleChip = _ref6.toggleChip;
11298
+ var classes = useStyles$o({
11299
+ isEnabled: isEnabled
11300
+ });
11301
+ return /*#__PURE__*/React.createElement("div", {
11302
+ role: "button",
11303
+ tabIndex: 0,
11304
+ className: classes.chip,
11305
+ "data-testid": all ? 'serviceChipAll' : 'serviceChip',
11306
+ onClick: function onClick() {
11307
+ return toggleChip(all ? 'all' : service && service.service);
11308
+ },
11309
+ onKeyPress: function onKeyPress() {
11310
+ return toggleChip(all ? 'all' : service && service.service);
11311
+ }
11312
+ }, service ? service.name : 'All');
11313
+ };
11314
+
11315
+ /* *
11316
+ * Licensed under the Apache License, Version 2.0 (the "License");
11317
+ * you may not use this file except in compliance with the License.
11318
+ * You may obtain a copy of the License at
11319
+ *
11320
+ * http://www.apache.org/licenses/LICENSE-2.0
11321
+ *
11322
+ * Unless required by applicable law or agreed to in writing, software
11323
+ * distributed under the License is distributed on an "AS IS" BASIS,
11324
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11325
+ * See the License for the specific language governing permissions and
11326
+ * limitations under the License.
11327
+ *
11328
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
11329
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
11330
+ * */
11331
+
11332
+ var ServiceChipConnect = function ServiceChipConnect(_ref) {
10996
11333
  var _ref$all = _ref.all,
10997
11334
  all = _ref$all === void 0 ? false : _ref$all,
10998
- service = _ref.service;
10999
- var classes = useStyles$o();
11335
+ service = _ref.service,
11336
+ isEnabled = _ref.isEnabled;
11337
+ var dispatch = useDispatch();
11338
+ var activeServices = useSelector(function (store) {
11339
+ return getActiveServices(store);
11340
+ });
11000
11341
 
11001
- if (all) {
11002
- return /*#__PURE__*/React.createElement("div", {
11003
- className: classes.chip,
11004
- "data-testid": "serviceChipAll"
11005
- }, "All");
11006
- }
11342
+ var toggleChip = function toggleChip(service) {
11343
+ var _a;
11007
11344
 
11008
- if (service && service.name) {
11009
- return /*#__PURE__*/React.createElement("div", {
11010
- className: classes.chip,
11011
- "data-testid": "serviceChip"
11012
- }, service.name);
11013
- }
11345
+ if (service === 'all') {
11346
+ if (activeServices.every(function (activeService) {
11347
+ return activeService.enabled;
11348
+ })) activeServices.forEach(function (s) {
11349
+ if (s.enabled) dispatch(disableActiveService({
11350
+ service: s.id
11351
+ }));
11352
+ });else activeServices.forEach(function (s) {
11353
+ if (!s.enabled) dispatch(enableActiveService({
11354
+ service: s.id
11355
+ }));
11356
+ });
11357
+ } else if ((_a = activeServices.find(function (activeService) {
11358
+ return activeService.id === service;
11359
+ })) === null || _a === void 0 ? void 0 : _a.enabled) {
11360
+ dispatch(disableActiveService({
11361
+ service: service
11362
+ }));
11363
+ } else {
11364
+ dispatch(enableActiveService({
11365
+ service: service
11366
+ }));
11367
+ }
11368
+ };
11014
11369
 
11015
- return /*#__PURE__*/React.createElement("div", {
11016
- className: classes.chip
11370
+ return /*#__PURE__*/React.createElement(ServiceChip, {
11371
+ service: service,
11372
+ all: all,
11373
+ toggleChip: toggleChip,
11374
+ isEnabled: isEnabled
11017
11375
  });
11018
11376
  };
11019
11377
 
@@ -11037,7 +11395,8 @@ var useStyles$n = makeStyles(function (theme) {
11037
11395
  maxWidth: function maxWidth(_ref3) {
11038
11396
  var maxWidthValue = _ref3.maxWidthValue;
11039
11397
  return maxWidthValue;
11040
- }
11398
+ },
11399
+ fontSize: '0.875rem'
11041
11400
  },
11042
11401
  scrollArrowLeft: {
11043
11402
  width: '120px',
@@ -11070,7 +11429,8 @@ var useStyles$n = makeStyles(function (theme) {
11070
11429
 
11071
11430
  var ServiceList = function ServiceList(_ref4) {
11072
11431
  var layerSelectWidth = _ref4.layerSelectWidth,
11073
- services = _ref4.services;
11432
+ services = _ref4.services,
11433
+ activeServices = _ref4.activeServices;
11074
11434
 
11075
11435
  var _React$useState = React.useState(0),
11076
11436
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -11098,6 +11458,9 @@ var ServiceList = function ServiceList(_ref4) {
11098
11458
  setWidth(ref.current.scrollWidth + 50);
11099
11459
  setMargin(Math.max(0, Math.min(width - layerSelectWidth, margin)));
11100
11460
  }, [services, layerSelectWidth, width, margin]);
11461
+ var isAllEnabled = activeServices.every(function (activeService) {
11462
+ return activeService.enabled;
11463
+ });
11101
11464
  return /*#__PURE__*/React.createElement("div", {
11102
11465
  className: classes.serviceList,
11103
11466
  "data-testid": "serviceList"
@@ -11108,13 +11471,20 @@ var ServiceList = function ServiceList(_ref4) {
11108
11471
  }), /*#__PURE__*/React.createElement("div", {
11109
11472
  className: classes.serviceChips,
11110
11473
  ref: ref
11111
- }, services && Object.keys(services) && Object.keys(services).length > 0 && /*#__PURE__*/React.createElement(ServiceChip, {
11474
+ }, services && Object.keys(services) && Object.keys(services).length > 0 && /*#__PURE__*/React.createElement(ServiceChipConnect, {
11112
11475
  key: "All",
11113
- all: true
11476
+ all: true,
11477
+ isEnabled: isAllEnabled
11114
11478
  }), Object.keys(services).map(function (service) {
11115
- return /*#__PURE__*/React.createElement(ServiceChip, {
11479
+ var _a;
11480
+
11481
+ var isServiceEnabled = (_a = activeServices.find(function (activeService) {
11482
+ return activeService.id === services[service].service;
11483
+ })) === null || _a === void 0 ? void 0 : _a.enabled;
11484
+ return /*#__PURE__*/React.createElement(ServiceChipConnect, {
11116
11485
  key: services[service].id,
11117
- service: services[service]
11486
+ service: services[service],
11487
+ isEnabled: isServiceEnabled
11118
11488
  });
11119
11489
  })), layerSelectWidth + margin < width && /*#__PURE__*/React.createElement(ChevronRight, {
11120
11490
  className: classes.scrollArrowRight,
@@ -11145,9 +11515,13 @@ var ServiceListConnect = function ServiceListConnect(_ref) {
11145
11515
  var services = useSelector(function (store) {
11146
11516
  return getServices(store);
11147
11517
  });
11518
+ var activeServices = useSelector(function (store) {
11519
+ return getActiveServices(store);
11520
+ });
11148
11521
  return /*#__PURE__*/React.createElement(ServiceList, {
11149
11522
  layerSelectWidth: layerSelectWidth,
11150
- services: services
11523
+ services: services,
11524
+ activeServices: activeServices
11151
11525
  });
11152
11526
  };
11153
11527
 
@@ -11391,6 +11765,7 @@ var FilterListItem = function FilterListItem(_ref) {
11391
11765
  }, /*#__PURE__*/React.createElement(ListItemIcon, {
11392
11766
  className: classes.listItemIcon
11393
11767
  }, /*#__PURE__*/React.createElement(Checkbox, {
11768
+ color: "secondary",
11394
11769
  checked: checked,
11395
11770
  onChange: function onChange() {
11396
11771
  return toggleCheckbox(index);
@@ -11407,7 +11782,8 @@ var FilterListItem = function FilterListItem(_ref) {
11407
11782
  size: "small",
11408
11783
  onClick: function onClick() {
11409
11784
  return selectOnlyOne(index);
11410
- }
11785
+ },
11786
+ "data-testid": "onlyButton"
11411
11787
  }, /*#__PURE__*/React.createElement(Typography, {
11412
11788
  className: classes.onlyByttonText
11413
11789
  }, "ONLY"))) : null));
@@ -11518,26 +11894,27 @@ var KeywordFilterResults = function KeywordFilterResults(_ref) {
11518
11894
  container: true,
11519
11895
  item: true,
11520
11896
  xs: 12,
11521
- justify: "space-between",
11897
+ justifyContent: "space-between",
11522
11898
  alignItems: "center",
11523
11899
  className: classes.selectAllContainer
11524
11900
  }, /*#__PURE__*/React.createElement(Grid, {
11525
11901
  container: true,
11526
11902
  item: true,
11527
11903
  xs: 6,
11528
- justify: "flex-start",
11904
+ justifyContent: "flex-start",
11529
11905
  alignItems: "center",
11530
11906
  className: classes.selectAll
11531
11907
  }, "Select all"), /*#__PURE__*/React.createElement(Grid, {
11532
11908
  container: true,
11533
11909
  item: true,
11534
11910
  xs: 6,
11535
- justify: "flex-end",
11911
+ justifyContent: "flex-end",
11536
11912
  alignContent: "center",
11537
11913
  className: classes["switch"]
11538
11914
  }, /*#__PURE__*/React.createElement(CustomSwitch, {
11539
11915
  checked: allSelected,
11540
- onChange: toggleSelectAll
11916
+ onChange: toggleSelectAll,
11917
+ "data-testid": "customSwitch"
11541
11918
  }))), /*#__PURE__*/React.createElement(List, {
11542
11919
  dense: true,
11543
11920
  style: {
@@ -12242,7 +12619,8 @@ var useStyles$h = makeStyles(function () {
12242
12619
  height: '320px',
12243
12620
  margin: '10px',
12244
12621
  marginLeft: '-5px',
12245
- minWidth: 120
12622
+ minWidth: 120,
12623
+ fontSize: '90%'
12246
12624
  },
12247
12625
  layerName: {
12248
12626
  paddingLeft: '10px',
@@ -12283,11 +12661,10 @@ var DimensionSelectSlider = function DimensionSelectSlider(_ref) {
12283
12661
  return null;
12284
12662
  }
12285
12663
 
12286
- var sortedMarks = _toConsumableArray(marks);
12287
-
12288
- sortedMarks = sortedMarks.sort(function (a, b) {
12664
+ var sortedMarks = _toConsumableArray(marks).sort(function (a, b) {
12289
12665
  return typeof a.value === 'number' && typeof b.value === 'number' && a.value - b.value;
12290
12666
  });
12667
+
12291
12668
  var adaptedMarks = reverse ? sortedMarks.reverse() : sortedMarks;
12292
12669
  var values = adaptedMarks.map(function (m) {
12293
12670
  return m.value;
@@ -12433,27 +12810,30 @@ var DimensionSelectSliderConnect = function DimensionSelectSliderConnect(_ref) {
12433
12810
  var layerName = wmLayer.getLayerName();
12434
12811
  var marks = marksByDimension(wmsDimension);
12435
12812
  var isLayerDimensionSynced = layerDimension.synced !== undefined && layerDimension.synced === true;
12813
+ var tooltipTitle = isLayerDimensionSynced ? 'Click to disconnect layer' : 'Click to connect layer';
12814
+
12815
+ var Icon = function Icon() {
12816
+ return isLayerDimensionSynced ? /*#__PURE__*/React.createElement(Link, {
12817
+ "data-testid": "syncIcon"
12818
+ }) : /*#__PURE__*/React.createElement(LinkOff, {
12819
+ "data-testid": "syncDisIcon"
12820
+ });
12821
+ };
12822
+
12436
12823
  return /*#__PURE__*/React.createElement(Grid, {
12437
12824
  key: layerId,
12438
12825
  item: true,
12439
12826
  xs: "auto"
12827
+ }, /*#__PURE__*/React.createElement(Tooltip, {
12828
+ title: tooltipTitle,
12829
+ placement: "top"
12440
12830
  }, /*#__PURE__*/React.createElement(IconButton, {
12441
12831
  "data-testid": "syncButton",
12442
12832
  size: "small",
12443
12833
  onClick: function onClick() {
12444
12834
  return handleSyncChanged(layerId, dimensionName, layerDimension.currentValue, !layerDimension.synced);
12445
12835
  }
12446
- }, isLayerDimensionSynced ? /*#__PURE__*/React.createElement(Tooltip, {
12447
- title: "Click to disconnect layer",
12448
- placement: "top"
12449
- }, /*#__PURE__*/React.createElement(Link, {
12450
- "data-testid": "syncIcon"
12451
- })) : /*#__PURE__*/React.createElement(Tooltip, {
12452
- title: "Click to connect layer",
12453
- placement: "top"
12454
- }, /*#__PURE__*/React.createElement(LinkOff, {
12455
- "data-testid": "syncDisIcon"
12456
- }))), /*#__PURE__*/React.createElement(DimensionSelectSlider, {
12836
+ }, /*#__PURE__*/React.createElement(Icon, null))), /*#__PURE__*/React.createElement(DimensionSelectSlider, {
12457
12837
  marks: marks,
12458
12838
  layerName: layerName,
12459
12839
  reverse: dimConfig ? dimConfig.reversed : false,
@@ -12966,6 +13346,10 @@ var SpeedButton = function SpeedButton(_ref) {
12966
13346
  };
12967
13347
 
12968
13348
  var onKeyDown = function onKeyDown(event) {
13349
+ // disable default Slider behavior
13350
+ event.stopPropagation();
13351
+ event.preventDefault(); // custom logic
13352
+
12969
13353
  if (event.key === 'Tab') {
12970
13354
  setOpen(!open);
12971
13355
  }
@@ -13235,6 +13619,10 @@ var TimeStepButton = function TimeStepButton(_ref) {
13235
13619
  };
13236
13620
 
13237
13621
  var onKeyDown = function onKeyDown(event) {
13622
+ // disable default Slider behavior
13623
+ event.stopPropagation();
13624
+ event.preventDefault(); // custom logic
13625
+
13238
13626
  if (event.key === 'Tab') {
13239
13627
  setOpen(!open);
13240
13628
  }
@@ -14759,17 +15147,16 @@ var useStyles$c = makeStyles(function (theme) {
14759
15147
  });
14760
15148
 
14761
15149
  var thumbComponent = function thumbComponent(props) {
14762
- return (
14763
- /*#__PURE__*/
14764
- // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
14765
- React.createElement("span", Object.assign({}, props, {
14766
- "data-testid": "scaleSliderSliderThumb",
14767
- tabIndex: 0
14768
- }), /*#__PURE__*/React.createElement(SvgIcon, null, /*#__PURE__*/React.createElement("polygon", {
14769
- transform: "translate(6.5 5.5)",
14770
- points: "6,0 11,5 11,12 0,12 0,5"
14771
- })))
14772
- );
15150
+ var children = props.children,
15151
+ other = __rest(props, ["children"]);
15152
+
15153
+ return /*#__PURE__*/React.createElement(SliderThumb, Object.assign({}, other, {
15154
+ "data-testid": "scaleSliderSliderThumb",
15155
+ tabIndex: 0
15156
+ }), children, /*#__PURE__*/React.createElement(SvgIcon, null, /*#__PURE__*/React.createElement("polygon", {
15157
+ transform: "translate(6.5 5.5)",
15158
+ points: "6,0 11,5 11,12 0,12 0,5"
15159
+ })));
14773
15160
  };
14774
15161
 
14775
15162
  var marks = [{
@@ -14825,9 +15212,14 @@ var GeoWebScaleSlider = withStyles(function (theme) {
14825
15212
  thumb: {
14826
15213
  backgroundColor: 'rgba(0,0,0,0)',
14827
15214
  marginTop: 0,
15215
+ width: 12,
15216
+ height: 12,
14828
15217
  color: theme.palette.geowebColors.timeSlider.timeScalePointer.fill,
14829
15218
  '& svg polygon': {
14830
15219
  filter: theme.palette.geowebColors.timeSlider.timeScaleShadowButtonScale.filter
15220
+ },
15221
+ '&:before': {
15222
+ display: 'none'
14831
15223
  }
14832
15224
  },
14833
15225
  valueLabel: {
@@ -14942,7 +15334,9 @@ var TimeSliderScaleSlider = function TimeSliderScaleSlider(_ref) {
14942
15334
  onChange: onChange,
14943
15335
  onKeyDown: onKeyDown,
14944
15336
  "aria-labelledby": "scale-slider",
14945
- ThumbComponent: thumbComponent,
15337
+ components: {
15338
+ Thumb: thumbComponent
15339
+ },
14946
15340
  marks: marks,
14947
15341
  track: false
14948
15342
  })));
@@ -18985,6 +19379,7 @@ var getDisplayText = function getDisplayText(currentAdagucTime) {
18985
19379
  };
18986
19380
 
18987
19381
  var ORIGIN_REACTMAPVIEW_ONMAPCHANGEDIMENSION = 'ORIGIN_REACTMAPVIEW_ONMAPCHANGEDIMENSION';
19382
+ var ORIGIN_REACTMAPVIEW_ONUPDATELAYERINFO = 'ORIGIN_REACTMAPVIEW_ONUPDATELAYERINFO';
18988
19383
 
18989
19384
  var ReactMapView = /*#__PURE__*/function (_React$Component) {
18990
19385
  _inherits(ReactMapView, _React$Component);
@@ -19030,7 +19425,7 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
19030
19425
 
19031
19426
  layers.forEach(function (layer) {
19032
19427
  if (layer.enabled !== false) {
19033
- _this.parseWMJSLayer(layer, true, 'onlydims');
19428
+ _this.parseWMJSLayer(layer, true);
19034
19429
  }
19035
19430
  });
19036
19431
  }, fetchSpeed);
@@ -19042,25 +19437,12 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
19042
19437
  }
19043
19438
  };
19044
19439
 
19045
- _this.parseWMJSLayer = function (wmLayer, forceReload, updateStrategy, child) {
19440
+ _this.parseWMJSLayer = function (wmLayer, forceReload, child) {
19046
19441
  var callback = function callback() {
19047
- if (updateStrategy === 'all') {
19048
- var _this$props = _this.props,
19049
- onMapUpdateAllDimensions = _this$props.onMapUpdateAllDimensions,
19050
- onLayerChangeStyle = _this$props.onLayerChangeStyle,
19051
- onLayerSetDimensions = _this$props.onLayerSetDimensions,
19052
- onServiceSetLayers = _this$props.onServiceSetLayers,
19053
- onLayerSetStyles = _this$props.onLayerSetStyles,
19054
- mapId = _this$props.mapId;
19055
- setServiceMetadata(wmLayer, mapId, _this.adaguc.webMapJS, _this.props, onMapUpdateAllDimensions, onLayerChangeStyle, onServiceSetLayers, onLayerSetStyles, onLayerSetDimensions);
19056
- }
19057
-
19058
- if (updateStrategy === 'onlydims') {
19059
- var _this$props2 = _this.props,
19060
- _onLayerSetDimensions = _this$props2.onLayerSetDimensions,
19061
- _mapId = _this$props2.mapId;
19062
- setServiceMetadata(wmLayer, _mapId, _this.adaguc.webMapJS, _this.props, null, null, null, null, _onLayerSetDimensions);
19063
- }
19442
+ var _this$props = _this.props,
19443
+ onUpdateLayerInformation = _this$props.onUpdateLayerInformation,
19444
+ mapId = _this$props.mapId;
19445
+ setServiceMetadata(wmLayer, mapId, _this.adaguc.webMapJS, _this.props, onUpdateLayerInformation);
19064
19446
 
19065
19447
  if (child) {
19066
19448
  if (wmLayer.hasError) {
@@ -19073,7 +19455,7 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
19073
19455
  }
19074
19456
  };
19075
19457
 
19076
- wmLayer.parseLayer(callback, forceReload);
19458
+ wmLayer.parseLayer(callback, forceReload, 'ReactMapView parseWMJSLayer');
19077
19459
  };
19078
19460
 
19079
19461
  _this.state = {
@@ -19096,11 +19478,11 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
19096
19478
  _createClass(ReactMapView, [{
19097
19479
  key: "componentDidMount",
19098
19480
  value: function componentDidMount() {
19099
- var _this$props3 = this.props,
19100
- onMount = _this$props3.onMount,
19101
- mapId = _this$props3.mapId,
19102
- onRegisterAdaguc = _this$props3.onRegisterAdaguc,
19103
- shouldAutoFetch = _this$props3.shouldAutoFetch;
19481
+ var _this$props2 = this.props,
19482
+ onMount = _this$props2.onMount,
19483
+ mapId = _this$props2.mapId,
19484
+ onRegisterAdaguc = _this$props2.onRegisterAdaguc,
19485
+ shouldAutoFetch = _this$props2.shouldAutoFetch;
19104
19486
  this.checkAdaguc();
19105
19487
  this.checkNewProps(null, this.props);
19106
19488
  window.addEventListener('resize', this.handleWindowResize);
@@ -19122,9 +19504,9 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
19122
19504
  }, {
19123
19505
  key: "componentWillUnmount",
19124
19506
  value: function componentWillUnmount() {
19125
- var _this$props4 = this.props,
19126
- onUnMount = _this$props4.onUnMount,
19127
- mapId = _this$props4.mapId;
19507
+ var _this$props3 = this.props,
19508
+ onUnMount = _this$props3.onUnMount,
19509
+ mapId = _this$props3.mapId;
19128
19510
  window.removeEventListener('resize', this.handleWindowResize);
19129
19511
  onUnMount(mapId, this.adaguc.webMapJS);
19130
19512
  this.adaguc.webMapJS.getListener().suspendEvents();
@@ -19132,6 +19514,7 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
19132
19514
  if (typeof this.adaguc.webMapJS.stopAnimating === 'function') {
19133
19515
  this.adaguc.webMapJS.stopAnimating();
19134
19516
  this.adaguc.webMapJS.destroy();
19517
+ this.adaguc.webMapJSCreated = false;
19135
19518
  }
19136
19519
 
19137
19520
  this.clearRefetchTimer();
@@ -19139,9 +19522,9 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
19139
19522
  }, {
19140
19523
  key: "onDimChangeListener",
19141
19524
  value: function onDimChangeListener() {
19142
- var _this$props5 = this.props,
19143
- mapId = _this$props5.mapId,
19144
- onMapChangeDimension = _this$props5.onMapChangeDimension;
19525
+ var _this$props4 = this.props,
19526
+ mapId = _this$props4.mapId,
19527
+ onMapChangeDimension = _this$props4.onMapChangeDimension;
19145
19528
 
19146
19529
  if (this.adaguc && this.adaguc.webMapJS) {
19147
19530
  var timeDimension = this.adaguc.webMapJS.getDimension('time');
@@ -19163,9 +19546,9 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
19163
19546
  value: function onAfterSetBBoxListener(wmjsMap) {
19164
19547
  var _this2 = this;
19165
19548
 
19166
- var _this$props6 = this.props,
19167
- mapId = _this$props6.mapId,
19168
- onMapZoomEnd = _this$props6.onMapZoomEnd;
19549
+ var _this$props5 = this.props,
19550
+ mapId = _this$props5.mapId,
19551
+ onMapZoomEnd = _this$props5.onMapZoomEnd;
19169
19552
  /* Update the map after 100 ms */
19170
19553
 
19171
19554
  window.setTimeout(function () {
@@ -19330,8 +19713,6 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
19330
19713
  this.adaguc.webMapJS.showLayerInfo = props.showLayerInfo;
19331
19714
  }
19332
19715
  }
19333
- /* Check children */
19334
-
19335
19716
 
19336
19717
  var children = props.children;
19337
19718
 
@@ -19370,23 +19751,29 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
19370
19751
  wmjsLayers[l].remove();
19371
19752
  /* Trigger update of all map dimensions */
19372
19753
 
19373
- var onMapUpdateAllDimensions = props.onMapUpdateAllDimensions,
19754
+ var onUpdateLayerInformation = props.onUpdateLayerInformation,
19374
19755
  mapId = props.mapId;
19375
- onMapUpdateAllDimensions && onMapUpdateAllDimensions({
19376
- origin: origin,
19377
- mapId: mapId,
19378
- dimensions: _this3.adaguc.webMapJS.mapdimensions.map(function (_ref) {
19379
- var name = _ref.name,
19380
- units = _ref.units,
19381
- currentValue = _ref.currentValue,
19382
- synced = _ref.synced;
19383
- return {
19384
- name: name,
19385
- units: units,
19386
- currentValue: currentValue,
19387
- synced: synced
19388
- };
19389
- })
19756
+ onUpdateLayerInformation && onUpdateLayerInformation({
19757
+ origin: ORIGIN_REACTMAPVIEW_ONUPDATELAYERINFO,
19758
+ serviceLayers: null,
19759
+ layerStyle: null,
19760
+ layerDimensions: null,
19761
+ mapDimensions: {
19762
+ origin: origin,
19763
+ mapId: mapId,
19764
+ dimensions: _this3.adaguc.webMapJS.mapdimensions.map(function (_ref) {
19765
+ var name = _ref.name,
19766
+ units = _ref.units,
19767
+ currentValue = _ref.currentValue,
19768
+ synced = _ref.synced;
19769
+ return {
19770
+ name: name,
19771
+ units: units,
19772
+ currentValue: currentValue,
19773
+ synced: synced
19774
+ };
19775
+ })
19776
+ }
19390
19777
  });
19391
19778
 
19392
19779
  _this3.checkNewProps(prevProps, props);
@@ -19494,7 +19881,7 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
19494
19881
  }
19495
19882
 
19496
19883
  if (!isBaselayer) {
19497
- _this3.parseWMJSLayer(newWMLayer, false, 'all', child);
19884
+ _this3.parseWMJSLayer(newWMLayer, false, child);
19498
19885
  }
19499
19886
 
19500
19887
  needsRedraw = true;
@@ -19502,7 +19889,7 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
19502
19889
  /* Set the name of the ADAGUC WMJSLayer */
19503
19890
  if (child.props.name !== undefined && wmLayer.name !== child.props.name) {
19504
19891
  wmLayer.setName(child.props.name).then(function () {
19505
- _this3.parseWMJSLayer(wmLayer, false, 'all', child);
19892
+ _this3.parseWMJSLayer(wmLayer, false, child);
19506
19893
  });
19507
19894
  needsRedraw = true;
19508
19895
  }
@@ -19606,12 +19993,12 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
19606
19993
  value: function checkAdaguc() {
19607
19994
  var _this4 = this;
19608
19995
 
19609
- var _this$props7 = this.props,
19610
- mapId = _this$props7.mapId,
19611
- listeners = _this$props7.listeners,
19612
- srs = _this$props7.srs,
19613
- bbox = _this$props7.bbox,
19614
- onMapPinChangeLocation = _this$props7.onMapPinChangeLocation;
19996
+ var _this$props6 = this.props,
19997
+ mapId = _this$props6.mapId,
19998
+ listeners = _this$props6.listeners,
19999
+ srs = _this$props6.srs,
20000
+ bbox = _this$props6.bbox,
20001
+ onMapPinChangeLocation = _this$props6.onMapPinChangeLocation;
19615
20002
 
19616
20003
  if (this.adaguc.webMapJSCreated) {
19617
20004
  return;
@@ -19682,10 +20069,10 @@ var ReactMapView = /*#__PURE__*/function (_React$Component) {
19682
20069
  }, {
19683
20070
  key: "render",
19684
20071
  value: function render() {
19685
- var _this$props8 = this.props,
19686
- passiveMap = _this$props8.passiveMap,
19687
- children = _this$props8.children,
19688
- onClick = _this$props8.onClick;
20072
+ var _this$props7 = this.props,
20073
+ passiveMap = _this$props7.passiveMap,
20074
+ children = _this$props7.children,
20075
+ onClick = _this$props7.onClick;
19689
20076
  var adagucInitialised = this.state.adagucInitialised;
19690
20077
  var featureLayers = getFeatureLayers(children);
19691
20078
  return /*#__PURE__*/React.createElement("div", {
@@ -19774,22 +20161,7 @@ ReactMapView.defaultProps = {
19774
20161
  onMapChangeDimension: function onMapChangeDimension() {
19775
20162
  /* nothing */
19776
20163
  },
19777
- onMapUpdateAllDimensions: function onMapUpdateAllDimensions() {
19778
- /* nothing */
19779
- },
19780
- onLayerChangeStyle: function onLayerChangeStyle() {
19781
- /* nothing */
19782
- },
19783
- onLayerChangeDimension: function onLayerChangeDimension() {
19784
- /* nothing */
19785
- },
19786
- onLayerSetDimensions: function onLayerSetDimensions() {
19787
- /* nothing */
19788
- },
19789
- onServiceSetLayers: function onServiceSetLayers() {
19790
- /* nothing */
19791
- },
19792
- onLayerSetStyles: function onLayerSetStyles() {
20164
+ onUpdateLayerInformation: function onUpdateLayerInformation() {
19793
20165
  /* nothing */
19794
20166
  },
19795
20167
  onMapZoomEnd: function onMapZoomEnd() {
@@ -19943,6 +20315,7 @@ var MapView = function MapView(_a) {
19943
20315
  * Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
19944
20316
  * Copyright 2020 - Finnish Meteorological Institute (FMI)
19945
20317
  * */
20318
+ var ORIGIN_REACTMAPVIEWCONNECT_ONMAPCHANGEDIMENSION = 'ORIGIN_REACTMAPVIEWCONNECT_ONMAPCHANGEDIMENSION';
19946
20319
  /**
19947
20320
  * Connected component used to display the map and selected layers.
19948
20321
  * Includes options to disable the map controls and legend.
@@ -19991,29 +20364,28 @@ var MapViewConnect = function MapViewConnect(_a) {
19991
20364
  return getPinLocation(store, mapId);
19992
20365
  });
19993
20366
  var dispatch = useDispatch();
20367
+ var map = getWMJSMapById(mapId);
19994
20368
  var mapChangeDimension$1 = React.useCallback(function (mapDimensionPayload) {
19995
- return dispatch(mapChangeDimension(mapDimensionPayload));
19996
- }, [dispatch]);
20369
+ if (mapDimensionPayload.dimension) {
20370
+ var dimension = map.getDimension(mapDimensionPayload.dimension.name);
20371
+
20372
+ if (dimension && dimension.currentValue === mapDimensionPayload.dimension.currentValue) {
20373
+ return;
20374
+ }
20375
+ }
20376
+
20377
+ dispatch(mapChangeDimension(mapDimensionPayload));
20378
+ }, [dispatch, map]);
19997
20379
  var setTime$1 = React.useCallback(function (setTimePayload) {
19998
- return dispatch(setTime(setTimePayload));
19999
- }, [dispatch]);
20000
- var layerChangeStyle$1 = React.useCallback(function (payload) {
20001
- return dispatch(layerChangeStyle(payload));
20002
- }, [dispatch]);
20003
- var layerChangeDimension$1 = React.useCallback(function (payload) {
20004
- return dispatch(layerChangeDimension(payload));
20005
- }, [dispatch]);
20006
- var layerSetDimensions$1 = React.useCallback(function (payload) {
20007
- return dispatch(layerSetDimensions(payload));
20008
- }, [dispatch]);
20009
- var mapUpdateAllDimensions = React.useCallback(function (payload) {
20010
- return dispatch(mapUpdateAllMapDimensions(payload));
20011
- }, [dispatch]);
20012
- var serviceSetLayers$1 = React.useCallback(function (payload) {
20013
- return dispatch(serviceSetLayers(payload));
20014
- }, [dispatch]);
20015
- var layerSetStyles$1 = React.useCallback(function (payload) {
20016
- return dispatch(layerSetStyles(payload));
20380
+ /* Check if the map not already has this value set, otherwise this component will re-render */
20381
+ if (map.getDimension('time').currentValue === setTimePayload.value) {
20382
+ return;
20383
+ }
20384
+
20385
+ dispatch(setTime(setTimePayload));
20386
+ }, [dispatch, map]);
20387
+ var updateLayerInformation = React.useCallback(function (payload) {
20388
+ dispatch(onUpdateLayerInformation(payload));
20017
20389
  }, [dispatch]);
20018
20390
  var registerMap$1 = React.useCallback(function (payload) {
20019
20391
  return dispatch(registerMap(payload));
@@ -20066,33 +20438,14 @@ var MapViewConnect = function MapViewConnect(_a) {
20066
20438
  if (mapDimensionPayload && mapDimensionPayload.dimension && mapDimensionPayload.dimension.name && mapDimensionPayload.dimension.name === 'time') {
20067
20439
  setTime$1({
20068
20440
  sourceId: mapId,
20069
- origin: "".concat(mapDimensionPayload.origin, "==> MapViewConnect, 184"),
20441
+ origin: "".concat(mapDimensionPayload.origin, "==> ").concat(ORIGIN_REACTMAPVIEWCONNECT_ONMAPCHANGEDIMENSION),
20070
20442
  value: handleMomentISOString(mapDimensionPayload.dimension.currentValue)
20071
20443
  });
20072
20444
  } else {
20073
20445
  mapChangeDimension$1(mapDimensionPayload);
20074
20446
  }
20075
20447
  },
20076
- onMapUpdateAllDimensions: function onMapUpdateAllDimensions(mapDimensionPayload) {
20077
- /* Always update all dimensions */
20078
- mapUpdateAllDimensions(mapDimensionPayload);
20079
- /* Additionally trigger the setTime action */
20080
-
20081
- mapDimensionPayload.dimensions.forEach(function (dimension) {
20082
- if (dimension.name && dimension.name === 'time') {
20083
- setTime$1({
20084
- sourceId: mapId,
20085
- origin: 'MapViewConnect, 220',
20086
- value: handleMomentISOString(dimension.currentValue)
20087
- });
20088
- }
20089
- });
20090
- },
20091
- onLayerChangeStyle: layerChangeStyle$1,
20092
- onLayerChangeDimension: layerChangeDimension$1,
20093
- onLayerSetDimensions: layerSetDimensions$1,
20094
- onServiceSetLayers: serviceSetLayers$1,
20095
- onLayerSetStyles: layerSetStyles$1,
20448
+ onUpdateLayerInformation: updateLayerInformation,
20096
20449
  onMapPinChangeLocation: mapPinChangeLocation,
20097
20450
  onMapZoomEnd: function onMapZoomEnd(a) {
20098
20451
  genericSetBbox({
@@ -21384,7 +21737,8 @@ var SyncGroupList = function SyncGroupList(_ref) {
21384
21737
  return addNewGroup(groupObject.id);
21385
21738
  } : function () {
21386
21739
  return removeGroup(groupObject.id);
21387
- }
21740
+ },
21741
+ size: "large"
21388
21742
  }, index === 0 ? /*#__PURE__*/React.createElement(Add, {
21389
21743
  className: classes.iconColor
21390
21744
  }) : /*#__PURE__*/React.createElement(DeleteForever, {