@opengeoweb/workspace 9.15.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,15 +3,15 @@ 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';
11
13
  import { ThemeWrapper, lightTheme, SplitVertical, SplitHorizontal, Expand, UnExpand, Close, Delete, Preset, PresetWorkspace, PresetTiles, Search, Clear, CloudLoading, CloudIdle, WebAssetOff } from '@opengeoweb/theme';
12
14
  import { Provider, useDispatch, useSelector, useStore, shallowEqual } from 'react-redux';
13
- import i18n from 'i18next';
14
- import { initReactI18next, useTranslation, I18nextProvider } from 'react-i18next';
15
15
  import { timeSeriesModuleConfig } from '@opengeoweb/timeseries';
16
16
  import { AuthenticationProvider, useAuthenticationContext } from '@opengeoweb/authentication';
17
17
  import { createStore } from '@redux-eggs/redux-toolkit';
@@ -25,6 +25,257 @@ import { Box as Box$1 } from '@mui/system';
25
25
  import { ReactHookFormTextField, ReactHookFormHiddenInput, ReactHookFormProvider, defaultFormOptions } from '@opengeoweb/form-fields';
26
26
  import { useFormContext } from 'react-hook-form';
27
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
+
28
279
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
29
280
 
30
281
  var check = function (it) {
@@ -2622,13 +2873,13 @@ var PresetAction;
2622
2873
  })(PresetAction || (PresetAction = {}));
2623
2874
 
2624
2875
  const viewPresetsListFilterOptions = [{
2625
- label: 'My presets',
2876
+ label: 'workspace-my-presets',
2626
2877
  id: 'user',
2627
2878
  type: 'scope',
2628
2879
  isSelected: true,
2629
2880
  isDisabled: false
2630
2881
  }, {
2631
- label: 'System presets',
2882
+ label: 'workspace-system-presets',
2632
2883
  id: 'system',
2633
2884
  type: 'scope',
2634
2885
  isSelected: true,
@@ -3283,88 +3534,108 @@ fixRegExpWellKnownSymbolLogic$2('split', function (SPLIT, nativeSplit, maybeCall
3283
3534
  * */
3284
3535
  const getCleanSearchQuery = searchQuery => searchQuery.trim().split(/\s+/).join();
3285
3536
 
3286
- const MAPPRESET_ACTIVE_TITLE = 'New map preset';
3287
- const MAPPRESET_DIALOG_TITLE_SAVE_AS = 'Save map preset as';
3288
- const MAPPRESET_DIALOG_TITLE_DELETE = 'Delete map preset';
3289
- const MAPPRESET_DIALOG_TITLE_EDIT = 'Edit map preset';
3290
- const getSnackbarMessage$1 = (action, title) => {
3291
- // Trim and add quotes
3292
- const trimmedTitle = `"${title.trim()}"`;
3293
- switch (action) {
3294
- case PresetAction.DELETE:
3295
- return `Map preset ${trimmedTitle} successfully deleted`;
3296
- case PresetAction.SAVE_AS:
3297
- return `New map preset ${trimmedTitle} successfully saved`;
3298
- case PresetAction.EDIT:
3299
- return `Map preset ${trimmedTitle} successfully edited`;
3300
- default:
3301
- return `Map preset ${trimmedTitle} successfully saved`;
3302
- }
3303
- };
3304
- const getPresetsApi = () => getApi(API_NAME);
3305
- const emptyMapViewPreset = {
3306
- componentType: 'Map',
3307
- keywords: '',
3308
- scope: 'user',
3309
- title: '',
3310
- initialProps: {
3311
- mapPreset: {}
3312
- }
3313
- };
3314
- // Returns object of applied user filters such as scope/search etc
3315
- // If all filter chips are selected, an empty string is returned for that filter which is interpreted in the BE as "return all" _
3316
- const constructFilterParams$1 = (filters, searchQuery) => {
3317
- // get filters
3318
- const isAllSelectedForFilters = filters.every(filter => filter.isSelected);
3319
- // If all filters are selected, ensure we return nothing for scope
3320
- const {
3321
- scope
3322
- } = isAllSelectedForFilters ? {
3323
- scope: []
3324
- } : filters.reduce((filterList, filter) => {
3325
- if (filter.isSelected && filter.type === 'scope') {
3326
- return Object.assign(Object.assign({}, filter), {
3327
- scope: filterList.scope.concat(filter.id)
3328
- });
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
+ }
3329
3558
  }
3330
- return filterList;
3331
- }, {
3332
- scope: []
3333
- });
3334
- // get search
3335
- const search = getCleanSearchQuery(searchQuery);
3336
- return Object.assign(Object.assign({}, scope.length && {
3337
- scope: scope.toString()
3338
- }), search.length && {
3339
- search
3340
3559
  });
3341
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);
3342
3567
 
3343
- const getSnackbarMessage = (action, title) => {
3568
+ const getSnackbarMessage$1 = (action, title) => {
3344
3569
  // Trim and add quotes
3345
- const trimmedTitle = `"${title.trim()}"`;
3570
+ const trimmedTitle = `${title.trim()}`;
3346
3571
  switch (action) {
3347
3572
  case WorkspacePresetAction.SAVE_ALL:
3348
- return `Workspace ${trimmedTitle} and underlying viewpresets successfully saved`;
3573
+ return translateKeyOutsideComponents('workspace-list-success-save-all', {
3574
+ TITLE: trimmedTitle
3575
+ });
3349
3576
  case WorkspacePresetAction.DELETE:
3350
- return `Workspace ${trimmedTitle} successfully deleted`;
3577
+ return translateKeyOutsideComponents('workspace-list-success-delete', {
3578
+ TITLE: trimmedTitle
3579
+ });
3351
3580
  case WorkspacePresetAction.DUPLICATE:
3352
- return `Workspace ${trimmedTitle} successfully saved`;
3581
+ return translateKeyOutsideComponents('workspace-list-success-duplicate', {
3582
+ TITLE: trimmedTitle
3583
+ });
3353
3584
  case WorkspacePresetAction.EDIT:
3354
- return `Workspace ${trimmedTitle} successfully edited`;
3585
+ return translateKeyOutsideComponents('workspace-list-success-edit', {
3586
+ TITLE: trimmedTitle
3587
+ });
3355
3588
  default:
3356
- return `Workspace ${trimmedTitle} successfully saved`;
3589
+ return translateKeyOutsideComponents('workspace-list-success-save', {
3590
+ TITLE: trimmedTitle
3591
+ });
3357
3592
  }
3358
3593
  };
3359
- const emptyMapWorkspace = {
3360
- title: 'New workspace',
3594
+ const getEmptyWorkspaceListItem = () => ({
3595
+ id: undefined,
3596
+ title: translateKeyOutsideComponents('workspace-new'),
3597
+ scope: 'system',
3598
+ abstract: '',
3599
+ viewType: 'singleWindow'
3600
+ });
3601
+ const emptyMapWorkspace = Object.assign(Object.assign({}, getEmptyWorkspaceListItem()), {
3602
+ views: {
3603
+ allIds: ['1_screen'],
3604
+ byId: {
3605
+ '1_screen': {
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'),
3361
3632
  scope: 'system',
3362
3633
  abstract: '',
3363
3634
  views: {
3364
3635
  allIds: ['1_screen'],
3365
3636
  byId: {
3366
3637
  '1_screen': {
3367
- title: MAPPRESET_ACTIVE_TITLE,
3638
+ title: translateKeyOutsideComponents('workspace-mappreset-new'),
3368
3639
  componentType: 'Map',
3369
3640
  initialProps: {
3370
3641
  mapPreset: {
@@ -3388,15 +3659,15 @@ const emptyMapWorkspace = {
3388
3659
  },
3389
3660
  mosaicNode: '1_screen',
3390
3661
  viewType: 'singleWindow'
3391
- };
3662
+ });
3392
3663
  const createCustomEmptyMapWorkspace = customMapPreset => {
3393
- const customEmptyMapWorkspace = cloneDeep(emptyMapWorkspace);
3664
+ const customEmptyMapWorkspace = cloneDeep(getEmptyWorkspacePreset());
3394
3665
  if (customMapPreset) {
3395
3666
  customEmptyMapWorkspace.views.byId['1_screen'].initialProps.mapPreset = customMapPreset;
3396
3667
  }
3397
3668
  return customEmptyMapWorkspace;
3398
3669
  };
3399
- const constructFilterParams = (filters, searchQuery) => {
3670
+ const constructFilterParams$1 = (filters, searchQuery) => {
3400
3671
  // get filters
3401
3672
  const {
3402
3673
  scope
@@ -3748,6 +4019,67 @@ const getViewPresetListFilterResultsForView = createSelector(getViewPresetById,
3748
4019
  return Object.values(filteredResults.entities);
3749
4020
  }, selectorMemoizationOptions);
3750
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
+
3751
4083
  const workspaceStore = store => (store === null || store === void 0 ? void 0 : store.workspace) || initialState$1;
3752
4084
  /**
3753
4085
  * Gets workspace state
@@ -3856,7 +4188,7 @@ const getWorkspaceData = createSelector(getWorkspaceState, getViewPresetsStore,
3856
4188
  };
3857
4189
  }, selectorMemoizationOptions);
3858
4190
  const getViewPresetToSendToBackend = createSelector(getViewById, mapSelectors.getMapPreset, syncGroupsSelectors.getAllTargetGroupsForSource, (workspaceView, mapPreset, syncGroupsIds) => {
3859
- const title = (workspaceView === null || workspaceView === void 0 ? void 0 : workspaceView.title) || MAPPRESET_ACTIVE_TITLE;
4191
+ const title = (workspaceView === null || workspaceView === void 0 ? void 0 : workspaceView.title) || outsideComponentTranslations['workspace-mappreset-new'];
3860
4192
  const scope = (workspaceView === null || workspaceView === void 0 ? void 0 : workspaceView.scope) || 'system';
3861
4193
  return Object.assign(Object.assign({}, emptyMapViewPreset), {
3862
4194
  id: workspaceView === null || workspaceView === void 0 ? void 0 : workspaceView.id,
@@ -3870,21 +4202,21 @@ const getViewPresetToSendToBackend = createSelector(getViewById, mapSelectors.ge
3870
4202
  }, selectorMemoizationOptions);
3871
4203
 
3872
4204
  var selectors$1 = /*#__PURE__*/Object.freeze({
3873
- __proto__: null,
3874
- getWorkspaceState: getWorkspaceState,
3875
- getInitialViewMapPreset: getInitialViewMapPreset,
3876
- getMosaicNode: getMosaicNode,
3877
- getViewById: getViewById,
3878
- getViewIds: getViewIds,
3879
- getShouldPreventClose: getShouldPreventClose,
3880
- isWorkspaceLoading: isWorkspaceLoading,
3881
- getWorkspaceError: getWorkspaceError,
3882
- getSelectedWorkspaceTitle: getSelectedWorkspaceTitle,
3883
- hasWorkspaceChanges: hasWorkspaceChanges,
3884
- getViewType: getViewType,
3885
- getSelectedWorkspaceScope: getSelectedWorkspaceScope,
3886
- getWorkspaceData: getWorkspaceData,
3887
- getViewPresetToSendToBackend: getViewPresetToSendToBackend
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
3888
4220
  });
3889
4221
 
3890
4222
  /* *
@@ -6959,7 +7291,7 @@ function* fetchWorkspaceListSaga({
6959
7291
  } catch (error) {
6960
7292
  yield put(workspaceListActions.errorWorkspaceList({
6961
7293
  error: {
6962
- message: 'Error fetching workspace preset list',
7294
+ message: translateKeyOutsideComponents('workspace-list-error'),
6963
7295
  type: WorkspaceListErrorType.GENERIC
6964
7296
  }
6965
7297
  }));
@@ -6974,7 +7306,7 @@ function* onSuccessWorkspacePresetsActionSaga({
6974
7306
  title
6975
7307
  } = payload;
6976
7308
  yield put(snackbarActions.openSnackbar({
6977
- message: getSnackbarMessage(action, title)
7309
+ message: getSnackbarMessage$1(action, title)
6978
7310
  }));
6979
7311
  // if active workspace has been deleted, empty out url
6980
7312
  if (action === WorkspacePresetAction.DELETE && payload.currentActiveWorkspaceId && workspaceId === payload.currentActiveWorkspaceId) {
@@ -6991,7 +7323,7 @@ function* onSuccessWorkspacePresetsActionSaga({
6991
7323
  // Retrieve new list with current filter
6992
7324
  const workspaceFilters = yield select(getWorkspaceListFilters);
6993
7325
  const searchQuery = yield select(getWorkspaceListSearchQuery);
6994
- yield call$g(fetchWorkspaceListSaga, workspaceListActions.fetchWorkspaceList(constructFilterParams(workspaceFilters, searchQuery)));
7326
+ yield call$g(fetchWorkspaceListSaga, workspaceListActions.fetchWorkspaceList(constructFilterParams$1(workspaceFilters, searchQuery)));
6995
7327
  }
6996
7328
  function* saveAllViewPresetSaga(viewPresetEntity, workspaceTitle) {
6997
7329
  var _a, _b;
@@ -7177,7 +7509,6 @@ function* rootSaga$1() {
7177
7509
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7178
7510
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
7179
7511
  * */
7180
- const MESSAGE_SAVE_PRESET = 'Map preset not saved: an error occurred during saving. Please try again later.';
7181
7512
  function* fetchInitialViewPresetsSaga() {
7182
7513
  try {
7183
7514
  const presetsApi = yield call$g(getPresetsApi);
@@ -7191,7 +7522,7 @@ function* fetchInitialViewPresetsSaga() {
7191
7522
  } catch (error) {
7192
7523
  yield put(viewPresetActions.errorInitialViewPresets({
7193
7524
  error: {
7194
- message: 'Error fetching map preset list',
7525
+ message: translateKeyOutsideComponents('workspace-mappreset-error-fetch'),
7195
7526
  type: ViewPresetType.PRESET_LIST
7196
7527
  }
7197
7528
  }));
@@ -7217,7 +7548,7 @@ function* fetchViewPresetsSaga({
7217
7548
  } catch (error) {
7218
7549
  yield put(viewPresetActions.errorViewPreset({
7219
7550
  error: {
7220
- message: 'Error fetching map preset list',
7551
+ message: translateKeyOutsideComponents('workspace-mappreset-error-fetch'),
7221
7552
  type: ViewPresetType.PRESET_LIST
7222
7553
  },
7223
7554
  panelId
@@ -7236,7 +7567,7 @@ function* saveViewPresetSaga({
7236
7567
  const presetsApi = yield call$g(getPresetsApi);
7237
7568
  yield call$g(presetsApi.saveViewPreset, viewPresetId, viewPreset);
7238
7569
  yield put(snackbarActions.openSnackbar({
7239
- message: getSnackbarMessage$1(PresetAction.SAVE, viewPreset.title)
7570
+ message: getSnackbarMessage(PresetAction.SAVE, viewPreset.title)
7240
7571
  }));
7241
7572
  yield put(viewPresetActions.savedViewPreset({
7242
7573
  panelId,
@@ -7245,7 +7576,7 @@ function* saveViewPresetSaga({
7245
7576
  } catch (error) {
7246
7577
  yield put(viewPresetActions.errorViewPreset({
7247
7578
  error: {
7248
- message: MESSAGE_SAVE_PRESET,
7579
+ message: translateKeyOutsideComponents('workspace-mappreset-error-save'),
7249
7580
  type: ViewPresetType.PRESET_DETAIL
7250
7581
  },
7251
7582
  panelId,
@@ -7301,7 +7632,7 @@ function* onSuccessViewPresetActionSaga({
7301
7632
  } = payload;
7302
7633
  try {
7303
7634
  yield put(snackbarActions.openSnackbar({
7304
- message: getSnackbarMessage$1(action, title)
7635
+ message: getSnackbarMessage(action, title)
7305
7636
  }));
7306
7637
  const activeMapPresetId = yield select(getViewPresetActiveId, panelId);
7307
7638
  // if active preset has been deleted, select the empty new preset
@@ -7317,7 +7648,7 @@ function* onSuccessViewPresetActionSaga({
7317
7648
  const viewPresetSearchQuery = yield select(getViewPresetListSearchQueryForView, panelId);
7318
7649
  yield call$g(fetchViewPresetsSaga, viewPresetActions.fetchViewPresets({
7319
7650
  panelId,
7320
- filterParams: constructFilterParams$1(viewPresetFilters, viewPresetSearchQuery)
7651
+ filterParams: constructFilterParams(viewPresetFilters, viewPresetSearchQuery)
7321
7652
  }));
7322
7653
  if (action !== PresetAction.EDIT) {
7323
7654
  yield put(viewPresetActions.setViewPresetHasChanges({
@@ -7370,159 +7701,77 @@ const workspaceModuleConfig = {
7370
7701
  sagas: [workspaceSaga, rootSaga$1, rootSaga]
7371
7702
  };
7372
7703
 
7373
- /* eslint-disable @typescript-eslint/ban-ts-comment */
7374
- const devToolsStateSanitizer = {
7375
- stateSanitizer: state => {
7376
- return produce(state, draftState => {
7377
- // @ts-ignore
7378
- if (state['services']) {
7379
- // @ts-ignore
7380
- Object.values(state['services'].byId).forEach(service => {
7381
- // @ts-ignore
7382
- draftState['services'].byId[service.id].layers =
7383
- // @ts-ignore
7384
- service.layers.length;
7385
- });
7386
- }
7387
- });
7388
- }
7389
- };
7390
- const store = createStore({
7391
- extensions: [getSagaExtension({})],
7392
- defaultMiddlewareOptions: {
7393
- serializableCheck: {
7394
- warnAfter: 128
7395
- },
7396
- immutableCheck: {
7397
- warnAfter: 128
7398
- }
7399
- },
7400
- devTools: devToolsStateSanitizer
7401
- });
7402
-
7403
- var en = {
7404
- "workspace-menu": "Workspace menu",
7405
- "workspace-new": "New workspace",
7406
- "workspace-my-presets": "My presets",
7407
- "workspace-system-presets": "System presets",
7408
- "workspace-all-button": "All",
7409
- "workspace-search": "Search",
7410
- "workspace-loading": "Loading",
7411
- "workspace-options": "Options",
7412
- "workspace-results": "results",
7413
- "workspace-delete": "Delete",
7414
- "workspce-clear": "Clear",
7415
- "workspace-save": "Save",
7416
- "workspace-save-as": "Save as",
7417
- "workspace-save-incl-viewpresets": "Save (incl. viewpresets)",
7418
- "workspace-edit": "Edit (name)",
7419
- "workspace-edit-both": "Edit (name and abstract)",
7420
- "geoweb-welcome": "Welcome to GeoWeb. Please use one of the presets to open up new views"
7421
- };
7422
- var fi = {
7423
- "workspace-menu": "ei käännetty",
7424
- "workspace-new": "ei käännetty",
7425
- "workspace-my-presets": "ei käännetty",
7426
- "workspace-system-presets": "ei käännetty",
7427
- "workspace-all-button": "ei käännetty",
7428
- "workspace-search": "ei käännetty",
7429
- "workspace-loading": "ei käännetty",
7430
- "workspace-options": "ei käännetty",
7431
- "workspace-results": "ei käännetty",
7432
- "workspace-delete": "ei käännetty",
7433
- "workspce-clear": "ei käännetty",
7434
- "workspace-save": "ei käännetty",
7435
- "workspace-save-as": "ei käännetty",
7436
- "workspace-save-incl-viewpresets": "ei käännetty",
7437
- "workspace-edit": "ei käännetty",
7438
- "workspace-edit-both": "ei käännetty",
7439
- "geoweb-welcome": "ei käännetty"
7440
- };
7441
- var no = {
7442
- "workspace-menu": "Arbeidsrommeny",
7443
- "workspace-new": "Nytt arbeidsrom",
7444
- "workspace-my-presets": "Mine presets",
7445
- "workspace-system-presets": "System presets",
7446
- "workspace-all-button": "Alle",
7447
- "workspace-search": "Søk",
7448
- "workspace-loading": "Laster",
7449
- "workspace-options": "Valg",
7450
- "workspace-results": "resultater",
7451
- "workspace-delete": "Slett",
7452
- "workspce-clear": "Tøm",
7453
- "workspace-save": "Lagre",
7454
- "workspace-save-as": "Lagre som",
7455
- "workspace-save-incl-viewpresets": "Lagre (inkl. viewpresets)",
7456
- "workspace-edit": "Endre (navn)",
7457
- "workspace-edit-both": "Endre (navn og abstrakt)",
7458
- "geoweb-welcome": "Velkommen til GeoWeb. Åpne et forhåndsvalg for å åpne nye vinduer"
7459
- };
7460
- var nl = {
7461
- "workspace-menu": "niet vertaald",
7462
- "workspace-new": "niet vertaald",
7463
- "workspace-my-presets": "niet vertaald",
7464
- "workspace-system-presets": "niet vertaald",
7465
- "workspace-all-button": "niet vertaald",
7466
- "workspce-search": "niet vertaald",
7467
- "workspace-loading": "niet vertaald",
7468
- "workspace-options": "niet vertaald",
7469
- "workspace-results": "niet vertaald",
7470
- "workspace-delete": "niet vertaald",
7471
- "workspce-clear": "niet vertaald",
7472
- "workspace-save": "niet vertaald",
7473
- "workspace-save-as": "niet vertaald",
7474
- "workspace-save-incl-viewpresets": "niet vertaald",
7475
- "workspace-edit": "niet vertaald",
7476
- "workspace-edit-both": "niet vertaald",
7477
- "geoweb-welcome": "niet vertaald"
7478
- };
7479
- var workspaceTranslations = {
7480
- en: en,
7481
- fi: fi,
7482
- no: no,
7483
- nl: nl
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;
7484
7744
  };
7485
7745
 
7486
- /* *
7487
- * Licensed under the Apache License, Version 2.0 (the "License");
7488
- * you may not use this file except in compliance with the License.
7489
- * You may obtain a copy of the License at
7490
- *
7491
- * http://www.apache.org/licenses/LICENSE-2.0
7492
- *
7493
- * Unless required by applicable law or agreed to in writing, software
7494
- * distributed under the License is distributed on an "AS IS" BASIS,
7495
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7496
- * See the License for the specific language governing permissions and
7497
- * limitations under the License.
7498
- *
7499
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7500
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
7501
- * */
7502
- const WORKSPACE_NAMESPACE = 'workspace';
7503
- const initWorkspaceTestI18n = () => {
7504
- i18n.use(initReactI18next).init({
7505
- lng: 'en',
7506
- ns: WORKSPACE_NAMESPACE,
7507
- interpolation: {
7508
- escapeValue: false
7509
- },
7510
- resources: {
7511
- en: {
7512
- workspace: workspaceTranslations.en
7513
- },
7514
- fi: {
7515
- workspace: workspaceTranslations.fi
7516
- },
7517
- no: {
7518
- workspace: workspaceTranslations.no
7519
- },
7520
- nl: {
7521
- workspace: workspaceTranslations.nl
7746
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
7747
+ const devToolsStateSanitizer = {
7748
+ stateSanitizer: state => {
7749
+ return produce(state, draftState => {
7750
+ // @ts-ignore
7751
+ if (state['services']) {
7752
+ // @ts-ignore
7753
+ Object.values(state['services'].byId).forEach(service => {
7754
+ // @ts-ignore
7755
+ draftState['services'].byId[service.id].layers =
7756
+ // @ts-ignore
7757
+ service.layers.length;
7758
+ });
7522
7759
  }
7523
- }
7524
- });
7760
+ });
7761
+ }
7525
7762
  };
7763
+ const store = createStore({
7764
+ extensions: [getSagaExtension({})],
7765
+ defaultMiddlewareOptions: {
7766
+ serializableCheck: {
7767
+ warnAfter: 128
7768
+ },
7769
+ immutableCheck: {
7770
+ warnAfter: 128
7771
+ }
7772
+ },
7773
+ devTools: devToolsStateSanitizer
7774
+ });
7526
7775
 
7527
7776
  const WorkspaceThemeProvider = ({
7528
7777
  children,
@@ -7536,6 +7785,10 @@ const WorkspaceWrapperProvider = withEggs([...coreModuleConfig, timeSeriesModule
7536
7785
  }) => ( /*#__PURE__*/React__default.createElement(WorkspaceThemeProvider, {
7537
7786
  theme: theme
7538
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
+ };
7539
7792
  const defaultAuthConfig = {
7540
7793
  isLoggedIn: true,
7541
7794
  auth: {
@@ -7563,24 +7816,9 @@ const WorkspaceWrapperProviderWithStore = ({
7563
7816
  }, /*#__PURE__*/React__default.createElement(WorkspaceWrapperProvider, {
7564
7817
  theme: theme
7565
7818
  }, /*#__PURE__*/React__default.createElement(SnackbarWrapperConnect, null, /*#__PURE__*/React__default.createElement(ConfirmationServiceProvider, null, children))))))));
7566
- const WorkspaceTranslationsWrapper = ({
7567
- children
7568
- }) => {
7569
- const {
7570
- i18n
7571
- } = useTranslation();
7572
- React__default.useEffect(() => {
7573
- i18n.addResourceBundle('en', WORKSPACE_NAMESPACE, workspaceTranslations.en);
7574
- i18n.addResourceBundle('fi', WORKSPACE_NAMESPACE, workspaceTranslations.fi);
7575
- i18n.addResourceBundle('no', WORKSPACE_NAMESPACE, workspaceTranslations.no);
7576
- i18n.addResourceBundle('nl', WORKSPACE_NAMESPACE, workspaceTranslations.nl);
7577
- }, [i18n]);
7578
- return children;
7579
- };
7580
7819
  const WorkspaceI18nProvider = ({
7581
7820
  children
7582
7821
  }) => {
7583
- initWorkspaceTestI18n();
7584
7822
  return /*#__PURE__*/React__default.createElement(I18nextProvider, {
7585
7823
  i18n: i18n
7586
7824
  }, children);
@@ -7617,48 +7855,6 @@ const WorkspaceModuleProvider = ({
7617
7855
  }, children);
7618
7856
  };
7619
7857
 
7620
- /******************************************************************************
7621
- Copyright (c) Microsoft Corporation.
7622
-
7623
- Permission to use, copy, modify, and/or distribute this software for any
7624
- purpose with or without fee is hereby granted.
7625
-
7626
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
7627
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
7628
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
7629
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
7630
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
7631
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
7632
- PERFORMANCE OF THIS SOFTWARE.
7633
- ***************************************************************************** */
7634
-
7635
- function __rest(s, e) {
7636
- var t = {};
7637
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
7638
- t[p] = s[p];
7639
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7640
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7641
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
7642
- t[p[i]] = s[p[i]];
7643
- }
7644
- return t;
7645
- }
7646
-
7647
- function __awaiter(thisArg, _arguments, P, generator) {
7648
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7649
- return new (P || (P = Promise))(function (resolve, reject) {
7650
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7651
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7652
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7653
- step((generator = generator.apply(thisArg, _arguments || [])).next());
7654
- });
7655
- }
7656
-
7657
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
7658
- var e = new Error(message);
7659
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
7660
- };
7661
-
7662
7858
  // takes a component and connects module methods with workspace store
7663
7859
  const ComponentsLookUpWrapper = _a => {
7664
7860
  var {
@@ -7809,6 +8005,9 @@ const WorkspaceControls = ({
7809
8005
  const {
7810
8006
  mosaicActions: actions
7811
8007
  } = React.useContext(MosaicContext);
8008
+ const {
8009
+ t
8010
+ } = useWorkspaceTranslation();
7812
8011
  const mosaicNode = useSelector(store => getMosaicNode(store));
7813
8012
  const [stateAfterExpand, setStateAfterExpand] = React.useState();
7814
8013
  const [stateBeforeExpand, setStateBeforeExpand] = React.useState(mosaicNode);
@@ -7828,9 +8027,9 @@ const WorkspaceControls = ({
7828
8027
  const onClose = () => __awaiter(void 0, void 0, void 0, function* () {
7829
8028
  if (_shouldPreventCloseView) {
7830
8029
  yield confirmDialog({
7831
- title: 'Whoops',
7832
- description: 'Are you sure you want to close this window? All changes will be lost.',
7833
- confirmLabel: 'Close window'
8030
+ title: t('workspace-control-close-message-title'),
8031
+ description: t('workspace-control-close-message-description'),
8032
+ confirmLabel: t('workspace-control-close')
7834
8033
  });
7835
8034
  actions.remove(path);
7836
8035
  } else {
@@ -7849,7 +8048,7 @@ const WorkspaceControls = ({
7849
8048
  second: newNode
7850
8049
  });
7851
8050
  },
7852
- tooltipTitle: "Split window horizontally"
8051
+ tooltipTitle: t('workspace-control-split-horizontal')
7853
8052
  }, /*#__PURE__*/React.createElement(SplitVertical, null)), /*#__PURE__*/React.createElement(CustomIconButton, {
7854
8053
  "data-testid": "split-vertical-btn",
7855
8054
  sx: buttonStyle,
@@ -7862,7 +8061,7 @@ const WorkspaceControls = ({
7862
8061
  second: newNode
7863
8062
  });
7864
8063
  },
7865
- tooltipTitle: "Split window vertically"
8064
+ tooltipTitle: t('workspace-control-split-vertical')
7866
8065
  }, /*#__PURE__*/React.createElement(SplitHorizontal, null)), !enableUnexpand || isString(mosaicNode) ? ( /*#__PURE__*/React.createElement(CustomIconButton, {
7867
8066
  "data-testid": "expand-btn",
7868
8067
  sx: buttonStyle,
@@ -7871,7 +8070,7 @@ const WorkspaceControls = ({
7871
8070
  setEnableUnexpand(true);
7872
8071
  actions.expand(path, 70);
7873
8072
  },
7874
- tooltipTitle: "Expand window"
8073
+ tooltipTitle: t('workspace-control-expand')
7875
8074
  }, /*#__PURE__*/React.createElement(Expand, null))) : ( /*#__PURE__*/React.createElement(CustomIconButton, {
7876
8075
  "data-testid": "unexpand-btn",
7877
8076
  sx: buttonStyle,
@@ -7879,12 +8078,12 @@ const WorkspaceControls = ({
7879
8078
  const stateBeforeExpandCopy = isString(stateBeforeExpand) ? stateBeforeExpand : Object.assign({}, stateBeforeExpand);
7880
8079
  actions.replaceWith([], stateBeforeExpandCopy);
7881
8080
  },
7882
- tooltipTitle: "Unexpand window"
8081
+ tooltipTitle: t('workspace-control-unexpand')
7883
8082
  }, /*#__PURE__*/React.createElement(UnExpand, null))), /*#__PURE__*/React.createElement(CustomIconButton, {
7884
8083
  "data-testid": "close-btn",
7885
8084
  sx: buttonStyle,
7886
8085
  onClick: onClose,
7887
- tooltipTitle: "Close window",
8086
+ tooltipTitle: t('workspace-control-close'),
7888
8087
  id: "close-window-button"
7889
8088
  }, /*#__PURE__*/React.createElement(Close, null)));
7890
8089
  };
@@ -7910,7 +8109,7 @@ const ViewLoading = ({
7910
8109
  }) => {
7911
8110
  const {
7912
8111
  t
7913
- } = useTranslation(WORKSPACE_NAMESPACE);
8112
+ } = useWorkspaceTranslation();
7914
8113
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LinearProgress, {
7915
8114
  "data-testid": "loading-bar",
7916
8115
  color: "secondary",
@@ -7930,6 +8129,9 @@ const ViewError = ({
7930
8129
  mosaicNodeId
7931
8130
  }) => {
7932
8131
  const dispatch = useDispatch();
8132
+ const {
8133
+ t
8134
+ } = useWorkspaceTranslation();
7933
8135
  const fetchWorkspaceViewPreset = React.useCallback(() => {
7934
8136
  dispatch(workspaceActions.fetchWorkspaceViewPreset({
7935
8137
  viewPresetId,
@@ -7937,10 +8139,12 @@ const ViewError = ({
7937
8139
  }));
7938
8140
  }, [dispatch, viewPresetId, mosaicNodeId]);
7939
8141
  return /*#__PURE__*/React.createElement(AlertBanner, {
7940
- title: `Failed to fetch view ${viewPresetId}`,
8142
+ title: t('workspace-viewpresets-fail-fetch', {
8143
+ VIEWPRESET_ID: viewPresetId
8144
+ }),
7941
8145
  shouldClose: true,
7942
8146
  actionButtonProps: {
7943
- title: 'Try again',
8147
+ title: t('workspace-retry'),
7944
8148
  onClick: fetchWorkspaceViewPreset
7945
8149
  }
7946
8150
  });
@@ -8064,18 +8268,21 @@ const WorkspaceSelectListRow = ({
8064
8268
  searchQuery: _searchQuery = '',
8065
8269
  testIdPrefix: _testIdPrefix = 'workspace'
8066
8270
  }) => {
8271
+ const {
8272
+ t
8273
+ } = useWorkspaceTranslation();
8067
8274
  const onDuplicate = () => {
8068
8275
  onClickWorkspacePresetOption(workspacePreset.id, WorkspacePresetAction.DUPLICATE, workspacePreset);
8069
8276
  };
8070
8277
  const onEdit = () => {
8071
8278
  onClickWorkspacePresetOption(workspacePreset.id, WorkspacePresetAction.EDIT, workspacePreset);
8072
8279
  };
8073
- const editTitle = _testIdPrefix === 'viewpreset' ? 'Edit (name)' : 'Edit (name and abstract)';
8280
+ const editTitle = _testIdPrefix === 'viewpreset' ? 'workspace-edit' : 'workspace-edit-both';
8074
8281
  const menuItems = [{
8075
- text: 'Duplicate',
8282
+ text: t('workspace-duplicate'),
8076
8283
  action: onDuplicate
8077
8284
  }, ...(workspacePreset.scope === 'user' ? [{
8078
- text: editTitle,
8285
+ text: t(editTitle),
8079
8286
  action: onEdit
8080
8287
  }] : [])];
8081
8288
  return /*#__PURE__*/React__default.createElement(ListItem, {
@@ -8136,10 +8343,10 @@ const WorkspaceSelectListRow = ({
8136
8343
  buttonTestId: `${_testIdPrefix}-listOptionsButton`,
8137
8344
  menuPosition: "right",
8138
8345
  menuItems: menuItems,
8139
- menuTitle: "Options",
8346
+ menuTitle: t('workspace-options'),
8140
8347
  isDefaultOpen: _isOptionsMenuOpen
8141
8348
  }), workspacePreset.scope === 'user' && ( /*#__PURE__*/React__default.createElement(CustomIconButton, {
8142
- tooltipTitle: "Delete preset",
8349
+ tooltipTitle: t('workspace-delete-tooltip'),
8143
8350
  onClick: event => {
8144
8351
  event.stopPropagation();
8145
8352
  onClickWorkspacePresetOption(workspacePreset.id, WorkspacePresetAction.DELETE, workspacePreset);
@@ -8214,7 +8421,7 @@ const FilterList = ({
8214
8421
  }) => {
8215
8422
  const {
8216
8423
  t
8217
- } = useTranslation(WORKSPACE_NAMESPACE);
8424
+ } = useWorkspaceTranslation();
8218
8425
  return /*#__PURE__*/React.createElement(Stack, {
8219
8426
  direction: "row",
8220
8427
  spacing: 1,
@@ -8263,7 +8470,7 @@ const SearchField = ({
8263
8470
  const [localValue, setLocalValue] = React.useState(_value);
8264
8471
  const {
8265
8472
  t
8266
- } = useTranslation(WORKSPACE_NAMESPACE);
8473
+ } = useWorkspaceTranslation();
8267
8474
  const label = t('workspace-search');
8268
8475
  // eslint-disable-next-line react-hooks/exhaustive-deps
8269
8476
  const handleValueChangeDebounced = React.useCallback(debounce$1(valueChanged, DEBOUNCE_TIMEOUT), []);
@@ -8338,13 +8545,6 @@ const WorkspaceFilter = ({
8338
8545
  })));
8339
8546
  };
8340
8547
 
8341
- const emptyWorkspaceListItem = {
8342
- id: emptyMapWorkspace.id,
8343
- title: emptyMapWorkspace.title,
8344
- scope: emptyMapWorkspace.scope,
8345
- viewType: emptyMapWorkspace.viewType,
8346
- abstract: emptyMapWorkspace.abstract
8347
- };
8348
8548
  const MIN_HEIGHT_SCROLLABLE_LIST = 88; // Slightly less than 2 rows
8349
8549
  const LIST_PADDING_TOP = 8;
8350
8550
  const DEFAULT_RESULTS_HEIGHT = 22;
@@ -8358,12 +8558,12 @@ const WorkspaceSelectList = ({
8358
8558
  hideNewWorkspace,
8359
8559
  isLoggedIn,
8360
8560
  searchQuery,
8361
- newPreset: _newPreset = emptyWorkspaceListItem,
8561
+ newPreset: _newPreset = getEmptyWorkspaceListItem(),
8362
8562
  testIdPrefix: _testIdPrefix = 'workspace'
8363
8563
  }) => {
8364
8564
  const {
8365
8565
  t
8366
- } = useTranslation(WORKSPACE_NAMESPACE);
8566
+ } = useWorkspaceTranslation();
8367
8567
  const items = React.useMemo(() => !hideNewWorkspace ? [_newPreset, ...workspacePresets] : workspacePresets, [hideNewWorkspace, _newPreset, workspacePresets]);
8368
8568
  return /*#__PURE__*/React.createElement(Box, {
8369
8569
  "data-testid": `${_testIdPrefix}-selectList`,
@@ -8408,11 +8608,12 @@ const WorkspaceSelectList = ({
8408
8608
  })))));
8409
8609
  };
8410
8610
 
8411
- const ERROR_TITLE = 'View presets not available';
8412
- const ERROR_RETRY = 'Try again';
8413
8611
  const ViewPresetMenuListConnect = ({
8414
8612
  panelId
8415
8613
  }) => {
8614
+ const {
8615
+ t
8616
+ } = useWorkspaceTranslation();
8416
8617
  const viewPresets = useSelector(store => getFilteredViewPresetListForView(store, panelId));
8417
8618
  const activeViewPresetId = useSelector(store => getViewPresetActiveId(store, panelId));
8418
8619
  const currentMapPreset = useSelector(store => mapSelectors.getMapPreset(store, panelId));
@@ -8448,7 +8649,7 @@ const ViewPresetMenuListConnect = ({
8448
8649
  }));
8449
8650
  }, [dispatch, panelId]);
8450
8651
  const fetchViewPresets = React.useCallback(() => {
8451
- const filterParams = constructFilterParams$1(viewPresetListFilters, viewPresetListSearchQuery);
8652
+ const filterParams = constructFilterParams(viewPresetListFilters, viewPresetListSearchQuery);
8452
8653
  dispatch(viewPresetActions.fetchViewPresets({
8453
8654
  panelId,
8454
8655
  filterParams
@@ -8459,7 +8660,7 @@ const ViewPresetMenuListConnect = ({
8459
8660
  case WorkspacePresetAction.DUPLICATE:
8460
8661
  {
8461
8662
  openViewPresetsDialog({
8462
- title: MAPPRESET_DIALOG_TITLE_SAVE_AS,
8663
+ title: t('workspace-mappreset-save-as'),
8463
8664
  action: PresetAction.SAVE_AS,
8464
8665
  viewPresetId: presetId,
8465
8666
  panelId,
@@ -8477,7 +8678,7 @@ const ViewPresetMenuListConnect = ({
8477
8678
  {
8478
8679
  const presetTitle = (preset === null || preset === void 0 ? void 0 : preset.title) || '';
8479
8680
  openViewPresetsDialog({
8480
- title: MAPPRESET_DIALOG_TITLE_EDIT,
8681
+ title: t('workspace-mappreset-dialog-title-edit'),
8481
8682
  action: PresetAction.EDIT,
8482
8683
  panelId,
8483
8684
  viewPresetId: presetId,
@@ -8493,7 +8694,7 @@ const ViewPresetMenuListConnect = ({
8493
8694
  case WorkspacePresetAction.DELETE:
8494
8695
  {
8495
8696
  openViewPresetsDialog({
8496
- title: MAPPRESET_DIALOG_TITLE_DELETE,
8697
+ title: t('workspace-mappreset-dialog-title-delete'),
8497
8698
  action: PresetAction.DELETE,
8498
8699
  viewPresetId: presetId,
8499
8700
  panelId,
@@ -8548,9 +8749,9 @@ const ViewPresetMenuListConnect = ({
8548
8749
  top: 0
8549
8750
  }
8550
8751
  })), !isViewPresetsListFetching && errorViewPresetsList && ( /*#__PURE__*/React.createElement(AlertBanner, {
8551
- title: ERROR_TITLE,
8752
+ title: t('workspace-viewpresets-error'),
8552
8753
  actionButtonProps: {
8553
- title: ERROR_RETRY,
8754
+ title: t('workspace-retry'),
8554
8755
  onClick: fetchViewPresets
8555
8756
  }
8556
8757
  })), /*#__PURE__*/React.createElement(Box, {
@@ -8569,9 +8770,8 @@ const ViewPresetMenuListConnect = ({
8569
8770
  currentSelectedId: activeViewPresetId || undefined,
8570
8771
  onClickPreset: selectViewPreset,
8571
8772
  onClickWorkspacePresetOption: onClickViewPresetOption,
8572
- newPreset: Object.assign(Object.assign({}, emptyWorkspaceListItem), {
8573
- id: undefined,
8574
- title: MAPPRESET_ACTIVE_TITLE
8773
+ newPreset: Object.assign(Object.assign({}, getEmptyWorkspaceListItem()), {
8774
+ title: t('workspace-mappreset-new')
8575
8775
  }),
8576
8776
  isLoggedIn: isLoggedIn,
8577
8777
  hideNewWorkspace: shouldHideNewWorkspace,
@@ -8596,12 +8796,14 @@ const ViewPresetMenuListConnect = ({
8596
8796
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
8597
8797
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
8598
8798
  * */
8599
- const DIALOG_TITLE = 'View presets menu';
8600
8799
  const ViewPresetMenu = ({
8601
8800
  hideBackdrop: _hideBackdrop = false,
8602
8801
  closeMenu,
8603
8802
  panelId
8604
8803
  }) => {
8804
+ const {
8805
+ t
8806
+ } = useWorkspaceTranslation();
8605
8807
  const toolContainer = /*#__PURE__*/React__default.createElement(ToolContainer, {
8606
8808
  style: {
8607
8809
  width: 320,
@@ -8609,7 +8811,7 @@ const ViewPresetMenu = ({
8609
8811
  position: 'absolute',
8610
8812
  top: '16px'
8611
8813
  },
8612
- title: DIALOG_TITLE,
8814
+ title: t('workspace-viewpreset-menu'),
8613
8815
  onClose: closeMenu,
8614
8816
  onClick: event => {
8615
8817
  event.stopPropagation();
@@ -8649,7 +8851,7 @@ const WorkspaceOptionsNoMemo = ({
8649
8851
  }) => {
8650
8852
  const {
8651
8853
  t
8652
- } = useTranslation(WORKSPACE_NAMESPACE);
8854
+ } = useWorkspaceTranslation();
8653
8855
  const [anchorEl, setAnchorEl] = React.useState(null);
8654
8856
  const isOpen = Boolean(anchorEl);
8655
8857
  const handleClick = event => {
@@ -8737,8 +8939,7 @@ const WorkspaceOptionsNoMemo = ({
8737
8939
  },
8738
8940
  sx: {
8739
8941
  '& .MuiMenu-list': {
8740
- padding: 0,
8741
- width: 200
8942
+ padding: 0
8742
8943
  },
8743
8944
  '& .MuiMenuItem-root': {
8744
8945
  fontSize: 16
@@ -8800,18 +9001,6 @@ const LoadingIndicatorConnect = ({
8800
9001
  }));
8801
9002
  };
8802
9003
 
8803
- const VIEW_PRESET_MENU_TOOLTIP = 'View presets menu';
8804
- const NEW_TITLE_SUFFIX = '(not saved)';
8805
- const EXISTING_TITLE_SUFFIX = '(modified)';
8806
- const getPresetTitle = (title, hasChanges, isNew) => {
8807
- if (hasChanges && isNew) {
8808
- return `${title} ${NEW_TITLE_SUFFIX}`;
8809
- }
8810
- if (hasChanges && !isNew) {
8811
- return `${title} ${EXISTING_TITLE_SUFFIX}`;
8812
- }
8813
- return title;
8814
- };
8815
9004
  const customIconStyles = (theme, isViewPresetDialogOpen) => {
8816
9005
  return {
8817
9006
  marginLeft: -1,
@@ -8834,6 +9023,9 @@ const WorkspaceViewTitleConnectNoMemo = ({
8834
9023
  const dispatch = useDispatch();
8835
9024
  const theme = useTheme();
8836
9025
  const store = useStore();
9026
+ const {
9027
+ t
9028
+ } = useWorkspaceTranslation();
8837
9029
  const workspaceView = useSelector(store => {
8838
9030
  var _a;
8839
9031
  const {
@@ -8848,8 +9040,15 @@ const WorkspaceViewTitleConnectNoMemo = ({
8848
9040
  const hasMapPresetChanges = useSelector(store => getViewPresetHasChanges(store, panelId));
8849
9041
  const activeMapPresetId = useSelector(store => getViewPresetActiveId(store, panelId));
8850
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
+ };
8851
9050
  const isNewActive = activeMapPresetId === '';
8852
- const title = workspaceView.title || MAPPRESET_ACTIVE_TITLE;
9051
+ const title = workspaceView.title || t('workspace-mappreset-new');
8853
9052
  const viewScope = workspaceView.scope;
8854
9053
  const fullTitle = getPresetTitle(title, hasMapPresetChanges, isNewActive);
8855
9054
  const openViewPresetsDialog = React.useCallback(viewPresetDialogOptions => {
@@ -8872,7 +9071,7 @@ const WorkspaceViewTitleConnectNoMemo = ({
8872
9071
  }, [activeMapPresetId, dispatch, panelId, relatedSyncGroupIds, store, title]);
8873
9072
  const onDelete = React.useCallback(() => {
8874
9073
  openViewPresetsDialog({
8875
- title: MAPPRESET_DIALOG_TITLE_DELETE,
9074
+ title: t('workspace-mappreset-dialog-title-delete'),
8876
9075
  action: PresetAction.DELETE,
8877
9076
  viewPresetId: activeMapPresetId,
8878
9077
  panelId,
@@ -8880,11 +9079,11 @@ const WorkspaceViewTitleConnectNoMemo = ({
8880
9079
  title
8881
9080
  }
8882
9081
  });
8883
- }, [activeMapPresetId, openViewPresetsDialog, panelId, title]);
9082
+ }, [activeMapPresetId, openViewPresetsDialog, panelId, title, t]);
8884
9083
  const onSaveAs = React.useCallback(() => {
8885
9084
  const formTitle = activeMapPresetId ? title : '';
8886
9085
  openViewPresetsDialog({
8887
- title: MAPPRESET_DIALOG_TITLE_SAVE_AS,
9086
+ title: t('workspace-mappreset-save-as'),
8888
9087
  action: PresetAction.SAVE_AS,
8889
9088
  viewPresetId: activeMapPresetId,
8890
9089
  panelId,
@@ -8896,11 +9095,11 @@ const WorkspaceViewTitleConnectNoMemo = ({
8896
9095
  }
8897
9096
  }
8898
9097
  });
8899
- }, [activeMapPresetId, openViewPresetsDialog, panelId, relatedSyncGroupIds, store, title]);
9098
+ }, [activeMapPresetId, openViewPresetsDialog, panelId, relatedSyncGroupIds, store, title, t]);
8900
9099
  const onEdit = React.useCallback(() => {
8901
9100
  const formTitle = activeMapPresetId ? title : '';
8902
9101
  openViewPresetsDialog({
8903
- title: MAPPRESET_DIALOG_TITLE_EDIT,
9102
+ title: t('workspace-mappreset-dialog-title-edit'),
8904
9103
  action: PresetAction.EDIT,
8905
9104
  panelId,
8906
9105
  viewPresetId: activeMapPresetId,
@@ -8912,7 +9111,7 @@ const WorkspaceViewTitleConnectNoMemo = ({
8912
9111
  }
8913
9112
  }
8914
9113
  });
8915
- }, [activeMapPresetId, openViewPresetsDialog, panelId, relatedSyncGroupIds, store, title]);
9114
+ }, [activeMapPresetId, openViewPresetsDialog, panelId, relatedSyncGroupIds, store, title, t]);
8916
9115
  const toggleViewPresetDialog = React.useCallback(({
8917
9116
  panelId,
8918
9117
  isViewPresetDialogOpen
@@ -8936,7 +9135,7 @@ const WorkspaceViewTitleConnectNoMemo = ({
8936
9135
  sx: style,
8937
9136
  variant: "tool",
8938
9137
  onClick: onClickOpenViewPreset,
8939
- tooltipTitle: VIEW_PRESET_MENU_TOOLTIP,
9138
+ tooltipTitle: t('workspace-viewpreset-menu'),
8940
9139
  isSelected: isViewPresetDialogOpen
8941
9140
  }, presetIcon), /*#__PURE__*/React.createElement(WorkspaceOptions, {
8942
9141
  panelId: panelId,
@@ -9109,7 +9308,7 @@ const WorkspaceView = ({
9109
9308
  }) => {
9110
9309
  const {
9111
9310
  t
9112
- } = useTranslation(WORKSPACE_NAMESPACE);
9311
+ } = useWorkspaceTranslation();
9113
9312
  const EmptyView = !_isWorkspaceLoading && ( /*#__PURE__*/React.createElement(Box, {
9114
9313
  sx: {
9115
9314
  backgroundColor: 'geowebColors.background.surface',
@@ -9295,7 +9494,7 @@ const WorkspaceSelectListConnect = () => {
9295
9494
  } = useAuthenticationContext();
9296
9495
  const dispatch = useDispatch();
9297
9496
  const fetchWorkspaceList = React.useCallback(() => {
9298
- const filterParams = constructFilterParams(workspaceListFilters, workspaceSearchQuery);
9497
+ const filterParams = constructFilterParams$1(workspaceListFilters, workspaceSearchQuery);
9299
9498
  dispatch(workspaceListActions.fetchWorkspaceList(filterParams));
9300
9499
  }, [dispatch, workspaceListFilters, workspaceSearchQuery]);
9301
9500
  const fetchWorkspace = React.useCallback(workspaceId => {
@@ -9402,6 +9601,9 @@ const WorkspaceSelectListConnect = () => {
9402
9601
  };
9403
9602
  const isAllSelected = workspaceListFilters.every(filter => filter.isSelected);
9404
9603
  const shouldHideNewWorkspace = !isAllSelected || workspaceSearchQuery.length > 0;
9604
+ const {
9605
+ t
9606
+ } = useWorkspaceTranslation();
9405
9607
  return /*#__PURE__*/React.createElement("div", {
9406
9608
  "data-testid": "workspace-selectlist-connect",
9407
9609
  style: {
@@ -9421,12 +9623,12 @@ const WorkspaceSelectListConnect = () => {
9421
9623
  whiteSpace: 'normal'
9422
9624
  }
9423
9625
  }, /*#__PURE__*/React.createElement(AlertBanner, Object.assign({
9424
- title: "Failed to fetch workspace list",
9626
+ title: t('workspace-error-fetch'),
9425
9627
  info: error.message,
9426
9628
  shouldClose: true
9427
9629
  }, error.type === WorkspaceListErrorType.GENERIC && {
9428
9630
  actionButtonProps: {
9429
- title: 'Try again',
9631
+ title: t('workspace-retry'),
9430
9632
  onClick: () => fetchWorkspaceList()
9431
9633
  }
9432
9634
  })))), /*#__PURE__*/React.createElement(Box, {
@@ -9473,7 +9675,7 @@ const WorkspaceMenu = ({
9473
9675
  }) => {
9474
9676
  const {
9475
9677
  t
9476
- } = useTranslation(WORKSPACE_NAMESPACE);
9678
+ } = useWorkspaceTranslation();
9477
9679
  const toolContainer = /*#__PURE__*/React__default.createElement(ToolContainer, {
9478
9680
  style: {
9479
9681
  width: 320,
@@ -9526,7 +9728,7 @@ const WorkspaceMenuButton = ({
9526
9728
  };
9527
9729
  const {
9528
9730
  t
9529
- } = useTranslation(WORKSPACE_NAMESPACE);
9731
+ } = useWorkspaceTranslation();
9530
9732
  const tooltipTitle = t('workspace-menu');
9531
9733
  return /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(Box, {
9532
9734
  sx: {
@@ -9599,21 +9801,15 @@ const WorkspaceMenuButtonConnect = () => {
9599
9801
  }));
9600
9802
  };
9601
9803
 
9602
- const TITLE_SUFFIX_NEW_WORKSPACE = 'modified';
9603
- const TITLE_SUFFIX_EXISTING_WORKSPACE = 'not saved';
9604
- const getTitle = (title, hasChanges, workspaceId) => {
9605
- if (!hasChanges) {
9606
- return title;
9607
- }
9608
- const suffix = workspaceId ? TITLE_SUFFIX_NEW_WORKSPACE : TITLE_SUFFIX_EXISTING_WORKSPACE;
9609
- return `${title} (${suffix})`;
9610
- };
9611
9804
  const WorkspaceOptionsConnect = ({
9612
9805
  title,
9613
9806
  activeTab,
9614
9807
  workspaceId
9615
9808
  }) => {
9616
9809
  const dispatch = useDispatch();
9810
+ const {
9811
+ t
9812
+ } = useWorkspaceTranslation();
9617
9813
  const {
9618
9814
  isLoggedIn
9619
9815
  } = useAuthenticationContext();
@@ -9661,6 +9857,13 @@ const WorkspaceOptionsConnect = ({
9661
9857
  formValues: Object.assign({}, workspaceData)
9662
9858
  });
9663
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
+ };
9664
9867
  const fullTitle = getTitle(title, hasChanges, workspaceId);
9665
9868
  return /*#__PURE__*/React.createElement(WorkspaceOptions, {
9666
9869
  hasChanges: hasChanges,
@@ -9727,6 +9930,9 @@ const WorkspacePresetsForm = ({
9727
9930
  action,
9728
9931
  formValues
9729
9932
  }) => {
9933
+ const {
9934
+ t
9935
+ } = useWorkspaceTranslation();
9730
9936
  const titleField = 'title';
9731
9937
  const _a = Object.assign(Object.assign({}, emptyWorkspacePreset), formValues),
9732
9938
  {
@@ -9765,7 +9971,7 @@ const WorkspacePresetsForm = ({
9765
9971
  }
9766
9972
  }, /*#__PURE__*/React__default.createElement(ReactHookFormTextField, {
9767
9973
  name: "title",
9768
- label: "Name",
9974
+ label: t('workspace-dialog-name'),
9769
9975
  rules: {
9770
9976
  required: true,
9771
9977
  validate: {
@@ -9776,7 +9982,7 @@ const WorkspacePresetsForm = ({
9776
9982
  defaultValue: title
9777
9983
  })), /*#__PURE__*/React__default.createElement(ReactHookFormTextField, {
9778
9984
  name: "abstract",
9779
- label: "Abstract",
9985
+ label: t('workspace-dialog-abstract'),
9780
9986
  rules: {
9781
9987
  required: false
9782
9988
  },
@@ -9794,56 +10000,15 @@ const WorkspacePresetsForm = ({
9794
10000
  "data-testid": name
9795
10001
  }))))), action === WorkspacePresetAction.DELETE && ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Typography, {
9796
10002
  variant: "body1"
9797
- }, `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, {
9798
10006
  key: "title",
9799
10007
  name: "title",
9800
10008
  defaultValue: title
9801
10009
  }))));
9802
10010
  };
9803
10011
 
9804
- const DIALOG_TITLE_SAVE_AS = 'Save as';
9805
- const DIALOG_TITLE_SAVE_ALL = 'Save (incl. viewpresets)';
9806
- const DIALOG_TITLE_DELETE = 'Delete workspace';
9807
- const DIALOG_TITLE_DUPLICATE = 'Duplicate';
9808
- const DIALOG_BUTTON_SAVE = 'Save';
9809
- const DIALOG_BUTTON_DELETE = 'Delete';
9810
- const DIALOG_BUTTON_EDIT = 'Edit (name and abstract)';
9811
- const getDialogTitle = action => {
9812
- switch (action) {
9813
- case WorkspacePresetAction.DELETE:
9814
- {
9815
- return DIALOG_TITLE_DELETE;
9816
- }
9817
- case WorkspacePresetAction.DUPLICATE:
9818
- {
9819
- return DIALOG_TITLE_DUPLICATE;
9820
- }
9821
- case WorkspacePresetAction.SAVE_ALL:
9822
- {
9823
- return DIALOG_TITLE_SAVE_ALL;
9824
- }
9825
- case WorkspacePresetAction.EDIT:
9826
- {
9827
- return DIALOG_BUTTON_EDIT;
9828
- }
9829
- default:
9830
- {
9831
- return DIALOG_TITLE_SAVE_AS;
9832
- }
9833
- }
9834
- };
9835
- const getConfirmLabel$1 = action => {
9836
- switch (action) {
9837
- case WorkspacePresetAction.DELETE:
9838
- {
9839
- return DIALOG_BUTTON_DELETE;
9840
- }
9841
- default:
9842
- {
9843
- return DIALOG_BUTTON_SAVE;
9844
- }
9845
- }
9846
- };
9847
10012
  const WorkspacePresetsFormDialog = ({
9848
10013
  isOpen,
9849
10014
  action,
@@ -9858,10 +10023,49 @@ const WorkspacePresetsFormDialog = ({
9858
10023
  handleSubmit: handleFormSubmit,
9859
10024
  reset
9860
10025
  } = useFormContext();
10026
+ const {
10027
+ t
10028
+ } = useWorkspaceTranslation();
9861
10029
  React__default.useEffect(() => {
9862
10030
  reset(formValues);
9863
10031
  }, [formValues, reset]);
9864
- 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);
9865
10069
  const onSubmit = () => {
9866
10070
  handleFormSubmit(newFormValues => {
9867
10071
  const {
@@ -9878,12 +10082,13 @@ const WorkspacePresetsFormDialog = ({
9878
10082
  onFormSubmit(action, presetId, parsedFormValues);
9879
10083
  })();
9880
10084
  };
10085
+ const cancelLabel = t('workspace-cancel');
9881
10086
  return /*#__PURE__*/React__default.createElement(ConfirmationDialog, {
9882
10087
  "data-testid": "workspace-preset-dialog",
9883
10088
  title: getDialogTitle(action),
9884
10089
  open: isOpen,
9885
10090
  confirmLabel: confirmLabel,
9886
- cancelLabel: "Cancel",
10091
+ cancelLabel: cancelLabel,
9887
10092
  description: "",
9888
10093
  onClose: onClose,
9889
10094
  onSubmit: onSubmit,
@@ -9979,7 +10184,7 @@ const WorkspaceTabConnect = ({
9979
10184
  const WorkspaceTopBar = ({
9980
10185
  workspaceId
9981
10186
  }) => {
9982
- return /*#__PURE__*/React.createElement(WorkspaceTranslationsWrapper, null, /*#__PURE__*/React.createElement(Tabs, {
10187
+ return /*#__PURE__*/React.createElement(Tabs, {
9983
10188
  value: 0,
9984
10189
  "aria-label": "workspace-bar-tabs",
9985
10190
  sx: {
@@ -9994,13 +10199,14 @@ const WorkspaceTopBar = ({
9994
10199
  }
9995
10200
  }, /*#__PURE__*/React.createElement(WorkspaceTabConnect, {
9996
10201
  workspaceId: workspaceId
9997
- })));
10202
+ }));
9998
10203
  };
9999
10204
 
10000
10205
  const validateTitle = value => {
10001
10206
  if (!value) {
10002
10207
  return true;
10003
10208
  }
10209
+ // TODO: use translation from form-fields https://gitlab.com/opengeoweb/opengeoweb/-/issues/4240
10004
10210
  return !value.trim().length ? 'This field is required' : true;
10005
10211
  };
10006
10212
  const MapPresetsForm = ({
@@ -10010,6 +10216,9 @@ const MapPresetsForm = ({
10010
10216
  formValues
10011
10217
  }) => {
10012
10218
  const fieldName = 'title';
10219
+ const {
10220
+ t
10221
+ } = useWorkspaceTranslation();
10013
10222
  const _a = Object.assign(Object.assign({}, emptyMapViewPreset), formValues),
10014
10223
  {
10015
10224
  title
@@ -10039,7 +10248,7 @@ const MapPresetsForm = ({
10039
10248
  onSubmit: onSubmitForm
10040
10249
  }, /*#__PURE__*/React__default.createElement(ReactHookFormTextField, {
10041
10250
  name: "title",
10042
- label: "Map preset name",
10251
+ label: t('workspace-mappreset-dialog-title'),
10043
10252
  rules: {
10044
10253
  required: true,
10045
10254
  validate: {
@@ -10057,27 +10266,15 @@ const MapPresetsForm = ({
10057
10266
  "data-testid": name
10058
10267
  }))))), action === PresetAction.DELETE && ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Typography, {
10059
10268
  variant: "body1"
10060
- }, `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, {
10061
10272
  key: "title",
10062
10273
  name: "title",
10063
10274
  defaultValue: title
10064
10275
  }))));
10065
10276
  };
10066
10277
 
10067
- const getConfirmLabel = action => {
10068
- switch (action) {
10069
- case PresetAction.DELETE:
10070
- {
10071
- return 'Delete';
10072
- }
10073
- case PresetAction.SAVE_AS:
10074
- {
10075
- return 'Save';
10076
- }
10077
- default:
10078
- return 'Save';
10079
- }
10080
- };
10081
10278
  const MapPresetsFormDialog = ({
10082
10279
  isOpen,
10083
10280
  action,
@@ -10091,6 +10288,9 @@ const MapPresetsFormDialog = ({
10091
10288
  handleSubmit: handleFormSubmit,
10092
10289
  reset
10093
10290
  } = useFormContext();
10291
+ const {
10292
+ t
10293
+ } = useWorkspaceTranslation();
10094
10294
  const {
10095
10295
  api
10096
10296
  } = useApiContext();
@@ -10104,6 +10304,20 @@ const MapPresetsFormDialog = ({
10104
10304
  React__default.useEffect(() => {
10105
10305
  reset(formValues);
10106
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
+ };
10107
10321
  const confirmLabel = getConfirmLabel(action);
10108
10322
  const onFormSubmit = newFormValues => __awaiter(void 0, void 0, void 0, function* () {
10109
10323
  try {
@@ -10170,7 +10384,7 @@ const MapPresetsFormDialog = ({
10170
10384
  title: title,
10171
10385
  open: isOpen,
10172
10386
  confirmLabel: confirmLabel,
10173
- cancelLabel: "Cancel",
10387
+ cancelLabel: t('workspace-cancel'),
10174
10388
  description: "",
10175
10389
  onClose: onClose,
10176
10390
  onSubmit: onSubmit,
@@ -10241,6 +10455,9 @@ const WorkspaceDetail = ({
10241
10455
  isSnapshot: _isSnapshot = false
10242
10456
  }) => {
10243
10457
  const dispatch = useDispatch();
10458
+ const {
10459
+ t
10460
+ } = useWorkspaceTranslation();
10244
10461
  const error = useSelector(store => getWorkspaceError(store));
10245
10462
  const isLoading = useSelector(store => isWorkspaceLoading(store));
10246
10463
  const workspaceData = useSelector(store => getWorkspaceData(store));
@@ -10290,20 +10507,24 @@ const WorkspaceDetail = ({
10290
10507
  zIndex: 100
10291
10508
  }
10292
10509
  })), error && error.type !== WorkspaceErrorType.SAVE && ( /*#__PURE__*/React.createElement(AlertBanner, Object.assign({
10293
- title: `Failed to fetch workspace ${workspaceId}`,
10510
+ title: t('workspace-error-fetch-detail', {
10511
+ WORKSPACE_ID: workspaceId
10512
+ }),
10294
10513
  info: error.message,
10295
10514
  shouldClose: true
10296
10515
  }, error.type === WorkspaceErrorType.GENERIC && {
10297
10516
  actionButtonProps: {
10298
- title: 'Try again',
10517
+ title: t('workspace-retry'),
10299
10518
  onClick: () => fetchWorkspace(workspaceId)
10300
10519
  }
10301
10520
  }))), children, !_isSnapshot && ( /*#__PURE__*/React.createElement(React.Fragment, null, error && error.type === WorkspaceErrorType.SAVE && ( /*#__PURE__*/React.createElement(AlertBanner, {
10302
- title: `Failed to save workspace "${workspaceData.title}"`,
10521
+ title: t('workspace-save-error', {
10522
+ TITLE: workspaceData.title
10523
+ }),
10303
10524
  info: error.message,
10304
10525
  shouldClose: true,
10305
10526
  actionButtonProps: {
10306
- title: 'Try again',
10527
+ title: t('workspace-retry'),
10307
10528
  onClick: () => onSave()
10308
10529
  }
10309
10530
  })), (!error || error.type === WorkspaceErrorType.SAVE) && ( /*#__PURE__*/React.createElement(Box, {
@@ -10325,4 +10546,4 @@ const WorkspaceDetail = ({
10325
10546
  }))))), /*#__PURE__*/React.createElement(MapPresetsFormDialogConnect, null));
10326
10547
  };
10327
10548
 
10328
- export { ComponentsLookUpWrapper, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspaceModuleProvider, WorkspacePresetAction, WorkspaceTopBar, WorkspaceTranslationsWrapper, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, workspaceActions as actions, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, emptyMapWorkspace, getWorkspaceRouteUrl, selectors$1 as selectors, viewPresetActions, workspaceListActions, workspaceModuleConfig, reducer$1 as workspaceReducer, routes as workspaceRoutes };
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 };