@opengeoweb/workspace 10.1.0 → 10.2.1-spike-ol.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
@@ -1,12 +1,12 @@
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, coreModuleReducersMap, routerReducersMap, coreModuleMiddlewares, routerMiddlewares, linkComponentTypesConstants, uiTypes, loadingIndicatorSelectors, uiSelectors } from '@opengeoweb/store';
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
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';
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
- import { timeSeriesActions, TimeSeriesTypes, timeSeriesSelectors, timeSeriesReducersMap, timeSeriesMiddlewares } from '@opengeoweb/timeseries';
6
+ import { timeSeriesActions, TimeSeriesTypes, timeSeriesSelectors, timeSeriesReducer } from '@opengeoweb/timeseries';
7
7
  import { publicWarningActions, WARN_NAMESPACE, warningsTranslations, publicWarningsSelectors } from '@opengeoweb/warnings';
8
8
  import { PROJECTION, getAxiosErrorMessage, isAxiosAuthError, isAxiosError as isAxiosError$1, SHARED_NAMESPACE, sharedTranslations, ConfirmationServiceProvider, CustomIconButton, useConfirmationDialog, AlertBanner, CustomTooltip, SearchHighlight, ToggleMenu, DEFAULT_FILTER_HEIGHT, usePrevious, Filter, Resizable, ToolContainer, renderCounter, CustomToggleButton, ConfirmationDialog } from '@opengeoweb/shared';
9
- import { snackbarTypes, snackbarActions, snackbarReducersMap, snackbarMiddlewares, SnackbarWrapperConnect } from '@opengeoweb/snackbar';
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
12
  import { ThemeWrapper, lightTheme, Link, LinkOff, SplitVertical, SplitHorizontal, Expand, UnExpand, Close, Delete, Preset, PresetWorkspace, PresetTiles, BackdropStyle, BackdropElement, CloudLoading, CloudIdle, WebAssetOff, Exclamation } from '@opengeoweb/theme';
@@ -18,7 +18,6 @@ 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
- import { produce } from 'immer';
22
21
  import * as React from 'react';
23
22
  import React__default, { useCallback } from 'react';
24
23
  import { Menu, Typography, List, ListItem, ListItemButton, ListItemIcon, Checkbox, ListItemText, LinearProgress, Grid2, Box, Backdrop, ListSubheader, MenuItem, useTheme, FormGroup, FormControlLabel, Tabs } from '@mui/material';
@@ -37,8 +36,7 @@ var en = {
37
36
  "workspce-clear": "Clear",
38
37
  "workspace-save": "Save",
39
38
  "workspace-save-as": "Save as",
40
- "workspace-edit": "Edit (name)",
41
- "workspace-edit-both": "Edit (name and abstract)",
39
+ "workspace-edit": "Edit (name and abstract)",
42
40
  "geoweb-welcome": "Welcome to GeoWeb. Please use one of the presets to open up new views",
43
41
  "workspace-modified-new": "modified",
44
42
  "workspace-modified-existing": "not saved",
@@ -117,8 +115,7 @@ var fi = {
117
115
  "workspce-clear": "Tyhjennä",
118
116
  "workspace-save": "Tallenna",
119
117
  "workspace-save-as": "Tallenna nimellä",
120
- "workspace-edit": "Muokkaa (nimeä)",
121
- "workspace-edit-both": "Muokkaa (nimeä ja tiivistelmää)",
118
+ "workspace-edit": "Muokkaa (nimeä ja tiivistelmää)",
122
119
  "geoweb-welcome": "Tervetuloa Geoweb-sovellukseen. Valitse jokin preset avataksesi uusia näkymiä",
123
120
  "workspace-modified-new": "muokattu",
124
121
  "workspace-modified-existing": "ei tallennettu",
@@ -194,8 +191,7 @@ var no = {
194
191
  "workspce-clear": "Tøm",
195
192
  "workspace-save": "Lagre",
196
193
  "workspace-save-as": "Lagre som",
197
- "workspace-edit": "Endre (navn)",
198
- "workspace-edit-both": "Endre (navn og abstrakt)",
194
+ "workspace-edit": "Endre (navn og abstrakt)",
199
195
  "geoweb-welcome": "Velkommen til GeoWeb. Åpne et forhåndsvalg for å åpne nye vinduer",
200
196
  "workspace-modified-new": "modifisert",
201
197
  "workspace-modified-existing": "ikke lagret",
@@ -271,8 +267,7 @@ var nl = {
271
267
  "workspce-clear": "Wissen",
272
268
  "workspace-save": "Opslaan",
273
269
  "workspace-save-as": "Opslaan als",
274
- "workspace-edit": "Aanpassen (naam)",
275
- "workspace-edit-both": "Aanpassen (naam en abstract)",
270
+ "workspace-edit": "Aanpassen (naam en abstract)",
276
271
  "geoweb-welcome": "Welkom bij GeoWeb. Kies een van de presets om een nieuw venster te openen",
277
272
  "workspace-modified-new": "bewerkt",
278
273
  "workspace-modified-existing": "niet opgeslagen",
@@ -1051,8 +1046,8 @@ var slice$3 = createSlice({
1051
1046
  }
1052
1047
  }
1053
1048
  });
1054
- var reducer$3 = slice$3.reducer;
1055
- var workspaceListActions = slice$3.actions;
1049
+ var workspaceListReducer = slice$3.reducer,
1050
+ workspaceListActions = slice$3.actions;
1056
1051
 
1057
1052
  var ViewPresetErrorComponent;
1058
1053
  (function (ViewPresetErrorComponent) {
@@ -1114,7 +1109,7 @@ var viewPresetsAdapter = createEntityAdapter({
1114
1109
  var initialState$2 = viewPresetsAdapter.getInitialState();
1115
1110
  var warningsPresetChangeActions = [publicWarningActions.setWarningFilters];
1116
1111
  var syncGroupChangeActions = [syncGroupsActions.syncGroupRemoveTarget, syncGroupsActions.syncGroupAddTarget];
1117
- var mapPresetChangeActions = [layerActions.setBaseLayers, layerActions.layerDelete, layerActions.addLayer, layerActions.duplicateMapLayer, layerActions.layerChangeEnabled, layerActions.layerChangeName, layerActions.layerChangeStyle, layerActions.layerChangeOpacity, layerActions.layerChangeDimension, mapActions.layerMoveLayer, mapActions.setAutoLayerId, mapActions.toggleAutoUpdate, mapActions.mapStartAnimation, mapActions.mapStopAnimation, mapActions.toggleTimeSliderIsVisible, mapActions.setTimeStep, mapActions.setAnimationDelay, mapActions.toggleTimestepAuto, mapActions.setAnimationStartTime, mapActions.setAnimationEndTime, uiActions.setActiveMapIdForDialog, uiActions.setToggleOpenDialog, genericActions.setBbox, mapActions.setBbox];
1112
+ var mapPresetChangeActions = [layerActions.setBaseLayers, layerActions.layerDelete, layerActions.addLayer, layerActions.duplicateMapLayer, layerActions.layerChangeEnabled, layerActions.layerChangeName, layerActions.layerChangeStyle, layerActions.layerChangeOpacity, layerActions.layerChangeDimension, mapActions.layerMoveLayer, mapActions.setAutoLayerId, mapActions.toggleAutoUpdate, mapActions.mapStartAnimation, mapActions.mapStopAnimation, mapActions.toggleTimeSliderIsVisible, mapActions.setTimeStep, mapActions.setTimeSliderSpan, mapActions.toggleTimeSpanAuto, mapActions.setAnimationDelay, mapActions.toggleTimestepAuto, mapActions.setAnimationStartTime, mapActions.setAnimationEndTime, uiActions.setActiveMapIdForDialog, uiActions.setToggleOpenDialog, genericActions.setBbox, mapActions.setBbox];
1118
1113
  var timeSeriesPresetChangeActions = [timeSeriesActions.addParameter, timeSeriesActions.addPlot, timeSeriesActions.deleteParameter, timeSeriesActions.deletePlot, timeSeriesActions.moveParameter, timeSeriesActions.movePlot, timeSeriesActions.toggleParameter, timeSeriesActions.togglePlot, timeSeriesActions.patchParameter, timeSeriesActions.updateTitle];
1119
1114
  var supportedMapActionOrigins = [layerTypes.LayerActionOrigin.layerManager, layerTypes.LayerActionOrigin.wmsLoader, mapEnums.MapActionOrigin.map];
1120
1115
  var supportedTimeSeriesActionOrigins = [TimeSeriesTypes.TimeSeriesActionOrigin.timeSeriesManager, TimeSeriesTypes.TimeSeriesActionOrigin.timeSeriesSelect];
@@ -1474,8 +1469,8 @@ var slice$2 = createSlice({
1474
1469
  });
1475
1470
  }
1476
1471
  });
1477
- var reducer$2 = slice$2.reducer;
1478
- var viewPresetActions = slice$2.actions;
1472
+ var viewPresetsReducer = slice$2.reducer,
1473
+ viewPresetActions = slice$2.actions;
1479
1474
 
1480
1475
  /* *
1481
1476
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -1910,11 +1905,13 @@ var slice$1 = createSlice({
1910
1905
  panelId = _action$payload5.panelId,
1911
1906
  title = _action$payload5.title,
1912
1907
  presetAction = _action$payload5.action,
1913
- scope = _action$payload5.scope;
1908
+ scope = _action$payload5.scope,
1909
+ _abstract = _action$payload5["abstract"];
1914
1910
  var entity = draft.views.byId[panelId];
1915
1911
  if (entity && presetAction !== PresetAction.DELETE) {
1916
1912
  entity.title = title;
1917
1913
  entity.scope = scope || 'user';
1914
+ entity["abstract"] = _abstract;
1918
1915
  }
1919
1916
  });
1920
1917
  workspacePresetChangeActions.map(function (action) {
@@ -1934,13 +1931,15 @@ var slice$1 = createSlice({
1934
1931
  if (entity && viewPresetId === '') {
1935
1932
  entity.title = '';
1936
1933
  entity.scope = 'system';
1934
+ entity["abstract"] = '';
1937
1935
  }
1938
1936
  }
1939
1937
  });
1940
1938
  });
1941
1939
  }
1942
1940
  });
1943
- var reducer$1 = slice$1.reducer;
1941
+ // eslint-disable-next-line prefer-destructuring
1942
+ var workspaceReducer = slice$1.reducer;
1944
1943
  var workspaceActions = Object.assign({}, slice$1.actions);
1945
1944
 
1946
1945
  /* *
@@ -3107,6 +3106,7 @@ var viewPresetsListFullContent = [
3107
3106
  {
3108
3107
  id: "radar",
3109
3108
  title: "Radar",
3109
+ abstract: "abstract radar",
3110
3110
  componentType: "Map",
3111
3111
  initialProps: {
3112
3112
  mapPreset: {
@@ -4328,6 +4328,7 @@ var viewPresetsListFullContent = [
4328
4328
  var viewPresetsList = [
4329
4329
  {
4330
4330
  title: "Radar",
4331
+ abstract: "abstract radar",
4331
4332
  id: "radar",
4332
4333
  date: "2022-06-01T12:34:27.787184",
4333
4334
  scope: "system"
@@ -4498,7 +4499,8 @@ var viewPresetsList = [
4498
4499
  title: "Cap Warnings",
4499
4500
  id: "capView",
4500
4501
  date: "2022-06-01T12:34:27.787184",
4501
- scope: "system"
4502
+ scope: "system",
4503
+ abstract: "abstract cap"
4502
4504
  },
4503
4505
  {
4504
4506
  title: "Warning List",
@@ -5035,7 +5037,9 @@ workspaceListener.startListening({
5035
5037
  while (1) switch (_context11.prev = _context11.next) {
5036
5038
  case 0:
5037
5039
  payload = _ref10.payload;
5038
- mosaicNodeId = payload.mosaicNodeId, componentType = payload.componentType, newId = payload.newId;
5040
+ mosaicNodeId = payload.mosaicNodeId, componentType = payload.componentType, newId = payload.newId; // TODO: this would be nice to move into the openlayers store
5041
+ createViewObjectForNewMap(mosaicNodeId, newId);
5042
+ // Note, at some point these might no longer be necessary
5039
5043
  bbox = mapSelectors.getBbox(listenerApi.getState(), mosaicNodeId);
5040
5044
  srs = mapSelectors.getSrs(listenerApi.getState(), mosaicNodeId);
5041
5045
  mapPreset = bbox.bottom ? {
@@ -5052,7 +5056,7 @@ workspaceListener.startListening({
5052
5056
  syncGroupsIds: []
5053
5057
  }
5054
5058
  }));
5055
- case 6:
5059
+ case 7:
5056
5060
  case "end":
5057
5061
  return _context11.stop();
5058
5062
  }
@@ -5753,6 +5757,8 @@ workspaceListListener.startListening({
5753
5757
  case 0:
5754
5758
  viewPresetEntity = Object.assign({}, getViewPresetToSendToBackend(listenerApi.getState(), view.mosaicNodeId), {
5755
5759
  title: view.title
5760
+ }, view["abstract"] && {
5761
+ "abstract": view["abstract"]
5756
5762
  });
5757
5763
  shouldUpdateView = view.hasChanges && view.isSelected;
5758
5764
  canUpdateView = scope === 'system' || scope === viewPresetEntity.scope; // save existing views
@@ -5928,8 +5934,8 @@ var slice = createSlice({
5928
5934
  });
5929
5935
  }
5930
5936
  });
5931
- var reducer = slice.reducer;
5932
- slice.actions;
5937
+ var viewPresetsListReducer = slice.reducer;
5938
+ slice.actions;
5933
5939
 
5934
5940
  /* *
5935
5941
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -5974,35 +5980,6 @@ var getFilteredViewPresetListForView = createSelector(getViewPresetsList, getVie
5974
5980
  };
5975
5981
  }, selectorMemoizationOptions);
5976
5982
 
5977
- /* *
5978
- * Licensed under the Apache License, Version 2.0 (the "License");
5979
- * you may not use this file except in compliance with the License.
5980
- * You may obtain a copy of the License at
5981
- *
5982
- * http://www.apache.org/licenses/LICENSE-2.0
5983
- *
5984
- * Unless required by applicable law or agreed to in writing, software
5985
- * distributed under the License is distributed on an "AS IS" BASIS,
5986
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5987
- * See the License for the specific language governing permissions and
5988
- * limitations under the License.
5989
- *
5990
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
5991
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
5992
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
5993
- * */
5994
- var workspaceReducersMap = {
5995
- workspace: reducer$1,
5996
- workspaceList: reducer$3,
5997
- viewPresetsList: reducer,
5998
- viewPresets: reducer$2
5999
- };
6000
- var workspaceMiddlewares = [viewPresetsListener.middleware, workspaceListener.middleware, workspaceListListener.middleware];
6001
- var workspaceModuleConfig = {
6002
- reducersMap: workspaceReducersMap,
6003
- middlewares: workspaceMiddlewares
6004
- };
6005
-
6006
5983
  /* *
6007
5984
  * Licensed under the Apache License, Version 2.0 (the "License");
6008
5985
  * you may not use this file except in compliance with the License.
@@ -6060,32 +6037,30 @@ var useWorkspaceTranslation = function useWorkspaceTranslation() {
6060
6037
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
6061
6038
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
6062
6039
  * */
6063
- var devToolsStateSanitizer = {
6064
- stateSanitizer: function stateSanitizer(state) {
6065
- return produce(state, function (draftState) {
6066
- // @ts-ignore
6067
- if (state['services']) {
6068
- // @ts-ignore
6069
- Object.values(state['services'].byId).forEach(function (service) {
6070
- // @ts-ignore
6071
- draftState['services'].byId[service.id].layers =
6072
- // @ts-ignore
6073
- service.layers.length;
6074
- });
6075
- }
6076
- });
6077
- }
6040
+ var workspaceReducersMap = {
6041
+ webmap: mapReducer,
6042
+ services: serviceReducer,
6043
+ layers: layerReducer,
6044
+ syncGroups: syncGroupsReducer,
6045
+ loadingIndicator: loadingIndicatorReducer,
6046
+ ui: uiReducer,
6047
+ workspace: workspaceReducer,
6048
+ workspaceList: workspaceListReducer,
6049
+ viewPresetsList: viewPresetsListReducer,
6050
+ viewPresets: viewPresetsReducer,
6051
+ timeSeries: timeSeriesReducer,
6052
+ snackbar: snackbarReducer
6078
6053
  };
6079
- var rootReducer = combineReducers(Object.assign({}, coreModuleReducersMap, workspaceReducersMap, timeSeriesReducersMap, snackbarReducersMap, routerReducersMap));
6080
- var createTestWorkspaceStore = function createTestWorkspaceStore() {
6081
- var store = configureStore({
6082
- reducer: rootReducer,
6054
+ var workspaceMiddlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, syncGroupsListener.middleware, workspaceListener.middleware, workspaceListListener.middleware, viewPresetsListener.middleware, snackbarListener.middleware, openlayersListener.middleware];
6055
+ var workspaceRootReducer = combineReducers(workspaceReducersMap);
6056
+ var createMockStore = function createMockStore(mockState) {
6057
+ return configureStore({
6058
+ reducer: workspaceRootReducer,
6059
+ preloadedState: mockState,
6083
6060
  middleware: function middleware(getDefaultMiddleware) {
6084
- return getDefaultMiddleware().concat([].concat(coreModuleMiddlewares, workspaceMiddlewares, timeSeriesMiddlewares, snackbarMiddlewares, routerMiddlewares));
6085
- },
6086
- devTools: devToolsStateSanitizer
6061
+ return getDefaultMiddleware().concat(workspaceMiddlewares);
6062
+ }
6087
6063
  });
6088
- return store;
6089
6064
  };
6090
6065
 
6091
6066
  var queryClient = new QueryClient({
@@ -6128,7 +6103,7 @@ var defaultAuthConfig = {
6128
6103
  var WorkspaceWrapperProviderWithStore = function WorkspaceWrapperProviderWithStore(_ref3) {
6129
6104
  var children = _ref3.children,
6130
6105
  _ref3$store = _ref3.store,
6131
- store = _ref3$store === void 0 ? createTestWorkspaceStore() : _ref3$store,
6106
+ store = _ref3$store === void 0 ? createMockStore() : _ref3$store,
6132
6107
  _ref3$createApi = _ref3.createApi,
6133
6108
  createApi$1 = _ref3$createApi === void 0 ? createApi : _ref3$createApi,
6134
6109
  theme = _ref3.theme,
@@ -6182,12 +6157,12 @@ var WorkspaceModuleProvider = function WorkspaceModuleProvider(_ref) {
6182
6157
  });
6183
6158
  };
6184
6159
 
6185
- var _excluded$4 = ["component", "payload"];
6160
+ var _excluded$5 = ["component", "payload"];
6186
6161
  // takes a component and connects module methods with workspace store
6187
6162
  var ComponentsLookUpWrapper = function ComponentsLookUpWrapper(_ref) {
6188
6163
  var component = _ref.component,
6189
6164
  payload = _ref.payload,
6190
- props = _objectWithoutPropertiesLoose(_ref, _excluded$4);
6165
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$5);
6191
6166
  var RenderComponent = component;
6192
6167
  var dispatch = useDispatch();
6193
6168
  var viewId = payload.id;
@@ -6602,12 +6577,11 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
6602
6577
  var onEdit = function onEdit() {
6603
6578
  onClickWorkspacePresetOption(workspacePreset.id, WorkspacePresetAction.EDIT, workspacePreset);
6604
6579
  };
6605
- var editTitle = testIdPrefix === 'viewpreset' ? 'workspace-edit' : 'workspace-edit-both';
6606
6580
  var menuItems = [{
6607
6581
  text: t('workspace-duplicate'),
6608
6582
  action: onDuplicate
6609
6583
  }].concat(workspacePreset.scope === 'user' || isAdmin ? [{
6610
- text: t(editTitle),
6584
+ text: t('workspace-edit'),
6611
6585
  action: onEdit
6612
6586
  }] : []);
6613
6587
  return jsx(ListItem, {
@@ -6865,7 +6839,8 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
6865
6839
  panelId: panelId,
6866
6840
  formValues: {
6867
6841
  title: preset.title,
6868
- initialProps: constructInitialProps()
6842
+ initialProps: constructInitialProps(),
6843
+ "abstract": preset["abstract"]
6869
6844
  }
6870
6845
  });
6871
6846
  break;
@@ -6879,7 +6854,8 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
6879
6854
  panelId: panelId,
6880
6855
  viewPresetId: presetId,
6881
6856
  formValues: {
6882
- title: presetTitle
6857
+ title: presetTitle,
6858
+ "abstract": preset["abstract"]
6883
6859
  }
6884
6860
  });
6885
6861
  break;
@@ -6988,9 +6964,10 @@ var ResizeMenu = function ResizeMenu(_ref) {
6988
6964
  children = _ref.children;
6989
6965
  return jsx(Resizable, {
6990
6966
  defaultSize: {
6991
- width: 320,
6967
+ width: 380,
6992
6968
  height: '90%'
6993
6969
  },
6970
+ maxWidth: "100%",
6994
6971
  minHeight: 110,
6995
6972
  minWidth: 280,
6996
6973
  style: {
@@ -7090,7 +7067,6 @@ var WorkspaceOptionsNoMemo = function WorkspaceOptionsNoMemo(_ref) {
7090
7067
  }
7091
7068
  }, [isDefaultOpen, id]);
7092
7069
  var isViewPresetsOptions = id === viewPresetOptionId;
7093
- var editTitle = isViewPresetsOptions ? t('workspace-edit') : t('workspace-edit-both');
7094
7070
  var saveAsTitle = isAdmin && !isViewPresetsOptions ? t('workspace-admin-save-new-workspace') : t('workspace-save-as');
7095
7071
  var isAdminWorkspaceOptions = isAdmin && id === workspacePresetOptionId;
7096
7072
  var options = [{
@@ -7100,7 +7076,7 @@ var WorkspaceOptionsNoMemo = function WorkspaceOptionsNoMemo(_ref) {
7100
7076
  title: saveAsTitle,
7101
7077
  callback: handleSaveAs
7102
7078
  }].concat(!isAdminWorkspaceOptions ? [{
7103
- title: editTitle,
7079
+ title: t('workspace-edit'),
7104
7080
  callback: handleEdit
7105
7081
  }] : [], [{
7106
7082
  title: t('workspace-reset'),
@@ -7225,6 +7201,7 @@ var LoadingIndicatorConnect = function LoadingIndicatorConnect(_ref) {
7225
7201
  });
7226
7202
  };
7227
7203
 
7204
+ var _excluded$4 = ["title", "scope"];
7228
7205
  var customIconStyles = function customIconStyles(theme, isViewPresetDialogOpen) {
7229
7206
  return {
7230
7207
  marginLeft: -1,
@@ -7256,11 +7233,12 @@ var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_
7256
7233
  var _workspaceSelectors$g;
7257
7234
  var _ref2 = (_workspaceSelectors$g = getViewById(store, panelId)) != null ? _workspaceSelectors$g : {},
7258
7235
  title = _ref2.title,
7259
- scope = _ref2.scope;
7260
- return {
7236
+ scope = _ref2.scope,
7237
+ restProps = _objectWithoutPropertiesLoose(_ref2, _excluded$4);
7238
+ return Object.assign({
7261
7239
  title: title,
7262
7240
  scope: scope
7263
- };
7241
+ }, restProps);
7264
7242
  }, shallowEqual);
7265
7243
  var viewComponentType = useSelector(function (store) {
7266
7244
  return getViewComponentType(store, panelId);
@@ -7274,6 +7252,7 @@ var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_
7274
7252
  var relatedSyncGroupIds = useSelector(function (store) {
7275
7253
  return syncGroupsSelectors.getAllTargetGroupsForSource(store, panelId);
7276
7254
  });
7255
+ var presetAbstract = workspaceView == null ? void 0 : workspaceView["abstract"];
7277
7256
  var isNewActive = activeViewPresetId === '';
7278
7257
  var title = workspaceView.title || t('workspace-mappreset-new');
7279
7258
  var viewScope = workspaceView.scope;
@@ -7318,10 +7297,11 @@ var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_
7318
7297
  viewPresetId: activeViewPresetId,
7319
7298
  panelId: panelId,
7320
7299
  formValues: {
7321
- title: title
7300
+ title: title,
7301
+ "abstract": presetAbstract
7322
7302
  }
7323
7303
  });
7324
- }, [activeViewPresetId, openViewPresetsDialog, panelId, title, t]);
7304
+ }, [activeViewPresetId, openViewPresetsDialog, panelId, title, presetAbstract, t]);
7325
7305
  var onSaveAs = React.useCallback(function () {
7326
7306
  var formTitle = activeViewPresetId ? title : '';
7327
7307
  openViewPresetsDialog({
@@ -7331,10 +7311,11 @@ var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_
7331
7311
  panelId: panelId,
7332
7312
  formValues: {
7333
7313
  title: formTitle,
7334
- initialProps: constructInitialProps()
7314
+ initialProps: constructInitialProps(),
7315
+ "abstract": presetAbstract
7335
7316
  }
7336
7317
  });
7337
- }, [activeViewPresetId, constructInitialProps, openViewPresetsDialog, panelId, t, title]);
7318
+ }, [activeViewPresetId, constructInitialProps, openViewPresetsDialog, panelId, t, title, presetAbstract]);
7338
7319
  var onEdit = React.useCallback(function () {
7339
7320
  var formTitle = activeViewPresetId ? title : '';
7340
7321
  openViewPresetsDialog({
@@ -7344,10 +7325,11 @@ var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_
7344
7325
  viewPresetId: activeViewPresetId,
7345
7326
  formValues: {
7346
7327
  title: formTitle,
7347
- initialProps: constructInitialProps()
7328
+ initialProps: constructInitialProps(),
7329
+ "abstract": presetAbstract
7348
7330
  }
7349
7331
  });
7350
- }, [activeViewPresetId, constructInitialProps, openViewPresetsDialog, panelId, t, title]);
7332
+ }, [activeViewPresetId, constructInitialProps, openViewPresetsDialog, panelId, t, title, presetAbstract]);
7351
7333
  var onReset = React.useCallback(function () {
7352
7334
  openViewPresetsDialog({
7353
7335
  title: t('workspace-reset-title'),
@@ -8246,6 +8228,7 @@ var HelperText = function HelperText(_ref) {
8246
8228
  children: text
8247
8229
  });
8248
8230
  };
8231
+ var inputMargin = 2;
8249
8232
  var ViewPresetItem = function ViewPresetItem(_ref2) {
8250
8233
  var index = _ref2.index,
8251
8234
  viewPreset = _ref2.viewPreset,
@@ -8285,6 +8268,7 @@ var ViewPresetItem = function ViewPresetItem(_ref2) {
8285
8268
  }
8286
8269
  }, [error, fieldNameTitle, setError]);
8287
8270
  var shouldShowInput = isNew && isChecked || isChecked && !isAdmin && viewPreset.scope === 'system';
8271
+ var isInputDisabled = isLoading || !hasChanges;
8288
8272
  return jsxs(React__default.Fragment, {
8289
8273
  children: [jsx(FormControlLabel, {
8290
8274
  control: jsx(Checkbox, {}),
@@ -8315,11 +8299,23 @@ var ViewPresetItem = function ViewPresetItem(_ref2) {
8315
8299
  rules: {
8316
8300
  required: true
8317
8301
  },
8318
- disabled: isLoading || !hasChanges,
8302
+ disabled: isInputDisabled,
8319
8303
  sx: {
8320
- marginBottom: 2
8304
+ mb: inputMargin
8321
8305
  },
8322
8306
  error: error !== undefined
8307
+ }), jsx(ReactHookFormTextField, {
8308
+ name: "views." + index + ".abstract",
8309
+ label: t('workspace-dialog-abstract'),
8310
+ rules: {
8311
+ required: false
8312
+ },
8313
+ multiline: true,
8314
+ rows: 3,
8315
+ disabled: isInputDisabled,
8316
+ sx: {
8317
+ mb: inputMargin
8318
+ }
8323
8319
  }), jsx(HelperText, {
8324
8320
  text: t(getNewPresetWarningText(isAdmin, isNew))
8325
8321
  })]
@@ -8557,7 +8553,7 @@ var WorkspacePresetsFormDialog = function WorkspacePresetsFormDialog(_ref) {
8557
8553
  }
8558
8554
  case WorkspacePresetAction.EDIT:
8559
8555
  {
8560
- return t('workspace-edit-both');
8556
+ return t('workspace-edit');
8561
8557
  }
8562
8558
  case WorkspacePresetAction.SAVE:
8563
8559
  {
@@ -8725,6 +8721,7 @@ var validateTitle = function validateTitle(value) {
8725
8721
  // TODO: use translation from form-fields https://gitlab.com/opengeoweb/opengeoweb/-/issues/4240
8726
8722
  return !value.trim().length ? 'This field is required' : true;
8727
8723
  };
8724
+ var marginBottom = 2;
8728
8725
  var ViewPresetsForm = function ViewPresetsForm(_ref) {
8729
8726
  var viewComponentType = _ref.viewComponentType,
8730
8727
  error = _ref.error,
@@ -8755,7 +8752,7 @@ var ViewPresetsForm = function ViewPresetsForm(_ref) {
8755
8752
  return jsxs(Fragment, {
8756
8753
  children: [Boolean(error) && jsx(Box, {
8757
8754
  sx: {
8758
- marginBottom: 2
8755
+ mb: marginBottom
8759
8756
  },
8760
8757
  children: jsx(AlertBanner, {
8761
8758
  title: error
@@ -8772,7 +8769,18 @@ var ViewPresetsForm = function ViewPresetsForm(_ref) {
8772
8769
  validateTitle: validateTitle
8773
8770
  }
8774
8771
  },
8775
- defaultValue: title
8772
+ defaultValue: title,
8773
+ sx: {
8774
+ mb: marginBottom
8775
+ }
8776
+ }), jsx(ReactHookFormTextField, {
8777
+ name: "abstract",
8778
+ label: t('workspace-dialog-abstract'),
8779
+ rules: {
8780
+ required: false
8781
+ },
8782
+ multiline: true,
8783
+ rows: 3
8776
8784
  }), hiddenFields.map(function (_ref2) {
8777
8785
  var name = _ref2.name,
8778
8786
  value = _ref2.value;
@@ -8866,77 +8874,75 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
8866
8874
  var confirmLabel = getConfirmLabel(action);
8867
8875
  var onFormSubmit = /*#__PURE__*/function () {
8868
8876
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(formValues) {
8869
- var scope, newFormValues, newId, _yield$api$getViewPre, originalViewPreset, viewPresetEdited, submitError, message;
8877
+ var scope, handleSuccess, newFormValues, newId, _yield$api$getViewPre, originalViewPreset, viewPresetEdited, submitError, message;
8870
8878
  return _regeneratorRuntime().wrap(function _callee$(_context) {
8871
8879
  while (1) switch (_context.prev = _context.next) {
8872
8880
  case 0:
8873
8881
  scope = isAdmin ? 'system' : formValues.scope;
8882
+ handleSuccess = function handleSuccess(id) {
8883
+ setIsLoading(false);
8884
+ onClose();
8885
+ onSuccess(action, id, newFormValues.title, newFormValues["abstract"]);
8886
+ };
8874
8887
  newFormValues = Object.assign({}, formValues, {
8875
8888
  scope: scope
8876
8889
  });
8877
- _context.prev = 2;
8890
+ _context.prev = 3;
8878
8891
  setError(null);
8879
8892
  setIsLoading(true);
8880
8893
  _context.t0 = action;
8881
- _context.next = _context.t0 === PresetAction.SAVE_AS ? 8 : _context.t0 === PresetAction.DELETE ? 15 : _context.t0 === PresetAction.EDIT ? 21 : _context.t0 === PresetAction.RESET ? 32 : 37;
8894
+ _context.next = _context.t0 === PresetAction.SAVE_AS ? 9 : _context.t0 === PresetAction.DELETE ? 14 : _context.t0 === PresetAction.EDIT ? 18 : _context.t0 === PresetAction.RESET ? 27 : 30;
8882
8895
  break;
8883
- case 8:
8884
- _context.next = 10;
8896
+ case 9:
8897
+ _context.next = 11;
8885
8898
  return api.saveViewPresetAs(newFormValues);
8886
- case 10:
8899
+ case 11:
8887
8900
  newId = _context.sent;
8888
- setIsLoading(false);
8889
- onClose();
8890
- onSuccess(action, newId, newFormValues.title);
8891
- return _context.abrupt("break", 38);
8892
- case 15:
8893
- _context.next = 17;
8901
+ handleSuccess(newId);
8902
+ return _context.abrupt("break", 31);
8903
+ case 14:
8904
+ _context.next = 16;
8894
8905
  return api.deleteViewPreset(viewPresetId);
8895
- case 17:
8896
- setIsLoading(false);
8897
- onClose();
8898
- onSuccess(action, viewPresetId, newFormValues.title);
8899
- return _context.abrupt("break", 38);
8900
- case 21:
8901
- _context.next = 23;
8906
+ case 16:
8907
+ handleSuccess(viewPresetId);
8908
+ return _context.abrupt("break", 31);
8909
+ case 18:
8910
+ _context.next = 20;
8902
8911
  return api.getViewPreset(viewPresetId);
8903
- case 23:
8912
+ case 20:
8904
8913
  _yield$api$getViewPre = _context.sent;
8905
8914
  originalViewPreset = _yield$api$getViewPre.data;
8906
8915
  viewPresetEdited = Object.assign({}, originalViewPreset, {
8907
8916
  title: newFormValues.title,
8917
+ "abstract": newFormValues["abstract"],
8908
8918
  scope: scope
8909
8919
  });
8910
- _context.next = 28;
8920
+ _context.next = 25;
8911
8921
  return api.saveViewPreset(viewPresetId, viewPresetEdited);
8912
- case 28:
8913
- setIsLoading(false);
8914
- onClose();
8915
- onSuccess(action, viewPresetId, newFormValues.title);
8916
- return _context.abrupt("break", 38);
8917
- case 32:
8922
+ case 25:
8923
+ handleSuccess(viewPresetId);
8924
+ return _context.abrupt("break", 31);
8925
+ case 27:
8918
8926
  onReset(viewPresetId);
8919
- setIsLoading(false);
8920
- onClose();
8921
- onSuccess(action, viewPresetId, newFormValues.title);
8922
- return _context.abrupt("break", 38);
8923
- case 37:
8924
- return _context.abrupt("break", 38);
8925
- case 38:
8926
- _context.next = 46;
8927
+ handleSuccess(viewPresetId);
8928
+ return _context.abrupt("break", 31);
8929
+ case 30:
8930
+ return _context.abrupt("break", 31);
8931
+ case 31:
8932
+ _context.next = 39;
8927
8933
  break;
8928
- case 40:
8929
- _context.prev = 40;
8930
- _context.t1 = _context["catch"](2);
8934
+ case 33:
8935
+ _context.prev = 33;
8936
+ _context.t1 = _context["catch"](3);
8931
8937
  setIsLoading(false);
8932
8938
  submitError = _context.t1;
8933
8939
  message = isAxiosError$1(submitError) ? getAxiosErrorMessage(submitError) : submitError.message;
8934
8940
  setError(message);
8935
- case 46:
8941
+ case 39:
8936
8942
  case "end":
8937
8943
  return _context.stop();
8938
8944
  }
8939
- }, _callee, null, [[2, 40]]);
8945
+ }, _callee, null, [[3, 33]]);
8940
8946
  }));
8941
8947
  return function onFormSubmit(_x) {
8942
8948
  return _ref2.apply(this, arguments);
@@ -9035,13 +9041,14 @@ var ViewPresetsFormDialogConnect = function ViewPresetsFormDialogConnect(_ref) {
9035
9041
  var onClose = function onClose() {
9036
9042
  closeDialog();
9037
9043
  };
9038
- var onSuccess = function onSuccess(action, newViewPresetId, title) {
9044
+ var onSuccess = function onSuccess(action, newViewPresetId, title, _abstract) {
9039
9045
  dispatch(viewPresetActions.onSuccessViewPresetAction({
9040
9046
  panelId: panelId,
9041
9047
  viewPresetId: newViewPresetId,
9042
9048
  action: action,
9043
9049
  title: title,
9044
- scope: scope
9050
+ scope: scope,
9051
+ "abstract": _abstract
9045
9052
  }));
9046
9053
  };
9047
9054
  var isOpen = dialogOptions !== undefined;
@@ -9193,4 +9200,4 @@ var WorkspaceDetail = function WorkspaceDetail(_ref2) {
9193
9200
  });
9194
9201
  };
9195
9202
 
9196
- export { ComponentsLookUpWrapper, DemoWrapper, PresetAction, ViewPresetErrorComponent, ViewPresetErrorType, WORKSPACE_NAMESPACE, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspaceModuleProvider, WorkspacePresetAction, WorkspaceTopBar, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, workspaceActions as actions, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, getEmptyMapWorkspace, getWorkspaceRouteUrl, selectors$1 as selectors, viewPresetActions, reducer as viewPresetsListReducer, viewPresetsListener, reducer$2 as viewPresetsReducer, workspaceListActions, workspaceListListener, reducer$3 as workspaceListReducer, workspaceListener, workspaceModuleConfig, reducer$1 as workspaceReducer, routes as workspaceRoutes, workspaceTranslations };
9203
+ 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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/workspace",
3
- "version": "10.1.0",
3
+ "version": "10.2.1-spike-ol.0",
4
4
  "description": "GeoWeb Workspace library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -18,7 +18,6 @@
18
18
  "@opengeoweb/snackbar": "*",
19
19
  "react-window": "^1.8.10",
20
20
  "lodash": "^4.17.21",
21
- "immer": "^10.0.3",
22
21
  "axios": "^1.7.7",
23
22
  "react-virtualized-auto-sizer": "^1.0.21",
24
23
  "react-mosaic-component": "^6.1.0",
package/src/index.d.ts CHANGED
@@ -3,12 +3,11 @@ import { workspaceListener } from './lib/store/workspace/listener';
3
3
  export { workspaceListener };
4
4
  export { workspaceListListener } from './lib/store/workspaceList/listener';
5
5
  export { viewPresetsListener } from './lib/store/viewPresets/listener';
6
- export { workspaceActions as actions, reducer as workspaceReducer, } from './lib/store/workspace/reducer';
7
- export { workspaceListActions, reducer as workspaceListReducer, } from './lib/store/workspaceList/reducer';
8
- export { viewPresetActions, reducer as viewPresetsReducer, } from './lib/store/viewPresets';
9
- export { reducer as viewPresetsListReducer } from './lib/store/viewPresetsList';
6
+ export { workspaceActions, workspaceReducer, } from './lib/store/workspace/reducer';
7
+ export { workspaceListActions, workspaceListReducer, } from './lib/store/workspaceList/reducer';
8
+ export { viewPresetActions, viewPresetsReducer } from './lib/store/viewPresets';
9
+ export { viewPresetsListReducer } from './lib/store/viewPresetsList';
10
10
  export * as selectors from './lib/store/workspace/selectors';
11
- export { default as workspaceModuleConfig } from './lib/store/config';
12
11
  export * from './lib/store/workspace/types';
13
12
  export * from './lib/store/viewPresets/types';
14
13
  export * from './lib/components/Providers';
@@ -21,3 +20,4 @@ export { workspaceTranslations };
21
20
  export { routes as workspaceRoutes, getWorkspaceRouteUrl, } from './lib/utils/routes';
22
21
  export { getEmptyMapWorkspace, createCustomEmptyMapWorkspace, } from './lib/store/workspaceList/utils';
23
22
  export type { WorkspaceModuleStore } from './lib/store/types';
23
+ export { workspaceReducersMap, workspaceMiddlewares } from './lib/store';
@@ -7,7 +7,7 @@ export interface ViewPresetsFormDialogProps {
7
7
  viewPresetId: string;
8
8
  viewComponentType: WorkspaceSupportedComponentTypes;
9
9
  formValues: ViewPresetFormValues;
10
- onSuccess: (action: PresetAction, presetId: string, title: string) => void;
10
+ onSuccess: (action: PresetAction, presetId: string, title: string, abstract: string) => void;
11
11
  onClose: () => void;
12
12
  onReset: (viewPresetId: string) => void;
13
13
  }
@@ -7,3 +7,4 @@ export declare const ScreenConfigRadarTemp: () => React.ReactElement;
7
7
  export declare const ScreenConfigHarmoniePresetWithoutMultiMapLayerManager: () => React.ReactElement;
8
8
  export declare const ScreenConfigHarmoniePresetWithMultiMapLayerManager: () => React.ReactElement;
9
9
  export declare const UiDialogsDemo: () => React.ReactElement;
10
+ export declare const ScreenConfigWithNonExistingLayer: () => React.ReactElement;
@@ -1 +1 @@
1
- export { createTestWorkspaceStore } from './store';
1
+ export * from './store';
@@ -1,2 +1,20 @@
1
+ import { SnackbarModuleStore } from '@opengeoweb/snackbar';
2
+ import { WebMapStateModuleState, SynchronizationGroupModuleState, UIModuleState } from '@opengeoweb/store';
1
3
  import { ToolkitStore } from '@reduxjs/toolkit/dist/configureStore';
2
- export declare const createTestWorkspaceStore: () => ToolkitStore;
4
+ import { WorkspaceModuleStore } from './types';
5
+ export declare const workspaceReducersMap: {
6
+ webmap: import("redux").Reducer<import("dist/libs/store/src/store/map/types").WebMapState, import("redux").AnyAction>;
7
+ services: import("redux").Reducer<import("dist/libs/store/src/store/map/types").ServiceState, import("redux").AnyAction>;
8
+ layers: import("redux").Reducer<import("dist/libs/store/src/store/map/types").LayerState, import("redux").AnyAction>;
9
+ syncGroups: import("redux").Reducer<import("dist/libs/store/src/store/generic/syncGroups/types").SynchronizationGroupState, import("redux").AnyAction>;
10
+ loadingIndicator: import("redux").Reducer<import("@reduxjs/toolkit").EntityState<import("dist/libs/store/src/store/generic/loadingIndicator/types").LoadingIndicatorType>, import("redux").AnyAction>;
11
+ ui: import("redux").Reducer<import("dist/libs/store/src/store/ui/types").UIStoreType, import("redux").AnyAction>;
12
+ workspace: import("redux").Reducer<import("./workspace/types").WorkspaceState>;
13
+ workspaceList: import("redux").Reducer<import("./workspaceList/types").WorkspaceListState>;
14
+ viewPresetsList: import("redux").Reducer<import("./viewPresetsList/types").ViewPresetListState>;
15
+ viewPresets: import("redux").Reducer<import("./viewPresets/types").ViewPresetState>;
16
+ timeSeries: import("redux").Reducer<import("dist/libs/timeseries/src/lib/store/types").TimeSeriesStoreType, import("redux").AnyAction>;
17
+ snackbar: import("redux").Reducer<import("dist/libs/snackbar/src/lib/store/types").SnackbarState, import("redux").AnyAction>;
18
+ };
19
+ export declare const workspaceMiddlewares: (import("@reduxjs/toolkit").ListenerMiddleware<import("./types").AppStore, import("@reduxjs/toolkit").ThunkDispatch<import("./types").AppStore, unknown, import("redux").AnyAction>, unknown> | import("@reduxjs/toolkit").ListenerMiddleware<SnackbarModuleStore, import("@reduxjs/toolkit").ThunkDispatch<SnackbarModuleStore, unknown, import("redux").AnyAction>, unknown>)[];
20
+ export declare const createMockStore: (mockState?: WebMapStateModuleState | WorkspaceModuleStore | UIModuleState | SynchronizationGroupModuleState | SnackbarModuleStore) => ToolkitStore;
@@ -1,2 +1,2 @@
1
- export { viewPresetActions, reducer } from './reducer';
1
+ export { viewPresetActions, viewPresetsReducer } from './reducer';
2
2
  export * as viewPresetSelectors from './selectors';
@@ -1 +1,2 @@
1
- export {};
1
+ import { ToolkitStore } from '@reduxjs/toolkit/dist/configureStore';
2
+ export declare const createMockStoreForListener: () => ToolkitStore;
@@ -9,8 +9,7 @@ export type SupportedMapActionOrigins = layerTypes.LayerActionOrigin | mapEnums.
9
9
  export declare const supportedMapActionOrigins: SupportedMapActionOrigins[];
10
10
  export type SupportedTimeSeriesActionOrigins = TimeSeriesTypes.TimeSeriesActionOrigin;
11
11
  export declare const supportedTimeSeriesActionOrigins: SupportedTimeSeriesActionOrigins[];
12
- export declare const reducer: import("redux").Reducer<ViewPresetState>;
13
- export declare const viewPresetActions: import("@reduxjs/toolkit").CaseReducerActions<{
12
+ export declare const viewPresetsReducer: import("redux").Reducer<ViewPresetState>, viewPresetActions: import("@reduxjs/toolkit").CaseReducerActions<{
14
13
  fetchInitialViewPresets: (draft: Draft<ViewPresetState>, _action: PayloadAction<FetchViewPresetsList>) => void;
15
14
  fetchedInitialViewPresets: (draft: Draft<ViewPresetState>, action: PayloadAction<FetchedInitialViewPresetsPayload>) => void;
16
15
  errorInitialViewPresets: (draft: Draft<ViewPresetState>, action: PayloadAction<ErrorInitialViewPresetsPayload>) => void;
@@ -8,6 +8,7 @@ export type WorkspaceSupportedComponentTypes = SupportedComponentTypes | Support
8
8
  export interface ViewPreset {
9
9
  id?: string;
10
10
  title: string;
11
+ abstract?: string;
11
12
  keywords: string;
12
13
  componentType: WorkspaceSupportedComponentTypes;
13
14
  initialProps?: InitialProps;
@@ -46,6 +47,7 @@ export interface ViewPresetEntity {
46
47
  }
47
48
  export interface ViewPresetFormValues {
48
49
  title?: string;
50
+ abstract?: string;
49
51
  initialProps?: InitialProps;
50
52
  }
51
53
  export interface ViewPresetDialog {
@@ -113,6 +115,7 @@ export interface OnSuccesViewPresetActionPayload extends ViewPresetAction {
113
115
  title: string;
114
116
  componentType?: string;
115
117
  scope?: PresetScope;
118
+ abstract?: string;
116
119
  }
117
120
  export interface SelectViewPresetPayload extends ViewPresetAction {
118
121
  viewPresetId: string;
@@ -1,2 +1,2 @@
1
- export { viewPresetsListActions, reducer } from './reducer';
1
+ export { viewPresetsListActions, viewPresetsListReducer } from './reducer';
2
2
  export * as viewPresetsListSelectors from './selectors';
@@ -1,5 +1,4 @@
1
1
  import { ViewPresetListItem, ViewPresetListState } from './types';
2
2
  export declare const viewPresetsListAdapter: import("@reduxjs/toolkit").EntityAdapter<ViewPresetListItem>;
3
3
  export declare const initialState: ViewPresetListState;
4
- export declare const reducer: import("redux").Reducer<ViewPresetListState>;
5
- export declare const viewPresetsListActions: import("@reduxjs/toolkit").CaseReducerActions<{}, "viewPresetsList">;
4
+ export declare const viewPresetsListReducer: import("redux").Reducer<ViewPresetListState>, viewPresetsListActions: import("@reduxjs/toolkit").CaseReducerActions<{}, "viewPresetsList">;
@@ -5,6 +5,7 @@ export interface ViewPresetListItem {
5
5
  title: string;
6
6
  date: string;
7
7
  scope: PresetScope;
8
+ abstract?: string;
8
9
  }
9
10
  export interface FetchViewPresetsListParams {
10
11
  scope?: string;
@@ -0,0 +1 @@
1
+ export { workspaceActions, workspaceReducer } from './reducer';
@@ -1,6 +1,7 @@
1
+ import { Reducer } from '@reduxjs/toolkit';
1
2
  import { WorkspaceAddViewPayload, WorkspaceDeleteViewPayload, WorkspaceState, WorkspaceSetPresetPayload, WorkspaceSetPreventCloseViewPayload, WorkspaceUpdateViewPayload, WorkspaceUpdateViewsPayload, WorkspaceErrorWorkspacePayload, WorkspaceFetchedWorkspacePayload, WorkspaceFetchWorkspacePayload, WorkspaceFetchWorkspaceViewPresetPayload, WorkspaceSaveWorkspacePresetPayload, WorkspaceSetNewViewPayload, WorkspaceChangeToEmptyMapWorkspacePayload } from './types';
2
3
  export declare const initialState: WorkspaceState;
3
- export declare const reducer: import("redux").Reducer<WorkspaceState>;
4
+ export declare const workspaceReducer: Reducer<WorkspaceState>;
4
5
  export declare const workspaceActions: {
5
6
  addWorkspaceView: import("@reduxjs/toolkit").ActionCreatorWithPayload<WorkspaceAddViewPayload, "workspace/addWorkspaceView">;
6
7
  setNewWorkspaceView: import("@reduxjs/toolkit").ActionCreatorWithPayload<WorkspaceSetNewViewPayload, "workspace/setNewWorkspaceView">;
@@ -133,7 +133,7 @@ export declare const getWorkspaceData: ((state: AppStore & import("@opengeoweb/s
133
133
  title: string;
134
134
  syncGroups: {
135
135
  id: string;
136
- type: import("dist/libs/store/src/store/generic/synchronizationGroups/types").SyncType;
136
+ type: import("dist/libs/store/src/store/generic/syncGroups/types").SyncType;
137
137
  }[];
138
138
  views: {
139
139
  mosaicNodeId: string;
@@ -145,12 +145,12 @@ export declare const getWorkspaceData: ((state: AppStore & import("@opengeoweb/s
145
145
  mosaicNode: import("react-mosaic-component").MosaicNode<string>;
146
146
  isTimeScrollingEnabled: boolean;
147
147
  linking: Pick<Record<string, string[]>, string>;
148
- }) & import("reselect").OutputSelectorFields<(args_0: WorkspaceState, args_1: import("../viewPresets/types").ViewPresetState, args_2: import("dist/libs/store/src/store/generic/synchronizationGroups/types").SynchronizationGroupState) => {
148
+ }) & import("reselect").OutputSelectorFields<(args_0: WorkspaceState, args_1: import("../viewPresets/types").ViewPresetState, args_2: import("dist/libs/store/src/store/generic/syncGroups/types").SynchronizationGroupState) => {
149
149
  id: string | undefined;
150
150
  title: string;
151
151
  syncGroups: {
152
152
  id: string;
153
- type: import("dist/libs/store/src/store/generic/synchronizationGroups/types").SyncType;
153
+ type: import("dist/libs/store/src/store/generic/syncGroups/types").SyncType;
154
154
  }[];
155
155
  views: {
156
156
  mosaicNodeId: string;
@@ -6,6 +6,7 @@ export type WorkspaceViewPresetComponentsLookupType = 'ViewError' | 'ViewLoading
6
6
  export interface WorkspaceViewType {
7
7
  id?: string;
8
8
  title?: string;
9
+ abstract?: string;
9
10
  componentType: string | WorkspaceViewPresetComponentsLookupType;
10
11
  initialProps?: InitialPropsWorkspaceViewType;
11
12
  activeLayerId?: string;
@@ -1 +1,2 @@
1
+ export { workspaceListActions, workspaceListReducer } from './reducer';
1
2
  export * as workspaceListSelectors from './selectors';
@@ -4,8 +4,7 @@ import { OpenWorkspaceActionDialogPayload, FetchedWorkspaceList, WorkspaceListSt
4
4
  export declare const workspaceListFilterOptions: WorkspaceListFilter[];
5
5
  export declare const workspaceListAdapter: import("@reduxjs/toolkit").EntityAdapter<WorkspacePresetListItem>;
6
6
  export declare const initialState: WorkspaceListState;
7
- export declare const reducer: import("redux").Reducer<WorkspaceListState>;
8
- export declare const workspaceListActions: import("@reduxjs/toolkit").CaseReducerActions<{
7
+ export declare const workspaceListReducer: import("redux").Reducer<WorkspaceListState>, workspaceListActions: import("@reduxjs/toolkit").CaseReducerActions<{
9
8
  fetchWorkspaceList: (draft: Draft<WorkspaceListState>, action: PayloadAction<FetchWorkspaceList>) => void;
10
9
  fetchedWorkspaceList: (draft: Draft<WorkspaceListState>, action: PayloadAction<FetchedWorkspaceList>) => void;
11
10
  errorWorkspaceList: (draft: Draft<WorkspaceListState>, action: PayloadAction<ErrorWorkspaceList>) => void;
@@ -39,6 +39,7 @@ export type WorkspaceDialogView = {
39
39
  isSelected: boolean;
40
40
  error?: ViewPresetError;
41
41
  scope: PresetScope;
42
+ abstract?: string;
42
43
  } & WorkspaceViewsFromBE;
43
44
  export interface WorkspaceFormValues {
44
45
  id?: string;
@@ -1,9 +0,0 @@
1
- import { ListenerMiddleware, ReducersMapObject } from '@reduxjs/toolkit';
2
- import { WorkspaceModuleStore } from './types';
3
- export declare const workspaceReducersMap: ReducersMapObject;
4
- export declare const workspaceMiddlewares: ListenerMiddleware<WorkspaceModuleStore>[];
5
- declare const workspaceModuleConfig: {
6
- reducersMap: ReducersMapObject<any, import("redux").Action<any>>;
7
- middlewares: ListenerMiddleware<WorkspaceModuleStore>[];
8
- };
9
- export default workspaceModuleConfig;
@@ -1,4 +0,0 @@
1
- import { uiTypes, WebMapStateModuleState } from '@opengeoweb/store';
2
- import { Store } from '@reduxjs/toolkit';
3
- import { WorkspaceModuleStore } from '../store/types';
4
- export declare const createMockStore: (mockState: WorkspaceModuleStore & uiTypes.UIModuleState & WebMapStateModuleState) => Store;