@opengeoweb/core 9.34.0 → 9.35.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.
package/index.esm.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import React__default, { useState, useCallback, useRef } from 'react';
4
- import { Grid2, Box, MenuItem, Typography, useTheme, Popper, Fade, Tooltip, styled, LinearProgress, FormControl, InputLabel, Paper, List, ListItemButton, ListItemText, CircularProgress, ListSubheader, Dialog, DialogTitle, DialogContent, DialogContentText, TextField, InputAdornment, DialogActions, Button, circularProgressClasses, ListItemIcon, Checkbox, Select } from '@mui/material';
5
- import { SHARED_NAMESPACE, sharedTranslations, CustomIconButton, TooltipSelect, AlertIcon, sliderHeaderStyle, CustomSlider, ToggleMenu, CustomTooltip, tooltipContainerStyles, renderCounter, AlertBanner, CustomAccordion, PROJECTION, calculateStartSize, ToolContainerDraggable, useDebounce, dateUtils, withEggs, ErrorBoundary } from '@opengeoweb/shared';
6
- import { CollapseSmall, CollapseMedium, CollapseLarge, CollapseWindow, ExpandWindow, LayersAdd, CloudLoading, Copy, None, FastForward, AutoUpdateActive, Both, Visibility, VisibilityOff, Delete, DragHandle as DragHandle$1, Cached, Add, MapAdd, WorldMapProjection, Layers, ExitDomain, Info, Search, Exclamation, MyLocation, Close, ThemeWrapper, lightTheme, FlagBritain, FlagNetherlands, FlagFinland, FlagNorway } from '@opengeoweb/theme';
4
+ import { Grid2, Box, MenuItem, Typography, useTheme, Popper, Fade, Tooltip, styled, LinearProgress, FormControl, InputLabel, Paper, List, ListItemButton, ListItemText, CircularProgress, ListSubheader, Dialog, DialogTitle, DialogContent, DialogContentText, TextField, InputAdornment, DialogActions, Button, circularProgressClasses, ListItemIcon, Checkbox, Switch, Select } from '@mui/material';
5
+ import { SHARED_NAMESPACE, sharedTranslations, CustomIconButton, CustomTooltip, TooltipSelect, AlertIcon, sliderHeaderStyle, CustomSlider, ToggleMenu, tooltipContainerStyles, renderCounter, AlertBanner, CustomAccordion, PROJECTION, calculateStartSize, useWheelStopPropagation, ToolContainerDraggable, useDebounce, dateUtils, withEggs, ErrorBoundary } from '@opengeoweb/shared';
6
+ import { CollapseSmall, CollapseMedium, CollapseLarge, CollapseWindow, ExpandWindow, LayersAdd, CloudLoading, ColumnCollapsed, ColumnCollapse, Copy, None, FastForward, AutoUpdateActive, Both, Visibility, VisibilityOff, Delete, DragHandle as DragHandle$1, Cached, Add, MapAdd, WorldMapProjection, Layers, ExitDomain, Info, Search, Exclamation, MyLocation, Close, ThemeWrapper, lightTheme, FlagBritain, FlagNetherlands, FlagFinland, FlagNorway } from '@opengeoweb/theme';
7
7
  import i18n from 'i18next';
8
8
  import { initReactI18next, useTranslation, I18nextProvider } from 'react-i18next';
9
9
  import { TIMESLIDER_NAMESPACE, timesliderTranslations, defaultTimeSpan, TIME_SLIDER_LEGEND_HEIGHT, SpeedButton, TimeStepButton, AnimationLengthButton, AnimationLength, TimeSpanButton, secondsPerPxFromCanvasWidth, getNewCenterOfFixedPointZoom, OptionsMenuButton, PlayButton, defaultTimeStep, BackwardForwardStepButton, AutoUpdateButton, NowButton, handleSetNowEvent, TimeSliderButtons, TimeSliderCurrentTimeBox, TimeSliderLegend, TimeSlider, onsetNewDateDebounced, getFilteredTime, ControlButtons, OptionsMenu, TimeSliderClock } from '@opengeoweb/timeslider';
@@ -11,14 +11,14 @@ import { WEBMAP_REACT_NAMESPACE, webmapReactTranslations, WEBMAP_NAMESPACE, webm
11
11
  import { useDispatch, useSelector, connect, useStore, Provider } from 'react-redux';
12
12
  import { ReactSortable } from 'react-sortablejs';
13
13
  import Sortable from 'sortablejs';
14
- import { layerTypes, layerUtils, mapSelectors, layerActions, layerSelectors, serviceSelectors, serviceActions, mapActions, mapEnums, uiSelectors, uiTypes, useSetupDialog, filterLayers, getUserAddedServices, uiActions, genericActions, drawtoolSelectors, syncConstants, loadingIndicatorActions, defaultLayers, mapStoreActions, getSingularDrawtoolDrawLayerId, syncGroupsSelectors, syncGroupsSelector, coreModuleConfig, routerUtils, routerModuleConfig } from '@opengeoweb/store';
14
+ import { layerTypes, layerUtils, mapSelectors, layerActions, layerSelectors, serviceSelectors, serviceActions, mapActions, mapEnums, uiSelectors, uiTypes, useSetupDialog, filterLayers, getUserAddedServices, uiActions, genericSelectors, genericActions, drawtoolSelectors, syncConstants, loadingIndicatorActions, syncGroupsSelectors, defaultLayers, mapStoreActions, getSingularDrawtoolDrawLayerId, syncGroupsSelector, syncGroupsActions, coreModuleConfig, routerUtils, routerModuleConfig } from '@opengeoweb/store';
15
15
  import { webmapUtils, WMGetServiceFromStore, getCapabilities, LayerType, handleDateUtilsISOString, wmServiceListener, EVENT_GETCAPABILITIES_START, EVENT_GETCAPABILITIES_READY, getWMSGetFeatureInfoRequestURL, WMLayer } from '@opengeoweb/webmap';
16
16
  import { Box as Box$1, styled as styled$1 } from '@mui/system';
17
17
  import _, { isEqual, range } from 'lodash';
18
18
  import { LayerSelectButtonConnect, LayerSelectConnect, layerSelectConfig } from '@opengeoweb/layer-select';
19
19
  import axios from 'axios';
20
20
  import DOMPurify from 'dompurify';
21
- import { SnackbarWrapperConnect } from '@opengeoweb/snackbar';
21
+ import { snackbarTypes, snackbarActions, SnackbarWrapperConnect } from '@opengeoweb/snackbar';
22
22
  import { useNavigate } from 'react-router-dom';
23
23
  import * as Sentry from '@sentry/react';
24
24
 
@@ -86,7 +86,14 @@ var en = {
86
86
  "layermanager-dimensions-none": "Layer has no time dimension",
87
87
  feature_info_marker_info: "Event marker info",
88
88
  feature_info_location_info: "Get information for a specific location",
89
- "language-select": "Language"
89
+ "language-select": "Language",
90
+ "column-expand": "Expand {{title}}",
91
+ "column-collapse": "Collapse",
92
+ "workspace-time-scroll-off": "Workspace time scroll OFF",
93
+ "workspace-time-scroll-on": "ON",
94
+ "workspace-time-scroll-info": "This feature affects all views in this workspace",
95
+ "workspace-time-scroll-toggle-on": "Workspace time scroll ON",
96
+ "workspace-time-scroll-toggle-off": "Workspace time scroll OFF"
90
97
  };
91
98
  var fi = {
92
99
  feature_info_title: "Napsauta karttaa nähdäksesi lisätietoja.",
@@ -152,7 +159,14 @@ var fi = {
152
159
  "layermanager-dimensions-none": "Karttatasolla ei ole aika dimensioita",
153
160
  feature_info_marker_info: "Karttamerkin tiedot",
154
161
  feature_info_location_info: "Hae tietoja tietystä sijainnista",
155
- "language-select": "Kieli"
162
+ "language-select": "Kieli",
163
+ "column-expand": "Laajenna {{title}}",
164
+ "column-collapse": "Kutista",
165
+ "workspace-time-scroll-off": "Työtilan aika scrollaus POIS PÄÄLTÄ",
166
+ "workspace-time-scroll-on": "PÄÄLLÄ",
167
+ "workspace-time-scroll-info": "Tämä ominaisuus vaikuttaa kaikkiin näkymiin tämän työtilan sisällä",
168
+ "workspace-time-scroll-toggle-on": "Työtilan aika scrollaus PÄÄLLÄ",
169
+ "workspace-time-scroll-toggle-off": "Työtilan aika scrollaus POIS PÄÄLTÄ"
156
170
  };
157
171
  var no = {
158
172
  feature_info_title: "Klikk på kartet for å få mer informasjon.",
@@ -218,7 +232,14 @@ var no = {
218
232
  "layermanager-dimensions-none": "Laget har ingen tidsdimensjon",
219
233
  feature_info_marker_info: "Hendelse markør info",
220
234
  feature_info_location_info: "Få informasjon for en spesifikk lokasjon",
221
- "language-select": "Språk"
235
+ "language-select": "Språk",
236
+ "column-expand": "Ekspander {{title}}",
237
+ "column-collapse": "Kollaps",
238
+ "workspace-time-scroll-off": "ikke oversatt",
239
+ "workspace-time-scroll-on": "ikke oversatt",
240
+ "workspace-time-scroll-info": "ikke oversatt",
241
+ "workspace-time-scroll-toggle-on": "ikke oversatt",
242
+ "workspace-time-scroll-toggle-off": "ikke oversatt"
222
243
  };
223
244
  var nl = {
224
245
  feature_info_title: "Klik op de kaart voor informatie.",
@@ -284,7 +305,14 @@ var nl = {
284
305
  "layermanager-dimensions-none": "Laag heeft geen tijd dimensie",
285
306
  feature_info_marker_info: "Locatie informatie",
286
307
  feature_info_location_info: "Zie informatie voor een specifieke locatie",
287
- "language-select": "Taal"
308
+ "language-select": "Taal",
309
+ "column-expand": "{{title}} uitklappen",
310
+ "column-collapse": "Inklappen",
311
+ "workspace-time-scroll-off": "niet vertaald",
312
+ "workspace-time-scroll-on": "niet vertaald",
313
+ "workspace-time-scroll-info": "niet vertaald",
314
+ "workspace-time-scroll-toggle-on": "niet vertaald",
315
+ "workspace-time-scroll-toggle-off": "niet vertaald"
288
316
  };
289
317
  var coreTranslations = {
290
318
  en: en,
@@ -804,7 +832,10 @@ var columnClasses = {
804
832
  column6: 'column-6',
805
833
  column7: 'column-7',
806
834
  acceptanceTime: 'column-acceptanceTime',
807
- loadDuration: 'column-loadDuration'
835
+ loadDuration: 'column-loadDuration',
836
+ columnHeader: 'columnHeader',
837
+ baseLayer: 'baseLayer',
838
+ columnTarget: 'columnTarget'
808
839
  };
809
840
  var DRAG_VISIBILITY_LEADING_BUTTONS = 3;
810
841
  var DELETE_MORE_BUTTONS = 3;
@@ -820,33 +851,67 @@ var leftButtonsStyle = {
820
851
  display: 'flex',
821
852
  background: 'transparent'
822
853
  };
854
+ var columnCollapseStyle = {
855
+ height: 'inherit',
856
+ alignContent: 'center',
857
+ alignItems: 'center',
858
+ display: 'flex',
859
+ justifyContent: 'space-between',
860
+ whiteSpace: 'nowrap',
861
+ overflow: 'hidden',
862
+ color: 'geowebColors.buttons.icon.default.color',
863
+ flexGrow: 1
864
+ };
823
865
  var layerManagerStyle = {
866
+ '.column-hover-icon': {
867
+ display: 'none'
868
+ },
869
+ '.columnHeader:hover': {
870
+ backgroundColor: 'geowebColors.buttons.icon.mouseOver.fill',
871
+ cursor: 'default',
872
+ '.column-hover-icon': {
873
+ display: 'block'
874
+ }
875
+ },
824
876
  '.layerManagerContainer': {
825
877
  containerType: 'inline-size'
826
878
  },
879
+ '.descriptionRow': {
880
+ height: '32px',
881
+ marginTop: '4px',
882
+ marginBottom: '2px'
883
+ },
827
884
  // disable overflow while dragging to prevent issues with scrollbar
828
885
  '.is-dragging header+.MuiBox-root': {
829
886
  overflow: 'hidden'
830
887
  },
831
- // layer
832
- '.column-2': {
888
+ // baselayer & projection
889
+ '.baseLayer': {
833
890
  width: "calc(" + flexibleAreaWidth + " * 0.25)"
834
891
  },
892
+ // layerName
893
+ '.column-2': Object.assign({
894
+ width: "calc(" + flexibleAreaWidth + " * 0.25)"
895
+ }, columnCollapseStyle),
835
896
  // style
836
- '.column-3': {
897
+ '.column-3': Object.assign({
837
898
  width: "calc(" + flexibleAreaWidth + " * 0.25)"
838
- },
899
+ }, columnCollapseStyle),
839
900
  // opacity
840
- '.column-4': {
901
+ '.column-4': Object.assign({
841
902
  width: "calc(" + flexibleAreaWidth + " * 0.15)"
842
- },
903
+ }, columnCollapseStyle, {
904
+ flexGrow: 0
905
+ }),
843
906
  // dimensions
844
- '.column-5': {
907
+ '.column-5': Object.assign({
845
908
  width: "calc(" + flexibleAreaWidth + " * 0.35)"
846
- },
847
- '.column-acceptanceTime': {
909
+ }, columnCollapseStyle),
910
+ '.column-acceptanceTime': Object.assign({
848
911
  width: acceptanceTimeWidth
849
- },
912
+ }, columnCollapseStyle, {
913
+ flexGrow: 0
914
+ }),
850
915
  '.column-loadDuration': {
851
916
  width: loadDurationWidth,
852
917
  paddingLeft: 1,
@@ -859,7 +924,7 @@ var layerManagerStyle = {
859
924
  },
860
925
  // layer missing warning
861
926
  '.column-7': {
862
- width: "calc(" + flexibleAreaWidth + " * 0.75 + " + acceptanceTimeWidth + "px)"
927
+ width: "calc(" + flexibleAreaWidth + " * 0.75 + " + acceptanceTimeWidth + "px + " + loadDurationWidth + "px)"
863
928
  },
864
929
  // sizes: mini
865
930
  '.enable-btn-mini': {
@@ -885,11 +950,11 @@ var layerManagerStyle = {
885
950
  '.activateLayer-btn, .enable-btn, .column-2, .column-3, .column-4, .column-5, .column-6, .column-7, .column-acceptanceTime, .column-loadDuration': {
886
951
  display: 'none'
887
952
  },
888
- '#mappresets-menubutton, .addLayer-column, .setProjection-column': {
953
+ '.addLayer-column, .setProjection-column': {
889
954
  display: 'none'
890
955
  },
891
956
  '.descriptionRow': {
892
- height: 6,
957
+ height: 0,
893
958
  '.MuiButtonBase-root': {
894
959
  display: 'none'
895
960
  }
@@ -916,10 +981,10 @@ var layerManagerStyle = {
916
981
  // sizes: medium
917
982
  '@container (max-width: 600px)': {
918
983
  '.layermanager': {
919
- '.column-3, .column-4, .column-5, .column-6, .column-7, .column-acceptanceTime, .column-loadDuration': {
984
+ '.column-2, .column-3, .column-4, .column-5, .column-6, .column-7, .column-acceptanceTime, .column-loadDuration': {
920
985
  display: 'none'
921
986
  },
922
- '.column-2': {
987
+ '.columnLayerName, .baseLayer': {
923
988
  width: "calc((100% - " + leftButtonsWidth + "px) )"
924
989
  }
925
990
  },
@@ -995,7 +1060,41 @@ var LayerSelectButton = function LayerSelectButton(_ref) {
995
1060
  });
996
1061
  };
997
1062
 
998
- var _excluded$6 = ["settings", "addLayerComponent"];
1063
+ var _excluded$6 = ["settings", "addLayerComponent", "onToggleCollapsed", "collapsedColumns"];
1064
+ var RowItemCollapse$1 = function RowItemCollapse(_ref) {
1065
+ var className = _ref.className,
1066
+ title = _ref.title,
1067
+ collapsedColumns = _ref.collapsedColumns,
1068
+ _ref$onToggleCollapse = _ref.onToggleCollapsed,
1069
+ onToggleCollapsed = _ref$onToggleCollapse === void 0 ? function () {} : _ref$onToggleCollapse;
1070
+ var _useCoreTranslation = useCoreTranslation(),
1071
+ t = _useCoreTranslation.t;
1072
+ var hoverId = columnClasses.columnHeader + "-" + className;
1073
+ return jsx(CustomTooltip, {
1074
+ title: collapsedColumns != null && collapsedColumns[className] ? t('column-expand', {
1075
+ title: title
1076
+ }) : t('column-collapse'),
1077
+ children: jsx(Grid2, {
1078
+ id: hoverId,
1079
+ className: columnClasses.columnHeader + " " + className,
1080
+ style: Object.assign({}, (collapsedColumns == null ? void 0 : collapsedColumns[className]) && {
1081
+ width: '24px',
1082
+ flexGrow: 0
1083
+ }),
1084
+ onClick: function onClick() {
1085
+ onToggleCollapsed(className);
1086
+ },
1087
+ children: collapsedColumns != null && collapsedColumns[className] ? jsx(ColumnCollapsed, {}) : jsxs(Fragment, {
1088
+ children: [jsx(Box, {
1089
+ sx: styles$3.text,
1090
+ children: title
1091
+ }), jsx(ColumnCollapse, {
1092
+ className: "column-hover-icon"
1093
+ })]
1094
+ })
1095
+ })
1096
+ }, collapsedColumns != null && collapsedColumns[className] ? 'Expand' : 'Collapse');
1097
+ };
999
1098
  var styles$3 = {
1000
1099
  text: function text(theme) {
1001
1100
  return Object.assign({
@@ -1003,22 +1102,25 @@ var styles$3 = {
1003
1102
  fontSize: '12px',
1004
1103
  fontFamily: 'Roboto',
1005
1104
  opacity: 0.67
1006
- }, theme.palette.geowebColors.layerManager.headerRowText);
1105
+ }, theme.palette.geowebColors.layerManager.headerRowText, {
1106
+ overflow: 'hidden',
1107
+ textOverflow: 'ellipsis'
1108
+ });
1007
1109
  }
1008
1110
  };
1009
- var DescriptionRow = function DescriptionRow(_ref) {
1010
- var _settings$addLayer, _settings$addLayer2, _settings$layerName$t, _settings$layerName, _settings$layerStyle$, _settings$layerStyle, _settings$opacity$tit, _settings$opacity, _settings$dimensions$, _settings$dimensions, _settings$acceptanceT, _settings$acceptanceT2;
1011
- var settings = _ref.settings,
1012
- addLayerComponent = _ref.addLayerComponent,
1013
- gridProps = _objectWithoutPropertiesLoose(_ref, _excluded$6);
1014
- var _useCoreTranslation = useCoreTranslation(),
1015
- t = _useCoreTranslation.t;
1111
+ var DescriptionRow = function DescriptionRow(_ref2) {
1112
+ var _settings$addLayer, _settings$addLayer2, _settings$layerName$t, _settings$layerName, _settings$layerName$t2, _settings$layerName2, _settings$layerStyle$, _settings$layerStyle, _settings$opacity$tit, _settings$opacity, _settings$dimensions$, _settings$dimensions, _settings$acceptanceT, _settings$acceptanceT2;
1113
+ var settings = _ref2.settings,
1114
+ addLayerComponent = _ref2.addLayerComponent,
1115
+ _ref2$onToggleCollaps = _ref2.onToggleCollapsed,
1116
+ onToggleCollapsed = _ref2$onToggleCollaps === void 0 ? function () {} : _ref2$onToggleCollaps,
1117
+ collapsedColumns = _ref2.collapsedColumns,
1118
+ gridProps = _objectWithoutPropertiesLoose(_ref2, _excluded$6);
1119
+ var _useCoreTranslation2 = useCoreTranslation(),
1120
+ t = _useCoreTranslation2.t;
1016
1121
  return jsxs(Grid2, Object.assign({
1017
1122
  container: true,
1018
1123
  "data-testid": "descriptionRow",
1019
- sx: {
1020
- height: 40
1021
- },
1022
1124
  className: "descriptionRow",
1023
1125
  alignItems: "center"
1024
1126
  }, gridProps, {
@@ -1033,37 +1135,36 @@ var DescriptionRow = function DescriptionRow(_ref) {
1033
1135
  icon: settings == null || (_settings$addLayer2 = settings.addLayer) == null ? void 0 : _settings$addLayer2.icon
1034
1136
  })
1035
1137
  }), jsx(Grid2, {
1036
- className: columnClasses.column2,
1138
+ className: "medium-layermanager columnLayerName",
1037
1139
  children: jsx(Box, {
1038
1140
  sx: styles$3.text,
1039
1141
  children: (_settings$layerName$t = settings == null || (_settings$layerName = settings.layerName) == null ? void 0 : _settings$layerName.title) != null ? _settings$layerName$t : t('layermanager-layer')
1040
1142
  })
1041
- }), jsx(Grid2, {
1143
+ }), jsx(RowItemCollapse$1, {
1144
+ className: columnClasses.column2,
1145
+ title: (_settings$layerName$t2 = settings == null || (_settings$layerName2 = settings.layerName) == null ? void 0 : _settings$layerName2.title) != null ? _settings$layerName$t2 : t('layermanager-layer'),
1146
+ onToggleCollapsed: onToggleCollapsed,
1147
+ collapsedColumns: collapsedColumns
1148
+ }), jsx(RowItemCollapse$1, {
1042
1149
  className: columnClasses.column3,
1043
- children: jsx(Box, {
1044
- sx: styles$3.text,
1045
- children: (_settings$layerStyle$ = settings == null || (_settings$layerStyle = settings.layerStyle) == null ? void 0 : _settings$layerStyle.title) != null ? _settings$layerStyle$ : t('layermanager-style-title')
1046
- })
1047
- }), jsx(Grid2, {
1150
+ title: (_settings$layerStyle$ = settings == null || (_settings$layerStyle = settings.layerStyle) == null ? void 0 : _settings$layerStyle.title) != null ? _settings$layerStyle$ : t('layermanager-style-title'),
1151
+ onToggleCollapsed: onToggleCollapsed,
1152
+ collapsedColumns: collapsedColumns
1153
+ }), jsx(RowItemCollapse$1, {
1048
1154
  className: columnClasses.column4,
1049
- children: jsx(Box, {
1050
- sx: styles$3.text,
1051
- children: (_settings$opacity$tit = settings == null || (_settings$opacity = settings.opacity) == null ? void 0 : _settings$opacity.title) != null ? _settings$opacity$tit : t('layermanager-opacity-title')
1052
- })
1053
- }), jsx(Grid2, {
1155
+ title: (_settings$opacity$tit = settings == null || (_settings$opacity = settings.opacity) == null ? void 0 : _settings$opacity.title) != null ? _settings$opacity$tit : t('layermanager-opacity-title'),
1156
+ onToggleCollapsed: onToggleCollapsed,
1157
+ collapsedColumns: collapsedColumns
1158
+ }), jsx(RowItemCollapse$1, {
1054
1159
  className: columnClasses.column5,
1055
- children: jsx(Box, {
1056
- sx: styles$3.text,
1057
- children: (_settings$dimensions$ = settings == null || (_settings$dimensions = settings.dimensions) == null ? void 0 : _settings$dimensions.title) != null ? _settings$dimensions$ : t('layermanager-dimensions-title')
1058
- })
1059
- }), jsx(Grid2, {
1160
+ title: (_settings$dimensions$ = settings == null || (_settings$dimensions = settings.dimensions) == null ? void 0 : _settings$dimensions.title) != null ? _settings$dimensions$ : t('layermanager-dimensions-title'),
1161
+ onToggleCollapsed: onToggleCollapsed,
1162
+ collapsedColumns: collapsedColumns
1163
+ }), jsx(RowItemCollapse$1, {
1060
1164
  className: columnClasses.acceptanceTime,
1061
- children: jsx(Box, {
1062
- sx: [styles$3.text, {
1063
- whiteSpace: 'nowrap'
1064
- }],
1065
- children: (_settings$acceptanceT = settings == null || (_settings$acceptanceT2 = settings.acceptanceTime) == null ? void 0 : _settings$acceptanceT2.title) != null ? _settings$acceptanceT : t('layermanager-acceptance-time')
1066
- })
1165
+ title: (_settings$acceptanceT = settings == null || (_settings$acceptanceT2 = settings.acceptanceTime) == null ? void 0 : _settings$acceptanceT2.title) != null ? _settings$acceptanceT : t('layermanager-acceptance-time'),
1166
+ onToggleCollapsed: onToggleCollapsed,
1167
+ collapsedColumns: collapsedColumns
1067
1168
  }), jsx(Grid2, {
1068
1169
  className: columnClasses.loadDuration,
1069
1170
  children: jsx(Box, {
@@ -1263,43 +1364,36 @@ var DimensionSelect = function DimensionSelect(_ref) {
1263
1364
  var defaultValueTooltip = (_defaultDimensionValu = defaultDimensionValueTooltip(t, selectedDimension)) != null ? _defaultDimensionValu : '';
1264
1365
  var nameTooltip = (_tooltipGenerator = tooltipGenerator == null ? void 0 : tooltipGenerator(t, selectedDimension)) != null ? _tooltipGenerator : defaultNameTooltip;
1265
1366
  var valueTooltip = (_tooltipGenerator2 = tooltipGenerator == null ? void 0 : tooltipGenerator(t, selectedDimension, true)) != null ? _tooltipGenerator2 : defaultValueTooltip;
1266
- return jsx(Grid2, {
1267
- container: true,
1268
- direction: "row",
1269
- justifyContent: "flex-start",
1270
- alignItems: "center",
1271
- children: jsxs(Grid2, {
1272
- size: 12,
1273
- children: [collapseDimensionDropdown ? jsx(SingleValueComponent, Object.assign({}, layerDimensions[0], {
1274
- nameMappings: nameMappings,
1275
- valueMappings: valueMappings,
1276
- position: "dimension"
1277
- })) : jsx(DimensionSelectName, {
1278
- selectedDimensionName: selectedDimensionName,
1279
- setSelectedDimensionName: setSelectedDimensionName,
1280
- dimensionNames: dimensionNames,
1281
- tooltip: nameTooltip,
1282
- isEnabled: isEnabled,
1283
- icon: icon,
1284
- nameMappings: nameMappings,
1285
- skipLocalStyling: skipLocalStyling
1286
- }), collapseValueDropdown ? jsx(SingleValueComponent, Object.assign({}, layerDimensions[0], {
1287
- nameMappings: nameMappings,
1288
- valueMappings: valueMappings,
1289
- position: "value"
1290
- })) : jsx(DimensionSelectValue, {
1291
- selectedDimension: selectedDimension,
1292
- onLayerChangeDimension: onLayerChangeDimension,
1293
- tooltip: valueTooltip,
1294
- isEnabled: isEnabled,
1295
- hideLatestDuplicate: hideLatestDuplicate,
1296
- icon: icon,
1297
- valueMappings: valueMappings,
1298
- setUseLatestReferenceTime: setUseLatestReferenceTime,
1299
- useLatestReferenceTime: useLatestReferenceTime,
1300
- skipLocalStyling: skipLocalStyling
1301
- })]
1302
- })
1367
+ return jsxs(Fragment, {
1368
+ children: [collapseDimensionDropdown ? jsx(SingleValueComponent, Object.assign({}, layerDimensions[0], {
1369
+ nameMappings: nameMappings,
1370
+ valueMappings: valueMappings,
1371
+ position: "dimension"
1372
+ })) : jsx(DimensionSelectName, {
1373
+ selectedDimensionName: selectedDimensionName,
1374
+ setSelectedDimensionName: setSelectedDimensionName,
1375
+ dimensionNames: dimensionNames,
1376
+ tooltip: nameTooltip,
1377
+ isEnabled: isEnabled,
1378
+ icon: icon,
1379
+ nameMappings: nameMappings,
1380
+ skipLocalStyling: skipLocalStyling
1381
+ }), collapseValueDropdown ? jsx(SingleValueComponent, Object.assign({}, layerDimensions[0], {
1382
+ nameMappings: nameMappings,
1383
+ valueMappings: valueMappings,
1384
+ position: "value"
1385
+ })) : jsx(DimensionSelectValue, {
1386
+ selectedDimension: selectedDimension,
1387
+ onLayerChangeDimension: onLayerChangeDimension,
1388
+ tooltip: valueTooltip,
1389
+ isEnabled: isEnabled,
1390
+ hideLatestDuplicate: hideLatestDuplicate,
1391
+ icon: icon,
1392
+ valueMappings: valueMappings,
1393
+ setUseLatestReferenceTime: setUseLatestReferenceTime,
1394
+ useLatestReferenceTime: useLatestReferenceTime,
1395
+ skipLocalStyling: skipLocalStyling
1396
+ })]
1303
1397
  });
1304
1398
  };
1305
1399
 
@@ -1499,6 +1593,7 @@ var OpacitySelect = function OpacitySelect(_ref) {
1499
1593
  disableFocusRipple: true,
1500
1594
  sx: {
1501
1595
  '&.MuiIconButton-root': Object.assign({
1596
+ justifyContent: 'normal',
1502
1597
  width: '100%!important',
1503
1598
  height: '100%!important',
1504
1599
  borderRadius: '0',
@@ -2100,41 +2195,75 @@ var Acceptance = function Acceptance(_ref6) {
2100
2195
  onChangeAcceptanceTime: onChangeAcceptanceTime
2101
2196
  });
2102
2197
  };
2103
- var LayerRowUnstyled = function LayerRowUnstyled(_ref7) {
2104
- var layerId = _ref7.layerId,
2105
- layer = _ref7.layer,
2106
- layerName = _ref7.layerName,
2107
- services = _ref7.services,
2108
- mapId = _ref7.mapId,
2109
- _ref7$onLayerRowClick = _ref7.onLayerRowClick,
2110
- onLayerRowClick = _ref7$onLayerRowClick === void 0 ? function () {} : _ref7$onLayerRowClick,
2111
- _ref7$isEnabled = _ref7.isEnabled,
2112
- isEnabled = _ref7$isEnabled === void 0 ? true : _ref7$isEnabled,
2113
- _ref7$isLayerMissing = _ref7.isLayerMissing,
2114
- isLayerMissing = _ref7$isLayerMissing === void 0 ? false : _ref7$isLayerMissing,
2115
- onLayerEnable = _ref7.onLayerEnable,
2116
- onLayerChangeName = _ref7.onLayerChangeName,
2117
- onLayerChangeStyle = _ref7.onLayerChangeStyle,
2118
- onLayerChangeOpacity = _ref7.onLayerChangeOpacity,
2119
- _onLayerChangeDimension = _ref7.onLayerChangeDimension,
2120
- onLayerDelete = _ref7.onLayerDelete,
2121
- onLayerDuplicate = _ref7.onLayerDuplicate,
2122
- onChangeAcceptanceTime = _ref7.onChangeAcceptanceTime,
2123
- layerEnableLayout = _ref7.layerEnableLayout,
2124
- layerServicesLayout = _ref7.layerServicesLayout,
2125
- layerStylesLayout = _ref7.layerStylesLayout,
2126
- layerOpacityLayout = _ref7.layerOpacityLayout,
2127
- layerDimensionLayout = _ref7.layerDimensionLayout,
2128
- layerDeleteLayout = _ref7.layerDeleteLayout,
2129
- layerShowLayerInfoLayout = _ref7.layerShowLayerInfoLayout,
2130
- layerMenuLayout = _ref7.layerMenuLayout,
2131
- layerActiveLayout = _ref7.layerActiveLayout,
2132
- disableActivateLayer = _ref7.disableActivateLayer,
2133
- dragHandle = _ref7.dragHandle,
2134
- layerAcceptanceTimeLayout = _ref7.layerAcceptanceTimeLayout,
2135
- layerMissingDataLayout = _ref7.layerMissingDataLayout,
2136
- layerLoadDurationLayout = _ref7.layerLoadDurationLayout,
2137
- className = _ref7.className;
2198
+ var RowItemCollapse = function RowItemCollapse(_ref7) {
2199
+ var className = _ref7.className,
2200
+ collapsedColumns = _ref7.collapsedColumns,
2201
+ children = _ref7.children;
2202
+ var theme = useTheme();
2203
+ var hoverId = columnClasses.columnHeader + "-" + className;
2204
+ var hoverElement = document.getElementById(hoverId);
2205
+ hoverElement == null || hoverElement.addEventListener('mouseenter', function () {
2206
+ var targetElements = document.getElementsByClassName(className);
2207
+ Array.from(targetElements).forEach(function (element) {
2208
+ // eslint-disable-next-line no-param-reassign
2209
+ element.style.backgroundColor = theme.palette.geowebColors.buttons.icon.mouseOver.fill || 'inherit';
2210
+ });
2211
+ });
2212
+ hoverElement == null || hoverElement.addEventListener('mouseleave', function () {
2213
+ var targetElements = document.getElementsByClassName(className);
2214
+ Array.from(targetElements).forEach(function (element) {
2215
+ // eslint-disable-next-line no-param-reassign
2216
+ element.style.backgroundColor = 'inherit';
2217
+ });
2218
+ });
2219
+ return jsx(Grid2, {
2220
+ className: className,
2221
+ style: Object.assign({
2222
+ height: '32px'
2223
+ }, (collapsedColumns == null ? void 0 : collapsedColumns[className]) && {
2224
+ width: '24px',
2225
+ flexGrow: 0,
2226
+ contentVisibility: 'hidden'
2227
+ }),
2228
+ children: children
2229
+ });
2230
+ };
2231
+ var LayerRowUnstyled = function LayerRowUnstyled(_ref8) {
2232
+ var layerId = _ref8.layerId,
2233
+ layer = _ref8.layer,
2234
+ layerName = _ref8.layerName,
2235
+ services = _ref8.services,
2236
+ mapId = _ref8.mapId,
2237
+ _ref8$onLayerRowClick = _ref8.onLayerRowClick,
2238
+ onLayerRowClick = _ref8$onLayerRowClick === void 0 ? function () {} : _ref8$onLayerRowClick,
2239
+ _ref8$isEnabled = _ref8.isEnabled,
2240
+ isEnabled = _ref8$isEnabled === void 0 ? true : _ref8$isEnabled,
2241
+ _ref8$isLayerMissing = _ref8.isLayerMissing,
2242
+ isLayerMissing = _ref8$isLayerMissing === void 0 ? false : _ref8$isLayerMissing,
2243
+ onLayerEnable = _ref8.onLayerEnable,
2244
+ onLayerChangeName = _ref8.onLayerChangeName,
2245
+ onLayerChangeStyle = _ref8.onLayerChangeStyle,
2246
+ onLayerChangeOpacity = _ref8.onLayerChangeOpacity,
2247
+ _onLayerChangeDimension = _ref8.onLayerChangeDimension,
2248
+ onLayerDelete = _ref8.onLayerDelete,
2249
+ onLayerDuplicate = _ref8.onLayerDuplicate,
2250
+ onChangeAcceptanceTime = _ref8.onChangeAcceptanceTime,
2251
+ layerEnableLayout = _ref8.layerEnableLayout,
2252
+ layerServicesLayout = _ref8.layerServicesLayout,
2253
+ layerStylesLayout = _ref8.layerStylesLayout,
2254
+ layerOpacityLayout = _ref8.layerOpacityLayout,
2255
+ layerDimensionLayout = _ref8.layerDimensionLayout,
2256
+ layerDeleteLayout = _ref8.layerDeleteLayout,
2257
+ layerShowLayerInfoLayout = _ref8.layerShowLayerInfoLayout,
2258
+ layerMenuLayout = _ref8.layerMenuLayout,
2259
+ layerActiveLayout = _ref8.layerActiveLayout,
2260
+ disableActivateLayer = _ref8.disableActivateLayer,
2261
+ dragHandle = _ref8.dragHandle,
2262
+ layerAcceptanceTimeLayout = _ref8.layerAcceptanceTimeLayout,
2263
+ layerMissingDataLayout = _ref8.layerMissingDataLayout,
2264
+ layerLoadDurationLayout = _ref8.layerLoadDurationLayout,
2265
+ className = _ref8.className,
2266
+ collapsedColumns = _ref8.collapsedColumns;
2138
2267
  var _useCoreTranslation2 = useCoreTranslation(),
2139
2268
  t = _useCoreTranslation2.t;
2140
2269
  var onClickRow = function onClickRow() {
@@ -2232,8 +2361,9 @@ var LayerRowUnstyled = function LayerRowUnstyled(_ref7) {
2232
2361
  onChangeEnable: changeEnable,
2233
2362
  onChangeActive: onClickRow
2234
2363
  })
2235
- }), jsx(Grid2, {
2364
+ }), jsx(RowItemCollapse, {
2236
2365
  className: columnClasses.column2,
2366
+ collapsedColumns: collapsedColumns,
2237
2367
  children: layerServicesLayout || jsx(RenderLayers, {
2238
2368
  layerName: layer.name,
2239
2369
  layers: services && layer.service && services[layer.service] && services[layer.service].layers || [],
@@ -2251,20 +2381,23 @@ var LayerRowUnstyled = function LayerRowUnstyled(_ref7) {
2251
2381
  isCompact: true
2252
2382
  })
2253
2383
  }) : jsxs(Fragment, {
2254
- children: [jsx(Grid2, {
2384
+ children: [jsx(RowItemCollapse, {
2255
2385
  className: columnClasses.column3,
2386
+ collapsedColumns: collapsedColumns,
2256
2387
  children: layerStylesLayout || jsx(Styles, {
2257
2388
  style: layer.style,
2258
2389
  onChangeStyle: changeStyle
2259
2390
  })
2260
- }), jsx(Grid2, {
2391
+ }), jsx(RowItemCollapse, {
2261
2392
  className: columnClasses.column4,
2393
+ collapsedColumns: collapsedColumns,
2262
2394
  children: layerOpacityLayout || jsx(Opacity, {
2263
2395
  opacity: layer.opacity,
2264
2396
  onChangeOpacity: changeOpacity
2265
2397
  })
2266
- }), jsx(Grid2, {
2398
+ }), jsx(RowItemCollapse, {
2267
2399
  className: columnClasses.column5,
2400
+ collapsedColumns: collapsedColumns,
2268
2401
  children: layerDimensionLayout || jsx(DimensionSelect, {
2269
2402
  layerDimensions: layerUtils.filterNonTimeDimensions(layer.dimensions),
2270
2403
  onLayerChangeDimension: function onLayerChangeDimension(dimensionName, dimensionValue) {
@@ -2279,8 +2412,9 @@ var LayerRowUnstyled = function LayerRowUnstyled(_ref7) {
2279
2412
  });
2280
2413
  }
2281
2414
  })
2282
- }), jsx(Grid2, {
2415
+ }), jsx(RowItemCollapse, {
2283
2416
  className: columnClasses.acceptanceTime,
2417
+ collapsedColumns: collapsedColumns,
2284
2418
  children: layerAcceptanceTimeLayout || jsx(Acceptance, {
2285
2419
  acceptanceTime: layer.acceptanceTimeInMinutes,
2286
2420
  onChangeAcceptanceTime: changeAcceptanceTime
@@ -2311,10 +2445,10 @@ var LayerRowUnstyled = function LayerRowUnstyled(_ref7) {
2311
2445
  })
2312
2446
  );
2313
2447
  };
2314
- var LayerRow = styled(LayerRowUnstyled)(function (_ref8) {
2315
- var theme = _ref8.theme,
2316
- _ref8$isEnabled = _ref8.isEnabled,
2317
- isEnabled = _ref8$isEnabled === void 0 ? true : _ref8$isEnabled;
2448
+ var LayerRow = styled(LayerRowUnstyled)(function (_ref9) {
2449
+ var theme = _ref9.theme,
2450
+ _ref9$isEnabled = _ref9.isEnabled,
2451
+ isEnabled = _ref9$isEnabled === void 0 ? true : _ref9$isEnabled;
2318
2452
  return {
2319
2453
  '& .MuiInputBase-root': Object.assign({}, tooltipContainerStyles(theme, isEnabled)),
2320
2454
  '& .layerRow': {
@@ -2322,20 +2456,20 @@ var LayerRow = styled(LayerRowUnstyled)(function (_ref8) {
2322
2456
  border: '1px solid',
2323
2457
  borderColor: isEnabled ? theme.palette.geowebColors.layerManager.tableRowDefaultCardContainer.borderColor : theme.palette.geowebColors.layerManager.tableRowDisabledCardContainer.borderColor,
2324
2458
  borderRadius: 1 * theme.shape.borderRadius,
2325
- marginBottom: theme.spacing(0.5),
2326
- minHeight: '34px'
2459
+ marginBottom: theme.spacing(0.25),
2460
+ minHeight: '32px'
2327
2461
  }
2328
2462
  };
2329
2463
  });
2330
- var Accordion = function Accordion(_ref9) {
2331
- var Styles = _ref9.Styles,
2332
- Acceptance = _ref9.Acceptance,
2333
- ShowLayerInfo = _ref9.ShowLayerInfo,
2334
- DeleteLayer = _ref9.DeleteLayer,
2335
- Opacity = _ref9.Opacity,
2336
- layerName = _ref9.layerName,
2337
- LeftButtons = _ref9.LeftButtons,
2338
- LoadDuration = _ref9.LoadDuration;
2464
+ var Accordion = function Accordion(_ref10) {
2465
+ var Styles = _ref10.Styles,
2466
+ Acceptance = _ref10.Acceptance,
2467
+ ShowLayerInfo = _ref10.ShowLayerInfo,
2468
+ DeleteLayer = _ref10.DeleteLayer,
2469
+ Opacity = _ref10.Opacity,
2470
+ layerName = _ref10.layerName,
2471
+ LeftButtons = _ref10.LeftButtons,
2472
+ LoadDuration = _ref10.LoadDuration;
2339
2473
  var _useCoreTranslation3 = useCoreTranslation(),
2340
2474
  t = _useCoreTranslation3.t;
2341
2475
  return jsx(CustomAccordion, {
@@ -3147,7 +3281,7 @@ var LayerInfoDialogConnect = function LayerInfoDialogConnect() {
3147
3281
 
3148
3282
  // Whenever a new layer is added index is updated in the dragHandle, which modifies the testing text. Below we ignore this text, as it serves no other purpose.
3149
3283
  var areEqual = function areEqual(prevProps, nextProps) {
3150
- if (prevProps.layerId === nextProps.layerId && prevProps.mapId === nextProps.mapId && prevProps.settings === nextProps.settings && prevProps.dragHandle.props.isDisabled === nextProps.dragHandle.props.isDisabled && prevProps.dragHandle.props.toolTipTitle === nextProps.dragHandle.props.toolTipTitle) {
3284
+ if (prevProps.layerId === nextProps.layerId && prevProps.mapId === nextProps.mapId && prevProps.settings === nextProps.settings && prevProps.dragHandle.props.isDisabled === nextProps.dragHandle.props.isDisabled && prevProps.dragHandle.props.toolTipTitle === nextProps.dragHandle.props.toolTipTitle && prevProps.collapsedColumns === nextProps.collapsedColumns) {
3151
3285
  return true;
3152
3286
  }
3153
3287
  return false;
@@ -3157,7 +3291,8 @@ var LayerRowConnect = /*#__PURE__*/React.memo(function (_ref) {
3157
3291
  var layerId = _ref.layerId,
3158
3292
  mapId = _ref.mapId,
3159
3293
  dragHandle = _ref.dragHandle,
3160
- settings = _ref.settings;
3294
+ settings = _ref.settings,
3295
+ collapsedColumns = _ref.collapsedColumns;
3161
3296
  var isEnabled = useSelector(function (store) {
3162
3297
  return layerSelectors.getLayerEnabled(store, layerId);
3163
3298
  });
@@ -3249,7 +3384,8 @@ var LayerRowConnect = /*#__PURE__*/React.memo(function (_ref) {
3249
3384
  layerId: layerId
3250
3385
  }),
3251
3386
  disableActivateLayer: settings == null || (_settings$activateLay2 = settings.activateLayer) == null ? void 0 : _settings$activateLay2.isDisabled,
3252
- dragHandle: dragHandle
3387
+ dragHandle: dragHandle,
3388
+ collapsedColumns: collapsedColumns
3253
3389
  });
3254
3390
  }, areEqual);
3255
3391
 
@@ -3293,10 +3429,11 @@ var DragHandle = function DragHandle(_ref) {
3293
3429
  });
3294
3430
  };
3295
3431
 
3296
- var _excluded$4 = ["mapId", "settings"];
3432
+ var _excluded$4 = ["mapId", "settings", "collapsedColumns"];
3297
3433
  var LayerContainerRow = /*#__PURE__*/React.memo(function (_ref) {
3298
3434
  var mapId = _ref.mapId,
3299
3435
  settings = _ref.settings,
3436
+ collapsedColumns = _ref.collapsedColumns,
3300
3437
  gridProps = _objectWithoutPropertiesLoose(_ref, _excluded$4);
3301
3438
  var dispatch = useDispatch();
3302
3439
  var _React$useState = React.useState(false),
@@ -3395,7 +3532,8 @@ var LayerContainerRow = /*#__PURE__*/React.memo(function (_ref) {
3395
3532
  icon: settings == null || (_settings$dragHandle = settings.dragHandle) == null ? void 0 : _settings$dragHandle.icon,
3396
3533
  tooltipTitle: settings == null || (_settings$dragHandle2 = settings.dragHandle) == null ? void 0 : _settings$dragHandle2.tooltipTitle
3397
3534
  }),
3398
- settings: settings
3535
+ settings: settings,
3536
+ collapsedColumns: collapsedColumns
3399
3537
  }, "layerRowConnect-" + layerId);
3400
3538
  });
3401
3539
  React.useEffect(function () {
@@ -4366,7 +4504,6 @@ var BaseLayerRow = function BaseLayerRow(_ref2) {
4366
4504
  }, theme.palette.geowebColors.layerManager.baseLayerRow.root)
4367
4505
  }, gridProps, {
4368
4506
  children: [jsxs(Grid2, {
4369
- className: columnClasses.column1,
4370
4507
  sx: [{
4371
4508
  marginTop: '-2px'
4372
4509
  }, leftButtonsStyle],
@@ -4382,7 +4519,7 @@ var BaseLayerRow = function BaseLayerRow(_ref2) {
4382
4519
  }
4383
4520
  }), settings == null || (_settings$baseLayerRo2 = settings.baseLayerRow) == null ? void 0 : _settings$baseLayerRo2.title]
4384
4521
  }), jsx(Grid2, {
4385
- className: columnClasses.column2,
4522
+ className: columnClasses.baseLayer,
4386
4523
  children: jsx(BaseLayersConnect, {
4387
4524
  mapId: mapId,
4388
4525
  preloadedAvailableBaseLayers: preloadedAvailableBaseLayers,
@@ -4507,7 +4644,6 @@ var ProjectionSelect = function ProjectionSelect(_ref) {
4507
4644
  height: '36px'
4508
4645
  },
4509
4646
  children: [jsx(Grid2, {
4510
- className: columnClasses.column1,
4511
4647
  sx: [{
4512
4648
  marginTop: '-2px'
4513
4649
  }, leftButtonsStyle],
@@ -4520,7 +4656,7 @@ var ProjectionSelect = function ProjectionSelect(_ref) {
4520
4656
  children: jsx(WorldMapProjection, {})
4521
4657
  })
4522
4658
  }), jsx(Grid2, {
4523
- className: columnClasses.column2,
4659
+ className: columnClasses.baseLayer,
4524
4660
  children: jsx(FormControl, {
4525
4661
  style: {
4526
4662
  width: '100%'
@@ -4640,7 +4776,9 @@ var LayerManager = function LayerManager(_ref) {
4640
4776
  settings = _ref.settings,
4641
4777
  _ref$headerSize = _ref.headerSize,
4642
4778
  headerSize = _ref$headerSize === void 0 ? 'medium' : _ref$headerSize,
4643
- addLayerComponent = _ref.addLayerComponent;
4779
+ addLayerComponent = _ref.addLayerComponent,
4780
+ _ref$defaultCollapsed = _ref.defaultCollapsedColumns,
4781
+ defaultCollapsedColumns = _ref$defaultCollapsed === void 0 ? {} : _ref$defaultCollapsed;
4644
4782
  var _useCoreTranslation = useCoreTranslation(),
4645
4783
  t = _useCoreTranslation.t;
4646
4784
  var minSize = {
@@ -4655,6 +4793,10 @@ var LayerManager = function LayerManager(_ref) {
4655
4793
  sizeInState = _React$useState[0],
4656
4794
  setSizeInState = _React$useState[1];
4657
4795
  var dataSize = getLayerManagerSizeValue(sizeInState);
4796
+ var _React$useState2 = React.useState(defaultCollapsedColumns),
4797
+ collapsedColumns = _React$useState2[0],
4798
+ setCollapsedColumns = _React$useState2[1];
4799
+ var stopWheelEventPropagationRef = useWheelStopPropagation();
4658
4800
  return jsx(ToolContainerDraggable, {
4659
4801
  title: nonEmptyTitle,
4660
4802
  startSize: sizeInState,
@@ -4700,6 +4842,7 @@ var LayerManager = function LayerManager(_ref) {
4700
4842
  }
4701
4843
  },
4702
4844
  children: jsxs(Box, {
4845
+ ref: stopWheelEventPropagationRef,
4703
4846
  onKeyDown: function onKeyDown(event) {
4704
4847
  event.stopPropagation();
4705
4848
  },
@@ -4727,10 +4870,16 @@ var LayerManager = function LayerManager(_ref) {
4727
4870
  children: [jsx(DescriptionRow, {
4728
4871
  source: source,
4729
4872
  settings: settings == null ? void 0 : settings.header,
4730
- addLayerComponent: addLayerComponent
4873
+ addLayerComponent: addLayerComponent,
4874
+ onToggleCollapsed: function onToggleCollapsed(name) {
4875
+ var _Object$assign;
4876
+ return setCollapsedColumns(Object.assign({}, collapsedColumns, (_Object$assign = {}, _Object$assign[name] = !collapsedColumns[name], _Object$assign)));
4877
+ },
4878
+ collapsedColumns: collapsedColumns
4731
4879
  }), jsx(LayerContainerRow, {
4732
4880
  mapId: mapId,
4733
- settings: settings == null ? void 0 : settings.content
4881
+ settings: settings == null ? void 0 : settings.content,
4882
+ collapsedColumns: collapsedColumns
4734
4883
  }), jsx(BaseLayerRow, {
4735
4884
  mapId: mapId,
4736
4885
  tooltip: t('layermanager-baselayers-tooltip'),
@@ -5472,6 +5621,10 @@ var MapViewConnect = function MapViewConnect(_ref) {
5472
5621
  var featureLayers = useSelector(function (store) {
5473
5622
  return mapSelectors.getMapFeatureLayers(store, mapId);
5474
5623
  });
5624
+ var linkedFeatures = useSelector(function (store) {
5625
+ var _store$syncronization;
5626
+ return genericSelectors.selectLinkedFeatures((_store$syncronization = store.syncronizationGroupStore) == null ? void 0 : _store$syncronization.linkedState, mapId);
5627
+ });
5475
5628
  var bbox = useSelector(function (store) {
5476
5629
  return mapSelectors.getBbox(store, mapId);
5477
5630
  });
@@ -5622,6 +5775,7 @@ var MapViewConnect = function MapViewConnect(_ref) {
5622
5775
  isGetCapabilitiesLoading: false
5623
5776
  }));
5624
5777
  }, [dispatch, mapId]);
5778
+ var isTimeScrollingEnabled = useSelector(syncGroupsSelectors.isTimeScrollingEnabled);
5625
5779
  return jsx("div", {
5626
5780
  style: {
5627
5781
  height: '100%'
@@ -5629,6 +5783,7 @@ var MapViewConnect = function MapViewConnect(_ref) {
5629
5783
  ref: mapRef,
5630
5784
  children: jsxs(MapView, Object.assign({}, props, {
5631
5785
  mapId: mapId,
5786
+ isTimeScrollingEnabled: isTimeScrollingEnabled,
5632
5787
  srs: srs,
5633
5788
  bbox: bbox,
5634
5789
  mapPinLocation: displayMapPin ? mapPinLocation : undefined,
@@ -5695,6 +5850,11 @@ var MapViewConnect = function MapViewConnect(_ref) {
5695
5850
  });
5696
5851
  }
5697
5852
  }, layer), layer.id);
5853
+ }), linkedFeatures == null ? void 0 : linkedFeatures.map(function (feature) {
5854
+ return jsx(MapViewLayer, {
5855
+ id: "feature-" + (feature == null ? void 0 : feature.id),
5856
+ geojson: feature == null ? void 0 : feature.geoJSON
5857
+ }, feature == null ? void 0 : feature.id);
5698
5858
  }), featureLayers.map(function (layer) {
5699
5859
  return jsx(MapViewLayer, Object.assign({
5700
5860
  id: "featurelayer-" + layer.id,
@@ -6027,6 +6187,7 @@ var GetFeatureInfoDialog = function GetFeatureInfoDialog(_ref) {
6027
6187
  // eslint-disable-next-line react-hooks/exhaustive-deps
6028
6188
  }, [debouncedlayerListString]);
6029
6189
  var hasLayers = layers && layers.length > 0;
6190
+ var stopWheelEventPropagationRef = useWheelStopPropagation();
6030
6191
  return jsx(ToolContainerDraggable, {
6031
6192
  startPosition: {
6032
6193
  right: 10,
@@ -6048,6 +6209,7 @@ var GetFeatureInfoDialog = function GetFeatureInfoDialog(_ref) {
6048
6209
  },
6049
6210
  children: [isOpen && hasLayers && isInitialMapLocationChanged && jsx(Box, {
6050
6211
  "data-testid": "GetFeatureInfoList",
6212
+ ref: stopWheelEventPropagationRef,
6051
6213
  children: layerToUpdateList.map(function (layer) {
6052
6214
  var layerId = layer.layerId,
6053
6215
  title = layer.title,
@@ -6945,7 +7107,9 @@ var TimeSliderLegendConnect = function TimeSliderLegendConnect(_ref) {
6945
7107
  var mapId = _ref.mapId,
6946
7108
  onSetTimeSliderSpan = _ref.onSetTimeSliderSpan,
6947
7109
  unfilteredSelectedTime = _ref.unfilteredSelectedTime,
6948
- setUnfilteredSelectedTime = _ref.setUnfilteredSelectedTime;
7110
+ setUnfilteredSelectedTime = _ref.setUnfilteredSelectedTime,
7111
+ mapWindowRef = _ref.mapWindowRef;
7112
+ var isTimeScrollingEnabled = useSelector(syncGroupsSelectors.isTimeScrollingEnabled);
6949
7113
  var centerTime = useSelector(function (store) {
6950
7114
  return mapSelectors.getMapTimeSliderCenterTime(store, mapId);
6951
7115
  });
@@ -7009,6 +7173,8 @@ var TimeSliderLegendConnect = function TimeSliderLegendConnect(_ref) {
7009
7173
  };
7010
7174
  return jsx(TimeSliderLegend, {
7011
7175
  mapId: mapId,
7176
+ isTimeScrollingEnabled: isTimeScrollingEnabled,
7177
+ mapWindowRef: mapWindowRef,
7012
7178
  centerTime: centerTime,
7013
7179
  timeSliderWidth: timeSliderWidth,
7014
7180
  secondsPerPx: secondsPerPx,
@@ -7161,7 +7327,8 @@ var TimeSliderConnect = function TimeSliderConnect(_ref) {
7161
7327
  var sourceId = _ref.sourceId,
7162
7328
  mapId = _ref.mapId,
7163
7329
  _ref$isAlwaysVisible = _ref.isAlwaysVisible,
7164
- isAlwaysVisible = _ref$isAlwaysVisible === void 0 ? false : _ref$isAlwaysVisible;
7330
+ isAlwaysVisible = _ref$isAlwaysVisible === void 0 ? false : _ref$isAlwaysVisible,
7331
+ mapWindowRef = _ref.mapWindowRef;
7165
7332
  var isTimeSliderHoverOn = useSelector(function (store) {
7166
7333
  return mapSelectors.isTimeSliderHoverOn(store, mapId);
7167
7334
  });
@@ -7324,7 +7491,8 @@ var TimeSliderConnect = function TimeSliderConnect(_ref) {
7324
7491
  mapId: mapId,
7325
7492
  onSetTimeSliderSpan: onSetTimeSliderSpan,
7326
7493
  unfilteredSelectedTime: unfilteredSelectedTime,
7327
- setUnfilteredSelectedTime: setUnfilteredSelectedTime
7494
+ setUnfilteredSelectedTime: setUnfilteredSelectedTime,
7495
+ mapWindowRef: mapWindowRef
7328
7496
  }),
7329
7497
  mapIsActive: mapIsActive,
7330
7498
  onToggleTimeSlider: onToggleTimeSliderVisibility,
@@ -7396,7 +7564,7 @@ var TimeSliderClockConnect = function TimeSliderClockConnect(_ref) {
7396
7564
  });
7397
7565
  };
7398
7566
 
7399
- var _excluded = ["id", "dockedLayerManagerSize", "title", "layers", "dimensions", "shouldAutoUpdate", "shouldAnimate", "shouldAutoFetch", "bbox", "srs", "shouldShowZoomControls", "displayMapPin", "showTimeSlider", "disableTimeSlider", "displayTimeInMap", "displayLayerManagerAndLegendButtonInMap", "displayDimensionSelectButtonInMap", "multiLegend", "shouldShowLayerManager", "shouldShowDockedLayerManager", "showClock", "displayGetFeatureInfoButtonInMap", "shouldDisplayDrawControls", "displaySearchButtonInMap", "mapControls", "children", "shouldDisablePrefetching"];
7567
+ var _excluded = ["id", "dockedLayerManagerSize", "title", "layers", "dimensions", "shouldAutoUpdate", "shouldAnimate", "shouldAutoFetch", "bbox", "srs", "shouldShowZoomControls", "displayMapPin", "showTimeSlider", "disableTimeSlider", "displayTimeInMap", "displayLayerManagerAndLegendButtonInMap", "displayDimensionSelectButtonInMap", "multiLegend", "shouldShowLayerManager", "shouldShowDockedLayerManager", "showClock", "displayGetFeatureInfoButtonInMap", "shouldDisplayDrawControls", "displaySearchButtonInMap", "mapControls", "children", "shouldDisablePrefetching", "tileServerSettings"];
7400
7568
  var titleStyle = function titleStyle(theme) {
7401
7569
  return {
7402
7570
  position: 'absolute',
@@ -7463,12 +7631,14 @@ var ConfigurableMapConnect = function ConfigurableMapConnect(_ref) {
7463
7631
  mapControls = _ref.mapControls,
7464
7632
  children = _ref.children,
7465
7633
  shouldDisablePrefetching = _ref.shouldDisablePrefetching,
7634
+ tileServerSettings = _ref.tileServerSettings,
7466
7635
  props = _objectWithoutPropertiesLoose(_ref, _excluded);
7467
7636
  var dispatch = useDispatch();
7468
7637
  var mapId = React__default.useRef(id || webmapUtils.generateMapId()).current;
7469
7638
  var customLayers = useSelector(function (store) {
7470
7639
  return mapSelectors.getdefaultMapSettingsLayers(store);
7471
7640
  });
7641
+ var mapWindowRef = React__default.useRef(null);
7472
7642
  React__default.useEffect(function () {
7473
7643
  var addBaselayer = !(layers != null && layers.find(function (layer) {
7474
7644
  return layer.layerType === LayerType.baseLayer;
@@ -7541,6 +7711,7 @@ var ConfigurableMapConnect = function ConfigurableMapConnect(_ref) {
7541
7711
  return React__default.useMemo(function () {
7542
7712
  renderCounter.count(ConfigurableMapConnect.name + "_" + mapId);
7543
7713
  return jsxs(Box, {
7714
+ ref: mapWindowRef,
7544
7715
  sx: {
7545
7716
  width: '100%',
7546
7717
  height: '100%',
@@ -7581,7 +7752,8 @@ var ConfigurableMapConnect = function ConfigurableMapConnect(_ref) {
7581
7752
  },
7582
7753
  children: jsx(TimeSliderConnect, {
7583
7754
  mapId: id,
7584
- sourceId: id
7755
+ sourceId: id,
7756
+ mapWindowRef: mapWindowRef
7585
7757
  })
7586
7758
  }), jsx(MapViewConnect, {
7587
7759
  controls: {},
@@ -7590,6 +7762,7 @@ var ConfigurableMapConnect = function ConfigurableMapConnect(_ref) {
7590
7762
  shouldAutoFetch: shouldAutoFetch,
7591
7763
  mapId: mapId,
7592
7764
  shouldDisablePrefetching: shouldDisablePrefetching,
7765
+ tileServerSettings: tileServerSettings,
7593
7766
  children: children
7594
7767
  }), multiLegend && jsx(LegendConnect, {
7595
7768
  showMapId: true,
@@ -7608,7 +7781,7 @@ var ConfigurableMapConnect = function ConfigurableMapConnect(_ref) {
7608
7781
  isDocked: true
7609
7782
  })]
7610
7783
  });
7611
- }, [children, disableTimeSlider, displayDimensionSelectButtonInMap, displayGetFeatureInfoButtonInMap, displayLayerManagerAndLegendButtonInMap, displaySearchButtonInMap, displayTimeInMap, id, mapControls, mapControlsPositionTop, mapId, multiLegend, showClock, shouldAutoFetch, title, shouldDisablePrefetching]);
7784
+ }, [mapId, title, mapControlsPositionTop, displaySearchButtonInMap, id, displayLayerManagerAndLegendButtonInMap, multiLegend, displayDimensionSelectButtonInMap, displayGetFeatureInfoButtonInMap, tileServerSettings, mapControls, disableTimeSlider, displayTimeInMap, shouldAutoFetch, shouldDisablePrefetching, children, showClock]);
7612
7785
  };
7613
7786
 
7614
7787
  var mapBoxStyle = function mapBoxStyle(theme) {
@@ -7632,6 +7805,7 @@ var MultiMapViewConnect = function MultiMapViewConnect(_ref) {
7632
7805
  multiLegend = _ref$multiLegend === void 0 ? false : _ref$multiLegend,
7633
7806
  _ref$showClock = _ref.showClock,
7634
7807
  showClock = _ref$showClock === void 0 ? true : _ref$showClock;
7808
+ var multiMapWindowRef = React__default.useRef(null);
7635
7809
  var dispatch = useDispatch();
7636
7810
  var syncGroupAddTarget = React__default.useCallback(function (payload) {
7637
7811
  dispatch(genericActions.syncGroupAddTarget(payload));
@@ -7671,6 +7845,7 @@ var MultiMapViewConnect = function MultiMapViewConnect(_ref) {
7671
7845
  position: 'relative'
7672
7846
  },
7673
7847
  "data-testid": "MultiMapViewSliderConnect",
7848
+ ref: multiMapWindowRef,
7674
7849
  children: [jsx("div", {
7675
7850
  style: {
7676
7851
  position: 'absolute',
@@ -7682,7 +7857,8 @@ var MultiMapViewConnect = function MultiMapViewConnect(_ref) {
7682
7857
  children: showTimeSlider && jsx(TimeSliderConnect, {
7683
7858
  sourceId: firstMapId,
7684
7859
  mapId: firstMapId,
7685
- isAlwaysVisible: true
7860
+ isAlwaysVisible: true,
7861
+ mapWindowRef: multiMapWindowRef
7686
7862
  })
7687
7863
  }), !multiLegend && jsx(LegendConnect, {
7688
7864
  showMapId: true,
@@ -8108,15 +8284,11 @@ var SyncGroupViewer = function SyncGroupViewer(_ref) {
8108
8284
  syncGroupRemoveGroup = _ref.syncGroupRemoveGroup,
8109
8285
  onMouseDown = _ref.onMouseDown,
8110
8286
  _ref$order = _ref.order,
8111
- order = _ref$order === void 0 ? 0 : _ref$order;
8287
+ order = _ref$order === void 0 ? 0 : _ref$order,
8288
+ isTimeScrollingEnabled = _ref.isTimeScrollingEnabled,
8289
+ toggleTimeScroll = _ref.toggleTimeScroll;
8112
8290
  var _useCoreTranslation = useCoreTranslation(),
8113
8291
  t = _useCoreTranslation.t;
8114
- /*
8115
- _____ Handle Toggle _____
8116
- - Handles checking, unchecking and toggling between in groups
8117
- 1. If checkbox is checked -> uncheck it
8118
- 2. If checkbox is not checked -> check if its checked elsewhere and uncheck it if found
8119
- */
8120
8292
  var _handleToggle = function handleToggle(groupCategory, groupId, sourceId) {
8121
8293
  var _syncGroupViewState$g = syncGroupViewState[groupCategory].groups.find(function (groupObject) {
8122
8294
  return groupObject.id === groupId;
@@ -8131,7 +8303,6 @@ var SyncGroupViewer = function SyncGroupViewer(_ref) {
8131
8303
  });
8132
8304
  } else {
8133
8305
  var groups = syncGroupViewState[groupCategory].groups;
8134
- // Check all other groups and if checkmark is found -> uncheck it
8135
8306
  for (var _iterator = _createForOfIteratorHelperLoose(groups), _step; !(_step = _iterator()).done;) {
8136
8307
  var group = _step.value;
8137
8308
  if (group.id !== groupId && group.selected.includes(sourceId)) {
@@ -8142,7 +8313,6 @@ var SyncGroupViewer = function SyncGroupViewer(_ref) {
8142
8313
  });
8143
8314
  }
8144
8315
  }
8145
- // Add new checkmark
8146
8316
  syncGroupAddTarget({
8147
8317
  groupId: String(groupId),
8148
8318
  targetId: String(sourceId),
@@ -8150,11 +8320,6 @@ var SyncGroupViewer = function SyncGroupViewer(_ref) {
8150
8320
  });
8151
8321
  }
8152
8322
  };
8153
- /*
8154
- _____ Add new group _____
8155
- - Called when user clicks on + in the sidepane
8156
- - Sends an action to add a new group in Redux
8157
- */
8158
8323
  var _addNewGroup = function addNewGroup(groupCategory, groupId) {
8159
8324
  syncGroupsSelector.groupTypes.forEach(function (_ref2) {
8160
8325
  var title = _ref2.title,
@@ -8170,11 +8335,6 @@ var SyncGroupViewer = function SyncGroupViewer(_ref) {
8170
8335
  }
8171
8336
  });
8172
8337
  };
8173
- /*
8174
- _____ Remove Group _____
8175
- - Called when user clicks on the trashcan icon in sidepane
8176
- - Send an action to remove the group in Redux
8177
- */
8178
8338
  var _removeGroup = function removeGroup(groupCategory, groupId) {
8179
8339
  syncGroupsSelector.groupTypes.forEach(function (_ref3) {
8180
8340
  var groupType = _ref3.groupType;
@@ -8188,7 +8348,7 @@ var SyncGroupViewer = function SyncGroupViewer(_ref) {
8188
8348
  if (!syncGroupViewState) {
8189
8349
  return null;
8190
8350
  }
8191
- return jsx(ToolContainerDraggable, {
8351
+ return jsxs(ToolContainerDraggable, {
8192
8352
  title: t('syncgroups-title'),
8193
8353
  startSize: {
8194
8354
  width: 349,
@@ -8199,7 +8359,39 @@ var SyncGroupViewer = function SyncGroupViewer(_ref) {
8199
8359
  "data-testid": "syncGroupViewer",
8200
8360
  onMouseDown: onMouseDown,
8201
8361
  order: order,
8202
- children: jsxs("div", {
8362
+ children: [jsxs(Box, {
8363
+ sx: {
8364
+ display: 'flex',
8365
+ justifyContent: 'center',
8366
+ alignItems: 'center'
8367
+ },
8368
+ children: [jsx(Typography, {
8369
+ sx: {
8370
+ fontSize: 12
8371
+ },
8372
+ children: t('workspace-time-scroll-off')
8373
+ }), jsx(Switch, {
8374
+ checked: isTimeScrollingEnabled,
8375
+ onChange: function onChange() {
8376
+ return toggleTimeScroll({
8377
+ isTimeScrollingEnabled: !isTimeScrollingEnabled
8378
+ });
8379
+ }
8380
+ }), jsx(Typography, {
8381
+ sx: {
8382
+ fontSize: 12
8383
+ },
8384
+ children: t('workspace-time-scroll-on')
8385
+ }), jsx(Tooltip, {
8386
+ title: t('workspace-time-scroll-info'),
8387
+ placement: "bottom-start",
8388
+ children: jsx(CustomIconButton, {
8389
+ variant: "flat",
8390
+ "aria-label": "time scroll info",
8391
+ children: jsx(Info, {})
8392
+ })
8393
+ })]
8394
+ }), jsxs("div", {
8203
8395
  children: [jsx(SyncGroupList, {
8204
8396
  viewStateData: syncGroupViewState.zoompane,
8205
8397
  title: t('syncgroups-zoom'),
@@ -8237,16 +8429,16 @@ var SyncGroupViewer = function SyncGroupViewer(_ref) {
8237
8429
  return _removeGroup('level', groupId);
8238
8430
  }
8239
8431
  })]
8240
- })
8432
+ })]
8241
8433
  });
8242
8434
  };
8243
8435
 
8244
8436
  var SyncGroupViewerConnect = function SyncGroupViewerConnect() {
8245
8437
  var dispatch = useDispatch();
8246
- // TODO
8247
- // Improve the selector to prevent re-renders
8248
- // For example dusting anination syncgroups should not re-render
8438
+ var _useCoreTranslation = useCoreTranslation(),
8439
+ t = _useCoreTranslation.t;
8249
8440
  var viewState = useSelector(syncGroupsSelectors.syncGroupGetViewState);
8441
+ var isTimeScrollingEnabled = useSelector(syncGroupsSelectors.isTimeScrollingEnabled);
8250
8442
  var syncGroupAddGroup = React.useCallback(function (payload) {
8251
8443
  dispatch(genericActions.syncGroupAddGroup(payload));
8252
8444
  }, [dispatch]);
@@ -8264,6 +8456,14 @@ var SyncGroupViewerConnect = function SyncGroupViewerConnect() {
8264
8456
  isDialogOpen = _useSetupDialog.isDialogOpen,
8265
8457
  onCloseDialog = _useSetupDialog.onCloseDialog,
8266
8458
  setDialogOrder = _useSetupDialog.setDialogOrder;
8459
+ var toggleTimeScroll = React.useCallback(function (payload) {
8460
+ var message = {
8461
+ type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
8462
+ key: payload.isTimeScrollingEnabled === true ? t('workspace-time-scroll-toggle-on') : t('workspace-time-scroll-toggle-off')
8463
+ };
8464
+ dispatch(snackbarActions.openSnackbar(message));
8465
+ dispatch(syncGroupsActions.syncGroupToggleIsTimeScrollingEnabled(payload));
8466
+ }, [dispatch, t]);
8267
8467
  return jsx(SyncGroupViewer, {
8268
8468
  onClose: onCloseDialog,
8269
8469
  isOpen: isDialogOpen,
@@ -8273,7 +8473,9 @@ var SyncGroupViewerConnect = function SyncGroupViewerConnect() {
8273
8473
  syncGroupAddGroup: syncGroupAddGroup,
8274
8474
  syncGroupRemoveGroup: syncGroupRemoveGroup,
8275
8475
  order: dialogOrder,
8276
- onMouseDown: setDialogOrder
8476
+ onMouseDown: setDialogOrder,
8477
+ isTimeScrollingEnabled: isTimeScrollingEnabled,
8478
+ toggleTimeScroll: toggleTimeScroll
8277
8479
  });
8278
8480
  };
8279
8481