@opengeoweb/core 9.17.0 → 9.18.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,16 +1,16 @@
1
1
  import * as React from 'react';
2
2
  import React__default, { useState, useCallback, useRef } from 'react';
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, SHARED_NAMESPACE, sharedTranslations, TooltipSelect, AlertIcon, sliderHeaderStyle, CustomSlider, ToggleMenu, CustomTooltip, tooltipContainerStyles, renderCounter, AlertBanner, CustomAccordion, calculateStartSize, ToolContainerDraggable, useDebounce, dateUtils, withEggs, ErrorBoundary } from '@opengeoweb/shared';
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';
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, circularProgressClasses, ListItemIcon, Checkbox } from '@mui/material';
4
+ import { SHARED_NAMESPACE, sharedTranslations, CustomIconButton, TooltipSelect, AlertIcon, sliderHeaderStyle, CustomSlider, ToggleMenu, CustomTooltip, tooltipContainerStyles, renderCounter, AlertBanner, CustomAccordion, calculateStartSize, ToolContainerDraggable, useDebounce, dateUtils, withEggs, ErrorBoundary } from '@opengeoweb/shared';
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, ExitDomain, Info, Search, Exclamation, MyLocation, Close, ThemeWrapper, lightTheme } from '@opengeoweb/theme';
6
+ import i18n from 'i18next';
7
+ import { useTranslation, initReactI18next, I18nextProvider } from 'react-i18next';
8
+ 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';
9
+ import { WEBMAP_REACT_NAMESPACE, webmapReactTranslations, LayerInfoButton, LayerInfoDialog, MapControlButton, MapDimensionSelect, dimensionConfig, DimensionSelectDialog, DimensionSelectButton, ZoomControls, MapView, MapViewLayer, LegendDialog, LegendButton, registerDrawFunction, emptyGeoJSON, MapControls, publicLayers } from '@opengeoweb/webmap-react';
6
10
  import { useDispatch, useSelector, connect, useStore, Provider } from 'react-redux';
7
11
  import { ReactSortable } from 'react-sortablejs';
8
12
  import Sortable from 'sortablejs';
9
13
  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 { 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';
14
14
  import { webmapUtils, getCapabilities, WMGetServiceFromStore, LayerType, handleDateUtilsISOString, wmServiceListener, EVENT_GETCAPABILITIES_START, EVENT_GETCAPABILITIES_READY, WMLayer } from '@opengeoweb/webmap';
15
15
  import { Box as Box$1, styled as styled$1 } from '@mui/system';
16
16
  import _, { isEqual, range } from 'lodash';
@@ -29,16 +29,35 @@ var en = {
29
29
  "add-layer-popup-available-services": "Available services",
30
30
  "add-layer-popup-available-layers": "Available layers for {{serviceName}}",
31
31
  "add-layer-popup-reload-layers": "Reload layers from service",
32
+ "layermanager-title": "Layer Manager",
32
33
  "layermanager-baselayers-title": "Base layer",
33
34
  "layermanager-baselayers-no-available": "No service available",
34
35
  "layermanager-acceptance-time": "Acc Time",
35
36
  "layermanager-dimensions-total-values": "Dimension value ({{total_dimensions}} options)",
37
+ "layermanager-dimensions-title": "Dimensions",
36
38
  "layermanager-dimension-title": "Dimension",
37
39
  "layermanager-opacity-title": "Opacity",
38
40
  "layermanager-opacity-tooltip-prefix": "Opacity: ",
39
41
  "layermanager-style-title": "Style",
40
42
  "layermanager-layer-error": "This layer could not be loaded: does not exist on the server.",
41
43
  "layermanager-layer": "Layer",
44
+ "layermanager-layer-toggle": "Toggle visibility",
45
+ "layermanager-layer-select": "Open the layer selector",
46
+ "layermanager-layer-drag": "Drag",
47
+ "layermanager-layer-leading": "Leading layer",
48
+ "layermanager-layer-leading-none": "None",
49
+ "layermanager-layer-leading-auto-timestep": "Auto-timestep",
50
+ "layermanager-layer-leading-auto-update": "Auto-update",
51
+ "layermanager-layer-leading-both": "Both",
52
+ "layermanager-layer-delete": "Delete",
53
+ "layermanager-layer-duplicate": "Duplicate layer",
54
+ "layermanager-options": "Options",
55
+ "layermanager-baselayers-tooltip": "Add base layers",
56
+ "layermanager-header-button-small": "small",
57
+ "layermanager-header-button-medium": "medium",
58
+ "layermanager-header-button-large": "large",
59
+ "layermanager-header-button-dock": "Dock",
60
+ "layermanager-header-button-undock": "Undock",
42
61
  "projection-title": "Projection",
43
62
  "wms-loader-title": "Load WMS layer(s)",
44
63
  "wms-loader-description": "Please enter a wms server, or select one from the list.",
@@ -46,7 +65,27 @@ var en = {
46
65
  "wms-loader-error-http": "Use https or allow Mixed Content in your browser to use this WMS service",
47
66
  "wms-loader-error-valid-service": "Please enter a valid WMS service",
48
67
  "wms-loader-error-valid-url": "Please enter a valid URL",
49
- "actions-close": "Close"
68
+ "search-title": "Search",
69
+ "search-title-aria": "Map search",
70
+ "search-find-location": "Find my location",
71
+ "search-error": "Geolocation error: {{error}}",
72
+ "syncgroups-title": "Sync",
73
+ "syncgroups-zoom": "ZoomPane",
74
+ "syncgroups-timeslider": "Timeslider",
75
+ "syncgroups-level": "Level",
76
+ "syncgroups-add-group": "Add new group to list",
77
+ "syncgroups-remove-group": "Remove group from list",
78
+ "actions-close": "Close",
79
+ "sentry-start-recording": "Start Recording",
80
+ "sentry-stop-recording": "Stop Recording",
81
+ "layermanager-acceptance-time-within": "Layer: within the data acceptance window",
82
+ "layermanager-acceptance-time-outside": "Layer: out of date",
83
+ "layermanager-acceptance-time-updated": "Layer: updated",
84
+ "layermanager-acceptance-time-off": "off",
85
+ "layermanager-acceptance-time-exact": "exact",
86
+ "layermanager-dimensions-none": "Layer has no time dimension",
87
+ feature_info_marker_info: "Event marker info",
88
+ feature_info_location_info: "Get information for a specific location"
50
89
  };
51
90
  var fi = {
52
91
  feature_info_title: "ei käännetty",
@@ -56,16 +95,35 @@ var fi = {
56
95
  "add-layer-popup-available-services": "ei käännetty",
57
96
  "add-layer-popup-available-layers": "ei käännetty",
58
97
  "add-layer-popup-reload-layers": "ei käännetty",
98
+ "layermanager-title": "ei käännetty",
59
99
  "layermanager-baselayers-title": "ei käännetty",
60
100
  "layermanager-baselayers-no-available": "ei käännetty",
61
101
  "layermanager-acceptance-time": "ei käännetty",
62
102
  "layermanager-dimensions-total-values": "ei käännetty",
103
+ "layermanager-dimensions-title": "ei käännetty",
63
104
  "layermanager-dimension-title": "ei käännetty",
64
105
  "layermanager-opacity-title": "ei käännetty",
65
106
  "layermanager-opacity-tooltip-prefix": "ei käännetty",
66
107
  "layermanager-style-title": "ei käännetty",
67
108
  "layermanager-layer-error": "ei käännetty",
68
109
  "layermanager-layer": "ei käännetty",
110
+ "layermanager-layer-toggle": "ei käännetty",
111
+ "layermanager-layer-select": "ei käännetty",
112
+ "layermanager-layer-drag": "ei käännetty",
113
+ "layermanager-layer-leading": "ei käännetty",
114
+ "layermanager-layer-leading-none": "ei käännetty",
115
+ "layermanager-layer-leading-auto-timestep": "ei käännetty",
116
+ "layermanager-layer-leading-auto-update": "ei käännetty",
117
+ "layermanager-layer-leading-both": "ei käännetty",
118
+ "layermanager-layer-delete": "ei käännetty",
119
+ "layermanager-layer-duplicate": "ei käännetty",
120
+ "layermanager-options": "ei käännetty",
121
+ "layermanager-baselayers-tooltip": "ei käännetty",
122
+ "layermanager-header-button-small": "ei käännetty",
123
+ "layermanager-header-button-medium": "ei käännetty",
124
+ "layermanager-header-button-large": "ei käännetty",
125
+ "layermanager-header-button-dock": "ei käännetty",
126
+ "layermanager-header-button-undock": "ei käännetty",
69
127
  "projection-title": "ei käännetty",
70
128
  "wms-loader-title": "ei käännetty",
71
129
  "wms-loader-description": "ei käännetty",
@@ -73,7 +131,27 @@ var fi = {
73
131
  "wms-loader-error-http": "ei käännetty",
74
132
  "wms-loader-error-valid-service": "ei käännetty",
75
133
  "wms-loader-error-valid-url": "ei käännetty",
76
- "actions-close": "ei käännetty"
134
+ "search-title": "ei käännetty",
135
+ "search-title-aria": "ei käännetty",
136
+ "search-find-location": "ei käännetty",
137
+ "search-error": "ei käännetty",
138
+ "syncgroups-title": "ei käännetty",
139
+ "syncgroups-zoom": "ei käännetty",
140
+ "syncgroups-timeslider": "ei käännetty",
141
+ "syncgroups-level": "ei käännetty",
142
+ "syncgroups-add-group": "ei käännetty",
143
+ "syncgroups-remove-group": "ei käännetty",
144
+ "actions-close": "ei käännetty",
145
+ "sentry-start-recording": "ei käännetty",
146
+ "sentry-stop-recording": "ei käännetty",
147
+ "layermanager-acceptance-time-within": "ei käännetty",
148
+ "layermanager-acceptance-time-outside": "ei käännetty",
149
+ "layermanager-acceptance-time-updated": "ei käännetty",
150
+ "layermanager-acceptance-time-off": "ei käännetty",
151
+ "layermanager-acceptance-time-exact": "ei käännetty",
152
+ "layermanager-dimensions-none": "ei käännetty",
153
+ feature_info_marker_info: "ei käännetty",
154
+ feature_info_location_info: "ei käännetty"
77
155
  };
78
156
  var no = {
79
157
  feature_info_title: "ikke oversatt",
@@ -83,16 +161,35 @@ var no = {
83
161
  "add-layer-popup-available-services": "ikke oversatt",
84
162
  "add-layer-popup-available-layers": "ikke oversatt",
85
163
  "add-layer-popup-reload-layers": "ikke oversatt",
164
+ "layermanager-title": "ikke oversatt",
86
165
  "layermanager-baselayers-title": "ikke oversatt",
87
166
  "layermanager-baselayers-no-available": "ikke oversatt",
88
167
  "layermanager-acceptance-time": "ikke oversatt",
89
168
  "layermanager-dimensions-total-values": "ikke oversatt",
169
+ "layermanager-dimensions-title": "ikke oversatt",
90
170
  "layermanager-dimension-title": "ikke oversatt",
91
171
  "layermanager-opacity-title": "ikke oversatt",
92
172
  "layermanager-opacity-tooltip-prefix": "ikke oversatt",
93
173
  "layermanager-style-title": "ikke oversatt",
94
174
  "layermanager-layer-error": "ikke oversatt",
95
175
  "layermanager-layer": "ikke oversatt",
176
+ "layermanager-layer-toggle": "ikke oversatt",
177
+ "layermanager-layer-select": "ikke oversatt",
178
+ "layermanager-layer-drag": "ikke oversatt",
179
+ "layermanager-layer-leading": "ikke oversatt",
180
+ "layermanager-layer-leading-none": "ikke oversatt",
181
+ "layermanager-layer-leading-auto-timestep": "ikke oversatt",
182
+ "layermanager-layer-leading-auto-update": "ikke oversatt",
183
+ "layermanager-layer-leading-both": "ikke oversatt",
184
+ "layermanager-layer-delete": "ikke oversatt",
185
+ "layermanager-layer-duplicate": "ikke oversatt",
186
+ "layermanager-options": "ikke oversatt",
187
+ "layermanager-baselayers-tooltip": "ikke oversatt",
188
+ "layermanager-header-button-small": "ikke oversatt",
189
+ "layermanager-header-button-medium": "ikke oversatt",
190
+ "layermanager-header-button-large": "ikke oversatt",
191
+ "layermanager-header-button-dock": "ikke oversatt",
192
+ "layermanager-header-button-undock": "ikke oversatt",
96
193
  "projection-title": "ikke oversatt",
97
194
  "wms-loader-title": "ikke oversatt",
98
195
  "wms-loader-description": "ikke oversatt",
@@ -100,7 +197,27 @@ var no = {
100
197
  "wms-loader-error-http": "ikke oversatt",
101
198
  "wms-loader-error-valid-service": "ikke oversatt",
102
199
  "wms-loader-error-valid-url": "ikke oversatt",
103
- "actions-close": "ikke oversatt"
200
+ "search-title": "ikke oversatt",
201
+ "search-title-aria": "ikke oversatt",
202
+ "search-find-location": "ikke oversatt",
203
+ "search-error": "ikke oversatt",
204
+ "syncgroups-title": "ikke oversatt",
205
+ "syncgroups-zoom": "ikke oversatt",
206
+ "syncgroups-timeslider": "ikke oversatt",
207
+ "syncgroups-level": "ikke oversatt",
208
+ "syncgroups-add-group": "ikke oversatt",
209
+ "syncgroups-remove-group": "ikke oversatt",
210
+ "actions-close": "ikke oversatt",
211
+ "sentry-start-recording": "ikke oversatt",
212
+ "sentry-stop-recording": "ikke oversatt",
213
+ "layermanager-acceptance-time-within": "ikke oversatt",
214
+ "layermanager-acceptance-time-outside": "ikke oversatt",
215
+ "layermanager-acceptance-time-updated": "ikke oversatt",
216
+ "layermanager-acceptance-time-off": "ikke oversatt",
217
+ "layermanager-acceptance-time-exact": "ikke oversatt",
218
+ "layermanager-dimensions-none": "ikke oversatt",
219
+ feature_info_marker_info: "ikke oversatt",
220
+ feature_info_location_info: "ikke oversatt"
104
221
  };
105
222
  var nl = {
106
223
  feature_info_title: "niet vertaald",
@@ -110,16 +227,35 @@ var nl = {
110
227
  "add-layer-popup-available-services": "niet vertaald",
111
228
  "add-layer-popup-available-layers": "niet vertaald",
112
229
  "add-layer-popup-reload-layers": "niet vertaald",
230
+ "layermanager-title": "niet vertaald",
113
231
  "layermanager-baselayers-title": "niet vertaald",
114
232
  "layermanager-baselayers-no-available": "niet vertaald",
115
233
  "layermanager-acceptance-time": "niet vertaald",
116
234
  "layermanager-dimensions-total-values": "niet vertaald",
235
+ "layermanager-dimensions-title": "niet vertaald",
117
236
  "layermanager-dimension-title": "niet vertaald",
118
237
  "layermanager-opacity-title": "niet vertaald",
119
238
  "layermanager-opacity-tooltip-prefix": "niet vertaald",
120
239
  "layermanager-style-title": "niet vertaald",
121
240
  "layermanager-layer-error": "niet vertaald",
122
241
  "layermanager-layer": "niet vertaald",
242
+ "layermanager-layer-toggle": "niet vertaald",
243
+ "layermanager-layer-select": "niet vertaald",
244
+ "layermanager-layer-drag": "niet vertaald",
245
+ "layermanager-layer-leading": "niet vertaald",
246
+ "layermanager-layer-leading-none": "niet vertaald",
247
+ "layermanager-layer-leading-auto-timestep": "niet vertaald",
248
+ "layermanager-layer-leading-auto-update": "niet vertaald",
249
+ "layermanager-layer-leading-both": "niet vertaald",
250
+ "layermanager-layer-delete": "niet vertaald",
251
+ "layermanager-layer-duplicate": "niet vertaald",
252
+ "layermanager-options": "niet vertaald",
253
+ "layermanager-baselayers-tooltip": "niet vertaald",
254
+ "layermanager-header-button-small": "niet vertaald",
255
+ "layermanager-header-button-medium": "niet vertaald",
256
+ "layermanager-header-button-large": "niet vertaald",
257
+ "layermanager-header-button-dock": "niet vertaald",
258
+ "layermanager-header-button-undock": "niet vertaald",
123
259
  "projection-title": "niet vertaald",
124
260
  "wms-loader-title": "niet vertaald",
125
261
  "wms-loader-description": "niet vertaald",
@@ -127,7 +263,27 @@ var nl = {
127
263
  "wms-loader-error-http": "niet vertaald",
128
264
  "wms-loader-error-valid-service": "niet vertaald",
129
265
  "wms-loader-error-valid-url": "niet vertaald",
130
- "actions-close": "niet vertaald"
266
+ "search-title": "niet vertaald",
267
+ "search-title-aria": "niet vertaald",
268
+ "search-find-location": "niet vertaald",
269
+ "search-error": "niet vertaald",
270
+ "syncgroups-title": "niet vertaald",
271
+ "syncgroups-zoom": "niet vertaald",
272
+ "syncgroups-timeslider": "niet vertaald",
273
+ "syncgroups-level": "niet vertaald",
274
+ "syncgroups-add-group": "niet vertaald",
275
+ "syncgroups-remove-group": "niet vertaald",
276
+ "actions-close": "niet vertaald",
277
+ "sentry-start-recording": "niet vertaald",
278
+ "sentry-stop-recording": "niet vertaald",
279
+ "layermanager-acceptance-time-within": "niet vertaald",
280
+ "layermanager-acceptance-time-outside": "niet vertaald",
281
+ "layermanager-acceptance-time-updated": "niet vertaald",
282
+ "layermanager-acceptance-time-off": "niet vertaald",
283
+ "layermanager-acceptance-time-exact": "niet vertaald",
284
+ "layermanager-dimensions-none": "niet vertaald",
285
+ feature_info_marker_info: "niet vertaald",
286
+ feature_info_location_info: "niet vertaald"
131
287
  };
132
288
  var coreTranslations = {
133
289
  en: en,
@@ -1792,6 +1948,49 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
1792
1948
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
1793
1949
  };
1794
1950
 
1951
+ const CORE_NAMESPACE = 'core';
1952
+ const initCoreReactI18n = () => {
1953
+ i18n.use(initReactI18next).init({
1954
+ lng: 'en',
1955
+ fallbackLng: 'en',
1956
+ ns: CORE_NAMESPACE,
1957
+ interpolation: {
1958
+ escapeValue: false
1959
+ },
1960
+ resources: {
1961
+ en: {
1962
+ [CORE_NAMESPACE]: coreTranslations.en,
1963
+ [WEBMAP_REACT_NAMESPACE]: webmapReactTranslations.en,
1964
+ [SHARED_NAMESPACE]: sharedTranslations.en,
1965
+ [TIMESLIDER_NAMESPACE]: timesliderTranslations.en
1966
+ },
1967
+ fi: {
1968
+ [CORE_NAMESPACE]: coreTranslations.fi,
1969
+ [WEBMAP_REACT_NAMESPACE]: webmapReactTranslations.fi,
1970
+ [SHARED_NAMESPACE]: sharedTranslations.fi,
1971
+ [TIMESLIDER_NAMESPACE]: timesliderTranslations.fi
1972
+ },
1973
+ no: {
1974
+ [CORE_NAMESPACE]: coreTranslations.no,
1975
+ [WEBMAP_REACT_NAMESPACE]: webmapReactTranslations.no,
1976
+ [SHARED_NAMESPACE]: sharedTranslations.no,
1977
+ [TIMESLIDER_NAMESPACE]: timesliderTranslations.no
1978
+ },
1979
+ nl: {
1980
+ [CORE_NAMESPACE]: coreTranslations.nl,
1981
+ [WEBMAP_REACT_NAMESPACE]: webmapReactTranslations.nl,
1982
+ [SHARED_NAMESPACE]: sharedTranslations.nl,
1983
+ [TIMESLIDER_NAMESPACE]: timesliderTranslations.nl
1984
+ }
1985
+ }
1986
+ });
1987
+ };
1988
+ const ns = [CORE_NAMESPACE, TIMESLIDER_NAMESPACE];
1989
+ const translateKeyOutsideComponents = (key, params = undefined) => i18n.t(key, Object.assign({
1990
+ ns
1991
+ }, params));
1992
+ const useCoreTranslation = () => useTranslation(ns);
1993
+
1795
1994
  /* *
1796
1995
  * Licensed under the Apache License, Version 2.0 (the "License");
1797
1996
  * you may not use this file except in compliance with the License.
@@ -1829,6 +2028,9 @@ const HeaderOptions = ({
1829
2028
  mapWidth
1830
2029
  }) => {
1831
2030
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
2031
+ const {
2032
+ t
2033
+ } = useCoreTranslation();
1832
2034
  React.useEffect(() => {
1833
2035
  const handleKeyDown = event => {
1834
2036
  if (shortcutsEnabled) {
@@ -1847,7 +2049,7 @@ const HeaderOptions = ({
1847
2049
  };
1848
2050
  }, [onChangeSize, shortcutsEnabled]);
1849
2051
  return /*#__PURE__*/React.createElement(React.Fragment, null, !((_a = buttonSettings === null || buttonSettings === void 0 ? void 0 : buttonSettings.small) === null || _a === void 0 ? void 0 : _a.isDisabled) && ( /*#__PURE__*/React.createElement(CustomIconButton, {
1850
- tooltipTitle: "small",
2052
+ tooltipTitle: t('layermanager-header-button-small'),
1851
2053
  "data-testid": "collapseSmall-btn",
1852
2054
  onClick: () => {
1853
2055
  if (!isDockedLayerManager) {
@@ -1858,7 +2060,7 @@ const HeaderOptions = ({
1858
2060
  },
1859
2061
  className: "collapseSmall-btn"
1860
2062
  }, (_c = (_b = buttonSettings === null || buttonSettings === void 0 ? void 0 : buttonSettings.small) === null || _b === void 0 ? void 0 : _b.icon) !== null && _c !== void 0 ? _c : /*#__PURE__*/React.createElement(CollapseSmall, null))), !((_d = buttonSettings === null || buttonSettings === void 0 ? void 0 : buttonSettings.medium) === null || _d === void 0 ? void 0 : _d.isDisabled) && ( /*#__PURE__*/React.createElement(CustomIconButton, {
1861
- tooltipTitle: "medium",
2063
+ tooltipTitle: t('layermanager-header-button-medium'),
1862
2064
  "data-testid": "collapseMedium-btn",
1863
2065
  onClick: () => {
1864
2066
  if (!isDockedLayerManager) {
@@ -1869,7 +2071,7 @@ const HeaderOptions = ({
1869
2071
  },
1870
2072
  className: "collapseMedium-btn"
1871
2073
  }, (_f = (_e = buttonSettings === null || buttonSettings === void 0 ? void 0 : buttonSettings.medium) === null || _e === void 0 ? void 0 : _e.icon) !== null && _f !== void 0 ? _f : /*#__PURE__*/React.createElement(CollapseMedium, null))), !((_g = buttonSettings === null || buttonSettings === void 0 ? void 0 : buttonSettings.large) === null || _g === void 0 ? void 0 : _g.isDisabled) && ( /*#__PURE__*/React.createElement(CustomIconButton, {
1872
- tooltipTitle: "large",
2074
+ tooltipTitle: t('layermanager-header-button-large'),
1873
2075
  "data-testid": "collapseLarge-btn",
1874
2076
  onClick: () => {
1875
2077
  if (!isDockedLayerManager) {
@@ -1880,7 +2082,7 @@ const HeaderOptions = ({
1880
2082
  },
1881
2083
  className: "collapseLarge-btn"
1882
2084
  }, (_j = (_h = buttonSettings === null || buttonSettings === void 0 ? void 0 : buttonSettings.large) === null || _h === void 0 ? void 0 : _h.icon) !== null && _j !== void 0 ? _j : /*#__PURE__*/React.createElement(CollapseLarge, null))), !((_k = buttonSettings === null || buttonSettings === void 0 ? void 0 : buttonSettings.dock) === null || _k === void 0 ? void 0 : _k.isDisabled) && ( /*#__PURE__*/React.createElement(CustomIconButton, {
1883
- tooltipTitle: isDockedLayerManager ? 'Undock' : 'Dock',
2085
+ tooltipTitle: isDockedLayerManager ? t('layermanager-header-button-undock') : t('layermanager-header-button-dock'),
1884
2086
  "data-testid": "dockedBtn",
1885
2087
  disableRipple: true,
1886
2088
  onClick: () => onClickDockButton()
@@ -2124,7 +2326,7 @@ const style = {
2124
2326
  padding: 0
2125
2327
  };
2126
2328
  const LayerSelectButton = ({
2127
- tooltipTitle: _tooltipTitle = 'Open the layer selector',
2329
+ tooltipTitle: _tooltipTitle = translateKeyOutsideComponents('layermanager-layer-select'),
2128
2330
  icon: _icon = /*#__PURE__*/React.createElement(LayersAdd, {
2129
2331
  "data-testid": "layerSelectButtonConnectIcon"
2130
2332
  }),
@@ -2155,6 +2357,9 @@ const DescriptionRow = _a => {
2155
2357
  addLayerComponent
2156
2358
  } = _a,
2157
2359
  gridProps = __rest(_a, ["mapPresetsModule", "settings", "addLayerComponent"]);
2360
+ const {
2361
+ t
2362
+ } = useCoreTranslation();
2158
2363
  const [mapPresetsModuleInline] = React.useState(mapPresetsModule ? Object.assign(Object.assign({}, mapPresetsModule), {
2159
2364
  props: Object.assign(Object.assign({}, mapPresetsModule.props), {
2160
2365
  id: 'mappresets-menubuttonInline'
@@ -2185,7 +2390,7 @@ const DescriptionRow = _a => {
2185
2390
  }, /*#__PURE__*/React.createElement(Box, {
2186
2391
  className: `header-layer ${hasMapPresetsModule ? 'mappresetsModule-enabled' : ''}`,
2187
2392
  sx: styles$3.text
2188
- }, (_e = (_d = settings === null || settings === void 0 ? void 0 : settings.layerName) === null || _d === void 0 ? void 0 : _d.title) !== null && _e !== void 0 ? _e : 'Layer'), /*#__PURE__*/React.createElement(Box, {
2393
+ }, (_e = (_d = settings === null || settings === void 0 ? void 0 : settings.layerName) === null || _d === void 0 ? void 0 : _d.title) !== null && _e !== void 0 ? _e : t('layermanager-layer')), /*#__PURE__*/React.createElement(Box, {
2189
2394
  className: "header-mapPresets",
2190
2395
  sx: {
2191
2396
  marginRight: 4
@@ -2194,21 +2399,21 @@ const DescriptionRow = _a => {
2194
2399
  className: columnClasses.column3
2195
2400
  }, /*#__PURE__*/React.createElement(Box, {
2196
2401
  sx: styles$3.text
2197
- }, (_g = (_f = settings === null || settings === void 0 ? void 0 : settings.layerStyle) === null || _f === void 0 ? void 0 : _f.title) !== null && _g !== void 0 ? _g : 'Style')), /*#__PURE__*/React.createElement(Grid, {
2402
+ }, (_g = (_f = settings === null || settings === void 0 ? void 0 : settings.layerStyle) === null || _f === void 0 ? void 0 : _f.title) !== null && _g !== void 0 ? _g : t('layermanager-style-title'))), /*#__PURE__*/React.createElement(Grid, {
2198
2403
  className: columnClasses.column4
2199
2404
  }, /*#__PURE__*/React.createElement(Box, {
2200
2405
  sx: styles$3.text
2201
- }, (_j = (_h = settings === null || settings === void 0 ? void 0 : settings.opacity) === null || _h === void 0 ? void 0 : _h.title) !== null && _j !== void 0 ? _j : 'Opacity')), /*#__PURE__*/React.createElement(Grid, {
2406
+ }, (_j = (_h = settings === null || settings === void 0 ? void 0 : settings.opacity) === null || _h === void 0 ? void 0 : _h.title) !== null && _j !== void 0 ? _j : t('layermanager-opacity-title'))), /*#__PURE__*/React.createElement(Grid, {
2202
2407
  className: columnClasses.column5
2203
2408
  }, /*#__PURE__*/React.createElement(Box, {
2204
2409
  sx: styles$3.text
2205
- }, (_l = (_k = settings === null || settings === void 0 ? void 0 : settings.dimensions) === null || _k === void 0 ? void 0 : _k.title) !== null && _l !== void 0 ? _l : 'Dimensions')), /*#__PURE__*/React.createElement(Grid, {
2410
+ }, (_l = (_k = settings === null || settings === void 0 ? void 0 : settings.dimensions) === null || _k === void 0 ? void 0 : _k.title) !== null && _l !== void 0 ? _l : t('layermanager-dimensions-title'))), /*#__PURE__*/React.createElement(Grid, {
2206
2411
  className: columnClasses.acceptanceTime
2207
2412
  }, /*#__PURE__*/React.createElement(Box, {
2208
2413
  sx: [styles$3.text, {
2209
2414
  whiteSpace: 'nowrap'
2210
2415
  }]
2211
- }, (_o = (_m = settings === null || settings === void 0 ? void 0 : settings.acceptanceTime) === null || _m === void 0 ? void 0 : _m.title) !== null && _o !== void 0 ? _o : 'Acc Time')), /*#__PURE__*/React.createElement(Grid, {
2416
+ }, (_o = (_m = settings === null || settings === void 0 ? void 0 : settings.acceptanceTime) === null || _m === void 0 ? void 0 : _m.title) !== null && _o !== void 0 ? _o : t('layermanager-acceptance-time'))), /*#__PURE__*/React.createElement(Grid, {
2212
2417
  className: columnClasses.loadDuration
2213
2418
  }, /*#__PURE__*/React.createElement(Box, {
2214
2419
  sx: [styles$3.text, {
@@ -2378,49 +2583,6 @@ $$7({ target: 'Array', proto: true, forced: String(test$1) === String(test$1.rev
2378
2583
  }
2379
2584
  });
2380
2585
 
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
-
2424
2586
  const DimensionSelectValue = ({
2425
2587
  isEnabled,
2426
2588
  tooltip,
@@ -2560,8 +2722,8 @@ const DimensionSelectName = ({
2560
2722
  }, (nameMappings === null || nameMappings === void 0 ? void 0 : nameMappings[name]) || name))));
2561
2723
  };
2562
2724
 
2563
- const defaultDimensionNameTooltip = selectedDimension => `Dimensions: ${selectedDimension.name}`;
2564
- const defaultDimensionValueTooltip = selectedDimension => `Dimensions: ${selectedDimension.name} ${selectedDimension.currentValue} ${selectedDimension.units}`;
2725
+ const defaultDimensionNameTooltip = selectedDimension => `${translateKeyOutsideComponents('layermanager-dimensions-title')}: ${selectedDimension.name}`;
2726
+ const defaultDimensionValueTooltip = selectedDimension => `${translateKeyOutsideComponents('layermanager-dimensions-title')}: ${selectedDimension.name} ${selectedDimension.currentValue} ${selectedDimension.units}`;
2565
2727
  const DimensionSelect = ({
2566
2728
  onLayerChangeDimension,
2567
2729
  layerDimensions: _layerDimensions = [],
@@ -2660,7 +2822,7 @@ const RenderLayers = ({
2660
2822
  layerName,
2661
2823
  layers: _layers = [],
2662
2824
  isEnabled: _isEnabled = true,
2663
- tooltipPrefix: _tooltipPrefix = 'Layer: ',
2825
+ tooltipPrefix: _tooltipPrefix = `${translateKeyOutsideComponents('layermanager-layer')}: `,
2664
2826
  skipLocalStyling
2665
2827
  }) => {
2666
2828
  var _a;
@@ -2891,9 +3053,12 @@ const LayerManagerMenuButton = ({
2891
3053
  mapId,
2892
3054
  layerId,
2893
3055
  onLayerDuplicate,
2894
- tooltipTitle: _tooltipTitle = 'Options',
3056
+ tooltipTitle: _tooltipTitle = translateKeyOutsideComponents('layermanager-options'),
2895
3057
  icon
2896
3058
  }) => {
3059
+ const {
3060
+ t
3061
+ } = useCoreTranslation();
2897
3062
  const onClickDuplicate = () => {
2898
3063
  onLayerDuplicate({
2899
3064
  mapId,
@@ -2911,7 +3076,7 @@ const LayerManagerMenuButton = ({
2911
3076
  },
2912
3077
  menuPosition: "bottom",
2913
3078
  menuItems: [{
2914
- text: 'Duplicate layer',
3079
+ text: t('layermanager-layer-duplicate'),
2915
3080
  action: onClickDuplicate,
2916
3081
  icon: /*#__PURE__*/React.createElement(Copy, null)
2917
3082
  }],
@@ -3003,7 +3168,7 @@ const RenderStyles = ({
3003
3168
  onChangeLayerStyle,
3004
3169
  isEnabled: _isEnabled = true,
3005
3170
  icon,
3006
- tooltipPrefix: _tooltipPrefix = 'Style: ',
3171
+ tooltipPrefix: _tooltipPrefix = `${translateKeyOutsideComponents('layermanager-style-title')}: `,
3007
3172
  skipLocalStyling
3008
3173
  }) => {
3009
3174
  var _a;
@@ -3092,8 +3257,11 @@ const ActivateLayer = ({
3092
3257
  current
3093
3258
  }) => {
3094
3259
  const isActive = current !== AutoOptions.NONE;
3260
+ const {
3261
+ t
3262
+ } = useCoreTranslation();
3095
3263
  return /*#__PURE__*/React.createElement(ToggleMenu, {
3096
- tooltipTitle: "Leading layer",
3264
+ tooltipTitle: t('layermanager-layer-leading'),
3097
3265
  buttonSx: {
3098
3266
  margin: '4px 2px',
3099
3267
  '&.MuiButtonBase-root': {
@@ -3111,35 +3279,35 @@ const ActivateLayer = ({
3111
3279
  isEnabled: isEnabled
3112
3280
  }),
3113
3281
  menuItems: [{
3114
- text: 'None',
3282
+ text: t('layermanager-layer-leading-none'),
3115
3283
  action: () => {
3116
3284
  onChange(AutoOptions.NONE);
3117
3285
  },
3118
3286
  icon: /*#__PURE__*/React.createElement(None, null),
3119
3287
  isSelected: current === AutoOptions.NONE
3120
3288
  }, {
3121
- text: 'Auto-timestep',
3289
+ text: t('layermanager-layer-leading-auto-timestep'),
3122
3290
  action: () => {
3123
3291
  onChange(AutoOptions.TIMESTEP);
3124
3292
  },
3125
3293
  icon: /*#__PURE__*/React.createElement(FastForward, null),
3126
3294
  isSelected: current === AutoOptions.TIMESTEP
3127
3295
  }, {
3128
- text: 'Auto-update',
3296
+ text: t('layermanager-layer-leading-auto-update'),
3129
3297
  action: () => {
3130
3298
  onChange(AutoOptions.UPDATE);
3131
3299
  },
3132
3300
  icon: /*#__PURE__*/React.createElement(AutoUpdateActive, null),
3133
3301
  isSelected: current === AutoOptions.UPDATE
3134
3302
  }, {
3135
- text: 'Both',
3303
+ text: t('layermanager-layer-leading-both'),
3136
3304
  action: () => {
3137
3305
  onChange(AutoOptions.BOTH);
3138
3306
  },
3139
3307
  isSelected: current === AutoOptions.BOTH,
3140
3308
  icon: /*#__PURE__*/React.createElement(Both, null)
3141
3309
  }],
3142
- menuTitle: "Leading layer"
3310
+ menuTitle: t('layermanager-layer-leading')
3143
3311
  });
3144
3312
  };
3145
3313
  const AutoUpdateIcon = ({
@@ -3231,37 +3399,6 @@ if (NOT_GENERIC || INCORRECT_NAME) {
3231
3399
  }, { unsafe: true });
3232
3400
  }
3233
3401
 
3234
- const acceptanceTimes = [{
3235
- value: 'off',
3236
- text: 'off'
3237
- }, {
3238
- value: '0',
3239
- text: 'exact'
3240
- }, {
3241
- value: '1',
3242
- text: '00:01'
3243
- }, {
3244
- value: '5',
3245
- text: '00:05'
3246
- }, {
3247
- value: '10',
3248
- text: '00:10'
3249
- }, {
3250
- value: '30',
3251
- text: '00:30'
3252
- }, {
3253
- value: '60',
3254
- text: '01:00'
3255
- }, {
3256
- value: '720',
3257
- text: '12:00'
3258
- }, {
3259
- value: '1440',
3260
- text: '24:00'
3261
- }];
3262
- const acceptanceTimesValues = acceptanceTimes.map(time => ({
3263
- value: time.value
3264
- }));
3265
3402
  const AcceptanceTime = ({
3266
3403
  onChangeAcceptanceTime,
3267
3404
  isEnabled: _isEnabled = true,
@@ -3278,6 +3415,47 @@ const AcceptanceTime = ({
3278
3415
  onChangeAcceptanceTime(acceptanceTime);
3279
3416
  };
3280
3417
  const layerAcceptanceTime = acceptanceTimeInMinutes === undefined ? 'off' : acceptanceTimeInMinutes.toString();
3418
+ const getAcceptenceTimes = () => {
3419
+ const acceptanceTimes = [{
3420
+ value: 'off',
3421
+ text: t('layermanager-acceptance-time-off')
3422
+ }, {
3423
+ value: '0',
3424
+ text: t('layermanager-acceptance-time-exact')
3425
+ }, {
3426
+ value: '1',
3427
+ text: '00:01'
3428
+ }, {
3429
+ value: '5',
3430
+ text: '00:05'
3431
+ }, {
3432
+ value: '10',
3433
+ text: '00:10'
3434
+ }, {
3435
+ value: '30',
3436
+ text: '00:30'
3437
+ }, {
3438
+ value: '60',
3439
+ text: '01:00'
3440
+ }, {
3441
+ value: '720',
3442
+ text: '12:00'
3443
+ }, {
3444
+ value: '1440',
3445
+ text: '24:00'
3446
+ }];
3447
+ const acceptanceTimesValues = acceptanceTimes.map(time => ({
3448
+ value: time.value
3449
+ }));
3450
+ return {
3451
+ acceptanceTimes,
3452
+ acceptanceTimesValues
3453
+ };
3454
+ };
3455
+ const {
3456
+ acceptanceTimes,
3457
+ acceptanceTimesValues
3458
+ } = React__default.useRef(getAcceptenceTimes()).current;
3281
3459
  const title = t('layermanager-acceptance-time');
3282
3460
  return /*#__PURE__*/React__default.createElement(TooltipSelect, {
3283
3461
  tooltip: tooltipTitle !== null && tooltipTitle !== void 0 ? tooltipTitle : title,
@@ -3334,6 +3512,27 @@ const ORANGE = {
3334
3512
  const MissingData = ({
3335
3513
  layerIsInsideAcceptanceTime
3336
3514
  }) => {
3515
+ const {
3516
+ t
3517
+ } = useCoreTranslation();
3518
+ const getTextAndColor = layerIsInsideAcceptanceTime => {
3519
+ if (layerIsInsideAcceptanceTime === 'inside') {
3520
+ return {
3521
+ tooltipText: t('layermanager-acceptance-time-within'),
3522
+ color: ORANGE
3523
+ };
3524
+ }
3525
+ if (layerIsInsideAcceptanceTime === 'outside') {
3526
+ return {
3527
+ color: RED,
3528
+ tooltipText: t('layermanager-acceptance-time-outside')
3529
+ };
3530
+ }
3531
+ return {
3532
+ color: GREEN,
3533
+ tooltipText: t('layermanager-acceptance-time-updated')
3534
+ };
3535
+ };
3337
3536
  const {
3338
3537
  tooltipText,
3339
3538
  color
@@ -3357,24 +3556,6 @@ const MissingData = ({
3357
3556
  }
3358
3557
  })));
3359
3558
  };
3360
- const getTextAndColor = layerIsInsideAcceptanceTime => {
3361
- if (layerIsInsideAcceptanceTime === 'inside') {
3362
- return {
3363
- tooltipText: 'Layer: within the data acceptance window',
3364
- color: ORANGE
3365
- };
3366
- }
3367
- if (layerIsInsideAcceptanceTime === 'outside') {
3368
- return {
3369
- color: RED,
3370
- tooltipText: 'Layer: out of date'
3371
- };
3372
- }
3373
- return {
3374
- color: GREEN,
3375
- tooltipText: 'Layer: updated'
3376
- };
3377
- };
3378
3559
 
3379
3560
  const MILLISECONDS_PER_SECOND = 1e3;
3380
3561
  const MAX_DURATION_IN_SECONDS = 60;
@@ -3515,11 +3696,16 @@ const Opacity = ({
3515
3696
  }));
3516
3697
  const DeleteLayer = ({
3517
3698
  onClick
3518
- }) => ( /*#__PURE__*/React__default.createElement(CustomIconButton, {
3519
- tooltipTitle: "Delete",
3520
- onClick: onClick,
3521
- "data-testid": "deleteButton"
3522
- }, /*#__PURE__*/React__default.createElement(Delete, null)));
3699
+ }) => {
3700
+ const {
3701
+ t
3702
+ } = useCoreTranslation();
3703
+ return /*#__PURE__*/React__default.createElement(CustomIconButton, {
3704
+ tooltipTitle: t('layermanager-layer-delete'),
3705
+ onClick: onClick,
3706
+ "data-testid": "deleteButton"
3707
+ }, /*#__PURE__*/React__default.createElement(Delete, null));
3708
+ };
3523
3709
  const ShowLayerInfo = ({
3524
3710
  onClick
3525
3711
  }) => /*#__PURE__*/React__default.createElement(LayerInfoButton, {
@@ -3853,7 +4039,7 @@ const Accordion = ({
3853
4039
  const DeleteLayerConnect = ({
3854
4040
  layerId,
3855
4041
  mapId,
3856
- tooltipTitle: _tooltipTitle = 'Delete',
4042
+ tooltipTitle: _tooltipTitle = translateKeyOutsideComponents('layermanager-layer-delete'),
3857
4043
  icon: _icon = /*#__PURE__*/React.createElement(Delete, null)
3858
4044
  }) => {
3859
4045
  const dispatch = useDispatch();
@@ -3904,6 +4090,9 @@ const EnableLayerConnect = ({
3904
4090
  tooltipTitle
3905
4091
  }) => {
3906
4092
  const dispatch = useDispatch();
4093
+ const {
4094
+ t
4095
+ } = useCoreTranslation();
3907
4096
  const layerChangeEnabled = React.useCallback(({
3908
4097
  layerId,
3909
4098
  enabled
@@ -3913,7 +4102,7 @@ const EnableLayerConnect = ({
3913
4102
  mapId,
3914
4103
  origin: layerTypes.LayerActionOrigin.layerManager
3915
4104
  })), [dispatch, mapId]);
3916
- const normalTooltip = tooltipTitle !== null && tooltipTitle !== void 0 ? tooltipTitle : 'Toggle visibility';
4105
+ const normalTooltip = tooltipTitle !== null && tooltipTitle !== void 0 ? tooltipTitle : t('layermanager-layer-toggle');
3917
4106
  const miniTooltip = tooltipTitle !== null && tooltipTitle !== void 0 ? tooltipTitle : _layerName;
3918
4107
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(CustomIconButton, {
3919
4108
  shouldShowAsDisabled: !_isEnabled,
@@ -4281,6 +4470,9 @@ const ActivateLayerConnect = ({
4281
4470
  layerId,
4282
4471
  mapId
4283
4472
  }) => {
4473
+ const {
4474
+ t
4475
+ } = useCoreTranslation();
4284
4476
  const dispatch = useDispatch();
4285
4477
  const autoUpdateLayerId = useSelector(store => mapSelectors.getAutoUpdateLayerId(store, mapId));
4286
4478
  const autoTimestepLayerId = useSelector(store => mapSelectors.getAutoTimeStepLayerId(store, mapId));
@@ -4411,7 +4603,7 @@ const ActivateLayerConnect = ({
4411
4603
  const layerHasTimeDimension = useSelector(store => layerSelectors.getLayerHasTimeDimension(store, layerId));
4412
4604
  if (!layerHasTimeDimension) {
4413
4605
  return /*#__PURE__*/React.createElement(CustomTooltip, {
4414
- title: "Layer has no time dimension",
4606
+ title: t('layermanager-dimensions-none'),
4415
4607
  placement: "top"
4416
4608
  }, /*#__PURE__*/React.createElement(Box$1, {
4417
4609
  "data-testid": "noTimeDimension",
@@ -4472,6 +4664,9 @@ const AcceptanceTimeConnect = ({
4472
4664
  tooltipTitle,
4473
4665
  skipLocalStyling
4474
4666
  }) => {
4667
+ const {
4668
+ t
4669
+ } = useCoreTranslation();
4475
4670
  const isEnabled = useSelector(store => layerSelectors.getLayerEnabled(store, layerId));
4476
4671
  const dispatch = useDispatch();
4477
4672
  const acceptanceTimeInMinutes = useSelector(store => {
@@ -4486,7 +4681,7 @@ const AcceptanceTimeConnect = ({
4486
4681
  const layerHasTimeDimension = useSelector(store => layerSelectors.getLayerHasTimeDimension(store, layerId));
4487
4682
  if (!layerHasTimeDimension) {
4488
4683
  return /*#__PURE__*/React__default.createElement(CustomTooltip, {
4489
- title: "Layer has no time dimension",
4684
+ title: t('layermanager-dimensions-none'),
4490
4685
  placement: "top"
4491
4686
  }, /*#__PURE__*/React__default.createElement(Box, {
4492
4687
  sx: {
@@ -4759,7 +4954,6 @@ const LayerRowConnect = /*#__PURE__*/React.memo(({
4759
4954
  });
4760
4955
  }, areEqual);
4761
4956
 
4762
- const TOOLTIP_TITLE = 'Drag';
4763
4957
  const DragHandle = ({
4764
4958
  isDisabled: _isDisabled = false,
4765
4959
  index: _index = undefined,
@@ -4768,7 +4962,7 @@ const DragHandle = ({
4768
4962
  icon: _icon = /*#__PURE__*/React__default.createElement(DragHandle$1, {
4769
4963
  "data-testid": "dragHandleIcon"
4770
4964
  }),
4771
- tooltipTitle: _tooltipTitle = TOOLTIP_TITLE
4965
+ tooltipTitle: _tooltipTitle = translateKeyOutsideComponents('layermanager-layer-drag')
4772
4966
  }) => {
4773
4967
  const usedTooltipTitle = _hideTooltip ? '' : _tooltipTitle;
4774
4968
  return /*#__PURE__*/React__default.createElement(CustomIconButton, {
@@ -5036,7 +5230,7 @@ const BaseLayers = ({
5036
5230
  availableBaseLayers,
5037
5231
  onChangeBaseLayers,
5038
5232
  icon,
5039
- tooltipPrefix: _tooltipPrefix = 'Layer: '
5233
+ tooltipPrefix: _tooltipPrefix = `${translateKeyOutsideComponents('layermanager-layer')}: `
5040
5234
  }) => {
5041
5235
  var _a;
5042
5236
  const {
@@ -6601,7 +6795,7 @@ const LayerManager = ({
6601
6795
  preloadedBaseServices,
6602
6796
  bounds,
6603
6797
  onClose,
6604
- title: _title = 'Layer Manager',
6798
+ title: _title = translateKeyOutsideComponents('layermanager-title'),
6605
6799
  isOpen,
6606
6800
  onMouseDown: _onMouseDown = () => {},
6607
6801
  order: _order = 0,
@@ -6623,6 +6817,9 @@ const LayerManager = ({
6623
6817
  addLayerComponent
6624
6818
  }) => {
6625
6819
  var _a, _b, _c, _d, _e, _f, _g;
6820
+ const {
6821
+ t
6822
+ } = useCoreTranslation();
6626
6823
  const minSize = {
6627
6824
  width: 100,
6628
6825
  height: 126
@@ -6744,7 +6941,7 @@ const LayerManager = ({
6744
6941
  settings: settings === null || settings === void 0 ? void 0 : settings.content
6745
6942
  }), /*#__PURE__*/React.createElement(BaseLayerRow, {
6746
6943
  mapId: mapId,
6747
- tooltip: "Add base layers",
6944
+ tooltip: t('layermanager-baselayers-tooltip'),
6748
6945
  preloadedAvailableBaseLayers: preloadedAvailableBaseLayers,
6749
6946
  preloadedServices: preloadedBaseServices,
6750
6947
  settings: settings === null || settings === void 0 ? void 0 : settings.footer
@@ -6826,7 +7023,7 @@ const LayerManagerConnect = ({
6826
7023
  preloadedMapServices,
6827
7024
  preloadedBaseServices,
6828
7025
  bounds,
6829
- title: _title = 'Layer Manager',
7026
+ title: _title = translateKeyOutsideComponents('layermanager-title'),
6830
7027
  showMapIdInTitle: _showMapIdInTitle = false,
6831
7028
  leftHeaderComponent: _leftHeaderComponent = undefined,
6832
7029
  mapId: initialMapId = null,
@@ -6931,6 +7128,9 @@ const LayerManagerMapButtonConnect = ({
6931
7128
  source: _source = 'app',
6932
7129
  isMultiMap: _isMultiMap = false
6933
7130
  }) => {
7131
+ const {
7132
+ t
7133
+ } = useCoreTranslation();
6934
7134
  const dispatch = useDispatch();
6935
7135
  const dialogType = _isMultiMap ? `${uiTypes.DialogTypes.LayerManager}-${mapId}` : uiTypes.DialogTypes.LayerManager;
6936
7136
  const currentActiveMapId = useSelector(store => uiSelectors.getDialogMapId(store, dialogType));
@@ -6945,7 +7145,7 @@ const LayerManagerMapButtonConnect = ({
6945
7145
  }, [currentActiveMapId, dialogType, dispatch, isOpenInStore, mapId, _source]);
6946
7146
  const isOpen = currentActiveMapId === mapId && isOpenInStore;
6947
7147
  return /*#__PURE__*/React.createElement(MapControlButton, {
6948
- title: "Layer Manager",
7148
+ title: t('layermanager-title'),
6949
7149
  "data-testid": "layerManagerButton",
6950
7150
  onClick: openLayerManagerDialog,
6951
7151
  isActive: isOpen
@@ -8212,12 +8412,10 @@ const LegendMapButtonConnect = ({
8212
8412
  }));
8213
8413
  }, [currentActiveMapId, dispatch, isOpenInStore, mapId, _source, legendType]);
8214
8414
  const isOpen = currentActiveMapId === mapId && isOpenInStore;
8215
- return /*#__PURE__*/React.createElement(MapControlButton, {
8216
- title: "Legend",
8217
- "data-testid": "open-Legend",
8218
- onClick: openLegendDialog,
8219
- isActive: isOpen
8220
- }, /*#__PURE__*/React.createElement(List$1, null));
8415
+ return /*#__PURE__*/React.createElement(LegendButton, {
8416
+ isOpen: isOpen,
8417
+ openLegendDialog: openLegendDialog
8418
+ });
8221
8419
  };
8222
8420
 
8223
8421
  /* *
@@ -8391,7 +8589,7 @@ const GetFeatureInfoDialog = ({
8391
8589
  },
8392
8590
  minWidth: 300,
8393
8591
  onClose: onClose,
8394
- title: _showMapId ? `Event marker info ${mapId}` : 'Event marker info',
8592
+ title: _showMapId ? `${t('feature_info_marker_info')} ${mapId}` : t('feature_info_marker_info'),
8395
8593
  initialMaxHeight: 440,
8396
8594
  isOpen: isOpen,
8397
8595
  "data-testid": "moveable-getfeatureinfo",
@@ -8552,6 +8750,9 @@ const GetFeatureInfoButtonConnect = ({
8552
8750
  mapId,
8553
8751
  source: _source = 'app'
8554
8752
  }) => {
8753
+ const {
8754
+ t
8755
+ } = useCoreTranslation();
8555
8756
  const dispatch = useDispatch();
8556
8757
  const gfiType = `getfeatureinfo-${mapId}`;
8557
8758
  const isOpenInStore = useSelector(store => uiSelectors.getisDialogOpen(store, gfiType));
@@ -8565,7 +8766,7 @@ const GetFeatureInfoButtonConnect = ({
8565
8766
  }));
8566
8767
  }, [mapId, dispatch, isOpenInStore, _source, gfiType]);
8567
8768
  return /*#__PURE__*/React.createElement(MapControlButton, {
8568
- title: "Get information for a specific location",
8769
+ title: t('feature_info_location_info'),
8569
8770
  "data-testid": "open-getfeatureinfo",
8570
8771
  onClick: openGfiDialog,
8571
8772
  isActive: isOpenInStore
@@ -8592,6 +8793,9 @@ const SearchControlButtonConnect = ({
8592
8793
  mapId,
8593
8794
  source: _source = 'app'
8594
8795
  }) => {
8796
+ const {
8797
+ t
8798
+ } = useCoreTranslation();
8595
8799
  const dispatch = useDispatch();
8596
8800
  const dialogType = `${uiTypes.DialogTypes.Search}-${mapId}`;
8597
8801
  const currentActiveMapId = useSelector(store => uiSelectors.getDialogMapId(store, dialogType));
@@ -8606,8 +8810,8 @@ const SearchControlButtonConnect = ({
8606
8810
  }, [currentActiveMapId, dialogType, dispatch, isOpenInStore, mapId, _source]);
8607
8811
  return /*#__PURE__*/React__default.createElement(MapControlButton, {
8608
8812
  onClick: openSearchDialog,
8609
- title: "Search",
8610
- "aria-label": "Map search",
8813
+ title: t('search-title'),
8814
+ "aria-label": t('search-title-aria'),
8611
8815
  isActive: isOpenInStore
8612
8816
  }, /*#__PURE__*/React__default.createElement(Search, null));
8613
8817
  };
@@ -8630,7 +8834,7 @@ const SearchControlButtonConnect = ({
8630
8834
  * */
8631
8835
  const MY_LOCATION = 'MyLocation';
8632
8836
  const locationOptions = {
8633
- enableHighAccuracy: true,
8837
+ enableHighAccuracy: false,
8634
8838
  timeout: 5000,
8635
8839
  maximumAge: 0
8636
8840
  };
@@ -8652,8 +8856,15 @@ const circleDrawFunction = (args, fillColor = '#88F', radius = 12) => {
8652
8856
  ctx.fill();
8653
8857
  };
8654
8858
  const MyMapLocation = ({
8655
- mapId
8859
+ mapId,
8860
+ isLoading,
8861
+ hasFailed,
8862
+ setIsLoading,
8863
+ setHasFailed
8656
8864
  }) => {
8865
+ const {
8866
+ t
8867
+ } = useCoreTranslation();
8657
8868
  const dispatch = useDispatch();
8658
8869
  const layersBelongsToCurrentMapId = useSelector(store => layerSelectors.getLayersByMapId(store, mapId || ''));
8659
8870
  const layerLocation = layersBelongsToCurrentMapId.find(layer => {
@@ -8668,13 +8879,17 @@ const MyMapLocation = ({
8668
8879
  const layerLocationId = (layerLocation === null || layerLocation === void 0 ? void 0 : layerLocation.id) || '';
8669
8880
  const circleDrawFunctionId = useRef(registerDrawFunction(circleDrawFunction));
8670
8881
  const handleLocationClick = () => {
8882
+ setIsLoading(true);
8671
8883
  if (mapId && layerLocationId !== '') {
8672
8884
  dispatch(layerActions.layerDelete({
8673
8885
  mapId,
8674
8886
  layerId: layerLocationId
8675
8887
  }));
8888
+ setIsLoading(false);
8676
8889
  } else if (navigator.geolocation && mapId && layerLocationId === '' && circleDrawFunctionId) {
8677
8890
  navigator.geolocation.getCurrentPosition(success => {
8891
+ setIsLoading(false);
8892
+ setHasFailed(false);
8678
8893
  const {
8679
8894
  coords: {
8680
8895
  latitude,
@@ -8711,40 +8926,70 @@ const MyMapLocation = ({
8711
8926
  }
8712
8927
  wmjsMap.calculateBoundingBoxAndZoom(latitude, longitude);
8713
8928
  }, error => {
8714
- console.warn(`Geolocation error: ${error.message}`);
8929
+ setIsLoading(false);
8930
+ setHasFailed(true);
8931
+ console.warn(t('search-error', {
8932
+ error: error.message
8933
+ }));
8715
8934
  }, locationOptions);
8716
8935
  }
8717
8936
  };
8718
- return /*#__PURE__*/React__default.createElement(CustomIconButton, {
8719
- title: "Find my location",
8937
+ const chooseIcon = () => {
8938
+ return hasFailed ? ( /*#__PURE__*/React__default.createElement(Exclamation, {
8939
+ style: {
8940
+ color: 'red'
8941
+ },
8942
+ "aria-label": "location error"
8943
+ })) : ( /*#__PURE__*/React__default.createElement(MyLocation, {
8944
+ "aria-label": "location default"
8945
+ }));
8946
+ };
8947
+ return /*#__PURE__*/React__default.createElement("div", null, isLoading ? ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(CircularProgress, {
8948
+ value: 100,
8949
+ variant: "determinate",
8950
+ sx: {
8951
+ height: '100%',
8952
+ width: '100%',
8953
+ color: theme => theme.palette.mode === 'light' ? '#1a90ff' : '#bad4ff',
8954
+ padding: '8px'
8955
+ },
8956
+ thickness: 6,
8957
+ "aria-label": "location loading"
8958
+ }), /*#__PURE__*/React__default.createElement(CircularProgress, {
8959
+ variant: "indeterminate",
8960
+ disableShrink: true,
8961
+ sx: {
8962
+ height: '100%',
8963
+ width: '100%',
8964
+ color: theme => theme.palette.mode === 'light' ? '#bad4ff' : '#414751',
8965
+ animationDuration: '1000ms',
8966
+ position: 'absolute',
8967
+ left: 0,
8968
+ [`& .${circularProgressClasses.circle}`]: {
8969
+ strokeLinecap: 'round'
8970
+ },
8971
+ padding: '8px'
8972
+ },
8973
+ thickness: 6
8974
+ }))) : ( /*#__PURE__*/React__default.createElement(CustomIconButton, {
8975
+ title: t('search-find-location'),
8720
8976
  "aria-label": MY_LOCATION,
8721
8977
  onClick: handleLocationClick,
8722
8978
  isSelected: layerLocationId !== '',
8723
8979
  size: "large"
8724
- }, /*#__PURE__*/React__default.createElement(MyLocation, null));
8980
+ }, chooseIcon())));
8725
8981
  };
8726
8982
 
8727
- /* *
8728
- * Licensed under the Apache License, Version 2.0 (the "License");
8729
- * you may not use this file except in compliance with the License.
8730
- * You may obtain a copy of the License at
8731
- *
8732
- * http://www.apache.org/licenses/LICENSE-2.0
8733
- *
8734
- * Unless required by applicable law or agreed to in writing, software
8735
- * distributed under the License is distributed on an "AS IS" BASIS,
8736
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8737
- * See the License for the specific language governing permissions and
8738
- * limitations under the License.
8739
- *
8740
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
8741
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
8742
- * */
8743
8983
  const SearchDialog = ({
8744
8984
  isOpen,
8745
8985
  onClose,
8746
8986
  mapId: _mapId = ''
8747
8987
  }) => {
8988
+ const {
8989
+ t
8990
+ } = useCoreTranslation();
8991
+ const [isLoading, setIsLoading] = useState(false);
8992
+ const [hasFailed, setHasFailed] = useState(false);
8748
8993
  return isOpen && _mapId ? ( /*#__PURE__*/React__default.createElement(Box$1, {
8749
8994
  sx: {
8750
8995
  display: 'flex',
@@ -8759,17 +9004,21 @@ const SearchDialog = ({
8759
9004
  backgroundColor: theme => theme.palette.background.paper
8760
9005
  }
8761
9006
  }, /*#__PURE__*/React__default.createElement(MyMapLocation, {
8762
- mapId: _mapId
9007
+ mapId: _mapId,
9008
+ isLoading: isLoading,
9009
+ hasFailed: hasFailed,
9010
+ setIsLoading: setIsLoading,
9011
+ setHasFailed: setHasFailed
8763
9012
  }), /*#__PURE__*/React__default.createElement(TextField, {
8764
9013
  id: "dummy-search-field",
8765
- label: "Search",
9014
+ label: t('search-title'),
8766
9015
  variant: "filled",
8767
9016
  InputProps: {
8768
9017
  disableUnderline: true,
8769
9018
  endAdornment: ( /*#__PURE__*/React__default.createElement(InputAdornment, {
8770
9019
  position: "end"
8771
9020
  }, /*#__PURE__*/React__default.createElement(CustomIconButton, {
8772
- tooltipTitle: "Close",
9021
+ tooltipTitle: t('actions-close'),
8773
9022
  edge: "end",
8774
9023
  onClick: onClose,
8775
9024
  size: "large"
@@ -10575,6 +10824,9 @@ const SyncGroupList = ({
10575
10824
  addNewGroup,
10576
10825
  removeGroup
10577
10826
  }) => {
10827
+ const {
10828
+ t
10829
+ } = useCoreTranslation();
10578
10830
  return /*#__PURE__*/React.createElement(List, {
10579
10831
  disablePadding: true
10580
10832
  }, viewStateData.groups.map((groupObject, index) => {
@@ -10596,7 +10848,7 @@ const SyncGroupList = ({
10596
10848
  paddingTop: '10px'
10597
10849
  }
10598
10850
  }, /*#__PURE__*/React.createElement(Typography, null, title), /*#__PURE__*/React.createElement(CustomIconButton, {
10599
- tooltipTitle: index === 0 ? 'Add new group to list' : 'Remove group from list',
10851
+ tooltipTitle: index === 0 ? t('syncgroups-add-group') : t('syncgroups-remove-group'),
10600
10852
  style: {
10601
10853
  right: '10px'
10602
10854
  },
@@ -10623,6 +10875,9 @@ const SyncGroupViewer = ({
10623
10875
  onMouseDown,
10624
10876
  order: _order = 0
10625
10877
  }) => {
10878
+ const {
10879
+ t
10880
+ } = useCoreTranslation();
10626
10881
  /*
10627
10882
  _____ Handle Toggle _____
10628
10883
  - Handles checking, unchecking and toggling between in groups
@@ -10703,7 +10958,7 @@ const SyncGroupViewer = ({
10703
10958
  return null;
10704
10959
  }
10705
10960
  return /*#__PURE__*/React.createElement(ToolContainerDraggable, {
10706
- title: "Sync",
10961
+ title: t('syncgroups-title'),
10707
10962
  startSize: {
10708
10963
  width: 349,
10709
10964
  height: 800
@@ -10715,19 +10970,19 @@ const SyncGroupViewer = ({
10715
10970
  order: _order
10716
10971
  }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(SyncGroupList, {
10717
10972
  viewStateData: syncGroupViewState.zoompane,
10718
- title: "ZoomPane",
10973
+ title: t('syncgroups-zoom'),
10719
10974
  handleToggle: (groupId, sourceId) => handleToggle('zoompane', groupId, sourceId),
10720
10975
  addNewGroup: groupId => addNewGroup('zoompane', groupId),
10721
10976
  removeGroup: groupId => removeGroup('zoompane', groupId)
10722
10977
  }), /*#__PURE__*/React.createElement(SyncGroupList, {
10723
10978
  viewStateData: syncGroupViewState.timeslider,
10724
- title: "Timeslider",
10979
+ title: t('syncgroups-timeslider'),
10725
10980
  handleToggle: (groupId, sourceId) => handleToggle('timeslider', groupId, sourceId),
10726
10981
  addNewGroup: groupId => addNewGroup('timeslider', groupId),
10727
10982
  removeGroup: groupId => removeGroup('timeslider', groupId)
10728
10983
  }), /*#__PURE__*/React.createElement(SyncGroupList, {
10729
10984
  viewStateData: syncGroupViewState.level,
10730
- title: "Level",
10985
+ title: t('syncgroups-level'),
10731
10986
  handleToggle: (groupId, sourceId) => handleToggle('level', groupId, sourceId),
10732
10987
  addNewGroup: groupId => addNewGroup('level', groupId),
10733
10988
  removeGroup: groupId => removeGroup('level', groupId)
@@ -11003,6 +11258,9 @@ const Circle = styled$1('div')(({
11003
11258
  transform: 'translate(-50%, -50%)'
11004
11259
  }));
11005
11260
  const SentryRecordButton = () => {
11261
+ const {
11262
+ t
11263
+ } = useCoreTranslation();
11006
11264
  const [isRecording, setIsRecording] = React__default.useState(false);
11007
11265
  const replay = Sentry.getReplay();
11008
11266
  const toggleRecord = () => __awaiter(void 0, void 0, void 0, function* () {
@@ -11014,11 +11272,12 @@ const SentryRecordButton = () => {
11014
11272
  yield replay === null || replay === void 0 ? void 0 : replay.stop();
11015
11273
  }
11016
11274
  });
11275
+ const title = isRecording ? t('sentry-stop-recording') : t('sentry-start-recording');
11017
11276
  return /*#__PURE__*/React__default.createElement(ErrorBoundary, {
11018
11277
  handlePromiseRejections: true,
11019
11278
  displayOnTop: true
11020
11279
  }, /*#__PURE__*/React__default.createElement(CustomTooltip, {
11021
- title: isRecording ? 'Stop Recording' : 'Start Recording'
11280
+ title: title
11022
11281
  }, /*#__PURE__*/React__default.createElement(CustomIconButton, {
11023
11282
  variant: "flat",
11024
11283
  onClick: toggleRecord,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/core",
3
- "version": "9.17.0",
3
+ "version": "9.18.0",
4
4
  "description": "GeoWeb Core library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -1,29 +1,4 @@
1
1
  import i18n from 'i18next';
2
- export declare const outsideComponentTranslations: {
3
- greeting: string;
4
- greetingWithName: string;
5
- delete: string;
6
- deleteOK: string;
7
- restore: string;
8
- } | {
9
- greeting: string;
10
- greetingWithName: string;
11
- delete: string;
12
- deleteOK: string;
13
- restore: string;
14
- } | {
15
- greeting: string;
16
- greetingWithName: string;
17
- delete: string;
18
- deleteOK: string;
19
- restore: string;
20
- } | {
21
- greeting: string;
22
- greetingWithName: string;
23
- delete: string;
24
- deleteOK: string;
25
- restore: string;
26
- };
27
2
  export declare const translateKeyOutsideComponents: (key: string, params?: Record<string, string | number> | undefined) => string;
28
3
  interface Languages {
29
4
  language: string;
@@ -7,6 +7,5 @@ interface DragHandleProps {
7
7
  icon?: ReactNode;
8
8
  tooltipTitle?: string;
9
9
  }
10
- export declare const TOOLTIP_TITLE = "Drag";
11
10
  declare const DragHandle: React.FC<DragHandleProps>;
12
11
  export default DragHandle;
@@ -1,6 +1,10 @@
1
1
  import React from 'react';
2
2
  export interface MyMapLocationProps {
3
3
  mapId: string | undefined;
4
+ isLoading: boolean;
5
+ hasFailed: boolean;
6
+ setIsLoading: (value: boolean) => void;
7
+ setHasFailed: (value: boolean) => void;
4
8
  }
5
9
  export declare const MY_LOCATION = "MyLocation";
6
10
  export declare const MyMapLocation: React.FC<MyMapLocationProps>;