@opengeoweb/workspace 9.14.0 → 9.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.esm.js CHANGED
@@ -3,8 +3,10 @@ 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 { initReactI18next, useTranslation, I18nextProvider } from 'react-i18next';
8
+ import { handleOutsideComponentTranslations, isAxiosError, getAxiosErrorMessage, withEggs, ConfirmationServiceProvider, useConfirmationDialog, CustomIconButton, AlertBanner, CustomTooltip, SearchHighlight, ToggleMenu, usePrevious, ToolContainer, renderCounter, CustomToggleButton, ConfirmationDialog } from '@opengeoweb/shared';
6
9
  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
10
  import { snackbarActions, SnackbarWrapperConnect } from '@opengeoweb/snackbar';
9
11
  import * as React from 'react';
10
12
  import React__default, { useCallback } from 'react';
@@ -23,6 +25,257 @@ import { Box as Box$1 } from '@mui/system';
23
25
  import { ReactHookFormTextField, ReactHookFormHiddenInput, ReactHookFormProvider, defaultFormOptions } from '@opengeoweb/form-fields';
24
26
  import { useFormContext } from 'react-hook-form';
25
27
 
28
+ var en = {
29
+ "workspace-menu": "Workspace menu",
30
+ "workspace-new": "New workspace",
31
+ "workspace-my-presets": "My presets",
32
+ "workspace-system-presets": "System presets",
33
+ "workspace-all-button": "All",
34
+ "workspace-search": "Search",
35
+ "workspace-loading": "Loading",
36
+ "workspace-options": "Options",
37
+ "workspace-results": "results",
38
+ "workspace-delete": "Delete",
39
+ "workspce-clear": "Clear",
40
+ "workspace-save": "Save",
41
+ "workspace-save-as": "Save as",
42
+ "workspace-save-incl-viewpresets": "Save (incl. viewpresets)",
43
+ "workspace-edit": "Edit (name)",
44
+ "workspace-edit-both": "Edit (name and abstract)",
45
+ "geoweb-welcome": "Welcome to GeoWeb. Please use one of the presets to open up new views",
46
+ "workspace-modified-new": "modified",
47
+ "workspace-modified-existing": "not saved",
48
+ "workspace-dialog-delete": "Delete workspace",
49
+ "workspace-duplicate": "Duplicate",
50
+ "workspace-cancel": "Cancel",
51
+ "workspace-dialog-name": "Name",
52
+ "workspace-dialog-abstract": "Abstract",
53
+ "workspace-dialog-confirm-delete-message": "Are you sure to want to delete the \"{{TITLE}}\" workspace preset?",
54
+ "workspace-error-fetch": "Failed to fetch workspace list",
55
+ "workspace-error-fetch-detail": "Failed to fetch workspace {{WORKSPACE_ID}}",
56
+ "workspace-retry": "Try again",
57
+ "workspace-delete-tooltip": "Delete preset",
58
+ "workspace-control-split-horizontal": "Split window horizontally",
59
+ "workspace-control-split-vertical": "Split window vertically",
60
+ "workspace-control-expand": "Expand window",
61
+ "workspace-control-unexpand": "Unexpand window",
62
+ "workspace-control-close": "Close window",
63
+ "workspace-control-close-message-title": "Whoops",
64
+ "workspace-control-close-message-description": "Are you sure you want to close this window? All changes will be lost.",
65
+ "workspace-mappreset-delete-message": "Are you sure to want to delete \"{{TITLE}}\" map preset?",
66
+ "workspace-viewpresets-fail-fetch": "Failed to fetch view {{VIEWPRESET_ID}}",
67
+ "workspace-viewpresets-error": "View presets not available",
68
+ "workspace-mappreset-dialog-title": "Map preset name",
69
+ "workspace-mappreset-save-as": "Save map preset as",
70
+ "workspace-mappreset-new": "New map preset",
71
+ "workspace-mappreset-dialog-title-delete": "Delete map preset",
72
+ "workspace-mappreset-dialog-title-edit": "Edit map preset",
73
+ "workspace-mappreset-error-save": "Map preset not saved: an error occurred during saving. Please try again later.",
74
+ "workspace-mappreset-error-fetch": "Error fetching map preset list",
75
+ "workspace-list-error": "Error fetching workspace preset list",
76
+ "workspace-list-success-save-all": "Workspace \"{{TITLE}}\" and underlying viewpresets successfully saved",
77
+ "workspace-list-success-delete": "Workspace \"{{TITLE}}\" successfully deleted",
78
+ "workspace-list-success-duplicate": "Workspace \"{{TITLE}}\" successfully saved",
79
+ "workspace-list-success-edit": "Workspace \"{{TITLE}}\" successfully edited",
80
+ "workspace-list-success-save": "Workspace \"{{TITLE}}\" successfully saved",
81
+ "workspace-save-error": "Failed to save workspace \"{{TITLE}}\"",
82
+ "workspace-error-generic": "Something went wrong, try again",
83
+ "workspace-viewpreset-success-delete": "Map preset \"{{TITLE}}\" successfully deleted",
84
+ "workspace-viewpreset-success-save-as": "New map preset \"{{TITLE}}\" successfully saved",
85
+ "workspace-viewpreset-success-edit": "Map preset \"{{TITLE}}\" successfully edited",
86
+ "workspace-viewpreset-success-save": "Map preset \"{{TITLE}}\" successfully saved",
87
+ "workspace-viewpreset-menu": "View presets menu"
88
+ };
89
+ var fi = {
90
+ "workspace-menu": "ei käännetty",
91
+ "workspace-new": "ei käännetty",
92
+ "workspace-my-presets": "ei käännetty",
93
+ "workspace-system-presets": "ei käännetty",
94
+ "workspace-all-button": "ei käännetty",
95
+ "workspace-search": "ei käännetty",
96
+ "workspace-loading": "ei käännetty",
97
+ "workspace-options": "ei käännetty",
98
+ "workspace-results": "ei käännetty",
99
+ "workspace-delete": "ei käännetty",
100
+ "workspce-clear": "ei käännetty",
101
+ "workspace-save": "ei käännetty",
102
+ "workspace-save-as": "ei käännetty",
103
+ "workspace-save-incl-viewpresets": "ei käännetty",
104
+ "workspace-edit": "ei käännetty",
105
+ "workspace-edit-both": "ei käännetty",
106
+ "geoweb-welcome": "ei käännetty",
107
+ "workspace-modified-new": "ei käännetty",
108
+ "workspace-modified-existing": "ei käännetty",
109
+ "workspace-dialog-delete": "ei käännetty",
110
+ "workspace-duplicate": "ei käännetty",
111
+ "workspace-cancel": "ei käännetty",
112
+ "workspace-dialog-name": "ei käännetty",
113
+ "workspace-dialog-abstract": "ei käännetty",
114
+ "workspace-dialog-confirm-delete-message": "ei käännetty \"{{TITLE}}\" ei käännetty?",
115
+ "workspace-error-fetch": "ei käännetty",
116
+ "workspace-error-fetch-detail": "ei käännetty",
117
+ "workspace-retry": "ei käännetty",
118
+ "workspace-delete-tooltip": "ei käännetty",
119
+ "workspace-control-split-horizontal": "ei käännetty",
120
+ "workspace-control-split-vertical": "ei käännetty",
121
+ "workspace-control-expand": "ei käännetty",
122
+ "workspace-control-unexpand": "ei käännetty",
123
+ "workspace-control-close": "ei käännetty",
124
+ "workspace-control-close-message-title": "ei käännetty",
125
+ "workspace-control-close-message-description": "ei käännetty",
126
+ "workspace-mappreset-delete-message": "ei käännetty",
127
+ "workspace-viewpresets-fail-fetch": "ei käännetty",
128
+ "workspace-viewpresets-error": "ei käännetty",
129
+ "workspace-mappreset-dialog-title": "ei käännetty",
130
+ "workspace-mappreset-save-as": "ei käännetty",
131
+ "workspace-mappreset-new": "ei käännetty",
132
+ "workspace-mappreset-dialog-title-delete": "ei käännetty",
133
+ "workspace-mappreset-dialog-title-edit": "ei käännetty",
134
+ "workspace-mappreset-error-save": "ei käännetty",
135
+ "workspace-mappreset-error-fetch": "ei käännetty",
136
+ "workspace-list-error": "ei käännetty",
137
+ "workspace-list-success-save-all": "ei käännetty",
138
+ "workspace-list-success-delete": "ei käännetty",
139
+ "workspace-list-success-duplicate": "ei käännetty",
140
+ "workspace-list-success-edit": "ei käännetty",
141
+ "workspace-list-success-save": "ei käännetty",
142
+ "workspace-save-error": "ei käännetty",
143
+ "workspace-error-generic": "ei käännetty",
144
+ "workspace-viewpreset-success-delete": "ei käännetty",
145
+ "workspace-viewpreset-success-save-as": "ei käännetty",
146
+ "workspace-viewpreset-success-edit": "ei käännetty",
147
+ "workspace-viewpreset-success-save": "ei käännetty",
148
+ "workspace-viewpreset-menu": "ei käännetty"
149
+ };
150
+ var no = {
151
+ "workspace-menu": "Arbeidsrommeny",
152
+ "workspace-new": "Nytt arbeidsrom",
153
+ "workspace-my-presets": "Mine presets",
154
+ "workspace-system-presets": "System presets",
155
+ "workspace-all-button": "Alle",
156
+ "workspace-search": "Søk",
157
+ "workspace-loading": "Laster",
158
+ "workspace-options": "Valg",
159
+ "workspace-results": "resultater",
160
+ "workspace-delete": "Slett",
161
+ "workspce-clear": "Tøm",
162
+ "workspace-save": "Lagre",
163
+ "workspace-save-as": "Lagre som",
164
+ "workspace-save-incl-viewpresets": "Lagre (inkl. viewpresets)",
165
+ "workspace-edit": "Endre (navn)",
166
+ "workspace-edit-both": "Endre (navn og abstrakt)",
167
+ "geoweb-welcome": "Velkommen til GeoWeb. Åpne et forhåndsvalg for å åpne nye vinduer",
168
+ "workspace-modified-new": "ikke oversatt",
169
+ "workspace-modified-existing": "ikke oversatt",
170
+ "workspace-dialog-delete": "ikke oversatt",
171
+ "workspace-duplicate": "ikke oversatt",
172
+ "workspace-cancel": "ikke oversatt",
173
+ "workspace-dialog-name": "ikke oversatt",
174
+ "workspace-dialog-abstract": "ikke oversatt",
175
+ "workspace-dialog-confirm-delete-message": "ikke oversatt \"{{TITLE}}\" ikke oversatt",
176
+ "workspace-error-fetch": "ikke oversatt",
177
+ "workspace-error-fetch-detail": "ikke oversatt",
178
+ "workspace-viewpresets-error": "ikke oversatt",
179
+ "workspace-retry": "ikke oversatt",
180
+ "workspace-delete-tooltip": "ikke oversatt",
181
+ "workspace-control-split-horizontal": "ikke oversatt",
182
+ "workspace-control-split-vertical": "ikke oversatt",
183
+ "workspace-control-expand": "ikke oversatt",
184
+ "workspace-control-unexpand": "ikke oversatt",
185
+ "workspace-control-close": "ikke oversatt",
186
+ "workspace-control-close-message-title": "ikke oversatt",
187
+ "workspace-control-close-message-description": "ikke oversatt",
188
+ "workspace-mappreset-delete-message": "ikke oversatt",
189
+ "workspace-viewpresets-fail-fetch": "ikke oversatt",
190
+ "workspace-mappreset-dialog-title": "ikke oversatt",
191
+ "workspace-mappreset-save-as": "ikke oversatt",
192
+ "workspace-mappreset-new": "ikke oversatt",
193
+ "workspace-mappreset-dialog-title-delete": "ikke oversatt",
194
+ "workspace-mappreset-dialog-title-edit": "ikke oversattt",
195
+ "workspace-mappreset-error-save": "ikke oversattt",
196
+ "workspace-mappreset-error-fetch": "ikke oversattt",
197
+ "workspace-list-error": "ikke oversattt",
198
+ "workspace-list-success-save-all": "ikke oversattt",
199
+ "workspace-list-success-delete": "ikke oversattt",
200
+ "workspace-list-success-duplicate": "ikke oversattt",
201
+ "workspace-list-success-edit": "ikke oversattt",
202
+ "workspace-list-success-save": "ikke oversattt",
203
+ "workspace-save-error": "ikke oversattt",
204
+ "workspace-error-generic": "ikke oversattt",
205
+ "workspace-viewpreset-success-delete": "ikke oversattt",
206
+ "workspace-viewpreset-success-save-as": "ikke oversattt",
207
+ "workspace-viewpreset-success-edit": "ikke oversattt",
208
+ "workspace-viewpreset-success-save": "ikke oversattt",
209
+ "workspace-viewpreset-menu": "kke oversattt"
210
+ };
211
+ var nl = {
212
+ "workspace-menu": "Workspace menu",
213
+ "workspace-new": "Nieuwe workspace",
214
+ "workspace-my-presets": "Mijn presets",
215
+ "workspace-system-presets": "Systeem presets",
216
+ "workspace-all-button": "Alle",
217
+ "workspace-search": "Zoeken",
218
+ "workspace-loading": "Laden",
219
+ "workspace-options": "Opties",
220
+ "workspace-results": "resultaten",
221
+ "workspace-delete": "Verwijder",
222
+ "workspce-clear": "Wissen",
223
+ "workspace-save": "Opslaan",
224
+ "workspace-save-as": "Opslaan als",
225
+ "workspace-save-incl-viewpresets": "Opslaan (incl. viewpresets)",
226
+ "workspace-edit": "Aanpassen (naam)",
227
+ "workspace-edit-both": "Aanpassen (naam en abstract)",
228
+ "geoweb-welcome": "Welkom bij GeoWeb. Kies een van de presets om een nieuw venster te openen",
229
+ "workspace-modified-new": "bewerkt",
230
+ "workspace-modified-existing": "niet opgeslagen",
231
+ "workspace-dialog-delete": "Verwijder workspace",
232
+ "workspace-duplicate": "Dupliceer",
233
+ "workspace-cancel": "Annuleer",
234
+ "workspace-dialog-name": "Naam",
235
+ "workspace-dialog-abstract": "Abstract",
236
+ "workspace-dialog-confirm-delete-message": "Weet je zeker dat je workspace preset \"{{TITLE}}\" wilt verwijderen?",
237
+ "workspace-error-fetch": "Ophalen workspace lijst mislukt",
238
+ "workspace-error-fetch-detail": "Ophalen workspace {{WORKSPACE_ID}} mislukt",
239
+ "workspace-viewpresets-error": "View presets niet beschikbaar",
240
+ "workspace-retry": "Opnieuw proberen",
241
+ "workspace-delete-tooltip": "Verwijder preset",
242
+ "workspace-control-split-horizontal": "Splits paneel horizontaal",
243
+ "workspace-control-split-vertical": "Splits paneel verticaal",
244
+ "workspace-control-expand": "Vergroot paneel",
245
+ "workspace-control-unexpand": "Verklein paneel",
246
+ "workspace-control-close": "Sluit paneel",
247
+ "workspace-control-close-message-title": "Oeps",
248
+ "workspace-control-close-message-description": "Weet je zeker dat je dit paneel wilt sluiten? Alle wijzigingen zullen verloren gaan",
249
+ "workspace-mappreset-delete-message": "Weet je zeker dat je map preset \"{{TITLE}}\" wilt verwijderen?",
250
+ "workspace-viewpresets-fail-fetch": "Ophalen van view preset {{VIEWPRESET_ID}} mislukt",
251
+ "workspace-mappreset-dialog-title": "Map preset naam",
252
+ "workspace-mappreset-save-as": "Sla map preset op als",
253
+ "workspace-mappreset-new": "Nieuwe map preset",
254
+ "workspace-mappreset-dialog-title-delete": "Verwijder map preset",
255
+ "workspace-mappreset-dialog-title-edit": "Aanpassen map preset",
256
+ "workspace-mappreset-error-save": "Map preset niet opgeslagen: een ging iets fout met opslaan. Probeer het later nog eens.",
257
+ "workspace-mappreset-error-fetch": "Ophalen map preset lijst mislukt",
258
+ "workspace-list-error": "Ophalen workspace preset lijst mislukt",
259
+ "workspace-list-success-save-all": "Workspace \"{{TITLE}}\" en onderliggende viewpresets zijn succesvol opgeslagen!",
260
+ "workspace-list-success-delete": "Workspace \"{{TITLE}}\" succesvol verwijderd",
261
+ "workspace-list-success-duplicate": "Workspace \"{{TITLE}}\" succesvol opgeslagen",
262
+ "workspace-list-success-edit": "Workspace \"{{TITLE}}\" succesvol aangepast",
263
+ "workspace-list-success-save": "Workspace \"{{TITLE}}\" succesvol opgeslagen",
264
+ "workspace-save-error": "Workspace opslaan \"{{TITLE}}\" mislukt",
265
+ "workspace-error-generic": "Er is iets mis gegaan, probeer het opnieuw",
266
+ "workspace-viewpreset-success-delete": "Map preset \"{{TITLE}}\" succesvol verwijderd",
267
+ "workspace-viewpreset-success-save-as": "Nieuwe map preset \"{{TITLE}}\" succesvol opgeslagen",
268
+ "workspace-viewpreset-success-edit": "Map preset \"{{TITLE}}\" succesvol aangepast",
269
+ "workspace-viewpreset-success-save": "Map preset \"{{TITLE}}\" succesvol opgeslagen",
270
+ "workspace-viewpreset-menu": "View presets menu"
271
+ };
272
+ var workspaceTranslations = {
273
+ en: en,
274
+ fi: fi,
275
+ no: no,
276
+ nl: nl
277
+ };
278
+
26
279
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
27
280
 
28
281
  var check = function (it) {
@@ -30,7 +283,7 @@ var check = function (it) {
30
283
  };
31
284
 
32
285
  // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
33
- var global$h =
286
+ var global$g =
34
287
  // eslint-disable-next-line es/no-global-this -- safe
35
288
  check(typeof globalThis == 'object' && globalThis) ||
36
289
  check(typeof window == 'object' && window) ||
@@ -150,17 +403,17 @@ var $TypeError$d = TypeError;
150
403
 
151
404
  // `RequireObjectCoercible` abstract operation
152
405
  // https://tc39.es/ecma262/#sec-requireobjectcoercible
153
- var requireObjectCoercible$9 = function (it) {
406
+ var requireObjectCoercible$a = function (it) {
154
407
  if (isNullOrUndefined$6(it)) throw new $TypeError$d("Can't call method on " + it);
155
408
  return it;
156
409
  };
157
410
 
158
411
  // toObject with fallback for non-array-like ES3 strings
159
412
  var IndexedObject$2 = indexedObject;
160
- var requireObjectCoercible$8 = requireObjectCoercible$9;
413
+ var requireObjectCoercible$9 = requireObjectCoercible$a;
161
414
 
162
415
  var toIndexedObject$5 = function (it) {
163
- return IndexedObject$2(requireObjectCoercible$8(it));
416
+ return IndexedObject$2(requireObjectCoercible$9(it));
164
417
  };
165
418
 
166
419
  // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot
@@ -177,11 +430,11 @@ var isCallable$i = typeof documentAll == 'undefined' && documentAll !== undefine
177
430
 
178
431
  var isCallable$h = isCallable$i;
179
432
 
180
- var isObject$b = function (it) {
433
+ var isObject$c = function (it) {
181
434
  return typeof it == 'object' ? it !== null : isCallable$h(it);
182
435
  };
183
436
 
184
- var global$g = global$h;
437
+ var global$f = global$g;
185
438
  var isCallable$g = isCallable$i;
186
439
 
187
440
  var aFunction = function (argument) {
@@ -189,7 +442,7 @@ var aFunction = function (argument) {
189
442
  };
190
443
 
191
444
  var getBuiltIn$5 = function (namespace, method) {
192
- return arguments.length < 2 ? aFunction(global$g[namespace]) : global$g[namespace] && global$g[namespace][method];
445
+ return arguments.length < 2 ? aFunction(global$f[namespace]) : global$f[namespace] && global$f[namespace][method];
193
446
  };
194
447
 
195
448
  var uncurryThis$l = functionUncurryThis;
@@ -198,11 +451,11 @@ var objectIsPrototypeOf = uncurryThis$l({}.isPrototypeOf);
198
451
 
199
452
  var engineUserAgent = typeof navigator != 'undefined' && String(navigator.userAgent) || '';
200
453
 
201
- var global$f = global$h;
454
+ var global$e = global$g;
202
455
  var userAgent$2 = engineUserAgent;
203
456
 
204
- var process = global$f.process;
205
- var Deno = global$f.Deno;
457
+ var process = global$e.process;
458
+ var Deno = global$e.Deno;
206
459
  var versions = process && process.versions || Deno && Deno.version;
207
460
  var v8 = versions && versions.v8;
208
461
  var match, version;
@@ -229,9 +482,9 @@ var engineV8Version = version;
229
482
  /* eslint-disable es/no-symbol -- required for testing */
230
483
  var V8_VERSION = engineV8Version;
231
484
  var fails$l = fails$p;
232
- var global$e = global$h;
485
+ var global$d = global$g;
233
486
 
234
- var $String$5 = global$e.String;
487
+ var $String$5 = global$d.String;
235
488
 
236
489
  // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
237
490
  var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$l(function () {
@@ -299,7 +552,7 @@ var getMethod$5 = function (V, P) {
299
552
 
300
553
  var call$d = functionCall;
301
554
  var isCallable$d = isCallable$i;
302
- var isObject$a = isObject$b;
555
+ var isObject$b = isObject$c;
303
556
 
304
557
  var $TypeError$b = TypeError;
305
558
 
@@ -307,55 +560,55 @@ var $TypeError$b = TypeError;
307
560
  // https://tc39.es/ecma262/#sec-ordinarytoprimitive
308
561
  var ordinaryToPrimitive$1 = function (input, pref) {
309
562
  var fn, val;
310
- if (pref === 'string' && isCallable$d(fn = input.toString) && !isObject$a(val = call$d(fn, input))) return val;
311
- if (isCallable$d(fn = input.valueOf) && !isObject$a(val = call$d(fn, input))) return val;
312
- if (pref !== 'string' && isCallable$d(fn = input.toString) && !isObject$a(val = call$d(fn, input))) return val;
563
+ if (pref === 'string' && isCallable$d(fn = input.toString) && !isObject$b(val = call$d(fn, input))) return val;
564
+ if (isCallable$d(fn = input.valueOf) && !isObject$b(val = call$d(fn, input))) return val;
565
+ if (pref !== 'string' && isCallable$d(fn = input.toString) && !isObject$b(val = call$d(fn, input))) return val;
313
566
  throw new $TypeError$b("Can't convert object to primitive value");
314
567
  };
315
568
 
316
- var shared$4 = {exports: {}};
569
+ var sharedStore = {exports: {}};
317
570
 
318
- var global$d = global$h;
571
+ var global$c = global$g;
319
572
 
320
573
  // eslint-disable-next-line es/no-object-defineproperty -- safe
321
574
  var defineProperty$6 = Object.defineProperty;
322
575
 
323
576
  var defineGlobalProperty$3 = function (key, value) {
324
577
  try {
325
- defineProperty$6(global$d, key, { value: value, configurable: true, writable: true });
578
+ defineProperty$6(global$c, key, { value: value, configurable: true, writable: true });
326
579
  } catch (error) {
327
- global$d[key] = value;
580
+ global$c[key] = value;
328
581
  } return value;
329
582
  };
330
583
 
331
- var global$c = global$h;
584
+ var globalThis$1 = global$g;
332
585
  var defineGlobalProperty$2 = defineGlobalProperty$3;
333
586
 
334
587
  var SHARED = '__core-js_shared__';
335
- var store$4 = global$c[SHARED] || defineGlobalProperty$2(SHARED, {});
336
-
337
- var sharedStore = store$4;
588
+ var store$4 = sharedStore.exports = globalThis$1[SHARED] || defineGlobalProperty$2(SHARED, {});
338
589
 
339
- var store$3 = sharedStore;
340
-
341
- (shared$4.exports = function (key, value) {
342
- return store$3[key] || (store$3[key] = value !== undefined ? value : {});
343
- })('versions', []).push({
344
- version: '3.35.1',
590
+ (store$4.versions || (store$4.versions = [])).push({
591
+ version: '3.36.1',
345
592
  mode: 'global',
346
593
  copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',
347
- license: 'https://github.com/zloirock/core-js/blob/v3.35.1/LICENSE',
594
+ license: 'https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE',
348
595
  source: 'https://github.com/zloirock/core-js'
349
596
  });
350
597
 
351
- var requireObjectCoercible$7 = requireObjectCoercible$9;
598
+ var store$3 = sharedStore.exports;
599
+
600
+ var shared$4 = function (key, value) {
601
+ return store$3[key] || (store$3[key] = value || {});
602
+ };
603
+
604
+ var requireObjectCoercible$8 = requireObjectCoercible$a;
352
605
 
353
606
  var $Object$2 = Object;
354
607
 
355
608
  // `ToObject` abstract operation
356
609
  // https://tc39.es/ecma262/#sec-toobject
357
610
  var toObject$8 = function (argument) {
358
- return $Object$2(requireObjectCoercible$7(argument));
611
+ return $Object$2(requireObjectCoercible$8(argument));
359
612
  };
360
613
 
361
614
  var uncurryThis$k = functionUncurryThis;
@@ -380,8 +633,8 @@ var uid$2 = function (key) {
380
633
  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$b(++id + postfix, 36);
381
634
  };
382
635
 
383
- var global$b = global$h;
384
- var shared$3 = shared$4.exports;
636
+ var global$b = global$g;
637
+ var shared$3 = shared$4;
385
638
  var hasOwn$a = hasOwnProperty_1;
386
639
  var uid$1 = uid$2;
387
640
  var NATIVE_SYMBOL = symbolConstructorDetection;
@@ -400,7 +653,7 @@ var wellKnownSymbol$e = function (name) {
400
653
  };
401
654
 
402
655
  var call$c = functionCall;
403
- var isObject$9 = isObject$b;
656
+ var isObject$a = isObject$c;
404
657
  var isSymbol$1 = isSymbol$2;
405
658
  var getMethod$4 = getMethod$5;
406
659
  var ordinaryToPrimitive = ordinaryToPrimitive$1;
@@ -412,13 +665,13 @@ var TO_PRIMITIVE = wellKnownSymbol$d('toPrimitive');
412
665
  // `ToPrimitive` abstract operation
413
666
  // https://tc39.es/ecma262/#sec-toprimitive
414
667
  var toPrimitive$1 = function (input, pref) {
415
- if (!isObject$9(input) || isSymbol$1(input)) return input;
668
+ if (!isObject$a(input) || isSymbol$1(input)) return input;
416
669
  var exoticToPrim = getMethod$4(input, TO_PRIMITIVE);
417
670
  var result;
418
671
  if (exoticToPrim) {
419
672
  if (pref === undefined) pref = 'default';
420
673
  result = call$c(exoticToPrim, input, pref);
421
- if (!isObject$9(result) || isSymbol$1(result)) return result;
674
+ if (!isObject$a(result) || isSymbol$1(result)) return result;
422
675
  throw new $TypeError$a("Can't convert object to primitive value");
423
676
  }
424
677
  if (pref === undefined) pref = 'number';
@@ -435,12 +688,12 @@ var toPropertyKey$2 = function (argument) {
435
688
  return isSymbol(key) ? key : key + '';
436
689
  };
437
690
 
438
- var global$a = global$h;
439
- var isObject$8 = isObject$b;
691
+ var global$a = global$g;
692
+ var isObject$9 = isObject$c;
440
693
 
441
694
  var document$1 = global$a.document;
442
695
  // typeof document.createElement is 'object' in old IE
443
- var EXISTS$1 = isObject$8(document$1) && isObject$8(document$1.createElement);
696
+ var EXISTS$1 = isObject$9(document$1) && isObject$9(document$1.createElement);
444
697
 
445
698
  var documentCreateElement$2 = function (it) {
446
699
  return EXISTS$1 ? document$1.createElement(it) : {};
@@ -496,21 +749,21 @@ var v8PrototypeDefineBug = DESCRIPTORS$9 && fails$j(function () {
496
749
  }).prototype !== 42;
497
750
  });
498
751
 
499
- var isObject$7 = isObject$b;
752
+ var isObject$8 = isObject$c;
500
753
 
501
754
  var $String$3 = String;
502
755
  var $TypeError$9 = TypeError;
503
756
 
504
757
  // `Assert: Type(argument) is Object`
505
- var anObject$d = function (argument) {
506
- if (isObject$7(argument)) return argument;
758
+ var anObject$c = function (argument) {
759
+ if (isObject$8(argument)) return argument;
507
760
  throw new $TypeError$9($String$3(argument) + ' is not an object');
508
761
  };
509
762
 
510
763
  var DESCRIPTORS$8 = descriptors;
511
764
  var IE8_DOM_DEFINE = ie8DomDefine;
512
765
  var V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug;
513
- var anObject$c = anObject$d;
766
+ var anObject$b = anObject$c;
514
767
  var toPropertyKey = toPropertyKey$2;
515
768
 
516
769
  var $TypeError$8 = TypeError;
@@ -525,9 +778,9 @@ var WRITABLE = 'writable';
525
778
  // `Object.defineProperty` method
526
779
  // https://tc39.es/ecma262/#sec-object.defineproperty
527
780
  objectDefineProperty.f = DESCRIPTORS$8 ? V8_PROTOTYPE_DEFINE_BUG$1 ? function defineProperty(O, P, Attributes) {
528
- anObject$c(O);
781
+ anObject$b(O);
529
782
  P = toPropertyKey(P);
530
- anObject$c(Attributes);
783
+ anObject$b(Attributes);
531
784
  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
532
785
  var current = $getOwnPropertyDescriptor(O, P);
533
786
  if (current && current[WRITABLE]) {
@@ -540,9 +793,9 @@ objectDefineProperty.f = DESCRIPTORS$8 ? V8_PROTOTYPE_DEFINE_BUG$1 ? function de
540
793
  }
541
794
  } return $defineProperty(O, P, Attributes);
542
795
  } : $defineProperty : function defineProperty(O, P, Attributes) {
543
- anObject$c(O);
796
+ anObject$b(O);
544
797
  P = toPropertyKey(P);
545
- anObject$c(Attributes);
798
+ anObject$b(Attributes);
546
799
  if (IE8_DOM_DEFINE) try {
547
800
  return $defineProperty(O, P, Attributes);
548
801
  } catch (error) { /* empty */ }
@@ -584,7 +837,7 @@ var functionName = {
584
837
 
585
838
  var uncurryThis$i = functionUncurryThis;
586
839
  var isCallable$c = isCallable$i;
587
- var store$2 = sharedStore;
840
+ var store$2 = sharedStore.exports;
588
841
 
589
842
  var functionToString = uncurryThis$i(Function.toString);
590
843
 
@@ -597,14 +850,14 @@ if (!isCallable$c(store$2.inspectSource)) {
597
850
 
598
851
  var inspectSource$2 = store$2.inspectSource;
599
852
 
600
- var global$9 = global$h;
853
+ var global$9 = global$g;
601
854
  var isCallable$b = isCallable$i;
602
855
 
603
856
  var WeakMap$1 = global$9.WeakMap;
604
857
 
605
858
  var weakMapBasicDetection = isCallable$b(WeakMap$1) && /native code/.test(String(WeakMap$1));
606
859
 
607
- var shared$2 = shared$4.exports;
860
+ var shared$2 = shared$4;
608
861
  var uid = uid$2;
609
862
 
610
863
  var keys = shared$2('keys');
@@ -616,11 +869,11 @@ var sharedKey$3 = function (key) {
616
869
  var hiddenKeys$4 = {};
617
870
 
618
871
  var NATIVE_WEAK_MAP = weakMapBasicDetection;
619
- var global$8 = global$h;
620
- var isObject$6 = isObject$b;
872
+ var global$8 = global$g;
873
+ var isObject$7 = isObject$c;
621
874
  var createNonEnumerableProperty$7 = createNonEnumerableProperty$8;
622
875
  var hasOwn$7 = hasOwnProperty_1;
623
- var shared$1 = sharedStore;
876
+ var shared$1 = sharedStore.exports;
624
877
  var sharedKey$2 = sharedKey$3;
625
878
  var hiddenKeys$3 = hiddenKeys$4;
626
879
 
@@ -636,7 +889,7 @@ var enforce = function (it) {
636
889
  var getterFor = function (TYPE) {
637
890
  return function (it) {
638
891
  var state;
639
- if (!isObject$6(it) || (state = get(it)).type !== TYPE) {
892
+ if (!isObject$7(it) || (state = get(it)).type !== TYPE) {
640
893
  throw new TypeError$1('Incompatible receiver, ' + TYPE + ' required');
641
894
  } return state;
642
895
  };
@@ -833,6 +1086,7 @@ var createMethod$3 = function (IS_INCLUDES) {
833
1086
  return function ($this, el, fromIndex) {
834
1087
  var O = toIndexedObject$3($this);
835
1088
  var length = lengthOfArrayLike$5(O);
1089
+ if (length === 0) return !IS_INCLUDES && -1;
836
1090
  var index = toAbsoluteIndex(fromIndex, length);
837
1091
  var value;
838
1092
  // Array#includes uses SameValueZero equality algorithm
@@ -910,13 +1164,13 @@ var getBuiltIn$3 = getBuiltIn$5;
910
1164
  var uncurryThis$f = functionUncurryThis;
911
1165
  var getOwnPropertyNamesModule = objectGetOwnPropertyNames;
912
1166
  var getOwnPropertySymbolsModule$1 = objectGetOwnPropertySymbols;
913
- var anObject$b = anObject$d;
1167
+ var anObject$a = anObject$c;
914
1168
 
915
1169
  var concat$2 = uncurryThis$f([].concat);
916
1170
 
917
1171
  // all object keys, includes non-enumerable and symbols
918
1172
  var ownKeys$1 = getBuiltIn$3('Reflect', 'ownKeys') || function ownKeys(it) {
919
- var keys = getOwnPropertyNamesModule.f(anObject$b(it));
1173
+ var keys = getOwnPropertyNamesModule.f(anObject$a(it));
920
1174
  var getOwnPropertySymbols = getOwnPropertySymbolsModule$1.f;
921
1175
  return getOwnPropertySymbols ? concat$2(keys, getOwnPropertySymbols(it)) : keys;
922
1176
  };
@@ -961,7 +1215,7 @@ var POLYFILL = isForced$1.POLYFILL = 'P';
961
1215
 
962
1216
  var isForced_1 = isForced$1;
963
1217
 
964
- var global$7 = global$h;
1218
+ var global$7 = global$g;
965
1219
  var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;
966
1220
  var createNonEnumerableProperty$6 = createNonEnumerableProperty$8;
967
1221
  var defineBuiltIn$4 = defineBuiltIn$5;
@@ -1031,7 +1285,7 @@ var objectKeys$2 = Object.keys || function keys(O) {
1031
1285
  var DESCRIPTORS$4 = descriptors;
1032
1286
  var V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug;
1033
1287
  var definePropertyModule = objectDefineProperty;
1034
- var anObject$a = anObject$d;
1288
+ var anObject$9 = anObject$c;
1035
1289
  var toIndexedObject$1 = toIndexedObject$5;
1036
1290
  var objectKeys$1 = objectKeys$2;
1037
1291
 
@@ -1039,7 +1293,7 @@ var objectKeys$1 = objectKeys$2;
1039
1293
  // https://tc39.es/ecma262/#sec-object.defineproperties
1040
1294
  // eslint-disable-next-line es/no-object-defineproperties -- safe
1041
1295
  objectDefineProperties.f = DESCRIPTORS$4 && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {
1042
- anObject$a(O);
1296
+ anObject$9(O);
1043
1297
  var props = toIndexedObject$1(Properties);
1044
1298
  var keys = objectKeys$1(Properties);
1045
1299
  var length = keys.length;
@@ -1054,7 +1308,7 @@ var getBuiltIn$2 = getBuiltIn$5;
1054
1308
  var html$1 = getBuiltIn$2('document', 'documentElement');
1055
1309
 
1056
1310
  /* global ActiveXObject -- old IE, WSH */
1057
- var anObject$9 = anObject$d;
1311
+ var anObject$8 = anObject$c;
1058
1312
  var definePropertiesModule = objectDefineProperties;
1059
1313
  var enumBugKeys = enumBugKeys$3;
1060
1314
  var hiddenKeys = hiddenKeys$4;
@@ -1128,7 +1382,7 @@ hiddenKeys[IE_PROTO$1] = true;
1128
1382
  var objectCreate = Object.create || function create(O, Properties) {
1129
1383
  var result;
1130
1384
  if (O !== null) {
1131
- EmptyConstructor[PROTOTYPE] = anObject$9(O);
1385
+ EmptyConstructor[PROTOTYPE] = anObject$8(O);
1132
1386
  result = new EmptyConstructor();
1133
1387
  EmptyConstructor[PROTOTYPE] = null;
1134
1388
  // add "__proto__" for Object.getPrototypeOf polyfill
@@ -1333,7 +1587,7 @@ $$8({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }
1333
1587
  assign: assign
1334
1588
  });
1335
1589
 
1336
- var isObject$5 = isObject$b;
1590
+ var isObject$6 = isObject$c;
1337
1591
  var classof$5 = classofRaw$2;
1338
1592
  var wellKnownSymbol$b = wellKnownSymbol$e;
1339
1593
 
@@ -1343,7 +1597,7 @@ var MATCH$1 = wellKnownSymbol$b('match');
1343
1597
  // https://tc39.es/ecma262/#sec-isregexp
1344
1598
  var isRegexp = function (it) {
1345
1599
  var isRegExp;
1346
- return isObject$5(it) && ((isRegExp = it[MATCH$1]) !== undefined ? !!isRegExp : classof$5(it) === 'RegExp');
1600
+ return isObject$6(it) && ((isRegExp = it[MATCH$1]) !== undefined ? !!isRegExp : classof$5(it) === 'RegExp');
1347
1601
  };
1348
1602
 
1349
1603
  var isRegExp = isRegexp;
@@ -1423,7 +1677,7 @@ var correctIsRegexpLogic = function (METHOD_NAME) {
1423
1677
  var $$7 = _export;
1424
1678
  var uncurryThis$d = functionUncurryThis;
1425
1679
  var notARegExp = notARegexp;
1426
- var requireObjectCoercible$6 = requireObjectCoercible$9;
1680
+ var requireObjectCoercible$7 = requireObjectCoercible$a;
1427
1681
  var toString$9 = toString$a;
1428
1682
  var correctIsRegExpLogic = correctIsRegexpLogic;
1429
1683
 
@@ -1434,7 +1688,7 @@ var stringIndexOf$1 = uncurryThis$d(''.indexOf);
1434
1688
  $$7({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {
1435
1689
  includes: function includes(searchString /* , position = 0 */) {
1436
1690
  return !!~stringIndexOf$1(
1437
- toString$9(requireObjectCoercible$6(this)),
1691
+ toString$9(requireObjectCoercible$7(this)),
1438
1692
  toString$9(notARegExp(searchString)),
1439
1693
  arguments.length > 1 ? arguments[1] : undefined
1440
1694
  );
@@ -1474,13 +1728,13 @@ var WorkspaceErrorType;
1474
1728
  })(WorkspaceErrorType || (WorkspaceErrorType = {}));
1475
1729
 
1476
1730
  const workspaceListFilterOptions = [{
1477
- label: 'My presets',
1731
+ label: 'workspace-my-presets',
1478
1732
  id: 'user',
1479
1733
  type: 'scope',
1480
1734
  isSelected: true,
1481
1735
  isDisabled: false
1482
1736
  }, {
1483
- label: 'System presets',
1737
+ label: 'workspace-system-presets',
1484
1738
  id: 'system',
1485
1739
  type: 'scope',
1486
1740
  isSelected: true,
@@ -1633,7 +1887,7 @@ var objectGetPrototypeOf = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : f
1633
1887
 
1634
1888
  var fails$c = fails$p;
1635
1889
  var isCallable$5 = isCallable$i;
1636
- var isObject$4 = isObject$b;
1890
+ var isObject$5 = isObject$c;
1637
1891
  var getPrototypeOf$1 = objectGetPrototypeOf;
1638
1892
  var defineBuiltIn$3 = defineBuiltIn$5;
1639
1893
  var wellKnownSymbol$7 = wellKnownSymbol$e;
@@ -1656,7 +1910,7 @@ if ([].keys) {
1656
1910
  }
1657
1911
  }
1658
1912
 
1659
- var NEW_ITERATOR_PROTOTYPE = !isObject$4(IteratorPrototype$2) || fails$c(function () {
1913
+ var NEW_ITERATOR_PROTOTYPE = !isObject$5(IteratorPrototype$2) || fails$c(function () {
1660
1914
  var test = {};
1661
1915
  // FF44- legacy iterators case
1662
1916
  return IteratorPrototype$2[ITERATOR$2].call(test) !== test;
@@ -1716,10 +1970,10 @@ var functionUncurryThisAccessor = function (object, key, method) {
1716
1970
  } catch (error) { /* empty */ }
1717
1971
  };
1718
1972
 
1719
- var isObject$3 = isObject$b;
1973
+ var isObject$4 = isObject$c;
1720
1974
 
1721
1975
  var isPossiblePrototype$1 = function (argument) {
1722
- return isObject$3(argument) || argument === null;
1976
+ return isObject$4(argument) || argument === null;
1723
1977
  };
1724
1978
 
1725
1979
  var isPossiblePrototype = isPossiblePrototype$1;
@@ -1734,7 +1988,8 @@ var aPossiblePrototype$1 = function (argument) {
1734
1988
 
1735
1989
  /* eslint-disable no-proto -- safe */
1736
1990
  var uncurryThisAccessor = functionUncurryThisAccessor;
1737
- var anObject$8 = anObject$d;
1991
+ var isObject$3 = isObject$c;
1992
+ var requireObjectCoercible$6 = requireObjectCoercible$a;
1738
1993
  var aPossiblePrototype = aPossiblePrototype$1;
1739
1994
 
1740
1995
  // `Object.setPrototypeOf` method
@@ -1751,8 +2006,9 @@ var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? functio
1751
2006
  CORRECT_SETTER = test instanceof Array;
1752
2007
  } catch (error) { /* empty */ }
1753
2008
  return function setPrototypeOf(O, proto) {
1754
- anObject$8(O);
2009
+ requireObjectCoercible$6(O);
1755
2010
  aPossiblePrototype(proto);
2011
+ if (!isObject$3(O)) return O;
1756
2012
  if (CORRECT_SETTER) setter(O, proto);
1757
2013
  else O.__proto__ = proto;
1758
2014
  return O;
@@ -1933,6 +2189,8 @@ var lengthOfArrayLike$3 = lengthOfArrayLike$6;
1933
2189
 
1934
2190
  var $TypeError$3 = TypeError;
1935
2191
 
2192
+ var REDUCE_EMPTY = 'Reduce of empty array with no initial value';
2193
+
1936
2194
  // `Array.prototype.{ reduce, reduceRight }` methods implementation
1937
2195
  var createMethod$2 = function (IS_RIGHT) {
1938
2196
  return function (that, callbackfn, argumentsLength, memo) {
@@ -1940,6 +2198,7 @@ var createMethod$2 = function (IS_RIGHT) {
1940
2198
  var self = IndexedObject(O);
1941
2199
  var length = lengthOfArrayLike$3(O);
1942
2200
  aCallable$2(callbackfn);
2201
+ if (length === 0 && argumentsLength < 2) throw new $TypeError$3(REDUCE_EMPTY);
1943
2202
  var index = IS_RIGHT ? length - 1 : 0;
1944
2203
  var i = IS_RIGHT ? -1 : 1;
1945
2204
  if (argumentsLength < 2) while (true) {
@@ -1950,7 +2209,7 @@ var createMethod$2 = function (IS_RIGHT) {
1950
2209
  }
1951
2210
  index += i;
1952
2211
  if (IS_RIGHT ? index < 0 : length <= index) {
1953
- throw new $TypeError$3('Reduce of empty array with no initial value');
2212
+ throw new $TypeError$3(REDUCE_EMPTY);
1954
2213
  }
1955
2214
  }
1956
2215
  for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {
@@ -1979,7 +2238,7 @@ var arrayMethodIsStrict$2 = function (METHOD_NAME, argument) {
1979
2238
  });
1980
2239
  };
1981
2240
 
1982
- var global$6 = global$h;
2241
+ var global$6 = global$g;
1983
2242
  var classof$2 = classofRaw$2;
1984
2243
 
1985
2244
  var engineIsNode = classof$2(global$6.process) === 'process';
@@ -2048,7 +2307,7 @@ var DOMTokenListPrototype$1 = classList && classList.constructor && classList.co
2048
2307
 
2049
2308
  var domTokenListPrototype = DOMTokenListPrototype$1 === Object.prototype ? undefined : DOMTokenListPrototype$1;
2050
2309
 
2051
- var global$5 = global$h;
2310
+ var global$5 = global$g;
2052
2311
  var DOMIterables = domIterables;
2053
2312
  var DOMTokenListPrototype = domTokenListPrototype;
2054
2313
  var ArrayIteratorMethods = es_array_iterator;
@@ -2085,7 +2344,7 @@ for (var COLLECTION_NAME in DOMIterables) {
2085
2344
 
2086
2345
  handlePrototype(DOMTokenListPrototype, 'DOMTokenList');
2087
2346
 
2088
- var anObject$7 = anObject$d;
2347
+ var anObject$7 = anObject$c;
2089
2348
 
2090
2349
  // `RegExp.prototype.flags` getter implementation
2091
2350
  // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
@@ -2104,7 +2363,7 @@ var regexpFlags$1 = function () {
2104
2363
  };
2105
2364
 
2106
2365
  var fails$a = fails$p;
2107
- var global$4 = global$h;
2366
+ var global$4 = global$g;
2108
2367
 
2109
2368
  // babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
2110
2369
  var $RegExp$2 = global$4.RegExp;
@@ -2135,7 +2394,7 @@ var regexpStickyHelpers = {
2135
2394
  };
2136
2395
 
2137
2396
  var fails$9 = fails$p;
2138
- var global$3 = global$h;
2397
+ var global$3 = global$g;
2139
2398
 
2140
2399
  // babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError
2141
2400
  var $RegExp$1 = global$3.RegExp;
@@ -2146,7 +2405,7 @@ var regexpUnsupportedDotAll = fails$9(function () {
2146
2405
  });
2147
2406
 
2148
2407
  var fails$8 = fails$p;
2149
- var global$2 = global$h;
2408
+ var global$2 = global$g;
2150
2409
 
2151
2410
  // babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError
2152
2411
  var $RegExp = global$2.RegExp;
@@ -2164,7 +2423,7 @@ var uncurryThis$b = functionUncurryThis;
2164
2423
  var toString$8 = toString$a;
2165
2424
  var regexpFlags = regexpFlags$1;
2166
2425
  var stickyHelpers$1 = regexpStickyHelpers;
2167
- var shared = shared$4.exports;
2426
+ var shared = shared$4;
2168
2427
  var create = objectCreate;
2169
2428
  var getInternalState = internalState.get;
2170
2429
  var UNSUPPORTED_DOT_ALL = regexpUnsupportedDotAll;
@@ -2362,7 +2621,7 @@ var fixRegexpWellKnownSymbolLogic = function (KEY, exec, FORCED, SHAM) {
2362
2621
  var uncurryThis$a = functionUncurryThis;
2363
2622
  var toIntegerOrInfinity$2 = toIntegerOrInfinity$5;
2364
2623
  var toString$7 = toString$a;
2365
- var requireObjectCoercible$5 = requireObjectCoercible$9;
2624
+ var requireObjectCoercible$5 = requireObjectCoercible$a;
2366
2625
 
2367
2626
  var charAt$2 = uncurryThis$a(''.charAt);
2368
2627
  var charCodeAt = uncurryThis$a(''.charCodeAt);
@@ -2405,7 +2664,7 @@ var advanceStringIndex$3 = function (S, index, unicode) {
2405
2664
  };
2406
2665
 
2407
2666
  var call$6 = functionCall;
2408
- var anObject$6 = anObject$d;
2667
+ var anObject$6 = anObject$c;
2409
2668
  var isCallable$3 = isCallable$i;
2410
2669
  var classof$1 = classofRaw$2;
2411
2670
  var regexpExec = regexpExec$2;
@@ -2427,11 +2686,11 @@ var regexpExecAbstract = function (R, S) {
2427
2686
 
2428
2687
  var call$5 = functionCall;
2429
2688
  var fixRegExpWellKnownSymbolLogic$3 = fixRegexpWellKnownSymbolLogic;
2430
- var anObject$5 = anObject$d;
2689
+ var anObject$5 = anObject$c;
2431
2690
  var isNullOrUndefined$4 = isNullOrUndefined$7;
2432
2691
  var toLength$2 = toLength$4;
2433
2692
  var toString$6 = toString$a;
2434
- var requireObjectCoercible$4 = requireObjectCoercible$9;
2693
+ var requireObjectCoercible$4 = requireObjectCoercible$a;
2435
2694
  var getMethod$3 = getMethod$5;
2436
2695
  var advanceStringIndex$2 = advanceStringIndex$3;
2437
2696
  var regExpExec$3 = regexpExecAbstract;
@@ -2614,13 +2873,13 @@ var PresetAction;
2614
2873
  })(PresetAction || (PresetAction = {}));
2615
2874
 
2616
2875
  const viewPresetsListFilterOptions = [{
2617
- label: 'My presets',
2876
+ label: 'workspace-my-presets',
2618
2877
  id: 'user',
2619
2878
  type: 'scope',
2620
2879
  isSelected: true,
2621
2880
  isDisabled: false
2622
2881
  }, {
2623
- label: 'System presets',
2882
+ label: 'workspace-system-presets',
2624
2883
  id: 'system',
2625
2884
  type: 'scope',
2626
2885
  isSelected: true,
@@ -2981,7 +3240,7 @@ var regexpGetFlags = function (R) {
2981
3240
 
2982
3241
  var PROPER_FUNCTION_NAME$1 = functionName.PROPER;
2983
3242
  var defineBuiltIn = defineBuiltIn$5;
2984
- var anObject$4 = anObject$d;
3243
+ var anObject$4 = anObject$c;
2985
3244
  var $toString = toString$a;
2986
3245
  var fails$6 = fails$p;
2987
3246
  var getRegExpFlags = regexpGetFlags;
@@ -3010,7 +3269,7 @@ var whitespaces$2 = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u200
3010
3269
  '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
3011
3270
 
3012
3271
  var uncurryThis$9 = functionUncurryThis;
3013
- var requireObjectCoercible$3 = requireObjectCoercible$9;
3272
+ var requireObjectCoercible$3 = requireObjectCoercible$a;
3014
3273
  var toString$5 = toString$a;
3015
3274
  var whitespaces$1 = whitespaces$2;
3016
3275
 
@@ -3131,7 +3390,7 @@ var aConstructor$1 = function (argument) {
3131
3390
  throw new $TypeError$1(tryToString$1(argument) + ' is not a constructor');
3132
3391
  };
3133
3392
 
3134
- var anObject$3 = anObject$d;
3393
+ var anObject$3 = anObject$c;
3135
3394
  var aConstructor = aConstructor$1;
3136
3395
  var isNullOrUndefined$3 = isNullOrUndefined$7;
3137
3396
  var wellKnownSymbol$2 = wellKnownSymbol$e;
@@ -3149,9 +3408,9 @@ var speciesConstructor$1 = function (O, defaultConstructor) {
3149
3408
  var call$3 = functionCall;
3150
3409
  var uncurryThis$7 = functionUncurryThis;
3151
3410
  var fixRegExpWellKnownSymbolLogic$2 = fixRegexpWellKnownSymbolLogic;
3152
- var anObject$2 = anObject$d;
3411
+ var anObject$2 = anObject$c;
3153
3412
  var isNullOrUndefined$2 = isNullOrUndefined$7;
3154
- var requireObjectCoercible$2 = requireObjectCoercible$9;
3413
+ var requireObjectCoercible$2 = requireObjectCoercible$a;
3155
3414
  var speciesConstructor = speciesConstructor$1;
3156
3415
  var advanceStringIndex$1 = advanceStringIndex$3;
3157
3416
  var toLength$1 = toLength$4;
@@ -3275,88 +3534,108 @@ fixRegExpWellKnownSymbolLogic$2('split', function (SPLIT, nativeSplit, maybeCall
3275
3534
  * */
3276
3535
  const getCleanSearchQuery = searchQuery => searchQuery.trim().split(/\s+/).join();
3277
3536
 
3278
- const MAPPRESET_ACTIVE_TITLE = 'New map preset';
3279
- const MAPPRESET_DIALOG_TITLE_SAVE_AS = 'Save map preset as';
3280
- const MAPPRESET_DIALOG_TITLE_DELETE = 'Delete map preset';
3281
- const MAPPRESET_DIALOG_TITLE_EDIT = 'Edit map preset';
3282
- const getSnackbarMessage$1 = (action, title) => {
3283
- // Trim and add quotes
3284
- const trimmedTitle = `"${title.trim()}"`;
3285
- switch (action) {
3286
- case PresetAction.DELETE:
3287
- return `Map preset ${trimmedTitle} successfully deleted`;
3288
- case PresetAction.SAVE_AS:
3289
- return `New map preset ${trimmedTitle} successfully saved`;
3290
- case PresetAction.EDIT:
3291
- return `Map preset ${trimmedTitle} successfully edited`;
3292
- default:
3293
- return `Map preset ${trimmedTitle} successfully saved`;
3294
- }
3295
- };
3296
- const getPresetsApi = () => getApi(API_NAME);
3297
- const emptyMapViewPreset = {
3298
- componentType: 'Map',
3299
- keywords: '',
3300
- scope: 'user',
3301
- title: '',
3302
- initialProps: {
3303
- mapPreset: {}
3304
- }
3305
- };
3306
- // Returns object of applied user filters such as scope/search etc
3307
- // If all filter chips are selected, an empty string is returned for that filter which is interpreted in the BE as "return all" _
3308
- const constructFilterParams$1 = (filters, searchQuery) => {
3309
- // get filters
3310
- const isAllSelectedForFilters = filters.every(filter => filter.isSelected);
3311
- // If all filters are selected, ensure we return nothing for scope
3312
- const {
3313
- scope
3314
- } = isAllSelectedForFilters ? {
3315
- scope: []
3316
- } : filters.reduce((filterList, filter) => {
3317
- if (filter.isSelected && filter.type === 'scope') {
3318
- return Object.assign(Object.assign({}, filter), {
3319
- scope: filterList.scope.concat(filter.id)
3320
- });
3537
+ const WORKSPACE_NAMESPACE = 'workspace';
3538
+ const initWorkspaceTestI18n = () => {
3539
+ i18n.use(initReactI18next).init({
3540
+ lng: 'en',
3541
+ ns: WORKSPACE_NAMESPACE,
3542
+ interpolation: {
3543
+ escapeValue: false
3544
+ },
3545
+ resources: {
3546
+ en: {
3547
+ [WORKSPACE_NAMESPACE]: workspaceTranslations.en
3548
+ },
3549
+ fi: {
3550
+ [WORKSPACE_NAMESPACE]: workspaceTranslations.fi
3551
+ },
3552
+ no: {
3553
+ [WORKSPACE_NAMESPACE]: workspaceTranslations.no
3554
+ },
3555
+ nl: {
3556
+ [WORKSPACE_NAMESPACE]: workspaceTranslations.nl
3557
+ }
3321
3558
  }
3322
- return filterList;
3323
- }, {
3324
- scope: []
3325
- });
3326
- // get search
3327
- const search = getCleanSearchQuery(searchQuery);
3328
- return Object.assign(Object.assign({}, scope.length && {
3329
- scope: scope.toString()
3330
- }), search.length && {
3331
- search
3332
3559
  });
3333
3560
  };
3561
+ initWorkspaceTestI18n();
3562
+ const outsideComponentTranslations = handleOutsideComponentTranslations(workspaceTranslations, WORKSPACE_NAMESPACE);
3563
+ const translateKeyOutsideComponents = (key, params = undefined) => i18n.t(key, Object.assign({
3564
+ ns: WORKSPACE_NAMESPACE
3565
+ }, params));
3566
+ const useWorkspaceTranslation = () => useTranslation(WORKSPACE_NAMESPACE);
3334
3567
 
3335
- const getSnackbarMessage = (action, title) => {
3568
+ const getSnackbarMessage$1 = (action, title) => {
3336
3569
  // Trim and add quotes
3337
- const trimmedTitle = `"${title.trim()}"`;
3570
+ const trimmedTitle = `${title.trim()}`;
3338
3571
  switch (action) {
3339
3572
  case WorkspacePresetAction.SAVE_ALL:
3340
- return `Workspace ${trimmedTitle} and underlying viewpresets successfully saved`;
3573
+ return translateKeyOutsideComponents('workspace-list-success-save-all', {
3574
+ TITLE: trimmedTitle
3575
+ });
3341
3576
  case WorkspacePresetAction.DELETE:
3342
- return `Workspace ${trimmedTitle} successfully deleted`;
3577
+ return translateKeyOutsideComponents('workspace-list-success-delete', {
3578
+ TITLE: trimmedTitle
3579
+ });
3343
3580
  case WorkspacePresetAction.DUPLICATE:
3344
- return `Workspace ${trimmedTitle} successfully saved`;
3581
+ return translateKeyOutsideComponents('workspace-list-success-duplicate', {
3582
+ TITLE: trimmedTitle
3583
+ });
3345
3584
  case WorkspacePresetAction.EDIT:
3346
- return `Workspace ${trimmedTitle} successfully edited`;
3585
+ return translateKeyOutsideComponents('workspace-list-success-edit', {
3586
+ TITLE: trimmedTitle
3587
+ });
3347
3588
  default:
3348
- return `Workspace ${trimmedTitle} successfully saved`;
3589
+ return translateKeyOutsideComponents('workspace-list-success-save', {
3590
+ TITLE: trimmedTitle
3591
+ });
3349
3592
  }
3350
3593
  };
3351
- const emptyMapWorkspace = {
3352
- title: 'New workspace',
3594
+ const getEmptyWorkspaceListItem = () => ({
3595
+ id: undefined,
3596
+ title: translateKeyOutsideComponents('workspace-new'),
3353
3597
  scope: 'system',
3354
3598
  abstract: '',
3599
+ viewType: 'singleWindow'
3600
+ });
3601
+ const emptyMapWorkspace = Object.assign(Object.assign({}, getEmptyWorkspaceListItem()), {
3355
3602
  views: {
3356
3603
  allIds: ['1_screen'],
3357
3604
  byId: {
3358
3605
  '1_screen': {
3359
- title: MAPPRESET_ACTIVE_TITLE,
3606
+ title: translateKeyOutsideComponents('workspace-mappreset-new'),
3607
+ componentType: 'Map',
3608
+ initialProps: {
3609
+ mapPreset: {
3610
+ layers: [],
3611
+ proj: {
3612
+ bbox: {
3613
+ left: 58703.6377,
3614
+ bottom: 6408480.4514,
3615
+ right: 3967387.5161,
3616
+ top: 11520588.9031
3617
+ },
3618
+ srs: 'EPSG:3857'
3619
+ },
3620
+ shouldShowLayerManager: true,
3621
+ dockedLayerManagerSize: 'sizeSmall'
3622
+ },
3623
+ syncGroupsIds: []
3624
+ }
3625
+ }
3626
+ }
3627
+ },
3628
+ mosaicNode: '1_screen'
3629
+ });
3630
+ const getEmptyWorkspacePreset = () => ({
3631
+ title: translateKeyOutsideComponents('workspace-new'),
3632
+ scope: 'system',
3633
+ abstract: '',
3634
+ views: {
3635
+ allIds: ['1_screen'],
3636
+ byId: {
3637
+ '1_screen': {
3638
+ title: translateKeyOutsideComponents('workspace-mappreset-new'),
3360
3639
  componentType: 'Map',
3361
3640
  initialProps: {
3362
3641
  mapPreset: {
@@ -3380,15 +3659,15 @@ const emptyMapWorkspace = {
3380
3659
  },
3381
3660
  mosaicNode: '1_screen',
3382
3661
  viewType: 'singleWindow'
3383
- };
3662
+ });
3384
3663
  const createCustomEmptyMapWorkspace = customMapPreset => {
3385
- const customEmptyMapWorkspace = cloneDeep(emptyMapWorkspace);
3664
+ const customEmptyMapWorkspace = cloneDeep(getEmptyWorkspacePreset());
3386
3665
  if (customMapPreset) {
3387
3666
  customEmptyMapWorkspace.views.byId['1_screen'].initialProps.mapPreset = customMapPreset;
3388
3667
  }
3389
3668
  return customEmptyMapWorkspace;
3390
3669
  };
3391
- const constructFilterParams = (filters, searchQuery) => {
3670
+ const constructFilterParams$1 = (filters, searchQuery) => {
3392
3671
  // get filters
3393
3672
  const {
3394
3673
  scope
@@ -3740,6 +4019,67 @@ const getViewPresetListFilterResultsForView = createSelector(getViewPresetById,
3740
4019
  return Object.values(filteredResults.entities);
3741
4020
  }, selectorMemoizationOptions);
3742
4021
 
4022
+ const getSnackbarMessage = (action, title) => {
4023
+ // Trim and add quotes
4024
+ const trimmedTitle = title.trim();
4025
+ switch (action) {
4026
+ case PresetAction.DELETE:
4027
+ return translateKeyOutsideComponents('workspace-viewpreset-success-delete', {
4028
+ TITLE: trimmedTitle
4029
+ });
4030
+ case PresetAction.SAVE_AS:
4031
+ return translateKeyOutsideComponents('workspace-viewpreset-success-save-as', {
4032
+ TITLE: trimmedTitle
4033
+ });
4034
+ case PresetAction.EDIT:
4035
+ return translateKeyOutsideComponents('workspace-viewpreset-success-edit', {
4036
+ TITLE: trimmedTitle
4037
+ });
4038
+ default:
4039
+ return translateKeyOutsideComponents('workspace-viewpreset-success-save', {
4040
+ TITLE: trimmedTitle
4041
+ });
4042
+ }
4043
+ };
4044
+ const getPresetsApi = () => getApi(API_NAME);
4045
+ const emptyMapViewPreset = {
4046
+ componentType: 'Map',
4047
+ keywords: '',
4048
+ scope: 'user',
4049
+ title: '',
4050
+ initialProps: {
4051
+ mapPreset: {}
4052
+ }
4053
+ };
4054
+ // Returns object of applied user filters such as scope/search etc
4055
+ // If all filter chips are selected, an empty string is returned for that filter which is interpreted in the BE as "return all" _
4056
+ const constructFilterParams = (filters, searchQuery) => {
4057
+ // get filters
4058
+ const isAllSelectedForFilters = filters.every(filter => filter.isSelected);
4059
+ // If all filters are selected, ensure we return nothing for scope
4060
+ const {
4061
+ scope
4062
+ } = isAllSelectedForFilters ? {
4063
+ scope: []
4064
+ } : filters.reduce((filterList, filter) => {
4065
+ if (filter.isSelected && filter.type === 'scope') {
4066
+ return Object.assign(Object.assign({}, filter), {
4067
+ scope: filterList.scope.concat(filter.id)
4068
+ });
4069
+ }
4070
+ return filterList;
4071
+ }, {
4072
+ scope: []
4073
+ });
4074
+ // get search
4075
+ const search = getCleanSearchQuery(searchQuery);
4076
+ return Object.assign(Object.assign({}, scope.length && {
4077
+ scope: scope.toString()
4078
+ }), search.length && {
4079
+ search
4080
+ });
4081
+ };
4082
+
3743
4083
  const workspaceStore = store => (store === null || store === void 0 ? void 0 : store.workspace) || initialState$1;
3744
4084
  /**
3745
4085
  * Gets workspace state
@@ -3848,7 +4188,7 @@ const getWorkspaceData = createSelector(getWorkspaceState, getViewPresetsStore,
3848
4188
  };
3849
4189
  }, selectorMemoizationOptions);
3850
4190
  const getViewPresetToSendToBackend = createSelector(getViewById, mapSelectors.getMapPreset, syncGroupsSelectors.getAllTargetGroupsForSource, (workspaceView, mapPreset, syncGroupsIds) => {
3851
- const title = (workspaceView === null || workspaceView === void 0 ? void 0 : workspaceView.title) || MAPPRESET_ACTIVE_TITLE;
4191
+ const title = (workspaceView === null || workspaceView === void 0 ? void 0 : workspaceView.title) || outsideComponentTranslations['workspace-mappreset-new'];
3852
4192
  const scope = (workspaceView === null || workspaceView === void 0 ? void 0 : workspaceView.scope) || 'system';
3853
4193
  return Object.assign(Object.assign({}, emptyMapViewPreset), {
3854
4194
  id: workspaceView === null || workspaceView === void 0 ? void 0 : workspaceView.id,
@@ -3862,21 +4202,21 @@ const getViewPresetToSendToBackend = createSelector(getViewById, mapSelectors.ge
3862
4202
  }, selectorMemoizationOptions);
3863
4203
 
3864
4204
  var selectors$1 = /*#__PURE__*/Object.freeze({
3865
- __proto__: null,
3866
- getWorkspaceState: getWorkspaceState,
3867
- getInitialViewMapPreset: getInitialViewMapPreset,
3868
- getMosaicNode: getMosaicNode,
3869
- getViewById: getViewById,
3870
- getViewIds: getViewIds,
3871
- getShouldPreventClose: getShouldPreventClose,
3872
- isWorkspaceLoading: isWorkspaceLoading,
3873
- getWorkspaceError: getWorkspaceError,
3874
- getSelectedWorkspaceTitle: getSelectedWorkspaceTitle,
3875
- hasWorkspaceChanges: hasWorkspaceChanges,
3876
- getViewType: getViewType,
3877
- getSelectedWorkspaceScope: getSelectedWorkspaceScope,
3878
- getWorkspaceData: getWorkspaceData,
3879
- getViewPresetToSendToBackend: getViewPresetToSendToBackend
4205
+ __proto__: null,
4206
+ getWorkspaceState: getWorkspaceState,
4207
+ getInitialViewMapPreset: getInitialViewMapPreset,
4208
+ getMosaicNode: getMosaicNode,
4209
+ getViewById: getViewById,
4210
+ getViewIds: getViewIds,
4211
+ getShouldPreventClose: getShouldPreventClose,
4212
+ isWorkspaceLoading: isWorkspaceLoading,
4213
+ getWorkspaceError: getWorkspaceError,
4214
+ getSelectedWorkspaceTitle: getSelectedWorkspaceTitle,
4215
+ hasWorkspaceChanges: hasWorkspaceChanges,
4216
+ getViewType: getViewType,
4217
+ getSelectedWorkspaceScope: getSelectedWorkspaceScope,
4218
+ getWorkspaceData: getWorkspaceData,
4219
+ getViewPresetToSendToBackend: getViewPresetToSendToBackend
3880
4220
  });
3881
4221
 
3882
4222
  /* *
@@ -3955,7 +4295,7 @@ var proxyAccessor$1 = function (Target, Source, key) {
3955
4295
  };
3956
4296
 
3957
4297
  var isCallable$1 = isCallable$i;
3958
- var isObject$2 = isObject$b;
4298
+ var isObject$2 = isObject$c;
3959
4299
  var setPrototypeOf$1 = objectSetPrototypeOf;
3960
4300
 
3961
4301
  // makes subclassing work correct for wrapped built-ins
@@ -3979,7 +4319,7 @@ var normalizeStringArgument$1 = function (argument, $default) {
3979
4319
  return argument === undefined ? arguments.length < 2 ? '' : $default : toString$3(argument);
3980
4320
  };
3981
4321
 
3982
- var isObject$1 = isObject$b;
4322
+ var isObject$1 = isObject$c;
3983
4323
  var createNonEnumerableProperty$2 = createNonEnumerableProperty$8;
3984
4324
 
3985
4325
  // `InstallErrorCause` abstract operation
@@ -4097,7 +4437,7 @@ var wrapErrorConstructorWithCause$1 = function (FULL_NAME, wrapper, FORCED, IS_A
4097
4437
 
4098
4438
  /* eslint-disable no-unused-vars -- required for functions `.length` */
4099
4439
  var $$2 = _export;
4100
- var global$1 = global$h;
4440
+ var global$1 = global$g;
4101
4441
  var apply$1 = functionApply;
4102
4442
  var wrapErrorConstructorWithCause = wrapErrorConstructorWithCause$1;
4103
4443
 
@@ -4339,9 +4679,9 @@ var sameValue$1 = Object.is || function is(x, y) {
4339
4679
 
4340
4680
  var call$1 = functionCall;
4341
4681
  var fixRegExpWellKnownSymbolLogic$1 = fixRegexpWellKnownSymbolLogic;
4342
- var anObject$1 = anObject$d;
4682
+ var anObject$1 = anObject$c;
4343
4683
  var isNullOrUndefined$1 = isNullOrUndefined$7;
4344
- var requireObjectCoercible$1 = requireObjectCoercible$9;
4684
+ var requireObjectCoercible$1 = requireObjectCoercible$a;
4345
4685
  var sameValue = sameValue$1;
4346
4686
  var toString$1 = toString$a;
4347
4687
  var getMethod$1 = getMethod$5;
@@ -6490,13 +6830,13 @@ var call = functionCall;
6490
6830
  var uncurryThis$2 = functionUncurryThis;
6491
6831
  var fixRegExpWellKnownSymbolLogic = fixRegexpWellKnownSymbolLogic;
6492
6832
  var fails = fails$p;
6493
- var anObject = anObject$d;
6833
+ var anObject = anObject$c;
6494
6834
  var isCallable = isCallable$i;
6495
6835
  var isNullOrUndefined = isNullOrUndefined$7;
6496
6836
  var toIntegerOrInfinity$1 = toIntegerOrInfinity$5;
6497
6837
  var toLength = toLength$4;
6498
6838
  var toString = toString$a;
6499
- var requireObjectCoercible = requireObjectCoercible$9;
6839
+ var requireObjectCoercible = requireObjectCoercible$a;
6500
6840
  var advanceStringIndex = advanceStringIndex$3;
6501
6841
  var getMethod = getMethod$5;
6502
6842
  var getSubstitution = getSubstitution$1;
@@ -6951,7 +7291,7 @@ function* fetchWorkspaceListSaga({
6951
7291
  } catch (error) {
6952
7292
  yield put(workspaceListActions.errorWorkspaceList({
6953
7293
  error: {
6954
- message: 'Error fetching workspace preset list',
7294
+ message: translateKeyOutsideComponents('workspace-list-error'),
6955
7295
  type: WorkspaceListErrorType.GENERIC
6956
7296
  }
6957
7297
  }));
@@ -6966,7 +7306,7 @@ function* onSuccessWorkspacePresetsActionSaga({
6966
7306
  title
6967
7307
  } = payload;
6968
7308
  yield put(snackbarActions.openSnackbar({
6969
- message: getSnackbarMessage(action, title)
7309
+ message: getSnackbarMessage$1(action, title)
6970
7310
  }));
6971
7311
  // if active workspace has been deleted, empty out url
6972
7312
  if (action === WorkspacePresetAction.DELETE && payload.currentActiveWorkspaceId && workspaceId === payload.currentActiveWorkspaceId) {
@@ -6983,7 +7323,7 @@ function* onSuccessWorkspacePresetsActionSaga({
6983
7323
  // Retrieve new list with current filter
6984
7324
  const workspaceFilters = yield select(getWorkspaceListFilters);
6985
7325
  const searchQuery = yield select(getWorkspaceListSearchQuery);
6986
- yield call$g(fetchWorkspaceListSaga, workspaceListActions.fetchWorkspaceList(constructFilterParams(workspaceFilters, searchQuery)));
7326
+ yield call$g(fetchWorkspaceListSaga, workspaceListActions.fetchWorkspaceList(constructFilterParams$1(workspaceFilters, searchQuery)));
6987
7327
  }
6988
7328
  function* saveAllViewPresetSaga(viewPresetEntity, workspaceTitle) {
6989
7329
  var _a, _b;
@@ -7169,7 +7509,6 @@ function* rootSaga$1() {
7169
7509
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7170
7510
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
7171
7511
  * */
7172
- const MESSAGE_SAVE_PRESET = 'Map preset not saved: an error occurred during saving. Please try again later.';
7173
7512
  function* fetchInitialViewPresetsSaga() {
7174
7513
  try {
7175
7514
  const presetsApi = yield call$g(getPresetsApi);
@@ -7183,7 +7522,7 @@ function* fetchInitialViewPresetsSaga() {
7183
7522
  } catch (error) {
7184
7523
  yield put(viewPresetActions.errorInitialViewPresets({
7185
7524
  error: {
7186
- message: 'Error fetching map preset list',
7525
+ message: translateKeyOutsideComponents('workspace-mappreset-error-fetch'),
7187
7526
  type: ViewPresetType.PRESET_LIST
7188
7527
  }
7189
7528
  }));
@@ -7209,7 +7548,7 @@ function* fetchViewPresetsSaga({
7209
7548
  } catch (error) {
7210
7549
  yield put(viewPresetActions.errorViewPreset({
7211
7550
  error: {
7212
- message: 'Error fetching map preset list',
7551
+ message: translateKeyOutsideComponents('workspace-mappreset-error-fetch'),
7213
7552
  type: ViewPresetType.PRESET_LIST
7214
7553
  },
7215
7554
  panelId
@@ -7228,7 +7567,7 @@ function* saveViewPresetSaga({
7228
7567
  const presetsApi = yield call$g(getPresetsApi);
7229
7568
  yield call$g(presetsApi.saveViewPreset, viewPresetId, viewPreset);
7230
7569
  yield put(snackbarActions.openSnackbar({
7231
- message: getSnackbarMessage$1(PresetAction.SAVE, viewPreset.title)
7570
+ message: getSnackbarMessage(PresetAction.SAVE, viewPreset.title)
7232
7571
  }));
7233
7572
  yield put(viewPresetActions.savedViewPreset({
7234
7573
  panelId,
@@ -7237,7 +7576,7 @@ function* saveViewPresetSaga({
7237
7576
  } catch (error) {
7238
7577
  yield put(viewPresetActions.errorViewPreset({
7239
7578
  error: {
7240
- message: MESSAGE_SAVE_PRESET,
7579
+ message: translateKeyOutsideComponents('workspace-mappreset-error-save'),
7241
7580
  type: ViewPresetType.PRESET_DETAIL
7242
7581
  },
7243
7582
  panelId,
@@ -7293,7 +7632,7 @@ function* onSuccessViewPresetActionSaga({
7293
7632
  } = payload;
7294
7633
  try {
7295
7634
  yield put(snackbarActions.openSnackbar({
7296
- message: getSnackbarMessage$1(action, title)
7635
+ message: getSnackbarMessage(action, title)
7297
7636
  }));
7298
7637
  const activeMapPresetId = yield select(getViewPresetActiveId, panelId);
7299
7638
  // if active preset has been deleted, select the empty new preset
@@ -7309,7 +7648,7 @@ function* onSuccessViewPresetActionSaga({
7309
7648
  const viewPresetSearchQuery = yield select(getViewPresetListSearchQueryForView, panelId);
7310
7649
  yield call$g(fetchViewPresetsSaga, viewPresetActions.fetchViewPresets({
7311
7650
  panelId,
7312
- filterParams: constructFilterParams$1(viewPresetFilters, viewPresetSearchQuery)
7651
+ filterParams: constructFilterParams(viewPresetFilters, viewPresetSearchQuery)
7313
7652
  }));
7314
7653
  if (action !== PresetAction.EDIT) {
7315
7654
  yield put(viewPresetActions.setViewPresetHasChanges({
@@ -7362,6 +7701,48 @@ const workspaceModuleConfig = {
7362
7701
  sagas: [workspaceSaga, rootSaga$1, rootSaga]
7363
7702
  };
7364
7703
 
7704
+ /******************************************************************************
7705
+ Copyright (c) Microsoft Corporation.
7706
+
7707
+ Permission to use, copy, modify, and/or distribute this software for any
7708
+ purpose with or without fee is hereby granted.
7709
+
7710
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
7711
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
7712
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
7713
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
7714
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
7715
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
7716
+ PERFORMANCE OF THIS SOFTWARE.
7717
+ ***************************************************************************** */
7718
+
7719
+ function __rest(s, e) {
7720
+ var t = {};
7721
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
7722
+ t[p] = s[p];
7723
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7724
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7725
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
7726
+ t[p[i]] = s[p[i]];
7727
+ }
7728
+ return t;
7729
+ }
7730
+
7731
+ function __awaiter(thisArg, _arguments, P, generator) {
7732
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7733
+ return new (P || (P = Promise))(function (resolve, reject) {
7734
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7735
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7736
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7737
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
7738
+ });
7739
+ }
7740
+
7741
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
7742
+ var e = new Error(message);
7743
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
7744
+ };
7745
+
7365
7746
  /* eslint-disable @typescript-eslint/ban-ts-comment */
7366
7747
  const devToolsStateSanitizer = {
7367
7748
  stateSanitizer: state => {
@@ -7404,6 +7785,10 @@ const WorkspaceWrapperProvider = withEggs([...coreModuleConfig, timeSeriesModule
7404
7785
  }) => ( /*#__PURE__*/React__default.createElement(WorkspaceThemeProvider, {
7405
7786
  theme: theme
7406
7787
  }, children)));
7788
+ const DemoWrapper = _a => {
7789
+ var props = __rest(_a, []);
7790
+ return /*#__PURE__*/React__default.createElement(WorkspaceI18nProvider, null, /*#__PURE__*/React__default.createElement(WorkspaceThemeProvider, Object.assign({}, props)));
7791
+ };
7407
7792
  const defaultAuthConfig = {
7408
7793
  isLoggedIn: true,
7409
7794
  auth: {
@@ -7421,7 +7806,7 @@ const WorkspaceWrapperProviderWithStore = ({
7421
7806
  createApi: _createApi = createApi,
7422
7807
  theme,
7423
7808
  auth: _auth = defaultAuthConfig
7424
- }) => ( /*#__PURE__*/React__default.createElement(AuthenticationProvider, {
7809
+ }) => ( /*#__PURE__*/React__default.createElement(WorkspaceI18nProvider, null, /*#__PURE__*/React__default.createElement(AuthenticationProvider, {
7425
7810
  value: _auth
7426
7811
  }, /*#__PURE__*/React__default.createElement(ApiProvider, {
7427
7812
  createApi: _createApi,
@@ -7430,7 +7815,14 @@ const WorkspaceWrapperProviderWithStore = ({
7430
7815
  store: _store
7431
7816
  }, /*#__PURE__*/React__default.createElement(WorkspaceWrapperProvider, {
7432
7817
  theme: theme
7433
- }, /*#__PURE__*/React__default.createElement(SnackbarWrapperConnect, null, /*#__PURE__*/React__default.createElement(ConfirmationServiceProvider, null, children)))))));
7818
+ }, /*#__PURE__*/React__default.createElement(SnackbarWrapperConnect, null, /*#__PURE__*/React__default.createElement(ConfirmationServiceProvider, null, children))))))));
7819
+ const WorkspaceI18nProvider = ({
7820
+ children
7821
+ }) => {
7822
+ return /*#__PURE__*/React__default.createElement(I18nextProvider, {
7823
+ i18n: i18n
7824
+ }, children);
7825
+ };
7434
7826
 
7435
7827
  /* *
7436
7828
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -7463,48 +7855,6 @@ const WorkspaceModuleProvider = ({
7463
7855
  }, children);
7464
7856
  };
7465
7857
 
7466
- /******************************************************************************
7467
- Copyright (c) Microsoft Corporation.
7468
-
7469
- Permission to use, copy, modify, and/or distribute this software for any
7470
- purpose with or without fee is hereby granted.
7471
-
7472
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
7473
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
7474
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
7475
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
7476
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
7477
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
7478
- PERFORMANCE OF THIS SOFTWARE.
7479
- ***************************************************************************** */
7480
-
7481
- function __rest(s, e) {
7482
- var t = {};
7483
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
7484
- t[p] = s[p];
7485
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7486
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7487
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
7488
- t[p[i]] = s[p[i]];
7489
- }
7490
- return t;
7491
- }
7492
-
7493
- function __awaiter(thisArg, _arguments, P, generator) {
7494
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7495
- return new (P || (P = Promise))(function (resolve, reject) {
7496
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7497
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7498
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7499
- step((generator = generator.apply(thisArg, _arguments || [])).next());
7500
- });
7501
- }
7502
-
7503
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
7504
- var e = new Error(message);
7505
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
7506
- };
7507
-
7508
7858
  // takes a component and connects module methods with workspace store
7509
7859
  const ComponentsLookUpWrapper = _a => {
7510
7860
  var {
@@ -7586,7 +7936,7 @@ var flattenIntoArray_1 = flattenIntoArray$1;
7586
7936
 
7587
7937
  var isArray = isArray$3;
7588
7938
  var isConstructor = isConstructor$2;
7589
- var isObject = isObject$b;
7939
+ var isObject = isObject$c;
7590
7940
  var wellKnownSymbol = wellKnownSymbol$e;
7591
7941
 
7592
7942
  var SPECIES = wellKnownSymbol('species');
@@ -7655,6 +8005,9 @@ const WorkspaceControls = ({
7655
8005
  const {
7656
8006
  mosaicActions: actions
7657
8007
  } = React.useContext(MosaicContext);
8008
+ const {
8009
+ t
8010
+ } = useWorkspaceTranslation();
7658
8011
  const mosaicNode = useSelector(store => getMosaicNode(store));
7659
8012
  const [stateAfterExpand, setStateAfterExpand] = React.useState();
7660
8013
  const [stateBeforeExpand, setStateBeforeExpand] = React.useState(mosaicNode);
@@ -7674,9 +8027,9 @@ const WorkspaceControls = ({
7674
8027
  const onClose = () => __awaiter(void 0, void 0, void 0, function* () {
7675
8028
  if (_shouldPreventCloseView) {
7676
8029
  yield confirmDialog({
7677
- title: 'Whoops',
7678
- description: 'Are you sure you want to close this window? All changes will be lost.',
7679
- confirmLabel: 'Close window'
8030
+ title: t('workspace-control-close-message-title'),
8031
+ description: t('workspace-control-close-message-description'),
8032
+ confirmLabel: t('workspace-control-close')
7680
8033
  });
7681
8034
  actions.remove(path);
7682
8035
  } else {
@@ -7695,7 +8048,7 @@ const WorkspaceControls = ({
7695
8048
  second: newNode
7696
8049
  });
7697
8050
  },
7698
- tooltipTitle: "Split window horizontally"
8051
+ tooltipTitle: t('workspace-control-split-horizontal')
7699
8052
  }, /*#__PURE__*/React.createElement(SplitVertical, null)), /*#__PURE__*/React.createElement(CustomIconButton, {
7700
8053
  "data-testid": "split-vertical-btn",
7701
8054
  sx: buttonStyle,
@@ -7708,7 +8061,7 @@ const WorkspaceControls = ({
7708
8061
  second: newNode
7709
8062
  });
7710
8063
  },
7711
- tooltipTitle: "Split window vertically"
8064
+ tooltipTitle: t('workspace-control-split-vertical')
7712
8065
  }, /*#__PURE__*/React.createElement(SplitHorizontal, null)), !enableUnexpand || isString(mosaicNode) ? ( /*#__PURE__*/React.createElement(CustomIconButton, {
7713
8066
  "data-testid": "expand-btn",
7714
8067
  sx: buttonStyle,
@@ -7717,7 +8070,7 @@ const WorkspaceControls = ({
7717
8070
  setEnableUnexpand(true);
7718
8071
  actions.expand(path, 70);
7719
8072
  },
7720
- tooltipTitle: "Expand window"
8073
+ tooltipTitle: t('workspace-control-expand')
7721
8074
  }, /*#__PURE__*/React.createElement(Expand, null))) : ( /*#__PURE__*/React.createElement(CustomIconButton, {
7722
8075
  "data-testid": "unexpand-btn",
7723
8076
  sx: buttonStyle,
@@ -7725,12 +8078,12 @@ const WorkspaceControls = ({
7725
8078
  const stateBeforeExpandCopy = isString(stateBeforeExpand) ? stateBeforeExpand : Object.assign({}, stateBeforeExpand);
7726
8079
  actions.replaceWith([], stateBeforeExpandCopy);
7727
8080
  },
7728
- tooltipTitle: "Unexpand window"
8081
+ tooltipTitle: t('workspace-control-unexpand')
7729
8082
  }, /*#__PURE__*/React.createElement(UnExpand, null))), /*#__PURE__*/React.createElement(CustomIconButton, {
7730
8083
  "data-testid": "close-btn",
7731
8084
  sx: buttonStyle,
7732
8085
  onClick: onClose,
7733
- tooltipTitle: "Close window",
8086
+ tooltipTitle: t('workspace-control-close'),
7734
8087
  id: "close-window-button"
7735
8088
  }, /*#__PURE__*/React.createElement(Close, null)));
7736
8089
  };
@@ -7753,24 +8106,32 @@ const WorkspaceControls = ({
7753
8106
  * */
7754
8107
  const ViewLoading = ({
7755
8108
  viewPresetId
7756
- }) => ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LinearProgress, {
7757
- "data-testid": "loading-bar",
7758
- color: "secondary",
7759
- sx: {
7760
- position: 'absolute',
7761
- width: '100%',
7762
- top: 0
7763
- }
7764
- }), /*#__PURE__*/React.createElement(Typography, {
7765
- sx: {
7766
- margin: 1
7767
- }
7768
- }, "Loading ", viewPresetId)));
8109
+ }) => {
8110
+ const {
8111
+ t
8112
+ } = useWorkspaceTranslation();
8113
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LinearProgress, {
8114
+ "data-testid": "loading-bar",
8115
+ color: "secondary",
8116
+ sx: {
8117
+ position: 'absolute',
8118
+ width: '100%',
8119
+ top: 0
8120
+ }
8121
+ }), /*#__PURE__*/React.createElement(Typography, {
8122
+ sx: {
8123
+ margin: 1
8124
+ }
8125
+ }, t('workspace-loading'), " ", viewPresetId));
8126
+ };
7769
8127
  const ViewError = ({
7770
8128
  viewPresetId,
7771
8129
  mosaicNodeId
7772
8130
  }) => {
7773
8131
  const dispatch = useDispatch();
8132
+ const {
8133
+ t
8134
+ } = useWorkspaceTranslation();
7774
8135
  const fetchWorkspaceViewPreset = React.useCallback(() => {
7775
8136
  dispatch(workspaceActions.fetchWorkspaceViewPreset({
7776
8137
  viewPresetId,
@@ -7778,10 +8139,12 @@ const ViewError = ({
7778
8139
  }));
7779
8140
  }, [dispatch, viewPresetId, mosaicNodeId]);
7780
8141
  return /*#__PURE__*/React.createElement(AlertBanner, {
7781
- title: `Failed to fetch view ${viewPresetId}`,
8142
+ title: t('workspace-viewpresets-fail-fetch', {
8143
+ VIEWPRESET_ID: viewPresetId
8144
+ }),
7782
8145
  shouldClose: true,
7783
8146
  actionButtonProps: {
7784
- title: 'Try again',
8147
+ title: t('workspace-retry'),
7785
8148
  onClick: fetchWorkspaceViewPreset
7786
8149
  }
7787
8150
  });
@@ -7905,18 +8268,21 @@ const WorkspaceSelectListRow = ({
7905
8268
  searchQuery: _searchQuery = '',
7906
8269
  testIdPrefix: _testIdPrefix = 'workspace'
7907
8270
  }) => {
8271
+ const {
8272
+ t
8273
+ } = useWorkspaceTranslation();
7908
8274
  const onDuplicate = () => {
7909
8275
  onClickWorkspacePresetOption(workspacePreset.id, WorkspacePresetAction.DUPLICATE, workspacePreset);
7910
8276
  };
7911
8277
  const onEdit = () => {
7912
8278
  onClickWorkspacePresetOption(workspacePreset.id, WorkspacePresetAction.EDIT, workspacePreset);
7913
8279
  };
7914
- const editTitle = _testIdPrefix === 'viewpreset' ? 'Edit (name)' : 'Edit (name and abstract)';
8280
+ const editTitle = _testIdPrefix === 'viewpreset' ? 'workspace-edit' : 'workspace-edit-both';
7915
8281
  const menuItems = [{
7916
- text: 'Duplicate',
8282
+ text: t('workspace-duplicate'),
7917
8283
  action: onDuplicate
7918
8284
  }, ...(workspacePreset.scope === 'user' ? [{
7919
- text: editTitle,
8285
+ text: t(editTitle),
7920
8286
  action: onEdit
7921
8287
  }] : [])];
7922
8288
  return /*#__PURE__*/React__default.createElement(ListItem, {
@@ -7977,10 +8343,10 @@ const WorkspaceSelectListRow = ({
7977
8343
  buttonTestId: `${_testIdPrefix}-listOptionsButton`,
7978
8344
  menuPosition: "right",
7979
8345
  menuItems: menuItems,
7980
- menuTitle: "Options",
8346
+ menuTitle: t('workspace-options'),
7981
8347
  isDefaultOpen: _isOptionsMenuOpen
7982
8348
  }), workspacePreset.scope === 'user' && ( /*#__PURE__*/React__default.createElement(CustomIconButton, {
7983
- tooltipTitle: "Delete preset",
8349
+ tooltipTitle: t('workspace-delete-tooltip'),
7984
8350
  onClick: event => {
7985
8351
  event.stopPropagation();
7986
8352
  onClickWorkspacePresetOption(workspacePreset.id, WorkspacePresetAction.DELETE, workspacePreset);
@@ -8048,26 +8414,28 @@ const FilterChip = ({
8048
8414
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
8049
8415
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
8050
8416
  * */
8051
- const allLabel = 'All';
8052
8417
  const FilterList = ({
8053
8418
  filters: _filters = workspaceListFilterOptions,
8054
8419
  onChipClick: _onChipClick = () => {},
8055
8420
  isAllSelected: _isAllSelected = false
8056
8421
  }) => {
8422
+ const {
8423
+ t
8424
+ } = useWorkspaceTranslation();
8057
8425
  return /*#__PURE__*/React.createElement(Stack, {
8058
8426
  direction: "row",
8059
8427
  spacing: 1,
8060
8428
  "data-testid": "filterList"
8061
8429
  }, /*#__PURE__*/React.createElement(FilterChip, {
8062
8430
  id: "all",
8063
- label: allLabel,
8431
+ label: t('workspace-all-button'),
8064
8432
  isSelected: _isAllSelected,
8065
8433
  handleClick: key => _onChipClick(key, !_isAllSelected)
8066
8434
  }), _filters.map(filter => {
8067
8435
  return /*#__PURE__*/React.createElement(FilterChip, {
8068
8436
  key: filter.id,
8069
8437
  id: filter.id,
8070
- label: filter.label,
8438
+ label: t(filter.label),
8071
8439
  isSelected: _isAllSelected ? false : filter.isSelected,
8072
8440
  isDisabled: filter.isDisabled,
8073
8441
  handleClick: key => {
@@ -8096,11 +8464,14 @@ const ClearButton = ({
8096
8464
  size: "large"
8097
8465
  }, /*#__PURE__*/React.createElement(Clear, null)));
8098
8466
  const SearchField = ({
8099
- label: _label = 'Search',
8100
8467
  valueChanged,
8101
8468
  value: _value = ''
8102
8469
  }) => {
8103
8470
  const [localValue, setLocalValue] = React.useState(_value);
8471
+ const {
8472
+ t
8473
+ } = useWorkspaceTranslation();
8474
+ const label = t('workspace-search');
8104
8475
  // eslint-disable-next-line react-hooks/exhaustive-deps
8105
8476
  const handleValueChangeDebounced = React.useCallback(debounce$1(valueChanged, DEBOUNCE_TIMEOUT), []);
8106
8477
  return /*#__PURE__*/React.createElement(TextField, {
@@ -8111,7 +8482,7 @@ const SearchField = ({
8111
8482
  paddingTop: '18px'
8112
8483
  }
8113
8484
  },
8114
- label: _label,
8485
+ label: label,
8115
8486
  value: localValue,
8116
8487
  autoFocus: true,
8117
8488
  fullWidth: true,
@@ -8128,7 +8499,7 @@ const SearchField = ({
8128
8499
  valueChanged('');
8129
8500
  }
8130
8501
  })) : ( /*#__PURE__*/React.createElement(SearchButton, {
8131
- label: _label
8502
+ label: label
8132
8503
  }))))
8133
8504
  }
8134
8505
  });
@@ -8174,13 +8545,6 @@ const WorkspaceFilter = ({
8174
8545
  })));
8175
8546
  };
8176
8547
 
8177
- const emptyWorkspaceListItem = {
8178
- id: emptyMapWorkspace.id,
8179
- title: emptyMapWorkspace.title,
8180
- scope: emptyMapWorkspace.scope,
8181
- viewType: emptyMapWorkspace.viewType,
8182
- abstract: emptyMapWorkspace.abstract
8183
- };
8184
8548
  const MIN_HEIGHT_SCROLLABLE_LIST = 88; // Slightly less than 2 rows
8185
8549
  const LIST_PADDING_TOP = 8;
8186
8550
  const DEFAULT_RESULTS_HEIGHT = 22;
@@ -8194,9 +8558,12 @@ const WorkspaceSelectList = ({
8194
8558
  hideNewWorkspace,
8195
8559
  isLoggedIn,
8196
8560
  searchQuery,
8197
- newPreset: _newPreset = emptyWorkspaceListItem,
8561
+ newPreset: _newPreset = getEmptyWorkspaceListItem(),
8198
8562
  testIdPrefix: _testIdPrefix = 'workspace'
8199
8563
  }) => {
8564
+ const {
8565
+ t
8566
+ } = useWorkspaceTranslation();
8200
8567
  const items = React.useMemo(() => !hideNewWorkspace ? [_newPreset, ...workspacePresets] : workspacePresets, [hideNewWorkspace, _newPreset, workspacePresets]);
8201
8568
  return /*#__PURE__*/React.createElement(Box, {
8202
8569
  "data-testid": `${_testIdPrefix}-selectList`,
@@ -8209,7 +8576,7 @@ const WorkspaceSelectList = ({
8209
8576
  marginBottom: '4px',
8210
8577
  fontSize: '12px'
8211
8578
  }
8212
- }, workspacePresets.length, " results"), /*#__PURE__*/React.createElement(AutoSizer, null, ({
8579
+ }, workspacePresets.length, " ", t('workspace-results')), /*#__PURE__*/React.createElement(AutoSizer, null, ({
8213
8580
  height: _height = 0,
8214
8581
  width: _width = 0
8215
8582
  }) => ( /*#__PURE__*/React.createElement(Box, {
@@ -8241,11 +8608,12 @@ const WorkspaceSelectList = ({
8241
8608
  })))));
8242
8609
  };
8243
8610
 
8244
- const ERROR_TITLE = 'View presets not available';
8245
- const ERROR_RETRY = 'Try again';
8246
8611
  const ViewPresetMenuListConnect = ({
8247
8612
  panelId
8248
8613
  }) => {
8614
+ const {
8615
+ t
8616
+ } = useWorkspaceTranslation();
8249
8617
  const viewPresets = useSelector(store => getFilteredViewPresetListForView(store, panelId));
8250
8618
  const activeViewPresetId = useSelector(store => getViewPresetActiveId(store, panelId));
8251
8619
  const currentMapPreset = useSelector(store => mapSelectors.getMapPreset(store, panelId));
@@ -8281,7 +8649,7 @@ const ViewPresetMenuListConnect = ({
8281
8649
  }));
8282
8650
  }, [dispatch, panelId]);
8283
8651
  const fetchViewPresets = React.useCallback(() => {
8284
- const filterParams = constructFilterParams$1(viewPresetListFilters, viewPresetListSearchQuery);
8652
+ const filterParams = constructFilterParams(viewPresetListFilters, viewPresetListSearchQuery);
8285
8653
  dispatch(viewPresetActions.fetchViewPresets({
8286
8654
  panelId,
8287
8655
  filterParams
@@ -8292,7 +8660,7 @@ const ViewPresetMenuListConnect = ({
8292
8660
  case WorkspacePresetAction.DUPLICATE:
8293
8661
  {
8294
8662
  openViewPresetsDialog({
8295
- title: MAPPRESET_DIALOG_TITLE_SAVE_AS,
8663
+ title: t('workspace-mappreset-save-as'),
8296
8664
  action: PresetAction.SAVE_AS,
8297
8665
  viewPresetId: presetId,
8298
8666
  panelId,
@@ -8310,7 +8678,7 @@ const ViewPresetMenuListConnect = ({
8310
8678
  {
8311
8679
  const presetTitle = (preset === null || preset === void 0 ? void 0 : preset.title) || '';
8312
8680
  openViewPresetsDialog({
8313
- title: MAPPRESET_DIALOG_TITLE_EDIT,
8681
+ title: t('workspace-mappreset-dialog-title-edit'),
8314
8682
  action: PresetAction.EDIT,
8315
8683
  panelId,
8316
8684
  viewPresetId: presetId,
@@ -8326,7 +8694,7 @@ const ViewPresetMenuListConnect = ({
8326
8694
  case WorkspacePresetAction.DELETE:
8327
8695
  {
8328
8696
  openViewPresetsDialog({
8329
- title: MAPPRESET_DIALOG_TITLE_DELETE,
8697
+ title: t('workspace-mappreset-dialog-title-delete'),
8330
8698
  action: PresetAction.DELETE,
8331
8699
  viewPresetId: presetId,
8332
8700
  panelId,
@@ -8381,9 +8749,9 @@ const ViewPresetMenuListConnect = ({
8381
8749
  top: 0
8382
8750
  }
8383
8751
  })), !isViewPresetsListFetching && errorViewPresetsList && ( /*#__PURE__*/React.createElement(AlertBanner, {
8384
- title: ERROR_TITLE,
8752
+ title: t('workspace-viewpresets-error'),
8385
8753
  actionButtonProps: {
8386
- title: ERROR_RETRY,
8754
+ title: t('workspace-retry'),
8387
8755
  onClick: fetchViewPresets
8388
8756
  }
8389
8757
  })), /*#__PURE__*/React.createElement(Box, {
@@ -8402,9 +8770,8 @@ const ViewPresetMenuListConnect = ({
8402
8770
  currentSelectedId: activeViewPresetId || undefined,
8403
8771
  onClickPreset: selectViewPreset,
8404
8772
  onClickWorkspacePresetOption: onClickViewPresetOption,
8405
- newPreset: Object.assign(Object.assign({}, emptyWorkspaceListItem), {
8406
- id: undefined,
8407
- title: MAPPRESET_ACTIVE_TITLE
8773
+ newPreset: Object.assign(Object.assign({}, getEmptyWorkspaceListItem()), {
8774
+ title: t('workspace-mappreset-new')
8408
8775
  }),
8409
8776
  isLoggedIn: isLoggedIn,
8410
8777
  hideNewWorkspace: shouldHideNewWorkspace,
@@ -8429,12 +8796,14 @@ const ViewPresetMenuListConnect = ({
8429
8796
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
8430
8797
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
8431
8798
  * */
8432
- const DIALOG_TITLE = 'View presets menu';
8433
8799
  const ViewPresetMenu = ({
8434
8800
  hideBackdrop: _hideBackdrop = false,
8435
8801
  closeMenu,
8436
8802
  panelId
8437
8803
  }) => {
8804
+ const {
8805
+ t
8806
+ } = useWorkspaceTranslation();
8438
8807
  const toolContainer = /*#__PURE__*/React__default.createElement(ToolContainer, {
8439
8808
  style: {
8440
8809
  width: 320,
@@ -8442,7 +8811,7 @@ const ViewPresetMenu = ({
8442
8811
  position: 'absolute',
8443
8812
  top: '16px'
8444
8813
  },
8445
- title: DIALOG_TITLE,
8814
+ title: t('workspace-viewpreset-menu'),
8446
8815
  onClose: closeMenu,
8447
8816
  onClick: event => {
8448
8817
  event.stopPropagation();
@@ -8480,6 +8849,9 @@ const WorkspaceOptionsNoMemo = ({
8480
8849
  panelId,
8481
8850
  id: _id = 'workspace-options-toolbutton'
8482
8851
  }) => {
8852
+ const {
8853
+ t
8854
+ } = useWorkspaceTranslation();
8483
8855
  const [anchorEl, setAnchorEl] = React.useState(null);
8484
8856
  const isOpen = Boolean(anchorEl);
8485
8857
  const handleClick = event => {
@@ -8490,21 +8862,21 @@ const WorkspaceOptionsNoMemo = ({
8490
8862
  setAnchorEl(document.getElementById(_id));
8491
8863
  }
8492
8864
  }, [_isDefaultOpen, _id]);
8493
- const editTitle = _id === 'viewpreset-options-toolbutton' ? 'Edit (name)' : 'Edit (name and abstract)';
8865
+ const editTitle = _id === 'viewpreset-options-toolbutton' ? t('workspace-edit') : t('workspace-edit-both');
8494
8866
  const options = [{
8495
- title: 'Save',
8867
+ title: t('workspace-save'),
8496
8868
  callback: handleSave
8497
8869
  }, {
8498
- title: 'Save as',
8870
+ title: t('workspace-save-as'),
8499
8871
  callback: handleSaveAs
8500
8872
  }, ...(handleSaveAll ? [{
8501
- title: 'Save (incl. viewpresets)',
8873
+ title: t('workspace-save-incl-viewpresets'),
8502
8874
  callback: handleSaveAll
8503
8875
  }] : []), {
8504
8876
  title: editTitle,
8505
8877
  callback: handleEdit
8506
8878
  }, {
8507
- title: 'Delete',
8879
+ title: t('workspace-delete'),
8508
8880
  callback: handleDelete
8509
8881
  }];
8510
8882
  const renderButton = () => ( /*#__PURE__*/React.createElement(CustomToggleButton, {
@@ -8567,8 +8939,7 @@ const WorkspaceOptionsNoMemo = ({
8567
8939
  },
8568
8940
  sx: {
8569
8941
  '& .MuiMenu-list': {
8570
- padding: 0,
8571
- width: 200
8942
+ padding: 0
8572
8943
  },
8573
8944
  '& .MuiMenuItem-root': {
8574
8945
  fontSize: 16
@@ -8583,7 +8954,7 @@ const WorkspaceOptionsNoMemo = ({
8583
8954
  letterSpacing: '0.4px',
8584
8955
  fontSize: 12
8585
8956
  }
8586
- }, "Options")), options.map(({
8957
+ }, t('workspace-options'))), options.map(({
8587
8958
  title,
8588
8959
  callback
8589
8960
  }) => ( /*#__PURE__*/React.createElement(MenuItem, {
@@ -8630,18 +9001,6 @@ const LoadingIndicatorConnect = ({
8630
9001
  }));
8631
9002
  };
8632
9003
 
8633
- const VIEW_PRESET_MENU_TOOLTIP = 'View presets menu';
8634
- const NEW_TITLE_SUFFIX = '(not saved)';
8635
- const EXISTING_TITLE_SUFFIX = '(modified)';
8636
- const getPresetTitle = (title, hasChanges, isNew) => {
8637
- if (hasChanges && isNew) {
8638
- return `${title} ${NEW_TITLE_SUFFIX}`;
8639
- }
8640
- if (hasChanges && !isNew) {
8641
- return `${title} ${EXISTING_TITLE_SUFFIX}`;
8642
- }
8643
- return title;
8644
- };
8645
9004
  const customIconStyles = (theme, isViewPresetDialogOpen) => {
8646
9005
  return {
8647
9006
  marginLeft: -1,
@@ -8664,6 +9023,9 @@ const WorkspaceViewTitleConnectNoMemo = ({
8664
9023
  const dispatch = useDispatch();
8665
9024
  const theme = useTheme();
8666
9025
  const store = useStore();
9026
+ const {
9027
+ t
9028
+ } = useWorkspaceTranslation();
8667
9029
  const workspaceView = useSelector(store => {
8668
9030
  var _a;
8669
9031
  const {
@@ -8678,8 +9040,15 @@ const WorkspaceViewTitleConnectNoMemo = ({
8678
9040
  const hasMapPresetChanges = useSelector(store => getViewPresetHasChanges(store, panelId));
8679
9041
  const activeMapPresetId = useSelector(store => getViewPresetActiveId(store, panelId));
8680
9042
  const relatedSyncGroupIds = useSelector(store => syncGroupsSelectors.getAllTargetGroupsForSource(store, panelId));
9043
+ const getPresetTitle = (title, hasChanges, isNew) => {
9044
+ if (!hasChanges) {
9045
+ return title;
9046
+ }
9047
+ const suffix = isNew ? t('workspace-modified-existing') : t('workspace-modified-new');
9048
+ return `${title} (${suffix})`;
9049
+ };
8681
9050
  const isNewActive = activeMapPresetId === '';
8682
- const title = workspaceView.title || MAPPRESET_ACTIVE_TITLE;
9051
+ const title = workspaceView.title || t('workspace-mappreset-new');
8683
9052
  const viewScope = workspaceView.scope;
8684
9053
  const fullTitle = getPresetTitle(title, hasMapPresetChanges, isNewActive);
8685
9054
  const openViewPresetsDialog = React.useCallback(viewPresetDialogOptions => {
@@ -8702,7 +9071,7 @@ const WorkspaceViewTitleConnectNoMemo = ({
8702
9071
  }, [activeMapPresetId, dispatch, panelId, relatedSyncGroupIds, store, title]);
8703
9072
  const onDelete = React.useCallback(() => {
8704
9073
  openViewPresetsDialog({
8705
- title: MAPPRESET_DIALOG_TITLE_DELETE,
9074
+ title: t('workspace-mappreset-dialog-title-delete'),
8706
9075
  action: PresetAction.DELETE,
8707
9076
  viewPresetId: activeMapPresetId,
8708
9077
  panelId,
@@ -8710,11 +9079,11 @@ const WorkspaceViewTitleConnectNoMemo = ({
8710
9079
  title
8711
9080
  }
8712
9081
  });
8713
- }, [activeMapPresetId, openViewPresetsDialog, panelId, title]);
9082
+ }, [activeMapPresetId, openViewPresetsDialog, panelId, title, t]);
8714
9083
  const onSaveAs = React.useCallback(() => {
8715
9084
  const formTitle = activeMapPresetId ? title : '';
8716
9085
  openViewPresetsDialog({
8717
- title: MAPPRESET_DIALOG_TITLE_SAVE_AS,
9086
+ title: t('workspace-mappreset-save-as'),
8718
9087
  action: PresetAction.SAVE_AS,
8719
9088
  viewPresetId: activeMapPresetId,
8720
9089
  panelId,
@@ -8726,11 +9095,11 @@ const WorkspaceViewTitleConnectNoMemo = ({
8726
9095
  }
8727
9096
  }
8728
9097
  });
8729
- }, [activeMapPresetId, openViewPresetsDialog, panelId, relatedSyncGroupIds, store, title]);
9098
+ }, [activeMapPresetId, openViewPresetsDialog, panelId, relatedSyncGroupIds, store, title, t]);
8730
9099
  const onEdit = React.useCallback(() => {
8731
9100
  const formTitle = activeMapPresetId ? title : '';
8732
9101
  openViewPresetsDialog({
8733
- title: MAPPRESET_DIALOG_TITLE_EDIT,
9102
+ title: t('workspace-mappreset-dialog-title-edit'),
8734
9103
  action: PresetAction.EDIT,
8735
9104
  panelId,
8736
9105
  viewPresetId: activeMapPresetId,
@@ -8742,7 +9111,7 @@ const WorkspaceViewTitleConnectNoMemo = ({
8742
9111
  }
8743
9112
  }
8744
9113
  });
8745
- }, [activeMapPresetId, openViewPresetsDialog, panelId, relatedSyncGroupIds, store, title]);
9114
+ }, [activeMapPresetId, openViewPresetsDialog, panelId, relatedSyncGroupIds, store, title, t]);
8746
9115
  const toggleViewPresetDialog = React.useCallback(({
8747
9116
  panelId,
8748
9117
  isViewPresetDialogOpen
@@ -8766,7 +9135,7 @@ const WorkspaceViewTitleConnectNoMemo = ({
8766
9135
  sx: style,
8767
9136
  variant: "tool",
8768
9137
  onClick: onClickOpenViewPreset,
8769
- tooltipTitle: VIEW_PRESET_MENU_TOOLTIP,
9138
+ tooltipTitle: t('workspace-viewpreset-menu'),
8770
9139
  isSelected: isViewPresetDialogOpen
8771
9140
  }, presetIcon), /*#__PURE__*/React.createElement(WorkspaceOptions, {
8772
9141
  panelId: panelId,
@@ -8937,6 +9306,9 @@ const WorkspaceView = ({
8937
9306
  setActiveWindowId,
8938
9307
  isWorkspaceLoading: _isWorkspaceLoading = false
8939
9308
  }) => {
9309
+ const {
9310
+ t
9311
+ } = useWorkspaceTranslation();
8940
9312
  const EmptyView = !_isWorkspaceLoading && ( /*#__PURE__*/React.createElement(Box, {
8941
9313
  sx: {
8942
9314
  backgroundColor: 'geowebColors.background.surface',
@@ -8955,7 +9327,7 @@ const WorkspaceView = ({
8955
9327
  sx: {
8956
9328
  color: 'geowebColors.typographyAndIcons.text'
8957
9329
  }
8958
- }, "Welcome to GeoWeb. Please use one of the presets to open up new views.")));
9330
+ }, t('geoweb-welcome'))));
8959
9331
  useControlActiveWindowId(screenConfig, activeWindowId, setActiveWindowId);
8960
9332
  const getNewViewId = (element, viewId) => {
8961
9333
  if (element instanceof Element) {
@@ -9122,7 +9494,7 @@ const WorkspaceSelectListConnect = () => {
9122
9494
  } = useAuthenticationContext();
9123
9495
  const dispatch = useDispatch();
9124
9496
  const fetchWorkspaceList = React.useCallback(() => {
9125
- const filterParams = constructFilterParams(workspaceListFilters, workspaceSearchQuery);
9497
+ const filterParams = constructFilterParams$1(workspaceListFilters, workspaceSearchQuery);
9126
9498
  dispatch(workspaceListActions.fetchWorkspaceList(filterParams));
9127
9499
  }, [dispatch, workspaceListFilters, workspaceSearchQuery]);
9128
9500
  const fetchWorkspace = React.useCallback(workspaceId => {
@@ -9229,6 +9601,9 @@ const WorkspaceSelectListConnect = () => {
9229
9601
  };
9230
9602
  const isAllSelected = workspaceListFilters.every(filter => filter.isSelected);
9231
9603
  const shouldHideNewWorkspace = !isAllSelected || workspaceSearchQuery.length > 0;
9604
+ const {
9605
+ t
9606
+ } = useWorkspaceTranslation();
9232
9607
  return /*#__PURE__*/React.createElement("div", {
9233
9608
  "data-testid": "workspace-selectlist-connect",
9234
9609
  style: {
@@ -9248,12 +9623,12 @@ const WorkspaceSelectListConnect = () => {
9248
9623
  whiteSpace: 'normal'
9249
9624
  }
9250
9625
  }, /*#__PURE__*/React.createElement(AlertBanner, Object.assign({
9251
- title: "Failed to fetch workspace list",
9626
+ title: t('workspace-error-fetch'),
9252
9627
  info: error.message,
9253
9628
  shouldClose: true
9254
9629
  }, error.type === WorkspaceListErrorType.GENERIC && {
9255
9630
  actionButtonProps: {
9256
- title: 'Try again',
9631
+ title: t('workspace-retry'),
9257
9632
  onClick: () => fetchWorkspaceList()
9258
9633
  }
9259
9634
  })))), /*#__PURE__*/React.createElement(Box, {
@@ -9298,6 +9673,9 @@ const WorkspaceMenu = ({
9298
9673
  hideBackdrop: _hideBackdrop = false,
9299
9674
  closeMenu
9300
9675
  }) => {
9676
+ const {
9677
+ t
9678
+ } = useWorkspaceTranslation();
9301
9679
  const toolContainer = /*#__PURE__*/React__default.createElement(ToolContainer, {
9302
9680
  style: {
9303
9681
  width: 320,
@@ -9305,7 +9683,7 @@ const WorkspaceMenu = ({
9305
9683
  position: 'absolute',
9306
9684
  top: '16px'
9307
9685
  },
9308
- title: "Workspace menu",
9686
+ title: t('workspace-menu'),
9309
9687
  onClose: closeMenu,
9310
9688
  onClick: event => {
9311
9689
  event.stopPropagation();
@@ -9348,6 +9726,10 @@ const WorkspaceMenuButton = ({
9348
9726
  const onCloseMenu = () => {
9349
9727
  _onToggleDialog(false);
9350
9728
  };
9729
+ const {
9730
+ t
9731
+ } = useWorkspaceTranslation();
9732
+ const tooltipTitle = t('workspace-menu');
9351
9733
  return /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(Box, {
9352
9734
  sx: {
9353
9735
  padding: '4px 8px',
@@ -9361,7 +9743,7 @@ const WorkspaceMenuButton = ({
9361
9743
  isSelected: _showMenu,
9362
9744
  "aria-label": "workspace menu",
9363
9745
  variant: "tool",
9364
- tooltipTitle: "Workspace menu",
9746
+ tooltipTitle: tooltipTitle,
9365
9747
  sx: {
9366
9748
  '&&': {
9367
9749
  backgroundColor: !_showMenu ? 'transparent' : undefined,
@@ -9419,21 +9801,15 @@ const WorkspaceMenuButtonConnect = () => {
9419
9801
  }));
9420
9802
  };
9421
9803
 
9422
- const TITLE_SUFFIX_NEW_WORKSPACE = 'modified';
9423
- const TITLE_SUFFIX_EXISTING_WORKSPACE = 'not saved';
9424
- const getTitle = (title, hasChanges, workspaceId) => {
9425
- if (!hasChanges) {
9426
- return title;
9427
- }
9428
- const suffix = workspaceId ? TITLE_SUFFIX_NEW_WORKSPACE : TITLE_SUFFIX_EXISTING_WORKSPACE;
9429
- return `${title} (${suffix})`;
9430
- };
9431
9804
  const WorkspaceOptionsConnect = ({
9432
9805
  title,
9433
9806
  activeTab,
9434
9807
  workspaceId
9435
9808
  }) => {
9436
9809
  const dispatch = useDispatch();
9810
+ const {
9811
+ t
9812
+ } = useWorkspaceTranslation();
9437
9813
  const {
9438
9814
  isLoggedIn
9439
9815
  } = useAuthenticationContext();
@@ -9481,6 +9857,13 @@ const WorkspaceOptionsConnect = ({
9481
9857
  formValues: Object.assign({}, workspaceData)
9482
9858
  });
9483
9859
  };
9860
+ const getTitle = (title, hasChanges, workspaceId) => {
9861
+ if (!hasChanges) {
9862
+ return title;
9863
+ }
9864
+ const suffix = workspaceId ? t('workspace-modified-new') : t('workspace-modified-existing');
9865
+ return `${title} (${suffix})`;
9866
+ };
9484
9867
  const fullTitle = getTitle(title, hasChanges, workspaceId);
9485
9868
  return /*#__PURE__*/React.createElement(WorkspaceOptions, {
9486
9869
  hasChanges: hasChanges,
@@ -9547,6 +9930,9 @@ const WorkspacePresetsForm = ({
9547
9930
  action,
9548
9931
  formValues
9549
9932
  }) => {
9933
+ const {
9934
+ t
9935
+ } = useWorkspaceTranslation();
9550
9936
  const titleField = 'title';
9551
9937
  const _a = Object.assign(Object.assign({}, emptyWorkspacePreset), formValues),
9552
9938
  {
@@ -9585,7 +9971,7 @@ const WorkspacePresetsForm = ({
9585
9971
  }
9586
9972
  }, /*#__PURE__*/React__default.createElement(ReactHookFormTextField, {
9587
9973
  name: "title",
9588
- label: "Name",
9974
+ label: t('workspace-dialog-name'),
9589
9975
  rules: {
9590
9976
  required: true,
9591
9977
  validate: {
@@ -9596,7 +9982,7 @@ const WorkspacePresetsForm = ({
9596
9982
  defaultValue: title
9597
9983
  })), /*#__PURE__*/React__default.createElement(ReactHookFormTextField, {
9598
9984
  name: "abstract",
9599
- label: "Abstract",
9985
+ label: t('workspace-dialog-abstract'),
9600
9986
  rules: {
9601
9987
  required: false
9602
9988
  },
@@ -9614,56 +10000,15 @@ const WorkspacePresetsForm = ({
9614
10000
  "data-testid": name
9615
10001
  }))))), action === WorkspacePresetAction.DELETE && ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Typography, {
9616
10002
  variant: "body1"
9617
- }, `Are you sure to want to delete the "${title}" workspace preset?`), /*#__PURE__*/React__default.createElement(ReactHookFormHiddenInput, {
10003
+ }, t('workspace-dialog-confirm-delete-message', {
10004
+ TITLE: title
10005
+ })), /*#__PURE__*/React__default.createElement(ReactHookFormHiddenInput, {
9618
10006
  key: "title",
9619
10007
  name: "title",
9620
10008
  defaultValue: title
9621
10009
  }))));
9622
10010
  };
9623
10011
 
9624
- const DIALOG_TITLE_SAVE_AS = 'Save as';
9625
- const DIALOG_TITLE_SAVE_ALL = 'Save (incl. viewpresets)';
9626
- const DIALOG_TITLE_DELETE = 'Delete workspace';
9627
- const DIALOG_TITLE_DUPLICATE = 'Duplicate';
9628
- const DIALOG_BUTTON_SAVE = 'Save';
9629
- const DIALOG_BUTTON_DELETE = 'Delete';
9630
- const DIALOG_BUTTON_EDIT = 'Edit (name and abstract)';
9631
- const getDialogTitle = action => {
9632
- switch (action) {
9633
- case WorkspacePresetAction.DELETE:
9634
- {
9635
- return DIALOG_TITLE_DELETE;
9636
- }
9637
- case WorkspacePresetAction.DUPLICATE:
9638
- {
9639
- return DIALOG_TITLE_DUPLICATE;
9640
- }
9641
- case WorkspacePresetAction.SAVE_ALL:
9642
- {
9643
- return DIALOG_TITLE_SAVE_ALL;
9644
- }
9645
- case WorkspacePresetAction.EDIT:
9646
- {
9647
- return DIALOG_BUTTON_EDIT;
9648
- }
9649
- default:
9650
- {
9651
- return DIALOG_TITLE_SAVE_AS;
9652
- }
9653
- }
9654
- };
9655
- const getConfirmLabel$1 = action => {
9656
- switch (action) {
9657
- case WorkspacePresetAction.DELETE:
9658
- {
9659
- return DIALOG_BUTTON_DELETE;
9660
- }
9661
- default:
9662
- {
9663
- return DIALOG_BUTTON_SAVE;
9664
- }
9665
- }
9666
- };
9667
10012
  const WorkspacePresetsFormDialog = ({
9668
10013
  isOpen,
9669
10014
  action,
@@ -9678,10 +10023,49 @@ const WorkspacePresetsFormDialog = ({
9678
10023
  handleSubmit: handleFormSubmit,
9679
10024
  reset
9680
10025
  } = useFormContext();
10026
+ const {
10027
+ t
10028
+ } = useWorkspaceTranslation();
9681
10029
  React__default.useEffect(() => {
9682
10030
  reset(formValues);
9683
10031
  }, [formValues, reset]);
9684
- const confirmLabel = getConfirmLabel$1(action);
10032
+ const getConfirmLabel = action => {
10033
+ switch (action) {
10034
+ case WorkspacePresetAction.DELETE:
10035
+ {
10036
+ return t('workspace-delete');
10037
+ }
10038
+ default:
10039
+ {
10040
+ return t('workspace-save');
10041
+ }
10042
+ }
10043
+ };
10044
+ const getDialogTitle = action => {
10045
+ switch (action) {
10046
+ case WorkspacePresetAction.DELETE:
10047
+ {
10048
+ return t('workspace-dialog-delete');
10049
+ }
10050
+ case WorkspacePresetAction.DUPLICATE:
10051
+ {
10052
+ return t('workspace-duplicate');
10053
+ }
10054
+ case WorkspacePresetAction.SAVE_ALL:
10055
+ {
10056
+ return t('workspace-save-incl-viewpresets');
10057
+ }
10058
+ case WorkspacePresetAction.EDIT:
10059
+ {
10060
+ return t('workspace-edit-both');
10061
+ }
10062
+ default:
10063
+ {
10064
+ return t('workspace-save-as');
10065
+ }
10066
+ }
10067
+ };
10068
+ const confirmLabel = getConfirmLabel(action);
9685
10069
  const onSubmit = () => {
9686
10070
  handleFormSubmit(newFormValues => {
9687
10071
  const {
@@ -9698,12 +10082,13 @@ const WorkspacePresetsFormDialog = ({
9698
10082
  onFormSubmit(action, presetId, parsedFormValues);
9699
10083
  })();
9700
10084
  };
10085
+ const cancelLabel = t('workspace-cancel');
9701
10086
  return /*#__PURE__*/React__default.createElement(ConfirmationDialog, {
9702
10087
  "data-testid": "workspace-preset-dialog",
9703
10088
  title: getDialogTitle(action),
9704
10089
  open: isOpen,
9705
10090
  confirmLabel: confirmLabel,
9706
- cancelLabel: "Cancel",
10091
+ cancelLabel: cancelLabel,
9707
10092
  description: "",
9708
10093
  onClose: onClose,
9709
10094
  onSubmit: onSubmit,
@@ -9821,6 +10206,7 @@ const validateTitle = value => {
9821
10206
  if (!value) {
9822
10207
  return true;
9823
10208
  }
10209
+ // TODO: use translation from form-fields https://gitlab.com/opengeoweb/opengeoweb/-/issues/4240
9824
10210
  return !value.trim().length ? 'This field is required' : true;
9825
10211
  };
9826
10212
  const MapPresetsForm = ({
@@ -9830,6 +10216,9 @@ const MapPresetsForm = ({
9830
10216
  formValues
9831
10217
  }) => {
9832
10218
  const fieldName = 'title';
10219
+ const {
10220
+ t
10221
+ } = useWorkspaceTranslation();
9833
10222
  const _a = Object.assign(Object.assign({}, emptyMapViewPreset), formValues),
9834
10223
  {
9835
10224
  title
@@ -9859,7 +10248,7 @@ const MapPresetsForm = ({
9859
10248
  onSubmit: onSubmitForm
9860
10249
  }, /*#__PURE__*/React__default.createElement(ReactHookFormTextField, {
9861
10250
  name: "title",
9862
- label: "Map preset name",
10251
+ label: t('workspace-mappreset-dialog-title'),
9863
10252
  rules: {
9864
10253
  required: true,
9865
10254
  validate: {
@@ -9877,27 +10266,15 @@ const MapPresetsForm = ({
9877
10266
  "data-testid": name
9878
10267
  }))))), action === PresetAction.DELETE && ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Typography, {
9879
10268
  variant: "body1"
9880
- }, `Are you sure to want to delete "${title}" map preset?`), /*#__PURE__*/React__default.createElement(ReactHookFormHiddenInput, {
10269
+ }, t('workspace-mappreset-delete-message', {
10270
+ TITLE: title
10271
+ })), /*#__PURE__*/React__default.createElement(ReactHookFormHiddenInput, {
9881
10272
  key: "title",
9882
10273
  name: "title",
9883
10274
  defaultValue: title
9884
10275
  }))));
9885
10276
  };
9886
10277
 
9887
- const getConfirmLabel = action => {
9888
- switch (action) {
9889
- case PresetAction.DELETE:
9890
- {
9891
- return 'Delete';
9892
- }
9893
- case PresetAction.SAVE_AS:
9894
- {
9895
- return 'Save';
9896
- }
9897
- default:
9898
- return 'Save';
9899
- }
9900
- };
9901
10278
  const MapPresetsFormDialog = ({
9902
10279
  isOpen,
9903
10280
  action,
@@ -9911,6 +10288,9 @@ const MapPresetsFormDialog = ({
9911
10288
  handleSubmit: handleFormSubmit,
9912
10289
  reset
9913
10290
  } = useFormContext();
10291
+ const {
10292
+ t
10293
+ } = useWorkspaceTranslation();
9914
10294
  const {
9915
10295
  api
9916
10296
  } = useApiContext();
@@ -9924,6 +10304,20 @@ const MapPresetsFormDialog = ({
9924
10304
  React__default.useEffect(() => {
9925
10305
  reset(formValues);
9926
10306
  }, [formValues, reset]);
10307
+ const getConfirmLabel = action => {
10308
+ switch (action) {
10309
+ case PresetAction.DELETE:
10310
+ {
10311
+ return t('workspace-delete');
10312
+ }
10313
+ case PresetAction.SAVE_AS:
10314
+ {
10315
+ return t('workspace-save');
10316
+ }
10317
+ default:
10318
+ return t('workspace-save');
10319
+ }
10320
+ };
9927
10321
  const confirmLabel = getConfirmLabel(action);
9928
10322
  const onFormSubmit = newFormValues => __awaiter(void 0, void 0, void 0, function* () {
9929
10323
  try {
@@ -9990,7 +10384,7 @@ const MapPresetsFormDialog = ({
9990
10384
  title: title,
9991
10385
  open: isOpen,
9992
10386
  confirmLabel: confirmLabel,
9993
- cancelLabel: "Cancel",
10387
+ cancelLabel: t('workspace-cancel'),
9994
10388
  description: "",
9995
10389
  onClose: onClose,
9996
10390
  onSubmit: onSubmit,
@@ -10061,6 +10455,9 @@ const WorkspaceDetail = ({
10061
10455
  isSnapshot: _isSnapshot = false
10062
10456
  }) => {
10063
10457
  const dispatch = useDispatch();
10458
+ const {
10459
+ t
10460
+ } = useWorkspaceTranslation();
10064
10461
  const error = useSelector(store => getWorkspaceError(store));
10065
10462
  const isLoading = useSelector(store => isWorkspaceLoading(store));
10066
10463
  const workspaceData = useSelector(store => getWorkspaceData(store));
@@ -10110,20 +10507,24 @@ const WorkspaceDetail = ({
10110
10507
  zIndex: 100
10111
10508
  }
10112
10509
  })), error && error.type !== WorkspaceErrorType.SAVE && ( /*#__PURE__*/React.createElement(AlertBanner, Object.assign({
10113
- title: `Failed to fetch workspace ${workspaceId}`,
10510
+ title: t('workspace-error-fetch-detail', {
10511
+ WORKSPACE_ID: workspaceId
10512
+ }),
10114
10513
  info: error.message,
10115
10514
  shouldClose: true
10116
10515
  }, error.type === WorkspaceErrorType.GENERIC && {
10117
10516
  actionButtonProps: {
10118
- title: 'Try again',
10517
+ title: t('workspace-retry'),
10119
10518
  onClick: () => fetchWorkspace(workspaceId)
10120
10519
  }
10121
10520
  }))), children, !_isSnapshot && ( /*#__PURE__*/React.createElement(React.Fragment, null, error && error.type === WorkspaceErrorType.SAVE && ( /*#__PURE__*/React.createElement(AlertBanner, {
10122
- title: `Failed to save workspace "${workspaceData.title}"`,
10521
+ title: t('workspace-save-error', {
10522
+ TITLE: workspaceData.title
10523
+ }),
10123
10524
  info: error.message,
10124
10525
  shouldClose: true,
10125
10526
  actionButtonProps: {
10126
- title: 'Try again',
10527
+ title: t('workspace-retry'),
10127
10528
  onClick: () => onSave()
10128
10529
  }
10129
10530
  })), (!error || error.type === WorkspaceErrorType.SAVE) && ( /*#__PURE__*/React.createElement(Box, {
@@ -10145,4 +10546,4 @@ const WorkspaceDetail = ({
10145
10546
  }))))), /*#__PURE__*/React.createElement(MapPresetsFormDialogConnect, null));
10146
10547
  };
10147
10548
 
10148
- export { ComponentsLookUpWrapper, WorkspaceDetail, WorkspaceErrorType, 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 };
10549
+ 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 };