@opengeoweb/core 20.0.1 → 20.1.0-nightly-20261017

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.esm.js +98 -82
  2. package/package.json +10 -10
package/dist/index.esm.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { FormControl, MenuItem, Grid, InputLabel, Paper, Box, Typography, CircularProgress, List, ListSubheader, ListItemButton, ListItemText, DialogContentText, TextField, InputAdornment, Button, useTheme, Tooltip, ListItem, ListItemIcon, Checkbox, Popper, Fade, styled, LinearProgress, Autocomplete, Switch, Select } from '@mui/material';
3
3
  import React, { useMemo, useState, useCallback, useEffect, useContext } from 'react';
4
- import { safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, TooltipSelect, CustomIconButton, CustomDialog, CustomTooltip, ToggleMenu, AlertIcon, useConfirmationDialog, useScrollingInIsolation, sliderHeaderStyle, CustomSlider, SearchField, SearchHighlight, tooltipContainerStyles, renderCounter, AlertBanner, CustomAccordion, PROJECTION, calculateStartSize, useWheelStopPropagation, ToolContainerDraggable, useDebounce, dateUtils, sessionStorageProvider, usePrevious } from '@opengeoweb/shared';
4
+ import { safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, TooltipSelect, CustomIconButton, CustomDialog, CustomTooltip, ToggleMenu, AlertIcon, useScrollingInIsolation, sliderHeaderStyle, CustomSlider, SearchField, SearchHighlight, tooltipContainerStyles, renderCounter, AlertBanner, CustomAccordion, PROJECTION, calculateStartSize, useWheelStopPropagation, ToolContainerDraggable, useDebounce, dateUtils, sessionStorageProvider, usePrevious } from '@opengeoweb/shared';
5
5
  import { webmapUtils, queryWMSLayersTree, invalidateWMSGetCapabilities, LayerType, WMJSDimension, WMDefaultStyleName, queryWMSServiceInfo, queryWMSLayers, getWMSServiceId, handleDateUtilsISOString, generateLayerId, getWMLayerById, getMapDimURL, WMLayer } from '@opengeoweb/webmap';
6
6
  import _, { isEqual, isArray, range, zip, throttle } from 'lodash';
7
7
  import { useDispatch, useSelector, connect, useStore, shallowEqual, Provider } from 'react-redux';
@@ -129,10 +129,6 @@ var en = {
129
129
  "featureinfo-title": "Feature info",
130
130
  "featureinfo-id": "ID",
131
131
  "featureinfo-location": "Location",
132
- "delete-dialog-title": "Delete layer",
133
- "delete-dialog-description": "Are you sure you want to delete this layer? EDR layers are not yet available in the Layer Select.",
134
- "delete-dialog-cancel": "Cancel",
135
- "delete-dialog-confirm": "Delete",
136
132
  "map-options-button": "Location or Measuring tool",
137
133
  "map-measure-tool": "Measuring tool",
138
134
  "data-outdated": "Outdated data"
@@ -410,10 +406,6 @@ var nl = {
410
406
  "featureinfo-title": "niet vertaald",
411
407
  "featureinfo-id": "niet vertaald",
412
408
  "featureinfo-location": "niet vertaald",
413
- "delete-dialog-title": "Laag verwijderen",
414
- "delete-dialog-description": "Weet je zeker dat je deze laag wilt verwijderen? EDR lagen zijn nog niet beschikbaar in de Layer Select.",
415
- "delete-dialog-cancel": "Annuleren",
416
- "delete-dialog-confirm": "Verwijderen",
417
409
  "map-options-button": "Locatie informatie en Meten",
418
410
  "map-measure-tool": "Meten",
419
411
  "data-outdated": "Data is niet actueel"
@@ -2951,14 +2943,10 @@ var DeleteLayerConnect = function DeleteLayerConnect(_ref) {
2951
2943
  var _useCoreTranslation = useCoreTranslation(),
2952
2944
  t = _useCoreTranslation.t;
2953
2945
  var dispatch = useDispatch();
2954
- var confirmationDialog = useConfirmationDialog();
2955
2946
  var nonEmptyTooltipTitle = tooltipTitle != null ? tooltipTitle : t('layermanager-layer-delete');
2956
2947
  var layerIndex = useSelector(function (store) {
2957
2948
  return mapSelectors.getLayerIndexByLayerId(store, mapId, layerId);
2958
2949
  });
2959
- var layerType = useSelector(function (store) {
2960
- return layerSelectors.getLayerType(store, layerId);
2961
- });
2962
2950
  var isFeatureSyncLayer = useSelector(function (store) {
2963
2951
  return layerSelectors.getIsFeatureSyncLayer(store, layerId);
2964
2952
  });
@@ -2978,28 +2966,13 @@ var DeleteLayerConnect = function DeleteLayerConnect(_ref) {
2978
2966
  var onDelete = React.useCallback(function (_ref3) {
2979
2967
  var mapId = _ref3.mapId,
2980
2968
  layerId = _ref3.layerId;
2981
- if (isFeatureSyncLayer) {
2982
- return;
2983
- }
2984
- if (layerType === LayerType.edrFeatureLayer) {
2985
- void confirmationDialog({
2986
- title: t('delete-dialog-title'),
2987
- description: t('delete-dialog-description'),
2988
- confirmLabel: t('delete-dialog-confirm'),
2989
- cancelLabel: t('delete-dialog-cancel')
2990
- }).then(function () {
2991
- layerDelete({
2992
- mapId: mapId,
2993
- layerId: layerId
2994
- });
2995
- });
2996
- } else {
2969
+ if (!isFeatureSyncLayer) {
2997
2970
  layerDelete({
2998
2971
  mapId: mapId,
2999
2972
  layerId: layerId
3000
2973
  });
3001
2974
  }
3002
- }, [isFeatureSyncLayer, layerType, confirmationDialog, t, layerDelete]);
2975
+ }, [isFeatureSyncLayer, layerDelete]);
3003
2976
  return jsx(CustomIconButton, {
3004
2977
  "data-testid": "deleteButton",
3005
2978
  disabled: isFeatureSyncLayer,
@@ -4838,7 +4811,12 @@ var RenderLayersConnect = function RenderLayersConnect(_ref) {
4838
4811
  var serviceUrl = useSelector(function (store) {
4839
4812
  return layerSelectors.getLayerService(store, layerId);
4840
4813
  });
4841
- var resolvedServiceUrl = isStacGeoTIFFLayer ? layerUtils.getSTACServiceRootUrl(serviceUrl) : serviceUrl;
4814
+ var resolvedServiceUrl = serviceUrl;
4815
+ if (isStacGeoTIFFLayer) {
4816
+ resolvedServiceUrl = layerUtils.getSTACServiceRootUrl(serviceUrl);
4817
+ } else if (isEdrLayer) {
4818
+ resolvedServiceUrl = layerUtils.getEDRServiceRootUrl(serviceUrl);
4819
+ }
4842
4820
  var isLayerEnabled = useSelector(function (store) {
4843
4821
  return layerSelectors.getLayerEnabled(store, layerId);
4844
4822
  });
@@ -4846,10 +4824,14 @@ var RenderLayersConnect = function RenderLayersConnect(_ref) {
4846
4824
  return layerSelectors.getLayerStyle(store, layerId);
4847
4825
  });
4848
4826
  var service = useSelector(function (store) {
4849
- if (!isStacGeoTIFFLayer) {
4827
+ if (!isStacGeoTIFFLayer && !isEdrLayer) {
4850
4828
  return serviceSelectors.getServiceByUrl(store, serviceUrl);
4851
4829
  }
4852
- return serviceSelectors.getServiceByUrl(store, resolvedServiceUrl) || serviceSelectors.getServiceByUrl(store, layerUtils.getTrailingSlashVariant(resolvedServiceUrl));
4830
+ var rootService = serviceSelectors.getServiceByUrl(store, resolvedServiceUrl) || serviceSelectors.getServiceByUrl(store, layerUtils.getTrailingSlashVariant(resolvedServiceUrl));
4831
+ if (rootService) {
4832
+ return rootService;
4833
+ }
4834
+ return isEdrLayer ? serviceSelectors.getServiceByUrl(store, serviceUrl) : undefined;
4853
4835
  });
4854
4836
  var layerOptions = useSelector(function (store) {
4855
4837
  return layerSelectors.getLayerOptions(store, layerId);
@@ -4973,6 +4955,7 @@ var RenderLayersConnect = function RenderLayersConnect(_ref) {
4973
4955
  "abstract": data.description,
4974
4956
  layers: layers,
4975
4957
  scope: 'system',
4958
+ isUpdating: true,
4976
4959
  type: 'EDR'
4977
4960
  });
4978
4961
  }, [data, serviceUrl, service, serviceSetLayers]);
@@ -5169,7 +5152,7 @@ var hasMatchingSTACLayerServiceUrl = function hasMatchingSTACLayerServiceUrl(lay
5169
5152
  return !isSTACCollectionUrl(layerInfoServiceUrl) && hasSameSTACServiceUrl(layerServiceUrl, layerInfoServiceUrl);
5170
5153
  };
5171
5154
  var LayerInfoDialogConnect = function LayerInfoDialogConnect(_ref) {
5172
- var _layerInfo$serviceUrl, _selectedMapLayer$ser, _currentService$layer;
5155
+ var _layerInfo$serviceUrl, _selectedMapLayer$ser, _currentService$layer, _selectedMapLayer$opt;
5173
5156
  var source = _ref.source,
5174
5157
  mapId = _ref.mapId;
5175
5158
  var dispatch = useDispatch();
@@ -5229,6 +5212,7 @@ var LayerInfoDialogConnect = function LayerInfoDialogConnect(_ref) {
5229
5212
  return null;
5230
5213
  }
5231
5214
  return jsx(LayerInfoDialog, {
5215
+ edrParameterMetadata: (selectedMapLayer == null ? void 0 : selectedMapLayer.layerType) === LayerType.edrFeatureLayer ? (_selectedMapLayer$opt = selectedMapLayer.options) == null ? void 0 : _selectedMapLayer$opt.parameterMetadata : undefined,
5232
5216
  isOpen: isDialogOpen,
5233
5217
  layer: layer,
5234
5218
  onClose: onCloseDialog,
@@ -6620,22 +6604,20 @@ var AnimationLengthPanelConnect = function AnimationLengthPanelConnect(_ref) {
6620
6604
  var timeStep = useSelector(function (store) {
6621
6605
  return mapSelectors.getMapTimeStep(store, mapId);
6622
6606
  });
6623
- var layerRefTimeDimension = useSelector(function (store) {
6624
- return layerSelectors.getLayerDimension(store, autoTimeStepLayerId, 'reference_time');
6607
+ var anchorInputs = useSelector(function (store) {
6608
+ return mapSelectors.getAnimationAnchorInputs(store, mapId);
6625
6609
  });
6626
- var referenceTimeFromLayer = (layerRefTimeDimension == null ? void 0 : layerRefTimeDimension.currentValue) || undefined;
6627
- var anchorTime = dateUtils.utc(referenceTimeFromLayer);
6628
6610
  var commitAnimationLength = React.useCallback(function (length) {
6629
- var isUsableRange = isValidAnimationLength(length) && isWithinAnimationStepLimit(length, timeStep);
6611
+ var isUsableRange = isValidAnimationLength(length, anchorInputs) && isWithinAnimationStepLimit(length, timeStep, anchorInputs);
6630
6612
  var carriesOwnRange = isAnchoredMode(length.mode) || length.mode === AnimationLengthMode.Exact;
6631
- var resolvedRange = carriesOwnRange && isUsableRange ? settingRange(length, anchorTime) : undefined;
6613
+ var resolvedRange = carriesOwnRange && isUsableRange ? settingRange(length, anchorInputs) : undefined;
6632
6614
  dispatch(mapActions.setAnimationLength(Object.assign({
6633
6615
  mapId: mapId,
6634
6616
  animationLength: length
6635
6617
  }, resolvedRange, {
6636
6618
  origin: mapEnums.MapActionOrigin.map
6637
6619
  })));
6638
- }, [anchorTime, dispatch, mapId, timeStep]);
6620
+ }, [anchorInputs, dispatch, mapId, timeStep]);
6639
6621
  React.useEffect(function () {
6640
6622
  if (debouncedLength && isCommittableRef.current) {
6641
6623
  commitAnimationLength(debouncedLength);
@@ -6651,11 +6633,11 @@ var AnimationLengthPanelConnect = function AnimationLengthPanelConnect(_ref) {
6651
6633
  return;
6652
6634
  }
6653
6635
  if (isStep) {
6654
- var isUsableRange = isValidAnimationLength(animationLength) && isWithinAnimationStepLimit(animationLength, timeStep);
6636
+ var isUsableRange = isValidAnimationLength(animationLength, anchorInputs) && isWithinAnimationStepLimit(animationLength, timeStep, anchorInputs);
6655
6637
  if (isUsableRange) {
6656
6638
  dispatch(mapActions.refreshAnimationRange(Object.assign({
6657
6639
  mapId: mapId
6658
- }, settingRange(animationLength, anchorTime))));
6640
+ }, settingRange(animationLength, anchorInputs))));
6659
6641
  }
6660
6642
  }
6661
6643
  };
@@ -6669,7 +6651,7 @@ var AnimationLengthPanelConnect = function AnimationLengthPanelConnect(_ref) {
6669
6651
  isAutoDisabled: !timeStepFromLayer,
6670
6652
  onChange: changeAnimationLength,
6671
6653
  onInputChange: cancelPendingCommit,
6672
- referenceTimeFromLayer: referenceTimeFromLayer,
6654
+ referenceTimeFromLayer: anchorInputs.referenceTime,
6673
6655
  setting: (_ref2 = draftLength != null ? draftLength : storedAnimationLength) != null ? _ref2 : exactAnimationLengthFrom({
6674
6656
  animationStartTime: animationStartTime,
6675
6657
  animationEndTime: animationEndTime
@@ -7548,6 +7530,31 @@ var LocationSearch = function LocationSearch(_ref) {
7548
7530
  document.removeEventListener('keydown', handleKeyDown);
7549
7531
  };
7550
7532
  }, [dropdownOpen, isOpen]);
7533
+ // Always pass groupBy/renderGroup, and only group when the input is empty.
7534
+ // MUI keeps rendering the last open options while the popup closes, so
7535
+ // toggling groupBy in between makes it read flat options as groups and crash.
7536
+ var groupProps = {
7537
+ groupBy: function groupBy(option) {
7538
+ return debouncedInputValue.trim() === '' && 'groupHeader' in option && typeof option.groupHeader === 'string' ? option.groupHeader : '';
7539
+ },
7540
+ renderGroup: function renderGroup(params) {
7541
+ return jsxs(React.Fragment, {
7542
+ children: [params.group ? jsx(ListSubheader, {
7543
+ disableSticky: true,
7544
+ sx: {
7545
+ color: theme.palette.primary.main,
7546
+ fontWeight: 400,
7547
+ fontSize: '16px',
7548
+ py: 1,
7549
+ my: 0,
7550
+ minHeight: '26px',
7551
+ lineHeight: 1
7552
+ },
7553
+ children: params.group
7554
+ }) : null, Array.isArray(params.children) ? params.children : [params.children]]
7555
+ }, params.key);
7556
+ }
7557
+ };
7551
7558
  return isOpen && mapId ? jsxs(Box, {
7552
7559
  sx: {
7553
7560
  display: 'flex',
@@ -7611,28 +7618,7 @@ var LocationSearch = function LocationSearch(_ref) {
7611
7618
  paddingTop: '20px'
7612
7619
  }
7613
7620
  }
7614
- }, debouncedInputValue.trim() === '' ? {
7615
- groupBy: function groupBy(option) {
7616
- return 'groupHeader' in option && typeof option.groupHeader === 'string' ? option.groupHeader : '';
7617
- },
7618
- renderGroup: function renderGroup(params) {
7619
- return jsxs(React.Fragment, {
7620
- children: [jsx(ListSubheader, {
7621
- disableSticky: true,
7622
- sx: {
7623
- color: theme.palette.primary.main,
7624
- fontWeight: 400,
7625
- fontSize: '16px',
7626
- py: 1,
7627
- my: 0,
7628
- minHeight: '26px',
7629
- lineHeight: 1
7630
- },
7631
- children: params.group
7632
- }), Array.isArray(params.children) ? params.children : [params.children]]
7633
- }, params.key);
7634
- }
7635
- } : {}, {
7621
+ }, groupProps, {
7636
7622
  /* eslint-disable @typescript-eslint/no-explicit-any */
7637
7623
  clearIcon: null,
7638
7624
  inputValue: inputValue,
@@ -10302,14 +10288,11 @@ var TimeSliderLegendConnect = function TimeSliderLegendConnect(_ref) {
10302
10288
  var animationLength = useSelector(function (store) {
10303
10289
  return mapSelectors.getAnimationLength(store, mapId);
10304
10290
  });
10305
- var autoTimeStepLayerId = useSelector(function (store) {
10306
- return mapSelectors.getAutoTimeStepLayerId(store, mapId);
10307
- });
10308
- var layerRefTimeDimension = useSelector(function (store) {
10309
- return layerSelectors.getLayerDimension(store, autoTimeStepLayerId, 'reference_time');
10291
+ var anchorInputs = useSelector(function (store) {
10292
+ return mapSelectors.getAnimationAnchorInputs(store, mapId);
10310
10293
  });
10311
10294
  /* ReferenceTime counts its offsets from the layer, so the reducer is told where that is. */
10312
- var referenceTimeFromLayer = (layerRefTimeDimension == null ? void 0 : layerRefTimeDimension.currentValue) || undefined;
10295
+ var referenceTimeFromLayer = anchorInputs.referenceTime;
10313
10296
  /* An anchored mode counts whole units from its anchor, so a handle may only land on those. */
10314
10297
  var snapAnimationTime = React.useMemo(function () {
10315
10298
  if (!animationLength || !isAnchoredMode(animationLength.mode)) {
@@ -10317,9 +10300,9 @@ var TimeSliderLegendConnect = function TimeSliderLegendConnect(_ref) {
10317
10300
  }
10318
10301
  var unit = activeEditUnit(animationLength);
10319
10302
  return function (timeUnix) {
10320
- return dateUtils.unix(snapInstantToOffsetGrid(anchorInstantFor(animationLength, referenceTimeFromLayer), dateUtils.fromUnix(timeUnix), unit));
10303
+ return dateUtils.unix(snapInstantToOffsetGrid(anchorInstantFor(animationLength, anchorInputs), dateUtils.fromUnix(timeUnix), unit));
10321
10304
  };
10322
- }, [animationLength, referenceTimeFromLayer]);
10305
+ }, [animationLength, anchorInputs]);
10323
10306
  var currentTime = dateUtils.unix(Date.now());
10324
10307
  var _useSelector2 = useSelector(function (store) {
10325
10308
  return mapSelectors.getDataLimitsFromLayers(store, mapId);
@@ -10511,6 +10494,7 @@ var useUpdateTimeSpan = function useUpdateTimeSpan(mapId, myOnSetTimeSliderSpan)
10511
10494
  var activeLayerTimeDimension = useSelector(function (store) {
10512
10495
  return layerSelectors.getLayerTimeDimension(store, autoTimeStepLayerId);
10513
10496
  });
10497
+ var hasActiveLayerTimeDimension = Boolean(activeLayerTimeDimension);
10514
10498
  var timeSliderWidth = useSelector(function (store) {
10515
10499
  return mapSelectors.getMapTimeSliderWidth(store, mapId);
10516
10500
  });
@@ -10529,6 +10513,24 @@ var useUpdateTimeSpan = function useUpdateTimeSpan(mapId, myOnSetTimeSliderSpan)
10529
10513
  var isAnimating = useSelector(function (store) {
10530
10514
  return mapSelectors.isAnimating(store, mapId);
10531
10515
  });
10516
+ var _React$useState = React.useState(function () {
10517
+ return Math.floor(Date.now() / 1000);
10518
+ }),
10519
+ now = _React$useState[0],
10520
+ setNow = _React$useState[1];
10521
+ var updateNow = React.useCallback(function () {
10522
+ setNow(Math.floor(Date.now() / 1000));
10523
+ }, []);
10524
+ React.useEffect(function () {
10525
+ if (!isTimeSpanAuto || !autoTimeStepLayerId || !hasActiveLayerTimeDimension) {
10526
+ return undefined;
10527
+ }
10528
+ updateNow();
10529
+ var intervalId = window.setInterval(updateNow, 60 * 1000);
10530
+ return function () {
10531
+ return window.clearInterval(intervalId);
10532
+ };
10533
+ }, [autoTimeStepLayerId, hasActiveLayerTimeDimension, isTimeSpanAuto, updateNow]);
10532
10534
  var updateTimeSliderSpan = React.useCallback(function (spanInSeconds, newCenterTime) {
10533
10535
  // Do not dispatch actions if values are the same
10534
10536
  if (spanInSeconds !== undefined && newCenterTime !== undefined && (currentTimeSpan !== spanInSeconds || centerTime !== newCenterTime)) {
@@ -10536,14 +10538,28 @@ var useUpdateTimeSpan = function useUpdateTimeSpan(mapId, myOnSetTimeSliderSpan)
10536
10538
  }
10537
10539
  }, [centerTime, currentTimeSpan, myOnSetTimeSliderSpan]);
10538
10540
  React.useEffect(function () {
10541
+ if (isTimeSpanAuto && isAnimating) {
10542
+ return;
10543
+ }
10539
10544
  if (isTimeSpanAuto && autoTimeStepLayerId && activeLayerTimeDimension && !isAnimating) {
10540
10545
  var _getTimeBounds = getTimeBounds([activeLayerTimeDimension]),
10541
10546
  startTime = _getTimeBounds.startTime,
10542
10547
  endTime = _getTimeBounds.endTime;
10543
- var minimumStartTime = selectedTime - 24 * 3600;
10544
- var slicedStartTime = startTime < minimumStartTime ? minimumStartTime : startTime;
10545
- var spanInSeconds = endTime - slicedStartTime;
10546
- var newCenterTime = (slicedStartTime + endTime) / 2;
10548
+ var oneDayInSeconds = 24 * 3600;
10549
+ var slicedStartTime;
10550
+ var slicedEndTime;
10551
+ if (now < startTime) {
10552
+ slicedStartTime = now;
10553
+ slicedEndTime = now + oneDayInSeconds;
10554
+ } else if (now > endTime) {
10555
+ slicedStartTime = now - oneDayInSeconds;
10556
+ slicedEndTime = now;
10557
+ } else {
10558
+ slicedStartTime = Math.max(startTime, now - oneDayInSeconds);
10559
+ slicedEndTime = now;
10560
+ }
10561
+ var spanInSeconds = slicedEndTime - slicedStartTime;
10562
+ var newCenterTime = (slicedStartTime + slicedEndTime) / 2;
10547
10563
  updateTimeSliderSpan(spanInSeconds, newCenterTime);
10548
10564
  } else {
10549
10565
  var _spanInSeconds = currentTimeSpan || defaultTimeSpan;
@@ -10551,7 +10567,7 @@ var useUpdateTimeSpan = function useUpdateTimeSpan(mapId, myOnSetTimeSliderSpan)
10551
10567
  updateTimeSliderSpan(_spanInSeconds, _newCenterTime);
10552
10568
  }
10553
10569
  // eslint-disable-next-line react-hooks/exhaustive-deps
10554
- }, [autoTimeStepLayerId, isTimeSpanAuto, mapId, activeLayerTimeDimension == null ? void 0 : activeLayerTimeDimension.name]);
10570
+ }, [autoTimeStepLayerId, isAnimating, isTimeSpanAuto, mapId, activeLayerTimeDimension == null ? void 0 : activeLayerTimeDimension.name, now]);
10555
10571
  };
10556
10572
  var timeToIso = function timeToIso(selectedTime) {
10557
10573
  return handleDateUtilsISOString(dateUtils.fromUnix(selectedTime).toISOString());
@@ -10625,9 +10641,9 @@ var TimeSliderConnect = function TimeSliderConnect(_ref) {
10625
10641
  useUpdateTimestep(mapId);
10626
10642
  useUpdateTimeSpan(mapId, onSetTimeSliderSpan);
10627
10643
  // Local state for unfiltered selected time
10628
- var _React$useState = React.useState(selectedTime),
10629
- unfilteredSelectedTime = _React$useState[0],
10630
- setUnfilteredSelectedTime = _React$useState[1];
10644
+ var _React$useState2 = React.useState(selectedTime),
10645
+ unfilteredSelectedTime = _React$useState2[0],
10646
+ setUnfilteredSelectedTime = _React$useState2[1];
10631
10647
  // Store unfilteredSelectedTime in a ref for callbacks
10632
10648
  var unfilteredSelectedTimeRef = React.useRef(unfilteredSelectedTime);
10633
10649
  React.useEffect(function () {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/core",
3
- "version": "20.0.1",
3
+ "version": "20.1.0-nightly-20261017",
4
4
  "description": "GeoWeb Core library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -20,28 +20,28 @@
20
20
  }
21
21
  },
22
22
  "dependencies": {
23
- "@opengeoweb/shared": "20.0.1",
23
+ "@opengeoweb/shared": "20.1.0-nightly-20261017",
24
24
  "react-redux": "^9.2.0",
25
- "@opengeoweb/store": "20.0.1",
26
- "@opengeoweb/time-slider": "20.0.1",
25
+ "@opengeoweb/store": "20.1.0-nightly-20261017",
26
+ "@opengeoweb/time-slider": "20.1.0-nightly-20261017",
27
27
  "@reduxjs/toolkit": "^2.6.1",
28
- "@opengeoweb/webmap-react": "20.0.1",
29
- "@opengeoweb/webmap": "20.0.1",
30
- "@opengeoweb/theme": "20.0.1",
31
- "@opengeoweb/layer-select": "20.0.1",
28
+ "@opengeoweb/webmap-react": "20.1.0-nightly-20261017",
29
+ "@opengeoweb/webmap": "20.1.0-nightly-20261017",
30
+ "@opengeoweb/theme": "20.1.0-nightly-20261017",
31
+ "@opengeoweb/layer-select": "20.1.0-nightly-20261017",
32
32
  "lodash": "^4.18.1",
33
33
  "ol": "^10.4.0",
34
34
  "react-sortablejs": "^6.1.4",
35
35
  "sortablejs": "^1.15.1",
36
36
  "@mui/system": "^9.0.1",
37
- "@opengeoweb/snackbar": "20.0.1",
37
+ "@opengeoweb/snackbar": "20.1.0-nightly-20261017",
38
38
  "react-draggable": "^4.4.6",
39
39
  "i18next": "^25.0.1",
40
40
  "react-i18next": "^15.1.1",
41
41
  "dompurify": "^3.4.13",
42
42
  "@mui/material": "^9.0.1",
43
43
  "@tanstack/react-query": "^5.85.5",
44
- "@opengeoweb/api": "20.0.1",
44
+ "@opengeoweb/api": "20.1.0-nightly-20261017",
45
45
  "@types/geojson": "^7946.0.14",
46
46
  "@turf/turf": "^7.2.0",
47
47
  "proj4": "^2.15.0",