@opengeoweb/workspace 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 (26) hide show
  1. package/index.esm.js +683 -453
  2. package/package.json +1 -1
  3. package/src/index.d.ts +2 -0
  4. package/src/lib/Workspace.stories.d.ts +2 -2
  5. package/src/lib/components/MapPresetsFormDialog/MapPresetsFormDialog.stories.d.ts +4 -4
  6. package/src/lib/components/Providers/Providers.d.ts +1 -1
  7. package/src/lib/components/ViewPresetMenu/ViewPresetMenu.stories.d.ts +2 -2
  8. package/src/lib/components/ViewPresetMenu/ViewPresetMenuListConnect.d.ts +0 -2
  9. package/src/lib/components/ViewPresetMenu/ViewPresetsError.stories.d.ts +1 -0
  10. package/src/lib/components/WorkspaceFilter/WorkspaceFilter.stories.d.ts +2 -2
  11. package/src/lib/components/WorkspaceMenu/WorkspaceMenu.stories.d.ts +2 -2
  12. package/src/lib/components/WorkspaceOptions/WorkspaceOptions.stories.d.ts +2 -2
  13. package/src/lib/components/WorkspaceOptions/WorkspaceOptionsConnect.d.ts +0 -3
  14. package/src/lib/components/WorkspacePresetsFormDialog/WorkspacePresetsFormDialog.d.ts +0 -9
  15. package/src/lib/components/WorkspacePresetsFormDialog/WorkspacePresetsFormDialog.stories.d.ts +4 -4
  16. package/src/lib/components/WorkspaceSelectList/WorkspaceSelectList.d.ts +0 -1
  17. package/src/lib/components/WorkspaceSelectList/WorkspaceSelectListRow.stories.d.ts +2 -2
  18. package/src/lib/components/WorkspaceTopBar/WorkspaceTopBar.stories.d.ts +6 -6
  19. package/src/lib/components/WorkspaceViewTitle/WorkspaceViewTitleConnect.d.ts +0 -3
  20. package/src/lib/store/viewPresets/reducer.d.ts +1 -2
  21. package/src/lib/store/viewPresets/sagas.d.ts +0 -2
  22. package/src/lib/store/viewPresets/utils.d.ts +0 -4
  23. package/src/lib/store/workspaceList/utils.d.ts +3 -1
  24. package/src/lib/storyUtils/useFirstTimeError.d.ts +0 -1
  25. package/src/lib/utils/i18n.d.ts +3 -0
  26. package/src/lib/storyshots/Storyshots.spec.d.ts +0 -1
package/index.esm.js CHANGED
@@ -3,15 +3,16 @@ import _, { chunk, cloneDeep, isEmpty, isEqual, isString } from 'lodash';
3
3
  import { syncGroupsTypes, syncGroupsActions, layerActions, mapStoreActions, uiActions, genericActions, mapActions, layerTypes, mapEnums, selectorMemoizationOptions, genericSelectors, mapSelectors, syncGroupsSelectors, routerActions, coreModuleConfig, loadingIndicatorSelectors, uiSelectors } from '@opengeoweb/store';
4
4
  import { createApiInstance, createNonAuthApiInstance, getApi, createFakeApiInstance, ApiProvider, useApiContext } from '@opengeoweb/api';
5
5
  import { getLeaves, MosaicContext, getAndAssertNodeAtPathExists, createBalancedTreeFromLeaves, MosaicWindow, Mosaic } from 'react-mosaic-component';
6
+ import i18n from 'i18next';
7
+ import { SHARED_NAMESPACE, sharedTranslations, isAxiosError, getAxiosErrorMessage, withEggs, ConfirmationServiceProvider, useConfirmationDialog, CustomIconButton, AlertBanner, CustomTooltip, SearchHighlight, ToggleMenu, usePrevious, ToolContainer, renderCounter, CustomToggleButton, ConfirmationDialog } from '@opengeoweb/shared';
8
+ import { initReactI18next, useTranslation, I18nextProvider } from 'react-i18next';
9
+ import { CORE_NAMESPACE, coreTranslations } from '@opengeoweb/core';
6
10
  import { takeLatest, takeEvery, debounce, delay, put, all, select, call as call$g, takeLeading } from 'redux-saga/effects';
7
- import { isAxiosError, getAxiosErrorMessage, withEggs, ConfirmationServiceProvider, useConfirmationDialog, CustomIconButton, AlertBanner, CustomTooltip, SearchHighlight, ToggleMenu, usePrevious, renderCounter, ToolContainer, CustomToggleButton, ConfirmationDialog } from '@opengeoweb/shared';
8
11
  import { snackbarActions, SnackbarWrapperConnect } from '@opengeoweb/snackbar';
9
12
  import * as React from 'react';
10
13
  import React__default, { useCallback } from 'react';
11
14
  import { ThemeWrapper, lightTheme, SplitVertical, SplitHorizontal, Expand, UnExpand, Close, Delete, Preset, PresetWorkspace, PresetTiles, Search, Clear, CloudLoading, CloudIdle, WebAssetOff } from '@opengeoweb/theme';
12
15
  import { Provider, useDispatch, useSelector, useStore, shallowEqual } from 'react-redux';
13
- import i18n from 'i18next';
14
- import { initReactI18next, useTranslation, I18nextProvider } from 'react-i18next';
15
16
  import { timeSeriesModuleConfig } from '@opengeoweb/timeseries';
16
17
  import { AuthenticationProvider, useAuthenticationContext } from '@opengeoweb/authentication';
17
18
  import { createStore } from '@redux-eggs/redux-toolkit';
@@ -25,6 +26,257 @@ import { Box as Box$1 } from '@mui/system';
25
26
  import { ReactHookFormTextField, ReactHookFormHiddenInput, ReactHookFormProvider, defaultFormOptions } from '@opengeoweb/form-fields';
26
27
  import { useFormContext } from 'react-hook-form';
27
28
 
29
+ var en = {
30
+ "workspace-menu": "Workspace menu",
31
+ "workspace-new": "New workspace",
32
+ "workspace-my-presets": "My presets",
33
+ "workspace-system-presets": "System presets",
34
+ "workspace-all-button": "All",
35
+ "workspace-search": "Search",
36
+ "workspace-loading": "Loading",
37
+ "workspace-options": "Options",
38
+ "workspace-results": "results",
39
+ "workspace-delete": "Delete",
40
+ "workspce-clear": "Clear",
41
+ "workspace-save": "Save",
42
+ "workspace-save-as": "Save as",
43
+ "workspace-save-incl-viewpresets": "Save (incl. viewpresets)",
44
+ "workspace-edit": "Edit (name)",
45
+ "workspace-edit-both": "Edit (name and abstract)",
46
+ "geoweb-welcome": "Welcome to GeoWeb. Please use one of the presets to open up new views",
47
+ "workspace-modified-new": "modified",
48
+ "workspace-modified-existing": "not saved",
49
+ "workspace-dialog-delete": "Delete workspace",
50
+ "workspace-duplicate": "Duplicate",
51
+ "workspace-cancel": "Cancel",
52
+ "workspace-dialog-name": "Name",
53
+ "workspace-dialog-abstract": "Abstract",
54
+ "workspace-dialog-confirm-delete-message": "Are you sure to want to delete the \"{{TITLE}}\" workspace preset?",
55
+ "workspace-error-fetch": "Failed to fetch workspace list",
56
+ "workspace-error-fetch-detail": "Failed to fetch workspace {{WORKSPACE_ID}}",
57
+ "workspace-retry": "Try again",
58
+ "workspace-delete-tooltip": "Delete preset",
59
+ "workspace-control-split-horizontal": "Split window horizontally",
60
+ "workspace-control-split-vertical": "Split window vertically",
61
+ "workspace-control-expand": "Expand window",
62
+ "workspace-control-unexpand": "Unexpand window",
63
+ "workspace-control-close": "Close window",
64
+ "workspace-control-close-message-title": "Whoops",
65
+ "workspace-control-close-message-description": "Are you sure you want to close this window? All changes will be lost.",
66
+ "workspace-mappreset-delete-message": "Are you sure to want to delete \"{{TITLE}}\" map preset?",
67
+ "workspace-viewpresets-fail-fetch": "Failed to fetch view {{VIEWPRESET_ID}}",
68
+ "workspace-viewpresets-error": "View presets not available",
69
+ "workspace-mappreset-dialog-title": "Map preset name",
70
+ "workspace-mappreset-save-as": "Save map preset as",
71
+ "workspace-mappreset-new": "New map preset",
72
+ "workspace-mappreset-dialog-title-delete": "Delete map preset",
73
+ "workspace-mappreset-dialog-title-edit": "Edit map preset",
74
+ "workspace-mappreset-error-save": "Map preset not saved: an error occurred during saving. Please try again later.",
75
+ "workspace-mappreset-error-fetch": "Error fetching map preset list",
76
+ "workspace-list-error": "Error fetching workspace preset list",
77
+ "workspace-list-success-save-all": "Workspace \"{{TITLE}}\" and underlying viewpresets successfully saved",
78
+ "workspace-list-success-delete": "Workspace \"{{TITLE}}\" successfully deleted",
79
+ "workspace-list-success-duplicate": "Workspace \"{{TITLE}}\" successfully saved",
80
+ "workspace-list-success-edit": "Workspace \"{{TITLE}}\" successfully edited",
81
+ "workspace-list-success-save": "Workspace \"{{TITLE}}\" successfully saved",
82
+ "workspace-save-error": "Failed to save workspace \"{{TITLE}}\"",
83
+ "workspace-error-generic": "Something went wrong, try again",
84
+ "workspace-viewpreset-success-delete": "Map preset \"{{TITLE}}\" successfully deleted",
85
+ "workspace-viewpreset-success-save-as": "New map preset \"{{TITLE}}\" successfully saved",
86
+ "workspace-viewpreset-success-edit": "Map preset \"{{TITLE}}\" successfully edited",
87
+ "workspace-viewpreset-success-save": "Map preset \"{{TITLE}}\" successfully saved",
88
+ "workspace-viewpreset-menu": "View presets menu"
89
+ };
90
+ var fi = {
91
+ "workspace-menu": "ei käännetty",
92
+ "workspace-new": "ei käännetty",
93
+ "workspace-my-presets": "ei käännetty",
94
+ "workspace-system-presets": "ei käännetty",
95
+ "workspace-all-button": "ei käännetty",
96
+ "workspace-search": "ei käännetty",
97
+ "workspace-loading": "ei käännetty",
98
+ "workspace-options": "ei käännetty",
99
+ "workspace-results": "ei käännetty",
100
+ "workspace-delete": "ei käännetty",
101
+ "workspce-clear": "ei käännetty",
102
+ "workspace-save": "ei käännetty",
103
+ "workspace-save-as": "ei käännetty",
104
+ "workspace-save-incl-viewpresets": "ei käännetty",
105
+ "workspace-edit": "ei käännetty",
106
+ "workspace-edit-both": "ei käännetty",
107
+ "geoweb-welcome": "ei käännetty",
108
+ "workspace-modified-new": "ei käännetty",
109
+ "workspace-modified-existing": "ei käännetty",
110
+ "workspace-dialog-delete": "ei käännetty",
111
+ "workspace-duplicate": "ei käännetty",
112
+ "workspace-cancel": "ei käännetty",
113
+ "workspace-dialog-name": "ei käännetty",
114
+ "workspace-dialog-abstract": "ei käännetty",
115
+ "workspace-dialog-confirm-delete-message": "ei käännetty \"{{TITLE}}\" ei käännetty?",
116
+ "workspace-error-fetch": "ei käännetty",
117
+ "workspace-error-fetch-detail": "ei käännetty",
118
+ "workspace-retry": "ei käännetty",
119
+ "workspace-delete-tooltip": "ei käännetty",
120
+ "workspace-control-split-horizontal": "ei käännetty",
121
+ "workspace-control-split-vertical": "ei käännetty",
122
+ "workspace-control-expand": "ei käännetty",
123
+ "workspace-control-unexpand": "ei käännetty",
124
+ "workspace-control-close": "ei käännetty",
125
+ "workspace-control-close-message-title": "ei käännetty",
126
+ "workspace-control-close-message-description": "ei käännetty",
127
+ "workspace-mappreset-delete-message": "ei käännetty",
128
+ "workspace-viewpresets-fail-fetch": "ei käännetty",
129
+ "workspace-viewpresets-error": "ei käännetty",
130
+ "workspace-mappreset-dialog-title": "ei käännetty",
131
+ "workspace-mappreset-save-as": "ei käännetty",
132
+ "workspace-mappreset-new": "ei käännetty",
133
+ "workspace-mappreset-dialog-title-delete": "ei käännetty",
134
+ "workspace-mappreset-dialog-title-edit": "ei käännetty",
135
+ "workspace-mappreset-error-save": "ei käännetty",
136
+ "workspace-mappreset-error-fetch": "ei käännetty",
137
+ "workspace-list-error": "ei käännetty",
138
+ "workspace-list-success-save-all": "ei käännetty",
139
+ "workspace-list-success-delete": "ei käännetty",
140
+ "workspace-list-success-duplicate": "ei käännetty",
141
+ "workspace-list-success-edit": "ei käännetty",
142
+ "workspace-list-success-save": "ei käännetty",
143
+ "workspace-save-error": "ei käännetty",
144
+ "workspace-error-generic": "ei käännetty",
145
+ "workspace-viewpreset-success-delete": "ei käännetty",
146
+ "workspace-viewpreset-success-save-as": "ei käännetty",
147
+ "workspace-viewpreset-success-edit": "ei käännetty",
148
+ "workspace-viewpreset-success-save": "ei käännetty",
149
+ "workspace-viewpreset-menu": "ei käännetty"
150
+ };
151
+ var no = {
152
+ "workspace-menu": "Arbeidsrommeny",
153
+ "workspace-new": "Nytt arbeidsrom",
154
+ "workspace-my-presets": "Mine presets",
155
+ "workspace-system-presets": "System presets",
156
+ "workspace-all-button": "Alle",
157
+ "workspace-search": "Søk",
158
+ "workspace-loading": "Laster",
159
+ "workspace-options": "Valg",
160
+ "workspace-results": "resultater",
161
+ "workspace-delete": "Slett",
162
+ "workspce-clear": "Tøm",
163
+ "workspace-save": "Lagre",
164
+ "workspace-save-as": "Lagre som",
165
+ "workspace-save-incl-viewpresets": "Lagre (inkl. viewpresets)",
166
+ "workspace-edit": "Endre (navn)",
167
+ "workspace-edit-both": "Endre (navn og abstrakt)",
168
+ "geoweb-welcome": "Velkommen til GeoWeb. Åpne et forhåndsvalg for å åpne nye vinduer",
169
+ "workspace-modified-new": "modifisert",
170
+ "workspace-modified-existing": "ikke lagret",
171
+ "workspace-dialog-delete": "Slett arbeidsrom",
172
+ "workspace-duplicate": "Kopier",
173
+ "workspace-cancel": "Avbryt",
174
+ "workspace-dialog-name": "Navn",
175
+ "workspace-dialog-abstract": "Abstrakt",
176
+ "workspace-dialog-confirm-delete-message": "Er du sikker på at du vil slette \"{{TITLE}}\" arbeidsrommet?",
177
+ "workspace-error-fetch": "Feilet i å hente liste over arbeidsrom",
178
+ "workspace-error-fetch-detail": "Feilet i å hente arbeidsrommet {{WORKSPACE_ID}}",
179
+ "workspace-viewpresets-error": "Presets er ikke tilgjengelig",
180
+ "workspace-retry": "Prøv igjen",
181
+ "workspace-delete-tooltip": "Slett preset",
182
+ "workspace-control-split-horizontal": "Splitt vindu horisontalt",
183
+ "workspace-control-split-vertical": "Splitt vindu vertikalt",
184
+ "workspace-control-expand": "Utvid vindu",
185
+ "workspace-control-unexpand": "Krymp vindu",
186
+ "workspace-control-close": "Lukk vindu",
187
+ "workspace-control-close-message-title": "Whoops",
188
+ "workspace-control-close-message-description": "Er du sikker på at du vil lukke vinduet? Alle endringer vil slettes.",
189
+ "workspace-mappreset-delete-message": "Er du sikker på at du vil slette \"{{TITLE}}\" kart-preset?",
190
+ "workspace-viewpresets-fail-fetch": "Feilet i å hente {{VIEWPRESET_ID}}",
191
+ "workspace-mappreset-dialog-title": "Kartpreset navn",
192
+ "workspace-mappreset-save-as": "Lagre kartpreset som",
193
+ "workspace-mappreset-new": "Ny kartpreset",
194
+ "workspace-mappreset-dialog-title-delete": "Slett kartpreset",
195
+ "workspace-mappreset-dialog-title-edit": "Endre kartpreset",
196
+ "workspace-mappreset-error-save": "Kartpreset ikke lagret: en feil skjedde under lagring. Prøv igjen senere",
197
+ "workspace-mappreset-error-fetch": "Feilet i å hente liste over kartpresets",
198
+ "workspace-list-error": "Feilet i å hente liste over arbeidsrompresets",
199
+ "workspace-list-success-save-all": "Arbeidsrom \"{{TITLE}}\" og underliggende presets er lagret",
200
+ "workspace-list-success-delete": "Arbeidsrom \"{{TITLE}}\" er slettet",
201
+ "workspace-list-success-duplicate": "Arbeidsrom \"{{TITLE}}\" er lagret",
202
+ "workspace-list-success-edit": "Arbeidsrom \"{{TITLE}}\" er endret",
203
+ "workspace-list-success-save": "Arbeidsrom \"{{TITLE}}\" er lagret",
204
+ "workspace-save-error": "Feilet i å lagre arbeidsrom \"{{TITLE}}\"",
205
+ "workspace-error-generic": "Noe feilet, prøv igjen",
206
+ "workspace-viewpreset-success-delete": "Kartpreset \"{{TITLE}}\" er slettet",
207
+ "workspace-viewpreset-success-save-as": "Ny kartpreset \"{{TITLE}}\" er lagret",
208
+ "workspace-viewpreset-success-edit": "Kartpreset \"{{TITLE}}\" er endret",
209
+ "workspace-viewpreset-success-save": "Kartpreset \"{{TITLE}}\" er lagret",
210
+ "workspace-viewpreset-menu": "Vindupresetmeny"
211
+ };
212
+ var nl = {
213
+ "workspace-menu": "Workspace menu",
214
+ "workspace-new": "Nieuwe workspace",
215
+ "workspace-my-presets": "Mijn presets",
216
+ "workspace-system-presets": "Systeem presets",
217
+ "workspace-all-button": "Alle",
218
+ "workspace-search": "Zoeken",
219
+ "workspace-loading": "Laden",
220
+ "workspace-options": "Opties",
221
+ "workspace-results": "resultaten",
222
+ "workspace-delete": "Verwijder",
223
+ "workspce-clear": "Wissen",
224
+ "workspace-save": "Opslaan",
225
+ "workspace-save-as": "Opslaan als",
226
+ "workspace-save-incl-viewpresets": "Opslaan (incl. viewpresets)",
227
+ "workspace-edit": "Aanpassen (naam)",
228
+ "workspace-edit-both": "Aanpassen (naam en abstract)",
229
+ "geoweb-welcome": "Welkom bij GeoWeb. Kies een van de presets om een nieuw venster te openen",
230
+ "workspace-modified-new": "bewerkt",
231
+ "workspace-modified-existing": "niet opgeslagen",
232
+ "workspace-dialog-delete": "Verwijder workspace",
233
+ "workspace-duplicate": "Dupliceer",
234
+ "workspace-cancel": "Annuleer",
235
+ "workspace-dialog-name": "Naam",
236
+ "workspace-dialog-abstract": "Abstract",
237
+ "workspace-dialog-confirm-delete-message": "Weet je zeker dat je workspace preset \"{{TITLE}}\" wilt verwijderen?",
238
+ "workspace-error-fetch": "Ophalen workspace lijst mislukt",
239
+ "workspace-error-fetch-detail": "Ophalen workspace {{WORKSPACE_ID}} mislukt",
240
+ "workspace-viewpresets-error": "View presets niet beschikbaar",
241
+ "workspace-retry": "Opnieuw proberen",
242
+ "workspace-delete-tooltip": "Verwijder preset",
243
+ "workspace-control-split-horizontal": "Splits paneel horizontaal",
244
+ "workspace-control-split-vertical": "Splits paneel verticaal",
245
+ "workspace-control-expand": "Vergroot paneel",
246
+ "workspace-control-unexpand": "Verklein paneel",
247
+ "workspace-control-close": "Sluit paneel",
248
+ "workspace-control-close-message-title": "Oeps",
249
+ "workspace-control-close-message-description": "Weet je zeker dat je dit paneel wilt sluiten? Alle wijzigingen zullen verloren gaan",
250
+ "workspace-mappreset-delete-message": "Weet je zeker dat je map preset \"{{TITLE}}\" wilt verwijderen?",
251
+ "workspace-viewpresets-fail-fetch": "Ophalen van view preset {{VIEWPRESET_ID}} mislukt",
252
+ "workspace-mappreset-dialog-title": "Map preset naam",
253
+ "workspace-mappreset-save-as": "Sla map preset op als",
254
+ "workspace-mappreset-new": "Nieuwe map preset",
255
+ "workspace-mappreset-dialog-title-delete": "Verwijder map preset",
256
+ "workspace-mappreset-dialog-title-edit": "Aanpassen map preset",
257
+ "workspace-mappreset-error-save": "Map preset niet opgeslagen: een ging iets fout met opslaan. Probeer het later nog eens.",
258
+ "workspace-mappreset-error-fetch": "Ophalen map preset lijst mislukt",
259
+ "workspace-list-error": "Ophalen workspace preset lijst mislukt",
260
+ "workspace-list-success-save-all": "Workspace \"{{TITLE}}\" en onderliggende viewpresets zijn succesvol opgeslagen!",
261
+ "workspace-list-success-delete": "Workspace \"{{TITLE}}\" succesvol verwijderd",
262
+ "workspace-list-success-duplicate": "Workspace \"{{TITLE}}\" succesvol opgeslagen",
263
+ "workspace-list-success-edit": "Workspace \"{{TITLE}}\" succesvol aangepast",
264
+ "workspace-list-success-save": "Workspace \"{{TITLE}}\" succesvol opgeslagen",
265
+ "workspace-save-error": "Workspace opslaan \"{{TITLE}}\" mislukt",
266
+ "workspace-error-generic": "Er is iets mis gegaan, probeer het opnieuw",
267
+ "workspace-viewpreset-success-delete": "Map preset \"{{TITLE}}\" succesvol verwijderd",
268
+ "workspace-viewpreset-success-save-as": "Nieuwe map preset \"{{TITLE}}\" succesvol opgeslagen",
269
+ "workspace-viewpreset-success-edit": "Map preset \"{{TITLE}}\" succesvol aangepast",
270
+ "workspace-viewpreset-success-save": "Map preset \"{{TITLE}}\" succesvol opgeslagen",
271
+ "workspace-viewpreset-menu": "View presets menu"
272
+ };
273
+ var workspaceTranslations = {
274
+ en: en,
275
+ fi: fi,
276
+ no: no,
277
+ nl: nl
278
+ };
279
+
28
280
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
29
281
 
30
282
  var check = function (it) {
@@ -2622,13 +2874,13 @@ var PresetAction;
2622
2874
  })(PresetAction || (PresetAction = {}));
2623
2875
 
2624
2876
  const viewPresetsListFilterOptions = [{
2625
- label: 'My presets',
2877
+ label: 'workspace-my-presets',
2626
2878
  id: 'user',
2627
2879
  type: 'scope',
2628
2880
  isSelected: true,
2629
2881
  isDisabled: false
2630
2882
  }, {
2631
- label: 'System presets',
2883
+ label: 'workspace-system-presets',
2632
2884
  id: 'system',
2633
2885
  type: 'scope',
2634
2886
  isSelected: true,
@@ -3283,88 +3535,116 @@ fixRegExpWellKnownSymbolLogic$2('split', function (SPLIT, nativeSplit, maybeCall
3283
3535
  * */
3284
3536
  const getCleanSearchQuery = searchQuery => searchQuery.trim().split(/\s+/).join();
3285
3537
 
3286
- const MAPPRESET_ACTIVE_TITLE = 'New map preset';
3287
- const MAPPRESET_DIALOG_TITLE_SAVE_AS = 'Save map preset as';
3288
- const MAPPRESET_DIALOG_TITLE_DELETE = 'Delete map preset';
3289
- const MAPPRESET_DIALOG_TITLE_EDIT = 'Edit map preset';
3290
- const getSnackbarMessage$1 = (action, title) => {
3291
- // Trim and add quotes
3292
- const trimmedTitle = `"${title.trim()}"`;
3293
- switch (action) {
3294
- case PresetAction.DELETE:
3295
- return `Map preset ${trimmedTitle} successfully deleted`;
3296
- case PresetAction.SAVE_AS:
3297
- return `New map preset ${trimmedTitle} successfully saved`;
3298
- case PresetAction.EDIT:
3299
- return `Map preset ${trimmedTitle} successfully edited`;
3300
- default:
3301
- return `Map preset ${trimmedTitle} successfully saved`;
3302
- }
3303
- };
3304
- const getPresetsApi = () => getApi(API_NAME);
3305
- const emptyMapViewPreset = {
3306
- componentType: 'Map',
3307
- keywords: '',
3308
- scope: 'user',
3309
- title: '',
3310
- initialProps: {
3311
- mapPreset: {}
3312
- }
3313
- };
3314
- // Returns object of applied user filters such as scope/search etc
3315
- // If all filter chips are selected, an empty string is returned for that filter which is interpreted in the BE as "return all" _
3316
- const constructFilterParams$1 = (filters, searchQuery) => {
3317
- // get filters
3318
- const isAllSelectedForFilters = filters.every(filter => filter.isSelected);
3319
- // If all filters are selected, ensure we return nothing for scope
3320
- const {
3321
- scope
3322
- } = isAllSelectedForFilters ? {
3323
- scope: []
3324
- } : filters.reduce((filterList, filter) => {
3325
- if (filter.isSelected && filter.type === 'scope') {
3326
- return Object.assign(Object.assign({}, filter), {
3327
- scope: filterList.scope.concat(filter.id)
3328
- });
3538
+ const WORKSPACE_NAMESPACE = 'workspace';
3539
+ const initWorkspaceTestI18n = () => {
3540
+ i18n.use(initReactI18next).init({
3541
+ lng: 'en',
3542
+ ns: WORKSPACE_NAMESPACE,
3543
+ interpolation: {
3544
+ escapeValue: false
3545
+ },
3546
+ resources: {
3547
+ en: {
3548
+ [WORKSPACE_NAMESPACE]: workspaceTranslations.en,
3549
+ [SHARED_NAMESPACE]: sharedTranslations.en,
3550
+ [CORE_NAMESPACE]: coreTranslations.en
3551
+ },
3552
+ fi: {
3553
+ [WORKSPACE_NAMESPACE]: workspaceTranslations.fi,
3554
+ [SHARED_NAMESPACE]: sharedTranslations.fi,
3555
+ [CORE_NAMESPACE]: coreTranslations.fi
3556
+ },
3557
+ no: {
3558
+ [WORKSPACE_NAMESPACE]: workspaceTranslations.no,
3559
+ [SHARED_NAMESPACE]: sharedTranslations.no,
3560
+ [CORE_NAMESPACE]: coreTranslations.no
3561
+ },
3562
+ nl: {
3563
+ [WORKSPACE_NAMESPACE]: workspaceTranslations.nl,
3564
+ [SHARED_NAMESPACE]: sharedTranslations.nl,
3565
+ [CORE_NAMESPACE]: coreTranslations.nl
3566
+ }
3329
3567
  }
3330
- return filterList;
3331
- }, {
3332
- scope: []
3333
- });
3334
- // get search
3335
- const search = getCleanSearchQuery(searchQuery);
3336
- return Object.assign(Object.assign({}, scope.length && {
3337
- scope: scope.toString()
3338
- }), search.length && {
3339
- search
3340
3568
  });
3341
3569
  };
3570
+ initWorkspaceTestI18n();
3571
+ const ns = [WORKSPACE_NAMESPACE];
3572
+ const translateKeyOutsideComponents = (key, params = undefined) => i18n.t(key, Object.assign({
3573
+ ns
3574
+ }, params));
3575
+ const useWorkspaceTranslation = () => useTranslation(ns);
3342
3576
 
3343
- const getSnackbarMessage = (action, title) => {
3577
+ const getSnackbarMessage$1 = (action, title) => {
3344
3578
  // Trim and add quotes
3345
- const trimmedTitle = `"${title.trim()}"`;
3579
+ const trimmedTitle = `${title.trim()}`;
3346
3580
  switch (action) {
3347
3581
  case WorkspacePresetAction.SAVE_ALL:
3348
- return `Workspace ${trimmedTitle} and underlying viewpresets successfully saved`;
3582
+ return translateKeyOutsideComponents('workspace-list-success-save-all', {
3583
+ TITLE: trimmedTitle
3584
+ });
3349
3585
  case WorkspacePresetAction.DELETE:
3350
- return `Workspace ${trimmedTitle} successfully deleted`;
3586
+ return translateKeyOutsideComponents('workspace-list-success-delete', {
3587
+ TITLE: trimmedTitle
3588
+ });
3351
3589
  case WorkspacePresetAction.DUPLICATE:
3352
- return `Workspace ${trimmedTitle} successfully saved`;
3590
+ return translateKeyOutsideComponents('workspace-list-success-duplicate', {
3591
+ TITLE: trimmedTitle
3592
+ });
3353
3593
  case WorkspacePresetAction.EDIT:
3354
- return `Workspace ${trimmedTitle} successfully edited`;
3594
+ return translateKeyOutsideComponents('workspace-list-success-edit', {
3595
+ TITLE: trimmedTitle
3596
+ });
3355
3597
  default:
3356
- return `Workspace ${trimmedTitle} successfully saved`;
3598
+ return translateKeyOutsideComponents('workspace-list-success-save', {
3599
+ TITLE: trimmedTitle
3600
+ });
3357
3601
  }
3358
3602
  };
3359
- const emptyMapWorkspace = {
3360
- title: 'New workspace',
3603
+ const getEmptyWorkspaceListItem = () => ({
3604
+ id: undefined,
3605
+ title: translateKeyOutsideComponents('workspace-new'),
3606
+ scope: 'system',
3607
+ abstract: '',
3608
+ viewType: 'singleWindow'
3609
+ });
3610
+ const emptyMapWorkspace = Object.assign(Object.assign({}, getEmptyWorkspaceListItem()), {
3611
+ views: {
3612
+ allIds: ['1_screen'],
3613
+ byId: {
3614
+ '1_screen': {
3615
+ title: translateKeyOutsideComponents('workspace-mappreset-new'),
3616
+ componentType: 'Map',
3617
+ initialProps: {
3618
+ mapPreset: {
3619
+ layers: [],
3620
+ proj: {
3621
+ bbox: {
3622
+ left: 58703.6377,
3623
+ bottom: 6408480.4514,
3624
+ right: 3967387.5161,
3625
+ top: 11520588.9031
3626
+ },
3627
+ srs: 'EPSG:3857'
3628
+ },
3629
+ shouldShowLayerManager: true,
3630
+ dockedLayerManagerSize: 'sizeSmall'
3631
+ },
3632
+ syncGroupsIds: []
3633
+ }
3634
+ }
3635
+ }
3636
+ },
3637
+ mosaicNode: '1_screen'
3638
+ });
3639
+ const getEmptyWorkspacePreset = () => ({
3640
+ title: translateKeyOutsideComponents('workspace-new'),
3361
3641
  scope: 'system',
3362
3642
  abstract: '',
3363
3643
  views: {
3364
3644
  allIds: ['1_screen'],
3365
3645
  byId: {
3366
3646
  '1_screen': {
3367
- title: MAPPRESET_ACTIVE_TITLE,
3647
+ title: translateKeyOutsideComponents('workspace-mappreset-new'),
3368
3648
  componentType: 'Map',
3369
3649
  initialProps: {
3370
3650
  mapPreset: {
@@ -3388,15 +3668,15 @@ const emptyMapWorkspace = {
3388
3668
  },
3389
3669
  mosaicNode: '1_screen',
3390
3670
  viewType: 'singleWindow'
3391
- };
3671
+ });
3392
3672
  const createCustomEmptyMapWorkspace = customMapPreset => {
3393
- const customEmptyMapWorkspace = cloneDeep(emptyMapWorkspace);
3673
+ const customEmptyMapWorkspace = cloneDeep(getEmptyWorkspacePreset());
3394
3674
  if (customMapPreset) {
3395
3675
  customEmptyMapWorkspace.views.byId['1_screen'].initialProps.mapPreset = customMapPreset;
3396
3676
  }
3397
3677
  return customEmptyMapWorkspace;
3398
3678
  };
3399
- const constructFilterParams = (filters, searchQuery) => {
3679
+ const constructFilterParams$1 = (filters, searchQuery) => {
3400
3680
  // get filters
3401
3681
  const {
3402
3682
  scope
@@ -3748,6 +4028,67 @@ const getViewPresetListFilterResultsForView = createSelector(getViewPresetById,
3748
4028
  return Object.values(filteredResults.entities);
3749
4029
  }, selectorMemoizationOptions);
3750
4030
 
4031
+ const getSnackbarMessage = (action, title) => {
4032
+ // Trim and add quotes
4033
+ const trimmedTitle = title.trim();
4034
+ switch (action) {
4035
+ case PresetAction.DELETE:
4036
+ return translateKeyOutsideComponents('workspace-viewpreset-success-delete', {
4037
+ TITLE: trimmedTitle
4038
+ });
4039
+ case PresetAction.SAVE_AS:
4040
+ return translateKeyOutsideComponents('workspace-viewpreset-success-save-as', {
4041
+ TITLE: trimmedTitle
4042
+ });
4043
+ case PresetAction.EDIT:
4044
+ return translateKeyOutsideComponents('workspace-viewpreset-success-edit', {
4045
+ TITLE: trimmedTitle
4046
+ });
4047
+ default:
4048
+ return translateKeyOutsideComponents('workspace-viewpreset-success-save', {
4049
+ TITLE: trimmedTitle
4050
+ });
4051
+ }
4052
+ };
4053
+ const getPresetsApi = () => getApi(API_NAME);
4054
+ const emptyMapViewPreset = {
4055
+ componentType: 'Map',
4056
+ keywords: '',
4057
+ scope: 'user',
4058
+ title: '',
4059
+ initialProps: {
4060
+ mapPreset: {}
4061
+ }
4062
+ };
4063
+ // Returns object of applied user filters such as scope/search etc
4064
+ // If all filter chips are selected, an empty string is returned for that filter which is interpreted in the BE as "return all" _
4065
+ const constructFilterParams = (filters, searchQuery) => {
4066
+ // get filters
4067
+ const isAllSelectedForFilters = filters.every(filter => filter.isSelected);
4068
+ // If all filters are selected, ensure we return nothing for scope
4069
+ const {
4070
+ scope
4071
+ } = isAllSelectedForFilters ? {
4072
+ scope: []
4073
+ } : filters.reduce((filterList, filter) => {
4074
+ if (filter.isSelected && filter.type === 'scope') {
4075
+ return Object.assign(Object.assign({}, filter), {
4076
+ scope: filterList.scope.concat(filter.id)
4077
+ });
4078
+ }
4079
+ return filterList;
4080
+ }, {
4081
+ scope: []
4082
+ });
4083
+ // get search
4084
+ const search = getCleanSearchQuery(searchQuery);
4085
+ return Object.assign(Object.assign({}, scope.length && {
4086
+ scope: scope.toString()
4087
+ }), search.length && {
4088
+ search
4089
+ });
4090
+ };
4091
+
3751
4092
  const workspaceStore = store => (store === null || store === void 0 ? void 0 : store.workspace) || initialState$1;
3752
4093
  /**
3753
4094
  * Gets workspace state
@@ -3856,7 +4197,7 @@ const getWorkspaceData = createSelector(getWorkspaceState, getViewPresetsStore,
3856
4197
  };
3857
4198
  }, selectorMemoizationOptions);
3858
4199
  const getViewPresetToSendToBackend = createSelector(getViewById, mapSelectors.getMapPreset, syncGroupsSelectors.getAllTargetGroupsForSource, (workspaceView, mapPreset, syncGroupsIds) => {
3859
- const title = (workspaceView === null || workspaceView === void 0 ? void 0 : workspaceView.title) || MAPPRESET_ACTIVE_TITLE;
4200
+ const title = (workspaceView === null || workspaceView === void 0 ? void 0 : workspaceView.title) || translateKeyOutsideComponents('workspace-mappreset-new');
3860
4201
  const scope = (workspaceView === null || workspaceView === void 0 ? void 0 : workspaceView.scope) || 'system';
3861
4202
  return Object.assign(Object.assign({}, emptyMapViewPreset), {
3862
4203
  id: workspaceView === null || workspaceView === void 0 ? void 0 : workspaceView.id,
@@ -3870,21 +4211,21 @@ const getViewPresetToSendToBackend = createSelector(getViewById, mapSelectors.ge
3870
4211
  }, selectorMemoizationOptions);
3871
4212
 
3872
4213
  var selectors$1 = /*#__PURE__*/Object.freeze({
3873
- __proto__: null,
3874
- getWorkspaceState: getWorkspaceState,
3875
- getInitialViewMapPreset: getInitialViewMapPreset,
3876
- getMosaicNode: getMosaicNode,
3877
- getViewById: getViewById,
3878
- getViewIds: getViewIds,
3879
- getShouldPreventClose: getShouldPreventClose,
3880
- isWorkspaceLoading: isWorkspaceLoading,
3881
- getWorkspaceError: getWorkspaceError,
3882
- getSelectedWorkspaceTitle: getSelectedWorkspaceTitle,
3883
- hasWorkspaceChanges: hasWorkspaceChanges,
3884
- getViewType: getViewType,
3885
- getSelectedWorkspaceScope: getSelectedWorkspaceScope,
3886
- getWorkspaceData: getWorkspaceData,
3887
- getViewPresetToSendToBackend: getViewPresetToSendToBackend
4214
+ __proto__: null,
4215
+ getWorkspaceState: getWorkspaceState,
4216
+ getInitialViewMapPreset: getInitialViewMapPreset,
4217
+ getMosaicNode: getMosaicNode,
4218
+ getViewById: getViewById,
4219
+ getViewIds: getViewIds,
4220
+ getShouldPreventClose: getShouldPreventClose,
4221
+ isWorkspaceLoading: isWorkspaceLoading,
4222
+ getWorkspaceError: getWorkspaceError,
4223
+ getSelectedWorkspaceTitle: getSelectedWorkspaceTitle,
4224
+ hasWorkspaceChanges: hasWorkspaceChanges,
4225
+ getViewType: getViewType,
4226
+ getSelectedWorkspaceScope: getSelectedWorkspaceScope,
4227
+ getWorkspaceData: getWorkspaceData,
4228
+ getViewPresetToSendToBackend: getViewPresetToSendToBackend
3888
4229
  });
3889
4230
 
3890
4231
  /* *
@@ -6959,7 +7300,7 @@ function* fetchWorkspaceListSaga({
6959
7300
  } catch (error) {
6960
7301
  yield put(workspaceListActions.errorWorkspaceList({
6961
7302
  error: {
6962
- message: 'Error fetching workspace preset list',
7303
+ message: translateKeyOutsideComponents('workspace-list-error'),
6963
7304
  type: WorkspaceListErrorType.GENERIC
6964
7305
  }
6965
7306
  }));
@@ -6974,7 +7315,7 @@ function* onSuccessWorkspacePresetsActionSaga({
6974
7315
  title
6975
7316
  } = payload;
6976
7317
  yield put(snackbarActions.openSnackbar({
6977
- message: getSnackbarMessage(action, title)
7318
+ message: getSnackbarMessage$1(action, title)
6978
7319
  }));
6979
7320
  // if active workspace has been deleted, empty out url
6980
7321
  if (action === WorkspacePresetAction.DELETE && payload.currentActiveWorkspaceId && workspaceId === payload.currentActiveWorkspaceId) {
@@ -6991,7 +7332,7 @@ function* onSuccessWorkspacePresetsActionSaga({
6991
7332
  // Retrieve new list with current filter
6992
7333
  const workspaceFilters = yield select(getWorkspaceListFilters);
6993
7334
  const searchQuery = yield select(getWorkspaceListSearchQuery);
6994
- yield call$g(fetchWorkspaceListSaga, workspaceListActions.fetchWorkspaceList(constructFilterParams(workspaceFilters, searchQuery)));
7335
+ yield call$g(fetchWorkspaceListSaga, workspaceListActions.fetchWorkspaceList(constructFilterParams$1(workspaceFilters, searchQuery)));
6995
7336
  }
6996
7337
  function* saveAllViewPresetSaga(viewPresetEntity, workspaceTitle) {
6997
7338
  var _a, _b;
@@ -7177,7 +7518,6 @@ function* rootSaga$1() {
7177
7518
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7178
7519
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
7179
7520
  * */
7180
- const MESSAGE_SAVE_PRESET = 'Map preset not saved: an error occurred during saving. Please try again later.';
7181
7521
  function* fetchInitialViewPresetsSaga() {
7182
7522
  try {
7183
7523
  const presetsApi = yield call$g(getPresetsApi);
@@ -7191,7 +7531,7 @@ function* fetchInitialViewPresetsSaga() {
7191
7531
  } catch (error) {
7192
7532
  yield put(viewPresetActions.errorInitialViewPresets({
7193
7533
  error: {
7194
- message: 'Error fetching map preset list',
7534
+ message: translateKeyOutsideComponents('workspace-mappreset-error-fetch'),
7195
7535
  type: ViewPresetType.PRESET_LIST
7196
7536
  }
7197
7537
  }));
@@ -7217,7 +7557,7 @@ function* fetchViewPresetsSaga({
7217
7557
  } catch (error) {
7218
7558
  yield put(viewPresetActions.errorViewPreset({
7219
7559
  error: {
7220
- message: 'Error fetching map preset list',
7560
+ message: translateKeyOutsideComponents('workspace-mappreset-error-fetch'),
7221
7561
  type: ViewPresetType.PRESET_LIST
7222
7562
  },
7223
7563
  panelId
@@ -7236,7 +7576,7 @@ function* saveViewPresetSaga({
7236
7576
  const presetsApi = yield call$g(getPresetsApi);
7237
7577
  yield call$g(presetsApi.saveViewPreset, viewPresetId, viewPreset);
7238
7578
  yield put(snackbarActions.openSnackbar({
7239
- message: getSnackbarMessage$1(PresetAction.SAVE, viewPreset.title)
7579
+ message: getSnackbarMessage(PresetAction.SAVE, viewPreset.title)
7240
7580
  }));
7241
7581
  yield put(viewPresetActions.savedViewPreset({
7242
7582
  panelId,
@@ -7245,7 +7585,7 @@ function* saveViewPresetSaga({
7245
7585
  } catch (error) {
7246
7586
  yield put(viewPresetActions.errorViewPreset({
7247
7587
  error: {
7248
- message: MESSAGE_SAVE_PRESET,
7588
+ message: translateKeyOutsideComponents('workspace-mappreset-error-save'),
7249
7589
  type: ViewPresetType.PRESET_DETAIL
7250
7590
  },
7251
7591
  panelId,
@@ -7301,7 +7641,7 @@ function* onSuccessViewPresetActionSaga({
7301
7641
  } = payload;
7302
7642
  try {
7303
7643
  yield put(snackbarActions.openSnackbar({
7304
- message: getSnackbarMessage$1(action, title)
7644
+ message: getSnackbarMessage(action, title)
7305
7645
  }));
7306
7646
  const activeMapPresetId = yield select(getViewPresetActiveId, panelId);
7307
7647
  // if active preset has been deleted, select the empty new preset
@@ -7317,7 +7657,7 @@ function* onSuccessViewPresetActionSaga({
7317
7657
  const viewPresetSearchQuery = yield select(getViewPresetListSearchQueryForView, panelId);
7318
7658
  yield call$g(fetchViewPresetsSaga, viewPresetActions.fetchViewPresets({
7319
7659
  panelId,
7320
- filterParams: constructFilterParams$1(viewPresetFilters, viewPresetSearchQuery)
7660
+ filterParams: constructFilterParams(viewPresetFilters, viewPresetSearchQuery)
7321
7661
  }));
7322
7662
  if (action !== PresetAction.EDIT) {
7323
7663
  yield put(viewPresetActions.setViewPresetHasChanges({
@@ -7370,159 +7710,77 @@ const workspaceModuleConfig = {
7370
7710
  sagas: [workspaceSaga, rootSaga$1, rootSaga]
7371
7711
  };
7372
7712
 
7373
- /* eslint-disable @typescript-eslint/ban-ts-comment */
7374
- const devToolsStateSanitizer = {
7375
- stateSanitizer: state => {
7376
- return produce(state, draftState => {
7377
- // @ts-ignore
7378
- if (state['services']) {
7379
- // @ts-ignore
7380
- Object.values(state['services'].byId).forEach(service => {
7381
- // @ts-ignore
7382
- draftState['services'].byId[service.id].layers =
7383
- // @ts-ignore
7384
- service.layers.length;
7385
- });
7386
- }
7387
- });
7388
- }
7389
- };
7390
- const store = createStore({
7391
- extensions: [getSagaExtension({})],
7392
- defaultMiddlewareOptions: {
7393
- serializableCheck: {
7394
- warnAfter: 128
7395
- },
7396
- immutableCheck: {
7397
- warnAfter: 128
7398
- }
7399
- },
7400
- devTools: devToolsStateSanitizer
7401
- });
7402
-
7403
- var en = {
7404
- "workspace-menu": "Workspace menu",
7405
- "workspace-new": "New workspace",
7406
- "workspace-my-presets": "My presets",
7407
- "workspace-system-presets": "System presets",
7408
- "workspace-all-button": "All",
7409
- "workspace-search": "Search",
7410
- "workspace-loading": "Loading",
7411
- "workspace-options": "Options",
7412
- "workspace-results": "results",
7413
- "workspace-delete": "Delete",
7414
- "workspce-clear": "Clear",
7415
- "workspace-save": "Save",
7416
- "workspace-save-as": "Save as",
7417
- "workspace-save-incl-viewpresets": "Save (incl. viewpresets)",
7418
- "workspace-edit": "Edit (name)",
7419
- "workspace-edit-both": "Edit (name and abstract)",
7420
- "geoweb-welcome": "Welcome to GeoWeb. Please use one of the presets to open up new views"
7421
- };
7422
- var fi = {
7423
- "workspace-menu": "ei käännetty",
7424
- "workspace-new": "ei käännetty",
7425
- "workspace-my-presets": "ei käännetty",
7426
- "workspace-system-presets": "ei käännetty",
7427
- "workspace-all-button": "ei käännetty",
7428
- "workspace-search": "ei käännetty",
7429
- "workspace-loading": "ei käännetty",
7430
- "workspace-options": "ei käännetty",
7431
- "workspace-results": "ei käännetty",
7432
- "workspace-delete": "ei käännetty",
7433
- "workspce-clear": "ei käännetty",
7434
- "workspace-save": "ei käännetty",
7435
- "workspace-save-as": "ei käännetty",
7436
- "workspace-save-incl-viewpresets": "ei käännetty",
7437
- "workspace-edit": "ei käännetty",
7438
- "workspace-edit-both": "ei käännetty",
7439
- "geoweb-welcome": "ei käännetty"
7440
- };
7441
- var no = {
7442
- "workspace-menu": "Arbeidsrommeny",
7443
- "workspace-new": "Nytt arbeidsrom",
7444
- "workspace-my-presets": "Mine presets",
7445
- "workspace-system-presets": "System presets",
7446
- "workspace-all-button": "Alle",
7447
- "workspace-search": "Søk",
7448
- "workspace-loading": "Laster",
7449
- "workspace-options": "Valg",
7450
- "workspace-results": "resultater",
7451
- "workspace-delete": "Slett",
7452
- "workspce-clear": "Tøm",
7453
- "workspace-save": "Lagre",
7454
- "workspace-save-as": "Lagre som",
7455
- "workspace-save-incl-viewpresets": "Lagre (inkl. viewpresets)",
7456
- "workspace-edit": "Endre (navn)",
7457
- "workspace-edit-both": "Endre (navn og abstrakt)",
7458
- "geoweb-welcome": "Velkommen til GeoWeb. Åpne et forhåndsvalg for å åpne nye vinduer"
7459
- };
7460
- var nl = {
7461
- "workspace-menu": "niet vertaald",
7462
- "workspace-new": "niet vertaald",
7463
- "workspace-my-presets": "niet vertaald",
7464
- "workspace-system-presets": "niet vertaald",
7465
- "workspace-all-button": "niet vertaald",
7466
- "workspce-search": "niet vertaald",
7467
- "workspace-loading": "niet vertaald",
7468
- "workspace-options": "niet vertaald",
7469
- "workspace-results": "niet vertaald",
7470
- "workspace-delete": "niet vertaald",
7471
- "workspce-clear": "niet vertaald",
7472
- "workspace-save": "niet vertaald",
7473
- "workspace-save-as": "niet vertaald",
7474
- "workspace-save-incl-viewpresets": "niet vertaald",
7475
- "workspace-edit": "niet vertaald",
7476
- "workspace-edit-both": "niet vertaald",
7477
- "geoweb-welcome": "niet vertaald"
7478
- };
7479
- var workspaceTranslations = {
7480
- en: en,
7481
- fi: fi,
7482
- no: no,
7483
- nl: nl
7713
+ /******************************************************************************
7714
+ Copyright (c) Microsoft Corporation.
7715
+
7716
+ Permission to use, copy, modify, and/or distribute this software for any
7717
+ purpose with or without fee is hereby granted.
7718
+
7719
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
7720
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
7721
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
7722
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
7723
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
7724
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
7725
+ PERFORMANCE OF THIS SOFTWARE.
7726
+ ***************************************************************************** */
7727
+
7728
+ function __rest(s, e) {
7729
+ var t = {};
7730
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
7731
+ t[p] = s[p];
7732
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7733
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7734
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
7735
+ t[p[i]] = s[p[i]];
7736
+ }
7737
+ return t;
7738
+ }
7739
+
7740
+ function __awaiter(thisArg, _arguments, P, generator) {
7741
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7742
+ return new (P || (P = Promise))(function (resolve, reject) {
7743
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7744
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7745
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7746
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
7747
+ });
7748
+ }
7749
+
7750
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
7751
+ var e = new Error(message);
7752
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
7484
7753
  };
7485
7754
 
7486
- /* *
7487
- * Licensed under the Apache License, Version 2.0 (the "License");
7488
- * you may not use this file except in compliance with the License.
7489
- * You may obtain a copy of the License at
7490
- *
7491
- * http://www.apache.org/licenses/LICENSE-2.0
7492
- *
7493
- * Unless required by applicable law or agreed to in writing, software
7494
- * distributed under the License is distributed on an "AS IS" BASIS,
7495
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7496
- * See the License for the specific language governing permissions and
7497
- * limitations under the License.
7498
- *
7499
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7500
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
7501
- * */
7502
- const WORKSPACE_NAMESPACE = 'workspace';
7503
- const initWorkspaceTestI18n = () => {
7504
- i18n.use(initReactI18next).init({
7505
- lng: 'en',
7506
- ns: WORKSPACE_NAMESPACE,
7507
- interpolation: {
7508
- escapeValue: false
7509
- },
7510
- resources: {
7511
- en: {
7512
- workspace: workspaceTranslations.en
7513
- },
7514
- fi: {
7515
- workspace: workspaceTranslations.fi
7516
- },
7517
- no: {
7518
- workspace: workspaceTranslations.no
7519
- },
7520
- nl: {
7521
- workspace: workspaceTranslations.nl
7755
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
7756
+ const devToolsStateSanitizer = {
7757
+ stateSanitizer: state => {
7758
+ return produce(state, draftState => {
7759
+ // @ts-ignore
7760
+ if (state['services']) {
7761
+ // @ts-ignore
7762
+ Object.values(state['services'].byId).forEach(service => {
7763
+ // @ts-ignore
7764
+ draftState['services'].byId[service.id].layers =
7765
+ // @ts-ignore
7766
+ service.layers.length;
7767
+ });
7522
7768
  }
7523
- }
7524
- });
7769
+ });
7770
+ }
7525
7771
  };
7772
+ const store = createStore({
7773
+ extensions: [getSagaExtension({})],
7774
+ defaultMiddlewareOptions: {
7775
+ serializableCheck: {
7776
+ warnAfter: 128
7777
+ },
7778
+ immutableCheck: {
7779
+ warnAfter: 128
7780
+ }
7781
+ },
7782
+ devTools: devToolsStateSanitizer
7783
+ });
7526
7784
 
7527
7785
  const WorkspaceThemeProvider = ({
7528
7786
  children,
@@ -7536,6 +7794,10 @@ const WorkspaceWrapperProvider = withEggs([...coreModuleConfig, timeSeriesModule
7536
7794
  }) => ( /*#__PURE__*/React__default.createElement(WorkspaceThemeProvider, {
7537
7795
  theme: theme
7538
7796
  }, children)));
7797
+ const DemoWrapper = _a => {
7798
+ var props = __rest(_a, []);
7799
+ return /*#__PURE__*/React__default.createElement(WorkspaceI18nProvider, null, /*#__PURE__*/React__default.createElement(WorkspaceThemeProvider, Object.assign({}, props)));
7800
+ };
7539
7801
  const defaultAuthConfig = {
7540
7802
  isLoggedIn: true,
7541
7803
  auth: {
@@ -7563,24 +7825,9 @@ const WorkspaceWrapperProviderWithStore = ({
7563
7825
  }, /*#__PURE__*/React__default.createElement(WorkspaceWrapperProvider, {
7564
7826
  theme: theme
7565
7827
  }, /*#__PURE__*/React__default.createElement(SnackbarWrapperConnect, null, /*#__PURE__*/React__default.createElement(ConfirmationServiceProvider, null, children))))))));
7566
- const WorkspaceTranslationsWrapper = ({
7567
- children
7568
- }) => {
7569
- const {
7570
- i18n
7571
- } = useTranslation();
7572
- React__default.useEffect(() => {
7573
- i18n.addResourceBundle('en', WORKSPACE_NAMESPACE, workspaceTranslations.en);
7574
- i18n.addResourceBundle('fi', WORKSPACE_NAMESPACE, workspaceTranslations.fi);
7575
- i18n.addResourceBundle('no', WORKSPACE_NAMESPACE, workspaceTranslations.no);
7576
- i18n.addResourceBundle('nl', WORKSPACE_NAMESPACE, workspaceTranslations.nl);
7577
- }, [i18n]);
7578
- return children;
7579
- };
7580
7828
  const WorkspaceI18nProvider = ({
7581
7829
  children
7582
7830
  }) => {
7583
- initWorkspaceTestI18n();
7584
7831
  return /*#__PURE__*/React__default.createElement(I18nextProvider, {
7585
7832
  i18n: i18n
7586
7833
  }, children);
@@ -7617,48 +7864,6 @@ const WorkspaceModuleProvider = ({
7617
7864
  }, children);
7618
7865
  };
7619
7866
 
7620
- /******************************************************************************
7621
- Copyright (c) Microsoft Corporation.
7622
-
7623
- Permission to use, copy, modify, and/or distribute this software for any
7624
- purpose with or without fee is hereby granted.
7625
-
7626
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
7627
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
7628
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
7629
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
7630
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
7631
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
7632
- PERFORMANCE OF THIS SOFTWARE.
7633
- ***************************************************************************** */
7634
-
7635
- function __rest(s, e) {
7636
- var t = {};
7637
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
7638
- t[p] = s[p];
7639
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7640
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7641
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
7642
- t[p[i]] = s[p[i]];
7643
- }
7644
- return t;
7645
- }
7646
-
7647
- function __awaiter(thisArg, _arguments, P, generator) {
7648
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7649
- return new (P || (P = Promise))(function (resolve, reject) {
7650
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7651
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7652
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7653
- step((generator = generator.apply(thisArg, _arguments || [])).next());
7654
- });
7655
- }
7656
-
7657
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
7658
- var e = new Error(message);
7659
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
7660
- };
7661
-
7662
7867
  // takes a component and connects module methods with workspace store
7663
7868
  const ComponentsLookUpWrapper = _a => {
7664
7869
  var {
@@ -7809,6 +8014,9 @@ const WorkspaceControls = ({
7809
8014
  const {
7810
8015
  mosaicActions: actions
7811
8016
  } = React.useContext(MosaicContext);
8017
+ const {
8018
+ t
8019
+ } = useWorkspaceTranslation();
7812
8020
  const mosaicNode = useSelector(store => getMosaicNode(store));
7813
8021
  const [stateAfterExpand, setStateAfterExpand] = React.useState();
7814
8022
  const [stateBeforeExpand, setStateBeforeExpand] = React.useState(mosaicNode);
@@ -7828,9 +8036,9 @@ const WorkspaceControls = ({
7828
8036
  const onClose = () => __awaiter(void 0, void 0, void 0, function* () {
7829
8037
  if (_shouldPreventCloseView) {
7830
8038
  yield confirmDialog({
7831
- title: 'Whoops',
7832
- description: 'Are you sure you want to close this window? All changes will be lost.',
7833
- confirmLabel: 'Close window'
8039
+ title: t('workspace-control-close-message-title'),
8040
+ description: t('workspace-control-close-message-description'),
8041
+ confirmLabel: t('workspace-control-close')
7834
8042
  });
7835
8043
  actions.remove(path);
7836
8044
  } else {
@@ -7849,7 +8057,7 @@ const WorkspaceControls = ({
7849
8057
  second: newNode
7850
8058
  });
7851
8059
  },
7852
- tooltipTitle: "Split window horizontally"
8060
+ tooltipTitle: t('workspace-control-split-horizontal')
7853
8061
  }, /*#__PURE__*/React.createElement(SplitVertical, null)), /*#__PURE__*/React.createElement(CustomIconButton, {
7854
8062
  "data-testid": "split-vertical-btn",
7855
8063
  sx: buttonStyle,
@@ -7862,7 +8070,7 @@ const WorkspaceControls = ({
7862
8070
  second: newNode
7863
8071
  });
7864
8072
  },
7865
- tooltipTitle: "Split window vertically"
8073
+ tooltipTitle: t('workspace-control-split-vertical')
7866
8074
  }, /*#__PURE__*/React.createElement(SplitHorizontal, null)), !enableUnexpand || isString(mosaicNode) ? ( /*#__PURE__*/React.createElement(CustomIconButton, {
7867
8075
  "data-testid": "expand-btn",
7868
8076
  sx: buttonStyle,
@@ -7871,7 +8079,7 @@ const WorkspaceControls = ({
7871
8079
  setEnableUnexpand(true);
7872
8080
  actions.expand(path, 70);
7873
8081
  },
7874
- tooltipTitle: "Expand window"
8082
+ tooltipTitle: t('workspace-control-expand')
7875
8083
  }, /*#__PURE__*/React.createElement(Expand, null))) : ( /*#__PURE__*/React.createElement(CustomIconButton, {
7876
8084
  "data-testid": "unexpand-btn",
7877
8085
  sx: buttonStyle,
@@ -7879,12 +8087,12 @@ const WorkspaceControls = ({
7879
8087
  const stateBeforeExpandCopy = isString(stateBeforeExpand) ? stateBeforeExpand : Object.assign({}, stateBeforeExpand);
7880
8088
  actions.replaceWith([], stateBeforeExpandCopy);
7881
8089
  },
7882
- tooltipTitle: "Unexpand window"
8090
+ tooltipTitle: t('workspace-control-unexpand')
7883
8091
  }, /*#__PURE__*/React.createElement(UnExpand, null))), /*#__PURE__*/React.createElement(CustomIconButton, {
7884
8092
  "data-testid": "close-btn",
7885
8093
  sx: buttonStyle,
7886
8094
  onClick: onClose,
7887
- tooltipTitle: "Close window",
8095
+ tooltipTitle: t('workspace-control-close'),
7888
8096
  id: "close-window-button"
7889
8097
  }, /*#__PURE__*/React.createElement(Close, null)));
7890
8098
  };
@@ -7910,7 +8118,7 @@ const ViewLoading = ({
7910
8118
  }) => {
7911
8119
  const {
7912
8120
  t
7913
- } = useTranslation(WORKSPACE_NAMESPACE);
8121
+ } = useWorkspaceTranslation();
7914
8122
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LinearProgress, {
7915
8123
  "data-testid": "loading-bar",
7916
8124
  color: "secondary",
@@ -7930,6 +8138,9 @@ const ViewError = ({
7930
8138
  mosaicNodeId
7931
8139
  }) => {
7932
8140
  const dispatch = useDispatch();
8141
+ const {
8142
+ t
8143
+ } = useWorkspaceTranslation();
7933
8144
  const fetchWorkspaceViewPreset = React.useCallback(() => {
7934
8145
  dispatch(workspaceActions.fetchWorkspaceViewPreset({
7935
8146
  viewPresetId,
@@ -7937,10 +8148,12 @@ const ViewError = ({
7937
8148
  }));
7938
8149
  }, [dispatch, viewPresetId, mosaicNodeId]);
7939
8150
  return /*#__PURE__*/React.createElement(AlertBanner, {
7940
- title: `Failed to fetch view ${viewPresetId}`,
8151
+ title: t('workspace-viewpresets-fail-fetch', {
8152
+ VIEWPRESET_ID: viewPresetId
8153
+ }),
7941
8154
  shouldClose: true,
7942
8155
  actionButtonProps: {
7943
- title: 'Try again',
8156
+ title: t('workspace-retry'),
7944
8157
  onClick: fetchWorkspaceViewPreset
7945
8158
  }
7946
8159
  });
@@ -8064,18 +8277,21 @@ const WorkspaceSelectListRow = ({
8064
8277
  searchQuery: _searchQuery = '',
8065
8278
  testIdPrefix: _testIdPrefix = 'workspace'
8066
8279
  }) => {
8280
+ const {
8281
+ t
8282
+ } = useWorkspaceTranslation();
8067
8283
  const onDuplicate = () => {
8068
8284
  onClickWorkspacePresetOption(workspacePreset.id, WorkspacePresetAction.DUPLICATE, workspacePreset);
8069
8285
  };
8070
8286
  const onEdit = () => {
8071
8287
  onClickWorkspacePresetOption(workspacePreset.id, WorkspacePresetAction.EDIT, workspacePreset);
8072
8288
  };
8073
- const editTitle = _testIdPrefix === 'viewpreset' ? 'Edit (name)' : 'Edit (name and abstract)';
8289
+ const editTitle = _testIdPrefix === 'viewpreset' ? 'workspace-edit' : 'workspace-edit-both';
8074
8290
  const menuItems = [{
8075
- text: 'Duplicate',
8291
+ text: t('workspace-duplicate'),
8076
8292
  action: onDuplicate
8077
8293
  }, ...(workspacePreset.scope === 'user' ? [{
8078
- text: editTitle,
8294
+ text: t(editTitle),
8079
8295
  action: onEdit
8080
8296
  }] : [])];
8081
8297
  return /*#__PURE__*/React__default.createElement(ListItem, {
@@ -8136,10 +8352,10 @@ const WorkspaceSelectListRow = ({
8136
8352
  buttonTestId: `${_testIdPrefix}-listOptionsButton`,
8137
8353
  menuPosition: "right",
8138
8354
  menuItems: menuItems,
8139
- menuTitle: "Options",
8355
+ menuTitle: t('workspace-options'),
8140
8356
  isDefaultOpen: _isOptionsMenuOpen
8141
8357
  }), workspacePreset.scope === 'user' && ( /*#__PURE__*/React__default.createElement(CustomIconButton, {
8142
- tooltipTitle: "Delete preset",
8358
+ tooltipTitle: t('workspace-delete-tooltip'),
8143
8359
  onClick: event => {
8144
8360
  event.stopPropagation();
8145
8361
  onClickWorkspacePresetOption(workspacePreset.id, WorkspacePresetAction.DELETE, workspacePreset);
@@ -8214,7 +8430,7 @@ const FilterList = ({
8214
8430
  }) => {
8215
8431
  const {
8216
8432
  t
8217
- } = useTranslation(WORKSPACE_NAMESPACE);
8433
+ } = useWorkspaceTranslation();
8218
8434
  return /*#__PURE__*/React.createElement(Stack, {
8219
8435
  direction: "row",
8220
8436
  spacing: 1,
@@ -8263,7 +8479,7 @@ const SearchField = ({
8263
8479
  const [localValue, setLocalValue] = React.useState(_value);
8264
8480
  const {
8265
8481
  t
8266
- } = useTranslation(WORKSPACE_NAMESPACE);
8482
+ } = useWorkspaceTranslation();
8267
8483
  const label = t('workspace-search');
8268
8484
  // eslint-disable-next-line react-hooks/exhaustive-deps
8269
8485
  const handleValueChangeDebounced = React.useCallback(debounce$1(valueChanged, DEBOUNCE_TIMEOUT), []);
@@ -8338,13 +8554,6 @@ const WorkspaceFilter = ({
8338
8554
  })));
8339
8555
  };
8340
8556
 
8341
- const emptyWorkspaceListItem = {
8342
- id: emptyMapWorkspace.id,
8343
- title: emptyMapWorkspace.title,
8344
- scope: emptyMapWorkspace.scope,
8345
- viewType: emptyMapWorkspace.viewType,
8346
- abstract: emptyMapWorkspace.abstract
8347
- };
8348
8557
  const MIN_HEIGHT_SCROLLABLE_LIST = 88; // Slightly less than 2 rows
8349
8558
  const LIST_PADDING_TOP = 8;
8350
8559
  const DEFAULT_RESULTS_HEIGHT = 22;
@@ -8358,12 +8567,12 @@ const WorkspaceSelectList = ({
8358
8567
  hideNewWorkspace,
8359
8568
  isLoggedIn,
8360
8569
  searchQuery,
8361
- newPreset: _newPreset = emptyWorkspaceListItem,
8570
+ newPreset: _newPreset = getEmptyWorkspaceListItem(),
8362
8571
  testIdPrefix: _testIdPrefix = 'workspace'
8363
8572
  }) => {
8364
8573
  const {
8365
8574
  t
8366
- } = useTranslation(WORKSPACE_NAMESPACE);
8575
+ } = useWorkspaceTranslation();
8367
8576
  const items = React.useMemo(() => !hideNewWorkspace ? [_newPreset, ...workspacePresets] : workspacePresets, [hideNewWorkspace, _newPreset, workspacePresets]);
8368
8577
  return /*#__PURE__*/React.createElement(Box, {
8369
8578
  "data-testid": `${_testIdPrefix}-selectList`,
@@ -8408,11 +8617,12 @@ const WorkspaceSelectList = ({
8408
8617
  })))));
8409
8618
  };
8410
8619
 
8411
- const ERROR_TITLE = 'View presets not available';
8412
- const ERROR_RETRY = 'Try again';
8413
8620
  const ViewPresetMenuListConnect = ({
8414
8621
  panelId
8415
8622
  }) => {
8623
+ const {
8624
+ t
8625
+ } = useWorkspaceTranslation();
8416
8626
  const viewPresets = useSelector(store => getFilteredViewPresetListForView(store, panelId));
8417
8627
  const activeViewPresetId = useSelector(store => getViewPresetActiveId(store, panelId));
8418
8628
  const currentMapPreset = useSelector(store => mapSelectors.getMapPreset(store, panelId));
@@ -8448,7 +8658,7 @@ const ViewPresetMenuListConnect = ({
8448
8658
  }));
8449
8659
  }, [dispatch, panelId]);
8450
8660
  const fetchViewPresets = React.useCallback(() => {
8451
- const filterParams = constructFilterParams$1(viewPresetListFilters, viewPresetListSearchQuery);
8661
+ const filterParams = constructFilterParams(viewPresetListFilters, viewPresetListSearchQuery);
8452
8662
  dispatch(viewPresetActions.fetchViewPresets({
8453
8663
  panelId,
8454
8664
  filterParams
@@ -8459,7 +8669,7 @@ const ViewPresetMenuListConnect = ({
8459
8669
  case WorkspacePresetAction.DUPLICATE:
8460
8670
  {
8461
8671
  openViewPresetsDialog({
8462
- title: MAPPRESET_DIALOG_TITLE_SAVE_AS,
8672
+ title: t('workspace-mappreset-save-as'),
8463
8673
  action: PresetAction.SAVE_AS,
8464
8674
  viewPresetId: presetId,
8465
8675
  panelId,
@@ -8477,7 +8687,7 @@ const ViewPresetMenuListConnect = ({
8477
8687
  {
8478
8688
  const presetTitle = (preset === null || preset === void 0 ? void 0 : preset.title) || '';
8479
8689
  openViewPresetsDialog({
8480
- title: MAPPRESET_DIALOG_TITLE_EDIT,
8690
+ title: t('workspace-mappreset-dialog-title-edit'),
8481
8691
  action: PresetAction.EDIT,
8482
8692
  panelId,
8483
8693
  viewPresetId: presetId,
@@ -8493,7 +8703,7 @@ const ViewPresetMenuListConnect = ({
8493
8703
  case WorkspacePresetAction.DELETE:
8494
8704
  {
8495
8705
  openViewPresetsDialog({
8496
- title: MAPPRESET_DIALOG_TITLE_DELETE,
8706
+ title: t('workspace-mappreset-dialog-title-delete'),
8497
8707
  action: PresetAction.DELETE,
8498
8708
  viewPresetId: presetId,
8499
8709
  panelId,
@@ -8548,9 +8758,9 @@ const ViewPresetMenuListConnect = ({
8548
8758
  top: 0
8549
8759
  }
8550
8760
  })), !isViewPresetsListFetching && errorViewPresetsList && ( /*#__PURE__*/React.createElement(AlertBanner, {
8551
- title: ERROR_TITLE,
8761
+ title: t('workspace-viewpresets-error'),
8552
8762
  actionButtonProps: {
8553
- title: ERROR_RETRY,
8763
+ title: t('workspace-retry'),
8554
8764
  onClick: fetchViewPresets
8555
8765
  }
8556
8766
  })), /*#__PURE__*/React.createElement(Box, {
@@ -8569,9 +8779,8 @@ const ViewPresetMenuListConnect = ({
8569
8779
  currentSelectedId: activeViewPresetId || undefined,
8570
8780
  onClickPreset: selectViewPreset,
8571
8781
  onClickWorkspacePresetOption: onClickViewPresetOption,
8572
- newPreset: Object.assign(Object.assign({}, emptyWorkspaceListItem), {
8573
- id: undefined,
8574
- title: MAPPRESET_ACTIVE_TITLE
8782
+ newPreset: Object.assign(Object.assign({}, getEmptyWorkspaceListItem()), {
8783
+ title: t('workspace-mappreset-new')
8575
8784
  }),
8576
8785
  isLoggedIn: isLoggedIn,
8577
8786
  hideNewWorkspace: shouldHideNewWorkspace,
@@ -8596,12 +8805,14 @@ const ViewPresetMenuListConnect = ({
8596
8805
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
8597
8806
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
8598
8807
  * */
8599
- const DIALOG_TITLE = 'View presets menu';
8600
8808
  const ViewPresetMenu = ({
8601
8809
  hideBackdrop: _hideBackdrop = false,
8602
8810
  closeMenu,
8603
8811
  panelId
8604
8812
  }) => {
8813
+ const {
8814
+ t
8815
+ } = useWorkspaceTranslation();
8605
8816
  const toolContainer = /*#__PURE__*/React__default.createElement(ToolContainer, {
8606
8817
  style: {
8607
8818
  width: 320,
@@ -8609,7 +8820,7 @@ const ViewPresetMenu = ({
8609
8820
  position: 'absolute',
8610
8821
  top: '16px'
8611
8822
  },
8612
- title: DIALOG_TITLE,
8823
+ title: t('workspace-viewpreset-menu'),
8613
8824
  onClose: closeMenu,
8614
8825
  onClick: event => {
8615
8826
  event.stopPropagation();
@@ -8649,7 +8860,7 @@ const WorkspaceOptionsNoMemo = ({
8649
8860
  }) => {
8650
8861
  const {
8651
8862
  t
8652
- } = useTranslation(WORKSPACE_NAMESPACE);
8863
+ } = useWorkspaceTranslation();
8653
8864
  const [anchorEl, setAnchorEl] = React.useState(null);
8654
8865
  const isOpen = Boolean(anchorEl);
8655
8866
  const handleClick = event => {
@@ -8737,8 +8948,7 @@ const WorkspaceOptionsNoMemo = ({
8737
8948
  },
8738
8949
  sx: {
8739
8950
  '& .MuiMenu-list': {
8740
- padding: 0,
8741
- width: 200
8951
+ padding: 0
8742
8952
  },
8743
8953
  '& .MuiMenuItem-root': {
8744
8954
  fontSize: 16
@@ -8800,18 +9010,6 @@ const LoadingIndicatorConnect = ({
8800
9010
  }));
8801
9011
  };
8802
9012
 
8803
- const VIEW_PRESET_MENU_TOOLTIP = 'View presets menu';
8804
- const NEW_TITLE_SUFFIX = '(not saved)';
8805
- const EXISTING_TITLE_SUFFIX = '(modified)';
8806
- const getPresetTitle = (title, hasChanges, isNew) => {
8807
- if (hasChanges && isNew) {
8808
- return `${title} ${NEW_TITLE_SUFFIX}`;
8809
- }
8810
- if (hasChanges && !isNew) {
8811
- return `${title} ${EXISTING_TITLE_SUFFIX}`;
8812
- }
8813
- return title;
8814
- };
8815
9013
  const customIconStyles = (theme, isViewPresetDialogOpen) => {
8816
9014
  return {
8817
9015
  marginLeft: -1,
@@ -8834,6 +9032,9 @@ const WorkspaceViewTitleConnectNoMemo = ({
8834
9032
  const dispatch = useDispatch();
8835
9033
  const theme = useTheme();
8836
9034
  const store = useStore();
9035
+ const {
9036
+ t
9037
+ } = useWorkspaceTranslation();
8837
9038
  const workspaceView = useSelector(store => {
8838
9039
  var _a;
8839
9040
  const {
@@ -8848,8 +9049,15 @@ const WorkspaceViewTitleConnectNoMemo = ({
8848
9049
  const hasMapPresetChanges = useSelector(store => getViewPresetHasChanges(store, panelId));
8849
9050
  const activeMapPresetId = useSelector(store => getViewPresetActiveId(store, panelId));
8850
9051
  const relatedSyncGroupIds = useSelector(store => syncGroupsSelectors.getAllTargetGroupsForSource(store, panelId));
9052
+ const getPresetTitle = (title, hasChanges, isNew) => {
9053
+ if (!hasChanges) {
9054
+ return title;
9055
+ }
9056
+ const suffix = isNew ? t('workspace-modified-existing') : t('workspace-modified-new');
9057
+ return `${title} (${suffix})`;
9058
+ };
8851
9059
  const isNewActive = activeMapPresetId === '';
8852
- const title = workspaceView.title || MAPPRESET_ACTIVE_TITLE;
9060
+ const title = workspaceView.title || t('workspace-mappreset-new');
8853
9061
  const viewScope = workspaceView.scope;
8854
9062
  const fullTitle = getPresetTitle(title, hasMapPresetChanges, isNewActive);
8855
9063
  const openViewPresetsDialog = React.useCallback(viewPresetDialogOptions => {
@@ -8872,7 +9080,7 @@ const WorkspaceViewTitleConnectNoMemo = ({
8872
9080
  }, [activeMapPresetId, dispatch, panelId, relatedSyncGroupIds, store, title]);
8873
9081
  const onDelete = React.useCallback(() => {
8874
9082
  openViewPresetsDialog({
8875
- title: MAPPRESET_DIALOG_TITLE_DELETE,
9083
+ title: t('workspace-mappreset-dialog-title-delete'),
8876
9084
  action: PresetAction.DELETE,
8877
9085
  viewPresetId: activeMapPresetId,
8878
9086
  panelId,
@@ -8880,11 +9088,11 @@ const WorkspaceViewTitleConnectNoMemo = ({
8880
9088
  title
8881
9089
  }
8882
9090
  });
8883
- }, [activeMapPresetId, openViewPresetsDialog, panelId, title]);
9091
+ }, [activeMapPresetId, openViewPresetsDialog, panelId, title, t]);
8884
9092
  const onSaveAs = React.useCallback(() => {
8885
9093
  const formTitle = activeMapPresetId ? title : '';
8886
9094
  openViewPresetsDialog({
8887
- title: MAPPRESET_DIALOG_TITLE_SAVE_AS,
9095
+ title: t('workspace-mappreset-save-as'),
8888
9096
  action: PresetAction.SAVE_AS,
8889
9097
  viewPresetId: activeMapPresetId,
8890
9098
  panelId,
@@ -8896,11 +9104,11 @@ const WorkspaceViewTitleConnectNoMemo = ({
8896
9104
  }
8897
9105
  }
8898
9106
  });
8899
- }, [activeMapPresetId, openViewPresetsDialog, panelId, relatedSyncGroupIds, store, title]);
9107
+ }, [activeMapPresetId, openViewPresetsDialog, panelId, relatedSyncGroupIds, store, title, t]);
8900
9108
  const onEdit = React.useCallback(() => {
8901
9109
  const formTitle = activeMapPresetId ? title : '';
8902
9110
  openViewPresetsDialog({
8903
- title: MAPPRESET_DIALOG_TITLE_EDIT,
9111
+ title: t('workspace-mappreset-dialog-title-edit'),
8904
9112
  action: PresetAction.EDIT,
8905
9113
  panelId,
8906
9114
  viewPresetId: activeMapPresetId,
@@ -8912,7 +9120,7 @@ const WorkspaceViewTitleConnectNoMemo = ({
8912
9120
  }
8913
9121
  }
8914
9122
  });
8915
- }, [activeMapPresetId, openViewPresetsDialog, panelId, relatedSyncGroupIds, store, title]);
9123
+ }, [activeMapPresetId, openViewPresetsDialog, panelId, relatedSyncGroupIds, store, title, t]);
8916
9124
  const toggleViewPresetDialog = React.useCallback(({
8917
9125
  panelId,
8918
9126
  isViewPresetDialogOpen
@@ -8936,7 +9144,7 @@ const WorkspaceViewTitleConnectNoMemo = ({
8936
9144
  sx: style,
8937
9145
  variant: "tool",
8938
9146
  onClick: onClickOpenViewPreset,
8939
- tooltipTitle: VIEW_PRESET_MENU_TOOLTIP,
9147
+ tooltipTitle: t('workspace-viewpreset-menu'),
8940
9148
  isSelected: isViewPresetDialogOpen
8941
9149
  }, presetIcon), /*#__PURE__*/React.createElement(WorkspaceOptions, {
8942
9150
  panelId: panelId,
@@ -9109,7 +9317,7 @@ const WorkspaceView = ({
9109
9317
  }) => {
9110
9318
  const {
9111
9319
  t
9112
- } = useTranslation(WORKSPACE_NAMESPACE);
9320
+ } = useWorkspaceTranslation();
9113
9321
  const EmptyView = !_isWorkspaceLoading && ( /*#__PURE__*/React.createElement(Box, {
9114
9322
  sx: {
9115
9323
  backgroundColor: 'geowebColors.background.surface',
@@ -9295,7 +9503,7 @@ const WorkspaceSelectListConnect = () => {
9295
9503
  } = useAuthenticationContext();
9296
9504
  const dispatch = useDispatch();
9297
9505
  const fetchWorkspaceList = React.useCallback(() => {
9298
- const filterParams = constructFilterParams(workspaceListFilters, workspaceSearchQuery);
9506
+ const filterParams = constructFilterParams$1(workspaceListFilters, workspaceSearchQuery);
9299
9507
  dispatch(workspaceListActions.fetchWorkspaceList(filterParams));
9300
9508
  }, [dispatch, workspaceListFilters, workspaceSearchQuery]);
9301
9509
  const fetchWorkspace = React.useCallback(workspaceId => {
@@ -9402,6 +9610,9 @@ const WorkspaceSelectListConnect = () => {
9402
9610
  };
9403
9611
  const isAllSelected = workspaceListFilters.every(filter => filter.isSelected);
9404
9612
  const shouldHideNewWorkspace = !isAllSelected || workspaceSearchQuery.length > 0;
9613
+ const {
9614
+ t
9615
+ } = useWorkspaceTranslation();
9405
9616
  return /*#__PURE__*/React.createElement("div", {
9406
9617
  "data-testid": "workspace-selectlist-connect",
9407
9618
  style: {
@@ -9421,12 +9632,12 @@ const WorkspaceSelectListConnect = () => {
9421
9632
  whiteSpace: 'normal'
9422
9633
  }
9423
9634
  }, /*#__PURE__*/React.createElement(AlertBanner, Object.assign({
9424
- title: "Failed to fetch workspace list",
9635
+ title: t('workspace-error-fetch'),
9425
9636
  info: error.message,
9426
9637
  shouldClose: true
9427
9638
  }, error.type === WorkspaceListErrorType.GENERIC && {
9428
9639
  actionButtonProps: {
9429
- title: 'Try again',
9640
+ title: t('workspace-retry'),
9430
9641
  onClick: () => fetchWorkspaceList()
9431
9642
  }
9432
9643
  })))), /*#__PURE__*/React.createElement(Box, {
@@ -9473,7 +9684,7 @@ const WorkspaceMenu = ({
9473
9684
  }) => {
9474
9685
  const {
9475
9686
  t
9476
- } = useTranslation(WORKSPACE_NAMESPACE);
9687
+ } = useWorkspaceTranslation();
9477
9688
  const toolContainer = /*#__PURE__*/React__default.createElement(ToolContainer, {
9478
9689
  style: {
9479
9690
  width: 320,
@@ -9526,7 +9737,7 @@ const WorkspaceMenuButton = ({
9526
9737
  };
9527
9738
  const {
9528
9739
  t
9529
- } = useTranslation(WORKSPACE_NAMESPACE);
9740
+ } = useWorkspaceTranslation();
9530
9741
  const tooltipTitle = t('workspace-menu');
9531
9742
  return /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(Box, {
9532
9743
  sx: {
@@ -9599,21 +9810,15 @@ const WorkspaceMenuButtonConnect = () => {
9599
9810
  }));
9600
9811
  };
9601
9812
 
9602
- const TITLE_SUFFIX_NEW_WORKSPACE = 'modified';
9603
- const TITLE_SUFFIX_EXISTING_WORKSPACE = 'not saved';
9604
- const getTitle = (title, hasChanges, workspaceId) => {
9605
- if (!hasChanges) {
9606
- return title;
9607
- }
9608
- const suffix = workspaceId ? TITLE_SUFFIX_NEW_WORKSPACE : TITLE_SUFFIX_EXISTING_WORKSPACE;
9609
- return `${title} (${suffix})`;
9610
- };
9611
9813
  const WorkspaceOptionsConnect = ({
9612
9814
  title,
9613
9815
  activeTab,
9614
9816
  workspaceId
9615
9817
  }) => {
9616
9818
  const dispatch = useDispatch();
9819
+ const {
9820
+ t
9821
+ } = useWorkspaceTranslation();
9617
9822
  const {
9618
9823
  isLoggedIn
9619
9824
  } = useAuthenticationContext();
@@ -9661,6 +9866,13 @@ const WorkspaceOptionsConnect = ({
9661
9866
  formValues: Object.assign({}, workspaceData)
9662
9867
  });
9663
9868
  };
9869
+ const getTitle = (title, hasChanges, workspaceId) => {
9870
+ if (!hasChanges) {
9871
+ return title;
9872
+ }
9873
+ const suffix = workspaceId ? t('workspace-modified-new') : t('workspace-modified-existing');
9874
+ return `${title} (${suffix})`;
9875
+ };
9664
9876
  const fullTitle = getTitle(title, hasChanges, workspaceId);
9665
9877
  return /*#__PURE__*/React.createElement(WorkspaceOptions, {
9666
9878
  hasChanges: hasChanges,
@@ -9727,6 +9939,9 @@ const WorkspacePresetsForm = ({
9727
9939
  action,
9728
9940
  formValues
9729
9941
  }) => {
9942
+ const {
9943
+ t
9944
+ } = useWorkspaceTranslation();
9730
9945
  const titleField = 'title';
9731
9946
  const _a = Object.assign(Object.assign({}, emptyWorkspacePreset), formValues),
9732
9947
  {
@@ -9765,7 +9980,7 @@ const WorkspacePresetsForm = ({
9765
9980
  }
9766
9981
  }, /*#__PURE__*/React__default.createElement(ReactHookFormTextField, {
9767
9982
  name: "title",
9768
- label: "Name",
9983
+ label: t('workspace-dialog-name'),
9769
9984
  rules: {
9770
9985
  required: true,
9771
9986
  validate: {
@@ -9776,7 +9991,7 @@ const WorkspacePresetsForm = ({
9776
9991
  defaultValue: title
9777
9992
  })), /*#__PURE__*/React__default.createElement(ReactHookFormTextField, {
9778
9993
  name: "abstract",
9779
- label: "Abstract",
9994
+ label: t('workspace-dialog-abstract'),
9780
9995
  rules: {
9781
9996
  required: false
9782
9997
  },
@@ -9794,56 +10009,15 @@ const WorkspacePresetsForm = ({
9794
10009
  "data-testid": name
9795
10010
  }))))), action === WorkspacePresetAction.DELETE && ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Typography, {
9796
10011
  variant: "body1"
9797
- }, `Are you sure to want to delete the "${title}" workspace preset?`), /*#__PURE__*/React__default.createElement(ReactHookFormHiddenInput, {
10012
+ }, t('workspace-dialog-confirm-delete-message', {
10013
+ TITLE: title
10014
+ })), /*#__PURE__*/React__default.createElement(ReactHookFormHiddenInput, {
9798
10015
  key: "title",
9799
10016
  name: "title",
9800
10017
  defaultValue: title
9801
10018
  }))));
9802
10019
  };
9803
10020
 
9804
- const DIALOG_TITLE_SAVE_AS = 'Save as';
9805
- const DIALOG_TITLE_SAVE_ALL = 'Save (incl. viewpresets)';
9806
- const DIALOG_TITLE_DELETE = 'Delete workspace';
9807
- const DIALOG_TITLE_DUPLICATE = 'Duplicate';
9808
- const DIALOG_BUTTON_SAVE = 'Save';
9809
- const DIALOG_BUTTON_DELETE = 'Delete';
9810
- const DIALOG_BUTTON_EDIT = 'Edit (name and abstract)';
9811
- const getDialogTitle = action => {
9812
- switch (action) {
9813
- case WorkspacePresetAction.DELETE:
9814
- {
9815
- return DIALOG_TITLE_DELETE;
9816
- }
9817
- case WorkspacePresetAction.DUPLICATE:
9818
- {
9819
- return DIALOG_TITLE_DUPLICATE;
9820
- }
9821
- case WorkspacePresetAction.SAVE_ALL:
9822
- {
9823
- return DIALOG_TITLE_SAVE_ALL;
9824
- }
9825
- case WorkspacePresetAction.EDIT:
9826
- {
9827
- return DIALOG_BUTTON_EDIT;
9828
- }
9829
- default:
9830
- {
9831
- return DIALOG_TITLE_SAVE_AS;
9832
- }
9833
- }
9834
- };
9835
- const getConfirmLabel$1 = action => {
9836
- switch (action) {
9837
- case WorkspacePresetAction.DELETE:
9838
- {
9839
- return DIALOG_BUTTON_DELETE;
9840
- }
9841
- default:
9842
- {
9843
- return DIALOG_BUTTON_SAVE;
9844
- }
9845
- }
9846
- };
9847
10021
  const WorkspacePresetsFormDialog = ({
9848
10022
  isOpen,
9849
10023
  action,
@@ -9858,10 +10032,49 @@ const WorkspacePresetsFormDialog = ({
9858
10032
  handleSubmit: handleFormSubmit,
9859
10033
  reset
9860
10034
  } = useFormContext();
10035
+ const {
10036
+ t
10037
+ } = useWorkspaceTranslation();
9861
10038
  React__default.useEffect(() => {
9862
10039
  reset(formValues);
9863
10040
  }, [formValues, reset]);
9864
- const confirmLabel = getConfirmLabel$1(action);
10041
+ const getConfirmLabel = action => {
10042
+ switch (action) {
10043
+ case WorkspacePresetAction.DELETE:
10044
+ {
10045
+ return t('workspace-delete');
10046
+ }
10047
+ default:
10048
+ {
10049
+ return t('workspace-save');
10050
+ }
10051
+ }
10052
+ };
10053
+ const getDialogTitle = action => {
10054
+ switch (action) {
10055
+ case WorkspacePresetAction.DELETE:
10056
+ {
10057
+ return t('workspace-dialog-delete');
10058
+ }
10059
+ case WorkspacePresetAction.DUPLICATE:
10060
+ {
10061
+ return t('workspace-duplicate');
10062
+ }
10063
+ case WorkspacePresetAction.SAVE_ALL:
10064
+ {
10065
+ return t('workspace-save-incl-viewpresets');
10066
+ }
10067
+ case WorkspacePresetAction.EDIT:
10068
+ {
10069
+ return t('workspace-edit-both');
10070
+ }
10071
+ default:
10072
+ {
10073
+ return t('workspace-save-as');
10074
+ }
10075
+ }
10076
+ };
10077
+ const confirmLabel = getConfirmLabel(action);
9865
10078
  const onSubmit = () => {
9866
10079
  handleFormSubmit(newFormValues => {
9867
10080
  const {
@@ -9878,12 +10091,13 @@ const WorkspacePresetsFormDialog = ({
9878
10091
  onFormSubmit(action, presetId, parsedFormValues);
9879
10092
  })();
9880
10093
  };
10094
+ const cancelLabel = t('workspace-cancel');
9881
10095
  return /*#__PURE__*/React__default.createElement(ConfirmationDialog, {
9882
10096
  "data-testid": "workspace-preset-dialog",
9883
10097
  title: getDialogTitle(action),
9884
10098
  open: isOpen,
9885
10099
  confirmLabel: confirmLabel,
9886
- cancelLabel: "Cancel",
10100
+ cancelLabel: cancelLabel,
9887
10101
  description: "",
9888
10102
  onClose: onClose,
9889
10103
  onSubmit: onSubmit,
@@ -9979,7 +10193,7 @@ const WorkspaceTabConnect = ({
9979
10193
  const WorkspaceTopBar = ({
9980
10194
  workspaceId
9981
10195
  }) => {
9982
- return /*#__PURE__*/React.createElement(WorkspaceTranslationsWrapper, null, /*#__PURE__*/React.createElement(Tabs, {
10196
+ return /*#__PURE__*/React.createElement(Tabs, {
9983
10197
  value: 0,
9984
10198
  "aria-label": "workspace-bar-tabs",
9985
10199
  sx: {
@@ -9994,13 +10208,14 @@ const WorkspaceTopBar = ({
9994
10208
  }
9995
10209
  }, /*#__PURE__*/React.createElement(WorkspaceTabConnect, {
9996
10210
  workspaceId: workspaceId
9997
- })));
10211
+ }));
9998
10212
  };
9999
10213
 
10000
10214
  const validateTitle = value => {
10001
10215
  if (!value) {
10002
10216
  return true;
10003
10217
  }
10218
+ // TODO: use translation from form-fields https://gitlab.com/opengeoweb/opengeoweb/-/issues/4240
10004
10219
  return !value.trim().length ? 'This field is required' : true;
10005
10220
  };
10006
10221
  const MapPresetsForm = ({
@@ -10010,6 +10225,9 @@ const MapPresetsForm = ({
10010
10225
  formValues
10011
10226
  }) => {
10012
10227
  const fieldName = 'title';
10228
+ const {
10229
+ t
10230
+ } = useWorkspaceTranslation();
10013
10231
  const _a = Object.assign(Object.assign({}, emptyMapViewPreset), formValues),
10014
10232
  {
10015
10233
  title
@@ -10039,7 +10257,7 @@ const MapPresetsForm = ({
10039
10257
  onSubmit: onSubmitForm
10040
10258
  }, /*#__PURE__*/React__default.createElement(ReactHookFormTextField, {
10041
10259
  name: "title",
10042
- label: "Map preset name",
10260
+ label: t('workspace-mappreset-dialog-title'),
10043
10261
  rules: {
10044
10262
  required: true,
10045
10263
  validate: {
@@ -10057,27 +10275,15 @@ const MapPresetsForm = ({
10057
10275
  "data-testid": name
10058
10276
  }))))), action === PresetAction.DELETE && ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Typography, {
10059
10277
  variant: "body1"
10060
- }, `Are you sure to want to delete "${title}" map preset?`), /*#__PURE__*/React__default.createElement(ReactHookFormHiddenInput, {
10278
+ }, t('workspace-mappreset-delete-message', {
10279
+ TITLE: title
10280
+ })), /*#__PURE__*/React__default.createElement(ReactHookFormHiddenInput, {
10061
10281
  key: "title",
10062
10282
  name: "title",
10063
10283
  defaultValue: title
10064
10284
  }))));
10065
10285
  };
10066
10286
 
10067
- const getConfirmLabel = action => {
10068
- switch (action) {
10069
- case PresetAction.DELETE:
10070
- {
10071
- return 'Delete';
10072
- }
10073
- case PresetAction.SAVE_AS:
10074
- {
10075
- return 'Save';
10076
- }
10077
- default:
10078
- return 'Save';
10079
- }
10080
- };
10081
10287
  const MapPresetsFormDialog = ({
10082
10288
  isOpen,
10083
10289
  action,
@@ -10091,6 +10297,9 @@ const MapPresetsFormDialog = ({
10091
10297
  handleSubmit: handleFormSubmit,
10092
10298
  reset
10093
10299
  } = useFormContext();
10300
+ const {
10301
+ t
10302
+ } = useWorkspaceTranslation();
10094
10303
  const {
10095
10304
  api
10096
10305
  } = useApiContext();
@@ -10104,6 +10313,20 @@ const MapPresetsFormDialog = ({
10104
10313
  React__default.useEffect(() => {
10105
10314
  reset(formValues);
10106
10315
  }, [formValues, reset]);
10316
+ const getConfirmLabel = action => {
10317
+ switch (action) {
10318
+ case PresetAction.DELETE:
10319
+ {
10320
+ return t('workspace-delete');
10321
+ }
10322
+ case PresetAction.SAVE_AS:
10323
+ {
10324
+ return t('workspace-save');
10325
+ }
10326
+ default:
10327
+ return t('workspace-save');
10328
+ }
10329
+ };
10107
10330
  const confirmLabel = getConfirmLabel(action);
10108
10331
  const onFormSubmit = newFormValues => __awaiter(void 0, void 0, void 0, function* () {
10109
10332
  try {
@@ -10170,7 +10393,7 @@ const MapPresetsFormDialog = ({
10170
10393
  title: title,
10171
10394
  open: isOpen,
10172
10395
  confirmLabel: confirmLabel,
10173
- cancelLabel: "Cancel",
10396
+ cancelLabel: t('workspace-cancel'),
10174
10397
  description: "",
10175
10398
  onClose: onClose,
10176
10399
  onSubmit: onSubmit,
@@ -10241,6 +10464,9 @@ const WorkspaceDetail = ({
10241
10464
  isSnapshot: _isSnapshot = false
10242
10465
  }) => {
10243
10466
  const dispatch = useDispatch();
10467
+ const {
10468
+ t
10469
+ } = useWorkspaceTranslation();
10244
10470
  const error = useSelector(store => getWorkspaceError(store));
10245
10471
  const isLoading = useSelector(store => isWorkspaceLoading(store));
10246
10472
  const workspaceData = useSelector(store => getWorkspaceData(store));
@@ -10290,20 +10516,24 @@ const WorkspaceDetail = ({
10290
10516
  zIndex: 100
10291
10517
  }
10292
10518
  })), error && error.type !== WorkspaceErrorType.SAVE && ( /*#__PURE__*/React.createElement(AlertBanner, Object.assign({
10293
- title: `Failed to fetch workspace ${workspaceId}`,
10519
+ title: t('workspace-error-fetch-detail', {
10520
+ WORKSPACE_ID: workspaceId
10521
+ }),
10294
10522
  info: error.message,
10295
10523
  shouldClose: true
10296
10524
  }, error.type === WorkspaceErrorType.GENERIC && {
10297
10525
  actionButtonProps: {
10298
- title: 'Try again',
10526
+ title: t('workspace-retry'),
10299
10527
  onClick: () => fetchWorkspace(workspaceId)
10300
10528
  }
10301
10529
  }))), children, !_isSnapshot && ( /*#__PURE__*/React.createElement(React.Fragment, null, error && error.type === WorkspaceErrorType.SAVE && ( /*#__PURE__*/React.createElement(AlertBanner, {
10302
- title: `Failed to save workspace "${workspaceData.title}"`,
10530
+ title: t('workspace-save-error', {
10531
+ TITLE: workspaceData.title
10532
+ }),
10303
10533
  info: error.message,
10304
10534
  shouldClose: true,
10305
10535
  actionButtonProps: {
10306
- title: 'Try again',
10536
+ title: t('workspace-retry'),
10307
10537
  onClick: () => onSave()
10308
10538
  }
10309
10539
  })), (!error || error.type === WorkspaceErrorType.SAVE) && ( /*#__PURE__*/React.createElement(Box, {
@@ -10325,4 +10555,4 @@ const WorkspaceDetail = ({
10325
10555
  }))))), /*#__PURE__*/React.createElement(MapPresetsFormDialogConnect, null));
10326
10556
  };
10327
10557
 
10328
- export { ComponentsLookUpWrapper, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspaceModuleProvider, WorkspacePresetAction, WorkspaceTopBar, WorkspaceTranslationsWrapper, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, workspaceActions as actions, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, emptyMapWorkspace, getWorkspaceRouteUrl, selectors$1 as selectors, viewPresetActions, workspaceListActions, workspaceModuleConfig, reducer$1 as workspaceReducer, routes as workspaceRoutes };
10558
+ export { ComponentsLookUpWrapper, DemoWrapper, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspaceModuleProvider, WorkspacePresetAction, WorkspaceTopBar, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, workspaceActions as actions, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, emptyMapWorkspace, getWorkspaceRouteUrl, selectors$1 as selectors, viewPresetActions, workspaceListActions, workspaceModuleConfig, reducer$1 as workspaceReducer, routes as workspaceRoutes, workspaceTranslations };