@opengeoweb/workspace 11.1.0 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/index.esm.js +477 -246
  2. package/package.json +15 -15
  3. package/src/lib/Workspace.stories.d.ts +10 -19
  4. package/src/lib/WorkspaceAdmin.stories.d.ts +1 -0
  5. package/src/lib/api/workspace-api/api.d.ts +6 -0
  6. package/src/lib/api/workspace-api/fakeApi.d.ts +1 -0
  7. package/src/lib/api/workspace-api/hooks.d.ts +11 -0
  8. package/src/lib/components/Providers/Providers.d.ts +6 -2
  9. package/src/lib/components/ViewPresetMenu/ViewPresetMenu.stories.d.ts +6 -21
  10. package/src/lib/components/ViewPresetMenu/ViewPresetsError.stories.d.ts +1 -0
  11. package/src/lib/components/ViewPresetsFormDialog/ViewPresetsFormDialog.d.ts +1 -1
  12. package/src/lib/components/ViewPresetsFormDialog/ViewPresetsFormDialog.stories.d.ts +11 -22
  13. package/src/lib/components/WorkspaceDetail/WorkspaceDetail.stories.d.ts +1 -0
  14. package/src/lib/components/WorkspaceDetail/WorkspaceDetailError.stories.d.ts +1 -1
  15. package/src/lib/components/WorkspaceMenu/WorkspaceMenu.stories.d.ts +7 -13
  16. package/src/lib/components/WorkspaceMenu/WorkspaceMenuButton.stories.d.ts +7 -23
  17. package/src/lib/components/WorkspaceOptions/WorkspaceOptions.stories.d.ts +10 -39
  18. package/src/lib/components/WorkspacePresetsFormDialog/WorkspacePresetsForm.d.ts +2 -1
  19. package/src/lib/components/WorkspacePresetsFormDialog/WorkspacePresetsFormDialog.stories.d.ts +22 -72
  20. package/src/lib/components/WorkspaceSelectList/WorkspaceSelectListError.stories.d.ts +1 -0
  21. package/src/lib/components/WorkspaceSelectList/WorkspaceSelectListRow.stories.d.ts +8 -19
  22. package/src/lib/components/WorkspaceTopBar/WorkspaceTopBar.stories.d.ts +11 -53
  23. package/src/lib/hooks/useFetchWorkspacePresets.d.ts +1 -0
  24. package/src/lib/store/viewPresets/reducer.d.ts +3 -3
  25. package/src/lib/store/viewPresets/types.d.ts +3 -3
  26. package/src/lib/store/workspace/types.d.ts +6 -2
  27. package/src/lib/store/workspaceList/reducer.d.ts +1 -1
  28. package/src/lib/store/workspaceList/selectors.d.ts +9 -0
  29. package/src/lib/store/workspaceList/types.d.ts +5 -2
  30. package/src/lib/storyUtils/StoryWrapper.d.ts +1 -3
  31. package/src/lib/storyUtils/componentsLookUp.stories.d.ts +22 -49
  32. package/src/lib/utils/api.d.ts +0 -1
  33. package/src/lib/utils/fakeApi.stories.d.ts +1 -0
  34. package/src/lib/utils/utils.d.ts +3 -0
package/index.esm.js CHANGED
@@ -1,26 +1,26 @@
1
1
  import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, combineReducers, configureStore } from '@reduxjs/toolkit';
2
- import { syncGroupsTypes, syncGroupsActions, layerActions, mapActions, uiActions, genericActions, layerTypes, mapEnums, selectorMemoizationOptions, genericSelectors, mapSelectors, syncGroupsSelectors, routerActions, mapListener, serviceListener, layersListener, syncGroupsListener, mapReducer, serviceReducer, layerReducer, syncGroupsReducer, loadingIndicatorReducer, uiReducer, linkComponentTypesConstants, uiTypes, loadingIndicatorSelectors, uiSelectors } from '@opengeoweb/store';
3
- import { createApiInstance, createNonAuthApiInstance, getApi, createFakeApiInstance, ApiProvider, useApiContext, useAuthenticationContext as useAuthenticationContext$1, GEOWEB_ROLE_PRESETS_ADMIN as GEOWEB_ROLE_PRESETS_ADMIN$1 } from '@opengeoweb/api';
2
+ import { syncGroupsTypes, syncGroupsActions, layerActions, mapActions, uiActions, genericActions, layerTypes, mapEnums, selectorMemoizationOptions, genericSelectors, mapSelectors, syncGroupsSelectors, routerActions, createViewObjectForNewMap, mapListener, serviceListener, layersListener, syncGroupsListener, openlayersListener, mapReducer, serviceReducer, layerReducer, syncGroupsReducer, loadingIndicatorReducer, uiReducer, linkComponentTypesConstants, uiTypes, loadingIndicatorSelectors, uiSelectors } from '@opengeoweb/store';
3
+ import { createApiInstance, createNonAuthApiInstance, getApi, createFakeApiInstance, ApiProvider, getConfig, getHeaders, handleResponse, useApiContext, useAuthenticationContext as useAuthenticationContext$1, GEOWEB_ROLE_PRESETS_ADMIN as GEOWEB_ROLE_PRESETS_ADMIN$1 } from '@opengeoweb/api';
4
4
  import { chunk, cloneDeep, pick, isEmpty, isEqual, isString } from 'lodash';
5
5
  import { getLeaves, MosaicContext, getAndAssertNodeAtPathExists, createBalancedTreeFromLeaves, MosaicWindow, Mosaic } from 'react-mosaic-component';
6
6
  import { timeSeriesActions, TimeSeriesTypes, timeSeriesSelectors, timeSeriesReducer } from '@opengeoweb/timeseries';
7
7
  import { publicWarningActions, WARN_NAMESPACE, warningsTranslations, publicWarningsSelectors } from '@opengeoweb/warnings';
8
- import { PROJECTION, getAxiosErrorMessage, isAxiosAuthError, isAxiosError as isAxiosError$1, SHARED_NAMESPACE, sharedTranslations, ConfirmationServiceProvider, CustomIconButton, useConfirmationDialog, AlertBanner, PresetScope, CustomTooltip, SearchHighlight, ToggleMenu, DEFAULT_FILTER_HEIGHT, Filter, renderCounter, CustomDialog, ToolContainer, CustomToggleButton, usePrevious, ConfirmationButtons } from '@opengeoweb/shared';
8
+ import { PresetScope, PROJECTION, getAxiosErrorMessage, isAxiosAuthError, isAxiosError as isAxiosError$1, SHARED_NAMESPACE, sharedTranslations, ConfirmationServiceProvider, CustomIconButton, useConfirmationDialog, AlertBanner, CustomTooltip, SearchHighlight, ToggleMenu, DEFAULT_FILTER_HEIGHT, Filter, renderCounter, CustomDialog, ToolContainer, CustomToggleButton, usePrevious, ConfirmationButtons } from '@opengeoweb/shared';
9
9
  import { snackbarTypes, snackbarActions, snackbarListener, snackbarReducer, SnackbarWrapperConnect } from '@opengeoweb/snackbar';
10
10
  import { isAxiosError } from 'axios';
11
11
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
12
- import { ThemeWrapper, lightTheme, Link, LinkOff, SplitVertical, SplitHorizontal, Expand, UnExpand, Close, Delete, Preset, PresetWorkspace, PresetTiles, CloudLoading, CloudIdle, WebAssetOff, Exclamation } from '@opengeoweb/theme';
12
+ import { ThemeWrapper, lightTheme, Link, LinkOff, SplitVertical, SplitHorizontal, Expand, UnExpand, Close, SharedPresetsMyUser, SharedPresetsOtherUsers, Delete, Preset, PresetWorkspace, PresetTiles, CloudLoading, CloudIdle, WebAssetOff, Exclamation } from '@opengeoweb/theme';
13
13
  import { Provider, useDispatch, useSelector, useStore, shallowEqual } from 'react-redux';
14
14
  import { initReactI18next, useTranslation, I18nextProvider } from 'react-i18next';
15
15
  import { AuthenticationProvider, useAuthenticationContext, GEOWEB_ROLE_PRESETS_ADMIN } from '@opengeoweb/authentication';
16
- import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
16
+ import { QueryClient, QueryClientProvider, useMutation } from '@tanstack/react-query';
17
17
  import i18n from 'i18next';
18
18
  import { WEBMAP_REACT_NAMESPACE, webmapReactTranslations } from '@opengeoweb/webmap-react';
19
19
  import { CORE_NAMESPACE, coreTranslations } from '@opengeoweb/core';
20
20
  import { FORM_FIELDS_NAMESPACE, formFieldsTranslations, ReactHookFormTextField, ReactHookFormHiddenInput, ReactHookFormProvider, defaultFormOptions } from '@opengeoweb/form-fields';
21
21
  import * as React from 'react';
22
- import React__default, { useCallback } from 'react';
23
- import { Menu, Typography, List, ListItem, ListItemButton, ListItemIcon, Checkbox, ListItemText, LinearProgress, Grid2, Box, ListSubheader, MenuItem, useTheme, FormGroup, FormControlLabel, Tabs } from '@mui/material';
22
+ import React__default, { useCallback, useEffect } from 'react';
23
+ import { Menu, Typography, List, ListItem, ListItemButton, ListItemIcon, Checkbox, ListItemText, LinearProgress, styled, Grid2, Box, ListSubheader, MenuItem, useTheme, FormGroup, FormControlLabel, Tabs } from '@mui/material';
24
24
  import 'react-mosaic-component/react-mosaic-component.css';
25
25
  import AutoSizer from 'react-virtualized-auto-sizer';
26
26
  import { FixedSizeList } from 'react-window';
@@ -731,9 +731,6 @@ var getApiRoutes$1 = function getApiRoutes(axiosInstance) {
731
731
  return getIdFromUrl(headerLocation);
732
732
  });
733
733
  },
734
- deleteWorkspacePreset: function deleteWorkspacePreset(workspacePresetId) {
735
- return axiosInstance["delete"]("/workspacepreset/" + workspacePresetId);
736
- },
737
734
  // view presets
738
735
  getViewPresets: function getViewPresets(params) {
739
736
  return axiosInstance.get('/viewpreset', {
@@ -908,6 +905,40 @@ var WorkspaceErrorType;
908
905
  WorkspaceErrorType["SAVE"] = "SAVE";
909
906
  })(WorkspaceErrorType || (WorkspaceErrorType = {}));
910
907
 
908
+ /* *
909
+ * Licensed under the Apache License, Version 2.0 (the "License");
910
+ * you may not use this file except in compliance with the License.
911
+ * You may obtain a copy of the License at
912
+ *
913
+ * http://www.apache.org/licenses/LICENSE-2.0
914
+ *
915
+ * Unless required by applicable law or agreed to in writing, software
916
+ * distributed under the License is distributed on an "AS IS" BASIS,
917
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
918
+ * See the License for the specific language governing permissions and
919
+ * limitations under the License.
920
+ *
921
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
922
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
923
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
924
+ * */
925
+ var WorkspaceListErrorCategory;
926
+ (function (WorkspaceListErrorCategory) {
927
+ WorkspaceListErrorCategory["AUTH"] = "AUTH";
928
+ WorkspaceListErrorCategory["GENERIC"] = "GENERIC";
929
+ })(WorkspaceListErrorCategory || (WorkspaceListErrorCategory = {}));
930
+ var WorkspaceListErrorType;
931
+ (function (WorkspaceListErrorType) {
932
+ WorkspaceListErrorType["TRANSLATABLE_ERROR"] = "TRANSLATABLE_ERROR";
933
+ WorkspaceListErrorType["VERBATIM_ERROR"] = "VERBATIM_ERROR";
934
+ })(WorkspaceListErrorType || (WorkspaceListErrorType = {}));
935
+ var PresetFilterType;
936
+ (function (PresetFilterType) {
937
+ PresetFilterType["personal"] = "personal";
938
+ PresetFilterType["shared"] = "shared";
939
+ PresetFilterType["system"] = "system";
940
+ })(PresetFilterType || (PresetFilterType = {}));
941
+
911
942
  /* *
912
943
  * Licensed under the Apache License, Version 2.0 (the "License");
913
944
  * you may not use this file except in compliance with the License.
@@ -927,14 +958,17 @@ var WorkspaceErrorType;
927
958
  * */
928
959
  var workspaceListFilterOptions = [{
929
960
  label: 'shared-filter-my-presets',
930
- id: 'user',
931
- type: 'scope',
961
+ id: PresetFilterType.personal,
932
962
  isSelected: true,
933
963
  isDisabled: false
934
964
  }, {
935
965
  label: 'shared-filter-system-presets',
936
- id: 'system',
937
- type: 'scope',
966
+ id: PresetFilterType.system,
967
+ isSelected: true,
968
+ isDisabled: false
969
+ }, {
970
+ label: 'shared-filter-shared-presets',
971
+ id: PresetFilterType.shared,
938
972
  isSelected: true,
939
973
  isDisabled: false
940
974
  }];
@@ -1110,16 +1144,21 @@ var PresetAction;
1110
1144
  * */
1111
1145
  var viewPresetsListFilterOptions = [{
1112
1146
  label: 'shared-filter-my-presets',
1113
- id: 'user',
1147
+ id: PresetScope.user,
1114
1148
  type: 'scope',
1115
1149
  isSelected: true,
1116
1150
  isDisabled: false
1117
1151
  }, {
1118
1152
  label: 'shared-filter-system-presets',
1119
- id: 'system',
1153
+ id: PresetScope.system,
1120
1154
  type: 'scope',
1121
1155
  isSelected: true,
1122
1156
  isDisabled: false
1157
+ }, {
1158
+ label: 'shared-filter-shared-presets',
1159
+ id: PresetScope.shared,
1160
+ isSelected: true,
1161
+ isDisabled: true
1123
1162
  }];
1124
1163
  var viewPresetsAdapter = createEntityAdapter({
1125
1164
  // we use panelId as id (panelId can be mapId or viewId)
@@ -1508,6 +1547,29 @@ var setDocumentTitle = function setDocumentTitle(workspaceTitle, appTitle) {
1508
1547
  var fallbackAppTitle = appTitle || 'GeoWeb';
1509
1548
  document.title = workspaceTitle ? workspaceTitle + " - " + fallbackAppTitle : fallbackAppTitle;
1510
1549
  };
1550
+ var filterWorkspacePresets = function filterWorkspacePresets(workspacePresets, selectedFilters, username) {
1551
+ var isAllSelected = selectedFilters.every(function (filter) {
1552
+ return filter.isSelected;
1553
+ });
1554
+ if (isAllSelected) {
1555
+ return workspacePresets;
1556
+ }
1557
+ var selectedIds = selectedFilters.filter(function (filter) {
1558
+ return filter.isSelected;
1559
+ }).map(function (filter) {
1560
+ return filter.id;
1561
+ });
1562
+ return workspacePresets.filter(function (preset) {
1563
+ return (
1564
+ // System
1565
+ selectedIds.includes('system') && preset.scope === 'system' ||
1566
+ // Personal
1567
+ selectedIds.includes('personal') && preset.username === username ||
1568
+ // Shared
1569
+ selectedIds.includes('shared') && preset.username !== username && preset.is_shared
1570
+ );
1571
+ });
1572
+ };
1511
1573
 
1512
1574
  /* *
1513
1575
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -1667,7 +1729,7 @@ var createCustomEmptyMapWorkspace = function createCustomEmptyMapWorkspace(empty
1667
1729
  var constructFilterParams = function constructFilterParams(filters, searchQuery) {
1668
1730
  // get filters
1669
1731
  var _filters$reduce = filters.reduce(function (filterList, filter) {
1670
- if (filter.isSelected && filter.type === 'scope') {
1732
+ if (filter.isSelected && 'type' in filter && filter.type === 'scope') {
1671
1733
  return Object.assign({}, filter, {
1672
1734
  scope: filterList.scope.concat(filter.id)
1673
1735
  });
@@ -4519,17 +4581,13 @@ var filterWorkspacePresetList = function filterWorkspacePresetList(params) {
4519
4581
  return workspacePresetsList;
4520
4582
  }
4521
4583
  return workspacePresetsList.reduce(function (list, workspacePresetRaw) {
4522
- var _params$scope;
4523
4584
  var workspacePreset = workspacePresetRaw;
4524
- if (params != null && (_params$scope = params.scope) != null && _params$scope.includes(workspacePreset.scope)) {
4525
- if (params.search) {
4526
- var searchQuery = getCleanSearchQuery(params.search);
4527
- var hasResult = searchQuery.split(',').every(function (query) {
4528
- return workspacePreset.title.toLowerCase().includes(query.toLowerCase()) || workspacePreset["abstract"].toLowerCase().includes(query.toLowerCase());
4529
- });
4530
- return hasResult ? list.concat(workspacePreset) : list;
4531
- }
4532
- return list.concat(workspacePreset);
4585
+ if (params.search) {
4586
+ var searchQuery = getCleanSearchQuery(params.search);
4587
+ var hasResult = searchQuery.split(',').every(function (query) {
4588
+ return workspacePreset.title.toLowerCase().includes(query.toLowerCase()) || workspacePreset["abstract"].toLowerCase().includes(query.toLowerCase());
4589
+ });
4590
+ return hasResult ? list.concat(workspacePreset) : list;
4533
4591
  }
4534
4592
  return list;
4535
4593
  }, []);
@@ -4539,9 +4597,9 @@ var filterViewPresetList = function filterViewPresetList(params) {
4539
4597
  return viewPresetsList;
4540
4598
  }
4541
4599
  return viewPresetsList.reduce(function (list, viewPresetRaw) {
4542
- var _params$scope2;
4600
+ var _params$scope;
4543
4601
  var workspacePreset = viewPresetRaw;
4544
- if (params != null && (_params$scope2 = params.scope) != null && _params$scope2.includes(workspacePreset.scope)) {
4602
+ if (params != null && (_params$scope = params.scope) != null && _params$scope.includes(workspacePreset.scope)) {
4545
4603
  return list.concat(workspacePreset);
4546
4604
  }
4547
4605
  return list;
@@ -4590,11 +4648,6 @@ var getApiRoutes = function getApiRoutes(axiosInstance) {
4590
4648
  return null;
4591
4649
  });
4592
4650
  },
4593
- deleteWorkspacePreset: function deleteWorkspacePreset(workspacePresetId) {
4594
- // eslint-disable-next-line no-console
4595
- console.log('api: delete workspace preset', workspacePresetId);
4596
- return axiosInstance["delete"]("/workspacepreset/" + workspacePresetId);
4597
- },
4598
4651
  // view presets
4599
4652
  getViewPresets: function getViewPresets(params) {
4600
4653
  return axiosInstance.get('/viewpreset', {
@@ -5013,7 +5066,9 @@ workspaceListener.startListening({
5013
5066
  while (1) switch (_context11.prev = _context11.next) {
5014
5067
  case 0:
5015
5068
  payload = _ref10.payload;
5016
- mosaicNodeId = payload.mosaicNodeId, componentType = payload.componentType, newId = payload.newId;
5069
+ mosaicNodeId = payload.mosaicNodeId, componentType = payload.componentType, newId = payload.newId; // TODO: this would be nice to move into the openlayers store
5070
+ createViewObjectForNewMap(mosaicNodeId, newId);
5071
+ // Note, at some point these might no longer be necessary
5017
5072
  bbox = mapSelectors.getBbox(listenerApi.getState(), mosaicNodeId);
5018
5073
  srs = mapSelectors.getSrs(listenerApi.getState(), mosaicNodeId);
5019
5074
  mapPreset = bbox.bottom ? {
@@ -5030,7 +5085,7 @@ workspaceListener.startListening({
5030
5085
  syncGroupsIds: []
5031
5086
  }
5032
5087
  }));
5033
- case 6:
5088
+ case 7:
5034
5089
  case "end":
5035
5090
  return _context11.stop();
5036
5091
  }
@@ -5071,34 +5126,6 @@ workspaceListener.startListening({
5071
5126
  }()
5072
5127
  });
5073
5128
 
5074
- /* *
5075
- * Licensed under the Apache License, Version 2.0 (the "License");
5076
- * you may not use this file except in compliance with the License.
5077
- * You may obtain a copy of the License at
5078
- *
5079
- * http://www.apache.org/licenses/LICENSE-2.0
5080
- *
5081
- * Unless required by applicable law or agreed to in writing, software
5082
- * distributed under the License is distributed on an "AS IS" BASIS,
5083
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5084
- * See the License for the specific language governing permissions and
5085
- * limitations under the License.
5086
- *
5087
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
5088
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
5089
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
5090
- * */
5091
- var WorkspaceListErrorCategory;
5092
- (function (WorkspaceListErrorCategory) {
5093
- WorkspaceListErrorCategory["AUTH"] = "AUTH";
5094
- WorkspaceListErrorCategory["GENERIC"] = "GENERIC";
5095
- })(WorkspaceListErrorCategory || (WorkspaceListErrorCategory = {}));
5096
- var WorkspaceListErrorType;
5097
- (function (WorkspaceListErrorType) {
5098
- WorkspaceListErrorType["TRANSLATABLE_ERROR"] = "TRANSLATABLE_ERROR";
5099
- WorkspaceListErrorType["VERBATIM_ERROR"] = "VERBATIM_ERROR";
5100
- })(WorkspaceListErrorType || (WorkspaceListErrorType = {}));
5101
-
5102
5129
  /* *
5103
5130
  * Licensed under the Apache License, Version 2.0 (the "License");
5104
5131
  * you may not use this file except in compliance with the License.
@@ -5117,7 +5144,7 @@ var WorkspaceListErrorType;
5117
5144
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
5118
5145
  * */
5119
5146
  var getWorkspaceListStore = function getWorkspaceListStore(store) {
5120
- if (store && store.workspaceList) {
5147
+ if (store != null && store.workspaceList) {
5121
5148
  return store.workspaceList;
5122
5149
  }
5123
5150
  return null;
@@ -5146,6 +5173,10 @@ var getWorkspaceListError = createSelector(getWorkspaceListStore, function (stor
5146
5173
  }, function (state) {
5147
5174
  return (state == null ? void 0 : state.error) || undefined;
5148
5175
  }, selectorMemoizationOptions);
5176
+ var getWorkspaceActionFormValues = createSelector(getWorkspaceListStore, function (store) {
5177
+ var _store$workspaceActio;
5178
+ return ((_store$workspaceActio = store.workspaceActionDialog) == null ? void 0 : _store$workspaceActio.formValues) || {};
5179
+ }, selectorMemoizationOptions);
5149
5180
  var getWorkspaceActionDialogDetails = createSelector(getWorkspaceListStore, getWorkspaceState, getViewPresetsStore, function (workspaceListState, workspaceState, viewpresetState) {
5150
5181
  var dialog = (workspaceListState == null ? void 0 : workspaceListState.workspaceActionDialog) || false;
5151
5182
  if (dialog) {
@@ -5530,16 +5561,18 @@ workspaceListListener.startListening({
5530
5561
  actionCreator: workspaceListActions.onSuccessWorkspacePresetAction,
5531
5562
  effect: function () {
5532
5563
  var _effect2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2, listenerApi) {
5533
- var payload, action, workspaceId, title, workspaceFilters, searchQuery;
5564
+ var _listenerApi$getOrigi;
5565
+ var payload, currentWorkspaceId, action, workspaceId, title, workspaceFilters, searchQuery;
5534
5566
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
5535
5567
  while (1) switch (_context2.prev = _context2.next) {
5536
5568
  case 0:
5537
5569
  payload = _ref2.payload;
5538
5570
  listenerApi.cancelActiveListeners();
5571
+ currentWorkspaceId = (_listenerApi$getOrigi = listenerApi.getOriginalState().workspace) == null ? void 0 : _listenerApi$getOrigi.id;
5539
5572
  action = payload.action, workspaceId = payload.workspaceId, title = payload.title;
5540
5573
  listenerApi.dispatch(snackbarActions.openSnackbar(getSnackbarMessage$1(action, title)));
5541
5574
  // if active workspace has been deleted, empty out url
5542
- if ((action === WorkspacePresetAction.DELETE || action === WorkspacePresetAction.DELETE_SYSTEM_PRESET) && payload.currentActiveWorkspaceId && workspaceId === payload.currentActiveWorkspaceId) {
5575
+ if ((action === WorkspacePresetAction.DELETE || action === WorkspacePresetAction.DELETE_SYSTEM_PRESET) && currentWorkspaceId && workspaceId === currentWorkspaceId) {
5543
5576
  listenerApi.dispatch(routerActions.navigateToUrl({
5544
5577
  url: getWorkspaceRouteUrl()
5545
5578
  }));
@@ -5554,7 +5587,7 @@ workspaceListListener.startListening({
5554
5587
  workspaceFilters = getWorkspaceListFilters(listenerApi.getState());
5555
5588
  searchQuery = getWorkspaceListSearchQuery(listenerApi.getState());
5556
5589
  listenerApi.dispatch(workspaceListActions.fetchWorkspaceList(constructFilterParams(workspaceFilters, searchQuery)));
5557
- case 9:
5590
+ case 10:
5558
5591
  case "end":
5559
5592
  return _context2.stop();
5560
5593
  }
@@ -5570,7 +5603,7 @@ workspaceListListener.startListening({
5570
5603
  actionCreator: workspaceListActions.submitFormWorkspaceActionDialogOptions,
5571
5604
  effect: function () {
5572
5605
  var _effect3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref3, listenerApi) {
5573
- var payload, workspaceApi, presetId, presetAction, data, emptyMapPresetTitle, emptyWorkspacePresetTitle, scope, isNewWorkspace, _ref4, presetToDuplicate, fullPreset, newId, selectedWorkspace, _yield$workspaceApi$g2, originalData, workspaceDataNewTitle, isSaveWorkspaceAction, isSaveAsWorkspaceAction, hasWorkspaceAlreadyBeenSaved, workspaceId, viewPresetResults, hasError, workspaceData, newWorkspace, message, category;
5606
+ var payload, workspaceApi, presetId, presetAction, data, emptyMapPresetTitle, emptyWorkspacePresetTitle, scope, _yield$workspaceApi$g2, originalData, workspaceDataNewTitle, isSaveWorkspaceAction, isSaveAsWorkspaceAction, hasWorkspaceAlreadyBeenSaved, workspaceId, viewPresetResults, hasError, workspaceData, newWorkspace, message, category;
5574
5607
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
5575
5608
  while (1) switch (_context4.prev = _context4.next) {
5576
5609
  case 0:
@@ -5580,73 +5613,26 @@ workspaceListListener.startListening({
5580
5613
  _context4.prev = 3;
5581
5614
  presetId = payload.presetId, presetAction = payload.presetAction, data = payload.data, emptyMapPresetTitle = payload.emptyMapPresetTitle, emptyWorkspacePresetTitle = payload.emptyWorkspacePresetTitle;
5582
5615
  scope = data.scope || 'user'; // duplicate
5583
- if (!(presetAction === WorkspacePresetAction.DUPLICATE)) {
5584
- _context4.next = 22;
5585
- break;
5586
- }
5587
- isNewWorkspace = presetId === getEmptyMapWorkspace().id;
5588
- if (!isNewWorkspace) {
5589
- _context4.next = 12;
5590
- break;
5591
- }
5592
- _context4.t0 = {
5593
- data: emptyWorkspaceBEData
5594
- };
5595
- _context4.next = 15;
5596
- break;
5597
- case 12:
5598
- _context4.next = 14;
5599
- return workspaceApi.getWorkspacePreset(presetId);
5600
- case 14:
5601
- _context4.t0 = _context4.sent;
5602
- case 15:
5603
- _ref4 = _context4.t0;
5604
- presetToDuplicate = _ref4.data;
5605
- fullPreset = Object.assign({}, presetToDuplicate, data);
5606
- _context4.next = 20;
5607
- return workspaceApi.saveWorkspacePresetAs(fullPreset);
5608
- case 20:
5609
- newId = _context4.sent;
5610
- listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
5611
- workspaceId: newId,
5612
- action: presetAction,
5613
- title: data.title,
5614
- scope: scope
5615
- }));
5616
- case 22:
5617
- if (!(presetAction === WorkspacePresetAction.DELETE || presetAction === WorkspacePresetAction.DELETE_SYSTEM_PRESET)) {
5618
- _context4.next = 27;
5619
- break;
5620
- }
5621
- _context4.next = 25;
5622
- return workspaceApi.deleteWorkspacePreset(presetId);
5623
- case 25:
5624
- selectedWorkspace = getWorkspaceState(listenerApi.getState());
5625
- listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
5626
- workspaceId: presetId,
5627
- action: presetAction,
5628
- title: data.title,
5629
- currentActiveWorkspaceId: selectedWorkspace.id,
5630
- scope: scope,
5631
- emptyWorkspacePresetTitle: emptyWorkspacePresetTitle
5632
- }));
5633
- case 27:
5616
+ if (presetAction === WorkspacePresetAction.DUPLICATE) ;
5617
+ // delete
5618
+ if (presetAction === WorkspacePresetAction.DELETE || presetAction === WorkspacePresetAction.DELETE_SYSTEM_PRESET) ;
5619
+ // edit
5634
5620
  if (!(presetAction === WorkspacePresetAction.EDIT)) {
5635
- _context4.next = 36;
5621
+ _context4.next = 17;
5636
5622
  break;
5637
5623
  }
5638
- _context4.next = 30;
5624
+ _context4.next = 11;
5639
5625
  return workspaceApi.getWorkspacePreset(presetId);
5640
- case 30:
5626
+ case 11:
5641
5627
  _yield$workspaceApi$g2 = _context4.sent;
5642
5628
  originalData = _yield$workspaceApi$g2.data;
5643
5629
  workspaceDataNewTitle = Object.assign({}, originalData, {
5644
5630
  title: data.title,
5645
5631
  "abstract": data["abstract"]
5646
5632
  });
5647
- _context4.next = 35;
5633
+ _context4.next = 16;
5648
5634
  return workspaceApi.saveWorkspacePreset(presetId, workspaceDataNewTitle);
5649
- case 35:
5635
+ case 16:
5650
5636
  listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
5651
5637
  workspaceId: presetId,
5652
5638
  action: presetAction,
@@ -5654,39 +5640,39 @@ workspaceListListener.startListening({
5654
5640
  "abstract": data["abstract"],
5655
5641
  scope: scope
5656
5642
  }));
5657
- case 36:
5643
+ case 17:
5658
5644
  // save (as) user/system presets
5659
5645
  isSaveWorkspaceAction = presetAction === WorkspacePresetAction.SAVE_SYSTEM_PRESET || presetAction === WorkspacePresetAction.SAVE;
5660
5646
  isSaveAsWorkspaceAction = presetAction === WorkspacePresetAction.SAVE_SYSTEM_PRESET_AS || presetAction === WorkspacePresetAction.SAVE_AS;
5661
5647
  if (!(isSaveWorkspaceAction || isSaveAsWorkspaceAction)) {
5662
- _context4.next = 62;
5648
+ _context4.next = 43;
5663
5649
  break;
5664
5650
  }
5665
5651
  hasWorkspaceAlreadyBeenSaved = getWorkspaceDialogIsSaved(listenerApi.getState());
5666
5652
  workspaceId = presetId;
5667
5653
  if (!(!hasWorkspaceAlreadyBeenSaved && isSaveAsWorkspaceAction)) {
5668
- _context4.next = 45;
5654
+ _context4.next = 26;
5669
5655
  break;
5670
5656
  }
5671
- _context4.next = 44;
5657
+ _context4.next = 25;
5672
5658
  return workspaceApi.saveWorkspacePresetAs(data);
5673
- case 44:
5659
+ case 25:
5674
5660
  workspaceId = _context4.sent;
5675
- case 45:
5661
+ case 26:
5676
5662
  if (!isSaveWorkspaceAction) {
5677
- _context4.next = 48;
5663
+ _context4.next = 29;
5678
5664
  break;
5679
5665
  }
5680
- _context4.next = 48;
5666
+ _context4.next = 29;
5681
5667
  return workspaceApi.saveWorkspacePreset(workspaceId, data);
5682
- case 48:
5668
+ case 29:
5683
5669
  // lock the workspace
5684
5670
  listenerApi.dispatch(workspaceListActions.onSuccessWorkspaceSaveDialog({
5685
5671
  presetId: workspaceId
5686
5672
  }));
5687
- _context4.next = 51;
5673
+ _context4.next = 32;
5688
5674
  return Promise.all(data.views.map( /*#__PURE__*/function () {
5689
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(view) {
5675
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(view) {
5690
5676
  var viewPresetEntity, shouldUpdateView, canUpdateView, _payload, _payload2;
5691
5677
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
5692
5678
  while (1) switch (_context3.prev = _context3.next) {
@@ -5735,16 +5721,16 @@ workspaceListListener.startListening({
5735
5721
  }, _callee3);
5736
5722
  }));
5737
5723
  return function (_x7) {
5738
- return _ref5.apply(this, arguments);
5724
+ return _ref4.apply(this, arguments);
5739
5725
  };
5740
5726
  }()));
5741
- case 51:
5727
+ case 32:
5742
5728
  viewPresetResults = _context4.sent;
5743
5729
  hasError = viewPresetResults.find(function (view) {
5744
5730
  return view.message;
5745
5731
  });
5746
5732
  if (!hasError) {
5747
- _context4.next = 56;
5733
+ _context4.next = 37;
5748
5734
  break;
5749
5735
  }
5750
5736
  // maybe we can use another action, but this resets fetching of the form
@@ -5752,7 +5738,7 @@ workspaceListListener.startListening({
5752
5738
  error: undefined
5753
5739
  }));
5754
5740
  return _context4.abrupt("return");
5755
- case 56:
5741
+ case 37:
5756
5742
  workspaceData = getWorkspaceData(listenerApi.getState());
5757
5743
  newWorkspace = Object.assign({}, workspaceData, {
5758
5744
  id: workspaceId,
@@ -5760,9 +5746,9 @@ workspaceListListener.startListening({
5760
5746
  "abstract": data["abstract"],
5761
5747
  scope: scope
5762
5748
  });
5763
- _context4.next = 60;
5749
+ _context4.next = 41;
5764
5750
  return workspaceApi.saveWorkspacePreset(workspaceId, newWorkspace);
5765
- case 60:
5751
+ case 41:
5766
5752
  listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
5767
5753
  action: presetAction,
5768
5754
  workspaceId: workspaceId,
@@ -5773,7 +5759,7 @@ workspaceListListener.startListening({
5773
5759
  listenerApi.dispatch(routerActions.navigateToUrl({
5774
5760
  url: getWorkspaceRouteUrl(workspaceId)
5775
5761
  }));
5776
- case 62:
5762
+ case 43:
5777
5763
  // Reset
5778
5764
  if (presetAction === WorkspacePresetAction.RESET) {
5779
5765
  // In case we're resetting the `New workspace` preset
@@ -5796,13 +5782,13 @@ workspaceListListener.startListening({
5796
5782
  scope: scope
5797
5783
  }));
5798
5784
  }
5799
- _context4.next = 70;
5785
+ _context4.next = 51;
5800
5786
  break;
5801
- case 65:
5802
- _context4.prev = 65;
5803
- _context4.t1 = _context4["catch"](3);
5804
- message = isAxiosError$1(_context4.t1) ? getAxiosErrorMessage(_context4.t1) : _context4.t1.message;
5805
- category = isAxiosAuthError(_context4.t1) ? WorkspaceListErrorCategory.AUTH : WorkspaceListErrorCategory.GENERIC;
5787
+ case 46:
5788
+ _context4.prev = 46;
5789
+ _context4.t0 = _context4["catch"](3);
5790
+ message = isAxiosError$1(_context4.t0) ? getAxiosErrorMessage(_context4.t0) : _context4.t0.message;
5791
+ category = isAxiosAuthError(_context4.t0) ? WorkspaceListErrorCategory.AUTH : WorkspaceListErrorCategory.GENERIC;
5806
5792
  listenerApi.dispatch(workspaceListActions.onErrorWorkspacePresetAction({
5807
5793
  error: {
5808
5794
  type: WorkspaceListErrorType.VERBATIM_ERROR,
@@ -5810,11 +5796,11 @@ workspaceListListener.startListening({
5810
5796
  message: message
5811
5797
  }
5812
5798
  }));
5813
- case 70:
5799
+ case 51:
5814
5800
  case "end":
5815
5801
  return _context4.stop();
5816
5802
  }
5817
- }, _callee4, null, [[3, 65]]);
5803
+ }, _callee4, null, [[3, 46]]);
5818
5804
  }));
5819
5805
  function effect(_x5, _x6) {
5820
5806
  return _effect3.apply(this, arguments);
@@ -5980,7 +5966,7 @@ var workspaceReducersMap = {
5980
5966
  timeSeries: timeSeriesReducer,
5981
5967
  snackbar: snackbarReducer
5982
5968
  };
5983
- var workspaceMiddlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, syncGroupsListener.middleware, workspaceListener.middleware, workspaceListListener.middleware, viewPresetsListener.middleware, snackbarListener.middleware];
5969
+ var workspaceMiddlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, syncGroupsListener.middleware, workspaceListener.middleware, workspaceListListener.middleware, viewPresetsListener.middleware, snackbarListener.middleware, openlayersListener.middleware];
5984
5970
  var workspaceRootReducer = combineReducers(workspaceReducersMap);
5985
5971
  var createMockStore = function createMockStore(mockState) {
5986
5972
  return configureStore({
@@ -6029,32 +6015,27 @@ var defaultAuthConfig = {
6029
6015
  },
6030
6016
  sessionStorageProvider: null
6031
6017
  };
6032
- var WorkspaceWrapperProviderWithStore = function WorkspaceWrapperProviderWithStore(_ref3) {
6018
+ // wrapper without theme and i18n
6019
+ var WorkspaceStoreWrapper = function WorkspaceStoreWrapper(_ref3) {
6033
6020
  var children = _ref3.children,
6034
6021
  _ref3$store = _ref3.store,
6035
6022
  store = _ref3$store === void 0 ? createMockStore() : _ref3$store,
6036
6023
  _ref3$createApi = _ref3.createApi,
6037
6024
  createApi$1 = _ref3$createApi === void 0 ? createApi : _ref3$createApi,
6038
- theme = _ref3.theme,
6039
6025
  _ref3$auth = _ref3.auth,
6040
6026
  auth = _ref3$auth === void 0 ? defaultAuthConfig : _ref3$auth;
6041
- return jsx(WorkspaceI18nProvider, {
6042
- children: jsx(AuthenticationProvider, {
6043
- value: auth,
6044
- children: jsx(QueryClientProvider, {
6045
- client: queryClient,
6046
- children: jsx(ApiProvider, {
6047
- createApi: createApi$1,
6048
- name: API_NAME,
6049
- children: jsx(Provider, {
6050
- store: store,
6051
- children: jsx(WorkspaceThemeProvider, {
6052
- theme: theme,
6053
- children: jsx(SnackbarWrapperConnect, {
6054
- children: jsx(ConfirmationServiceProvider, {
6055
- children: children
6056
- })
6057
- })
6027
+ return jsx(AuthenticationProvider, {
6028
+ value: auth,
6029
+ children: jsx(QueryClientProvider, {
6030
+ client: queryClient,
6031
+ children: jsx(ApiProvider, {
6032
+ createApi: createApi$1,
6033
+ name: API_NAME,
6034
+ children: jsx(Provider, {
6035
+ store: store,
6036
+ children: jsx(SnackbarWrapperConnect, {
6037
+ children: jsx(ConfirmationServiceProvider, {
6038
+ children: children
6058
6039
  })
6059
6040
  })
6060
6041
  })
@@ -6062,8 +6043,29 @@ var WorkspaceWrapperProviderWithStore = function WorkspaceWrapperProviderWithSto
6062
6043
  })
6063
6044
  });
6064
6045
  };
6065
- var WorkspaceI18nProvider = function WorkspaceI18nProvider(_ref4) {
6066
- var children = _ref4.children;
6046
+ var WorkspaceWrapperProviderWithStore = function WorkspaceWrapperProviderWithStore(_ref4) {
6047
+ var children = _ref4.children,
6048
+ _ref4$store = _ref4.store,
6049
+ store = _ref4$store === void 0 ? createMockStore() : _ref4$store,
6050
+ _ref4$createApi = _ref4.createApi,
6051
+ createApi$1 = _ref4$createApi === void 0 ? createApi : _ref4$createApi,
6052
+ theme = _ref4.theme,
6053
+ _ref4$auth = _ref4.auth,
6054
+ auth = _ref4$auth === void 0 ? defaultAuthConfig : _ref4$auth;
6055
+ return jsx(WorkspaceThemeProvider, {
6056
+ theme: theme,
6057
+ children: jsx(WorkspaceI18nProvider, {
6058
+ children: jsx(WorkspaceStoreWrapper, {
6059
+ store: store,
6060
+ createApi: createApi$1,
6061
+ auth: auth,
6062
+ children: children
6063
+ })
6064
+ })
6065
+ });
6066
+ };
6067
+ var WorkspaceI18nProvider = function WorkspaceI18nProvider(_ref5) {
6068
+ var children = _ref5.children;
6067
6069
  initWorkspaceTestI18n();
6068
6070
  return jsx(I18nextProvider, {
6069
6071
  i18n: i18n,
@@ -6483,6 +6485,12 @@ var getPresetIcon = function getPresetIcon(preset) {
6483
6485
  });
6484
6486
  }
6485
6487
  };
6488
+ var ShareIcon = styled(ListItemIcon)(function () {
6489
+ return {
6490
+ minWidth: '32px !important',
6491
+ paddingTop: '3px'
6492
+ };
6493
+ });
6486
6494
  var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
6487
6495
  var workspacePreset = _ref.workspacePreset,
6488
6496
  isSelected = _ref.isSelected,
@@ -6498,34 +6506,40 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
6498
6506
  searchQuery = _ref$searchQuery === void 0 ? '' : _ref$searchQuery,
6499
6507
  _ref$testIdPrefix = _ref.testIdPrefix,
6500
6508
  testIdPrefix = _ref$testIdPrefix === void 0 ? 'workspace' : _ref$testIdPrefix;
6509
+ var _useAuthenticationCon = useAuthenticationContext(),
6510
+ auth = _useAuthenticationCon.auth;
6501
6511
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
6502
6512
  t = _useWorkspaceTranslat.t;
6503
- var onDuplicate = function onDuplicate() {
6504
- onClickWorkspacePresetOption(workspacePreset.id, WorkspacePresetAction.DUPLICATE, workspacePreset);
6505
- };
6506
- var onEdit = function onEdit() {
6507
- onClickWorkspacePresetOption(workspacePreset.id, WorkspacePresetAction.EDIT, workspacePreset);
6508
- };
6509
- var onShare = function onShare() {
6510
- onClickWorkspacePresetOption(workspacePreset.id, WorkspacePresetAction.SHARE, workspacePreset);
6513
+ var shareIcon = React__default.useMemo(function () {
6514
+ if (workspacePreset.is_shared) {
6515
+ if (workspacePreset.username === (auth == null ? void 0 : auth.username)) {
6516
+ return jsx(SharedPresetsMyUser, {});
6517
+ }
6518
+ return jsx(SharedPresetsOtherUsers, {});
6519
+ }
6520
+ return null;
6521
+ }, [workspacePreset.is_shared, workspacePreset.username, auth == null ? void 0 : auth.username]);
6522
+ var _onClick = function onClick(action) {
6523
+ return onClickWorkspacePresetOption(workspacePreset.id, action, workspacePreset);
6511
6524
  };
6512
6525
  var menuItems = [{
6513
6526
  text: t('workspace-duplicate'),
6514
- action: onDuplicate
6527
+ action: function action() {
6528
+ return _onClick(WorkspacePresetAction.DUPLICATE);
6529
+ }
6515
6530
  }];
6516
6531
  (workspacePreset.scope === PresetScope.user || isAdmin) && menuItems.push({
6517
6532
  text: t('workspace-edit'),
6518
- action: onEdit
6519
- });
6520
- workspacePreset.scope === PresetScope.user && menuItems.push({
6521
- text: t('workspace-share'),
6522
- action: onShare,
6523
- isDisabled: true
6533
+ action: function action() {
6534
+ return _onClick(WorkspacePresetAction.EDIT);
6535
+ }
6524
6536
  });
6525
- workspacePreset.scope === PresetScope.shared && menuItems.push({
6526
- text: t('workspace-stop-share'),
6527
- action: onShare,
6528
- isDisabled: true
6537
+ workspacePreset.scope === PresetScope.user && (auth == null ? void 0 : auth.username) === workspacePreset.username && menuItems.push({
6538
+ text: workspacePreset.is_shared ? t('workspace-stop-share') : t('workspace-share'),
6539
+ action: function action() {
6540
+ return _onClick(WorkspacePresetAction.SHARE);
6541
+ },
6542
+ isDisabled: false
6529
6543
  });
6530
6544
  return jsx(ListItem, {
6531
6545
  disablePadding: true,
@@ -6563,6 +6577,8 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
6563
6577
  "aria-label": testIdPrefix,
6564
6578
  children: [jsx(ListItemIcon, {
6565
6579
  children: getPresetIcon(workspacePreset)
6580
+ }), shareIcon && jsx(ShareIcon, {
6581
+ children: shareIcon
6566
6582
  }), jsx(CustomTooltip, {
6567
6583
  title: workspacePreset.title,
6568
6584
  children: jsx(ListItemText, {
@@ -6594,7 +6610,7 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
6594
6610
  tooltipTitle: t('workspace-delete-tooltip'),
6595
6611
  onClick: function onClick(event) {
6596
6612
  event.stopPropagation();
6597
- onClickWorkspacePresetOption(workspacePreset.id, isAdmin ? WorkspacePresetAction.DELETE_SYSTEM_PRESET : WorkspacePresetAction.DELETE, workspacePreset);
6613
+ _onClick(isAdmin ? WorkspacePresetAction.DELETE_SYSTEM_PRESET : WorkspacePresetAction.DELETE);
6598
6614
  },
6599
6615
  variant: "tool",
6600
6616
  sx: {
@@ -7669,17 +7685,69 @@ var WorkspaceViewConnect = function WorkspaceViewConnect(_ref) {
7669
7685
  });
7670
7686
  };
7671
7687
 
7688
+ /* *
7689
+ * Licensed under the Apache License, Version 2.0 (the "License");
7690
+ * you may not use this file except in compliance with the License.
7691
+ * You may obtain a copy of the License at
7692
+ *
7693
+ * http://www.apache.org/licenses/LICENSE-2.0
7694
+ *
7695
+ * Unless required by applicable law or agreed to in writing, software
7696
+ * distributed under the License is distributed on an "AS IS" BASIS,
7697
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7698
+ * See the License for the specific language governing permissions and
7699
+ * limitations under the License.
7700
+ *
7701
+ * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7702
+ * Copyright 2025 - Finnish Meteorological Institute (FMI)
7703
+ * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
7704
+ * */
7705
+ var config = getConfig();
7706
+ var presetBaseUrl = (config == null ? void 0 : config.GW_PRESET_BACKEND_URL) || '';
7707
+ var getWorkspace = function getWorkspace(workspaceId, auth) {
7708
+ return fetch(presetBaseUrl + "/workspacepreset/" + workspaceId, {
7709
+ headers: getHeaders(auth)
7710
+ }).then(handleResponse);
7711
+ };
7712
+ var deleteWorkspace = function deleteWorkspace(workspaceId, auth) {
7713
+ return fetch(presetBaseUrl + "/workspacepreset/" + workspaceId, {
7714
+ headers: getHeaders(auth),
7715
+ method: 'DELETE'
7716
+ }).then(handleResponse);
7717
+ };
7718
+ var updateWorkspace = function updateWorkspace(workspaceId, data, auth) {
7719
+ return fetch(presetBaseUrl + "/workspacepreset/" + workspaceId, {
7720
+ headers: getHeaders(auth),
7721
+ method: 'PUT',
7722
+ body: JSON.stringify(data)
7723
+ }).then(handleResponse);
7724
+ };
7725
+ var createWorkspace = function createWorkspace(data, auth) {
7726
+ return fetch(presetBaseUrl + "/workspacepreset", {
7727
+ headers: getHeaders(auth),
7728
+ method: 'POST',
7729
+ body: JSON.stringify(data)
7730
+ }).then(handleResponse);
7731
+ };
7732
+
7672
7733
  var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
7673
7734
  var _useAuthenticationCon = useAuthenticationContext(),
7674
- currentRole = _useAuthenticationCon.currentRole;
7735
+ currentRole = _useAuthenticationCon.currentRole,
7736
+ isLoggedIn = _useAuthenticationCon.isLoggedIn,
7737
+ auth = _useAuthenticationCon.auth;
7738
+ var username = (auth == null ? void 0 : auth.username) || '';
7739
+ var workspacePresets = useSelector(function (store) {
7740
+ return getWorkspaceList(store);
7741
+ });
7742
+ var selectedFilters = useSelector(getWorkspaceListFilters);
7743
+ var filteredPresets = React.useMemo(function () {
7744
+ return filterWorkspacePresets(workspacePresets, selectedFilters, username);
7745
+ }, [workspacePresets, selectedFilters, username]);
7675
7746
  var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN.name;
7676
7747
  var scope = !isAdmin ? 'user' : 'system';
7677
7748
  var currentView = useSelector(function (store) {
7678
7749
  return getWorkspaceState(store);
7679
7750
  });
7680
- var workspacePresets = useSelector(function (store) {
7681
- return getWorkspaceList(store);
7682
- });
7683
7751
  var workspaceListFilters = useSelector(function (store) {
7684
7752
  return getWorkspaceListFilters(store, scope);
7685
7753
  });
@@ -7692,15 +7760,13 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
7692
7760
  var error = useSelector(function (store) {
7693
7761
  return getWorkspaceListError(store);
7694
7762
  });
7695
- var _useAuthenticationCon2 = useAuthenticationContext(),
7696
- isLoggedIn = _useAuthenticationCon2.isLoggedIn;
7697
7763
  var dispatch = useDispatch();
7698
7764
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
7699
7765
  t = _useWorkspaceTranslat.t;
7700
7766
  var fetchWorkspaceList = React.useCallback(function () {
7701
- var filterParams = constructFilterParams(workspaceListFilters, workspaceSearchQuery);
7767
+ var filterParams = constructFilterParams([], workspaceSearchQuery);
7702
7768
  dispatch(workspaceListActions.fetchWorkspaceList(filterParams));
7703
- }, [dispatch, workspaceListFilters, workspaceSearchQuery]);
7769
+ }, [dispatch, workspaceSearchQuery]);
7704
7770
  var fetchWorkspace = React.useCallback(function (workspaceId) {
7705
7771
  dispatch(workspaceActions.fetchWorkspace({
7706
7772
  workspaceId: workspaceId
@@ -7802,6 +7868,13 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
7802
7868
  }
7803
7869
  case WorkspacePresetAction.SHARE:
7804
7870
  {
7871
+ void getWorkspace(presetId, auth).then(function (preset) {
7872
+ return void updateWorkspace(presetId, Object.assign({}, preset, {
7873
+ is_shared: !preset.is_shared
7874
+ }), auth).then(function () {
7875
+ fetchWorkspaceList();
7876
+ });
7877
+ });
7805
7878
  // TODO
7806
7879
  break;
7807
7880
  }
@@ -7855,7 +7928,7 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
7855
7928
  searchQuery: workspaceSearchQuery,
7856
7929
  onSearch: searchFilter
7857
7930
  }), jsx(WorkspaceSelectList, {
7858
- workspacePresets: workspacePresets,
7931
+ workspacePresets: filteredPresets,
7859
7932
  currentSelectedId: currentView.id || '',
7860
7933
  onClickWorkspacePreset: onClickWorkspacePreset,
7861
7934
  onClickWorkspacePresetOption: onClickWorkspacePresetOption,
@@ -7958,54 +8031,73 @@ var WorkspaceMenuButton = function WorkspaceMenuButton(_ref) {
7958
8031
  });
7959
8032
  };
7960
8033
 
7961
- var FetchWorkspacePresets = function FetchWorkspacePresets() {
8034
+ /* *
8035
+ * Licensed under the Apache License, Version 2.0 (the "License");
8036
+ * you may not use this file except in compliance with the License.
8037
+ * You may obtain a copy of the License at
8038
+ *
8039
+ * http://www.apache.org/licenses/LICENSE-2.0
8040
+ *
8041
+ * Unless required by applicable law or agreed to in writing, software
8042
+ * distributed under the License is distributed on an "AS IS" BASIS,
8043
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8044
+ * See the License for the specific language governing permissions and
8045
+ * limitations under the License.
8046
+ *
8047
+ * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
8048
+ * Copyright 2025 - Finnish Meteorological Institute (FMI)
8049
+ * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
8050
+ * */
8051
+ var useFetchWorkspacePresets = function useFetchWorkspacePresets() {
7962
8052
  var dispatch = useDispatch();
7963
8053
  var _useAuthenticationCon = useAuthenticationContext(),
7964
8054
  currentRole = _useAuthenticationCon.currentRole;
7965
8055
  var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN.name;
7966
- var scope = !isAdmin ? 'user' : 'system';
7967
8056
  var lastAdmin = usePrevious(isAdmin);
7968
- var workspaceListFilters = useSelector(function (store) {
7969
- return getWorkspaceListFilters(store, scope);
7970
- });
7971
8057
  var workspaceSearchQuery = useSelector(getWorkspaceListSearchQuery);
7972
- var fetchWorkspacePresets = React__default.useCallback(function (params) {
8058
+ var prevSearch = usePrevious(workspaceSearchQuery);
8059
+ var fetchWorkspacePresets = useCallback(function (params) {
7973
8060
  dispatch(workspaceListActions.fetchWorkspaceList(params));
7974
8061
  }, [dispatch]);
7975
- React__default.useEffect(function () {
7976
- var filterParams = constructFilterParams(workspaceListFilters, workspaceSearchQuery);
7977
- fetchWorkspacePresets(filterParams);
7978
- }, [fetchWorkspacePresets, workspaceListFilters, workspaceSearchQuery]);
7979
- React__default.useEffect(function () {
8062
+ useEffect(function () {
8063
+ if (workspaceSearchQuery !== prevSearch) {
8064
+ workspaceSearchQuery.trim() === '' ? fetchWorkspacePresets({}) : fetchWorkspacePresets({
8065
+ search: workspaceSearchQuery
8066
+ });
8067
+ }
8068
+ }, [fetchWorkspacePresets, prevSearch, workspaceSearchQuery]);
8069
+ useEffect(function () {
7980
8070
  if (isAdmin !== lastAdmin && lastAdmin !== undefined) {
7981
8071
  // reset list filter when user changes role
7982
8072
  var filters = [{
7983
8073
  id: 'system',
7984
8074
  isSelected: true
7985
8075
  }, {
7986
- id: 'user',
8076
+ id: 'personal',
8077
+ isSelected: !isAdmin
8078
+ }, {
8079
+ id: 'shared',
7987
8080
  isSelected: !isAdmin
7988
8081
  }];
7989
8082
  dispatch(workspaceListActions.setFilterChips(filters));
7990
8083
  }
7991
8084
  }, [dispatch, isAdmin, lastAdmin]);
7992
- return null;
7993
8085
  };
8086
+
7994
8087
  var WorkspaceMenuButtonConnect = function WorkspaceMenuButtonConnect() {
7995
8088
  var dispatch = useDispatch();
8089
+ var isWorkspaceListDialogOpen = useSelector(function (store) {
8090
+ return getIsWorkspaceListDialogOpen(store);
8091
+ });
8092
+ useFetchWorkspacePresets();
7996
8093
  var setListDialogOpen = React__default.useCallback(function (isListDialogOpen) {
7997
8094
  dispatch(workspaceListActions.toggleWorkspaceDialog({
7998
8095
  isWorkspaceListDialogOpen: isListDialogOpen
7999
8096
  }));
8000
8097
  }, [dispatch]);
8001
- var isWorkspaceListDialogOpen = useSelector(function (store) {
8002
- return getIsWorkspaceListDialogOpen(store);
8003
- });
8004
- return jsxs(Fragment, {
8005
- children: [jsx(FetchWorkspacePresets, {}), jsx(WorkspaceMenuButton, {
8006
- showMenu: isWorkspaceListDialogOpen,
8007
- onToggleDialog: setListDialogOpen
8008
- })]
8098
+ return jsx(WorkspaceMenuButton, {
8099
+ showMenu: isWorkspaceListDialogOpen,
8100
+ onToggleDialog: setListDialogOpen
8009
8101
  });
8010
8102
  };
8011
8103
 
@@ -8323,7 +8415,8 @@ var WorkspaceViewPresetsFormFields = function WorkspaceViewPresetsFormFields(_re
8323
8415
  };
8324
8416
 
8325
8417
  var _excluded$3 = ["title", "abstract"];
8326
- var ERROR_TITLE_BE = 'Preset title already in use, please choose a different title';
8418
+ var ERROR_DUPLICATE_TITLE_BE = 'Preset title already in use, please choose a different title';
8419
+ var ERROR_LONG_TITLE_BE = 'Preset title cannot exceed 100 characters';
8327
8420
  var validateTitle$1 = function validateTitle(value) {
8328
8421
  if (!value) {
8329
8422
  return true;
@@ -8359,6 +8452,7 @@ var WorkspacePresetsForm = function WorkspacePresetsForm(_ref) {
8359
8452
  value: otherFormValues[name]
8360
8453
  };
8361
8454
  });
8455
+ var shouldShowTitleError = (error == null ? void 0 : error.type) === WorkspaceListErrorType.VERBATIM_ERROR && (error.message === ERROR_DUPLICATE_TITLE_BE || error.message === ERROR_LONG_TITLE_BE);
8362
8456
  React__default.useEffect(function () {
8363
8457
  // autoFocus
8364
8458
  var field = document.querySelector("[name=\"" + titleField + "\"]");
@@ -8366,12 +8460,12 @@ var WorkspacePresetsForm = function WorkspacePresetsForm(_ref) {
8366
8460
  }, []);
8367
8461
  React__default.useEffect(function () {
8368
8462
  // set title error on title field
8369
- if ((error == null ? void 0 : error.type) === WorkspaceListErrorType.VERBATIM_ERROR && error.message === ERROR_TITLE_BE) {
8463
+ if (shouldShowTitleError) {
8370
8464
  setError(titleField, {
8371
8465
  message: error.message
8372
8466
  });
8373
8467
  }
8374
- }, [error, setError]);
8468
+ }, [error, setError, shouldShowTitleError]);
8375
8469
  var onSubmitForm = function onSubmitForm(event) {
8376
8470
  event.preventDefault();
8377
8471
  onSubmit();
@@ -8381,7 +8475,7 @@ var WorkspacePresetsForm = function WorkspacePresetsForm(_ref) {
8381
8475
  var isDisabled = hasSavedWorkspace || isLoading;
8382
8476
  var shouldShowViewPresetForm = action === WorkspacePresetAction.SAVE_SYSTEM_PRESET || action === WorkspacePresetAction.SAVE_SYSTEM_PRESET_AS || action === WorkspacePresetAction.SAVE_AS || action === WorkspacePresetAction.SAVE;
8383
8477
  return jsxs(Fragment, {
8384
- children: [error && !(error.type === WorkspaceListErrorType.VERBATIM_ERROR && error.message === ERROR_TITLE_BE) && jsx(Box, {
8478
+ children: [error && !shouldShowTitleError && jsx(Box, {
8385
8479
  sx: {
8386
8480
  marginBottom: 2
8387
8481
  },
@@ -8406,7 +8500,7 @@ var WorkspacePresetsForm = function WorkspacePresetsForm(_ref) {
8406
8500
  },
8407
8501
  disabled: isDisabled,
8408
8502
  defaultValue: title,
8409
- error: (error == null ? void 0 : error.type) === WorkspaceListErrorType.VERBATIM_ERROR && error.message === ERROR_TITLE_BE
8503
+ error: shouldShowTitleError
8410
8504
  })
8411
8505
  }), jsx(ReactHookFormTextField, {
8412
8506
  name: "abstract",
@@ -8617,12 +8711,104 @@ var WorkspacePresetsFormDialogWrapper = function WorkspacePresetsFormDialogWrapp
8617
8711
  });
8618
8712
  };
8619
8713
 
8714
+ /* *
8715
+ * Licensed under the Apache License, Version 2.0 (the "License");
8716
+ * you may not use this file except in compliance with the License.
8717
+ * You may obtain a copy of the License at
8718
+ *
8719
+ * http://www.apache.org/licenses/LICENSE-2.0
8720
+ *
8721
+ * Unless required by applicable law or agreed to in writing, software
8722
+ * distributed under the License is distributed on an "AS IS" BASIS,
8723
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8724
+ * See the License for the specific language governing permissions and
8725
+ * limitations under the License.
8726
+ *
8727
+ * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
8728
+ * Copyright 2025 - Finnish Meteorological Institute (FMI)
8729
+ * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
8730
+ * */
8731
+ var onWorkspaceApiError = function onWorkspaceApiError(dispatch, error, t) {
8732
+ dispatch(workspaceListActions.onErrorWorkspacePresetAction({
8733
+ error: {
8734
+ message: error.message + " " + t('workspace-error-generic'),
8735
+ type: WorkspaceListErrorType.VERBATIM_ERROR,
8736
+ category: error.message === 'Authentication context not found' ? WorkspaceListErrorCategory.AUTH : WorkspaceListErrorCategory.GENERIC
8737
+ }
8738
+ }));
8739
+ };
8740
+ var useDeleteWorkspacePreset = function useDeleteWorkspacePreset() {
8741
+ var _useAuthenticationCon = useAuthenticationContext(),
8742
+ auth = _useAuthenticationCon.auth;
8743
+ var _useSelector = useSelector(getWorkspaceActionFormValues),
8744
+ title = _useSelector.title;
8745
+ var _useWorkspaceTranslat = useWorkspaceTranslation(),
8746
+ t = _useWorkspaceTranslat.t;
8747
+ var dispatch = useDispatch();
8748
+ return useMutation({
8749
+ mutationFn: function mutationFn(_ref) {
8750
+ var id = _ref.id;
8751
+ if (!auth) {
8752
+ throw new Error('Authentication context not found');
8753
+ }
8754
+ return deleteWorkspace(id, auth);
8755
+ },
8756
+ onSuccess: function onSuccess(data, variables) {
8757
+ dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
8758
+ workspaceId: variables.id,
8759
+ action: WorkspacePresetAction.DELETE,
8760
+ emptyWorkspacePresetTitle: t('workspace-new'),
8761
+ title: title
8762
+ }));
8763
+ },
8764
+ onError: function onError(error) {
8765
+ onWorkspaceApiError(dispatch, error, t);
8766
+ }
8767
+ });
8768
+ };
8769
+ var useCreateWorkspacePreset = function useCreateWorkspacePreset() {
8770
+ var _useAuthenticationCon2 = useAuthenticationContext(),
8771
+ auth = _useAuthenticationCon2.auth;
8772
+ var _useWorkspaceTranslat2 = useWorkspaceTranslation(),
8773
+ t = _useWorkspaceTranslat2.t;
8774
+ var dispatch = useDispatch();
8775
+ return useMutation({
8776
+ mutationFn: function mutationFn(_ref2) {
8777
+ var data = _ref2.data;
8778
+ if (!auth) {
8779
+ throw new Error('Authentication context not found');
8780
+ }
8781
+ return createWorkspace(data, auth);
8782
+ },
8783
+ onSuccess: function onSuccess(data, variables) {
8784
+ var location = data == null ? void 0 : data.get('location');
8785
+ var newId = getIdFromUrl(location);
8786
+ var scope = variables.data.scope || 'user';
8787
+ dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
8788
+ workspaceId: newId,
8789
+ action: variables.action || WorkspacePresetAction.SAVE_AS,
8790
+ title: variables.data.title,
8791
+ scope: scope
8792
+ }));
8793
+ },
8794
+ onError: function onError(error) {
8795
+ onWorkspaceApiError(dispatch, error, t);
8796
+ }
8797
+ });
8798
+ };
8799
+
8620
8800
  var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
8621
8801
  var workspaceId = _ref.workspaceId,
8622
8802
  appTitle = _ref.appTitle;
8623
8803
  var dispatch = useDispatch();
8624
8804
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
8625
8805
  t = _useWorkspaceTranslat.t;
8806
+ var _useAuthenticationCon = useAuthenticationContext(),
8807
+ auth = _useAuthenticationCon.auth;
8808
+ var _useDeleteWorkspacePr = useDeleteWorkspacePreset(),
8809
+ deleteWorkspace = _useDeleteWorkspacePr.mutate;
8810
+ var _useCreateWorkspacePr = useCreateWorkspacePreset(),
8811
+ createWorkspace = _useCreateWorkspacePr.mutate;
8626
8812
  var title = useSelector(function (store) {
8627
8813
  return getSelectedWorkspaceTitle(store);
8628
8814
  });
@@ -8632,15 +8818,58 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
8632
8818
  var closeWorkspaceActionDialog = React.useCallback(function () {
8633
8819
  dispatch(workspaceListActions.closeWorkspaceActionDialogOptions());
8634
8820
  }, [dispatch]);
8635
- var onSubmitForm = function onSubmitForm(presetAction, presetId, data) {
8636
- dispatch(workspaceListActions.submitFormWorkspaceActionDialogOptions({
8637
- presetAction: presetAction,
8638
- presetId: presetId,
8639
- data: data,
8640
- emptyMapPresetTitle: t('workspace-mappreset-new'),
8641
- emptyWorkspacePresetTitle: t('workspace-new')
8821
+ var onSubmitForm = /*#__PURE__*/function () {
8822
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(presetAction, presetId, data) {
8823
+ var oldWorkspace;
8824
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
8825
+ while (1) switch (_context.prev = _context.next) {
8826
+ case 0:
8827
+ _context.t0 = presetAction;
8828
+ _context.next = _context.t0 === WorkspacePresetAction.DELETE ? 3 : _context.t0 === WorkspacePresetAction.DELETE_SYSTEM_PRESET ? 3 : _context.t0 === WorkspacePresetAction.DUPLICATE ? 5 : 15;
8829
+ break;
8830
+ case 3:
8831
+ deleteWorkspace({
8832
+ id: presetId
8833
+ });
8834
+ return _context.abrupt("break", 16);
8835
+ case 5:
8836
+ if (!presetId) {
8837
+ _context.next = 11;
8838
+ break;
8839
+ }
8840
+ _context.next = 8;
8841
+ return getWorkspace(presetId, auth);
8842
+ case 8:
8843
+ _context.t1 = _context.sent;
8844
+ _context.next = 12;
8845
+ break;
8846
+ case 11:
8847
+ _context.t1 = emptyWorkspaceBEData;
8848
+ case 12:
8849
+ oldWorkspace = _context.t1;
8850
+ createWorkspace({
8851
+ data: Object.assign({}, oldWorkspace, data),
8852
+ action: presetAction
8853
+ });
8854
+ return _context.abrupt("break", 16);
8855
+ case 15:
8856
+ dispatch(workspaceListActions.submitFormWorkspaceActionDialogOptions({
8857
+ presetAction: presetAction,
8858
+ presetId: presetId,
8859
+ data: data,
8860
+ emptyMapPresetTitle: t('workspace-mappreset-new'),
8861
+ emptyWorkspacePresetTitle: t('workspace-new')
8862
+ }));
8863
+ case 16:
8864
+ case "end":
8865
+ return _context.stop();
8866
+ }
8867
+ }, _callee);
8642
8868
  }));
8643
- };
8869
+ return function onSubmitForm(_x, _x2, _x3) {
8870
+ return _ref2.apply(this, arguments);
8871
+ };
8872
+ }();
8644
8873
  var presetId = typeof dialogDetails === 'object' && dialogDetails.presetId;
8645
8874
  var action = typeof dialogDetails === 'object' && dialogDetails.action;
8646
8875
  var formValues = typeof dialogDetails === 'object' && dialogDetails.formValues;
@@ -8828,7 +9057,9 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
8828
9057
  }
8829
9058
  }, [isOpen]);
8830
9059
  React__default.useEffect(function () {
8831
- reset(formValues);
9060
+ if (formValues) {
9061
+ reset(formValues);
9062
+ }
8832
9063
  }, [formValues, reset]);
8833
9064
  var getConfirmLabel = function getConfirmLabel(action) {
8834
9065
  switch (action) {
@@ -8971,9 +9202,10 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
8971
9202
  description: "",
8972
9203
  onClose: onClose,
8973
9204
  onSubmit: onSubmit,
8974
- sx: {
9205
+ resizableDefaultSize: {
8975
9206
  width: '330px'
8976
9207
  },
9208
+ isResizable: true,
8977
9209
  actions: jsx(ConfirmationButtons, {
8978
9210
  onClose: onClose,
8979
9211
  cancelLabel: t('workspace-cancel'),
@@ -9033,18 +9265,17 @@ var ViewPresetsFormDialogConnect = function ViewPresetsFormDialogConnect(_ref) {
9033
9265
  }));
9034
9266
  };
9035
9267
  var isOpen = dialogOptions !== undefined;
9036
- if (!isOpen) {
9037
- return null;
9038
- }
9039
- return jsx(ViewPresetsFormDialogWrapper, Object.assign({
9268
+ return jsx(ViewPresetsFormDialogWrapper, {
9040
9269
  isOpen: isOpen,
9041
9270
  onClose: onClose,
9042
9271
  onSuccess: onSuccess,
9043
- viewComponentType: viewComponentType
9044
- }, dialogOptions, {
9272
+ viewComponentType: viewComponentType,
9045
9273
  formValues: dialogOptions == null ? void 0 : dialogOptions.formValues,
9274
+ action: (dialogOptions == null ? void 0 : dialogOptions.action) || PresetAction.SAVE,
9275
+ title: (dialogOptions == null ? void 0 : dialogOptions.title) || '',
9276
+ viewPresetId: (dialogOptions == null ? void 0 : dialogOptions.viewPresetId) || '',
9046
9277
  onReset: onReset
9047
- }));
9278
+ });
9048
9279
  };
9049
9280
 
9050
9281
  var WorkspaceDetail = function WorkspaceDetail(_ref) {
@@ -9164,4 +9395,4 @@ var WorkspaceDetail = function WorkspaceDetail(_ref) {
9164
9395
  });
9165
9396
  };
9166
9397
 
9167
- export { ComponentsLookUpWrapper, DemoWrapper, PresetAction, ViewPresetErrorComponent, ViewPresetErrorType, WORKSPACE_NAMESPACE, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspaceModuleProvider, WorkspacePresetAction, WorkspaceTopBar, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, getEmptyMapWorkspace, getWorkspaceRouteUrl, selectors$1 as selectors, viewPresetActions, viewPresetsListReducer, viewPresetsListener, viewPresetsReducer, workspaceActions, workspaceListActions, workspaceListListener, workspaceListReducer, workspaceListener, workspaceMiddlewares, workspaceReducer, workspaceReducersMap, routes as workspaceRoutes, workspaceTranslations };
9398
+ export { ComponentsLookUpWrapper, DemoWrapper, PresetAction, ViewPresetErrorComponent, ViewPresetErrorType, WORKSPACE_NAMESPACE, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspaceModuleProvider, WorkspacePresetAction, WorkspaceStoreWrapper, WorkspaceThemeProvider, WorkspaceTopBar, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, getEmptyMapWorkspace, getWorkspaceRouteUrl, selectors$1 as selectors, viewPresetActions, viewPresetsListReducer, viewPresetsListener, viewPresetsReducer, workspaceActions, workspaceListActions, workspaceListListener, workspaceListReducer, workspaceListener, workspaceMiddlewares, workspaceReducer, workspaceReducersMap, routes as workspaceRoutes, workspaceTranslations };