@opengeoweb/core 9.15.0 → 9.17.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,24 +1,140 @@
1
1
  import * as React from 'react';
2
2
  import React__default, { useState, useCallback, useRef } from 'react';
3
3
  import { Grid, 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, ListItemIcon, Checkbox } from '@mui/material';
4
- import { CustomIconButton, TooltipSelect, AlertIcon, sliderHeaderStyle, CustomSlider, ToggleMenu, CustomTooltip, tooltipContainerStyles, renderCounter, AlertBanner, CustomAccordion, calculateStartSize, ToolContainerDraggable, useDebounce, dateUtils, withEggs } from '@opengeoweb/shared';
4
+ import { CustomIconButton, SHARED_NAMESPACE, sharedTranslations, TooltipSelect, AlertIcon, sliderHeaderStyle, CustomSlider, ToggleMenu, CustomTooltip, tooltipContainerStyles, renderCounter, AlertBanner, CustomAccordion, calculateStartSize, ToolContainerDraggable, useDebounce, dateUtils, withEggs, ErrorBoundary } from '@opengeoweb/shared';
5
5
  import { CollapseSmall, CollapseMedium, CollapseLarge, CollapseWindow, ExpandWindow, LayersAdd, CloudLoading, Copy, None, FastForward, AutoUpdateActive, Both, Visibility, VisibilityOff, Delete, DragHandle as DragHandle$1, Cached, Add, MapAdd, WorldMapProjection, Layers, List as List$1, ExitDomain, Info, Search, MyLocation, Close, ThemeWrapper, lightTheme } from '@opengeoweb/theme';
6
6
  import { useDispatch, useSelector, connect, useStore, Provider } from 'react-redux';
7
7
  import { ReactSortable } from 'react-sortablejs';
8
8
  import Sortable from 'sortablejs';
9
9
  import { layerTypes, layerUtils, layerActions, layerSelectors, serviceSelectors, serviceActions, mapSelectors, mapActions, mapEnums, uiSelectors, uiTypes, useSetupDialog, filterLayers, getUserAddedServices, uiActions, genericActions, drawtoolSelectors, syncConstants, loadingIndicatorActions, IS_LEGEND_OPEN_BY_DEFAULT, defaultLayers, mapStoreActions, getSingularDrawtoolDrawLayerId, syncGroupsSelectors, syncGroupsSelector, coreModuleConfig, routerUtils, routerModuleConfig } from '@opengeoweb/store';
10
- import { LayerInfoButton, LayerInfoDialog, MapControlButton, MapDimensionSelect, dimensionConfig, DimensionSelectDialog, DimensionSelectButton, ZoomControls, MapView, MapViewLayer, LegendDialog, registerDrawFunction, emptyGeoJSON, MapControls, publicLayers } from '@opengeoweb/webmap-react';
10
+ import { WEBMAP_REACT_NAMESPACE, webmapReactTranslations, LayerInfoButton, LayerInfoDialog, MapControlButton, MapDimensionSelect, dimensionConfig, DimensionSelectDialog, DimensionSelectButton, ZoomControls, MapView, MapViewLayer, LegendDialog, registerDrawFunction, emptyGeoJSON, MapControls, publicLayers } from '@opengeoweb/webmap-react';
11
+ import i18n from 'i18next';
12
+ import { useTranslation, initReactI18next, I18nextProvider } from 'react-i18next';
13
+ import { TIMESLIDER_NAMESPACE, timesliderTranslations, defaultTimeSpan, TIME_SLIDER_LEGEND_HEIGHT, SpeedButton, TimeStepButton, AnimationLengthButton, AnimationLength, TimeSpanButton, marks as marks$1, secondsPerPxFromCanvasWidth, getNewCenterOfFixedPointZoom, OptionsMenuButton, PlayButton, defaultTimeStep, BackwardForwardStepButton, AutoUpdateButton, NowButton, handleSetNowEvent, TimeSliderButtons, TimeSliderCurrentTimeBox, TimeSliderLegend, TimeSlider, onsetNewDateDebounced, getFilteredTime, ControlButtons, OptionsMenu, TimeSliderClock } from '@opengeoweb/timeslider';
11
14
  import { webmapUtils, getCapabilities, WMGetServiceFromStore, LayerType, handleDateUtilsISOString, wmServiceListener, EVENT_GETCAPABILITIES_START, EVENT_GETCAPABILITIES_READY, WMLayer } from '@opengeoweb/webmap';
12
- import { Box as Box$1 } from '@mui/system';
13
- import { defaultTimeSpan, TIME_SLIDER_LEGEND_HEIGHT, SpeedButton, TimeStepButton, AnimationLengthButton, AnimationLength, TimeSpanButton, marks as marks$1, secondsPerPxFromCanvasWidth, getNewCenterOfFixedPointZoom, OptionsMenuButton, PlayButton, defaultTimeStep, BackwardForwardStepButton, AutoUpdateButton, NowButton, handleSetNowEvent, TimeSliderButtons, TimeSliderCurrentTimeBox, TimeSliderLegend, TimeSlider, onsetNewDateDebounced, getFilteredTime, ControlButtons, OptionsMenu, TimeSliderClock } from '@opengeoweb/timeslider';
15
+ import { Box as Box$1, styled as styled$1 } from '@mui/system';
14
16
  import _, { isEqual, range } from 'lodash';
15
17
  import { LayerSelectButtonConnect, LayerSelectConnect, layerSelectConfig } from '@opengeoweb/layer-select';
16
18
  import axios from 'axios';
17
19
  import * as DOMPurify from 'dompurify';
18
- import i18n from 'i18next';
19
- import { initReactI18next, I18nextProvider, useTranslation } from 'react-i18next';
20
20
  import { SnackbarWrapperConnect } from '@opengeoweb/snackbar';
21
21
  import { useNavigate } from 'react-router-dom';
22
+ import * as Sentry from '@sentry/react';
23
+
24
+ var en = {
25
+ feature_info_title: "Click on the map for info.",
26
+ feature_info_no_layers: "No layers added to the map.",
27
+ "add-layer-popup-title": "Load WMS layer(s)",
28
+ "add-layer-popup-service-url": "Service URL",
29
+ "add-layer-popup-available-services": "Available services",
30
+ "add-layer-popup-available-layers": "Available layers for {{serviceName}}",
31
+ "add-layer-popup-reload-layers": "Reload layers from service",
32
+ "layermanager-baselayers-title": "Base layer",
33
+ "layermanager-baselayers-no-available": "No service available",
34
+ "layermanager-acceptance-time": "Acc Time",
35
+ "layermanager-dimensions-total-values": "Dimension value ({{total_dimensions}} options)",
36
+ "layermanager-dimension-title": "Dimension",
37
+ "layermanager-opacity-title": "Opacity",
38
+ "layermanager-opacity-tooltip-prefix": "Opacity: ",
39
+ "layermanager-style-title": "Style",
40
+ "layermanager-layer-error": "This layer could not be loaded: does not exist on the server.",
41
+ "layermanager-layer": "Layer",
42
+ "projection-title": "Projection",
43
+ "wms-loader-title": "Load WMS layer(s)",
44
+ "wms-loader-description": "Please enter a wms server, or select one from the list.",
45
+ "wms-loader-no-data": "No data",
46
+ "wms-loader-error-http": "Use https or allow Mixed Content in your browser to use this WMS service",
47
+ "wms-loader-error-valid-service": "Please enter a valid WMS service",
48
+ "wms-loader-error-valid-url": "Please enter a valid URL",
49
+ "actions-close": "Close"
50
+ };
51
+ var fi = {
52
+ feature_info_title: "ei käännetty",
53
+ feature_info_no_layers: "ei käännetty",
54
+ "add-layer-popup-title": "ei käännetty",
55
+ "add-layer-popup-service-url": "ei käännetty",
56
+ "add-layer-popup-available-services": "ei käännetty",
57
+ "add-layer-popup-available-layers": "ei käännetty",
58
+ "add-layer-popup-reload-layers": "ei käännetty",
59
+ "layermanager-baselayers-title": "ei käännetty",
60
+ "layermanager-baselayers-no-available": "ei käännetty",
61
+ "layermanager-acceptance-time": "ei käännetty",
62
+ "layermanager-dimensions-total-values": "ei käännetty",
63
+ "layermanager-dimension-title": "ei käännetty",
64
+ "layermanager-opacity-title": "ei käännetty",
65
+ "layermanager-opacity-tooltip-prefix": "ei käännetty",
66
+ "layermanager-style-title": "ei käännetty",
67
+ "layermanager-layer-error": "ei käännetty",
68
+ "layermanager-layer": "ei käännetty",
69
+ "projection-title": "ei käännetty",
70
+ "wms-loader-title": "ei käännetty",
71
+ "wms-loader-description": "ei käännetty",
72
+ "wms-loader-no-data": "ei käännetty",
73
+ "wms-loader-error-http": "ei käännetty",
74
+ "wms-loader-error-valid-service": "ei käännetty",
75
+ "wms-loader-error-valid-url": "ei käännetty",
76
+ "actions-close": "ei käännetty"
77
+ };
78
+ var no = {
79
+ feature_info_title: "ikke oversatt",
80
+ feature_info_no_layers: "ikke oversatt",
81
+ "add-layer-popup-title": "ikke oversatt",
82
+ "add-layer-popup-service-url": "ikke oversatt",
83
+ "add-layer-popup-available-services": "ikke oversatt",
84
+ "add-layer-popup-available-layers": "ikke oversatt",
85
+ "add-layer-popup-reload-layers": "ikke oversatt",
86
+ "layermanager-baselayers-title": "ikke oversatt",
87
+ "layermanager-baselayers-no-available": "ikke oversatt",
88
+ "layermanager-acceptance-time": "ikke oversatt",
89
+ "layermanager-dimensions-total-values": "ikke oversatt",
90
+ "layermanager-dimension-title": "ikke oversatt",
91
+ "layermanager-opacity-title": "ikke oversatt",
92
+ "layermanager-opacity-tooltip-prefix": "ikke oversatt",
93
+ "layermanager-style-title": "ikke oversatt",
94
+ "layermanager-layer-error": "ikke oversatt",
95
+ "layermanager-layer": "ikke oversatt",
96
+ "projection-title": "ikke oversatt",
97
+ "wms-loader-title": "ikke oversatt",
98
+ "wms-loader-description": "ikke oversatt",
99
+ "wms-loader-no-data": "ikke oversatt",
100
+ "wms-loader-error-http": "ikke oversatt",
101
+ "wms-loader-error-valid-service": "ikke oversatt",
102
+ "wms-loader-error-valid-url": "ikke oversatt",
103
+ "actions-close": "ikke oversatt"
104
+ };
105
+ var nl = {
106
+ feature_info_title: "niet vertaald",
107
+ feature_info_no_layers: "niet vertaald",
108
+ "add-layer-popup-title": "niet vertaald",
109
+ "add-layer-popup-service-url": "niet vertaald",
110
+ "add-layer-popup-available-services": "niet vertaald",
111
+ "add-layer-popup-available-layers": "niet vertaald",
112
+ "add-layer-popup-reload-layers": "niet vertaald",
113
+ "layermanager-baselayers-title": "niet vertaald",
114
+ "layermanager-baselayers-no-available": "niet vertaald",
115
+ "layermanager-acceptance-time": "niet vertaald",
116
+ "layermanager-dimensions-total-values": "niet vertaald",
117
+ "layermanager-dimension-title": "niet vertaald",
118
+ "layermanager-opacity-title": "niet vertaald",
119
+ "layermanager-opacity-tooltip-prefix": "niet vertaald",
120
+ "layermanager-style-title": "niet vertaald",
121
+ "layermanager-layer-error": "niet vertaald",
122
+ "layermanager-layer": "niet vertaald",
123
+ "projection-title": "niet vertaald",
124
+ "wms-loader-title": "niet vertaald",
125
+ "wms-loader-description": "niet vertaald",
126
+ "wms-loader-no-data": "niet vertaald",
127
+ "wms-loader-error-http": "niet vertaald",
128
+ "wms-loader-error-valid-service": "niet vertaald",
129
+ "wms-loader-error-valid-url": "niet vertaald",
130
+ "actions-close": "niet vertaald"
131
+ };
132
+ var coreTranslations = {
133
+ en: en,
134
+ fi: fi,
135
+ no: no,
136
+ nl: nl
137
+ };
22
138
 
23
139
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
24
140
 
@@ -1896,7 +2012,7 @@ const layerManagerStyle = {
1896
2012
  }
1897
2013
  },
1898
2014
  '.header-layermanager': {
1899
- '.header-left, .header-title': {
2015
+ '.header-left': {
1900
2016
  display: 'none'
1901
2017
  },
1902
2018
  '&>div': {
@@ -2262,6 +2378,49 @@ $$7({ target: 'Array', proto: true, forced: String(test$1) === String(test$1.rev
2262
2378
  }
2263
2379
  });
2264
2380
 
2381
+ const CORE_NAMESPACE = 'core';
2382
+ const initCoreReactI18n = () => {
2383
+ i18n.use(initReactI18next).init({
2384
+ lng: 'en',
2385
+ fallbackLng: 'en',
2386
+ ns: CORE_NAMESPACE,
2387
+ interpolation: {
2388
+ escapeValue: false
2389
+ },
2390
+ resources: {
2391
+ en: {
2392
+ [CORE_NAMESPACE]: coreTranslations.en,
2393
+ [WEBMAP_REACT_NAMESPACE]: webmapReactTranslations.en,
2394
+ [SHARED_NAMESPACE]: sharedTranslations.en,
2395
+ [TIMESLIDER_NAMESPACE]: timesliderTranslations.en
2396
+ },
2397
+ fi: {
2398
+ [CORE_NAMESPACE]: coreTranslations.fi,
2399
+ [WEBMAP_REACT_NAMESPACE]: webmapReactTranslations.fi,
2400
+ [SHARED_NAMESPACE]: sharedTranslations.fi,
2401
+ [TIMESLIDER_NAMESPACE]: timesliderTranslations.fi
2402
+ },
2403
+ no: {
2404
+ [CORE_NAMESPACE]: coreTranslations.no,
2405
+ [WEBMAP_REACT_NAMESPACE]: webmapReactTranslations.no,
2406
+ [SHARED_NAMESPACE]: sharedTranslations.no,
2407
+ [TIMESLIDER_NAMESPACE]: timesliderTranslations.no
2408
+ },
2409
+ nl: {
2410
+ [CORE_NAMESPACE]: coreTranslations.nl,
2411
+ [WEBMAP_REACT_NAMESPACE]: webmapReactTranslations.nl,
2412
+ [SHARED_NAMESPACE]: sharedTranslations.nl,
2413
+ [TIMESLIDER_NAMESPACE]: timesliderTranslations.nl
2414
+ }
2415
+ }
2416
+ });
2417
+ };
2418
+ const ns = [CORE_NAMESPACE, TIMESLIDER_NAMESPACE];
2419
+ const translateKeyOutsideComponents = (key, params = undefined) => i18n.t(key, Object.assign({
2420
+ ns
2421
+ }, params));
2422
+ const useCoreTranslation = () => useTranslation(ns);
2423
+
2265
2424
  const DimensionSelectValue = ({
2266
2425
  isEnabled,
2267
2426
  tooltip,
@@ -2275,6 +2434,9 @@ const DimensionSelectValue = ({
2275
2434
  skipLocalStyling
2276
2435
  }) => {
2277
2436
  var _a;
2437
+ const {
2438
+ t
2439
+ } = useCoreTranslation();
2278
2440
  const dimensionValuesRaw = (_a = selectedDimension === null || selectedDimension === void 0 ? void 0 : selectedDimension.values) === null || _a === void 0 ? void 0 : _a.split(',').slice(0, 100).reverse();
2279
2441
  if (!(selectedDimension === null || selectedDimension === void 0 ? void 0 : selectedDimension.name) || !(dimensionValuesRaw === null || dimensionValuesRaw === void 0 ? void 0 : dimensionValuesRaw.length)) {
2280
2442
  return null;
@@ -2322,7 +2484,9 @@ const DimensionSelectValue = ({
2322
2484
  skipLocalStyling: skipLocalStyling
2323
2485
  }, /*#__PURE__*/React__default.createElement(MenuItem, {
2324
2486
  disabled: true
2325
- }, "Dimension value (", dimensionValues.length, " options)"), dimensionValues.map(dimensionValue => {
2487
+ }, t('layermanager-dimensions-total-values', {
2488
+ total_dimensions: dimensionValues.length
2489
+ })), dimensionValues.map(dimensionValue => {
2326
2490
  var _a;
2327
2491
  return /*#__PURE__*/React__default.createElement(MenuItem, {
2328
2492
  key: dimensionValue,
@@ -2361,6 +2525,9 @@ const DimensionSelectName = ({
2361
2525
  dimensionNames,
2362
2526
  skipLocalStyling
2363
2527
  }) => {
2528
+ const {
2529
+ t
2530
+ } = useCoreTranslation();
2364
2531
  return /*#__PURE__*/React__default.createElement(TooltipSelect, {
2365
2532
  disableUnderline: true,
2366
2533
  tooltip: tooltip,
@@ -2387,7 +2554,7 @@ const DimensionSelectName = ({
2387
2554
  skipLocalStyling: skipLocalStyling
2388
2555
  }, /*#__PURE__*/React__default.createElement(MenuItem, {
2389
2556
  disabled: true
2390
- }, "Dimension"), dimensionNames.map(name => ( /*#__PURE__*/React__default.createElement(MenuItem, {
2557
+ }, t('layermanager-dimension-title')), dimensionNames.map(name => ( /*#__PURE__*/React__default.createElement(MenuItem, {
2391
2558
  key: name,
2392
2559
  value: name
2393
2560
  }, (nameMappings === null || nameMappings === void 0 ? void 0 : nameMappings[name]) || name))));
@@ -2497,6 +2664,9 @@ const RenderLayers = ({
2497
2664
  skipLocalStyling
2498
2665
  }) => {
2499
2666
  var _a;
2667
+ const {
2668
+ t
2669
+ } = useCoreTranslation();
2500
2670
  if (!_layers || !_layers.length) {
2501
2671
  return /*#__PURE__*/React.createElement(Box, {
2502
2672
  sx: {
@@ -2512,7 +2682,7 @@ const RenderLayers = ({
2512
2682
  color: 'geowebColors.layerManager.tableRowDefaultText.rgba',
2513
2683
  fontWeight: 500
2514
2684
  }
2515
- }, "No service available"));
2685
+ }, t('layermanager-baselayers-no-available')));
2516
2686
  }
2517
2687
  const selectLayer = event => {
2518
2688
  event.stopPropagation();
@@ -2545,7 +2715,7 @@ const RenderLayers = ({
2545
2715
  renderValue: value => extendedLayers.find(layer => layer.name === value).title
2546
2716
  }, /*#__PURE__*/React.createElement(MenuItem, {
2547
2717
  disabled: true
2548
- }, "Layer"), extendedLayers.map((layerFromServiceLayers, currentIndex) => ( /*#__PURE__*/React.createElement(MenuItem, {
2718
+ }, t('layermanager-layer')), extendedLayers.map((layerFromServiceLayers, currentIndex) => ( /*#__PURE__*/React.createElement(MenuItem, {
2549
2719
  key: layerFromServiceLayers.name,
2550
2720
  value: layerFromServiceLayers.name,
2551
2721
  disabled: !layerFromServiceLayers.leaf,
@@ -2589,8 +2759,11 @@ const OpacitySelect = ({
2589
2759
  currentOpacity,
2590
2760
  onLayerChangeOpacity,
2591
2761
  isEnabled: _isEnabled = true,
2592
- tooltipPrefix: _tooltipPrefix = 'Opacity: '
2762
+ tooltipPrefix: _tooltipPrefix = translateKeyOutsideComponents('layermanager-opacity-tooltip-prefix')
2593
2763
  }) => {
2764
+ const {
2765
+ t
2766
+ } = useCoreTranslation();
2594
2767
  const [anchorEl, setAnchorEl] = React.useState(null);
2595
2768
  const isOpen = Boolean(anchorEl);
2596
2769
  const theme = useTheme();
@@ -2676,7 +2849,7 @@ const OpacitySelect = ({
2676
2849
  }, theme.palette.geowebColors.layerManager.opacitySelect.popper)
2677
2850
  }, /*#__PURE__*/React.createElement(Box, {
2678
2851
  sx: sliderHeaderStyle
2679
- }, "Opacity"), /*#__PURE__*/React.createElement(CustomSlider, {
2852
+ }, t('layermanager-opacity-title')), /*#__PURE__*/React.createElement(CustomSlider, {
2680
2853
  "data-testid": "opacitySlider",
2681
2854
  orientation: "vertical",
2682
2855
  value: currentOpacity,
@@ -2834,6 +3007,9 @@ const RenderStyles = ({
2834
3007
  skipLocalStyling
2835
3008
  }) => {
2836
3009
  var _a;
3010
+ const {
3011
+ t
3012
+ } = useCoreTranslation();
2837
3013
  const styles = [{
2838
3014
  title: 'default',
2839
3015
  name: 'default',
@@ -2872,7 +3048,7 @@ const RenderStyles = ({
2872
3048
  skipLocalStyling: skipLocalStyling
2873
3049
  }, /*#__PURE__*/React.createElement(MenuItem, {
2874
3050
  disabled: true
2875
- }, "Style"), styles.map(styleFromlayer => ( /*#__PURE__*/React.createElement(MenuItem, {
3051
+ }, t('layermanager-style-title')), styles.map(styleFromlayer => ( /*#__PURE__*/React.createElement(MenuItem, {
2876
3052
  key: styleFromlayer.name,
2877
3053
  value: styleFromlayer.name
2878
3054
  }, styleFromlayer.title))));
@@ -3094,13 +3270,17 @@ const AcceptanceTime = ({
3094
3270
  tooltipTitle,
3095
3271
  skipLocalStyling
3096
3272
  }) => {
3273
+ const {
3274
+ t
3275
+ } = useCoreTranslation();
3097
3276
  const onChange = acceptanceTimeRaw => {
3098
3277
  const acceptanceTime = acceptanceTimeRaw === 'off' ? undefined : Number(acceptanceTimeRaw);
3099
3278
  onChangeAcceptanceTime(acceptanceTime);
3100
3279
  };
3101
3280
  const layerAcceptanceTime = acceptanceTimeInMinutes === undefined ? 'off' : acceptanceTimeInMinutes.toString();
3281
+ const title = t('layermanager-acceptance-time');
3102
3282
  return /*#__PURE__*/React__default.createElement(TooltipSelect, {
3103
- tooltip: tooltipTitle !== null && tooltipTitle !== void 0 ? tooltipTitle : 'Acc Time',
3283
+ tooltip: tooltipTitle !== null && tooltipTitle !== void 0 ? tooltipTitle : title,
3104
3284
  isEnabled: _isEnabled,
3105
3285
  value: layerAcceptanceTime,
3106
3286
  onChange: event => {
@@ -3117,7 +3297,7 @@ const AcceptanceTime = ({
3117
3297
  skipLocalStyling: skipLocalStyling
3118
3298
  }, /*#__PURE__*/React__default.createElement(MenuItem, {
3119
3299
  disabled: true
3120
- }, "Acc Time"), acceptanceTimes.map(accTime => ( /*#__PURE__*/React__default.createElement(MenuItem, {
3300
+ }, title), acceptanceTimes.map(accTime => ( /*#__PURE__*/React__default.createElement(MenuItem, {
3121
3301
  key: accTime.text,
3122
3302
  value: accTime.value
3123
3303
  }, accTime.text))));
@@ -3386,6 +3566,9 @@ const LayerRowUnstyled = ({
3386
3566
  layerLoadDurationLayout,
3387
3567
  className
3388
3568
  }) => {
3569
+ const {
3570
+ t
3571
+ } = useCoreTranslation();
3389
3572
  const onClickRow = () => _onLayerRowClick(layerId);
3390
3573
  const changeEnable = event => {
3391
3574
  event.stopPropagation();
@@ -3495,7 +3678,7 @@ const LayerRowUnstyled = ({
3495
3678
  item: true,
3496
3679
  className: columnClasses.column7
3497
3680
  }, /*#__PURE__*/React__default.createElement(AlertBanner, {
3498
- title: "This layer could not be loaded: does not exist on the server.",
3681
+ title: t('layermanager-layer-error'),
3499
3682
  isCompact: true
3500
3683
  }))) : ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Grid, {
3501
3684
  item: true,
@@ -3580,6 +3763,9 @@ const Accordion = ({
3580
3763
  LeftButtons,
3581
3764
  LoadDuration
3582
3765
  }) => {
3766
+ const {
3767
+ t
3768
+ } = useCoreTranslation();
3583
3769
  return /*#__PURE__*/React__default.createElement(CustomAccordion, {
3584
3770
  className: "medium-layermanager",
3585
3771
  defaultExpanded: false,
@@ -3613,7 +3799,7 @@ const Accordion = ({
3613
3799
  item: true
3614
3800
  }, /*#__PURE__*/React__default.createElement(Grid, {
3615
3801
  item: true
3616
- }, "Style"), Styles), /*#__PURE__*/React__default.createElement(Grid, {
3802
+ }, t('layermanager-style-title')), Styles), /*#__PURE__*/React__default.createElement(Grid, {
3617
3803
  container: true,
3618
3804
  item: true,
3619
3805
  sx: {
@@ -3623,12 +3809,12 @@ const Accordion = ({
3623
3809
  }
3624
3810
  }, /*#__PURE__*/React__default.createElement(Grid, {
3625
3811
  item: true
3626
- }, "Opacity"), Opacity), /*#__PURE__*/React__default.createElement(Grid, {
3812
+ }, t('layermanager-opacity-title')), Opacity), /*#__PURE__*/React__default.createElement(Grid, {
3627
3813
  container: true,
3628
3814
  item: true
3629
3815
  }, /*#__PURE__*/React__default.createElement(Grid, {
3630
3816
  item: true
3631
- }, "Acc Time"), Acceptance), /*#__PURE__*/React__default.createElement(Grid, {
3817
+ }, t('layermanager-acceptance-time')), Acceptance), /*#__PURE__*/React__default.createElement(Grid, {
3632
3818
  container: true,
3633
3819
  item: true,
3634
3820
  flexDirection: "column"
@@ -4853,8 +5039,11 @@ const BaseLayers = ({
4853
5039
  tooltipPrefix: _tooltipPrefix = 'Layer: '
4854
5040
  }) => {
4855
5041
  var _a;
5042
+ const {
5043
+ t
5044
+ } = useCoreTranslation();
4856
5045
  if (!availableBaseLayers || !availableBaseLayers.length) {
4857
- return /*#__PURE__*/React.createElement("div", null, "No service available");
5046
+ return /*#__PURE__*/React.createElement("div", null, t('layermanager-baselayers-no-available'));
4858
5047
  }
4859
5048
  const selectedBaseLayerId = typeof selectedBaseLayers[0] !== 'undefined' ? selectedBaseLayers[0].id : '';
4860
5049
  const list = availableBaseLayers.map(layer => ({
@@ -4887,7 +5076,7 @@ const BaseLayers = ({
4887
5076
  IconComponent: icon
4888
5077
  }, /*#__PURE__*/React.createElement(MenuItem, {
4889
5078
  disabled: true
4890
- }, "Base layer"), availableBaseLayers.map(baseLayer => ( /*#__PURE__*/React.createElement(MenuItem, {
5079
+ }, t('layermanager-baselayers-title')), availableBaseLayers.map(baseLayer => ( /*#__PURE__*/React.createElement(MenuItem, {
4891
5080
  key: baseLayer.id,
4892
5081
  value: baseLayer.id
4893
5082
  }, baseLayer.name)))));
@@ -5421,6 +5610,9 @@ const WMSServerList = ({
5421
5610
  handleChangeService,
5422
5611
  service: activeService
5423
5612
  }) => {
5613
+ const {
5614
+ t
5615
+ } = useCoreTranslation();
5424
5616
  const handleListItemClick = (event, service) => {
5425
5617
  handleChangeService(service);
5426
5618
  };
@@ -5437,7 +5629,7 @@ const WMSServerList = ({
5437
5629
  }, /*#__PURE__*/React.createElement(InputLabel, {
5438
5630
  shrink: true,
5439
5631
  htmlFor: "select-multiple-native"
5440
- }, "Available services"))), /*#__PURE__*/React.createElement(Paper, {
5632
+ }, t('add-layer-popup-available-services')))), /*#__PURE__*/React.createElement(Paper, {
5441
5633
  style: {
5442
5634
  height: 200,
5443
5635
  overflow: 'auto'
@@ -5476,6 +5668,9 @@ const WMSLayerTreeHeader = ({
5476
5668
  serviceName,
5477
5669
  onClickReload
5478
5670
  }) => {
5671
+ const {
5672
+ t
5673
+ } = useCoreTranslation();
5479
5674
  return /*#__PURE__*/React.createElement(Grid, {
5480
5675
  container: true,
5481
5676
  direction: "row",
@@ -5486,10 +5681,12 @@ const WMSLayerTreeHeader = ({
5486
5681
  }, /*#__PURE__*/React.createElement(InputLabel, {
5487
5682
  shrink: true,
5488
5683
  htmlFor: "select-multiple-native"
5489
- }, "Available layers for ", serviceName)), onClickReload && ( /*#__PURE__*/React.createElement(Grid, {
5684
+ }, t('add-layer-popup-available-layers', {
5685
+ serviceName
5686
+ }))), onClickReload && ( /*#__PURE__*/React.createElement(Grid, {
5490
5687
  item: true
5491
5688
  }, /*#__PURE__*/React.createElement(CustomIconButton, {
5492
- tooltipTitle: "Reload layers from service",
5689
+ tooltipTitle: t('add-layer-popup-reload-layers'),
5493
5690
  "data-testid": "reloadLayers",
5494
5691
  onClick: onClickReload
5495
5692
  }, /*#__PURE__*/React.createElement(Cached, null)))));
@@ -5500,6 +5697,9 @@ const WMSLayerTree = ({
5500
5697
  onClickLayer,
5501
5698
  highlightedLayers
5502
5699
  }) => {
5700
+ const {
5701
+ t
5702
+ } = useCoreTranslation();
5503
5703
  const initialTree = {
5504
5704
  name: 'loading wms getcapabilities',
5505
5705
  leaf: true,
@@ -5549,7 +5749,7 @@ const WMSLayerTree = ({
5549
5749
  display: "flex"
5550
5750
  }, /*#__PURE__*/React.createElement(Typography, {
5551
5751
  variant: "body2"
5552
- }, "No data"))));
5752
+ }, t('wms-loader-no-data')))));
5553
5753
  }
5554
5754
  // Base case where there exists at least one layer
5555
5755
  // TODO: find a better way of doing this, without using prototype
@@ -5883,10 +6083,10 @@ const preloadedDefaultBaseServices = baseServices;
5883
6083
  const preloadedDefaultMapServices = services;
5884
6084
 
5885
6085
  var defaultConfigurations = /*#__PURE__*/Object.freeze({
5886
- __proto__: null,
5887
- availableDefaultBaseLayers: availableDefaultBaseLayers,
5888
- preloadedDefaultBaseServices: preloadedDefaultBaseServices,
5889
- preloadedDefaultMapServices: preloadedDefaultMapServices
6086
+ __proto__: null,
6087
+ availableDefaultBaseLayers: availableDefaultBaseLayers,
6088
+ preloadedDefaultBaseServices: preloadedDefaultBaseServices,
6089
+ preloadedDefaultMapServices: preloadedDefaultMapServices
5890
6090
  });
5891
6091
 
5892
6092
  const validateServiceUrl = url => {
@@ -5906,6 +6106,9 @@ const AddLayersPopup = ({
5906
6106
  handleClose,
5907
6107
  layerType: _layerType = LayerType.mapLayer
5908
6108
  }) => {
6109
+ const {
6110
+ t
6111
+ } = useCoreTranslation();
5909
6112
  const [serviceURL, setServiceURL] = React.useState('');
5910
6113
  const [services, setServices] = React.useState(_preloadedServices);
5911
6114
  const [activeService, setActiveService] = React.useState(_preloadedServices[0]);
@@ -5942,11 +6145,11 @@ const AddLayersPopup = ({
5942
6145
  setUrlError('');
5943
6146
  setLoading(false);
5944
6147
  }).catch(() => {
5945
- setUrlError('Please enter a valid WMS service');
6148
+ setUrlError(t('wms-loader-error-valid-service'));
5946
6149
  setLoading(false);
5947
6150
  });
5948
6151
  } else {
5949
- setUrlError('Please enter a valid URL');
6152
+ setUrlError(t('wms-loader-error-valid-url'));
5950
6153
  setLoading(false);
5951
6154
  }
5952
6155
  };
@@ -5965,7 +6168,7 @@ const AddLayersPopup = ({
5965
6168
  "data-testid": "addLayersPopup"
5966
6169
  }, /*#__PURE__*/React.createElement(DialogTitle, {
5967
6170
  id: "form-dialog-title"
5968
- }, "Load WMS layer(s)"), /*#__PURE__*/React.createElement(DialogContent, null, /*#__PURE__*/React.createElement(DialogContentText, null, "Please enter a wms server, or select one from the list."), /*#__PURE__*/React.createElement(Box, {
6171
+ }, t('add-layer-popup-title')), /*#__PURE__*/React.createElement(DialogContent, null, /*#__PURE__*/React.createElement(DialogContentText, null, t('wms-loader-description')), /*#__PURE__*/React.createElement(Box, {
5969
6172
  m: 2
5970
6173
  }, /*#__PURE__*/React.createElement(Grid, {
5971
6174
  container: true,
@@ -5977,7 +6180,7 @@ const AddLayersPopup = ({
5977
6180
  }, /*#__PURE__*/React.createElement(TextField, {
5978
6181
  margin: "dense",
5979
6182
  id: "serviceurl",
5980
- label: "Service URL",
6183
+ label: t('add-layer-popup-service-url'),
5981
6184
  value: serviceURL,
5982
6185
  type: "url",
5983
6186
  onChange: event => {
@@ -6035,7 +6238,7 @@ const AddLayersPopup = ({
6035
6238
  })))))), /*#__PURE__*/React.createElement(DialogActions, null, /*#__PURE__*/React.createElement(Button, {
6036
6239
  onClick: handleClose,
6037
6240
  color: "primary"
6038
- }, "Close")));
6241
+ }, t('actions-close'))));
6039
6242
  };
6040
6243
 
6041
6244
  const styles$2 = {
@@ -6279,12 +6482,16 @@ const ProjectionSelect = ({
6279
6482
  currentProjection,
6280
6483
  onChangeProjection
6281
6484
  }) => {
6485
+ const {
6486
+ t
6487
+ } = useCoreTranslation();
6282
6488
  const selectProjection = newProj => {
6283
6489
  const newProjDetails = availableProjections.find(proj => proj.value === newProj);
6284
6490
  onChangeProjection(newProjDetails);
6285
6491
  };
6286
6492
  const index = availableProjections.findIndex(projection => projection.value === currentProjection);
6287
6493
  const currentProjectionObject = availableProjections.find(projection => projection.value === currentProjection);
6494
+ const title = t('projection-title');
6288
6495
  return /*#__PURE__*/React.createElement(Grid, {
6289
6496
  container: true,
6290
6497
  className: "setProjection-column",
@@ -6316,7 +6523,7 @@ const ProjectionSelect = ({
6316
6523
  SelectDisplayProps: {
6317
6524
  'aria-label': 'projectionSelect'
6318
6525
  },
6319
- tooltip: `Projection: ${currentProjectionObject === null || currentProjectionObject === void 0 ? void 0 : currentProjectionObject.name}`,
6526
+ tooltip: `${title}: ${currentProjectionObject === null || currentProjectionObject === void 0 ? void 0 : currentProjectionObject.name}`,
6320
6527
  isEnabled: true,
6321
6528
  style: {
6322
6529
  maxWidth: '100%'
@@ -6332,7 +6539,7 @@ const ProjectionSelect = ({
6332
6539
  requiresCtrlToChange: true
6333
6540
  }, /*#__PURE__*/React.createElement(MenuItem, {
6334
6541
  disabled: true
6335
- }, "Projection"), availableProjections.map(projection => ( /*#__PURE__*/React.createElement(MenuItem, {
6542
+ }, title), availableProjections.map(projection => ( /*#__PURE__*/React.createElement(MenuItem, {
6336
6543
  key: projection.name,
6337
6544
  value: projection.value
6338
6545
  }, projection.name)))))));
@@ -8105,6 +8312,9 @@ const GetFeatureInfoDialog = ({
8105
8312
  source: _source = 'app',
8106
8313
  mapPinLocation
8107
8314
  }) => {
8315
+ const {
8316
+ t
8317
+ } = useCoreTranslation();
8108
8318
  /* Ref and state for maplocation */
8109
8319
  const mapLocationWasChanged = React__default.useRef(false);
8110
8320
  const [isInitialMapLocationChanged, setInitialMapLocationIsChanged] = React__default.useState(false);
@@ -8249,13 +8459,13 @@ const GetFeatureInfoDialog = ({
8249
8459
  sx: {
8250
8460
  padding: '10px'
8251
8461
  }
8252
- }, "Click on the map for info.")), !hasLayers && ( /*#__PURE__*/React__default.createElement(Typography, {
8462
+ }, t('feature_info_title'))), !hasLayers && ( /*#__PURE__*/React__default.createElement(Typography, {
8253
8463
  "data-testid": "NoLayers",
8254
8464
  variant: "subtitle1",
8255
8465
  sx: {
8256
8466
  padding: '10px'
8257
8467
  }
8258
- }, "No layers added to the map."))));
8468
+ }, t('feature_info_no_layers')))));
8259
8469
  };
8260
8470
 
8261
8471
  /* *
@@ -10680,79 +10890,19 @@ const simplePolygonGeoJSON = {
10680
10890
  };
10681
10891
 
10682
10892
  var testLayers = /*#__PURE__*/Object.freeze({
10683
- __proto__: null,
10684
- baseLayer: baseLayer,
10685
- baseLayerGrey: baseLayerGrey,
10686
- baseLayerOpenStreetMapNL: baseLayerOpenStreetMapNL,
10687
- baseLayerArcGisCanvas: baseLayerArcGisCanvas,
10688
- baseLayerWorldMap: baseLayerWorldMap,
10689
- baseLayerArcGisSat: baseLayerArcGisSat,
10690
- overLayer: overLayer,
10691
- overLayer2: overLayer2,
10692
- radarLayer: radarLayer,
10693
- simplePolygonGeoJSON: simplePolygonGeoJSON
10893
+ __proto__: null,
10894
+ baseLayer: baseLayer,
10895
+ baseLayerGrey: baseLayerGrey,
10896
+ baseLayerOpenStreetMapNL: baseLayerOpenStreetMapNL,
10897
+ baseLayerArcGisCanvas: baseLayerArcGisCanvas,
10898
+ baseLayerWorldMap: baseLayerWorldMap,
10899
+ baseLayerArcGisSat: baseLayerArcGisSat,
10900
+ overLayer: overLayer,
10901
+ overLayer2: overLayer2,
10902
+ radarLayer: radarLayer,
10903
+ simplePolygonGeoJSON: simplePolygonGeoJSON
10694
10904
  });
10695
10905
 
10696
- var en = {
10697
- core: "Core"
10698
- };
10699
- var fi = {
10700
- core: "Core"
10701
- };
10702
- var no = {
10703
- core: "Core"
10704
- };
10705
- var nl = {
10706
- core: "Core"
10707
- };
10708
- var coreTranslations = {
10709
- en: en,
10710
- fi: fi,
10711
- no: no,
10712
- nl: nl
10713
- };
10714
-
10715
- /* *
10716
- * Licensed under the Apache License, Version 2.0 (the "License");
10717
- * you may not use this file except in compliance with the License.
10718
- * You may obtain a copy of the License at
10719
- *
10720
- * http://www.apache.org/licenses/LICENSE-2.0
10721
- *
10722
- * Unless required by applicable law or agreed to in writing, software
10723
- * distributed under the License is distributed on an "AS IS" BASIS,
10724
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10725
- * See the License for the specific language governing permissions and
10726
- * limitations under the License.
10727
- *
10728
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
10729
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
10730
- * */
10731
- const CORE_NAMESPACE = 'core';
10732
- const initCoreReactI18n = () => {
10733
- i18n.use(initReactI18next).init({
10734
- lng: 'en',
10735
- ns: CORE_NAMESPACE,
10736
- interpolation: {
10737
- escapeValue: false
10738
- },
10739
- resources: {
10740
- en: {
10741
- core: coreTranslations.en
10742
- },
10743
- fi: {
10744
- core: coreTranslations.fi
10745
- },
10746
- no: {
10747
- core: coreTranslations.no
10748
- },
10749
- nl: {
10750
- core: coreTranslations.nl
10751
- }
10752
- }
10753
- });
10754
- };
10755
-
10756
10906
  /**
10757
10907
  * A Provider component which provides the GeoWeb theme
10758
10908
  * @param children
@@ -10767,9 +10917,9 @@ const CoreThemeProvider = ({
10767
10917
  const ThemeWrapperWithModules = withEggs([...coreModuleConfig, layerSelectConfig])(({
10768
10918
  theme,
10769
10919
  children
10770
- }) => ( /*#__PURE__*/React__default.createElement(CoreI18nProvider, null, /*#__PURE__*/React__default.createElement(CoreThemeProvider, {
10920
+ }) => ( /*#__PURE__*/React__default.createElement(CoreThemeProvider, {
10771
10921
  theme: theme
10772
- }, children))));
10922
+ }, children)));
10773
10923
  /**
10774
10924
  * A Provider component which provides the GeoWeb theme and store for the core.
10775
10925
  * Note: Should only be used with core components, as the provided store is only for core.
@@ -10780,25 +10930,11 @@ const CoreThemeStoreProvider = ({
10780
10930
  children,
10781
10931
  theme: _theme2 = lightTheme,
10782
10932
  store
10783
- }) => ( /*#__PURE__*/React__default.createElement(CoreI18nProvider, null, /*#__PURE__*/React__default.createElement(Provider, {
10933
+ }) => ( /*#__PURE__*/React__default.createElement(Provider, {
10784
10934
  store: store
10785
10935
  }, /*#__PURE__*/React__default.createElement(ThemeWrapperWithModules, {
10786
10936
  theme: _theme2
10787
- }, /*#__PURE__*/React__default.createElement(SnackbarWrapperConnect, null, children)))));
10788
- const CoreTranslationsWrapper = ({
10789
- children
10790
- }) => {
10791
- const {
10792
- i18n
10793
- } = useTranslation(CORE_NAMESPACE);
10794
- React__default.useEffect(() => {
10795
- i18n.addResourceBundle('en', CORE_NAMESPACE, coreTranslations.en);
10796
- i18n.addResourceBundle('fi', CORE_NAMESPACE, coreTranslations.fi);
10797
- i18n.addResourceBundle('no', CORE_NAMESPACE, coreTranslations.no);
10798
- i18n.addResourceBundle('nl', CORE_NAMESPACE, coreTranslations.nl);
10799
- }, [i18n]);
10800
- return children;
10801
- };
10937
+ }, /*#__PURE__*/React__default.createElement(SnackbarWrapperConnect, null, children))));
10802
10938
  const CoreI18nProvider = ({
10803
10939
  children
10804
10940
  }) => {
@@ -10807,6 +10943,10 @@ const CoreI18nProvider = ({
10807
10943
  i18n: i18n
10808
10944
  }, children);
10809
10945
  };
10946
+ // used for react stories/tests
10947
+ const DemoWrapper = props => ( /*#__PURE__*/React__default.createElement(CoreI18nProvider, null, /*#__PURE__*/React__default.createElement(CoreThemeProvider, Object.assign({}, props))));
10948
+ // used for redux stories/tests
10949
+ const DemoWrapperConnect = props => ( /*#__PURE__*/React__default.createElement(CoreI18nProvider, null, /*#__PURE__*/React__default.createElement(CoreThemeStoreProvider, Object.assign({}, props))));
10810
10950
 
10811
10951
  /* *
10812
10952
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -10850,4 +10990,46 @@ const RouterWrapperConnect = withEggs([routerModuleConfig])(props => {
10850
10990
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(NavigateSetter, null), props.children);
10851
10991
  });
10852
10992
 
10853
- export { ConfigurableMapConnect, CoreI18nProvider, CoreThemeProvider, CoreThemeStoreProvider, CoreTranslationsWrapper, HarmonieTempAndPrecipPreset, 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, SyncGroupViewerConnect, TimeSliderConnect, ZoomControlConnect, componentsLookUp, defaultBbox, defaultConfigurations, filterMapPresets, filterServices, filterTimeSeriesServices, testLayers, useFetchServices, useUpdateTimeSpan, useUpdateTimestep };
10993
+ const Circle = styled$1('div')(({
10994
+ isRecording
10995
+ }) => ({
10996
+ width: '70%',
10997
+ height: '70%',
10998
+ borderRadius: '50%',
10999
+ backgroundColor: isRecording ? 'red' : 'gray',
11000
+ position: 'absolute',
11001
+ top: '50%',
11002
+ left: '50%',
11003
+ transform: 'translate(-50%, -50%)'
11004
+ }));
11005
+ const SentryRecordButton = () => {
11006
+ const [isRecording, setIsRecording] = React__default.useState(false);
11007
+ const replay = Sentry.getReplay();
11008
+ const toggleRecord = () => __awaiter(void 0, void 0, void 0, function* () {
11009
+ if (!isRecording) {
11010
+ replay === null || replay === void 0 ? void 0 : replay.start();
11011
+ setIsRecording(true);
11012
+ } else {
11013
+ setIsRecording(false);
11014
+ yield replay === null || replay === void 0 ? void 0 : replay.stop();
11015
+ }
11016
+ });
11017
+ return /*#__PURE__*/React__default.createElement(ErrorBoundary, {
11018
+ handlePromiseRejections: true,
11019
+ displayOnTop: true
11020
+ }, /*#__PURE__*/React__default.createElement(CustomTooltip, {
11021
+ title: isRecording ? 'Stop Recording' : 'Start Recording'
11022
+ }, /*#__PURE__*/React__default.createElement(CustomIconButton, {
11023
+ variant: "flat",
11024
+ onClick: toggleRecord,
11025
+ "data-testid": "sentryRecordButton",
11026
+ sx: {
11027
+ margin: '10px',
11028
+ border: 'solid 1px gray'
11029
+ }
11030
+ }, /*#__PURE__*/React__default.createElement(Circle, {
11031
+ isRecording: isRecording
11032
+ }))));
11033
+ };
11034
+
11035
+ export { CORE_NAMESPACE, ConfigurableMapConnect, CoreThemeProvider, CoreThemeStoreProvider, DemoWrapper, DemoWrapperConnect, HarmonieTempAndPrecipPreset, 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, translateKeyOutsideComponents, useFetchServices, useUpdateTimeSpan, useUpdateTimestep };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/core",
3
- "version": "9.15.0",
3
+ "version": "9.17.0",
4
4
  "description": "GeoWeb Core library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -28,7 +28,8 @@
28
28
  "react-draggable": "^4.4.6",
29
29
  "i18next": "^23.7.11",
30
30
  "react-i18next": "^13.5.0",
31
- "dompurify": "^3.0.6"
31
+ "dompurify": "^3.0.6",
32
+ "@sentry/react": "^7.109.0"
32
33
  },
33
34
  "peerDependencies": {
34
35
  "react": "18"
package/src/index.d.ts CHANGED
@@ -1 +1,4 @@
1
+ import coreTranslations from '../locales/core.json';
1
2
  export * from './lib';
3
+ export { translateKeyOutsideComponents, CORE_NAMESPACE, } from './lib/utils/i18n';
4
+ export { coreTranslations };
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import '../../utils/languagesService';
2
+ import './languagesService';
3
3
  declare const _default: {
4
4
  title: string;
5
5
  };
@@ -24,6 +24,7 @@ export declare const outsideComponentTranslations: {
24
24
  deleteOK: string;
25
25
  restore: string;
26
26
  };
27
+ export declare const translateKeyOutsideComponents: (key: string, params?: Record<string, string | number> | undefined) => string;
27
28
  interface Languages {
28
29
  language: string;
29
30
  code: string;
@@ -11,7 +11,7 @@ export declare const LayerManagerLightTheme: {
11
11
  link: string;
12
12
  }[];
13
13
  };
14
- storyName: string;
14
+ tags: string[];
15
15
  };
16
16
  export declare const DockedLayerManagerLightTheme: {
17
17
  (): React.ReactElement;
@@ -21,11 +21,11 @@ export declare const DockedLayerManagerLightTheme: {
21
21
  link: string;
22
22
  }[];
23
23
  };
24
- storyName: string;
24
+ tags: string[];
25
25
  };
26
26
  export declare const LayerManagerLightThemeSmall: {
27
27
  (): React.ReactElement;
28
- storyName: string;
28
+ tags: string[];
29
29
  };
30
30
  export declare const LayerManagerLightThemeMedium: {
31
31
  (): React.ReactElement;
@@ -35,7 +35,7 @@ export declare const LayerManagerLightThemeMedium: {
35
35
  link: string;
36
36
  }[];
37
37
  };
38
- storyName: string;
38
+ tags: string[];
39
39
  };
40
40
  export declare const LayerManagerDarkTheme: {
41
41
  (): React.ReactElement;
@@ -45,7 +45,7 @@ export declare const LayerManagerDarkTheme: {
45
45
  link: string;
46
46
  }[];
47
47
  };
48
- storyName: string;
48
+ tags: string[];
49
49
  };
50
50
  export declare const DockedLayerManagerDarkTheme: {
51
51
  (): React.ReactElement;
@@ -55,11 +55,11 @@ export declare const DockedLayerManagerDarkTheme: {
55
55
  link: string;
56
56
  }[];
57
57
  };
58
- storyName: string;
58
+ tags: string[];
59
59
  };
60
60
  export declare const LayerManagerDarkThemeSmall: {
61
61
  (): React.ReactElement;
62
- storyName: string;
62
+ tags: string[];
63
63
  };
64
64
  export declare const LayerManagerDarkThemeMedium: {
65
65
  (): React.ReactElement;
@@ -69,14 +69,14 @@ export declare const LayerManagerDarkThemeMedium: {
69
69
  link: string;
70
70
  }[];
71
71
  };
72
- storyName: string;
72
+ tags: string[];
73
73
  };
74
74
  export declare const LayerManagerLoadingState: () => React.ReactElement;
75
75
  export declare const LayerManagerWithErrorLight: {
76
76
  (): React.ReactElement;
77
- storyName: string;
77
+ tags: string[];
78
78
  };
79
79
  export declare const LayerManagerWithErrorDark: {
80
80
  (): React.ReactElement;
81
- storyName: string;
81
+ tags: string[];
82
82
  };
@@ -90,7 +90,7 @@ export declare const layerManagerStyle: {
90
90
  };
91
91
  };
92
92
  '.header-layermanager': {
93
- '.header-left, .header-title': {
93
+ '.header-left': {
94
94
  display: string;
95
95
  };
96
96
  '&>div': {
@@ -6,10 +6,10 @@ declare const _default: {
6
6
  export default _default;
7
7
  export declare const SetMapPinAction: {
8
8
  (): React.ReactElement;
9
- storyName: string;
9
+ tags: string[];
10
10
  };
11
11
  export declare const SetMapPinActionDisabled: {
12
12
  (): React.ReactElement;
13
- storyName: string;
13
+ tags: string[];
14
14
  };
15
15
  export declare const ToggleMapPinAction: () => React.ReactElement;
@@ -1,19 +1,18 @@
1
1
  import React from 'react';
2
2
  import { Theme } from '@mui/material';
3
+ import { ThemeProviderProps } from '@opengeoweb/theme';
3
4
  import { Store } from '@reduxjs/toolkit';
4
5
  interface CoreThemeProviderProps {
5
6
  children?: React.ReactNode;
6
7
  theme?: Theme;
7
8
  }
8
- interface CoreTranslationWrapperProps {
9
- children?: React.ReactNode;
10
- }
11
9
  /**
12
10
  * A Provider component which provides the GeoWeb theme
13
11
  * @param children
14
12
  * @returns
15
13
  */
16
14
  export declare const CoreThemeProvider: React.FC<CoreThemeProviderProps>;
15
+ export declare const ThemeWrapperWithModules: React.FC<ThemeProviderProps>;
17
16
  interface CoreThemeStoreProviderProps extends CoreThemeProviderProps {
18
17
  store: Store;
19
18
  }
@@ -24,6 +23,6 @@ interface CoreThemeStoreProviderProps extends CoreThemeProviderProps {
24
23
  * @returns
25
24
  */
26
25
  export declare const CoreThemeStoreProvider: React.FC<CoreThemeStoreProviderProps>;
27
- export declare const CoreTranslationsWrapper: React.FC<CoreTranslationWrapperProps>;
28
- export declare const CoreI18nProvider: React.FC<CoreTranslationWrapperProps>;
26
+ export declare const DemoWrapper: React.FC<CoreThemeProviderProps>;
27
+ export declare const DemoWrapperConnect: React.FC<CoreThemeStoreProviderProps>;
29
28
  export {};
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const SentryRecordButton: React.FC;
3
+ export default SentryRecordButton;
@@ -0,0 +1 @@
1
+ export { default as SentryRecordButton } from './SentryRecordButton';
@@ -18,3 +18,4 @@ export * from './components/RouterWrapper';
18
18
  export * from './components/Search';
19
19
  export * from './components/TimeSliderConnect';
20
20
  export * from './components/LayerInfoConnect';
21
+ export * from './components/SentryRecordButton';
@@ -1,2 +1,6 @@
1
+ import i18n from 'i18next';
2
+ import { UseTranslationResponse } from 'react-i18next';
1
3
  export declare const CORE_NAMESPACE = "core";
2
4
  export declare const initCoreReactI18n: () => void;
5
+ export declare const translateKeyOutsideComponents: (key: string, params?: Record<string, string | number> | undefined) => string;
6
+ export declare const useCoreTranslation: () => UseTranslationResponse<typeof CORE_NAMESPACE, typeof i18n>;