@opengeoweb/webmap-react 12.12.0 → 12.13.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
@@ -3953,10 +3953,40 @@ var MapDimensionSelect = function MapDimensionSelect(_ref2) {
3953
3953
  dimensionName = _ref2.dimensionName,
3954
3954
  handleDimensionValueChanged = _ref2.handleDimensionValueChanged,
3955
3955
  handleSyncChanged = _ref2.handleSyncChanged,
3956
- layerDimension = _ref2.layerDimension;
3956
+ layerDimension = _ref2.layerDimension,
3957
+ layerName = _ref2.layerName;
3957
3958
  var _useWebmapReactTransl = useWebmapReactTranslation(),
3958
3959
  t = _useWebmapReactTransl.t;
3959
3960
  var wmLayer = webmapUtils.getWMLayerById(layerId);
3961
+ var _React$useState = React.useState(layerName),
3962
+ _React$useState2 = _slicedToArray(_React$useState, 2),
3963
+ layerTitle = _React$useState2[0],
3964
+ setLayerTitle = _React$useState2[1];
3965
+ React.useEffect(function () {
3966
+ // if the layername changes, the title needs to be updated
3967
+ var updateTitle = /*#__PURE__*/function () {
3968
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
3969
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
3970
+ while (1) switch (_context.prev = _context.next) {
3971
+ case 0:
3972
+ _context.next = 2;
3973
+ return wmLayer.parseLayer();
3974
+ case 2:
3975
+ setLayerTitle(wmLayer.title || layerName);
3976
+ case 3:
3977
+ case "end":
3978
+ return _context.stop();
3979
+ }
3980
+ }, _callee);
3981
+ }));
3982
+ return function updateTitle() {
3983
+ return _ref3.apply(this, arguments);
3984
+ };
3985
+ }();
3986
+ if (wmLayer) {
3987
+ void updateTitle();
3988
+ }
3989
+ }, [layerName, wmLayer]);
3960
3990
  var dimConfig = dimensionConfig(t).find(function (cnf) {
3961
3991
  return cnf.name === dimensionName;
3962
3992
  });
@@ -3967,7 +3997,6 @@ var MapDimensionSelect = function MapDimensionSelect(_ref2) {
3967
3997
  if (!wmsDimension) {
3968
3998
  return null;
3969
3999
  }
3970
- var layerTitle = wmLayer.title;
3971
4000
  var marks = marksByDimension(t, wmsDimension);
3972
4001
  var isLayerDimensionSynced = layerDimension.synced !== undefined && layerDimension.synced === true;
3973
4002
  var tooltipTitle = isLayerDimensionSynced ? t('webmap-react-click-disconnect') : t('webmap-react-click-connect');
@@ -5250,47 +5279,53 @@ var TimeawareImageSourceWMSLayer = function TimeawareImageSourceWMSLayer(_ref) {
5250
5279
  return _regeneratorRuntime().wrap(function _callee$(_context) {
5251
5280
  while (1) switch (_context.prev = _context.next) {
5252
5281
  case 0:
5253
- if (wmLayer && visible !== false) {
5254
- wmTimeDim = wmLayer === null || wmLayer === void 0 || (_wmLayer$dimensions = wmLayer.dimensions) === null || _wmLayer$dimensions === void 0 ? void 0 : _wmLayer$dimensions.find(function (dimension) {
5255
- return dimension.name === 'time';
5256
- }); // Set time dimension current value based on layerprops dimension value
5257
- layerPropsTimeDim = dimensions === null || dimensions === void 0 ? void 0 : dimensions.find(function (dimension) {
5258
- return dimension.name === 'time';
5259
- });
5260
- timeValueToInitialize = (layerPropsTimeDim === null || layerPropsTimeDim === void 0 ? void 0 : layerPropsTimeDim.currentValue) || (wmTimeDim === null || wmTimeDim === void 0 ? void 0 : wmTimeDim.getValue());
5261
- wmTimeDim && timeValueToInitialize && wmTimeDim.setValue(timeValueToInitialize);
5262
- refTimeDim = wmLayer === null || wmLayer === void 0 || (_wmLayer$dimensions2 = wmLayer.dimensions) === null || _wmLayer$dimensions2 === void 0 ? void 0 : _wmLayer$dimensions2.find(function (dimension) {
5282
+ if (!(wmLayer && visible !== false)) {
5283
+ _context.next = 11;
5284
+ break;
5285
+ }
5286
+ wmTimeDim = wmLayer === null || wmLayer === void 0 || (_wmLayer$dimensions = wmLayer.dimensions) === null || _wmLayer$dimensions === void 0 ? void 0 : _wmLayer$dimensions.find(function (dimension) {
5287
+ return dimension.name === 'time';
5288
+ }); // Set time dimension current value based on layerprops dimension value
5289
+ layerPropsTimeDim = dimensions === null || dimensions === void 0 ? void 0 : dimensions.find(function (dimension) {
5290
+ return dimension.name === 'time';
5291
+ });
5292
+ timeValueToInitialize = (layerPropsTimeDim === null || layerPropsTimeDim === void 0 ? void 0 : layerPropsTimeDim.currentValue) || (wmTimeDim === null || wmTimeDim === void 0 ? void 0 : wmTimeDim.getValue());
5293
+ wmTimeDim && timeValueToInitialize && wmTimeDim.setValue(timeValueToInitialize);
5294
+ refTimeDim = wmLayer === null || wmLayer === void 0 || (_wmLayer$dimensions2 = wmLayer.dimensions) === null || _wmLayer$dimensions2 === void 0 ? void 0 : _wmLayer$dimensions2.find(function (dimension) {
5295
+ return dimension.name === 'reference_time';
5296
+ }); // Update reference time dimension value, this will change the time values to prefetch. Depends on model run.
5297
+ if (refTimeDim && wmTimeDim) {
5298
+ layerPropsRefTimeDim = dimensions === null || dimensions === void 0 ? void 0 : dimensions.find(function (dimension) {
5263
5299
  return dimension.name === 'reference_time';
5264
- }); // Update reference time dimension value, this will change the time values to prefetch. Depends on model run.
5265
- if (refTimeDim && wmTimeDim) {
5266
- layerPropsRefTimeDim = dimensions === null || dimensions === void 0 ? void 0 : dimensions.find(function (dimension) {
5267
- return dimension.name === 'reference_time';
5268
- }); // Set reftime dimension current value based on layerprops dimension value
5269
- refTimeDim && (layerPropsRefTimeDim === null || layerPropsRefTimeDim === void 0 ? void 0 : layerPropsRefTimeDim.currentValue) && refTimeDim.setValue(layerPropsRefTimeDim === null || layerPropsRefTimeDim === void 0 ? void 0 : layerPropsRefTimeDim.currentValue);
5270
- refTimeToFind = wmTimeDim.getValue();
5271
- firstRefTime = refTimeDim === null || refTimeDim === void 0 ? void 0 : refTimeDim.getClosestValue(refTimeToFind, true);
5272
- firstRefTime && refTimeDim && wmTimeDim && wmTimeDim.setTimeValuesForReferenceTime(firstRefTime, refTimeDim);
5273
- }
5274
- // Make sure style is set in wmLayer as well
5275
- styleName && wmLayer.setStyle(styleName);
5276
- onInitializeLayer && onInitializeLayer({
5277
- layerId: wmLayer.id,
5278
- style: wmLayer.currentStyle,
5279
- dimensions: wmLayer.dimensions.map(function (dimension) {
5280
- return {
5281
- name: dimension.name,
5282
- units: dimension.units,
5283
- currentValue: dimension.currentValue,
5284
- maxValue: dimension.getLastValue(),
5285
- minValue: dimension.getFirstValue(),
5286
- synced: dimension.synced,
5287
- values: dimension.values,
5288
- unitSymbol: dimension.unitSymbol
5289
- };
5290
- })
5291
- });
5300
+ }); // Set reftime dimension current value based on layerprops dimension value
5301
+ refTimeDim && (layerPropsRefTimeDim === null || layerPropsRefTimeDim === void 0 ? void 0 : layerPropsRefTimeDim.currentValue) && refTimeDim.setValue(layerPropsRefTimeDim === null || layerPropsRefTimeDim === void 0 ? void 0 : layerPropsRefTimeDim.currentValue);
5302
+ refTimeToFind = wmTimeDim.getValue();
5303
+ firstRefTime = refTimeDim === null || refTimeDim === void 0 ? void 0 : refTimeDim.getClosestValue(refTimeToFind, true);
5304
+ firstRefTime && refTimeDim && wmTimeDim && wmTimeDim.setTimeValuesForReferenceTime(firstRefTime, refTimeDim);
5292
5305
  }
5293
- case 1:
5306
+ // Make sure style is set in wmLayer as well
5307
+ styleName && wmLayer.setStyle(styleName);
5308
+ // Make sure we have the latest dimension values before initializing
5309
+ _context.next = 10;
5310
+ return wmLayer.parseLayer();
5311
+ case 10:
5312
+ onInitializeLayer && onInitializeLayer({
5313
+ layerId: wmLayer.id,
5314
+ style: wmLayer.currentStyle,
5315
+ dimensions: wmLayer.dimensions.map(function (dimension) {
5316
+ return {
5317
+ name: dimension.name,
5318
+ units: dimension.units,
5319
+ currentValue: dimension.currentValue,
5320
+ maxValue: dimension.getLastValue(),
5321
+ minValue: dimension.getFirstValue(),
5322
+ synced: dimension.synced,
5323
+ values: dimension.values,
5324
+ unitSymbol: dimension.unitSymbol
5325
+ };
5326
+ })
5327
+ });
5328
+ case 11:
5294
5329
  case "end":
5295
5330
  return _context.stop();
5296
5331
  }
@@ -5555,7 +5590,9 @@ var XYZLayer = function XYZLayer(_ref) {
5555
5590
  var layer = new TileLayer({
5556
5591
  source: new XYZ({
5557
5592
  url: urlTemplate,
5558
- projection: tileProjectionCode
5593
+ projection: tileProjectionCode,
5594
+ minZoom: layerOptions === null || layerOptions === void 0 ? void 0 : layerOptions.minZoom,
5595
+ maxZoom: layerOptions === null || layerOptions === void 0 ? void 0 : layerOptions.maxZoom
5559
5596
  })
5560
5597
  });
5561
5598
  map.addLayer(layer);
@@ -5564,7 +5601,7 @@ var XYZLayer = function XYZLayer(_ref) {
5564
5601
  map.removeLayer(layer);
5565
5602
  setLayer(undefined);
5566
5603
  };
5567
- }, [map, tileProjectionCode, urlTemplate]);
5604
+ }, [map, tileProjectionCode, urlTemplate, layerOptions === null || layerOptions === void 0 ? void 0 : layerOptions.minZoom, layerOptions === null || layerOptions === void 0 ? void 0 : layerOptions.maxZoom]);
5568
5605
  useEffect(function () {
5569
5606
  if (!layerOptions || !layer) {
5570
5607
  return;
@@ -6620,23 +6657,6 @@ var colorMaps = {
6620
6657
  temperatureLegendColorsCWK: temperatureLegendColorsCWK
6621
6658
  };
6622
6659
 
6623
- /* *
6624
- * Licensed under the Apache License, Version 2.0 (the "License");
6625
- * you may not use this file except in compliance with the License.
6626
- * You may obtain a copy of the License at
6627
- *
6628
- * http://www.apache.org/licenses/LICENSE-2.0
6629
- *
6630
- * Unless required by applicable law or agreed to in writing, software
6631
- * distributed under the License is distributed on an "AS IS" BASIS,
6632
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
6633
- * See the License for the specific language governing permissions and
6634
- * limitations under the License.
6635
- *
6636
- * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
6637
- * Copyright 2025 - Finnish Meteorological Institute (FMI)
6638
- * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
6639
- * */
6640
6660
  var makeLegendFromColorMap = function makeLegendFromColorMap(props) {
6641
6661
  var numClasses = props.colors.length;
6642
6662
  var minVal = props.min;
@@ -6684,10 +6704,61 @@ var getLegendClass = function getLegendClass(edrColorLegend, value) {
6684
6704
  return value >= entry.min && value < entry.max;
6685
6705
  });
6686
6706
  };
6687
- var makeFeatureStyleDisc = function makeFeatureStyleDisc(feature, legend) {
6707
+ var getOffsetValues = function getOffsetValues(factor) {
6708
+ return [[0, -20], [0, 0], [0, 20], [-30 * factor, -20], [-30 * factor, 0], [-30 * factor, 20], [30 * factor, -20], [30 * factor, 0], [30 * factor, 20], [60 * factor, -20], [60 * factor, 0], [60 * factor, 20], [-60 * factor, -20], [-60 * factor, 0], [-60 * factor, 20]];
6709
+ };
6710
+ var makeFeatureStyleMultiParam = function makeFeatureStyleMultiParam(feature) {
6688
6711
  var _feature$getPropertie = feature.getProperties(),
6689
- value = _feature$getPropertie.value;
6690
- var legendEntry = getLegendClass(legend, value);
6712
+ values = _feature$getPropertie.values;
6713
+ var paramValues = Object.values(values);
6714
+ // Determine offset between columns (long strings need more space)
6715
+ var maxLength = Math.max.apply(Math, _toConsumableArray(paramValues.map(function (el) {
6716
+ return el !== undefined ? el.toString().length : 1;
6717
+ })));
6718
+ var factor = maxLength > 5 ? 1.4 : 1;
6719
+ var offsetValues = getOffsetValues(factor);
6720
+ // Don't allow showing more than 15 params
6721
+ var params = paramValues.slice(0, 15);
6722
+ return params.map(function (paramVal, index) {
6723
+ return new Style({
6724
+ text: new Text({
6725
+ text: paramVal ? paramVal.toString() : '-',
6726
+ offsetX: offsetValues[index][0],
6727
+ offsetY: offsetValues[index][1],
6728
+ scale: 1.0,
6729
+ stroke: new Stroke({
6730
+ color: '#ffffffff',
6731
+ width: 1
6732
+ }),
6733
+ fill: new Fill({
6734
+ color: '#000000'
6735
+ }),
6736
+ font: 'bold 11px Arial',
6737
+ padding: [-5, -5, -5, -5]
6738
+ })
6739
+ });
6740
+ });
6741
+ };
6742
+ var makeFeatureStyleMultiParamLoading = function makeFeatureStyleMultiParamLoading() {
6743
+ return new Style({
6744
+ text: new Text({
6745
+ scale: 1.2,
6746
+ stroke: new Stroke({
6747
+ color: '#ffffffff',
6748
+ width: 3
6749
+ }),
6750
+ fill: new Fill({
6751
+ color: '#000000'
6752
+ }),
6753
+ text: '...'
6754
+ })
6755
+ });
6756
+ };
6757
+ var makeFeatureStyleDisc = function makeFeatureStyleDisc(feature, legend) {
6758
+ var _feature$getPropertie2 = feature.getProperties(),
6759
+ values = _feature$getPropertie2.values;
6760
+ var textValue = Object.values(values)[0];
6761
+ var legendEntry = getLegendClass(legend, textValue);
6691
6762
  return new Style({
6692
6763
  image: legendEntry === null || legendEntry === void 0 ? void 0 : legendEntry.image,
6693
6764
  text: new Text({
@@ -6696,13 +6767,14 @@ var makeFeatureStyleDisc = function makeFeatureStyleDisc(feature, legend) {
6696
6767
  fill: new Fill({
6697
6768
  color: '#000000'
6698
6769
  }),
6699
- text: value
6770
+ text: "".concat(textValue)
6700
6771
  })
6701
6772
  });
6702
6773
  };
6703
6774
  var makeFeatureStyleLoading = function makeFeatureStyleLoading(feature) {
6704
- var _feature$getPropertie2 = feature.getProperties(),
6705
- value = _feature$getPropertie2.value;
6775
+ var _feature$getPropertie3 = feature.getProperties(),
6776
+ values = _feature$getPropertie3.values;
6777
+ var textValue = Object.values(values)[0];
6706
6778
  return new Style({
6707
6779
  image: new Circle({
6708
6780
  radius: 14,
@@ -6720,7 +6792,7 @@ var makeFeatureStyleLoading = function makeFeatureStyleLoading(feature) {
6720
6792
  fill: new Fill({
6721
6793
  color: '#303030'
6722
6794
  }),
6723
- text: value
6795
+ text: textValue
6724
6796
  })
6725
6797
  });
6726
6798
  };
@@ -6737,7 +6809,12 @@ var defaultStyle$1 = function defaultStyle(feature) {
6737
6809
  * @param styleName Strings like temperatureLegendColorsWoW:0,20 will get the legend temperatureLegendColorsWoW with a range from 0,20. This makes it flexible to adjust the colorrange via the stylename.
6738
6810
  * @returns StyleLike
6739
6811
  */
6740
- var styleNameToStyleLikeNotMemoed = function styleNameToStyleLikeNotMemoed(styleName) {
6812
+ var styleNameToStyleLikeNotMemoed = function styleNameToStyleLikeNotMemoed(styleName, multiParam) {
6813
+ if (multiParam) {
6814
+ return function (feature) {
6815
+ return makeFeatureStyleMultiParam(feature);
6816
+ };
6817
+ }
6741
6818
  var minMaxPartFromNumericIndex = styleName.indexOf(':');
6742
6819
  var legMinMax = minMaxPartFromNumericIndex > 0 ? styleName.substring(minMaxPartFromNumericIndex + 1).split(',').map(function (stringValue) {
6743
6820
  return parseFloat(stringValue);
@@ -14893,7 +14970,11 @@ var FeatureLayer = function FeatureLayer(_ref) {
14893
14970
  hoverSelect = _ref.hoverSelect,
14894
14971
  clickOnFeature = _ref.clickOnFeature,
14895
14972
  testId = _ref.testId,
14896
- opacity = _ref.opacity;
14973
+ opacity = _ref.opacity,
14974
+ _ref$declutter = _ref.declutter,
14975
+ declutter = _ref$declutter === void 0 ? false : _ref$declutter,
14976
+ _ref$visible = _ref.visible,
14977
+ visible = _ref$visible === void 0 ? true : _ref$visible;
14897
14978
  var _useContext = useContext(MapContext),
14898
14979
  map = _useContext.map;
14899
14980
  var _useState = useState(),
@@ -14902,7 +14983,7 @@ var FeatureLayer = function FeatureLayer(_ref) {
14902
14983
  setSource = _useState2[1];
14903
14984
  var layerRef = useRef();
14904
14985
  useEffect(function () {
14905
- if (!map) {
14986
+ if (!map || visible === false) {
14906
14987
  return function () {};
14907
14988
  }
14908
14989
  var source = new VectorSource({
@@ -14915,7 +14996,9 @@ var FeatureLayer = function FeatureLayer(_ref) {
14915
14996
  properties: {
14916
14997
  testId: testId
14917
14998
  },
14918
- opacity: opacity
14999
+ opacity: opacity,
15000
+ declutter: declutter,
15001
+ visible: visible
14919
15002
  });
14920
15003
  layerRef.current = layer;
14921
15004
  layer.set('layerType', 'FeatureLayer');
@@ -14928,7 +15011,7 @@ var FeatureLayer = function FeatureLayer(_ref) {
14928
15011
  };
14929
15012
  // NOTE: style should not be part of this effect, as it changes always, causing the layer to be add/removed continuousely.
14930
15013
  // eslint-disable-next-line react-hooks/exhaustive-deps
14931
- }, [map, zIndex, testId]);
15014
+ }, [map, zIndex, testId, visible]);
14932
15015
  useEffect(function () {
14933
15016
  // Handle style function:
14934
15017
  if (layerRef.current && style) {
@@ -14943,6 +15026,11 @@ var FeatureLayer = function FeatureLayer(_ref) {
14943
15026
  (_layerRef$current2 = layerRef.current) === null || _layerRef$current2 === void 0 || _layerRef$current2.setOpacity(opacity);
14944
15027
  }
14945
15028
  }, [opacity]);
15029
+ // Layer visible useEffect
15030
+ useEffect(function () {
15031
+ var _layerRef$current3;
15032
+ (_layerRef$current3 = layerRef.current) === null || _layerRef$current3 === void 0 || _layerRef$current3.setVisible(!(visible === false));
15033
+ }, [visible]);
14946
15034
  useEffect(function () {
14947
15035
  if (!source) {
14948
15036
  return;
@@ -14953,7 +15041,7 @@ var FeatureLayer = function FeatureLayer(_ref) {
14953
15041
  }
14954
15042
  }, [source, features]);
14955
15043
  useEffect(function () {
14956
- if (!map || !source || !hoverSelect || !hoverSelect.active) {
15044
+ if (!map || !source || !hoverSelect || !hoverSelect.active || visible === false) {
14957
15045
  return function () {};
14958
15046
  }
14959
15047
  var previousHover = [];
@@ -14989,9 +15077,9 @@ var FeatureLayer = function FeatureLayer(_ref) {
14989
15077
  unByKey(eventKey);
14990
15078
  hoverSelect.onHover && hoverSelect.onHover(undefined);
14991
15079
  };
14992
- }, [map, source, hoverSelect]);
15080
+ }, [map, source, hoverSelect, visible]);
14993
15081
  useEffect(function () {
14994
- if (!map || !source || !clickOnFeature) {
15082
+ if (!map || !source || !clickOnFeature || visible === false) {
14995
15083
  return function () {};
14996
15084
  }
14997
15085
  var clickFunction = function clickFunction(evt) {
@@ -15007,7 +15095,7 @@ var FeatureLayer = function FeatureLayer(_ref) {
15007
15095
  return function () {
15008
15096
  unByKey(eventKey);
15009
15097
  };
15010
- }, [map, source, clickOnFeature]);
15098
+ }, [map, source, clickOnFeature, visible]);
15011
15099
  return null;
15012
15100
  };
15013
15101
 
@@ -15028,7 +15116,11 @@ var OpenLayersFeatureLayer = function OpenLayersFeatureLayer(_ref) {
15028
15116
  hoverSelect = _ref.hoverSelect,
15029
15117
  clickOnFeature = _ref.clickOnFeature,
15030
15118
  testId = _ref.testId,
15031
- opacity = _ref.opacity;
15119
+ opacity = _ref.opacity,
15120
+ _ref$declutter = _ref.declutter,
15121
+ declutter = _ref$declutter === void 0 ? false : _ref$declutter,
15122
+ _ref$visible = _ref.visible,
15123
+ visible = _ref$visible === void 0 ? true : _ref$visible;
15032
15124
  var projection = useProjection();
15033
15125
  var featureCollectionRef = useRef();
15034
15126
  var features = useRef([]);
@@ -15054,7 +15146,9 @@ var OpenLayersFeatureLayer = function OpenLayersFeatureLayer(_ref) {
15054
15146
  hoverSelect: hoverSelect,
15055
15147
  clickOnFeature: clickOnFeature,
15056
15148
  testId: testId,
15057
- opacity: opacity
15149
+ opacity: opacity,
15150
+ declutter: declutter,
15151
+ visible: visible
15058
15152
  });
15059
15153
  };
15060
15154
 
@@ -15075,14 +15169,17 @@ var OpenLayersFeatureLayer = function OpenLayersFeatureLayer(_ref) {
15075
15169
  * Copyright 2025 - Finnish Meteorological Institute (FMI)
15076
15170
  * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
15077
15171
  * */
15078
- var coverageCollectionToFeatureCollection = function coverageCollectionToFeatureCollection(cov, parameterName) {
15172
+ var coverageCollectionToFeatureCollection = function coverageCollectionToFeatureCollection(cov, parameterNames) {
15079
15173
  var _cov$coverages;
15080
15174
  var latLonValues = (cov === null || cov === void 0 || (_cov$coverages = cov.coverages) === null || _cov$coverages === void 0 ? void 0 : _cov$coverages.map(function (coverage) {
15081
- var _coverage$ranges$para;
15175
+ var paramValues = parameterNames.split(',').reduce(function (obj, parameterName) {
15176
+ var _coverage$ranges$para;
15177
+ return _objectSpread2(_objectSpread2({}, obj), {}, _defineProperty({}, parameterName, (_coverage$ranges$para = coverage.ranges[parameterName]) === null || _coverage$ranges$para === void 0 ? void 0 : _coverage$ranges$para.values[0]));
15178
+ }, {});
15082
15179
  return {
15083
15180
  type: 'Feature',
15084
15181
  properties: {
15085
- value: (_coverage$ranges$para = coverage.ranges[parameterName]) === null || _coverage$ranges$para === void 0 ? void 0 : _coverage$ranges$para.values[0]
15182
+ values: _objectSpread2({}, paramValues)
15086
15183
  },
15087
15184
  geometry: {
15088
15185
  coordinates: [coverage.domain.axes.x.values[0], coverage.domain.axes.y.values[0]],
@@ -15106,6 +15203,8 @@ var TimeAwareEDRLocationLayer = function TimeAwareEDRLocationLayer(_ref) {
15106
15203
  opacity = _ref.opacity,
15107
15204
  dimensions = _ref.dimensions,
15108
15205
  layerId = _ref.layerId,
15206
+ _ref$visible = _ref.visible,
15207
+ visible = _ref$visible === void 0 ? true : _ref$visible,
15109
15208
  onInitializeLayer = _ref.onInitializeLayer;
15110
15209
  // get a wmLayer instance
15111
15210
  var wmLayer = useGetEDRLayerInstance(edrBaseUrl, parameter, layerId, onInitializeLayer);
@@ -15128,11 +15227,14 @@ var TimeAwareEDRLocationLayer = function TimeAwareEDRLocationLayer(_ref) {
15128
15227
  }
15129
15228
  setFeaturePoints(featurePoint);
15130
15229
  }, [parameter, result.data]);
15230
+ var loadingStyle = parameter !== null && parameter !== void 0 && parameter.includes(',') ? makeFeatureStyleMultiParamLoading : makeFeatureStyleLoading;
15131
15231
  return jsx(OpenLayersFeatureLayer, {
15132
15232
  featureCollection: featurePoints,
15133
- style: result.isFetching ? makeFeatureStyleLoading : style,
15233
+ style: result.isFetching ? loadingStyle : style,
15134
15234
  opacity: opacity,
15135
- zIndex: zIndex
15235
+ zIndex: zIndex,
15236
+ declutter: true,
15237
+ visible: visible
15136
15238
  });
15137
15239
  };
15138
15240
 
@@ -15182,7 +15284,8 @@ var OpenLayersLayer = function OpenLayersLayer(layerProps) {
15182
15284
  });
15183
15285
  case LayerType.edrLayer:
15184
15286
  {
15185
- var styleLike = style !== undefined ? styleNameToStyleLike(style) : undefined;
15287
+ var multiParam = name === null || name === void 0 ? void 0 : name.includes(',');
15288
+ var styleLike = style !== undefined ? styleNameToStyleLike(style, multiParam) : undefined;
15186
15289
  return jsx(TimeAwareEDRLocationLayer, {
15187
15290
  layerId: id,
15188
15291
  edrBaseUrl: service,
@@ -15191,7 +15294,8 @@ var OpenLayersLayer = function OpenLayersLayer(layerProps) {
15191
15294
  zIndex: layerOptions.zIndex,
15192
15295
  style: styleLike,
15193
15296
  opacity: layerOptions.opacity,
15194
- onInitializeLayer: onInitializeLayer
15297
+ onInitializeLayer: onInitializeLayer,
15298
+ visible: !!(enabled !== false)
15195
15299
  });
15196
15300
  }
15197
15301
  }
@@ -15234,7 +15338,10 @@ var OpenLayersLayer = function OpenLayersLayer(layerProps) {
15234
15338
  }
15235
15339
  return jsx(XYZLayer, {
15236
15340
  urlTemplate: urlTemplate,
15237
- layerOptions: layerOptions,
15341
+ layerOptions: _objectSpread2(_objectSpread2({}, layerOptions), {}, {
15342
+ minZoom: tileSettingForCRS === null || tileSettingForCRS === void 0 ? void 0 : tileSettingForCRS.minLevel,
15343
+ maxZoom: tileSettingForCRS === null || tileSettingForCRS === void 0 ? void 0 : tileSettingForCRS.maxLevel
15344
+ }),
15238
15345
  layerProps: _objectSpread2(_objectSpread2({}, layerProps), {}, {
15239
15346
  enabled: true
15240
15347
  }),
@@ -16232,4 +16339,4 @@ var getLayerUpdateInfo = function getLayerUpdateInfo(wmLayer, mapId) {
16232
16339
  return updateObject;
16233
16340
  };
16234
16341
 
16235
- export { BaseLayerType, ClickOnMapTool, DRAWMODE, DefaultBaseLayers, DimensionSelectButton, DimensionSelectDialog, DimensionSelectSlider, EditModeButton as EditModeButtonField, FEATURE_FILL, FEATURE_STROKE, FEATURE_STROKE_EDIT, FEATURE_VERTICES_EDIT_HANDLES, FEATURE_VERTICE_HANDLE_IMAGE, FEATURE_VERTICE_IMAGE, FeatureLayer, FeatureLayers, GeoJSONTextField, ICON_LOCATIONMARKER, ICON_LOCATIONMARKER_MODIFY, IntersectionSelect, LayerInfoButton, LayerInfoDialog, LayerInfoLegend, LayerInfoList, LayerInfoText, Legend, LegendButton, LegendDialog, LegendLayout, MapContext, MapControlButton, MapControls, MapDimensionSelect, MapFeatureClass, MapTime, MapWarningProperties, NEW_FEATURE_CREATED, NEW_LINESTRING_CREATED, NEW_POINT_CREATED, OpenLayersFeatureLayer, OpenLayersGetFeatureInfo, OpenLayersLayer, OpenLayersMapDraw, OpenLayersMapView, OpenLayersZoomControl, Proj4js, SelectField, StoryLayoutGrid, TimeAwareEDRLocationLayer, TimeContext, TimeawareImageSource, TimeawareImageSourceWMSLayer, WEBMAP_REACT_NAMESPACE, WMSLayer, WMTSLayer, XYZLayer, ZoomControls, addFeatureProperties, addGeoJSONProperties, addSelectionTypeToGeoJSON, basicExampleDrawOptions, basicExampleMultipleShapeDrawOptions, basicExampleMultipleShapeWithValuesDrawOptions, clearImageCacheForAllMaps, colorMaps, createIconStyle, createInterSections, currentlySupportedDrawModes, defaultBox, defaultDelete, defaultGeoJSONStyleProperties, defaultIntersectionStyleProperties, defaultLayers, defaultModes, defaultPoint, defaultPolygon, defaultTimeFormat, dimensionConfig, drawPolyStoryStyles, drawStyles, emptyGeoJSON, endToolExampleConfig, exampleIntersectionOptions, exampleIntersectionWithShapeOptions, exampleIntersections, exampleIntersectionsMultiDrawTool, fakeEdrLayerApiHandlers, featureBox, featureMultiPoint, featurePoint, featurePolygon, fillOptions, firSelectionType, formatTime, genericOpenLayersFeatureStyle, geowebColorToOpenLayersColor, getDimensionIcon, getDimensionLabel, getDimensionValue, getDimensionsList, getDoubleControlToolIcon, getFeatureCollection, getFeatureExtent, getFirTitle, getGeoJSONPropertyValue, getGeoJson, getIcon, getIntersectionToolIcon, getIsInsideAcceptanceTime, getLastEmptyFeatureIndex, getLayerBbox, getLayerStyles, getLayerUpdateInfo, getLegendClass, getProj4, getTimeDimension, getToolIcon, initializeOpenLayersProjections, inlineFeatureStyle, intersectPointGeoJSONS, intersectPolygonGeoJSONS, intersectionFeatureBE, intersectionFeatureNL, isGeoJSONFeatureCreatedByTool, isGeoJSONGeometryEmpty, isPointFeatureCollection, lineString, lineStringCollection, makeFeatureStyleDisc, makeFeatureStyleLoading, makeLegendFromColorMap, makeView, marksByDimension, modifyStyles, moveFeature, multiLineStringLabelStyle, multiPolygonLabelStyle, opacityOptions, openLayersGetMapImageStore, precipitationMMLegendColorsWoW, projectorCache, publicLayers, publicServices, rewindGeometry, selectPreferredWMSProjection, setMapCenter, setViewFromExtent, setViewFromFeature, simpleBoxGeoJSON, simpleBoxGeoJSONWrongOrder, simpleFlightRouteLineStringGeoJSON, simpleFlightRoutePointsGeoJSON, simpleGeometryCollectionGeoJSON, simpleLineStringGeoJSON, simpleMultiPolygon, simplePointsGeojson, simplePolygonGeoJSON, simpleSmallLineStringGeoJSON, startToolExampleConfig, strokeWidthOptions, styleNameToStyleLike, temperatureLegendColorsCWK, temperatureLegendColorsWoW, textLabelStyle, textStyle, textStyleWithMargin, updateEditModeButtonsWithFir, useAnimationForLayer, useEDRLayerCollection, useEDRLayerCollectionCube, useGeoJSON, useGetEDRLayerInstance, useGetWMLayerInstance, useGetWMSLayerStyleList, useIconStyle, useMapDrawTool, useProjection, useQueryGetWMSGetCapabilities, useQueryGetWMSLayer, useQueryGetWMSLayers, useQueryGetWMSLayersTree, useQueryGetWMSServiceInfo, useQueryWMTSGetCapabilities, useSetIntervalWhenVisible, useViewFromLayer, viewUtils, webmapReactTranslations };
16342
+ export { BaseLayerType, ClickOnMapTool, DRAWMODE, DefaultBaseLayers, DimensionSelectButton, DimensionSelectDialog, DimensionSelectSlider, EditModeButton as EditModeButtonField, FEATURE_FILL, FEATURE_STROKE, FEATURE_STROKE_EDIT, FEATURE_VERTICES_EDIT_HANDLES, FEATURE_VERTICE_HANDLE_IMAGE, FEATURE_VERTICE_IMAGE, FeatureLayer, FeatureLayers, GeoJSONTextField, ICON_LOCATIONMARKER, ICON_LOCATIONMARKER_MODIFY, IntersectionSelect, LayerInfoButton, LayerInfoDialog, LayerInfoLegend, LayerInfoList, LayerInfoText, Legend, LegendButton, LegendDialog, LegendLayout, MapContext, MapControlButton, MapControls, MapDimensionSelect, MapFeatureClass, MapTime, MapWarningProperties, NEW_FEATURE_CREATED, NEW_LINESTRING_CREATED, NEW_POINT_CREATED, OpenLayersFeatureLayer, OpenLayersGetFeatureInfo, OpenLayersLayer, OpenLayersMapDraw, OpenLayersMapView, OpenLayersZoomControl, Proj4js, SelectField, StoryLayoutGrid, TimeAwareEDRLocationLayer, TimeContext, TimeawareImageSource, TimeawareImageSourceWMSLayer, WEBMAP_REACT_NAMESPACE, WMSLayer, WMTSLayer, XYZLayer, ZoomControls, addFeatureProperties, addGeoJSONProperties, addSelectionTypeToGeoJSON, basicExampleDrawOptions, basicExampleMultipleShapeDrawOptions, basicExampleMultipleShapeWithValuesDrawOptions, clearImageCacheForAllMaps, colorMaps, createIconStyle, createInterSections, currentlySupportedDrawModes, defaultBox, defaultDelete, defaultGeoJSONStyleProperties, defaultIntersectionStyleProperties, defaultLayers, defaultModes, defaultPoint, defaultPolygon, defaultTimeFormat, dimensionConfig, drawPolyStoryStyles, drawStyles, emptyGeoJSON, endToolExampleConfig, exampleIntersectionOptions, exampleIntersectionWithShapeOptions, exampleIntersections, exampleIntersectionsMultiDrawTool, fakeEdrLayerApiHandlers, featureBox, featureMultiPoint, featurePoint, featurePolygon, fillOptions, firSelectionType, formatTime, genericOpenLayersFeatureStyle, geowebColorToOpenLayersColor, getDimensionIcon, getDimensionLabel, getDimensionValue, getDimensionsList, getDoubleControlToolIcon, getFeatureCollection, getFeatureExtent, getFirTitle, getGeoJSONPropertyValue, getGeoJson, getIcon, getIntersectionToolIcon, getIsInsideAcceptanceTime, getLastEmptyFeatureIndex, getLayerBbox, getLayerStyles, getLayerUpdateInfo, getLegendClass, getProj4, getTimeDimension, getToolIcon, initializeOpenLayersProjections, inlineFeatureStyle, intersectPointGeoJSONS, intersectPolygonGeoJSONS, intersectionFeatureBE, intersectionFeatureNL, isGeoJSONFeatureCreatedByTool, isGeoJSONGeometryEmpty, isPointFeatureCollection, lineString, lineStringCollection, makeFeatureStyleDisc, makeFeatureStyleLoading, makeFeatureStyleMultiParam, makeFeatureStyleMultiParamLoading, makeLegendFromColorMap, makeView, marksByDimension, modifyStyles, moveFeature, multiLineStringLabelStyle, multiPolygonLabelStyle, opacityOptions, openLayersGetMapImageStore, precipitationMMLegendColorsWoW, projectorCache, publicLayers, publicServices, rewindGeometry, selectPreferredWMSProjection, setMapCenter, setViewFromExtent, setViewFromFeature, simpleBoxGeoJSON, simpleBoxGeoJSONWrongOrder, simpleFlightRouteLineStringGeoJSON, simpleFlightRoutePointsGeoJSON, simpleGeometryCollectionGeoJSON, simpleLineStringGeoJSON, simpleMultiPolygon, simplePointsGeojson, simplePolygonGeoJSON, simpleSmallLineStringGeoJSON, startToolExampleConfig, strokeWidthOptions, styleNameToStyleLike, temperatureLegendColorsCWK, temperatureLegendColorsWoW, textLabelStyle, textStyle, textStyleWithMargin, updateEditModeButtonsWithFir, useAnimationForLayer, useEDRLayerCollection, useEDRLayerCollectionCube, useGeoJSON, useGetEDRLayerInstance, useGetWMLayerInstance, useGetWMSLayerStyleList, useIconStyle, useMapDrawTool, useProjection, useQueryGetWMSGetCapabilities, useQueryGetWMSLayer, useQueryGetWMSLayers, useQueryGetWMSLayersTree, useQueryGetWMSServiceInfo, useQueryWMTSGetCapabilities, useSetIntervalWhenVisible, useViewFromLayer, viewUtils, webmapReactTranslations };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/webmap-react",
3
- "version": "12.12.0",
3
+ "version": "12.13.0",
4
4
  "description": "GeoWeb react wrapper for webmap",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -8,9 +8,9 @@
8
8
  "url": "git@gitlab.com:opengeoweb/opengeoweb.git"
9
9
  },
10
10
  "dependencies": {
11
- "@opengeoweb/webmap": "12.12.0",
12
- "@opengeoweb/theme": "12.12.0",
13
- "@opengeoweb/shared": "12.12.0",
11
+ "@opengeoweb/webmap": "12.13.0",
12
+ "@opengeoweb/theme": "12.13.0",
13
+ "@opengeoweb/shared": "12.13.0",
14
14
  "lodash": "^4.17.21",
15
15
  "ol": "^10.4.0",
16
16
  "proj4": "^2.9.2",
@@ -6,6 +6,7 @@ export interface MapDimensionSelectProps {
6
6
  handleDimensionValueChanged: (layerId: string, dimensionName: string, dimensionValue: string) => void;
7
7
  handleSyncChanged: (layerId: string, dimensionName: string, dimensionValue: string, synced: boolean) => void;
8
8
  layerDimension: Dimension;
9
+ layerName: string;
9
10
  }
10
11
  declare const MapDimensionSelect: React.FC<MapDimensionSelectProps>;
11
12
  export default MapDimensionSelect;
@@ -9,5 +9,7 @@ export interface FeatureLayerProps {
9
9
  clickOnFeature?: ClickOnFeature;
10
10
  testId?: string;
11
11
  opacity?: number;
12
+ declutter?: boolean;
13
+ visible?: boolean;
12
14
  }
13
15
  export declare const FeatureLayer: React.FC<FeatureLayerProps>;
@@ -9,5 +9,7 @@ export interface OpenLayersFeatureLayerProps {
9
9
  clickOnFeature?: ClickOnFeature;
10
10
  testId?: string;
11
11
  opacity?: number;
12
+ declutter?: boolean;
13
+ visible?: boolean;
12
14
  }
13
15
  export declare const OpenLayersFeatureLayer: React.FC<OpenLayersFeatureLayerProps>;
@@ -9,6 +9,7 @@ interface TimeAwareEDRLocationLayerProps extends OpenLayersFeatureLayerProps {
9
9
  dimensions?: Dimension[];
10
10
  onInitializeLayer?: (payload: OnInitializeLayerProps) => void;
11
11
  opacity?: number;
12
+ visible?: boolean;
12
13
  }
13
14
  export declare const TimeAwareEDRLocationLayer: React.FC<TimeAwareEDRLocationLayerProps>;
14
15
  export {};
@@ -1,2 +1,2 @@
1
1
  import { CoverageCollection } from '@opengeoweb/shared';
2
- export declare const coverageCollectionToFeatureCollection: (cov: CoverageCollection | undefined, parameterName: string) => GeoJSON.FeatureCollection;
2
+ export declare const coverageCollectionToFeatureCollection: (cov: CoverageCollection | undefined, parameterNames: string) => GeoJSON.FeatureCollection;
@@ -16,6 +16,8 @@ export declare const makeLegendFromColorMap: (props: {
16
16
  max: number;
17
17
  }) => EdrOlColorLegend;
18
18
  export declare const getLegendClass: (edrColorLegend: EdrOlColorLegend, value: number, clip?: boolean) => EdrMapLegendEntry | undefined;
19
+ export declare const makeFeatureStyleMultiParam: (feature: FeatureLike) => Style[];
20
+ export declare const makeFeatureStyleMultiParamLoading: () => Style;
19
21
  export declare const makeFeatureStyleDisc: (feature: FeatureLike, legend: EdrOlColorLegend) => Style;
20
22
  export declare const makeFeatureStyleLoading: (feature: FeatureLike) => Style;
21
- export declare const styleNameToStyleLike: ((styleName: string) => ((feature: FeatureLike) => Style)) & import("lodash").MemoizedFunction;
23
+ export declare const styleNameToStyleLike: ((styleName: string, multiParam?: boolean) => ((feature: FeatureLike) => Style | Style[])) & import("lodash").MemoizedFunction;