@opengeoweb/shared 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.
Files changed (34) hide show
  1. package/README.md +0 -15
  2. package/index.esm.js +1119 -597
  3. package/package.json +4 -2
  4. package/src/index.d.ts +3 -0
  5. package/src/lib/components/AlertBanner/AlertBanner.stories.d.ts +2 -2
  6. package/src/lib/components/AppHeader/AppHeader.stories.d.ts +2 -2
  7. package/src/lib/components/Avatar/Avatar.stories.d.ts +2 -2
  8. package/src/lib/components/ConfirmationDialog/ConfirmationDialog.stories.d.ts +2 -2
  9. package/src/lib/components/CustomAccordion/CustomAccordion.stories.d.ts +2 -2
  10. package/src/lib/components/CustomDialog/CustomDialog.stories.d.ts +2 -2
  11. package/src/lib/components/CustomIconButton/CustomIconButton.stories.d.ts +2 -2
  12. package/src/lib/components/CustomSlider/CustomSlider.stories.d.ts +2 -2
  13. package/src/lib/components/CustomToggleButton/CustomToggleButton.stories.d.ts +2 -2
  14. package/src/lib/components/ErrorBoundary/ErrorBoundary.d.ts +5 -0
  15. package/src/lib/components/LastUpdateTime/LastUpdateTime.d.ts +2 -2
  16. package/src/lib/components/LastUpdateTime/LastUpdateTime.stories.d.ts +2 -2
  17. package/src/lib/components/LastUpdateTime/index.d.ts +1 -1
  18. package/src/lib/components/Providers/Providers.d.ts +6 -0
  19. package/src/lib/components/SearchHighlight/SearchHighlight.stories.d.ts +2 -2
  20. package/src/lib/components/StatusTag/StatusTag.stories.d.ts +2 -2
  21. package/src/lib/components/ToggleMenu/ToggleMenu.stories.d.ts +2 -2
  22. package/src/lib/components/ToolContainer/ToolContainerSnapShots.stories.d.ts +4 -4
  23. package/src/lib/components/TooltipSelect/TooltipSelect.stories.d.ts +2 -2
  24. package/src/lib/components/UserMenu/CheatSheet/CheatSheet.stories.d.ts +4 -4
  25. package/src/lib/components/UserMenu/CheatSheet/ShortcutList.d.ts +2 -10
  26. package/src/lib/components/UserMenu/UserMenu.d.ts +1 -0
  27. package/src/lib/components/UserMenu/UserMenu.stories.d.ts +4 -4
  28. package/src/lib/components/UserMenu/UserMenuSentryRecording.d.ts +7 -0
  29. package/src/lib/components/UserMenu/index.d.ts +1 -0
  30. package/src/lib/utils/dateUtils/dateFormats.d.ts +6 -0
  31. package/src/lib/utils/dateUtils/dateUtils.d.ts +13 -0
  32. package/src/lib/utils/dateUtils/index.d.ts +1 -0
  33. package/src/lib/utils/i18n.d.ts +3 -0
  34. package/src/lib/storyshots/Storyshots.spec.d.ts +0 -1
package/index.esm.js CHANGED
@@ -1,16 +1,225 @@
1
1
  import * as React from 'react';
2
2
  import React__default, { useRef, Component } from 'react';
3
- import { Box, Typography, Tooltip, IconButton, Dialog, DialogTitle, DialogContent, DialogActions, Button, CircularProgress, Alert, AlertTitle, useTheme, Drawer, Link, Avatar as Avatar$1, Paper, ClickAwayListener, MenuList, MenuItem, Grid, RadioGroup, FormControlLabel, Radio, List, ListItem, Tabs, Tab, Backdrop, Slider, ToggleButton, Menu, ListSubheader, ListItemText, ListItemIcon, Select, Accordion, AccordionSummary, AccordionDetails, FormLabel, Switch, TextField, InputAdornment } from '@mui/material';
4
- import { Close, Exclamation, Success, Info, ChevronRight, GeoWebLogo, HamburgerMenu, Resize, useThemeContext, DragHandle, ArrowLeft, ArrowRight, KeyOption, ArrowUp, ArrowDown, KeyCommand, Options, ChevronDown, Search, Clear, Cached } from '@opengeoweb/theme';
3
+ import { Box, Typography, Tooltip, IconButton, Dialog, DialogTitle, DialogContent, DialogActions, Button, CircularProgress, Alert, AlertTitle, useTheme, Drawer, Link, Avatar as Avatar$1, Paper, ClickAwayListener, MenuList, MenuItem, Grid, RadioGroup, FormControlLabel, Radio, List, ListItem, Tabs, Tab, Backdrop, Switch, Slider, ToggleButton, Menu, ListSubheader, ListItemText, ListItemIcon, Select, Accordion, AccordionSummary, AccordionDetails, FormLabel, TextField, InputAdornment } from '@mui/material';
4
+ import { Close, Exclamation, Success, Info, ChevronRight, GeoWebLogo, HamburgerMenu, Resize, Admin, useThemeContext, DragHandle, ArrowLeft, ArrowRight, KeyOption, ArrowUp, ArrowDown, KeyCommand, Options, ChevronDown, Search, Clear, Cached } from '@opengeoweb/theme';
5
+ import i18next from 'i18next';
6
+ import { initReactI18next, useTranslation } from 'react-i18next';
5
7
  import { throttle, escapeRegExp, debounce } from 'lodash';
6
8
  import Draggable from 'react-draggable';
7
9
  import { Resizable } from 're-resizable';
10
+ import * as Sentry from '@sentry/react';
8
11
  import { styled } from '@mui/material/styles';
9
12
  import { useStore } from 'react-redux';
10
- import { parseISO, parse, format, isEqual, add as add$1, sub as sub$1, differenceInYears as differenceInYears$1, differenceInMonths as differenceInMonths$1, differenceInDays as differenceInDays$1, differenceInMinutes as differenceInMinutes$1, differenceInHours as differenceInHours$1, differenceInSeconds as differenceInSeconds$1, isBefore as isBefore$1, isAfter as isAfter$1, isValid as isValid$1, getUnixTime, fromUnixTime, set as set$3, getHours as getHours$1, startOfDay, isWithinInterval, getDay, getMonth, getYear, getWeek } from 'date-fns';
13
+ import { parseISO, parse, format, isEqual, add as add$1, sub as sub$1, differenceInYears as differenceInYears$1, differenceInMonths as differenceInMonths$1, differenceInDays as differenceInDays$1, differenceInMinutes as differenceInMinutes$1, differenceInHours as differenceInHours$1, differenceInSeconds as differenceInSeconds$1, isBefore as isBefore$1, isAfter as isAfter$1, isValid as isValid$1, getUnixTime, fromUnixTime, set as set$3, getHours as getHours$1, startOfDay, addMinutes, addHours, isWithinInterval, getDay, getMonth, getYear, getWeek } from 'date-fns';
11
14
  import configureStore from 'redux-mock-store';
12
15
  import { configureStore as configureStore$1 } from '@reduxjs/toolkit';
13
- import i18next from 'i18next';
16
+
17
+ var en = {
18
+ "shared-choose-app-mode": "Choose your default app mode",
19
+ "shared-cheat-sheet": "Cheat sheet",
20
+ "shared-save": "Save",
21
+ "shared-viewer": "Viewer",
22
+ "shared-editor": "Editor",
23
+ "shared-reload-page": "Reload page",
24
+ "shared-search-label": "Search through services or enter a service URL",
25
+ "shared-last-updated": "Last updated {{time}}",
26
+ "shared-click-to-refresh": "Click to refresh",
27
+ "shared-error-occurred": "Woops, an error has occurred. Please report the error shown below and reload the page if needed.",
28
+ "shared-confirmation-description": "Are you sure?",
29
+ "shared-confirmation-cancel": "Go back",
30
+ "shared-confirmation-submit": "Submit",
31
+ "shared-close-caps": "CLOSE",
32
+ "shared-close": "Close",
33
+ "shared-search": "Search",
34
+ "shared-choose-selected-time": "Choose a selected time",
35
+ "shared-move-selected-time": "Move backwards/forwards in selected time",
36
+ "shared-move-one-step": "Move 1 step backwards/forwards in selected time",
37
+ "shared-toggle-timeslider": "Toggle hide/show time slider",
38
+ "shared-timeslider-scale": "Change time slider scale (visible timespan)",
39
+ "shared-expand-timeslider-scale": "Expand/shrink time slider scale (visible timespan)",
40
+ "shared-mouseover-selected-time": "Mouseover to change selected time",
41
+ "shared-mouseover-on-off": "Mouseover switch on/off",
42
+ "shared-change-timestep-or-speed": "Change time step or animation speed",
43
+ "shared-return-to-current-time": "Return to current time",
44
+ "shared-change-layer-values-scrolling": "Change layer manager values by scrolling",
45
+ "shared-change-layermanager-small": "Change size of layer manager to small",
46
+ "shared-change-layermanager-medium": "Change size of layer manager to medium",
47
+ "shared-change-layermanager-large": "Change size of layer manager to large",
48
+ "shared-shortcut-left-click": "Left click on the time slider rail",
49
+ "shared-shortcut-mouse-scroll-timeslider": "Mouse scroll over the time slider rail",
50
+ "shared-shortcut-hold-click": "Hold left click over Time Slider legend + drag left or right",
51
+ "shared-shortcut-scroll": "+ Scroll the slider rail",
52
+ "shared-shortcut-hover": "Hover over Time Slider rail or time indicator",
53
+ "shared-shortcut-when-active": "when slider active",
54
+ "shared-shortcut-home": "Home",
55
+ "shared-shortcut-mouse-scroll": "+ Mouse scroll",
56
+ "shared-shortcut-or": "or",
57
+ "shared-sentry-recording": "Sentry Recording",
58
+ "shared-sentry-information": "For monitoring performance and errors, GeoWeb is logging usage information. In this process, no sensitive user information will leave the browser.",
59
+ "shared-sentry-enable-message": "By enabling recording I understand that the recording related data will be send to Sentry´s servers for processing.",
60
+ "shared-sentry-disable": "Disable HTML recording",
61
+ "shared-sentry-enable": "Enable HTML recording",
62
+ "shared-sentry-enable-both": "Disable HTML + Canvas recording",
63
+ "shared-sentry-disable-both": "Enable HTML + Canvas recording",
64
+ "shared-sentry-cors-wait": "Disabled untill with and without CORS headers fetching mechanism has been implemented",
65
+ "shared-sentry-disclaimer": "I understand that while using canvas recording, adding a layer without correct CORS headers will cause error and make the recording to fail. A new recording without the canvas or the layer can be made after reloading the application."
66
+ };
67
+ var fi = {
68
+ "shared-choose-app-mode": "ei käännetty",
69
+ "shared-cheat-sheet": "ei käännetty",
70
+ "shared-save": "ei käännetty",
71
+ "shared-viewer": "ei käännetty",
72
+ "shared-editor": "ei käännetty",
73
+ "shared-reload-page": "ei käännetty",
74
+ "shared-search-label": "ei käännetty",
75
+ "shared-last-updated": "ei käännetty",
76
+ "shared-click-to-refresh": "ei käännetty",
77
+ "shared-error-occurred": "ei käännetty",
78
+ "shared-confirmation-description": "ei käännetty",
79
+ "shared-confirmation-cancel": "ei käännetty",
80
+ "shared-confirmation-submit": "ei käännetty",
81
+ "shared-close-caps": "ei käännetty",
82
+ "shared-close": "ei käännetty",
83
+ "shared-search": "ei käännetty",
84
+ "shared-choose-selected-time": "ei käännetty",
85
+ "shared-move-selected-time": "ei käännetty",
86
+ "shared-move-one-step": "ei käännetty",
87
+ "shared-toggle-timeslider": "ei käännetty",
88
+ "shared-timeslider-scale": "ei käännetty",
89
+ "shared-expand-timeslider-scale": "ei käännetty",
90
+ "shared-mouseover-selected-time": "ei käännetty",
91
+ "shared-mouseover-on-off": "ei käännetty",
92
+ "shared-change-timestep-or-speed": "ei käännetty",
93
+ "shared-return-to-current-time": "ei käännettye",
94
+ "shared-change-layer-values-scrolling": "ei käännetty",
95
+ "shared-change-layermanager-small": "ei käännetty",
96
+ "shared-change-layermanager-medium": "ei käännetty",
97
+ "shared-change-layermanager-large": "ei käännetty",
98
+ "shared-shortcut-left-click": "ei käännetty",
99
+ "shared-shortcut-mouse-scroll-timeslider": "ei käännetty",
100
+ "shared-shortcut-hold-click": "ei käännetty",
101
+ "shared-shortcut-scroll": "ei käännetty",
102
+ "shared-shortcut-hover": "ei käännetty",
103
+ "shared-shortcut-when-active": "ei käännetty",
104
+ "shared-shortcut-home": "ei käännetty",
105
+ "shared-shortcut-mouse-scroll": "ei käännetty",
106
+ "shared-shortcut-or": "ei käännetty",
107
+ "shared-sentry-recording": "ei käännetty",
108
+ "shared-sentry-information": "ei käännetty",
109
+ "shared-sentry-enable-message": "ei käännetty",
110
+ "shared-sentry-disable": "ei käännetty",
111
+ "shared-sentry-enable": "ei käännetty",
112
+ "shared-sentry-enable-both": "ei käännetty",
113
+ "shared-sentry-disable-both": "ei käännetty",
114
+ "shared-sentry-cors-wait": "ei käännetty",
115
+ "shared-sentry-disclaimer": "ei käännetty"
116
+ };
117
+ var no = {
118
+ "shared-choose-app-mode": "Velg din standardmodus",
119
+ "shared-cheat-sheet": "Jukselapp",
120
+ "shared-save": "Lagre",
121
+ "shared-viewer": "Viewer",
122
+ "shared-editor": "Editor",
123
+ "shared-reload-page": "Last inn på nytt",
124
+ "shared-search-label": "Søk gjennom tjenester eller legg inn URL",
125
+ "shared-last-updated": "Sist oppdatert",
126
+ "shared-click-to-refresh": "Trykk for å laste inn på nytt",
127
+ "shared-error-occurred": "Woops, an error has occurred. Please report the error shown below and reload the page if needed.",
128
+ "shared-confirmation-description": "Er du sikker?",
129
+ "shared-confirmation-cancel": "Avbryt",
130
+ "shared-confirmation-submit": "Send",
131
+ "shared-close-caps": "LUKK",
132
+ "shared-close": "Lukk",
133
+ "shared-search": "Søk",
134
+ "shared-choose-selected-time": "Velg en tid",
135
+ "shared-move-selected-time": "Gå bakover/fremover i valgt tid",
136
+ "shared-move-one-step": "Gå 1 steg bakover/fremover i valgt tid",
137
+ "shared-toggle-timeslider": "Vis/skjul tidslinje",
138
+ "shared-timeslider-scale": "Endre tidsseriens skala (synlig tidsperiode)",
139
+ "shared-expand-timeslider-scale": "Utvid/krymp tidsseriens skala (synlig tidsperiode)",
140
+ "shared-mouseover-selected-time": "Mouseover for å endre valgt tid",
141
+ "shared-mouseover-on-off": "Mouseover av/på",
142
+ "shared-change-timestep-or-speed": "Endre tidssteg eller animasjonsfart",
143
+ "shared-return-to-current-time": "Tilbake til nåtid",
144
+ "shared-change-layer-values-scrolling": "Endre lagmenyens verdier ved å skrolle",
145
+ "shared-change-layermanager-small": "Endre lagmenyens størrelse til liten",
146
+ "shared-change-layermanager-medium": "Endre lagmenyens størrelse til medium",
147
+ "shared-change-layermanager-large": "Endre lagmenyens størrelse til stor",
148
+ "shared-shortcut-left-click": "Venstreklikk på tidsserien",
149
+ "shared-shortcut-mouse-scroll-timeslider": "Skroll over tidsserien",
150
+ "shared-shortcut-hold-click": "Trykk og hold tidslinjens legend + dra venstre eller høyre",
151
+ "shared-shortcut-scroll": "+ skroll i tidsserien",
152
+ "shared-shortcut-hover": "Svev over tidsserien eller tidsindikatoren",
153
+ "shared-shortcut-when-active": "når tidsserien er aktiv",
154
+ "shared-shortcut-home": "Hjem",
155
+ "shared-shortcut-mouse-scroll": "+ skroll",
156
+ "shared-shortcut-or": "eller",
157
+ "shared-sentry-recording": "Skjermopptak av Sentry",
158
+ "shared-sentry-information": "GeoWeb tar opp brukerinformasjon for å monitorere ytelse og feilmeldinger. Underveis vil ingen sensitiv brukerinformasjon forlate nettleser.",
159
+ "shared-sentry-enable-message": "Ved å bruke skjermopptak forstår jeg at opptaksdata vil bli sendt til Sentry for analysering",
160
+ "shared-sentry-disable": "Skru av HTML-opptak",
161
+ "shared-sentry-enable": "Skru på HTML-opptak",
162
+ "shared-sentry-enable-both": "Skru av HTML + lerret-opptak",
163
+ "shared-sentry-disable-both": "Skru på HTML + lerret-opptak",
164
+ "shared-sentry-cors-wait": "Avskrudd inntil CORS-relaterte headere er implementert",
165
+ "shared-sentry-disclaimer": "Jeg forstår at ved å bruke lerretopptak vil opptaket feile dersom jeg legger til et lag uten riktig CORS-headere. Ved å laste inn applikasjonen på nytt kan man starte nytt opptak uten lerret eller lag."
166
+ };
167
+ var nl = {
168
+ "shared-choose-app-mode": "niet vertaald",
169
+ "shared-cheat-sheet": "niet vertaald",
170
+ "shared-save": "niet vertaald",
171
+ "shared-viewer": "niet vertaald",
172
+ "shared-editor": "niet vertaald",
173
+ "shared-reload-page": "niet vertaald",
174
+ "shared-search-label": "niet vertaald",
175
+ "shared-last-updated": "niet vertaald",
176
+ "shared-click-to-refresh": "niet vertaald",
177
+ "shared-error-occurred": "niet vertaald",
178
+ "shared-confirmation-description": "niet vertaald",
179
+ "shared-confirmation-cancel": "niet vertaald",
180
+ "shared-confirmation-submit": "niet vertaald",
181
+ "shared-close-caps": "niet vertaald",
182
+ "shared-close": "niet vertaald",
183
+ "shared-search": "niet vertaald",
184
+ "shared-choose-selected-time": "niet vertaald",
185
+ "shared-move-selected-time": "niet vertaald",
186
+ "shared-move-one-step": "niet vertaald",
187
+ "shared-toggle-timeslider": "niet vertaald",
188
+ "shared-timeslider-scale": "niet vertaald",
189
+ "shared-expand-timeslider-scale": "niet vertaald",
190
+ "shared-mouseover-selected-time": "niet vertaald",
191
+ "shared-mouseover-on-off": "niet vertaald",
192
+ "shared-change-timestep-or-speed": "niet vertaald",
193
+ "shared-return-to-current-time": "niet vertaald",
194
+ "shared-change-layer-values-scrolling": "niet vertaald",
195
+ "shared-change-layermanager-small": "niet vertaald",
196
+ "shared-change-layermanager-medium": "niet vertaald",
197
+ "shared-change-layermanager-large": "niet vertaald",
198
+ "shared-shortcut-left-click": "niet vertaald",
199
+ "shared-shortcut-mouse-scroll-timeslider": "niet vertaald",
200
+ "shared-shortcut-hold-click": "niet vertaald",
201
+ "shared-shortcut-scroll": "niet vertaald",
202
+ "shared-shortcut-hover": "niet vertaald",
203
+ "shared-shortcut-when-active": "niet vertaald",
204
+ "shared-shortcut-home": "niet vertaald",
205
+ "shared-shortcut-mouse-scroll": "niet vertaald",
206
+ "shared-shortcut-or": "niet vertaald",
207
+ "shared-sentry-recording": "niet vertaald",
208
+ "shared-sentry-information": "niet vertaald",
209
+ "shared-sentry-enable-message": "niet vertaald",
210
+ "shared-sentry-disable": "niet vertaald",
211
+ "shared-sentry-enable": "niet vertaald",
212
+ "shared-sentry-enable-both": "niet vertaald",
213
+ "shared-sentry-disable-both": "niet vertaald",
214
+ "shared-sentry-cors-wait": "niet vertaald",
215
+ "shared-sentry-disclaimer": "niet vertaald"
216
+ };
217
+ var sharedTranslations = {
218
+ en: en,
219
+ fi: fi,
220
+ no: no,
221
+ nl: nl
222
+ };
14
223
 
15
224
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
16
225
 
@@ -1110,6 +1319,16 @@ function __rest(s, e) {
1110
1319
  return t;
1111
1320
  }
1112
1321
 
1322
+ function __awaiter(thisArg, _arguments, P, generator) {
1323
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1324
+ return new (P || (P = Promise))(function (resolve, reject) {
1325
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
1326
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
1327
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
1328
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
1329
+ });
1330
+ }
1331
+
1113
1332
  typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
1114
1333
  var e = new Error(message);
1115
1334
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
@@ -1958,6 +2177,34 @@ const CustomDialog = _a => {
1958
2177
  }, actions));
1959
2178
  };
1960
2179
 
2180
+ const SHARED_NAMESPACE = 'shared';
2181
+ const initSharedI18n = () => {
2182
+ i18next.use(initReactI18next).init({
2183
+ lng: 'en',
2184
+ ns: SHARED_NAMESPACE,
2185
+ interpolation: {
2186
+ escapeValue: false
2187
+ },
2188
+ resources: {
2189
+ en: {
2190
+ shared: sharedTranslations.en
2191
+ },
2192
+ fi: {
2193
+ shared: sharedTranslations.fi
2194
+ },
2195
+ no: {
2196
+ shared: sharedTranslations.no
2197
+ },
2198
+ nl: {
2199
+ shared: sharedTranslations.nl
2200
+ }
2201
+ }
2202
+ });
2203
+ };
2204
+ const translateKeyOutsideComponents = (key, params = undefined) => i18next.t(key, Object.assign({
2205
+ ns: SHARED_NAMESPACE
2206
+ }, params));
2207
+
1961
2208
  const confirmStyle = {
1962
2209
  width: {
1963
2210
  xs: '100%',
@@ -1976,9 +2223,9 @@ const ConfirmationDialog = _a => {
1976
2223
  var {
1977
2224
  open,
1978
2225
  title,
1979
- description = 'Are you sure?',
1980
- confirmLabel = 'Submit',
1981
- cancelLabel = 'Go back',
2226
+ description = translateKeyOutsideComponents('shared-confirmation-description'),
2227
+ confirmLabel = translateKeyOutsideComponents('shared-confirmation-submit'),
2228
+ cancelLabel = translateKeyOutsideComponents('shared-confirmation-cancel'),
1982
2229
  onSubmit,
1983
2230
  onClose,
1984
2231
  content = null,
@@ -3474,6 +3721,9 @@ const AlertBanner = ({
3474
3721
  actionButtonProps: _actionButtonProps = undefined
3475
3722
  }) => {
3476
3723
  const [isOpen, setIsOpen] = React.useState(true);
3724
+ const {
3725
+ t
3726
+ } = useTranslation(SHARED_NAMESPACE);
3477
3727
  if (!isOpen) {
3478
3728
  return null;
3479
3729
  }
@@ -3489,7 +3739,7 @@ const AlertBanner = ({
3489
3739
  sx: {
3490
3740
  backgroundColor: 'transparent!important'
3491
3741
  }
3492
- }, "CLOSE")) : undefined,
3742
+ }, t('shared-close-caps'))) : undefined,
3493
3743
  sx: _isCompact ? {
3494
3744
  height: '32px',
3495
3745
  boxSizing: 'border-box',
@@ -3981,6 +4231,215 @@ const ResizeComponent = _a => {
3981
4231
  }, props), children);
3982
4232
  };
3983
4233
 
4234
+ var defineProperty = objectDefineProperty.f;
4235
+
4236
+ var proxyAccessor$2 = function (Target, Source, key) {
4237
+ key in Target || defineProperty(Target, key, {
4238
+ configurable: true,
4239
+ get: function () { return Source[key]; },
4240
+ set: function (it) { Source[key] = it; }
4241
+ });
4242
+ };
4243
+
4244
+ var isCallable$2 = isCallable$n;
4245
+ var isObject$2 = isObject$e;
4246
+ var setPrototypeOf$1 = objectSetPrototypeOf;
4247
+
4248
+ // makes subclassing work correct for wrapped built-ins
4249
+ var inheritIfRequired$2 = function ($this, dummy, Wrapper) {
4250
+ var NewTarget, NewTargetPrototype;
4251
+ if (
4252
+ // it can work only with native `setPrototypeOf`
4253
+ setPrototypeOf$1 &&
4254
+ // we haven't completely correct pre-ES6 way for getting `new.target`, so use this
4255
+ isCallable$2(NewTarget = dummy.constructor) &&
4256
+ NewTarget !== Wrapper &&
4257
+ isObject$2(NewTargetPrototype = NewTarget.prototype) &&
4258
+ NewTargetPrototype !== Wrapper.prototype
4259
+ ) setPrototypeOf$1($this, NewTargetPrototype);
4260
+ return $this;
4261
+ };
4262
+
4263
+ var toString$8 = toString$c;
4264
+
4265
+ var normalizeStringArgument$1 = function (argument, $default) {
4266
+ return argument === undefined ? arguments.length < 2 ? '' : $default : toString$8(argument);
4267
+ };
4268
+
4269
+ var isObject$1 = isObject$e;
4270
+ var createNonEnumerableProperty$4 = createNonEnumerableProperty$9;
4271
+
4272
+ // `InstallErrorCause` abstract operation
4273
+ // https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause
4274
+ var installErrorCause$1 = function (O, options) {
4275
+ if (isObject$1(options) && 'cause' in options) {
4276
+ createNonEnumerableProperty$4(O, 'cause', options.cause);
4277
+ }
4278
+ };
4279
+
4280
+ var uncurryThis$6 = functionUncurryThis;
4281
+
4282
+ var $Error = Error;
4283
+ var replace$2 = uncurryThis$6(''.replace);
4284
+
4285
+ var TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');
4286
+ // eslint-disable-next-line redos/no-vulnerable -- safe
4287
+ var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/;
4288
+ var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);
4289
+
4290
+ var errorStackClear = function (stack, dropEntries) {
4291
+ if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {
4292
+ while (dropEntries--) stack = replace$2(stack, V8_OR_CHAKRA_STACK_ENTRY, '');
4293
+ } return stack;
4294
+ };
4295
+
4296
+ var fails$9 = fails$o;
4297
+ var createPropertyDescriptor = createPropertyDescriptor$4;
4298
+
4299
+ var errorStackInstallable = !fails$9(function () {
4300
+ var error = new Error('a');
4301
+ if (!('stack' in error)) return true;
4302
+ // eslint-disable-next-line es/no-object-defineproperty -- safe
4303
+ Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));
4304
+ return error.stack !== 7;
4305
+ });
4306
+
4307
+ var createNonEnumerableProperty$3 = createNonEnumerableProperty$9;
4308
+ var clearErrorStack = errorStackClear;
4309
+ var ERROR_STACK_INSTALLABLE = errorStackInstallable;
4310
+
4311
+ // non-standard V8
4312
+ var captureStackTrace = Error.captureStackTrace;
4313
+
4314
+ var errorStackInstall = function (error, C, stack, dropEntries) {
4315
+ if (ERROR_STACK_INSTALLABLE) {
4316
+ if (captureStackTrace) captureStackTrace(error, C);
4317
+ else createNonEnumerableProperty$3(error, 'stack', clearErrorStack(stack, dropEntries));
4318
+ }
4319
+ };
4320
+
4321
+ var getBuiltIn = getBuiltIn$8;
4322
+ var hasOwn$2 = hasOwnProperty_1;
4323
+ var createNonEnumerableProperty$2 = createNonEnumerableProperty$9;
4324
+ var isPrototypeOf$2 = objectIsPrototypeOf;
4325
+ var setPrototypeOf = objectSetPrototypeOf;
4326
+ var copyConstructorProperties = copyConstructorProperties$3;
4327
+ var proxyAccessor$1 = proxyAccessor$2;
4328
+ var inheritIfRequired$1 = inheritIfRequired$2;
4329
+ var normalizeStringArgument = normalizeStringArgument$1;
4330
+ var installErrorCause = installErrorCause$1;
4331
+ var installErrorStack = errorStackInstall;
4332
+ var DESCRIPTORS$2 = descriptors;
4333
+
4334
+ var wrapErrorConstructorWithCause$1 = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {
4335
+ var STACK_TRACE_LIMIT = 'stackTraceLimit';
4336
+ var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;
4337
+ var path = FULL_NAME.split('.');
4338
+ var ERROR_NAME = path[path.length - 1];
4339
+ var OriginalError = getBuiltIn.apply(null, path);
4340
+
4341
+ if (!OriginalError) return;
4342
+
4343
+ var OriginalErrorPrototype = OriginalError.prototype;
4344
+
4345
+ // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006
4346
+ if (hasOwn$2(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;
4347
+
4348
+ if (!FORCED) return OriginalError;
4349
+
4350
+ var BaseError = getBuiltIn('Error');
4351
+
4352
+ var WrappedError = wrapper(function (a, b) {
4353
+ var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);
4354
+ var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();
4355
+ if (message !== undefined) createNonEnumerableProperty$2(result, 'message', message);
4356
+ installErrorStack(result, WrappedError, result.stack, 2);
4357
+ if (this && isPrototypeOf$2(OriginalErrorPrototype, this)) inheritIfRequired$1(result, this, WrappedError);
4358
+ if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);
4359
+ return result;
4360
+ });
4361
+
4362
+ WrappedError.prototype = OriginalErrorPrototype;
4363
+
4364
+ if (ERROR_NAME !== 'Error') {
4365
+ if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);
4366
+ else copyConstructorProperties(WrappedError, BaseError, { name: true });
4367
+ } else if (DESCRIPTORS$2 && STACK_TRACE_LIMIT in OriginalError) {
4368
+ proxyAccessor$1(WrappedError, OriginalError, STACK_TRACE_LIMIT);
4369
+ proxyAccessor$1(WrappedError, OriginalError, 'prepareStackTrace');
4370
+ }
4371
+
4372
+ copyConstructorProperties(WrappedError, OriginalError);
4373
+
4374
+ try {
4375
+ // Safari 13- bug: WebAssembly errors does not have a proper `.name`
4376
+ if (OriginalErrorPrototype.name !== ERROR_NAME) {
4377
+ createNonEnumerableProperty$2(OriginalErrorPrototype, 'name', ERROR_NAME);
4378
+ }
4379
+ OriginalErrorPrototype.constructor = WrappedError;
4380
+ } catch (error) { /* empty */ }
4381
+
4382
+ return WrappedError;
4383
+ };
4384
+
4385
+ /* eslint-disable no-unused-vars -- required for functions `.length` */
4386
+ var $$6 = _export;
4387
+ var global$5 = global$p;
4388
+ var apply = functionApply;
4389
+ var wrapErrorConstructorWithCause = wrapErrorConstructorWithCause$1;
4390
+
4391
+ var WEB_ASSEMBLY = 'WebAssembly';
4392
+ var WebAssembly = global$5[WEB_ASSEMBLY];
4393
+
4394
+ // eslint-disable-next-line es/no-error-cause -- feature detection
4395
+ var FORCED$1 = new Error('e', { cause: 7 }).cause !== 7;
4396
+
4397
+ var exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {
4398
+ var O = {};
4399
+ O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED$1);
4400
+ $$6({ global: true, constructor: true, arity: 1, forced: FORCED$1 }, O);
4401
+ };
4402
+
4403
+ var exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {
4404
+ if (WebAssembly && WebAssembly[ERROR_NAME]) {
4405
+ var O = {};
4406
+ O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED$1);
4407
+ $$6({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED$1 }, O);
4408
+ }
4409
+ };
4410
+
4411
+ // https://tc39.es/ecma262/#sec-nativeerror
4412
+ exportGlobalErrorCauseWrapper('Error', function (init) {
4413
+ return function Error(message) { return apply(init, this, arguments); };
4414
+ });
4415
+ exportGlobalErrorCauseWrapper('EvalError', function (init) {
4416
+ return function EvalError(message) { return apply(init, this, arguments); };
4417
+ });
4418
+ exportGlobalErrorCauseWrapper('RangeError', function (init) {
4419
+ return function RangeError(message) { return apply(init, this, arguments); };
4420
+ });
4421
+ exportGlobalErrorCauseWrapper('ReferenceError', function (init) {
4422
+ return function ReferenceError(message) { return apply(init, this, arguments); };
4423
+ });
4424
+ exportGlobalErrorCauseWrapper('SyntaxError', function (init) {
4425
+ return function SyntaxError(message) { return apply(init, this, arguments); };
4426
+ });
4427
+ exportGlobalErrorCauseWrapper('TypeError', function (init) {
4428
+ return function TypeError(message) { return apply(init, this, arguments); };
4429
+ });
4430
+ exportGlobalErrorCauseWrapper('URIError', function (init) {
4431
+ return function URIError(message) { return apply(init, this, arguments); };
4432
+ });
4433
+ exportWebAssemblyErrorCauseWrapper('CompileError', function (init) {
4434
+ return function CompileError(message) { return apply(init, this, arguments); };
4435
+ });
4436
+ exportWebAssemblyErrorCauseWrapper('LinkError', function (init) {
4437
+ return function LinkError(message) { return apply(init, this, arguments); };
4438
+ });
4439
+ exportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {
4440
+ return function RuntimeError(message) { return apply(init, this, arguments); };
4441
+ });
4442
+
3984
4443
  var anObject$6 = anObject$g;
3985
4444
 
3986
4445
  // `RegExp.prototype.flags` getter implementation
@@ -4000,15 +4459,15 @@ var regexpFlags$1 = function () {
4000
4459
  };
4001
4460
 
4002
4461
  var call$7 = functionCall;
4003
- var hasOwn$2 = hasOwnProperty_1;
4004
- var isPrototypeOf$2 = objectIsPrototypeOf;
4462
+ var hasOwn$1 = hasOwnProperty_1;
4463
+ var isPrototypeOf$1 = objectIsPrototypeOf;
4005
4464
  var regExpFlags = regexpFlags$1;
4006
4465
 
4007
4466
  var RegExpPrototype$4 = RegExp.prototype;
4008
4467
 
4009
4468
  var regexpGetFlags = function (R) {
4010
4469
  var flags = R.flags;
4011
- return flags === undefined && !('flags' in RegExpPrototype$4) && !hasOwn$2(R, 'flags') && isPrototypeOf$2(RegExpPrototype$4, R)
4470
+ return flags === undefined && !('flags' in RegExpPrototype$4) && !hasOwn$1(R, 'flags') && isPrototypeOf$1(RegExpPrototype$4, R)
4012
4471
  ? call$7(regExpFlags, R) : flags;
4013
4472
  };
4014
4473
 
@@ -4016,14 +4475,14 @@ var PROPER_FUNCTION_NAME = functionName.PROPER;
4016
4475
  var defineBuiltIn$2 = defineBuiltIn$8;
4017
4476
  var anObject$5 = anObject$g;
4018
4477
  var $toString = toString$c;
4019
- var fails$9 = fails$o;
4478
+ var fails$8 = fails$o;
4020
4479
  var getRegExpFlags$1 = regexpGetFlags;
4021
4480
 
4022
4481
  var TO_STRING = 'toString';
4023
4482
  var RegExpPrototype$3 = RegExp.prototype;
4024
4483
  var nativeToString = RegExpPrototype$3[TO_STRING];
4025
4484
 
4026
- var NOT_GENERIC = fails$9(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; });
4485
+ var NOT_GENERIC = fails$8(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; });
4027
4486
  // FF44- RegExp#toString has a wrong name
4028
4487
  var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING;
4029
4488
 
@@ -4049,11 +4508,28 @@ if (NOT_GENERIC || INCORRECT_NAME) {
4049
4508
  class ErrorBoundary extends React.Component {
4050
4509
  constructor(props) {
4051
4510
  super(props);
4511
+ this.handlePromiseRejection = event => {
4512
+ const error = event.reason instanceof Error ? event.reason : new Error(String(event.reason));
4513
+ const errorInfo = {
4514
+ componentStack: 'Canvas contains images without CORS headers of: Access-Control-Allow-Origin: *. Recording canvas cannot be done.'
4515
+ };
4516
+ this.setState({
4517
+ error,
4518
+ errorInfo
4519
+ });
4520
+ event.preventDefault();
4521
+ };
4052
4522
  this.state = {
4053
4523
  error: undefined,
4054
4524
  errorInfo: undefined
4055
4525
  };
4056
4526
  }
4527
+ componentDidMount() {
4528
+ // eslint-disable-next-line react/destructuring-assignment
4529
+ if (this.props.handlePromiseRejections) {
4530
+ window.addEventListener('unhandledrejection', this.handlePromiseRejection);
4531
+ }
4532
+ }
4057
4533
  static getDerivedStateFromError(error) {
4058
4534
  return {
4059
4535
  error
@@ -4069,22 +4545,41 @@ class ErrorBoundary extends React.Component {
4069
4545
  });
4070
4546
  onError(error, errorInfo);
4071
4547
  }
4548
+ componentWillUnmount() {
4549
+ // eslint-disable-next-line react/destructuring-assignment
4550
+ if (this.props.handlePromiseRejections) {
4551
+ window.removeEventListener('unhandledrejection', this.handlePromiseRejection);
4552
+ }
4553
+ }
4072
4554
  render() {
4073
4555
  const {
4074
4556
  error,
4075
4557
  errorInfo
4076
4558
  } = this.state;
4559
+ const reloadPage = 'Reload page';
4077
4560
  const {
4078
- children
4561
+ children,
4562
+ displayOnTop
4079
4563
  } = this.props;
4564
+ const normalStyles = {
4565
+ whiteSpace: 'pre-wrap',
4566
+ width: '100%',
4567
+ height: '100%',
4568
+ overflowY: 'scroll'
4569
+ };
4570
+ const displayOnTopStyles = {
4571
+ position: 'fixed',
4572
+ top: '30%',
4573
+ left: '50%',
4574
+ transform: 'translate(-50%, -50%)',
4575
+ whiteSpace: 'pre-wrap',
4576
+ width: '50%',
4577
+ height: '50%',
4578
+ overflowY: 'scroll'
4579
+ };
4080
4580
  if (error) {
4081
4581
  return /*#__PURE__*/React.createElement(Box, {
4082
- sx: {
4083
- whiteSpace: 'pre-wrap',
4084
- width: '100%',
4085
- height: '100%',
4086
- overflowY: 'scroll'
4087
- }
4582
+ sx: displayOnTop ? displayOnTopStyles : normalStyles
4088
4583
  }, /*#__PURE__*/React.createElement(AlertBanner, {
4089
4584
  severity: "error",
4090
4585
  title: "Woops, an error has occurred. Please report the error shown below and reload the page if needed.",
@@ -4094,7 +4589,7 @@ class ErrorBoundary extends React.Component {
4094
4589
  cursor: 'pointer'
4095
4590
  },
4096
4591
  onClick: () => window.location.reload()
4097
- }, "Reload page"))
4592
+ }, reloadPage))
4098
4593
  }));
4099
4594
  }
4100
4595
  return children;
@@ -4122,22 +4617,6 @@ const Avatar = ({
4122
4617
  }, children);
4123
4618
  };
4124
4619
 
4125
- /* *
4126
- * Licensed under the Apache License, Version 2.0 (the "License");
4127
- * you may not use this file except in compliance with the License.
4128
- * You may obtain a copy of the License at
4129
- *
4130
- * http://www.apache.org/licenses/LICENSE-2.0
4131
- *
4132
- * Unless required by applicable law or agreed to in writing, software
4133
- * distributed under the License is distributed on an "AS IS" BASIS,
4134
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4135
- * See the License for the specific language governing permissions and
4136
- * limitations under the License.
4137
- *
4138
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4139
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
4140
- * */
4141
4620
  const styles$4 = {
4142
4621
  container: {
4143
4622
  position: 'absolute',
@@ -4163,22 +4642,28 @@ const UserMenu = ({
4163
4642
  onToggle: _onToggle = () => {},
4164
4643
  onClose: _onClose = () => {},
4165
4644
  children,
4166
- initials
4645
+ initials,
4646
+ isAdmin: _isAdmin = false
4167
4647
  }) => {
4168
4648
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(CustomIconButton, {
4169
4649
  "data-testid": "userButton",
4170
4650
  onClick: _onToggle,
4171
4651
  sx: {
4172
- '&.MuiButtonBase-root': {
4652
+ '&.MuiButtonBase-root': Object.assign({
4173
4653
  background: 'transparent',
4174
4654
  '&:hover': {
4175
4655
  border: 'none',
4176
4656
  background: 'transparent'
4177
4657
  }
4178
- }
4658
+ }, _isAdmin && {
4659
+ svg: {
4660
+ width: 32,
4661
+ height: 32
4662
+ }
4663
+ })
4179
4664
  },
4180
4665
  size: "medium"
4181
- }, /*#__PURE__*/React__default.createElement(Avatar, null, initials)), _isOpen && ( /*#__PURE__*/React__default.createElement(Paper, {
4666
+ }, !_isAdmin ? /*#__PURE__*/React__default.createElement(Avatar, null, initials) : /*#__PURE__*/React__default.createElement(Admin, null, initials)), _isOpen && ( /*#__PURE__*/React__default.createElement(Paper, {
4182
4667
  sx: styles$4.container,
4183
4668
  "data-testid": "userMenu"
4184
4669
  }, /*#__PURE__*/React__default.createElement(ClickAwayListener, {
@@ -4211,13 +4696,16 @@ const MenuItemTheme = () => {
4211
4696
  isDark,
4212
4697
  toggleTheme
4213
4698
  } = useThemeContext();
4699
+ const {
4700
+ t
4701
+ } = useTranslation(SHARED_NAMESPACE);
4214
4702
  return /*#__PURE__*/React__default.createElement(MenuItem, {
4215
4703
  divider: true
4216
4704
  }, /*#__PURE__*/React__default.createElement(Grid, {
4217
4705
  container: true
4218
4706
  }, /*#__PURE__*/React__default.createElement(Grid, {
4219
4707
  item: true
4220
- }, "Choose your default app mode"), /*#__PURE__*/React__default.createElement(Grid, {
4708
+ }, t('shared-choose-app-mode')), /*#__PURE__*/React__default.createElement(Grid, {
4221
4709
  item: true
4222
4710
  }, /*#__PURE__*/React__default.createElement(RadioGroup, {
4223
4711
  onChange: toggleTheme
@@ -4267,6 +4755,18 @@ const ToolFooter = () => {
4267
4755
  });
4268
4756
  };
4269
4757
 
4758
+ const headerStyle = {
4759
+ containerType: 'inline-size',
4760
+ containerName: 'tool-header',
4761
+ '.header-title': {
4762
+ display: 'none'
4763
+ },
4764
+ '@container tool-header (min-width: 321px)': {
4765
+ '.header-title': {
4766
+ display: 'block'
4767
+ }
4768
+ }
4769
+ };
4270
4770
  const getStyle = size => {
4271
4771
  switch (size) {
4272
4772
  case 'xs':
@@ -4330,17 +4830,21 @@ const ToolHeader = ({
4330
4830
  })
4331
4831
  }) => {
4332
4832
  const styles = getStyle(size);
4333
- const columnSizeIcon = _leftHeaderComponent || _rightHeaderComponent ? 4 : 1;
4833
+ const columnSizeIcon = title && (_leftHeaderComponent || _rightHeaderComponent) ? 4 : 1;
4334
4834
  const columnSizeTitle = _leftHeaderComponent || _rightHeaderComponent ? 4 : 10;
4835
+ const columnSizeLeft = title ? columnSizeIcon : 12 - columnSizeIcon;
4836
+ const {
4837
+ t
4838
+ } = useTranslation(SHARED_NAMESPACE);
4335
4839
  return /*#__PURE__*/React__default.createElement(Box, {
4336
4840
  component: "header",
4337
4841
  className: _className,
4338
- sx: {
4842
+ sx: Object.assign(Object.assign({}, _rightHeaderComponent ? headerStyle : {}), {
4339
4843
  boxShadow: 1,
4340
4844
  backgroundColor: 'geowebColors.background.surface',
4341
4845
  zIndex: 2,
4342
4846
  cursor: _isDraggable ? 'move' : null
4343
- },
4847
+ }),
4344
4848
  role: "heading",
4345
4849
  "aria-label": "toolheader"
4346
4850
  }, /*#__PURE__*/React__default.createElement(Grid, {
@@ -4353,7 +4857,7 @@ const ToolHeader = ({
4353
4857
  }, /*#__PURE__*/React__default.createElement(Grid, {
4354
4858
  className: "header-left",
4355
4859
  item: true,
4356
- xs: columnSizeIcon,
4860
+ xs: columnSizeLeft,
4357
4861
  sx: {
4358
4862
  paddingRight: 1
4359
4863
  }
@@ -4370,7 +4874,7 @@ const ToolHeader = ({
4370
4874
  }, _dragHandleIcon))), _leftHeaderComponent && _leftHeaderComponent), /*#__PURE__*/React__default.createElement(Grid, {
4371
4875
  className: "header-title",
4372
4876
  item: true,
4373
- xs: columnSizeTitle
4877
+ xs: title ? columnSizeTitle : 0
4374
4878
  }, /*#__PURE__*/React__default.createElement(Grid, {
4375
4879
  container: true,
4376
4880
  justifyContent: "center",
@@ -4402,7 +4906,7 @@ const ToolHeader = ({
4402
4906
  container: true,
4403
4907
  justifyContent: "flex-end"
4404
4908
  }, _rightHeaderComponent && _rightHeaderComponent, _onClose && ( /*#__PURE__*/React__default.createElement(CustomTooltip, {
4405
- title: "Close",
4909
+ title: t('shared-close'),
4406
4910
  placement: "bottom",
4407
4911
  sx: {
4408
4912
  pointerEvents: 'none'
@@ -4834,196 +5338,187 @@ const ShortCutSegment = ({
4834
5338
  }, children);
4835
5339
  };
4836
5340
 
4837
- const shortcuts = [{
4838
- title: 'Choose a selected time',
4839
- description: ( /*#__PURE__*/React__default.createElement(ShortCutSegment, null, "Left click on the time slider rail"))
4840
- }, {
4841
- title: 'Move backwards/forwards in selected time',
4842
- description: ( /*#__PURE__*/React__default.createElement(ShortCutSegment, null, "Mouse scroll over the time slider rail"))
4843
- }, {
4844
- title: 'Move 1 step backwards/forwards in selected time',
4845
- description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4846
- type: "icon"
4847
- }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4848
- type: "connect"
4849
- }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4850
- type: "icon"
4851
- }, /*#__PURE__*/React__default.createElement(ArrowLeft, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4852
- type: "divider"
4853
- }, "or"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4854
- type: "icon"
4855
- }, /*#__PURE__*/React__default.createElement(ArrowRight, null)))),
4856
- descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4857
- type: "icon"
4858
- }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4859
- type: "connect"
4860
- }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4861
- type: "icon"
4862
- }, /*#__PURE__*/React__default.createElement(KeyOption, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4863
- type: "connect"
4864
- }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4865
- type: "icon"
4866
- }, /*#__PURE__*/React__default.createElement(ArrowLeft, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4867
- type: "divider"
4868
- }, "or"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4869
- type: "icon"
4870
- }, /*#__PURE__*/React__default.createElement(ArrowRight, null))))
4871
- }, {
4872
- title: 'Toggle hide/show time slider',
4873
- description: /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4874
- type: "icon"
4875
- }, "t")
4876
- }, {
4877
- title: 'Change time slider scale (visible timespan)',
4878
- description: ( /*#__PURE__*/React__default.createElement(ShortCutSegment, null, "Hold left click over Time Slider legend + drag left or right"))
4879
- }, {
4880
- title: 'Expand/shrink time slider scale (visible timespan)',
4881
- description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4882
- type: "icon"
4883
- }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, "+ Scroll the slider rail")))
4884
- }, {
4885
- title: 'Mouseover to change selected time',
4886
- description: ( /*#__PURE__*/React__default.createElement(ShortCutSegment, null, "Hover over Time Slider rail or time indicator"))
4887
- }, {
4888
- title: 'Mouseover switch on/off',
4889
- description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4890
- type: "icon"
4891
- }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4892
- type: "connect"
4893
- }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4894
- type: "icon"
4895
- }, "Alt"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4896
- type: "connect"
4897
- }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4898
- type: "icon"
4899
- }, "h"))),
4900
- descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4901
- type: "icon"
4902
- }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4903
- type: "connect"
4904
- }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4905
- type: "icon"
4906
- }, /*#__PURE__*/React__default.createElement(KeyOption, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4907
- type: "connect"
4908
- }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4909
- type: "icon"
4910
- }, "h")))
4911
- }, {
4912
- title: 'Change time step or animation speed',
4913
- description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4914
- type: "icon"
4915
- }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4916
- type: "connect"
4917
- }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4918
- type: "icon"
4919
- }, /*#__PURE__*/React__default.createElement(ArrowUp, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4920
- type: "divider"
4921
- }, "or"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4922
- type: "icon"
4923
- }, /*#__PURE__*/React__default.createElement(ArrowDown, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, "(when slider active)"))),
4924
- descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4925
- type: "icon"
4926
- }, /*#__PURE__*/React__default.createElement(KeyCommand, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4927
- type: "connect"
4928
- }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4929
- type: "icon"
4930
- }, /*#__PURE__*/React__default.createElement(ArrowUp, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4931
- type: "divider"
4932
- }, "or"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4933
- type: "icon"
4934
- }, /*#__PURE__*/React__default.createElement(ArrowDown, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, "(when slider active)")))
4935
- }, {
4936
- title: 'Return to current time',
4937
- description: /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4938
- type: "icon"
4939
- }, "Home"),
4940
- descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4941
- type: "icon"
4942
- }, "fn"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4943
- type: "connect"
4944
- }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4945
- type: "icon"
4946
- }, /*#__PURE__*/React__default.createElement(ArrowLeft, null))))
4947
- }, {
4948
- title: 'Change layer manager values by scrolling',
4949
- description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4950
- type: "icon"
4951
- }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + Mouse scroll"))),
4952
- descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4953
- type: "icon"
4954
- }, /*#__PURE__*/React__default.createElement(KeyCommand, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + Mouse scroll")))
4955
- }, {
4956
- title: 'Change size of layer manager to small',
4957
- description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4958
- type: "icon"
4959
- }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4960
- type: "icon"
4961
- }, "Alt"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4962
- type: "icon"
4963
- }, "s"))),
4964
- descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4965
- type: "icon"
4966
- }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4967
- type: "icon"
4968
- }, /*#__PURE__*/React__default.createElement(KeyOption, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4969
- type: "icon"
4970
- }, "s")))
4971
- }, {
4972
- title: 'Change size of layer manager to medium',
4973
- description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4974
- type: "icon"
4975
- }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4976
- type: "icon"
4977
- }, "Alt"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4978
- type: "icon"
4979
- }, "m"))),
4980
- descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4981
- type: "icon"
4982
- }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4983
- type: "icon"
4984
- }, /*#__PURE__*/React__default.createElement(KeyOption, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4985
- type: "icon"
4986
- }, "m")))
4987
- }, {
4988
- title: 'Change size of layer manager to large',
4989
- description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4990
- type: "icon"
4991
- }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4992
- type: "icon"
4993
- }, "Alt"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4994
- type: "icon"
4995
- }, "l"))),
4996
- descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4997
- type: "icon"
4998
- }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
4999
- type: "icon"
5000
- }, /*#__PURE__*/React__default.createElement(KeyOption, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5001
- type: "icon"
5002
- }, "l")))
5003
- }];
5004
- const getShortcutList = (shortcutList, platform = 'windows') => shortcutList.map(({
5005
- title,
5006
- description,
5007
- descriptionMac
5008
- }) => Object.assign({
5009
- title
5010
- }, platform === 'windows' ? {
5011
- description
5012
- } : {
5013
- description: descriptionMac || description
5014
- }));
5015
5341
  const ShortcutList = ({
5016
5342
  platform: _platform = 'windows'
5017
5343
  }) => {
5018
- const rows = getShortcutList(shortcuts, _platform);
5344
+ const {
5345
+ t
5346
+ } = useTranslation();
5347
+ const shortcuts = [{
5348
+ titleKey: 'shared-choose-selected-time',
5349
+ description: ( /*#__PURE__*/React__default.createElement(ShortCutSegment, null, t('shared-shortcut-left-click')))
5350
+ }, {
5351
+ titleKey: 'shared-move-selected-time',
5352
+ description: ( /*#__PURE__*/React__default.createElement(ShortCutSegment, null, t('shared-shortcut-mouse-scroll-timeslider')))
5353
+ }, {
5354
+ titleKey: 'shared-move-one-step',
5355
+ description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5356
+ type: "icon"
5357
+ }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5358
+ type: "connect"
5359
+ }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5360
+ type: "icon"
5361
+ }, /*#__PURE__*/React__default.createElement(ArrowLeft, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5362
+ type: "divider"
5363
+ }, t('shared-shortcut-or')), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5364
+ type: "icon"
5365
+ }, /*#__PURE__*/React__default.createElement(ArrowRight, null)))),
5366
+ descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5367
+ type: "icon"
5368
+ }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5369
+ type: "connect"
5370
+ }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5371
+ type: "icon"
5372
+ }, /*#__PURE__*/React__default.createElement(KeyOption, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5373
+ type: "connect"
5374
+ }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5375
+ type: "icon"
5376
+ }, /*#__PURE__*/React__default.createElement(ArrowLeft, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5377
+ type: "divider"
5378
+ }, t('shared-shortcut-or')), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5379
+ type: "icon"
5380
+ }, /*#__PURE__*/React__default.createElement(ArrowRight, null))))
5381
+ }, {
5382
+ titleKey: 'shared-toggle-timeslider',
5383
+ description: /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5384
+ type: "icon"
5385
+ }, "T")
5386
+ }, {
5387
+ titleKey: 'shared-timeslider-scale',
5388
+ description: ( /*#__PURE__*/React__default.createElement(ShortCutSegment, null, t('shared-shortcut-hold-click')))
5389
+ }, {
5390
+ titleKey: 'shared-expand-timeslider-scale',
5391
+ description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5392
+ type: "icon"
5393
+ }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, t('shared-shortcut-scroll'))))
5394
+ }, {
5395
+ titleKey: 'shared-mouseover-selected-time',
5396
+ description: ( /*#__PURE__*/React__default.createElement(ShortCutSegment, null, t('shared-shortcut-hover')))
5397
+ }, {
5398
+ titleKey: 'shared-mouseover-on-off',
5399
+ description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5400
+ type: "icon"
5401
+ }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5402
+ type: "connect"
5403
+ }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5404
+ type: "icon"
5405
+ }, "Alt"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5406
+ type: "connect"
5407
+ }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5408
+ type: "icon"
5409
+ }, "h"))),
5410
+ descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5411
+ type: "icon"
5412
+ }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5413
+ type: "connect"
5414
+ }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5415
+ type: "icon"
5416
+ }, /*#__PURE__*/React__default.createElement(KeyOption, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5417
+ type: "connect"
5418
+ }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5419
+ type: "icon"
5420
+ }, "h")))
5421
+ }, {
5422
+ titleKey: 'shared-change-timestep-or-speed',
5423
+ description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5424
+ type: "icon"
5425
+ }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5426
+ type: "connect"
5427
+ }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5428
+ type: "icon"
5429
+ }, /*#__PURE__*/React__default.createElement(ArrowUp, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5430
+ type: "divider"
5431
+ }, t('shared-shortcut-or')), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5432
+ type: "icon"
5433
+ }, /*#__PURE__*/React__default.createElement(ArrowDown, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, "(", t('shared-shortcut-when-active'), ")"))),
5434
+ descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5435
+ type: "icon"
5436
+ }, /*#__PURE__*/React__default.createElement(KeyCommand, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5437
+ type: "connect"
5438
+ }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5439
+ type: "icon"
5440
+ }, /*#__PURE__*/React__default.createElement(ArrowUp, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5441
+ type: "divider"
5442
+ }, t('shared-shortcut-or')), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5443
+ type: "icon"
5444
+ }, /*#__PURE__*/React__default.createElement(ArrowDown, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, "(", t('shared-shortcut-when-active'), ")")))
5445
+ }, {
5446
+ titleKey: 'shared-return-to-current-time',
5447
+ description: ( /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5448
+ type: "icon"
5449
+ }, t('shared-shortcut-home'))),
5450
+ descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5451
+ type: "icon"
5452
+ }, "fn"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5453
+ type: "connect"
5454
+ }, "+"), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5455
+ type: "icon"
5456
+ }, /*#__PURE__*/React__default.createElement(ArrowLeft, null))))
5457
+ }, {
5458
+ titleKey: 'shared-change-layer-values-scrolling',
5459
+ description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5460
+ type: "icon"
5461
+ }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, ' ', t('shared-shortcut-mouse-scroll')))),
5462
+ descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5463
+ type: "icon"
5464
+ }, /*#__PURE__*/React__default.createElement(KeyCommand, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, ' ', t('shared-shortcut-mouse-scroll'))))
5465
+ }, {
5466
+ titleKey: 'shared-change-layermanager-small',
5467
+ description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5468
+ type: "icon"
5469
+ }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5470
+ type: "icon"
5471
+ }, "Alt"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5472
+ type: "icon"
5473
+ }, "s"))),
5474
+ descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5475
+ type: "icon"
5476
+ }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5477
+ type: "icon"
5478
+ }, /*#__PURE__*/React__default.createElement(KeyOption, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5479
+ type: "icon"
5480
+ }, "s")))
5481
+ }, {
5482
+ titleKey: 'shared-change-layermanager-medium',
5483
+ description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5484
+ type: "icon"
5485
+ }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5486
+ type: "icon"
5487
+ }, "Alt"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5488
+ type: "icon"
5489
+ }, "m"))),
5490
+ descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5491
+ type: "icon"
5492
+ }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5493
+ type: "icon"
5494
+ }, /*#__PURE__*/React__default.createElement(KeyOption, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5495
+ type: "icon"
5496
+ }, "m")))
5497
+ }, {
5498
+ titleKey: 'shared-change-layermanager-large',
5499
+ description: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5500
+ type: "icon"
5501
+ }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5502
+ type: "icon"
5503
+ }, "Alt"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5504
+ type: "icon"
5505
+ }, "l"))),
5506
+ descriptionMac: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5507
+ type: "icon"
5508
+ }, "Ctrl"), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5509
+ type: "icon"
5510
+ }, /*#__PURE__*/React__default.createElement(KeyOption, null)), /*#__PURE__*/React__default.createElement(ShortCutSegment, null, " + "), /*#__PURE__*/React__default.createElement(ShortCutSegment, {
5511
+ type: "icon"
5512
+ }, "l")))
5513
+ }];
5019
5514
  return /*#__PURE__*/React__default.createElement(List, {
5020
5515
  "data-testid": `list-${_platform}`
5021
- }, rows.map((row, index) => ( /*#__PURE__*/React__default.createElement(ListItem, {
5516
+ }, shortcuts.map((shortcut, index) => ( /*#__PURE__*/React__default.createElement(ListItem, {
5022
5517
  sx: {
5023
5518
  minHeight: 56
5024
5519
  },
5025
- divider: index !== rows.length - 1,
5026
- key: row.title
5520
+ divider: index !== shortcuts.length - 1,
5521
+ key: shortcut.titleKey
5027
5522
  }, /*#__PURE__*/React__default.createElement(Grid, {
5028
5523
  container: true,
5029
5524
  direction: "row",
@@ -5037,13 +5532,13 @@ const ShortcutList = ({
5037
5532
  letterSpacing: 0.4,
5038
5533
  opacity: 0.67
5039
5534
  }
5040
- }, row.title), /*#__PURE__*/React__default.createElement(Grid, {
5535
+ }, t(shortcut.titleKey)), /*#__PURE__*/React__default.createElement(Grid, {
5041
5536
  item: true
5042
5537
  }, /*#__PURE__*/React__default.createElement(Box, {
5043
5538
  sx: {
5044
5539
  alignItems: 'center'
5045
5540
  }
5046
- }, row.description)))))));
5541
+ }, _platform === 'mac' && shortcut.descriptionMac ? shortcut.descriptionMac : shortcut.description)))))));
5047
5542
  };
5048
5543
 
5049
5544
  const TabPanel = ({
@@ -5101,6 +5596,9 @@ const UserMenuItemCheatSheet = () => {
5101
5596
  const onOpen = () => {
5102
5597
  setOpen(true);
5103
5598
  };
5599
+ const {
5600
+ t
5601
+ } = useTranslation(SHARED_NAMESPACE);
5104
5602
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(MenuItem, {
5105
5603
  "data-testid": "cheatsheet-btn",
5106
5604
  onClick: onOpen,
@@ -5109,7 +5607,7 @@ const UserMenuItemCheatSheet = () => {
5109
5607
  container: true
5110
5608
  }, /*#__PURE__*/React__default.createElement(Grid, {
5111
5609
  item: true
5112
- }, "Cheat sheet"))), /*#__PURE__*/React__default.createElement(Backdrop, {
5610
+ }, t('shared-cheat-sheet')))), /*#__PURE__*/React__default.createElement(Backdrop, {
5113
5611
  "data-testid": "cheatsheet-content",
5114
5612
  open: open,
5115
5613
  sx: {
@@ -5121,13 +5619,156 @@ const UserMenuItemCheatSheet = () => {
5121
5619
  },
5122
5620
  minHeight: 300,
5123
5621
  minWidth: 500,
5124
- title: "Cheat sheet",
5622
+ title: t('shared-cheat-sheet'),
5125
5623
  isOpen: true,
5126
5624
  onClose: onClose,
5127
5625
  bounds: "parent"
5128
5626
  }, /*#__PURE__*/React__default.createElement(CheatSheet, null))));
5129
5627
  };
5130
5628
 
5629
+ const UserMenuItemSentryRecording = ({
5630
+ recordButtonEnabled,
5631
+ setRecordButtonEnabled
5632
+ }) => {
5633
+ const [open, setOpen] = React__default.useState(false);
5634
+ const [canvasIntegrationEnabled, setCanvasIntegrationEnabled] = React__default.useState(false);
5635
+ const [htmlRecordingEnabled, setHTMLRecordingEnabled] = React__default.useState(false);
5636
+ const {
5637
+ t
5638
+ } = useTranslation(SHARED_NAMESPACE);
5639
+ const onClose = () => {
5640
+ setOpen(false);
5641
+ };
5642
+ const onOpen = () => {
5643
+ setOpen(true);
5644
+ };
5645
+ const enableHTMLRecording = () => __awaiter(void 0, void 0, void 0, function* () {
5646
+ if (recordButtonEnabled) {
5647
+ return;
5648
+ }
5649
+ if (canvasIntegrationEnabled) {
5650
+ return;
5651
+ }
5652
+ try {
5653
+ const {
5654
+ replayIntegration
5655
+ } = yield import('@sentry/react');
5656
+ Sentry.addIntegration(replayIntegration({
5657
+ maskAllText: false,
5658
+ blockAllMedia: false
5659
+ }));
5660
+ setRecordButtonEnabled && setRecordButtonEnabled(!recordButtonEnabled);
5661
+ setHTMLRecordingEnabled(true);
5662
+ } catch (error) {
5663
+ // eslint-disable-next-line no-console
5664
+ console.log(error);
5665
+ }
5666
+ });
5667
+ const enableHTMLAndCanvasRecording = () => __awaiter(void 0, void 0, void 0, function* () {
5668
+ if (recordButtonEnabled) {
5669
+ return;
5670
+ }
5671
+ try {
5672
+ const {
5673
+ replayIntegration,
5674
+ replayCanvasIntegration
5675
+ } = yield import('@sentry/react');
5676
+ Sentry.addIntegration(replayIntegration({
5677
+ maskAllText: false,
5678
+ blockAllMedia: false
5679
+ }));
5680
+ Sentry.addIntegration(replayCanvasIntegration());
5681
+ setCanvasIntegrationEnabled(!canvasIntegrationEnabled);
5682
+ setRecordButtonEnabled && setRecordButtonEnabled(!recordButtonEnabled);
5683
+ } catch (error) {
5684
+ // eslint-disable-next-line no-console
5685
+ console.log(error);
5686
+ }
5687
+ });
5688
+ return /*#__PURE__*/React__default.createElement(ErrorBoundary, null, /*#__PURE__*/React__default.createElement(MenuItem, {
5689
+ "data-testid": "sentryRecording-btn",
5690
+ onClick: onOpen,
5691
+ divider: true
5692
+ }, /*#__PURE__*/React__default.createElement(Grid, {
5693
+ container: true
5694
+ }, /*#__PURE__*/React__default.createElement(Grid, {
5695
+ item: true
5696
+ }, t('shared-sentry-recording')))), /*#__PURE__*/React__default.createElement(Backdrop, {
5697
+ "data-testid": "sentryRecording-content",
5698
+ open: open,
5699
+ sx: {
5700
+ zIndex: 1
5701
+ }
5702
+ }, /*#__PURE__*/React__default.createElement(DraggableComponent, {
5703
+ startSize: {
5704
+ width: 700
5705
+ },
5706
+ minHeight: 300,
5707
+ minWidth: 500,
5708
+ title: "Sentry Recording",
5709
+ isOpen: true,
5710
+ onClose: onClose,
5711
+ bounds: "parent"
5712
+ }, /*#__PURE__*/React__default.createElement(Grid, {
5713
+ container: true,
5714
+ spacing: 4,
5715
+ sx: {
5716
+ paddingLeft: '70px',
5717
+ paddingRight: '70px'
5718
+ }
5719
+ }, /*#__PURE__*/React__default.createElement(Grid, {
5720
+ container: true,
5721
+ item: true,
5722
+ justifyContent: "center",
5723
+ sx: {
5724
+ textAlign: 'center'
5725
+ }
5726
+ }, /*#__PURE__*/React__default.createElement(Typography, null, t('shared-sentry-information'))), /*#__PURE__*/React__default.createElement(Grid, {
5727
+ container: true,
5728
+ item: true,
5729
+ justifyContent: "center",
5730
+ sx: {
5731
+ textAlign: 'center'
5732
+ }
5733
+ }, /*#__PURE__*/React__default.createElement(Typography, null, t('shared-sentry-enable-message'))), /*#__PURE__*/React__default.createElement(Grid, {
5734
+ container: true,
5735
+ item: true,
5736
+ alignItems: "center",
5737
+ direction: "column"
5738
+ }, /*#__PURE__*/React__default.createElement(Switch, {
5739
+ checked: recordButtonEnabled && !canvasIntegrationEnabled,
5740
+ onChange: enableHTMLRecording,
5741
+ disabled: htmlRecordingEnabled
5742
+ }), recordButtonEnabled && !canvasIntegrationEnabled ? ( /*#__PURE__*/React__default.createElement(Typography, null, " ", t('shared-sentry-disable'))) : ( /*#__PURE__*/React__default.createElement(Typography, null, " ", t('shared-sentry-enable')))), /*#__PURE__*/React__default.createElement(Grid, {
5743
+ container: true,
5744
+ item: true,
5745
+ alignItems: "center",
5746
+ direction: "column"
5747
+ }, /*#__PURE__*/React__default.createElement(Switch, {
5748
+ disabled: true,
5749
+ checked: canvasIntegrationEnabled,
5750
+ onChange: enableHTMLAndCanvasRecording
5751
+ }), canvasIntegrationEnabled ? ( /*#__PURE__*/React__default.createElement(Typography, null, t('shared-sentry-disable-both'))) : ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Typography, {
5752
+ sx: {
5753
+ color: 'gray'
5754
+ }
5755
+ }, t('shared-sentry-enable-both')), /*#__PURE__*/React__default.createElement(Typography, {
5756
+ textAlign: "center",
5757
+ sx: {
5758
+ color: 'gray'
5759
+ }
5760
+ }, "(", t('shared-sentry-cors-wait'), ")")))), /*#__PURE__*/React__default.createElement(Grid, {
5761
+ container: true,
5762
+ item: true,
5763
+ justifyContent: "center"
5764
+ }, /*#__PURE__*/React__default.createElement(Typography, {
5765
+ sx: {
5766
+ paddingTop: '20px',
5767
+ textAlign: 'center'
5768
+ }
5769
+ }, ' ', t('shared-sentry-disclaimer')))))));
5770
+ };
5771
+
5131
5772
  const useUserMenu = (open = false) => {
5132
5773
  const [isOpen, setOpen] = React__default.useState(open);
5133
5774
  const onClose = () => setOpen(false);
@@ -5169,18 +5810,18 @@ const getInitials = name => {
5169
5810
  }
5170
5811
  };
5171
5812
 
5172
- var $$6 = _export;
5173
- var uncurryThis$6 = functionUncurryThis;
5813
+ var $$5 = _export;
5814
+ var uncurryThis$5 = functionUncurryThis;
5174
5815
  var isArray = isArray$3;
5175
5816
 
5176
- var nativeReverse = uncurryThis$6([].reverse);
5817
+ var nativeReverse = uncurryThis$5([].reverse);
5177
5818
  var test = [1, 2];
5178
5819
 
5179
5820
  // `Array.prototype.reverse` method
5180
5821
  // https://tc39.es/ecma262/#sec-array.prototype.reverse
5181
5822
  // fix for Safari 12.0 bug
5182
5823
  // https://bugs.webkit.org/show_bug.cgi?id=188794
5183
- $$6({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {
5824
+ $$5({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {
5184
5825
  reverse: function reverse() {
5185
5826
  // eslint-disable-next-line no-self-assign -- dirty hack
5186
5827
  if (isArray(this)) this.length = this.length;
@@ -5689,20 +6330,20 @@ const CustomAccordion = _a => {
5689
6330
  }, children));
5690
6331
  };
5691
6332
 
5692
- var $$5 = _export;
6333
+ var $$4 = _export;
5693
6334
  var $includes = arrayIncludes.includes;
5694
- var fails$8 = fails$o;
6335
+ var fails$7 = fails$o;
5695
6336
  var addToUnscopables = addToUnscopables$3;
5696
6337
 
5697
6338
  // FF99+ bug
5698
- var BROKEN_ON_SPARSE = fails$8(function () {
6339
+ var BROKEN_ON_SPARSE = fails$7(function () {
5699
6340
  // eslint-disable-next-line es/no-array-prototype-includes -- detection
5700
6341
  return !Array(1).includes();
5701
6342
  });
5702
6343
 
5703
6344
  // `Array.prototype.includes` method
5704
6345
  // https://tc39.es/ecma262/#sec-array.prototype.includes
5705
- $$5({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {
6346
+ $$4({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {
5706
6347
  includes: function includes(el /* , fromIndex = 0 */) {
5707
6348
  return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
5708
6349
  }
@@ -5757,17 +6398,17 @@ var arrayReduce = {
5757
6398
  right: createMethod$1(true)
5758
6399
  };
5759
6400
 
5760
- var fails$7 = fails$o;
6401
+ var fails$6 = fails$o;
5761
6402
 
5762
6403
  var arrayMethodIsStrict$1 = function (METHOD_NAME, argument) {
5763
6404
  var method = [][METHOD_NAME];
5764
- return !!method && fails$7(function () {
6405
+ return !!method && fails$6(function () {
5765
6406
  // eslint-disable-next-line no-useless-call -- required for testing
5766
6407
  method.call(null, argument || function () { return 1; }, 1);
5767
6408
  });
5768
6409
  };
5769
6410
 
5770
- var $$4 = _export;
6411
+ var $$3 = _export;
5771
6412
  var $reduce = arrayReduce.left;
5772
6413
  var arrayMethodIsStrict = arrayMethodIsStrict$1;
5773
6414
  var CHROME_VERSION = engineV8Version;
@@ -5776,37 +6417,18 @@ var IS_NODE = engineIsNode;
5776
6417
  // Chrome 80-82 has a critical bug
5777
6418
  // https://bugs.chromium.org/p/chromium/issues/detail?id=1049982
5778
6419
  var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;
5779
- var FORCED$1 = CHROME_BUG || !arrayMethodIsStrict('reduce');
6420
+ var FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');
5780
6421
 
5781
6422
  // `Array.prototype.reduce` method
5782
6423
  // https://tc39.es/ecma262/#sec-array.prototype.reduce
5783
- $$4({ target: 'Array', proto: true, forced: FORCED$1 }, {
6424
+ $$3({ target: 'Array', proto: true, forced: FORCED }, {
5784
6425
  reduce: function reduce(callbackfn /* , initialValue */) {
5785
6426
  var length = arguments.length;
5786
6427
  return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);
5787
6428
  }
5788
6429
  });
5789
6430
 
5790
- var isCallable$2 = isCallable$n;
5791
- var isObject$2 = isObject$e;
5792
- var setPrototypeOf$1 = objectSetPrototypeOf;
5793
-
5794
- // makes subclassing work correct for wrapped built-ins
5795
- var inheritIfRequired$2 = function ($this, dummy, Wrapper) {
5796
- var NewTarget, NewTargetPrototype;
5797
- if (
5798
- // it can work only with native `setPrototypeOf`
5799
- setPrototypeOf$1 &&
5800
- // we haven't completely correct pre-ES6 way for getting `new.target`, so use this
5801
- isCallable$2(NewTarget = dummy.constructor) &&
5802
- NewTarget !== Wrapper &&
5803
- isObject$2(NewTargetPrototype = NewTarget.prototype) &&
5804
- NewTargetPrototype !== Wrapper.prototype
5805
- ) setPrototypeOf$1($this, NewTargetPrototype);
5806
- return $this;
5807
- };
5808
-
5809
- var isObject$1 = isObject$e;
6431
+ var isObject = isObject$e;
5810
6432
  var classof$2 = classofRaw$2;
5811
6433
  var wellKnownSymbol$3 = wellKnownSymbol$j;
5812
6434
 
@@ -5816,16 +6438,16 @@ var MATCH$2 = wellKnownSymbol$3('match');
5816
6438
  // https://tc39.es/ecma262/#sec-isregexp
5817
6439
  var isRegexp = function (it) {
5818
6440
  var isRegExp;
5819
- return isObject$1(it) && ((isRegExp = it[MATCH$2]) !== undefined ? !!isRegExp : classof$2(it) === 'RegExp');
6441
+ return isObject(it) && ((isRegExp = it[MATCH$2]) !== undefined ? !!isRegExp : classof$2(it) === 'RegExp');
5820
6442
  };
5821
6443
 
5822
- var fails$6 = fails$o;
5823
- var global$5 = global$p;
6444
+ var fails$5 = fails$o;
6445
+ var global$4 = global$p;
5824
6446
 
5825
6447
  // babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
5826
- var $RegExp$2 = global$5.RegExp;
6448
+ var $RegExp$2 = global$4.RegExp;
5827
6449
 
5828
- var UNSUPPORTED_Y$3 = fails$6(function () {
6450
+ var UNSUPPORTED_Y$3 = fails$5(function () {
5829
6451
  var re = $RegExp$2('a', 'y');
5830
6452
  re.lastIndex = 2;
5831
6453
  return re.exec('abcd') !== null;
@@ -5833,11 +6455,11 @@ var UNSUPPORTED_Y$3 = fails$6(function () {
5833
6455
 
5834
6456
  // UC Browser bug
5835
6457
  // https://github.com/zloirock/core-js/issues/1008
5836
- var MISSED_STICKY$1 = UNSUPPORTED_Y$3 || fails$6(function () {
6458
+ var MISSED_STICKY$1 = UNSUPPORTED_Y$3 || fails$5(function () {
5837
6459
  return !$RegExp$2('a', 'y').sticky;
5838
6460
  });
5839
6461
 
5840
- var BROKEN_CARET = UNSUPPORTED_Y$3 || fails$6(function () {
6462
+ var BROKEN_CARET = UNSUPPORTED_Y$3 || fails$5(function () {
5841
6463
  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687
5842
6464
  var re = $RegExp$2('^r', 'gy');
5843
6465
  re.lastIndex = 2;
@@ -5850,56 +6472,46 @@ var regexpStickyHelpers = {
5850
6472
  UNSUPPORTED_Y: UNSUPPORTED_Y$3
5851
6473
  };
5852
6474
 
5853
- var defineProperty = objectDefineProperty.f;
5854
-
5855
- var proxyAccessor$2 = function (Target, Source, key) {
5856
- key in Target || defineProperty(Target, key, {
5857
- configurable: true,
5858
- get: function () { return Source[key]; },
5859
- set: function (it) { Source[key] = it; }
5860
- });
5861
- };
5862
-
5863
- var fails$5 = fails$o;
5864
- var global$4 = global$p;
6475
+ var fails$4 = fails$o;
6476
+ var global$3 = global$p;
5865
6477
 
5866
6478
  // babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError
5867
- var $RegExp$1 = global$4.RegExp;
6479
+ var $RegExp$1 = global$3.RegExp;
5868
6480
 
5869
- var regexpUnsupportedDotAll = fails$5(function () {
6481
+ var regexpUnsupportedDotAll = fails$4(function () {
5870
6482
  var re = $RegExp$1('.', 's');
5871
6483
  return !(re.dotAll && re.test('\n') && re.flags === 's');
5872
6484
  });
5873
6485
 
5874
- var fails$4 = fails$o;
5875
- var global$3 = global$p;
6486
+ var fails$3 = fails$o;
6487
+ var global$2 = global$p;
5876
6488
 
5877
6489
  // babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError
5878
- var $RegExp = global$3.RegExp;
6490
+ var $RegExp = global$2.RegExp;
5879
6491
 
5880
- var regexpUnsupportedNcg = fails$4(function () {
6492
+ var regexpUnsupportedNcg = fails$3(function () {
5881
6493
  var re = $RegExp('(?<a>b)', 'g');
5882
6494
  return re.exec('b').groups.a !== 'b' ||
5883
6495
  'b'.replace(re, '$<a>c') !== 'bc';
5884
6496
  });
5885
6497
 
5886
- var DESCRIPTORS$2 = descriptors;
5887
- var global$2 = global$p;
5888
- var uncurryThis$5 = functionUncurryThis;
6498
+ var DESCRIPTORS$1 = descriptors;
6499
+ var global$1 = global$p;
6500
+ var uncurryThis$4 = functionUncurryThis;
5889
6501
  var isForced = isForced_1;
5890
- var inheritIfRequired$1 = inheritIfRequired$2;
5891
- var createNonEnumerableProperty$4 = createNonEnumerableProperty$9;
6502
+ var inheritIfRequired = inheritIfRequired$2;
6503
+ var createNonEnumerableProperty$1 = createNonEnumerableProperty$9;
5892
6504
  var create$1 = objectCreate;
5893
6505
  var getOwnPropertyNames = objectGetOwnPropertyNames.f;
5894
- var isPrototypeOf$1 = objectIsPrototypeOf;
6506
+ var isPrototypeOf = objectIsPrototypeOf;
5895
6507
  var isRegExp$1 = isRegexp;
5896
- var toString$8 = toString$c;
6508
+ var toString$7 = toString$c;
5897
6509
  var getRegExpFlags = regexpGetFlags;
5898
6510
  var stickyHelpers$2 = regexpStickyHelpers;
5899
- var proxyAccessor$1 = proxyAccessor$2;
6511
+ var proxyAccessor = proxyAccessor$2;
5900
6512
  var defineBuiltIn$1 = defineBuiltIn$8;
5901
- var fails$3 = fails$o;
5902
- var hasOwn$1 = hasOwnProperty_1;
6513
+ var fails$2 = fails$o;
6514
+ var hasOwn = hasOwnProperty_1;
5903
6515
  var enforceInternalState = internalState.enforce;
5904
6516
  var setSpecies = setSpecies$2;
5905
6517
  var wellKnownSymbol$2 = wellKnownSymbol$j;
@@ -5907,14 +6519,14 @@ var UNSUPPORTED_DOT_ALL$2 = regexpUnsupportedDotAll;
5907
6519
  var UNSUPPORTED_NCG$1 = regexpUnsupportedNcg;
5908
6520
 
5909
6521
  var MATCH$1 = wellKnownSymbol$2('match');
5910
- var NativeRegExp = global$2.RegExp;
6522
+ var NativeRegExp = global$1.RegExp;
5911
6523
  var RegExpPrototype$2 = NativeRegExp.prototype;
5912
- var SyntaxError = global$2.SyntaxError;
5913
- var exec$1 = uncurryThis$5(RegExpPrototype$2.exec);
5914
- var charAt$3 = uncurryThis$5(''.charAt);
5915
- var replace$2 = uncurryThis$5(''.replace);
5916
- var stringIndexOf$1 = uncurryThis$5(''.indexOf);
5917
- var stringSlice$3 = uncurryThis$5(''.slice);
6524
+ var SyntaxError = global$1.SyntaxError;
6525
+ var exec$1 = uncurryThis$4(RegExpPrototype$2.exec);
6526
+ var charAt$3 = uncurryThis$4(''.charAt);
6527
+ var replace$1 = uncurryThis$4(''.replace);
6528
+ var stringIndexOf$1 = uncurryThis$4(''.indexOf);
6529
+ var stringSlice$3 = uncurryThis$4(''.slice);
5918
6530
  // TODO: Use only proper RegExpIdentifierName
5919
6531
  var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/;
5920
6532
  var re1 = /a/g;
@@ -5926,8 +6538,8 @@ var CORRECT_NEW = new NativeRegExp(re1) !== re1;
5926
6538
  var MISSED_STICKY = stickyHelpers$2.MISSED_STICKY;
5927
6539
  var UNSUPPORTED_Y$2 = stickyHelpers$2.UNSUPPORTED_Y;
5928
6540
 
5929
- var BASE_FORCED = DESCRIPTORS$2 &&
5930
- (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL$2 || UNSUPPORTED_NCG$1 || fails$3(function () {
6541
+ var BASE_FORCED = DESCRIPTORS$1 &&
6542
+ (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL$2 || UNSUPPORTED_NCG$1 || fails$2(function () {
5931
6543
  re2[MATCH$1] = false;
5932
6544
  // RegExp constructor can alter flags and IsRegExp works correct with @@match
5933
6545
  return NativeRegExp(re1) !== re1 || NativeRegExp(re2) === re2 || String(NativeRegExp(re1, 'i')) !== '/a/i';
@@ -5987,7 +6599,7 @@ var handleNCG = function (string) {
5987
6599
  groupid++;
5988
6600
  continue;
5989
6601
  case chr === '>' && ncg:
5990
- if (groupname === '' || hasOwn$1(names, groupname)) {
6602
+ if (groupname === '' || hasOwn(names, groupname)) {
5991
6603
  throw new SyntaxError('Invalid capture group name');
5992
6604
  }
5993
6605
  names[groupname] = true;
@@ -6005,7 +6617,7 @@ var handleNCG = function (string) {
6005
6617
  // https://tc39.es/ecma262/#sec-regexp-constructor
6006
6618
  if (isForced('RegExp', BASE_FORCED)) {
6007
6619
  var RegExpWrapper = function RegExp(pattern, flags) {
6008
- var thisIsRegExp = isPrototypeOf$1(RegExpPrototype$2, this);
6620
+ var thisIsRegExp = isPrototypeOf(RegExpPrototype$2, this);
6009
6621
  var patternIsRegExp = isRegExp$1(pattern);
6010
6622
  var flagsAreUndefined = flags === undefined;
6011
6623
  var groups = [];
@@ -6016,25 +6628,25 @@ if (isForced('RegExp', BASE_FORCED)) {
6016
6628
  return pattern;
6017
6629
  }
6018
6630
 
6019
- if (patternIsRegExp || isPrototypeOf$1(RegExpPrototype$2, pattern)) {
6631
+ if (patternIsRegExp || isPrototypeOf(RegExpPrototype$2, pattern)) {
6020
6632
  pattern = pattern.source;
6021
6633
  if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);
6022
6634
  }
6023
6635
 
6024
- pattern = pattern === undefined ? '' : toString$8(pattern);
6025
- flags = flags === undefined ? '' : toString$8(flags);
6636
+ pattern = pattern === undefined ? '' : toString$7(pattern);
6637
+ flags = flags === undefined ? '' : toString$7(flags);
6026
6638
  rawPattern = pattern;
6027
6639
 
6028
6640
  if (UNSUPPORTED_DOT_ALL$2 && 'dotAll' in re1) {
6029
6641
  dotAll = !!flags && stringIndexOf$1(flags, 's') > -1;
6030
- if (dotAll) flags = replace$2(flags, /s/g, '');
6642
+ if (dotAll) flags = replace$1(flags, /s/g, '');
6031
6643
  }
6032
6644
 
6033
6645
  rawFlags = flags;
6034
6646
 
6035
6647
  if (MISSED_STICKY && 'sticky' in re1) {
6036
6648
  sticky = !!flags && stringIndexOf$1(flags, 'y') > -1;
6037
- if (sticky && UNSUPPORTED_Y$2) flags = replace$2(flags, /y/g, '');
6649
+ if (sticky && UNSUPPORTED_Y$2) flags = replace$1(flags, /y/g, '');
6038
6650
  }
6039
6651
 
6040
6652
  if (UNSUPPORTED_NCG$1) {
@@ -6043,7 +6655,7 @@ if (isForced('RegExp', BASE_FORCED)) {
6043
6655
  groups = handled[1];
6044
6656
  }
6045
6657
 
6046
- result = inheritIfRequired$1(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype$2, RegExpWrapper);
6658
+ result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype$2, RegExpWrapper);
6047
6659
 
6048
6660
  if (dotAll || sticky || groups.length) {
6049
6661
  state = enforceInternalState(result);
@@ -6057,25 +6669,25 @@ if (isForced('RegExp', BASE_FORCED)) {
6057
6669
 
6058
6670
  if (pattern !== rawPattern) try {
6059
6671
  // fails in old engines, but we have no alternatives for unsupported regex syntax
6060
- createNonEnumerableProperty$4(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);
6672
+ createNonEnumerableProperty$1(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);
6061
6673
  } catch (error) { /* empty */ }
6062
6674
 
6063
6675
  return result;
6064
6676
  };
6065
6677
 
6066
6678
  for (var keys = getOwnPropertyNames(NativeRegExp), index$1 = 0; keys.length > index$1;) {
6067
- proxyAccessor$1(RegExpWrapper, NativeRegExp, keys[index$1++]);
6679
+ proxyAccessor(RegExpWrapper, NativeRegExp, keys[index$1++]);
6068
6680
  }
6069
6681
 
6070
6682
  RegExpPrototype$2.constructor = RegExpWrapper;
6071
6683
  RegExpWrapper.prototype = RegExpPrototype$2;
6072
- defineBuiltIn$1(global$2, 'RegExp', RegExpWrapper, { constructor: true });
6684
+ defineBuiltIn$1(global$1, 'RegExp', RegExpWrapper, { constructor: true });
6073
6685
  }
6074
6686
 
6075
6687
  // https://tc39.es/ecma262/#sec-get-regexp-@@species
6076
6688
  setSpecies('RegExp');
6077
6689
 
6078
- var DESCRIPTORS$1 = descriptors;
6690
+ var DESCRIPTORS = descriptors;
6079
6691
  var UNSUPPORTED_DOT_ALL$1 = regexpUnsupportedDotAll;
6080
6692
  var classof$1 = classofRaw$2;
6081
6693
  var defineBuiltInAccessor = defineBuiltInAccessor$3;
@@ -6086,7 +6698,7 @@ var $TypeError$2 = TypeError;
6086
6698
 
6087
6699
  // `RegExp.prototype.dotAll` getter
6088
6700
  // https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall
6089
- if (DESCRIPTORS$1 && UNSUPPORTED_DOT_ALL$1) {
6701
+ if (DESCRIPTORS && UNSUPPORTED_DOT_ALL$1) {
6090
6702
  defineBuiltInAccessor(RegExpPrototype$1, 'dotAll', {
6091
6703
  configurable: true,
6092
6704
  get: function dotAll() {
@@ -6104,8 +6716,8 @@ if (DESCRIPTORS$1 && UNSUPPORTED_DOT_ALL$1) {
6104
6716
  /* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */
6105
6717
  /* eslint-disable regexp/no-useless-quantifier -- testing */
6106
6718
  var call$6 = functionCall;
6107
- var uncurryThis$4 = functionUncurryThis;
6108
- var toString$7 = toString$c;
6719
+ var uncurryThis$3 = functionUncurryThis;
6720
+ var toString$6 = toString$c;
6109
6721
  var regexpFlags = regexpFlags$1;
6110
6722
  var stickyHelpers$1 = regexpStickyHelpers;
6111
6723
  var shared = shared$4;
@@ -6117,10 +6729,10 @@ var UNSUPPORTED_NCG = regexpUnsupportedNcg;
6117
6729
  var nativeReplace = shared('native-string-replace', String.prototype.replace);
6118
6730
  var nativeExec = RegExp.prototype.exec;
6119
6731
  var patchedExec = nativeExec;
6120
- var charAt$2 = uncurryThis$4(''.charAt);
6121
- var indexOf = uncurryThis$4(''.indexOf);
6122
- var replace$1 = uncurryThis$4(''.replace);
6123
- var stringSlice$2 = uncurryThis$4(''.slice);
6732
+ var charAt$2 = uncurryThis$3(''.charAt);
6733
+ var indexOf = uncurryThis$3(''.indexOf);
6734
+ var replace = uncurryThis$3(''.replace);
6735
+ var stringSlice$2 = uncurryThis$3(''.slice);
6124
6736
 
6125
6737
  var UPDATES_LAST_INDEX_WRONG = (function () {
6126
6738
  var re1 = /a/;
@@ -6141,7 +6753,7 @@ if (PATCH) {
6141
6753
  patchedExec = function exec(string) {
6142
6754
  var re = this;
6143
6755
  var state = getInternalState(re);
6144
- var str = toString$7(string);
6756
+ var str = toString$6(string);
6145
6757
  var raw = state.raw;
6146
6758
  var result, reCopy, lastIndex, match, i, object, group;
6147
6759
 
@@ -6160,7 +6772,7 @@ if (PATCH) {
6160
6772
  var strCopy = str;
6161
6773
 
6162
6774
  if (sticky) {
6163
- flags = replace$1(flags, 'y', '');
6775
+ flags = replace(flags, 'y', '');
6164
6776
  if (indexOf(flags, 'g') === -1) {
6165
6777
  flags += 'g';
6166
6778
  }
@@ -6218,12 +6830,12 @@ if (PATCH) {
6218
6830
 
6219
6831
  var regexpExec$2 = patchedExec;
6220
6832
 
6221
- var $$3 = _export;
6833
+ var $$2 = _export;
6222
6834
  var exec = regexpExec$2;
6223
6835
 
6224
6836
  // `RegExp.prototype.exec` method
6225
6837
  // https://tc39.es/ecma262/#sec-regexp.prototype.exec
6226
- $$3({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
6838
+ $$2({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
6227
6839
  exec: exec
6228
6840
  });
6229
6841
 
@@ -6253,22 +6865,22 @@ var correctIsRegexpLogic = function (METHOD_NAME) {
6253
6865
  } return false;
6254
6866
  };
6255
6867
 
6256
- var $$2 = _export;
6257
- var uncurryThis$3 = functionUncurryThis;
6868
+ var $$1 = _export;
6869
+ var uncurryThis$2 = functionUncurryThis;
6258
6870
  var notARegExp = notARegexp;
6259
6871
  var requireObjectCoercible$4 = requireObjectCoercible$9;
6260
- var toString$6 = toString$c;
6872
+ var toString$5 = toString$c;
6261
6873
  var correctIsRegExpLogic = correctIsRegexpLogic;
6262
6874
 
6263
- var stringIndexOf = uncurryThis$3(''.indexOf);
6875
+ var stringIndexOf = uncurryThis$2(''.indexOf);
6264
6876
 
6265
6877
  // `String.prototype.includes` method
6266
6878
  // https://tc39.es/ecma262/#sec-string.prototype.includes
6267
- $$2({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {
6879
+ $$1({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {
6268
6880
  includes: function includes(searchString /* , position = 0 */) {
6269
6881
  return !!~stringIndexOf(
6270
- toString$6(requireObjectCoercible$4(this)),
6271
- toString$6(notARegExp(searchString)),
6882
+ toString$5(requireObjectCoercible$4(this)),
6883
+ toString$5(notARegExp(searchString)),
6272
6884
  arguments.length > 1 ? arguments[1] : undefined
6273
6885
  );
6274
6886
  }
@@ -6279,9 +6891,9 @@ $$2({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }
6279
6891
  var call$5 = functionCall;
6280
6892
  var defineBuiltIn = defineBuiltIn$8;
6281
6893
  var regexpExec$1 = regexpExec$2;
6282
- var fails$2 = fails$o;
6894
+ var fails$1 = fails$o;
6283
6895
  var wellKnownSymbol = wellKnownSymbol$j;
6284
- var createNonEnumerableProperty$3 = createNonEnumerableProperty$9;
6896
+ var createNonEnumerableProperty = createNonEnumerableProperty$9;
6285
6897
 
6286
6898
  var SPECIES = wellKnownSymbol('species');
6287
6899
  var RegExpPrototype = RegExp.prototype;
@@ -6289,14 +6901,14 @@ var RegExpPrototype = RegExp.prototype;
6289
6901
  var fixRegexpWellKnownSymbolLogic = function (KEY, exec, FORCED, SHAM) {
6290
6902
  var SYMBOL = wellKnownSymbol(KEY);
6291
6903
 
6292
- var DELEGATES_TO_SYMBOL = !fails$2(function () {
6904
+ var DELEGATES_TO_SYMBOL = !fails$1(function () {
6293
6905
  // String methods call symbol-named RegExp methods
6294
6906
  var O = {};
6295
6907
  O[SYMBOL] = function () { return 7; };
6296
6908
  return ''[KEY](O) !== 7;
6297
6909
  });
6298
6910
 
6299
- var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$2(function () {
6911
+ var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$1(function () {
6300
6912
  // Symbol-named RegExp methods call .exec
6301
6913
  var execCalled = false;
6302
6914
  var re = /a/;
@@ -6347,7 +6959,7 @@ var fixRegexpWellKnownSymbolLogic = function (KEY, exec, FORCED, SHAM) {
6347
6959
  defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);
6348
6960
  }
6349
6961
 
6350
- if (SHAM) createNonEnumerableProperty$3(RegExpPrototype[SYMBOL], 'sham', true);
6962
+ if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);
6351
6963
  };
6352
6964
 
6353
6965
  // `SameValue` abstract operation
@@ -6385,7 +6997,7 @@ var anObject$3 = anObject$g;
6385
6997
  var isNullOrUndefined$2 = isNullOrUndefined$7;
6386
6998
  var requireObjectCoercible$3 = requireObjectCoercible$9;
6387
6999
  var sameValue = sameValue$1;
6388
- var toString$5 = toString$c;
7000
+ var toString$4 = toString$c;
6389
7001
  var getMethod$2 = getMethod$6;
6390
7002
  var regExpExec$2 = regexpExecAbstract;
6391
7003
 
@@ -6397,13 +7009,13 @@ fixRegExpWellKnownSymbolLogic$2('search', function (SEARCH, nativeSearch, maybeC
6397
7009
  function search(regexp) {
6398
7010
  var O = requireObjectCoercible$3(this);
6399
7011
  var searcher = isNullOrUndefined$2(regexp) ? undefined : getMethod$2(regexp, SEARCH);
6400
- return searcher ? call$3(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString$5(O));
7012
+ return searcher ? call$3(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString$4(O));
6401
7013
  },
6402
7014
  // `RegExp.prototype[@@search]` method
6403
7015
  // https://tc39.es/ecma262/#sec-regexp.prototype-@@search
6404
7016
  function (string) {
6405
7017
  var rx = anObject$3(this);
6406
- var S = toString$5(string);
7018
+ var S = toString$4(string);
6407
7019
  var res = maybeCallNative(nativeSearch, rx, S);
6408
7020
 
6409
7021
  if (res.done) return res.value;
@@ -6417,18 +7029,18 @@ fixRegExpWellKnownSymbolLogic$2('search', function (SEARCH, nativeSearch, maybeC
6417
7029
  ];
6418
7030
  });
6419
7031
 
6420
- var uncurryThis$2 = functionUncurryThis;
7032
+ var uncurryThis$1 = functionUncurryThis;
6421
7033
  var toIntegerOrInfinity = toIntegerOrInfinity$4;
6422
- var toString$4 = toString$c;
7034
+ var toString$3 = toString$c;
6423
7035
  var requireObjectCoercible$2 = requireObjectCoercible$9;
6424
7036
 
6425
- var charAt$1 = uncurryThis$2(''.charAt);
6426
- var charCodeAt = uncurryThis$2(''.charCodeAt);
6427
- var stringSlice$1 = uncurryThis$2(''.slice);
7037
+ var charAt$1 = uncurryThis$1(''.charAt);
7038
+ var charCodeAt = uncurryThis$1(''.charCodeAt);
7039
+ var stringSlice$1 = uncurryThis$1(''.slice);
6428
7040
 
6429
7041
  var createMethod = function (CONVERT_TO_STRING) {
6430
7042
  return function ($this, pos) {
6431
- var S = toString$4(requireObjectCoercible$2($this));
7043
+ var S = toString$3(requireObjectCoercible$2($this));
6432
7044
  var position = toIntegerOrInfinity(pos);
6433
7045
  var size = S.length;
6434
7046
  var first, second;
@@ -6463,7 +7075,7 @@ var advanceStringIndex$2 = function (S, index, unicode) {
6463
7075
  };
6464
7076
 
6465
7077
  var call$2 = functionCall;
6466
- var uncurryThis$1 = functionUncurryThis;
7078
+ var uncurryThis = functionUncurryThis;
6467
7079
  var fixRegExpWellKnownSymbolLogic$1 = fixRegexpWellKnownSymbolLogic;
6468
7080
  var anObject$2 = anObject$g;
6469
7081
  var isNullOrUndefined$1 = isNullOrUndefined$7;
@@ -6471,21 +7083,21 @@ var requireObjectCoercible$1 = requireObjectCoercible$9;
6471
7083
  var speciesConstructor = speciesConstructor$2;
6472
7084
  var advanceStringIndex$1 = advanceStringIndex$2;
6473
7085
  var toLength$1 = toLength$3;
6474
- var toString$3 = toString$c;
7086
+ var toString$2 = toString$c;
6475
7087
  var getMethod$1 = getMethod$6;
6476
7088
  var regExpExec$1 = regexpExecAbstract;
6477
7089
  var stickyHelpers = regexpStickyHelpers;
6478
- var fails$1 = fails$o;
7090
+ var fails = fails$o;
6479
7091
 
6480
7092
  var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
6481
7093
  var MAX_UINT32 = 0xFFFFFFFF;
6482
7094
  var min = Math.min;
6483
- var push = uncurryThis$1([].push);
6484
- var stringSlice = uncurryThis$1(''.slice);
7095
+ var push = uncurryThis([].push);
7096
+ var stringSlice = uncurryThis(''.slice);
6485
7097
 
6486
7098
  // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
6487
7099
  // Weex JS has frozen built-in prototypes, so use try / catch wrapper
6488
- var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails$1(function () {
7100
+ var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {
6489
7101
  // eslint-disable-next-line regexp/no-empty-group -- required for testing
6490
7102
  var re = /(?:)/;
6491
7103
  var originalExec = re.exec;
@@ -6517,7 +7129,7 @@ fixRegExpWellKnownSymbolLogic$1('split', function (SPLIT, nativeSplit, maybeCall
6517
7129
  var splitter = isNullOrUndefined$1(separator) ? undefined : getMethod$1(separator, SPLIT);
6518
7130
  return splitter
6519
7131
  ? call$2(splitter, separator, O, limit)
6520
- : call$2(internalSplit, toString$3(O), separator, limit);
7132
+ : call$2(internalSplit, toString$2(O), separator, limit);
6521
7133
  },
6522
7134
  // `RegExp.prototype[@@split]` method
6523
7135
  // https://tc39.es/ecma262/#sec-regexp.prototype-@@split
@@ -6526,7 +7138,7 @@ fixRegExpWellKnownSymbolLogic$1('split', function (SPLIT, nativeSplit, maybeCall
6526
7138
  // the 'y' flag.
6527
7139
  function (string, limit) {
6528
7140
  var rx = anObject$2(this);
6529
- var S = toString$3(string);
7141
+ var S = toString$2(string);
6530
7142
 
6531
7143
  if (!BUGGY) {
6532
7144
  var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);
@@ -6631,11 +7243,11 @@ const SwitchButton = _a => {
6631
7243
 
6632
7244
  // TODO: Remove from `core-js@4` since it's moved to entry points
6633
7245
 
6634
- var $$1 = _export;
7246
+ var $ = _export;
6635
7247
  var call$1 = functionCall;
6636
7248
  var isCallable = isCallable$n;
6637
7249
  var anObject$1 = anObject$g;
6638
- var toString$2 = toString$c;
7250
+ var toString$1 = toString$c;
6639
7251
 
6640
7252
  var DELEGATES_TO_EXEC = function () {
6641
7253
  var execCalled = false;
@@ -6651,10 +7263,10 @@ var nativeTest = /./.test;
6651
7263
 
6652
7264
  // `RegExp.prototype.test` method
6653
7265
  // https://tc39.es/ecma262/#sec-regexp.prototype.test
6654
- $$1({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {
7266
+ $({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {
6655
7267
  test: function (S) {
6656
7268
  var R = anObject$1(this);
6657
- var string = toString$2(S);
7269
+ var string = toString$1(S);
6658
7270
  var exec = R.exec;
6659
7271
  if (!isCallable(exec)) return call$1(nativeTest, R, string);
6660
7272
  var result = call$1(exec, R, string);
@@ -6684,6 +7296,9 @@ const SearchFieldButton = ({
6684
7296
  onClickClear,
6685
7297
  setPopupIsOpen
6686
7298
  }) => {
7299
+ const {
7300
+ t
7301
+ } = useTranslation(SHARED_NAMESPACE);
6687
7302
  if (isURL(localSearchString)) {
6688
7303
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
6689
7304
  style: {
@@ -6694,7 +7309,7 @@ const SearchFieldButton = ({
6694
7309
  })), /*#__PURE__*/React__default.createElement(Button, {
6695
7310
  variant: "tertiary",
6696
7311
  onClick: () => setPopupIsOpen(true)
6697
- }, "Save"));
7312
+ }, t('shared-save')));
6698
7313
  }
6699
7314
  if (localSearchString) {
6700
7315
  return /*#__PURE__*/React__default.createElement(ClearButton, {
@@ -6702,19 +7317,23 @@ const SearchFieldButton = ({
6702
7317
  });
6703
7318
  }
6704
7319
  return /*#__PURE__*/React__default.createElement(CustomIconButton, {
6705
- tooltipTitle: "Search",
7320
+ tooltipTitle: t('shared-search'),
6706
7321
  sx: buttonStyle
6707
7322
  }, /*#__PURE__*/React__default.createElement(Search, null));
6708
7323
  };
6709
7324
 
6710
7325
  const SearchField = ({
6711
7326
  searchFilter,
6712
- label: _label = 'Search through services or enter a service URL',
7327
+ label,
6713
7328
  setSearchFilter,
6714
7329
  onOpenServicePopup
6715
7330
  }) => {
6716
7331
  const [localSearchString, setLocalSearchString] = React.useState('');
6717
7332
  const [urlIsValid, setUrlIsValid] = React.useState(false);
7333
+ const {
7334
+ t
7335
+ } = useTranslation(SHARED_NAMESPACE);
7336
+ const translatedLabel = label || t('shared-search-label');
6718
7337
  // eslint-disable-next-line react-hooks/exhaustive-deps
6719
7338
  const setSearchFilterDebounced = React.useCallback(debounce(setSearchFilter, 300), []);
6720
7339
  const handleChange = text => {
@@ -6755,7 +7374,7 @@ const SearchField = ({
6755
7374
  }, [searchFilter]);
6756
7375
  return /*#__PURE__*/React.createElement(TextField, {
6757
7376
  variant: "filled",
6758
- label: _label,
7377
+ label: translatedLabel,
6759
7378
  value: localSearchString,
6760
7379
  onChange: e => {
6761
7380
  handleChange(e.target.value);
@@ -6797,13 +7416,19 @@ const SearchField = ({
6797
7416
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
6798
7417
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
6799
7418
  * */
6800
- const BUTTON_TITLE = 'Click to refresh';
6801
- const getLastUpdateTitle = time => `Last updated ${time}`;
7419
+ const getLastUpdateTitle = (time, t) => {
7420
+ return t('shared-last-updated', {
7421
+ time
7422
+ });
7423
+ };
6802
7424
  const LastUpdateTime = ({
6803
7425
  onPressRefresh: _onPressRefresh = () => {},
6804
7426
  lastUpdateTime,
6805
7427
  dataTestId
6806
7428
  }) => {
7429
+ const {
7430
+ t
7431
+ } = useTranslation(SHARED_NAMESPACE);
6807
7432
  return /*#__PURE__*/React__default.createElement(Box, {
6808
7433
  sx: {
6809
7434
  display: 'flex',
@@ -6819,7 +7444,7 @@ const LastUpdateTime = ({
6819
7444
  letterSpacing: '0.33px'
6820
7445
  },
6821
7446
  "data-testid": dataTestId
6822
- }, getLastUpdateTitle(lastUpdateTime)), /*#__PURE__*/React__default.createElement(CustomIconButton, {
7447
+ }, getLastUpdateTitle(lastUpdateTime, t)), /*#__PURE__*/React__default.createElement(CustomIconButton, {
6823
7448
  "data-testid": "refresh-button",
6824
7449
  onClick: _onPressRefresh,
6825
7450
  sx: {
@@ -6829,7 +7454,7 @@ const LastUpdateTime = ({
6829
7454
  },
6830
7455
  marginLeft: 1
6831
7456
  },
6832
- tooltipTitle: BUTTON_TITLE,
7457
+ tooltipTitle: t('shared-click-to-refresh'),
6833
7458
  variant: "tool"
6834
7459
  }, /*#__PURE__*/React__default.createElement(Cached, null)));
6835
7460
  };
@@ -7247,186 +7872,6 @@ const getWarningMessage = error => {
7247
7872
  return '';
7248
7873
  };
7249
7874
 
7250
- var toString$1 = toString$c;
7251
-
7252
- var normalizeStringArgument$1 = function (argument, $default) {
7253
- return argument === undefined ? arguments.length < 2 ? '' : $default : toString$1(argument);
7254
- };
7255
-
7256
- var isObject = isObject$e;
7257
- var createNonEnumerableProperty$2 = createNonEnumerableProperty$9;
7258
-
7259
- // `InstallErrorCause` abstract operation
7260
- // https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause
7261
- var installErrorCause$1 = function (O, options) {
7262
- if (isObject(options) && 'cause' in options) {
7263
- createNonEnumerableProperty$2(O, 'cause', options.cause);
7264
- }
7265
- };
7266
-
7267
- var uncurryThis = functionUncurryThis;
7268
-
7269
- var $Error = Error;
7270
- var replace = uncurryThis(''.replace);
7271
-
7272
- var TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');
7273
- // eslint-disable-next-line redos/no-vulnerable -- safe
7274
- var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/;
7275
- var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);
7276
-
7277
- var errorStackClear = function (stack, dropEntries) {
7278
- if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {
7279
- while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');
7280
- } return stack;
7281
- };
7282
-
7283
- var fails = fails$o;
7284
- var createPropertyDescriptor = createPropertyDescriptor$4;
7285
-
7286
- var errorStackInstallable = !fails(function () {
7287
- var error = new Error('a');
7288
- if (!('stack' in error)) return true;
7289
- // eslint-disable-next-line es/no-object-defineproperty -- safe
7290
- Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));
7291
- return error.stack !== 7;
7292
- });
7293
-
7294
- var createNonEnumerableProperty$1 = createNonEnumerableProperty$9;
7295
- var clearErrorStack = errorStackClear;
7296
- var ERROR_STACK_INSTALLABLE = errorStackInstallable;
7297
-
7298
- // non-standard V8
7299
- var captureStackTrace = Error.captureStackTrace;
7300
-
7301
- var errorStackInstall = function (error, C, stack, dropEntries) {
7302
- if (ERROR_STACK_INSTALLABLE) {
7303
- if (captureStackTrace) captureStackTrace(error, C);
7304
- else createNonEnumerableProperty$1(error, 'stack', clearErrorStack(stack, dropEntries));
7305
- }
7306
- };
7307
-
7308
- var getBuiltIn = getBuiltIn$8;
7309
- var hasOwn = hasOwnProperty_1;
7310
- var createNonEnumerableProperty = createNonEnumerableProperty$9;
7311
- var isPrototypeOf = objectIsPrototypeOf;
7312
- var setPrototypeOf = objectSetPrototypeOf;
7313
- var copyConstructorProperties = copyConstructorProperties$3;
7314
- var proxyAccessor = proxyAccessor$2;
7315
- var inheritIfRequired = inheritIfRequired$2;
7316
- var normalizeStringArgument = normalizeStringArgument$1;
7317
- var installErrorCause = installErrorCause$1;
7318
- var installErrorStack = errorStackInstall;
7319
- var DESCRIPTORS = descriptors;
7320
-
7321
- var wrapErrorConstructorWithCause$1 = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {
7322
- var STACK_TRACE_LIMIT = 'stackTraceLimit';
7323
- var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;
7324
- var path = FULL_NAME.split('.');
7325
- var ERROR_NAME = path[path.length - 1];
7326
- var OriginalError = getBuiltIn.apply(null, path);
7327
-
7328
- if (!OriginalError) return;
7329
-
7330
- var OriginalErrorPrototype = OriginalError.prototype;
7331
-
7332
- // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006
7333
- if (hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;
7334
-
7335
- if (!FORCED) return OriginalError;
7336
-
7337
- var BaseError = getBuiltIn('Error');
7338
-
7339
- var WrappedError = wrapper(function (a, b) {
7340
- var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);
7341
- var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();
7342
- if (message !== undefined) createNonEnumerableProperty(result, 'message', message);
7343
- installErrorStack(result, WrappedError, result.stack, 2);
7344
- if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);
7345
- if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);
7346
- return result;
7347
- });
7348
-
7349
- WrappedError.prototype = OriginalErrorPrototype;
7350
-
7351
- if (ERROR_NAME !== 'Error') {
7352
- if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);
7353
- else copyConstructorProperties(WrappedError, BaseError, { name: true });
7354
- } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {
7355
- proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);
7356
- proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');
7357
- }
7358
-
7359
- copyConstructorProperties(WrappedError, OriginalError);
7360
-
7361
- try {
7362
- // Safari 13- bug: WebAssembly errors does not have a proper `.name`
7363
- if (OriginalErrorPrototype.name !== ERROR_NAME) {
7364
- createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);
7365
- }
7366
- OriginalErrorPrototype.constructor = WrappedError;
7367
- } catch (error) { /* empty */ }
7368
-
7369
- return WrappedError;
7370
- };
7371
-
7372
- /* eslint-disable no-unused-vars -- required for functions `.length` */
7373
- var $ = _export;
7374
- var global$1 = global$p;
7375
- var apply = functionApply;
7376
- var wrapErrorConstructorWithCause = wrapErrorConstructorWithCause$1;
7377
-
7378
- var WEB_ASSEMBLY = 'WebAssembly';
7379
- var WebAssembly = global$1[WEB_ASSEMBLY];
7380
-
7381
- // eslint-disable-next-line es/no-error-cause -- feature detection
7382
- var FORCED = new Error('e', { cause: 7 }).cause !== 7;
7383
-
7384
- var exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {
7385
- var O = {};
7386
- O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);
7387
- $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);
7388
- };
7389
-
7390
- var exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {
7391
- if (WebAssembly && WebAssembly[ERROR_NAME]) {
7392
- var O = {};
7393
- O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);
7394
- $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);
7395
- }
7396
- };
7397
-
7398
- // https://tc39.es/ecma262/#sec-nativeerror
7399
- exportGlobalErrorCauseWrapper('Error', function (init) {
7400
- return function Error(message) { return apply(init, this, arguments); };
7401
- });
7402
- exportGlobalErrorCauseWrapper('EvalError', function (init) {
7403
- return function EvalError(message) { return apply(init, this, arguments); };
7404
- });
7405
- exportGlobalErrorCauseWrapper('RangeError', function (init) {
7406
- return function RangeError(message) { return apply(init, this, arguments); };
7407
- });
7408
- exportGlobalErrorCauseWrapper('ReferenceError', function (init) {
7409
- return function ReferenceError(message) { return apply(init, this, arguments); };
7410
- });
7411
- exportGlobalErrorCauseWrapper('SyntaxError', function (init) {
7412
- return function SyntaxError(message) { return apply(init, this, arguments); };
7413
- });
7414
- exportGlobalErrorCauseWrapper('TypeError', function (init) {
7415
- return function TypeError(message) { return apply(init, this, arguments); };
7416
- });
7417
- exportGlobalErrorCauseWrapper('URIError', function (init) {
7418
- return function URIError(message) { return apply(init, this, arguments); };
7419
- });
7420
- exportWebAssemblyErrorCauseWrapper('CompileError', function (init) {
7421
- return function CompileError(message) { return apply(init, this, arguments); };
7422
- });
7423
- exportWebAssemblyErrorCauseWrapper('LinkError', function (init) {
7424
- return function LinkError(message) { return apply(init, this, arguments); };
7425
- });
7426
- exportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {
7427
- return function RuntimeError(message) { return apply(init, this, arguments); };
7428
- });
7429
-
7430
7875
  var call = functionCall;
7431
7876
  var fixRegExpWellKnownSymbolLogic = fixRegexpWellKnownSymbolLogic;
7432
7877
  var anObject = anObject$g;
@@ -7475,7 +7920,29 @@ fixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNa
7475
7920
  ];
7476
7921
  });
7477
7922
 
7923
+ /* *
7924
+ * Licensed under the Apache License, Version 2.0 (the "License");
7925
+ * you may not use this file except in compliance with the License.
7926
+ * You may obtain a copy of the License at
7927
+ *
7928
+ * http://www.apache.org/licenses/LICENSE-2.0
7929
+ *
7930
+ * Unless required by applicable law or agreed to in writing, software
7931
+ * distributed under the License is distributed on an "AS IS" BASIS,
7932
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7933
+ * See the License for the specific language governing permissions and
7934
+ * limitations under the License.
7935
+ *
7936
+ * Copyright 2024 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7937
+ * Copyright 2024 - Finnish Meteorological Institute (FMI)
7938
+ * */
7939
+ const DATE_FORMAT_DATEPICKER = 'dd/MM/yyyy HH:mm';
7478
7940
  const DATE_FORMAT_UTC = "yyyy-MM-dd'T'HH:mm:ss'Z'";
7941
+ const DATE_FORMAT_YEAR = 'yyyy-MM-dd';
7942
+ const DATE_FORMAT_HOURS = 'HH:mm';
7943
+ const DATE_FORMAT_NAME_OF_DAY_MONTH = 'eee dd MMM HH:mm';
7944
+ const DATE_FORMAT_NAME_OF_MONTH = 'dd MMM yyyy, HH:mm';
7945
+
7479
7946
  /**
7480
7947
  * Parsing date strings with geoweb dateUtils:
7481
7948
  *
@@ -7542,6 +8009,12 @@ const isoStringToDate = (input, utc = true) => {
7542
8009
  }
7543
8010
  return parsed;
7544
8011
  };
8012
+ const isValidIsoDateString = input => {
8013
+ if (!input) {
8014
+ return true;
8015
+ }
8016
+ return isoStringToDate(input) !== undefined;
8017
+ };
7545
8018
  /**
7546
8019
  * Parse a string to a date
7547
8020
  *
@@ -7994,6 +8467,46 @@ const startOfYearUTC = date => {
7994
8467
  milliseconds: 0
7995
8468
  });
7996
8469
  };
8470
+ // TODO - IF TODAY time is going to be used, we need to edit this to handle the time.
8471
+ // - now.getTimezoneOffset(); by subtracting the timezone offset, this can be used to convert the time to similar to UTC, because startOfDay retuns values in local time with offset
8472
+ /**
8473
+ * Parse custom time format of NOW+current time | current date in UTC. The result will be in UTC.
8474
+ * @param timeValue - string value
8475
+ * @returns Time in UTC format
8476
+ */
8477
+ const convertNOWFormatToUTC = timeValue => {
8478
+ const now = new Date();
8479
+ const today = startOfDay(now);
8480
+ const regex = /(NOW|TODAY)([\+\-])PT(\d+)H(\d+)M/;
8481
+ const matches = timeValue.match(regex);
8482
+ if (matches) {
8483
+ const base = matches[1] === 'NOW' ? now : today;
8484
+ const sign = matches[2] === '+' ? 1 : -1;
8485
+ const hours = parseInt(matches[3], 10);
8486
+ const minutes = parseInt(matches[4], 10);
8487
+ return addMinutes(addHours(base, sign * hours), sign * minutes).toISOString();
8488
+ }
8489
+ throw new Error('Invalid endTime format');
8490
+ };
8491
+ /**
8492
+ * Parse custom time format of NOW+-hours and minutes || TODAY+-hours and minutes into UTC. The result will be in UTC.
8493
+ * @param timeValue - string value
8494
+ * @returns Time in UTC format
8495
+ */
8496
+ const convertNOWandTODAYFormatsToUTC = timeValue => {
8497
+ const now = new Date();
8498
+ const today = startOfDayUTC(now);
8499
+ const regex = /(NOW|TODAY)([\+\-])PT(\d+)H(\d+)M/;
8500
+ const matches = timeValue.match(regex);
8501
+ if (matches) {
8502
+ const base = matches[1] === 'NOW' ? now : today;
8503
+ const sign = matches[2] === '+' ? 1 : -1;
8504
+ const hours = parseInt(matches[3], 10);
8505
+ const minutes = parseInt(matches[4], 10);
8506
+ return addMinutes(addHours(base, sign * hours), sign * minutes).toISOString();
8507
+ }
8508
+ throw new Error('Invalid endTime format');
8509
+ };
7997
8510
 
7998
8511
  /* *
7999
8512
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -8013,47 +8526,56 @@ const startOfYearUTC = date => {
8013
8526
  * */
8014
8527
 
8015
8528
  var index = /*#__PURE__*/Object.freeze({
8016
- __proto__: null,
8017
- isoStringToDate: isoStringToDate,
8018
- stringToDate: stringToDate,
8019
- dateToIsoString: dateToIsoString,
8020
- setUTCDate: setUTCDate,
8021
- dateToString: dateToString,
8022
- isBetween: isBetween,
8023
- createDate: createDate,
8024
- add: add,
8025
- sub: sub,
8026
- differenceInYears: differenceInYears,
8027
- differenceInMonths: differenceInMonths,
8028
- differenceInDays: differenceInDays,
8029
- differenceInMinutes: differenceInMinutes,
8030
- differenceInHours: differenceInHours,
8031
- differenceInSeconds: differenceInSeconds,
8032
- isBefore: isBefore,
8033
- isAfter: isAfter,
8034
- utc: utc,
8035
- getUtcFromString: getUtcFromString,
8036
- isValid: isValid,
8037
- unix: unix,
8038
- fromUnix: fromUnix,
8039
- parseCustomDateString: parseCustomDateString,
8040
- getNowUtc: getNowUtc,
8041
- getCurrentTimeAsString: getCurrentTimeAsString,
8042
- set: set,
8043
- getHours: getHours,
8044
- startOfHourUTC: startOfHourUTC,
8045
- startOfDayUTC: startOfDayUTC,
8046
- startOfWeekUTC: startOfWeekUTC,
8047
- startOfMonthUTC: startOfMonthUTC,
8048
- startOfYearUTC: startOfYearUTC,
8049
- isEqual: isEqual,
8050
- startOfDay: startOfDay,
8051
- parseISO: parseISO,
8052
- isWithinInterval: isWithinInterval,
8053
- getDay: getDay,
8054
- getMonth: getMonth,
8055
- getYear: getYear,
8056
- getWeek: getWeek
8529
+ __proto__: null,
8530
+ isoStringToDate: isoStringToDate,
8531
+ isValidIsoDateString: isValidIsoDateString,
8532
+ stringToDate: stringToDate,
8533
+ dateToIsoString: dateToIsoString,
8534
+ setUTCDate: setUTCDate,
8535
+ dateToString: dateToString,
8536
+ isBetween: isBetween,
8537
+ createDate: createDate,
8538
+ add: add,
8539
+ sub: sub,
8540
+ differenceInYears: differenceInYears,
8541
+ differenceInMonths: differenceInMonths,
8542
+ differenceInDays: differenceInDays,
8543
+ differenceInMinutes: differenceInMinutes,
8544
+ differenceInHours: differenceInHours,
8545
+ differenceInSeconds: differenceInSeconds,
8546
+ isBefore: isBefore,
8547
+ isAfter: isAfter,
8548
+ utc: utc,
8549
+ getUtcFromString: getUtcFromString,
8550
+ isValid: isValid,
8551
+ unix: unix,
8552
+ fromUnix: fromUnix,
8553
+ parseCustomDateString: parseCustomDateString,
8554
+ getNowUtc: getNowUtc,
8555
+ getCurrentTimeAsString: getCurrentTimeAsString,
8556
+ set: set,
8557
+ getHours: getHours,
8558
+ startOfHourUTC: startOfHourUTC,
8559
+ startOfDayUTC: startOfDayUTC,
8560
+ startOfWeekUTC: startOfWeekUTC,
8561
+ startOfMonthUTC: startOfMonthUTC,
8562
+ startOfYearUTC: startOfYearUTC,
8563
+ convertNOWFormatToUTC: convertNOWFormatToUTC,
8564
+ convertNOWandTODAYFormatsToUTC: convertNOWandTODAYFormatsToUTC,
8565
+ isEqual: isEqual,
8566
+ startOfDay: startOfDay,
8567
+ parseISO: parseISO,
8568
+ isWithinInterval: isWithinInterval,
8569
+ getDay: getDay,
8570
+ getMonth: getMonth,
8571
+ getYear: getYear,
8572
+ getWeek: getWeek,
8573
+ DATE_FORMAT_DATEPICKER: DATE_FORMAT_DATEPICKER,
8574
+ DATE_FORMAT_UTC: DATE_FORMAT_UTC,
8575
+ DATE_FORMAT_YEAR: DATE_FORMAT_YEAR,
8576
+ DATE_FORMAT_HOURS: DATE_FORMAT_HOURS,
8577
+ DATE_FORMAT_NAME_OF_DAY_MONTH: DATE_FORMAT_NAME_OF_DAY_MONTH,
8578
+ DATE_FORMAT_NAME_OF_MONTH: DATE_FORMAT_NAME_OF_MONTH
8057
8579
  });
8058
8580
 
8059
8581
  /* *
@@ -8180,4 +8702,4 @@ class RenderCounter {
8180
8702
  }
8181
8703
  const renderCounter = new RenderCounter();
8182
8704
 
8183
- export { AlertBanner, AlertIcon, AppHeader, AppLayout, Avatar, BUTTON_TITLE, CanvasComponent, ConfirmationDialog, ConfirmationServiceProvider, CustomAccordion, CustomDialog, CustomIconButton, CustomSlider, CustomToggleButton, CustomTooltip, DEFAULT_ERROR_MESSAGE, DraggableComponent$1 as Draggable, ErrorBoundary, LastUpdateTime, ResizeComponent as Resizable, SearchField, SearchFieldButton, SearchHighlight, StatusTag, SwitchButton, ToggleMenu, ToolContainer, DraggableComponent as ToolContainerDraggable, ToolFooter, ToolHeader, TooltipSelect, UserMenu, UserMenuItemCheatSheet, MenuItemTheme as UserMenuItemTheme, adjustPosition, calculateDialogSizeAndPosition, calculateStartSize, createMockStoreWithEggs, createMockStoreWithEggsAndMiddleware, createToolkitMockStoreWithEggs, index as dateUtils, defaultDelay, getAxiosErrorMessage, getAxiosWarningMessage, getErrorMessage, getInitials, getLastUpdateTitle, getPosition, getWarningMessage, handleOutsideComponentTranslations, isAxiosError, pollingIntervalTimeout, renderCounter, showPrompt, sliderHeaderStyle, tooltipContainerStyles, useConfirmationDialog, useControlledTooltip, useDebounce, useDialogActions, useIsMounted, useMakeSureContainerStaysInsideWindow, usePoller, usePreventBrowserClose, usePrevious, useUserMenu, withEggs };
8705
+ export { AlertBanner, AlertIcon, AppHeader, AppLayout, Avatar, CanvasComponent, ConfirmationDialog, ConfirmationServiceProvider, CustomAccordion, CustomDialog, CustomIconButton, CustomSlider, CustomToggleButton, CustomTooltip, DEFAULT_ERROR_MESSAGE, DraggableComponent$1 as Draggable, ErrorBoundary, LastUpdateTime, ResizeComponent as Resizable, SHARED_NAMESPACE, SearchField, SearchFieldButton, SearchHighlight, StatusTag, SwitchButton, ToggleMenu, ToolContainer, DraggableComponent as ToolContainerDraggable, ToolFooter, ToolHeader, TooltipSelect, UserMenu, UserMenuItemCheatSheet, UserMenuItemSentryRecording, MenuItemTheme as UserMenuItemTheme, adjustPosition, calculateDialogSizeAndPosition, calculateStartSize, createMockStoreWithEggs, createMockStoreWithEggsAndMiddleware, createToolkitMockStoreWithEggs, index as dateUtils, defaultDelay, getAxiosErrorMessage, getAxiosWarningMessage, getErrorMessage, getInitials, getLastUpdateTitle, getPosition, getWarningMessage, handleOutsideComponentTranslations, initSharedI18n, isAxiosError, pollingIntervalTimeout, renderCounter, sharedTranslations, showPrompt, sliderHeaderStyle, tooltipContainerStyles, translateKeyOutsideComponents, useConfirmationDialog, useControlledTooltip, useDebounce, useDialogActions, useIsMounted, useMakeSureContainerStaysInsideWindow, usePoller, usePreventBrowserClose, usePrevious, useUserMenu, withEggs };