@opengeoweb/core 9.1.0 → 9.2.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,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import React__default, { useState, forwardRef, useContext, useRef, useEffect, useLayoutEffect } from 'react';
2
+ import React__default, { useState, useCallback, forwardRef, useContext, useRef, useEffect, useLayoutEffect } from 'react';
3
3
  import { Grid, Box as Box$2, MenuItem, Typography, useTheme as useTheme$2, Button, Popper, ListItemText, ListItemIcon, FormControl, InputLabel, Paper, List, ListItemButton, CircularProgress, ListSubheader, Dialog, DialogTitle, DialogContent, DialogContentText, TextField, InputAdornment, DialogActions, LinearProgress, styled as styled$1, Slider, Checkbox, Card, IconButton, Select, CardContent, RadioGroup, FormControlLabel, Radio, ToggleButtonGroup, ToggleButton, Divider, Tooltip, ButtonGroup } from '@mui/material';
4
4
  import { CustomIconButton, TooltipSelect, AlertIcon, useControlledTooltip, CustomTooltip, tooltipContainerStyles, sliderHeaderStyle, CustomSlider, ToggleMenu, AlertBanner, CustomAccordion, calculateStartSize, ToolContainerDraggable, dateUtils, withEggs } from '@opengeoweb/shared';
5
5
  import { LayerSelectButtonConnect, LayerInfoButton, LayerInfoButtonConnect, getUserAddedServices, layerSelectConfig } from '@opengeoweb/layer-select';
@@ -3851,6 +3851,139 @@ _extends$3(Remove, {
3851
3851
  Sortable.mount(new AutoScrollPlugin());
3852
3852
  Sortable.mount(Remove, Revert);
3853
3853
 
3854
+ var DimensionSelectValue = function DimensionSelectValue(_ref) {
3855
+ var isEnabled = _ref.isEnabled,
3856
+ tooltip = _ref.tooltip,
3857
+ selectedDimension = _ref.selectedDimension,
3858
+ icon = _ref.icon,
3859
+ onLayerChangeDimension = _ref.onLayerChangeDimension,
3860
+ valueMappings = _ref.valueMappings,
3861
+ hideLatestDuplicate = _ref.hideLatestDuplicate,
3862
+ setUseLatestReferenceTime = _ref.setUseLatestReferenceTime,
3863
+ useLatestReferenceTime = _ref.useLatestReferenceTime;
3864
+ var _a;
3865
+ var dimensionValuesRaw = (_a = selectedDimension === null || selectedDimension === void 0 ? void 0 : selectedDimension.values) === null || _a === void 0 ? void 0 : _a.split(',').slice(0, 100).reverse();
3866
+ if (!(selectedDimension === null || selectedDimension === void 0 ? void 0 : selectedDimension.name) || !(dimensionValuesRaw === null || dimensionValuesRaw === void 0 ? void 0 : dimensionValuesRaw.length)) {
3867
+ return null;
3868
+ }
3869
+ var isReferenceTimeDimensionAndUseLatestIsAvailable = selectedDimension.name === 'reference_time' && useLatestReferenceTime !== undefined;
3870
+ var latestValue = hideLatestDuplicate && isReferenceTimeDimensionAndUseLatestIsAvailable ? dimensionValuesRaw.shift() : dimensionValuesRaw[0];
3871
+ var setDimensionValue = function setDimensionValue(dimensionValue) {
3872
+ if (isReferenceTimeDimensionAndUseLatestIsAvailable) {
3873
+ if (dimensionValue === 'Latest') {
3874
+ setUseLatestReferenceTime === null || setUseLatestReferenceTime === void 0 ? void 0 : setUseLatestReferenceTime(true);
3875
+ onLayerChangeDimension(selectedDimension.name, dimensionValuesRaw[0], layerTypes.LayerActionOrigin.layerManager);
3876
+ return;
3877
+ }
3878
+ setUseLatestReferenceTime === null || setUseLatestReferenceTime === void 0 ? void 0 : setUseLatestReferenceTime(false);
3879
+ }
3880
+ onLayerChangeDimension(selectedDimension.name, dimensionValue, layerTypes.LayerActionOrigin.layerManager);
3881
+ };
3882
+ var dimensionValues = isReferenceTimeDimensionAndUseLatestIsAvailable ? ['Latest'].concat(_toConsumableArray(dimensionValuesRaw)) : dimensionValuesRaw.slice(0, 100).reverse();
3883
+ var isLatest = isReferenceTimeDimensionAndUseLatestIsAvailable && useLatestReferenceTime && selectedDimension.maxValue === selectedDimension.currentValue;
3884
+ return /*#__PURE__*/React__default.createElement(TooltipSelect, {
3885
+ disableUnderline: true,
3886
+ tooltip: tooltip,
3887
+ isEnabled: isEnabled,
3888
+ value: isLatest ? 'Latest' : selectedDimension.currentValue,
3889
+ list: dimensionValues.map(function (dimensionValue) {
3890
+ return {
3891
+ value: dimensionValue
3892
+ };
3893
+ }),
3894
+ currentIndex: isLatest ? 0 : dimensionValues.findIndex(function (dimensionValue) {
3895
+ return dimensionValue === selectedDimension.currentValue;
3896
+ }),
3897
+ onChange: function onChange(event) {
3898
+ event.stopPropagation();
3899
+ setDimensionValue(event.target.value);
3900
+ },
3901
+ onChangeMouseWheel: function onChangeMouseWheel(event) {
3902
+ setDimensionValue(event.value);
3903
+ },
3904
+ style: {
3905
+ maxWidth: '50%'
3906
+ },
3907
+ IconComponent: icon
3908
+ }, /*#__PURE__*/React__default.createElement(MenuItem, {
3909
+ disabled: true
3910
+ }, "Dimension value (", dimensionValues.length, " options)"), dimensionValues.map(function (dimensionValue) {
3911
+ var _a;
3912
+ return /*#__PURE__*/React__default.createElement(MenuItem, {
3913
+ key: dimensionValue,
3914
+ value: dimensionValue
3915
+ }, ((_a = valueMappings === null || valueMappings === void 0 ? void 0 : valueMappings[selectedDimension.name]) === null || _a === void 0 ? void 0 : _a.call(valueMappings, dimensionValue, isReferenceTimeDimensionAndUseLatestIsAvailable ? latestValue : undefined)) || /*#__PURE__*/React__default.createElement("span", {
3916
+ style: {
3917
+ whiteSpace: 'nowrap'
3918
+ }
3919
+ }, dimensionValue, dimensionValue !== 'Latest' && /*#__PURE__*/React__default.createElement("i", null, " ", selectedDimension.units)));
3920
+ }));
3921
+ };
3922
+
3923
+ /* *
3924
+ * Licensed under the Apache License, Version 2.0 (the "License");
3925
+ * you may not use this file except in compliance with the License.
3926
+ * You may obtain a copy of the License at
3927
+ *
3928
+ * http://www.apache.org/licenses/LICENSE-2.0
3929
+ *
3930
+ * Unless required by applicable law or agreed to in writing, software
3931
+ * distributed under the License is distributed on an "AS IS" BASIS,
3932
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3933
+ * See the License for the specific language governing permissions and
3934
+ * limitations under the License.
3935
+ *
3936
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
3937
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
3938
+ * */
3939
+ var DimensionSelectName = function DimensionSelectName(_ref) {
3940
+ var selectedDimensionName = _ref.selectedDimensionName,
3941
+ setSelectedDimensionName = _ref.setSelectedDimensionName,
3942
+ icon = _ref.icon,
3943
+ nameMappings = _ref.nameMappings,
3944
+ tooltip = _ref.tooltip,
3945
+ isEnabled = _ref.isEnabled,
3946
+ dimensionNames = _ref.dimensionNames;
3947
+ return /*#__PURE__*/React__default.createElement(TooltipSelect, {
3948
+ disableUnderline: true,
3949
+ tooltip: tooltip,
3950
+ isEnabled: isEnabled,
3951
+ value: selectedDimensionName,
3952
+ list: dimensionNames.map(function (name) {
3953
+ return {
3954
+ value: name
3955
+ };
3956
+ }),
3957
+ currentIndex: dimensionNames.findIndex(function (name) {
3958
+ return name === selectedDimensionName;
3959
+ }),
3960
+ onChange: function onChange(event) {
3961
+ event.stopPropagation();
3962
+ setSelectedDimensionName(event.target.value);
3963
+ },
3964
+ onChangeMouseWheel: function onChangeMouseWheel(event) {
3965
+ setSelectedDimensionName(event.value);
3966
+ },
3967
+ style: {
3968
+ maxWidth: '50%'
3969
+ },
3970
+ IconComponent: icon
3971
+ }, /*#__PURE__*/React__default.createElement(MenuItem, {
3972
+ disabled: true
3973
+ }, "Dimension"), dimensionNames.map(function (name) {
3974
+ return /*#__PURE__*/React__default.createElement(MenuItem, {
3975
+ key: name,
3976
+ value: name
3977
+ }, (nameMappings === null || nameMappings === void 0 ? void 0 : nameMappings[name]) || name);
3978
+ }));
3979
+ };
3980
+
3981
+ var defaultDimensionNameTooltip = function defaultDimensionNameTooltip(selectedDimension) {
3982
+ return "Dimensions: ".concat(selectedDimension.name);
3983
+ };
3984
+ var defaultDimensionValueTooltip = function defaultDimensionValueTooltip(selectedDimension) {
3985
+ return "Dimensions: ".concat(selectedDimension.name, " ").concat(selectedDimension.currentValue, " ").concat(selectedDimension.units);
3986
+ };
3854
3987
  var DimensionSelect = function DimensionSelect(_ref) {
3855
3988
  var onLayerChangeDimension = _ref.onLayerChangeDimension,
3856
3989
  _ref$layerDimensions = _ref.layerDimensions,
@@ -3860,13 +3993,12 @@ var DimensionSelect = function DimensionSelect(_ref) {
3860
3993
  icon = _ref.icon,
3861
3994
  nameMappings = _ref.nameMappings,
3862
3995
  valueMappings = _ref.valueMappings,
3863
- _ref$tooltipPrefix = _ref.tooltipPrefix,
3864
- tooltipPrefix = _ref$tooltipPrefix === void 0 ? 'Dimensions: ' : _ref$tooltipPrefix,
3996
+ tooltipGenerator = _ref.tooltipGenerator,
3865
3997
  setUseLatestReferenceTime = _ref.setUseLatestReferenceTime,
3866
3998
  useLatestReferenceTime = _ref.useLatestReferenceTime,
3867
3999
  SingleValueComponent = _ref.SingleValueComponent,
3868
- latestLabel = _ref.latestLabel;
3869
- var _a, _b;
4000
+ hideLatestDuplicate = _ref.hideLatestDuplicate;
4001
+ var _a, _b, _c, _d, _e, _f;
3870
4002
  var _useState = useState((_a = layerDimensions === null || layerDimensions === void 0 ? void 0 : layerDimensions[0]) === null || _a === void 0 ? void 0 : _a.name),
3871
4003
  _useState2 = _slicedToArray(_useState, 2),
3872
4004
  selectedDimensionName = _useState2[0],
@@ -3889,6 +4021,10 @@ var DimensionSelect = function DimensionSelect(_ref) {
3889
4021
  }
3890
4022
  var collapseDimensionDropdown = SingleValueComponent && layerDimensions.length === 1;
3891
4023
  var collapseValueDropdown = SingleValueComponent && ((_b = selectedDimension === null || selectedDimension === void 0 ? void 0 : selectedDimension.values) === null || _b === void 0 ? void 0 : _b.length) === 1;
4024
+ var defaultNameTooltip = (_c = defaultDimensionNameTooltip(selectedDimension)) !== null && _c !== void 0 ? _c : '';
4025
+ var defaultValueTooltip = (_d = defaultDimensionValueTooltip(selectedDimension)) !== null && _d !== void 0 ? _d : '';
4026
+ var nameTooltip = (_e = tooltipGenerator === null || tooltipGenerator === void 0 ? void 0 : tooltipGenerator(selectedDimension)) !== null && _e !== void 0 ? _e : defaultNameTooltip;
4027
+ var valueTooltip = (_f = tooltipGenerator === null || tooltipGenerator === void 0 ? void 0 : tooltipGenerator(selectedDimension, true)) !== null && _f !== void 0 ? _f : defaultValueTooltip;
3892
4028
  return /*#__PURE__*/React.createElement(Grid, {
3893
4029
  container: true,
3894
4030
  direction: "row",
@@ -3901,11 +4037,11 @@ var DimensionSelect = function DimensionSelect(_ref) {
3901
4037
  nameMappings: nameMappings,
3902
4038
  valueMappings: valueMappings,
3903
4039
  position: "dimension"
3904
- })) : /*#__PURE__*/React.createElement(SelectDimension, {
4040
+ })) : /*#__PURE__*/React.createElement(DimensionSelectName, {
3905
4041
  selectedDimensionName: selectedDimensionName,
3906
4042
  setSelectedDimensionName: setSelectedDimensionName,
3907
4043
  dimensionNames: dimensionNames,
3908
- tooltipPrefix: tooltipPrefix,
4044
+ tooltip: nameTooltip,
3909
4045
  isEnabled: isEnabled,
3910
4046
  icon: icon,
3911
4047
  nameMappings: nameMappings
@@ -3913,127 +4049,18 @@ var DimensionSelect = function DimensionSelect(_ref) {
3913
4049
  nameMappings: nameMappings,
3914
4050
  valueMappings: valueMappings,
3915
4051
  position: "value"
3916
- })) : /*#__PURE__*/React.createElement(SelectDimensionValue, {
4052
+ })) : /*#__PURE__*/React.createElement(DimensionSelectValue, {
3917
4053
  selectedDimension: selectedDimension,
3918
4054
  onLayerChangeDimension: onLayerChangeDimension,
3919
- tooltipPrefix: tooltipPrefix,
4055
+ tooltip: valueTooltip,
3920
4056
  isEnabled: isEnabled,
4057
+ hideLatestDuplicate: hideLatestDuplicate,
3921
4058
  icon: icon,
3922
4059
  valueMappings: valueMappings,
3923
4060
  setUseLatestReferenceTime: setUseLatestReferenceTime,
3924
- useLatestReferenceTime: useLatestReferenceTime,
3925
- latestLabel: latestLabel
4061
+ useLatestReferenceTime: useLatestReferenceTime
3926
4062
  })));
3927
4063
  };
3928
- var SelectDimension = function SelectDimension(_ref2) {
3929
- var selectedDimensionName = _ref2.selectedDimensionName,
3930
- setSelectedDimensionName = _ref2.setSelectedDimensionName,
3931
- icon = _ref2.icon,
3932
- nameMappings = _ref2.nameMappings,
3933
- tooltipPrefix = _ref2.tooltipPrefix,
3934
- isEnabled = _ref2.isEnabled,
3935
- dimensionNames = _ref2.dimensionNames;
3936
- return /*#__PURE__*/React.createElement(TooltipSelect, {
3937
- disableUnderline: true,
3938
- tooltip: "".concat(tooltipPrefix).concat(selectedDimensionName),
3939
- isEnabled: isEnabled,
3940
- value: selectedDimensionName,
3941
- list: dimensionNames.map(function (name) {
3942
- return {
3943
- value: name
3944
- };
3945
- }),
3946
- currentIndex: dimensionNames.findIndex(function (name) {
3947
- return name === selectedDimensionName;
3948
- }),
3949
- onChange: function onChange(event) {
3950
- event.stopPropagation();
3951
- setSelectedDimensionName(event.target.value);
3952
- },
3953
- onChangeMouseWheel: function onChangeMouseWheel(event) {
3954
- setSelectedDimensionName(event.value);
3955
- },
3956
- style: {
3957
- maxWidth: '50%'
3958
- },
3959
- IconComponent: icon
3960
- }, /*#__PURE__*/React.createElement(MenuItem, {
3961
- disabled: true
3962
- }, "Dimension"), dimensionNames.map(function (name) {
3963
- return /*#__PURE__*/React.createElement(MenuItem, {
3964
- key: name,
3965
- value: name
3966
- }, (nameMappings === null || nameMappings === void 0 ? void 0 : nameMappings[name]) || name);
3967
- }));
3968
- };
3969
- var SelectDimensionValue = function SelectDimensionValue(_ref3) {
3970
- var isEnabled = _ref3.isEnabled,
3971
- tooltipPrefix = _ref3.tooltipPrefix,
3972
- selectedDimension = _ref3.selectedDimension,
3973
- icon = _ref3.icon,
3974
- onLayerChangeDimension = _ref3.onLayerChangeDimension,
3975
- valueMappings = _ref3.valueMappings,
3976
- setUseLatestReferenceTime = _ref3.setUseLatestReferenceTime,
3977
- useLatestReferenceTime = _ref3.useLatestReferenceTime,
3978
- _ref3$latestLabel = _ref3.latestLabel,
3979
- latestLabel = _ref3$latestLabel === void 0 ? 'Latest' : _ref3$latestLabel;
3980
- var _a;
3981
- var dimensionValuesRaw = (_a = selectedDimension === null || selectedDimension === void 0 ? void 0 : selectedDimension.values) === null || _a === void 0 ? void 0 : _a.split(',').slice(0, 100).reverse();
3982
- if (!(selectedDimension === null || selectedDimension === void 0 ? void 0 : selectedDimension.name) || !(dimensionValuesRaw === null || dimensionValuesRaw === void 0 ? void 0 : dimensionValuesRaw.length)) {
3983
- return null;
3984
- }
3985
- var isReferenceTimeDimensionAndUseLatestIsAvailable = selectedDimension.name === 'reference_time' && useLatestReferenceTime !== undefined;
3986
- var setDimensionValue = function setDimensionValue(dimensionValue) {
3987
- if (isReferenceTimeDimensionAndUseLatestIsAvailable) {
3988
- if (dimensionValue === latestLabel) {
3989
- setUseLatestReferenceTime === null || setUseLatestReferenceTime === void 0 ? void 0 : setUseLatestReferenceTime(true);
3990
- onLayerChangeDimension(selectedDimension.name, dimensionValuesRaw[0], layerTypes.LayerActionOrigin.layerManager);
3991
- return;
3992
- }
3993
- setUseLatestReferenceTime === null || setUseLatestReferenceTime === void 0 ? void 0 : setUseLatestReferenceTime(false);
3994
- }
3995
- onLayerChangeDimension(selectedDimension.name, dimensionValue, layerTypes.LayerActionOrigin.layerManager);
3996
- };
3997
- var dimensionValues = isReferenceTimeDimensionAndUseLatestIsAvailable ? [latestLabel].concat(_toConsumableArray(dimensionValuesRaw)) : dimensionValuesRaw.slice(0, 100).reverse();
3998
- var isLatest = isReferenceTimeDimensionAndUseLatestIsAvailable && useLatestReferenceTime && selectedDimension.maxValue === selectedDimension.currentValue;
3999
- return /*#__PURE__*/React.createElement(TooltipSelect, {
4000
- disableUnderline: true,
4001
- tooltip: "".concat(tooltipPrefix).concat(selectedDimension.name, " ").concat(selectedDimension.currentValue, " ").concat(selectedDimension.units),
4002
- isEnabled: isEnabled,
4003
- value: isLatest ? latestLabel : selectedDimension.currentValue,
4004
- list: dimensionValues.map(function (dimensionValue) {
4005
- return {
4006
- value: dimensionValue
4007
- };
4008
- }),
4009
- currentIndex: isLatest ? 0 : dimensionValues.findIndex(function (dimensionValue) {
4010
- return dimensionValue === selectedDimension.currentValue;
4011
- }),
4012
- onChange: function onChange(event) {
4013
- event.stopPropagation();
4014
- setDimensionValue(event.target.value);
4015
- },
4016
- onChangeMouseWheel: function onChangeMouseWheel(event) {
4017
- setDimensionValue(event.value);
4018
- },
4019
- style: {
4020
- maxWidth: '50%'
4021
- },
4022
- IconComponent: icon
4023
- }, /*#__PURE__*/React.createElement(MenuItem, {
4024
- disabled: true
4025
- }, "Dimension value (", dimensionValues.length, " options)"), dimensionValues.map(function (dimensionValue) {
4026
- var _a;
4027
- return /*#__PURE__*/React.createElement(MenuItem, {
4028
- key: dimensionValue,
4029
- value: dimensionValue
4030
- }, ((_a = valueMappings === null || valueMappings === void 0 ? void 0 : valueMappings[selectedDimension.name]) === null || _a === void 0 ? void 0 : _a.call(valueMappings, dimensionValue)) || /*#__PURE__*/React.createElement("span", {
4031
- style: {
4032
- whiteSpace: 'nowrap'
4033
- }
4034
- }, dimensionValue, dimensionValue !== latestLabel && /*#__PURE__*/React.createElement("i", null, " ", selectedDimension.units)));
4035
- }));
4036
- };
4037
4064
 
4038
4065
  var getRenderLayersValues = function getRenderLayersValues(layerName, layers) {
4039
4066
  var serviceLayer = layers.find(function (l) {
@@ -5253,8 +5280,8 @@ var OpacitySelectConnect = function OpacitySelectConnect(_ref) {
5253
5280
  * See the License for the specific language governing permissions and
5254
5281
  * limitations under the License.
5255
5282
  *
5256
- * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
5257
- * Copyright 2021 - Finnish Meteorological Institute (FMI)
5283
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
5284
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
5258
5285
  * */
5259
5286
  var useLayerDimensions = function useLayerDimensions(layerId, mapId) {
5260
5287
  var dispatch = useDispatch();
@@ -5264,7 +5291,7 @@ var useLayerDimensions = function useLayerDimensions(layerId, mapId) {
5264
5291
  var isLayerEnabled = useSelector(function (store) {
5265
5292
  return layerSelectors.getLayerEnabled(store, layerId);
5266
5293
  });
5267
- var layerChangeDimension = React.useCallback(function (_ref) {
5294
+ var layerChangeDimension = useCallback(function (_ref) {
5268
5295
  var dimension = _ref.dimension,
5269
5296
  origin = _ref.origin;
5270
5297
  return dispatch(layerActions.layerChangeDimension({
@@ -5280,13 +5307,7 @@ var useLayerDimensions = function useLayerDimensions(layerId, mapId) {
5280
5307
  layerChangeDimension: layerChangeDimension
5281
5308
  };
5282
5309
  };
5283
- var DimensionSelectConnect = function DimensionSelectConnect(_ref2) {
5284
- var layerId = _ref2.layerId,
5285
- mapId = _ref2.mapId;
5286
- var _useLayerDimensions = useLayerDimensions(layerId, mapId),
5287
- layerDimensions = _useLayerDimensions.layerDimensions,
5288
- isLayerEnabled = _useLayerDimensions.isLayerEnabled,
5289
- layerChangeDimension = _useLayerDimensions.layerChangeDimension;
5310
+ var useReferenceTimeWithLatestOption = function useReferenceTimeWithLatestOption(layerId) {
5290
5311
  var useLatestReferenceTime = useSelector(function (store) {
5291
5312
  return layerSelectors.getUseLatestReferenceTime(store, layerId);
5292
5313
  });
@@ -5297,6 +5318,38 @@ var DimensionSelectConnect = function DimensionSelectConnect(_ref2) {
5297
5318
  useLatestReferenceTime: useLatestReferenceTime
5298
5319
  }));
5299
5320
  };
5321
+ return {
5322
+ useLatestReferenceTime: useLatestReferenceTime,
5323
+ setUseLatestReferenceTime: setUseLatestReferenceTime
5324
+ };
5325
+ };
5326
+
5327
+ /* *
5328
+ * Licensed under the Apache License, Version 2.0 (the "License");
5329
+ * you may not use this file except in compliance with the License.
5330
+ * You may obtain a copy of the License at
5331
+ *
5332
+ * http://www.apache.org/licenses/LICENSE-2.0
5333
+ *
5334
+ * Unless required by applicable law or agreed to in writing, software
5335
+ * distributed under the License is distributed on an "AS IS" BASIS,
5336
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5337
+ * See the License for the specific language governing permissions and
5338
+ * limitations under the License.
5339
+ *
5340
+ * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
5341
+ * Copyright 2021 - Finnish Meteorological Institute (FMI)
5342
+ * */
5343
+ var DimensionSelectConnect = function DimensionSelectConnect(_ref) {
5344
+ var layerId = _ref.layerId,
5345
+ mapId = _ref.mapId;
5346
+ var _useLayerDimensions = useLayerDimensions(layerId, mapId),
5347
+ layerDimensions = _useLayerDimensions.layerDimensions,
5348
+ isLayerEnabled = _useLayerDimensions.isLayerEnabled,
5349
+ layerChangeDimension = _useLayerDimensions.layerChangeDimension;
5350
+ var _useReferenceTimeWith = useReferenceTimeWithLatestOption(layerId),
5351
+ useLatestReferenceTime = _useReferenceTimeWith.useLatestReferenceTime,
5352
+ setUseLatestReferenceTime = _useReferenceTimeWith.setUseLatestReferenceTime;
5300
5353
  if (!layerDimensions.length || !layerId) {
5301
5354
  return null;
5302
5355
  }
@@ -10541,12 +10594,14 @@ var CustomDimensionSelectConnect = function CustomDimensionSelectConnect(_a) {
10541
10594
  var layerId = _a.layerId,
10542
10595
  mapId = _a.mapId,
10543
10596
  dimensionsToShow = _a.dimensionsToShow,
10544
- SingleValueComponent = _a.SingleValueComponent,
10545
- props = __rest(_a, ["layerId", "mapId", "dimensionsToShow", "SingleValueComponent"]);
10597
+ props = __rest(_a, ["layerId", "mapId", "dimensionsToShow"]);
10546
10598
  var _useLayerDimensions = useLayerDimensions(layerId, mapId),
10547
10599
  layerDimensions = _useLayerDimensions.layerDimensions,
10548
10600
  isLayerEnabled = _useLayerDimensions.isLayerEnabled,
10549
10601
  layerChangeDimension = _useLayerDimensions.layerChangeDimension;
10602
+ var _useReferenceTimeWith = useReferenceTimeWithLatestOption(layerId),
10603
+ useLatestReferenceTime = _useReferenceTimeWith.useLatestReferenceTime,
10604
+ setUseLatestReferenceTime = _useReferenceTimeWith.setUseLatestReferenceTime;
10550
10605
  var filteredDimensions = dimensionsToShow ? dimensionsToShow.map(function (dimensionName) {
10551
10606
  return layerDimensions.find(function (dimension) {
10552
10607
  return dimension.name === dimensionName;
@@ -10554,7 +10609,6 @@ var CustomDimensionSelectConnect = function CustomDimensionSelectConnect(_a) {
10554
10609
  }).filter(Boolean) : layerDimensions;
10555
10610
  return /*#__PURE__*/React.createElement(DimensionSelect, Object.assign({
10556
10611
  layerDimensions: filteredDimensions,
10557
- SingleValueComponent: SingleValueComponent,
10558
10612
  onLayerChangeDimension: function onLayerChangeDimension(dimensionName, dimensionValue, origin) {
10559
10613
  var dimension = {
10560
10614
  name: dimensionName,
@@ -10565,7 +10619,9 @@ var CustomDimensionSelectConnect = function CustomDimensionSelectConnect(_a) {
10565
10619
  origin: origin
10566
10620
  });
10567
10621
  },
10568
- isEnabled: isLayerEnabled
10622
+ isEnabled: isLayerEnabled,
10623
+ useLatestReferenceTime: useLatestReferenceTime,
10624
+ setUseLatestReferenceTime: setUseLatestReferenceTime
10569
10625
  }, props));
10570
10626
  };
10571
10627
 
@@ -11403,7 +11459,7 @@ var preset = {
11403
11459
  timeSeriesServices: [
11404
11460
  {
11405
11461
  name: "KNMI",
11406
- url: "https://gw-edr-dev-add-cfn-t3.pub.dev.knmi.cloud/edr",
11462
+ url: "https://gw-edr-dev-add-cfn.pub.dev.knmi.cloud/edr",
11407
11463
  id: "knmi",
11408
11464
  description: "KNMI EDR",
11409
11465
  type: "EDR",
@@ -13717,7 +13773,7 @@ var getLayersToUpdate = function getLayersToUpdate(layers, mapId) {
13717
13773
  });
13718
13774
  return {
13719
13775
  layerId: layer.id,
13720
- url: wmjsMap.getWMSGetFeatureInfoRequestURL(wmjsLayer, "".concat(wmjsMap.getMapPin().getXY().x), "".concat(wmjsMap.getMapPin().getXY().y), 'text/html'),
13776
+ url: wmjsMap.getWMSGetFeatureInfoRequestURL(wmjsLayer, wmjsMap.getMapPin().getXY().x, wmjsMap.getMapPin().getXY().y, 'text/html'),
13721
13777
  title: getTitle$1(layer.id)
13722
13778
  };
13723
13779
  });
@@ -15792,10 +15848,10 @@ var circleDrawFunction = function circleDrawFunction(args) {
15792
15848
  var MyMapLocation = function MyMapLocation(_ref) {
15793
15849
  var mapId = _ref.mapId;
15794
15850
  var dispatch = useDispatch();
15795
- var layers = useSelector(function (store) {
15796
- return layerSelectors.getLayers(store);
15851
+ var layersBelongsToCurrentMapId = useSelector(function (store) {
15852
+ return layerSelectors.getLayersByMapId(store, mapId || '');
15797
15853
  });
15798
- var layerLocation = layers.find(function (layer) {
15854
+ var layerLocation = layersBelongsToCurrentMapId.find(function (layer) {
15799
15855
  var _a;
15800
15856
  if (layer.geojson && layer.geojson.features[0] && layer.geojson.features[0].properties && ((_a = layer.geojson.features[0].properties) === null || _a === void 0 ? void 0 : _a.name)) {
15801
15857
  if (layer.geojson.features[0].properties.name === MY_LOCATION) {
@@ -15846,7 +15902,7 @@ var MyMapLocation = function MyMapLocation(_ref) {
15846
15902
  if (!wmjsMap) {
15847
15903
  return;
15848
15904
  }
15849
- wmjsMap.zoomToLayer(wmjsMap.getActiveLayer());
15905
+ wmjsMap.calculateBoundingBoxAndZoom(latitude, longitude);
15850
15906
  }, function (error) {
15851
15907
  console.warn("Geolocation error: ".concat(error.message));
15852
15908
  }, locationOptions);
@@ -16203,6 +16259,9 @@ var MultiMapViewConnect = function MultiMapViewConnect(_ref) {
16203
16259
  width: "".concat(Math.round(100 / cols), "%"),
16204
16260
  height: "".concat(Math.round(100 / rows), "%")
16205
16261
  };
16262
+ if (maps.length === 0) {
16263
+ return null;
16264
+ }
16206
16265
  var firstMapId = maps[0].id;
16207
16266
  return /*#__PURE__*/React__default.createElement("div", {
16208
16267
  style: {
@@ -18018,6 +18077,8 @@ var ControlButtonGroup = function ControlButtonGroup(_a) {
18018
18077
  }), children);
18019
18078
  };
18020
18079
 
18080
+ var OBSERVED_PADDING_DAYS = 1;
18081
+ var FORECAST_PADDING_DAYS = OBSERVED_PADDING_DAYS + 2;
18021
18082
  var TICK_HEIGHT = 6;
18022
18083
  var HOUR_LABEL_OFFSET = 1.5;
18023
18084
  var MONTH_LABEL_BREAKPOINT = 65;
@@ -18063,8 +18124,8 @@ var TimeSliderLiteBackgroundSvg = function TimeSliderLiteBackgroundSvg(_ref) {
18063
18124
  var showHourLabelEveryThirdHour = limitHourLabelsToEveryThirdHour || tickSpacing < HOUR_LABEL_EVERY_THIRD_HOUR_BREAKPOINT;
18064
18125
  // Set up variables for date labels and background colors
18065
18126
  var dayLabels = [];
18066
- var dayLabelDate = new Date(startTime * SECOND_TO_MILLISECOND);
18067
- var lastDayLabelDate = new Date(endDate.getTime() + 2 * DAY_TO_MILLISECOND); // Append two more days
18127
+ var dayLabelDate = new Date(startTime * SECOND_TO_MILLISECOND - OBSERVED_PADDING_DAYS * DAY_TO_MILLISECOND);
18128
+ var lastDayLabelDate = new Date(endDate.getTime() + FORECAST_PADDING_DAYS * DAY_TO_MILLISECOND);
18068
18129
  while (dayLabelDate < lastDayLabelDate) {
18069
18130
  var dateString = dayLabelDate.toLocaleDateString(locale, {
18070
18131
  weekday: 'short',
@@ -18096,12 +18157,12 @@ var TimeSliderLiteBackgroundSvg = function TimeSliderLiteBackgroundSvg(_ref) {
18096
18157
  }
18097
18158
  }, label);
18098
18159
  }) : null;
18099
- var currentDayIndex = (currentTime - startTime) * SECOND_TO_DAY + startTimeDayOffset;
18160
+ var currentDayIndex = (currentTime - startTime) * SECOND_TO_DAY + startTimeDayOffset + OBSERVED_PADDING_DAYS;
18100
18161
  var backgroundRectangles = dayLabels.map(function (label, index) {
18101
- var observedColor = index % 2 === 0 ? timeSliderLite.timelineBackgroundObservedAlternative.fill : timeSliderLite.timelineBackgroundObserved.fill;
18102
- var forecastColor = index % 2 === 0 ? timeSliderLite.timelineBackground.fill : timeSliderLite.timelineBackgroundAlternative.fill;
18162
+ var observedColor = index % 2 === 0 ? timeSliderLite.timelineBackgroundObserved.fill : timeSliderLite.timelineBackgroundObservedAlternative.fill;
18163
+ var forecastColor = index % 2 === 0 ? timeSliderLite.timelineBackgroundAlternative.fill : timeSliderLite.timelineBackground.fill;
18103
18164
  var defaultProps = {
18104
- x: Math.floor(index * tickSpacing - tickOffset),
18165
+ x: Math.floor((index - OBSERVED_PADDING_DAYS) * tickSpacing - tickOffset),
18105
18166
  y: 0,
18106
18167
  height: height
18107
18168
  };
@@ -18124,7 +18185,7 @@ var TimeSliderLiteBackgroundSvg = function TimeSliderLiteBackgroundSvg(_ref) {
18124
18185
  }).flat();
18125
18186
  var dailyLabels = !showMonthLabel ? dayLabels.map(function (label, index) {
18126
18187
  return /*#__PURE__*/React__default.createElement("text", {
18127
- x: index * tickSpacing + 8 - tickOffset,
18188
+ x: (index - OBSERVED_PADDING_DAYS) * tickSpacing + 8 - tickOffset,
18128
18189
  y: 14,
18129
18190
  fill: timeSliderLite.timeline.fill,
18130
18191
  textAnchor: "left",
@@ -18141,7 +18202,7 @@ var TimeSliderLiteBackgroundSvg = function TimeSliderLiteBackgroundSvg(_ref) {
18141
18202
  length: hourLabelsPerDay
18142
18203
  }, function (_, value) {
18143
18204
  var defaultProps = {
18144
- x: index * tickSpacing + value * (tickSpacing / hourLabelsPerDay) - tickOffset - HOUR_LABEL_OFFSET,
18205
+ x: (index - OBSERVED_PADDING_DAYS) * tickSpacing + value * (tickSpacing / hourLabelsPerDay) - tickOffset - HOUR_LABEL_OFFSET,
18145
18206
  y: height - 10,
18146
18207
  visibility: showHourLabelEveryThirdHour && value % 3 !== 0 ? 'hidden' : 'visible',
18147
18208
  fill: timeSliderLite.timeline.fill,
@@ -18177,8 +18238,8 @@ var TimeSliderLiteBackgroundSvg = function TimeSliderLiteBackgroundSvg(_ref) {
18177
18238
  length: Math.floor(observedTicksPerDay * (currentDayIndex - index)) + 1
18178
18239
  }, function (_, value) {
18179
18240
  return /*#__PURE__*/React__default.createElement("line", Object.assign({}, defaultProps, {
18180
- x1: index * tickSpacing + value * (tickSpacing / observedTicksPerDay) - tickOffset,
18181
- x2: index * tickSpacing + value * (tickSpacing / observedTicksPerDay) - tickOffset,
18241
+ x1: (index - OBSERVED_PADDING_DAYS) * tickSpacing + value * (tickSpacing / observedTicksPerDay) - tickOffset,
18242
+ x2: (index - OBSERVED_PADDING_DAYS) * tickSpacing + value * (tickSpacing / observedTicksPerDay) - tickOffset,
18182
18243
  key: "".concat(label, "-").concat(value, "-observed-tick")
18183
18244
  }));
18184
18245
  });
@@ -18186,8 +18247,8 @@ var TimeSliderLiteBackgroundSvg = function TimeSliderLiteBackgroundSvg(_ref) {
18186
18247
  length: Math.floor(forecastTicksPerDay * (1 - (currentDayIndex - index))) + 1
18187
18248
  }, function (_, value) {
18188
18249
  return /*#__PURE__*/React__default.createElement("line", Object.assign({}, defaultProps, {
18189
- x1: (index + 1) * tickSpacing - value * (tickSpacing / forecastTicksPerDay) - tickOffset,
18190
- x2: (index + 1) * tickSpacing - value * (tickSpacing / forecastTicksPerDay) - tickOffset,
18250
+ x1: (index + 1 - OBSERVED_PADDING_DAYS) * tickSpacing - value * (tickSpacing / forecastTicksPerDay) - tickOffset,
18251
+ x2: (index + 1 - OBSERVED_PADDING_DAYS) * tickSpacing - value * (tickSpacing / forecastTicksPerDay) - tickOffset,
18191
18252
  key: "".concat(label, "-").concat(value, "-forecast-tick")
18192
18253
  }));
18193
18254
  });
@@ -18197,8 +18258,8 @@ var TimeSliderLiteBackgroundSvg = function TimeSliderLiteBackgroundSvg(_ref) {
18197
18258
  length: ticksPerDay + 1
18198
18259
  }, function (_, value) {
18199
18260
  return /*#__PURE__*/React__default.createElement("line", Object.assign({}, defaultProps, {
18200
- x1: index * tickSpacing + value * (tickSpacing / ticksPerDay) - tickOffset,
18201
- x2: index * tickSpacing + value * (tickSpacing / ticksPerDay) - tickOffset,
18261
+ x1: (index - OBSERVED_PADDING_DAYS) * tickSpacing + value * (tickSpacing / ticksPerDay) - tickOffset,
18262
+ x2: (index - OBSERVED_PADDING_DAYS) * tickSpacing + value * (tickSpacing / ticksPerDay) - tickOffset,
18202
18263
  key: "".concat(label, "-").concat(value, "-tick")
18203
18264
  }));
18204
18265
  });
@@ -18466,6 +18527,8 @@ var TimeSliderLiteBackground = function TimeSliderLiteBackground(_ref) {
18466
18527
  timeStep = _ref.timeStep,
18467
18528
  selectedTime = _ref.selectedTime,
18468
18529
  setSelectedTime = _ref.setSelectedTime;
18530
+ var _useTheme = useTheme$2(),
18531
+ timeSliderLite = _useTheme.palette.geowebColors.timeSliderLite;
18469
18532
  var sliderAreaRef = useRef(null);
18470
18533
  var _React$useState = React__default.useState(0),
18471
18534
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -18489,7 +18552,8 @@ var TimeSliderLiteBackground = function TimeSliderLiteBackground(_ref) {
18489
18552
  position: 'relative',
18490
18553
  height: "".concat(height, "px"),
18491
18554
  overflow: 'hidden',
18492
- width: '100%'
18555
+ width: '100%',
18556
+ backgroundColor: timeSliderLite.timelineBackgroundObserved.fill
18493
18557
  },
18494
18558
  "data-testid": "TimeSliderLite-Background"
18495
18559
  }, /*#__PURE__*/React__default.createElement(TimeSliderLiteBackgroundSvg, {
@@ -18863,6 +18927,58 @@ var TimeSliderLite = function TimeSliderLite(_ref) {
18863
18927
  }))));
18864
18928
  };
18865
18929
 
18930
+ /* *
18931
+ * Licensed under the Apache License, Version 2.0 (the "License");
18932
+ * you may not use this file except in compliance with the License.
18933
+ * You may obtain a copy of the License at
18934
+ *
18935
+ * http://www.apache.org/licenses/LICENSE-2.0
18936
+ *
18937
+ * Unless required by applicable law or agreed to in writing, software
18938
+ * distributed under the License is distributed on an "AS IS" BASIS,
18939
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18940
+ * See the License for the specific language governing permissions and
18941
+ * limitations under the License.
18942
+ *
18943
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
18944
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
18945
+ * */
18946
+ var useOnToggleAnimation = function useOnToggleAnimation(dispatch, mapId, selectedTime, timeStep, defaultTimeStep, startTime, endTime, isAnimating, timeSliderProps) {
18947
+ var startMapAnimation = function startMapAnimation() {
18948
+ var _a, _b, _c;
18949
+ var observedTimeStep = (_a = timeStep === null || timeStep === void 0 ? void 0 : timeStep[0]) !== null && _a !== void 0 ? _a : defaultTimeStep[0];
18950
+ var forecastTimeStep = (_b = timeStep === null || timeStep === void 0 ? void 0 : timeStep[1]) !== null && _b !== void 0 ? _b : defaultTimeStep[1];
18951
+ var floorCorrectedTimeStart = floorLocalSeconds(startTime, HOUR_TO_SECOND);
18952
+ var floorCorrectedEndTime = floorLocalSeconds(endTime, HOUR_TO_SECOND);
18953
+ var timeList = generateCustomTimeList((_c = timeSliderProps.currentTime) !== null && _c !== void 0 ? _c : Date.now() * MILLISECOND_TO_SECOND, floorCorrectedTimeStart, floorCorrectedEndTime, [observedTimeStep, forecastTimeStep]);
18954
+ dispatch(mapActions.mapStartAnimation({
18955
+ mapId: mapId,
18956
+ initialTime: new Date(selectedTime * SECOND_TO_MILLISECOND).toISOString(),
18957
+ timeList: timeList,
18958
+ origin: mapEnums.MapActionOrigin.map
18959
+ }));
18960
+ };
18961
+ var onToggleAnimation = function onToggleAnimation() {
18962
+ if (isAnimating) {
18963
+ dispatch(mapActions.mapStopAnimation({
18964
+ mapId: mapId,
18965
+ origin: mapEnums.MapActionOrigin.map
18966
+ }));
18967
+ } else {
18968
+ startMapAnimation();
18969
+ }
18970
+ };
18971
+ React__default.useEffect(function () {
18972
+ var hasTimeRange = startTime && endTime && selectedTime;
18973
+ var isInvalidAnimation = selectedTime < startTime || selectedTime > endTime;
18974
+ if (hasTimeRange && isInvalidAnimation && isAnimating) {
18975
+ startMapAnimation();
18976
+ }
18977
+ // eslint-disable-next-line react-hooks/exhaustive-deps
18978
+ }, [selectedTime, startTime, endTime]);
18979
+ return onToggleAnimation;
18980
+ };
18981
+
18866
18982
  var TimeSliderLiteConnect = function TimeSliderLiteConnect(_a) {
18867
18983
  var _b, _c, _d, _e, _f, _g;
18868
18984
  var overrideUseTimeRange = _a.overrideUseTimeRange,
@@ -18935,27 +19051,7 @@ var TimeSliderLiteConnect = function TimeSliderLiteConnect(_a) {
18935
19051
  var selectedTime = useSelector(function (store) {
18936
19052
  return mapSelectors.getSelectedTime(store, mapId);
18937
19053
  });
18938
- var onToggleAnimation = function onToggleAnimation() {
18939
- var _a, _b, _c;
18940
- if (isAnimating) {
18941
- dispatch(mapActions.mapStopAnimation({
18942
- mapId: mapId,
18943
- origin: mapEnums.MapActionOrigin.map
18944
- }));
18945
- } else {
18946
- var observedTimeStep = (_a = timeStep === null || timeStep === void 0 ? void 0 : timeStep[0]) !== null && _a !== void 0 ? _a : defaultTimeStep[0];
18947
- var forecastTimeStep = (_b = timeStep === null || timeStep === void 0 ? void 0 : timeStep[1]) !== null && _b !== void 0 ? _b : defaultTimeStep[1];
18948
- var floorCorrectedTimeStart = floorLocalSeconds(startTime, HOUR_TO_SECOND);
18949
- var floorCorrectedEndTime = floorLocalSeconds(endTime, HOUR_TO_SECOND);
18950
- var timeList = generateCustomTimeList((_c = timeSliderProps.currentTime) !== null && _c !== void 0 ? _c : Date.now() * MILLISECOND_TO_SECOND, floorCorrectedTimeStart, floorCorrectedEndTime, [observedTimeStep, forecastTimeStep]);
18951
- dispatch(mapActions.mapStartAnimation({
18952
- mapId: mapId,
18953
- initialTime: new Date(selectedTime * SECOND_TO_MILLISECOND).toISOString(),
18954
- timeList: timeList,
18955
- origin: mapEnums.MapActionOrigin.map
18956
- }));
18957
- }
18958
- };
19054
+ var onToggleAnimation = useOnToggleAnimation(dispatch, mapId, selectedTime, timeStep, defaultTimeStep, startTime, endTime, isAnimating, timeSliderProps);
18959
19055
  var handleTimeRangeChange = function handleTimeRangeChange(newTimeRange) {
18960
19056
  if (isAnimating && newTimeRange) {
18961
19057
  dispatch(mapActions.mapStopAnimation({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/core",
3
- "version": "9.1.0",
3
+ "version": "9.2.0",
4
4
  "description": "GeoWeb Core library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -7,6 +7,7 @@ export interface SingleValueComponentProps extends mapTypes.Dimension {
7
7
  nameMappings?: DimensionNameMappings;
8
8
  valueMappings?: DimensionValueMappings;
9
9
  }
10
+ export type DimensionTooltipGenerator = (selectedDimension: mapTypes.Dimension, isValue?: boolean) => string;
10
11
  export interface DimensionSelectProps {
11
12
  layerDimensions?: mapTypes.Dimension[];
12
13
  onLayerChangeDimension: (dimensionName: string, dimensionValue: string, origin?: layerTypes.LayerActionOrigin.layerManager) => void;
@@ -14,11 +15,11 @@ export interface DimensionSelectProps {
14
15
  icon?: ElementType;
15
16
  nameMappings?: DimensionNameMappings;
16
17
  valueMappings?: DimensionValueMappings;
17
- tooltipPrefix?: string;
18
+ tooltipGenerator?: DimensionTooltipGenerator;
18
19
  useLatestReferenceTime?: boolean;
19
20
  setUseLatestReferenceTime?: (useLatestReferenceTime: boolean) => void;
20
21
  SingleValueComponent?: React.FC<SingleValueComponentProps>;
21
- latestLabel?: string;
22
+ hideLatestDuplicate?: boolean;
22
23
  }
23
24
  declare const DimensionSelect: FC<DimensionSelectProps>;
24
25
  export default DimensionSelect;
@@ -1,17 +1,7 @@
1
1
  import * as React from 'react';
2
- import { layerTypes, mapTypes } from '@opengeoweb/store';
3
2
  export interface DimensionSelectProps {
4
3
  layerId: string;
5
4
  mapId: string;
6
5
  }
7
- interface LayerChangeDimensionParams {
8
- dimension: mapTypes.Dimension;
9
- origin: layerTypes.LayerActionOrigin | undefined;
10
- }
11
- export declare const useLayerDimensions: (layerId: string, mapId: string) => {
12
- layerDimensions: mapTypes.Dimension[];
13
- isLayerEnabled: boolean;
14
- layerChangeDimension: ({ dimension, origin, }: LayerChangeDimensionParams) => void;
15
- };
16
6
  declare const DimensionSelectConnect: React.FC<DimensionSelectProps>;
17
7
  export default DimensionSelectConnect;
@@ -0,0 +1,15 @@
1
+ import { ElementType, FC } from 'react';
2
+ import { layerTypes, mapTypes } from '@opengeoweb/store';
3
+ import { DimensionValueMappings } from '../../../LayerManagerUtils';
4
+ declare const DimensionSelectValue: FC<{
5
+ selectedDimension?: mapTypes.Dimension;
6
+ icon?: ElementType;
7
+ tooltip: string;
8
+ isEnabled: boolean;
9
+ onLayerChangeDimension: (dimensionName: string, dimensionValue: string, origin?: layerTypes.LayerActionOrigin.layerManager) => void;
10
+ valueMappings?: DimensionValueMappings;
11
+ hideLatestDuplicate?: boolean;
12
+ useLatestReferenceTime?: boolean;
13
+ setUseLatestReferenceTime?: (useLatestReferenceTime: boolean) => void;
14
+ }>;
15
+ export default DimensionSelectValue;
@@ -0,0 +1,12 @@
1
+ import { ElementType, FC } from 'react';
2
+ import { DimensionNameMappings } from '../../../LayerManagerUtils';
3
+ declare const DimensionSelectName: FC<{
4
+ dimensionNames: string[];
5
+ selectedDimensionName: string;
6
+ setSelectedDimensionName: (dimension: string) => void;
7
+ icon?: ElementType;
8
+ nameMappings?: DimensionNameMappings;
9
+ tooltip: string;
10
+ isEnabled: boolean;
11
+ }>;
12
+ export default DimensionSelectName;
@@ -0,0 +1,15 @@
1
+ import { layerTypes, mapTypes } from '@opengeoweb/store';
2
+ interface LayerChangeDimensionParams {
3
+ dimension: mapTypes.Dimension;
4
+ origin: layerTypes.LayerActionOrigin | undefined;
5
+ }
6
+ export declare const useLayerDimensions: (layerId: string, mapId: string) => {
7
+ layerDimensions: mapTypes.Dimension[];
8
+ isLayerEnabled: boolean;
9
+ layerChangeDimension: ({ dimension, origin, }: LayerChangeDimensionParams) => void;
10
+ };
11
+ export declare const useReferenceTimeWithLatestOption: (layerId: string) => {
12
+ useLatestReferenceTime: boolean;
13
+ setUseLatestReferenceTime: (useLatestReferenceTime: boolean) => void;
14
+ };
15
+ export {};
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { mapTypes } from '@opengeoweb/store';
3
- import type { SingleValueComponentProps } from './LayerContainerRow/LayerRow/DimensionSelect/DimensionSelect';
3
+ import type { DimensionTooltipGenerator, SingleValueComponentProps } from './LayerContainerRow/LayerRow/DimensionSelect/DimensionSelect';
4
4
  import { Size, ToolbarButtonSettings } from './LayerManagerHeaderOptions';
5
5
  export declare const columnClasses: {
6
6
  column1: string;
@@ -163,7 +163,7 @@ export type DimensionNameMappings = {
163
163
  [dimensionName: string]: string;
164
164
  };
165
165
  export type DimensionValueMappings = {
166
- [dimensionName: string]: (value: string) => string;
166
+ [dimensionName: string]: (value: string, latest?: string) => string;
167
167
  };
168
168
  export interface LayerManagerCustomSettings {
169
169
  toolbar?: {
@@ -232,9 +232,10 @@ export interface LayerManagerCustomSettings {
232
232
  dimensionsToShow?: string[];
233
233
  SingleValueComponent?: React.FC<SingleValueComponentProps>;
234
234
  icon?: React.ElementType;
235
- tooltipPrefix?: string;
235
+ tooltipGenerator?: DimensionTooltipGenerator;
236
236
  nameMappings?: DimensionNameMappings;
237
237
  valueMappings?: DimensionValueMappings;
238
+ hideLatestDuplicate?: boolean;
238
239
  };
239
240
  deleteLayer?: {
240
241
  tooltipTitle?: string;
@@ -0,0 +1,3 @@
1
+ import { Dispatch } from '@reduxjs/toolkit';
2
+ import { TimeSliderLiteProps } from './TimeSliderLite';
3
+ export declare const useOnToggleAnimation: (dispatch: Dispatch<any>, mapId: string, selectedTime: number, timeStep: [number, number] | null, defaultTimeStep: [number, number], startTime: number, endTime: number, isAnimating: boolean, timeSliderProps: Partial<TimeSliderLiteProps>) => (() => void);