@opengeoweb/core 9.35.1-spike-oltanstack.0 → 9.37.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/README.md CHANGED
@@ -24,11 +24,29 @@ import {
24
24
  LegendMapButtonConnect,
25
25
  CoreThemeStoreProvider,
26
26
  } from '@opengeoweb/core';
27
- import { mapActions } from '@opengeoweb/store';
27
+ import {
28
+ genericListener,
29
+ mapStoreModuleConfig,
30
+ mapStoreReducers,
31
+ mapActions,
32
+ syncGroupsReducer,
33
+ uiReducer,
34
+ } from '@opengeoweb/store';
28
35
  import { TimeSliderConnect } from '@opengeoweb/timeslider';
29
- import { createStore } from '@redux-eggs/redux-toolkit';
36
+ import { configureStore } from '@reduxjs/toolkit';
30
37
 
31
- const store = createStore({});
38
+ const store = configureStore({
39
+ reducer: {
40
+ ...mapStoreReducers,
41
+ ui: uiReducer,
42
+ syncronizationGroupStore: syncGroupsReducer,
43
+ snackbar: snackbarReducer,
44
+ },
45
+ middleware: [
46
+ ...mapStoreModuleConfig.middlewares!,
47
+ genericListener.middleware,
48
+ ],
49
+ });
32
50
 
33
51
  const ConnectedMapWithTimeSlider = ({ mapId }) => {
34
52
  const dispatch = useDispatch();
package/index.esm.js CHANGED
@@ -2,7 +2,7 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import React__default, { useState, useCallback, useRef } from 'react';
4
4
  import { Grid2, Box, MenuItem, Typography, useTheme, Popper, Fade, Tooltip, styled, LinearProgress, FormControl, InputLabel, Paper, List, ListItemButton, ListItemText, CircularProgress, ListSubheader, Dialog, DialogTitle, DialogContent, DialogContentText, TextField, InputAdornment, DialogActions, Button, circularProgressClasses, ListItemIcon, Checkbox, Switch, Select } from '@mui/material';
5
- import { SHARED_NAMESPACE, sharedTranslations, CustomIconButton, CustomTooltip, TooltipSelect, AlertIcon, sliderHeaderStyle, CustomSlider, ToggleMenu, tooltipContainerStyles, renderCounter, AlertBanner, CustomAccordion, PROJECTION, calculateStartSize, useWheelStopPropagation, ToolContainerDraggable, useDebounce, dateUtils, withEggs, ErrorBoundary } from '@opengeoweb/shared';
5
+ import { SHARED_NAMESPACE, sharedTranslations, CustomIconButton, CustomTooltip, TooltipSelect, AlertIcon, sliderHeaderStyle, CustomSlider, ToggleMenu, tooltipContainerStyles, renderCounter, AlertBanner, CustomAccordion, PROJECTION, calculateStartSize, useWheelStopPropagation, ToolContainerDraggable, useDebounce, dateUtils, ErrorBoundary } from '@opengeoweb/shared';
6
6
  import { CollapseSmall, CollapseMedium, CollapseLarge, CollapseWindow, ExpandWindow, LayersAdd, CloudLoading, ColumnCollapsed, ColumnCollapse, Copy, None, FastForward, AutoUpdateActive, Both, Visibility, VisibilityOff, Delete, DragHandle as DragHandle$1, Cached, Add, MapAdd, WorldMapProjection, Layers, ExitDomain, Info, Search, Exclamation, MyLocation, Close, ThemeWrapper, lightTheme, FlagBritain, FlagNetherlands, FlagFinland, FlagNorway } from '@opengeoweb/theme';
7
7
  import i18n from 'i18next';
8
8
  import { initReactI18next, useTranslation, I18nextProvider } from 'react-i18next';
@@ -11,11 +11,11 @@ import { WEBMAP_REACT_NAMESPACE, webmapReactTranslations, WEBMAP_NAMESPACE, webm
11
11
  import { useDispatch, useSelector, connect, useStore, Provider } from 'react-redux';
12
12
  import { ReactSortable } from 'react-sortablejs';
13
13
  import Sortable from 'sortablejs';
14
- import { layerTypes, layerUtils, mapSelectors, layerActions, layerSelectors, serviceSelectors, serviceActions, mapActions, mapEnums, uiSelectors, uiTypes, useSetupDialog, filterLayers, getUserAddedServices, uiActions, genericSelectors, genericActions, drawtoolSelectors, syncConstants, loadingIndicatorActions, syncGroupsSelectors, defaultLayers, mapStoreActions, getSingularDrawtoolDrawLayerId, syncGroupsSelector, syncGroupsActions, coreModuleConfig, routerUtils, routerModuleConfig } from '@opengeoweb/store';
15
- import { webmapUtils, queryWMSServiceInfo, queryWMSLayers, queryWMSLayersTree, invalidateWMSGetCapabilities, LayerType, getWMSServiceId, handleDateUtilsISOString, wmServiceListener, EVENT_GETCAPABILITIES_START, EVENT_GETCAPABILITIES_READY, getWMSGetFeatureInfoRequestURL, WMLayer } from '@opengeoweb/webmap';
14
+ import { layerTypes, layerUtils, mapSelectors, layerActions, layerSelectors, serviceSelectors, serviceActions, mapActions, mapEnums, uiSelectors, uiTypes, useSetupDialog, filterLayers, getUserAddedServices, uiActions, genericSelectors, genericActions, drawtoolSelectors, syncConstants, loadingIndicatorActions, syncGroupsSelectors, defaultLayers, mapStoreActions, getSingularDrawtoolDrawLayerId, syncGroupsSelector, syncGroupsActions, routerUtils } from '@opengeoweb/store';
15
+ import { webmapUtils, WMGetServiceFromStore, getCapabilities, LayerType, handleDateUtilsISOString, wmServiceListener, EVENT_GETCAPABILITIES_START, EVENT_GETCAPABILITIES_READY, getWMSGetFeatureInfoRequestURL, WMLayer } from '@opengeoweb/webmap';
16
16
  import { Box as Box$1, styled as styled$1 } from '@mui/system';
17
- import _, { isEqual, range } from 'lodash';
18
- import { LayerSelectButtonConnect, LayerSelectConnect, layerSelectConfig } from '@opengeoweb/layer-select';
17
+ import _, { isEqual, debounce, range } from 'lodash';
18
+ import { LayerSelectButtonConnect, LayerSelectConnect } from '@opengeoweb/layer-select';
19
19
  import axios from 'axios';
20
20
  import DOMPurify from 'dompurify';
21
21
  import { snackbarTypes, snackbarActions, SnackbarWrapperConnect } from '@opengeoweb/snackbar';
@@ -2834,13 +2834,10 @@ var RenderLayersConnect = function RenderLayersConnect(_ref) {
2834
2834
  case 0:
2835
2835
  _context.prev = 0;
2836
2836
  _context.next = 3;
2837
- return queryWMSLayers(serviceUrl);
2837
+ return getCapabilities.getLayersFlattenedFromService(serviceUrl);
2838
2838
  case 3:
2839
2839
  _layers = _context.sent;
2840
- _context.next = 6;
2841
- return queryWMSServiceInfo(serviceUrl);
2842
- case 6:
2843
- wmService = _context.sent;
2840
+ wmService = WMGetServiceFromStore(serviceUrl);
2844
2841
  serviceSetLayers({
2845
2842
  id: wmService.id,
2846
2843
  name: wmService.title,
@@ -2849,17 +2846,17 @@ var RenderLayersConnect = function RenderLayersConnect(_ref) {
2849
2846
  scope: 'user',
2850
2847
  "abstract": wmService["abstract"]
2851
2848
  });
2852
- _context.next = 13;
2849
+ _context.next = 11;
2853
2850
  break;
2854
- case 10:
2855
- _context.prev = 10;
2851
+ case 8:
2852
+ _context.prev = 8;
2856
2853
  _context.t0 = _context["catch"](0);
2857
2854
  console.warn(_context.t0.message);
2858
- case 13:
2855
+ case 11:
2859
2856
  case "end":
2860
2857
  return _context.stop();
2861
2858
  }
2862
- }, _callee, null, [[0, 10]]);
2859
+ }, _callee, null, [[0, 8]]);
2863
2860
  }));
2864
2861
  return function addService(_x) {
2865
2862
  return _ref2.apply(this, arguments);
@@ -3842,40 +3839,17 @@ var WMSLayerTree = function WMSLayerTree(_ref) {
3842
3839
  React.useEffect(function () {
3843
3840
  var isMounted = true;
3844
3841
  setIsLoading(true);
3845
- var makeServiceQuery = /*#__PURE__*/function () {
3846
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
3847
- return _regeneratorRuntime().wrap(function _callee$(_context) {
3848
- while (1) switch (_context.prev = _context.next) {
3849
- case 0:
3850
- if (!forceReload) {
3851
- _context.next = 3;
3852
- break;
3853
- }
3854
- _context.next = 3;
3855
- return invalidateWMSGetCapabilities(service.url);
3856
- case 3:
3857
- queryWMSLayersTree(service.url).then(function (layerTreeFromPromise) {
3858
- if (isMounted) {
3859
- setLayerTree(layerTreeFromPromise);
3860
- setIsLoading(false);
3861
- }
3862
- })["catch"](function (error) {
3863
- if (isMounted) {
3864
- setLayerTree(error.toString());
3865
- setIsLoading(false);
3866
- }
3867
- });
3868
- case 4:
3869
- case "end":
3870
- return _context.stop();
3871
- }
3872
- }, _callee);
3873
- }));
3874
- return function makeServiceQuery() {
3875
- return _ref2.apply(this, arguments);
3876
- };
3877
- }();
3878
- void makeServiceQuery();
3842
+ getCapabilities.getLayersFromService(service.url, forceReload).then(function (layerTreeFromPromise) {
3843
+ if (isMounted) {
3844
+ setLayerTree(layerTreeFromPromise);
3845
+ setIsLoading(false);
3846
+ }
3847
+ })["catch"](function (error) {
3848
+ if (isMounted) {
3849
+ setLayerTree(error.toString());
3850
+ setIsLoading(false);
3851
+ }
3852
+ });
3879
3853
  return function () {
3880
3854
  isMounted = false;
3881
3855
  setForceReload(false);
@@ -4106,7 +4080,7 @@ var preset = {
4106
4080
  timeSeriesServices: [
4107
4081
  {
4108
4082
  name: "KNMI OBS",
4109
- url: "https://gw-edr-dev-add-cfn.pub.dev.knmi.cloud/edr",
4083
+ url: "https://gw-edr.pub.knmi.cloud/edr",
4110
4084
  id: "knmi",
4111
4085
  description: "KNMI EDR",
4112
4086
  type: "EDR",
@@ -4321,7 +4295,7 @@ var AddLayersPopup = function AddLayersPopup(_ref) {
4321
4295
  // Check if valid URL was passed
4322
4296
  } else if (validateServiceUrl(serviceURL)) {
4323
4297
  // Check if service is WMS server
4324
- queryWMSLayersTree(serviceURL).then(function (layerTreeFromPromise) {
4298
+ getCapabilities.getLayersFromService(serviceURL).then(function (layerTreeFromPromise) {
4325
4299
  // Shorten URL as a naming backup
4326
4300
  var shortenedURL = serviceURL.substring(serviceURL.indexOf('//') + 2, serviceURL.indexOf('?'));
4327
4301
  handleAddToList(layerTreeFromPromise.title || layerTreeFromPromise.name || shortenedURL);
@@ -4921,45 +4895,36 @@ var LayerManager = function LayerManager(_ref) {
4921
4895
  });
4922
4896
  };
4923
4897
 
4924
- var getServicesToLoad = /*#__PURE__*/function () {
4925
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(services) {
4926
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
4927
- while (1) switch (_context2.prev = _context2.next) {
4928
- case 0:
4929
- return _context2.abrupt("return", Promise.all(services.map( /*#__PURE__*/function () {
4930
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(service) {
4931
- var scope;
4932
- return _regeneratorRuntime().wrap(function _callee$(_context) {
4933
- while (1) switch (_context.prev = _context.next) {
4934
- case 0:
4935
- scope = service.scope ? service.scope : 'system';
4936
- return _context.abrupt("return", {
4937
- id: getWMSServiceId(service.url),
4938
- name: service.name,
4939
- url: service.url,
4940
- scope: scope,
4941
- "abstract": service["abstract"]
4942
- });
4943
- case 2:
4944
- case "end":
4945
- return _context.stop();
4946
- }
4947
- }, _callee);
4948
- }));
4949
- return function (_x2) {
4950
- return _ref2.apply(this, arguments);
4951
- };
4952
- }())));
4953
- case 1:
4954
- case "end":
4955
- return _context2.stop();
4956
- }
4957
- }, _callee2);
4958
- }));
4959
- return function getServicesToLoad(_x) {
4960
- return _ref.apply(this, arguments);
4961
- };
4962
- }();
4898
+ /* *
4899
+ * Licensed under the Apache License, Version 2.0 (the "License");
4900
+ * you may not use this file except in compliance with the License.
4901
+ * You may obtain a copy of the License at
4902
+ *
4903
+ * http://www.apache.org/licenses/LICENSE-2.0
4904
+ *
4905
+ * Unless required by applicable law or agreed to in writing, software
4906
+ * distributed under the License is distributed on an "AS IS" BASIS,
4907
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4908
+ * See the License for the specific language governing permissions and
4909
+ * limitations under the License.
4910
+ *
4911
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4912
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
4913
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
4914
+ * */
4915
+ var getServicesToLoad = function getServicesToLoad(services) {
4916
+ return services.map(function (service) {
4917
+ var wmService = WMGetServiceFromStore(service.url);
4918
+ var scope = service.scope ? service.scope : 'system';
4919
+ return {
4920
+ id: wmService.id,
4921
+ name: service.name,
4922
+ url: service.url,
4923
+ scope: scope,
4924
+ "abstract": service["abstract"] || wmService["abstract"]
4925
+ };
4926
+ });
4927
+ };
4963
4928
  var useFetchServices = function useFetchServices(dialogType, preloadedServices, shouldDisableFetch) {
4964
4929
  if (preloadedServices === void 0) {
4965
4930
  preloadedServices = preloadedDefaultMapServices;
@@ -4982,7 +4947,7 @@ var useFetchServices = function useFetchServices(dialogType, preloadedServices,
4982
4947
  React.useEffect(function () {
4983
4948
  if (!shouldDisableFetch && isOpenInStore && preloadedServices && preloadedServices.length > 0 && !services.length) {
4984
4949
  var allServicesToLoad = mergePresetsAndUserAddedServices(preloadedServices, getUserAddedServices());
4985
- void getServicesToLoad(allServicesToLoad).then(fetchInitialServices);
4950
+ fetchInitialServices(getServicesToLoad(allServicesToLoad));
4986
4951
  }
4987
4952
  // eslint-disable-next-line react-hooks/exhaustive-deps
4988
4953
  }, [isOpenInStore, services]);
@@ -5741,9 +5706,11 @@ var MapViewConnect = function MapViewConnect(_ref) {
5741
5706
  dispatch(layerActions.setSelectedFeature(payload));
5742
5707
  }, [dispatch]);
5743
5708
  var handleFeatureSelect = function handleFeatureSelect(mapId, featureId) {
5744
- dispatch(genericActions.setFeatureSelected({
5745
- mapId: mapId,
5746
- featureId: featureId
5709
+ dispatch(genericActions.addSharedData({
5710
+ panelId: mapId,
5711
+ data: {
5712
+ selectedFeatureId: featureId || ''
5713
+ }
5747
5714
  }));
5748
5715
  };
5749
5716
  var updateFeature = React.useCallback(function (_ref2) {
@@ -5823,6 +5790,20 @@ var MapViewConnect = function MapViewConnect(_ref) {
5823
5790
  }));
5824
5791
  }, [dispatch, mapId]);
5825
5792
  var isTimeScrollingEnabled = useSelector(syncGroupsSelectors.isTimeScrollingEnabled);
5793
+ var _useSelector = useSelector(function (state) {
5794
+ return genericSelectors.selectSharedData(state, linkedPanelId);
5795
+ }),
5796
+ hoverId = _useSelector.hoverId;
5797
+ var debouncedSetHoverFeature = React.useMemo(function () {
5798
+ return debounce(function (featureId) {
5799
+ return dispatch(genericActions.addSharedData({
5800
+ panelId: linkedPanelId,
5801
+ data: {
5802
+ hoverId: featureId
5803
+ }
5804
+ }));
5805
+ }, 200);
5806
+ }, [dispatch, linkedPanelId]);
5826
5807
  return jsx("div", {
5827
5808
  style: {
5828
5809
  height: '100%'
@@ -5830,6 +5811,12 @@ var MapViewConnect = function MapViewConnect(_ref) {
5830
5811
  ref: mapRef,
5831
5812
  children: jsxs(MapView, Object.assign({}, props, {
5832
5813
  mapId: mapId,
5814
+ linkedFeatures: {
5815
+ type: 'FeatureCollection',
5816
+ features: linkedFeatures.flatMap(function (feature) {
5817
+ return feature.geoJSON.features;
5818
+ })
5819
+ },
5833
5820
  isTimeScrollingEnabled: isTimeScrollingEnabled,
5834
5821
  srs: srs,
5835
5822
  bbox: bbox,
@@ -5899,15 +5886,26 @@ var MapViewConnect = function MapViewConnect(_ref) {
5899
5886
  }, layer), layer.id);
5900
5887
  }), linkedFeatures == null ? void 0 : linkedFeatures.map(function (feature) {
5901
5888
  return jsx(MapViewLayer, {
5902
- id: "feature-" + (feature == null ? void 0 : feature.id),
5903
- geojson: feature.geoJSON,
5889
+ id: feature.id,
5890
+ geojson: feature == null ? void 0 : feature.geoJSON,
5891
+ onHoverFeature: function onHoverFeature(hoverInfo) {
5892
+ if (hoverInfo === undefined && hoverId !== undefined) {
5893
+ debouncedSetHoverFeature();
5894
+ } else if (hoverInfo != null && hoverInfo.feature && feature.originalId !== hoverId) {
5895
+ debouncedSetHoverFeature(feature.originalId);
5896
+ }
5897
+ },
5904
5898
  onClickFeature: function onClickFeature(event) {
5905
- var _event$feature;
5906
- var isClickOutsideFeature = !event;
5907
- if (isClickOutsideFeature && !event.isInEditMode) {
5899
+ var _event$feature$proper;
5900
+ var isClickOutsideFeature = !event || !event.feature;
5901
+ if (isClickOutsideFeature) {
5902
+ if (mapPinLocation) {
5903
+ handleFeatureSelect(linkedPanelId, undefined);
5904
+ }
5908
5905
  return;
5909
5906
  }
5910
- var clickedFeatureName = (_event$feature = event.feature) == null || (_event$feature = _event$feature.properties) == null ? void 0 : _event$feature.name;
5907
+ // Handle clicks on station
5908
+ var clickedFeatureName = (_event$feature$proper = event.feature.properties) == null ? void 0 : _event$feature$proper.name;
5911
5909
  var features = linkedFeatures[0].geoJSON.features;
5912
5910
  var clickedFeatureIndex = features.findIndex(function (feature) {
5913
5911
  var _feature$properties;
@@ -5919,7 +5917,7 @@ var MapViewConnect = function MapViewConnect(_ref) {
5919
5917
  handleFeatureSelect(linkedPanelId, (_selectedFeature$id = selectedFeature.id) == null ? void 0 : _selectedFeature$id.toString());
5920
5918
  }
5921
5919
  }
5922
- }, feature == null ? void 0 : feature.id);
5920
+ }, feature.id);
5923
5921
  }), featureLayers.map(function (layer) {
5924
5922
  return jsx(MapViewLayer, Object.assign({
5925
5923
  id: "featurelayer-" + layer.id,
@@ -7966,7 +7964,7 @@ var useGetLatestReferenceTime = function useGetLatestReferenceTime(inputLayer) {
7966
7964
  setLatestReferenceTime = _React$useState[1];
7967
7965
  React.useEffect(function () {
7968
7966
  var wmLayer = new WMLayer(Object.assign({}, inputLayer));
7969
- wmLayer.parseLayer().then(function (layer) {
7967
+ wmLayer.parseLayerPromise().then(function (layer) {
7970
7968
  var refTimeDim = layer.getDimension('reference_time');
7971
7969
  var lastRefTime = refTimeDim.getLastValue();
7972
7970
  setLatestReferenceTime(lastRefTime);
@@ -8073,7 +8071,7 @@ var useGetReferenceTimes = function useGetReferenceTimes(inputLayer) {
8073
8071
  React.useEffect(function () {
8074
8072
  var referenceTimes = [];
8075
8073
  var wmLayer = new WMLayer(Object.assign({}, inputLayer));
8076
- wmLayer.parseLayer().then(function (layer) {
8074
+ wmLayer.parseLayerPromise().then(function (layer) {
8077
8075
  var refTimeDim = layer.getDimension('reference_time');
8078
8076
  /* Loop through all values of the dimension.
8079
8077
  A map cannot be used for iterating, as the dimension values are not in an array (it is an API). */
@@ -8693,14 +8691,14 @@ var CoreThemeProvider = function CoreThemeProvider(_ref) {
8693
8691
  children: children
8694
8692
  });
8695
8693
  };
8696
- var ThemeWrapperWithModules = withEggs([].concat(coreModuleConfig, [layerSelectConfig]))(function (_ref2) {
8694
+ var ThemeWrapperWithModules = function ThemeWrapperWithModules(_ref2) {
8697
8695
  var theme = _ref2.theme,
8698
8696
  children = _ref2.children;
8699
8697
  return jsx(CoreThemeProvider, {
8700
8698
  theme: theme,
8701
8699
  children: children
8702
8700
  });
8703
- });
8701
+ };
8704
8702
  /**
8705
8703
  * A Provider component which provides the GeoWeb theme and store for the core.
8706
8704
  * Note: Should only be used with core components, as the provided store is only for core.
@@ -8766,11 +8764,12 @@ var NavigateSetter = function NavigateSetter() {
8766
8764
  return null;
8767
8765
  };
8768
8766
 
8769
- var RouterWrapperConnect = withEggs([routerModuleConfig])(function (props) {
8767
+ var RouterWrapperConnect = function RouterWrapperConnect(props) {
8768
+ var children = props.children;
8770
8769
  return jsxs(Fragment, {
8771
- children: [jsx(NavigateSetter, {}), props.children]
8770
+ children: [jsx(NavigateSetter, {}), children]
8772
8771
  });
8773
- });
8772
+ };
8774
8773
 
8775
8774
  var Circle = styled$1('div')(function (_ref) {
8776
8775
  var isRecording = _ref.isRecording;
@@ -8858,6 +8857,13 @@ var languages = [{
8858
8857
  code: 'no',
8859
8858
  flag: jsx(FlagNorway, {})
8860
8859
  }];
8860
+ var languageLocalStorageKey = 'language';
8861
+ var getLanguageFromLocalStorage = function getLanguageFromLocalStorage() {
8862
+ return window.localStorage.getItem(languageLocalStorageKey);
8863
+ };
8864
+ var saveLanguageToLocalStorage = function saveLanguageToLocalStorage(languageKey) {
8865
+ window.localStorage.setItem(languageLocalStorageKey, languageKey);
8866
+ };
8861
8867
  var LanguageSelect = function LanguageSelect(_ref) {
8862
8868
  var _languages$find;
8863
8869
  var onChangeLanguage = _ref.onChangeLanguage,
@@ -8941,4 +8947,4 @@ var LanguageSelect = function LanguageSelect(_ref) {
8941
8947
  });
8942
8948
  };
8943
8949
 
8944
- export { CORE_NAMESPACE, ConfigurableMapConnect, CoreI18nProvider, CoreThemeProvider, CoreThemeStoreProvider, DemoWrapper, DemoWrapperConnect, HarmonieTempAndPrecipPreset, LanguageSelect, LayerInfoButtonConnect, LayerInfoDialogConnect, LayerManager, BaseLayerRow as LayerManagerBaseLayerRow, LayerManagerConnect, DescriptionRow as LayerManagerDescriptionRow, HeaderOptions as LayerManagerHeaderOptions, LayerContainerRow as LayerManagerLayerContainerRow, LayerManagerMapButtonConnect, LegendConnect, LegendMapButtonConnect, MapViewConnect, MultiDimensionSelectMapButtonsConnect, MultiMapMultiDimensionSelectConnect as MultiMapDimensionSelectConnect, MultiMapViewConnect, MyMapLocation, RouterWrapperConnect, SearchControlButtonConnect, SearchControlConnect, SearchDialog, SentryRecordButton, SyncGroupViewerConnect, ThemeWrapperWithModules, TimeSliderConnect, ZoomControlConnect, componentsLookUp, coreTranslations, defaultBbox, defaultConfigurations, filterMapPresets, filterServices, filterTimeSeriesServices, testLayers, useFetchServices, useUpdateTimeSpan, useUpdateTimestep };
8950
+ export { CORE_NAMESPACE, ConfigurableMapConnect, CoreI18nProvider, CoreThemeProvider, CoreThemeStoreProvider, DemoWrapper, DemoWrapperConnect, HarmonieTempAndPrecipPreset, LanguageSelect, LayerInfoButtonConnect, LayerInfoDialogConnect, LayerManager, BaseLayerRow as LayerManagerBaseLayerRow, LayerManagerConnect, DescriptionRow as LayerManagerDescriptionRow, HeaderOptions as LayerManagerHeaderOptions, LayerContainerRow as LayerManagerLayerContainerRow, LayerManagerMapButtonConnect, LegendConnect, LegendMapButtonConnect, MapViewConnect, MultiDimensionSelectMapButtonsConnect, MultiMapMultiDimensionSelectConnect as MultiMapDimensionSelectConnect, MultiMapViewConnect, MyMapLocation, RouterWrapperConnect, SearchControlButtonConnect, SearchControlConnect, SearchDialog, SentryRecordButton, SyncGroupViewerConnect, ThemeWrapperWithModules, TimeSliderConnect, ZoomControlConnect, componentsLookUp, coreTranslations, defaultBbox, defaultConfigurations, filterMapPresets, filterServices, filterTimeSeriesServices, getLanguageFromLocalStorage, languageLocalStorageKey, saveLanguageToLocalStorage, testLayers, useFetchServices, useUpdateTimeSpan, useUpdateTimestep };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/core",
3
- "version": "9.35.1-spike-oltanstack.0",
3
+ "version": "9.37.0",
4
4
  "description": "GeoWeb Core library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -4,6 +4,9 @@ export declare const languages: {
4
4
  code: string;
5
5
  flag: React.ReactElement;
6
6
  }[];
7
+ export declare const languageLocalStorageKey = "language";
8
+ export declare const getLanguageFromLocalStorage: () => string | null;
9
+ export declare const saveLanguageToLocalStorage: (languageKey: string) => void;
7
10
  declare const LanguageSelect: React.FC<{
8
11
  onChangeLanguage: (currentLanguage: string) => void;
9
12
  isOpen?: boolean;
@@ -1 +1 @@
1
- export { default as LanguageSelect } from './LanguageSelect';
1
+ export { default as LanguageSelect, getLanguageFromLocalStorage, saveLanguageToLocalStorage, languageLocalStorageKey, } from './LanguageSelect';
@@ -1,4 +1,4 @@
1
1
  import { serviceTypes } from '@opengeoweb/store';
2
- export declare const getServicesToLoad: (services: serviceTypes.NoIdService[]) => Promise<serviceTypes.InitialService[]>;
2
+ export declare const getServicesToLoad: (services: serviceTypes.NoIdService[]) => serviceTypes.InitialService[];
3
3
  export declare const useFetchServices: (dialogType: string, preloadedServices?: serviceTypes.InitialService[] | undefined, shouldDisableFetch?: boolean) => void;
4
4
  export declare const mergePresetsAndUserAddedServices: (presets: serviceTypes.InitialService[], userAddedServices: serviceTypes.UserAddedServices) => serviceTypes.NoIdService[];
@@ -1,24 +1,8 @@
1
- import { LayerType, WMLayer } from '@opengeoweb/webmap';
1
+ import { WMLayer } from '@opengeoweb/webmap';
2
2
  import { layerTypes, serviceTypes } from '@opengeoweb/store';
3
- export declare const multiDimensionLayer: {
4
- service: string;
5
- id: string;
6
- name: string;
7
- title: string;
8
- layerType: LayerType;
9
- enabled: boolean;
10
- dimensions: ({
11
- name: string;
12
- units: string;
13
- currentValue: string;
14
- values: string;
15
- } | {
16
- name: string;
17
- units: string;
18
- currentValue: string;
19
- values?: undefined;
20
- })[];
21
- }, WmdefaultReduxLayerRadarKNMI: WMLayer, defaultReduxLayerRadarKNMI: import("@opengeoweb/webmap").LayerOptions, defaultReduxLayerRadarColor: import("@opengeoweb/webmap").LayerOptions, multiDimensionLayer3: import("@opengeoweb/webmap").LayerFoundation;
3
+ export declare const multiDimensionLayer: import("@opengeoweb/webmap").LayerOptions, WmdefaultReduxLayerRadarKNMI: WMLayer, defaultReduxLayerRadarKNMI: import("@opengeoweb/webmap").LayerFoundation & {
4
+ styles: import("@opengeoweb/webmap").Style[];
5
+ }, defaultReduxLayerRadarColor: import("@opengeoweb/webmap").LayerOptions, multiDimensionLayer3: import("@opengeoweb/webmap").LayerFoundation;
22
6
  export declare const flDimensionLayer: layerTypes.Layer;
23
7
  export declare const layerWithSingleDimensionValue: WMLayer;
24
8
  export declare const WmMultiDimensionLayer: WMLayer;