@opengeoweb/workspace 9.35.0 → 9.36.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,23 +1,22 @@
1
- import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware } from '@reduxjs/toolkit';
2
- import { syncGroupsTypes, syncGroupsActions, layerActions, mapStoreActions, uiActions, genericActions, mapActions, layerTypes, mapEnums, selectorMemoizationOptions, genericSelectors, mapSelectors, syncGroupsSelectors, routerActions, coreModuleConfig, linkComponentTypesConstants, uiTypes, loadingIndicatorSelectors, uiSelectors } from '@opengeoweb/store';
1
+ import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, combineReducers, configureStore } from '@reduxjs/toolkit';
2
+ import { syncGroupsTypes, syncGroupsActions, layerActions, mapStoreActions, uiActions, genericActions, mapActions, layerTypes, mapEnums, selectorMemoizationOptions, genericSelectors, mapSelectors, syncGroupsSelectors, routerActions, coreModuleReducersMap, routerReducersMap, coreModuleMiddlewares, routerMiddlewares, linkComponentTypesConstants, uiTypes, loadingIndicatorSelectors, uiSelectors } from '@opengeoweb/store';
3
3
  import { createApiInstance, createNonAuthApiInstance, getApi, createFakeApiInstance, ApiProvider, useApiContext } from '@opengeoweb/api';
4
- import _, { chunk, cloneDeep, isEmpty, isEqual, isString } from 'lodash';
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, timeSeriesModuleConfig } from '@opengeoweb/timeseries';
7
- import { PROJECTION, getAxiosErrorMessage, isAxiosAuthError, isAxiosError as isAxiosError$1, SHARED_NAMESPACE, sharedTranslations, withEggs, ConfirmationServiceProvider, CustomIconButton, useConfirmationDialog, AlertBanner, CustomTooltip, SearchHighlight, ToggleMenu, DEFAULT_FILTER_HEIGHT, usePrevious, Filter, Resizable, ToolContainer, renderCounter, CustomToggleButton, ConfirmationDialog } from '@opengeoweb/shared';
8
- import { snackbarTypes, snackbarActions, SnackbarWrapperConnect } from '@opengeoweb/snackbar';
6
+ import { timeSeriesActions, TimeSeriesTypes, timeSeriesSelectors, timeSeriesReducersMap, timeSeriesMiddlewares } from '@opengeoweb/timeseries';
7
+ 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';
8
+ import { snackbarTypes, snackbarActions, snackbarReducersMap, snackbarMiddlewares, SnackbarWrapperConnect } from '@opengeoweb/snackbar';
9
9
  import { isAxiosError } from 'axios';
10
10
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
11
11
  import { ThemeWrapper, lightTheme, Link, LinkOff, SplitVertical, SplitHorizontal, Expand, UnExpand, Close, Delete, Preset, PresetWorkspace, PresetTiles, CloudLoading, CloudIdle, WebAssetOff, Exclamation } from '@opengeoweb/theme';
12
12
  import { Provider, useDispatch, useSelector, useStore, shallowEqual } from 'react-redux';
13
13
  import { initReactI18next, useTranslation, I18nextProvider } from 'react-i18next';
14
14
  import { AuthenticationProvider, useAuthenticationContext, GEOWEB_ROLE_PRESETS_ADMIN } from '@opengeoweb/authentication';
15
- import { createStore } from '@redux-eggs/redux-toolkit';
16
- import { produce } from 'immer';
17
15
  import i18n from 'i18next';
18
16
  import { WEBMAP_REACT_NAMESPACE, webmapReactTranslations } from '@opengeoweb/webmap-react';
19
17
  import { CORE_NAMESPACE, coreTranslations } from '@opengeoweb/core';
20
18
  import { FORM_FIELDS_NAMESPACE, formFieldsTranslations, ReactHookFormTextField, ReactHookFormHiddenInput, ReactHookFormProvider, defaultFormOptions } from '@opengeoweb/form-fields';
19
+ import { produce } from 'immer';
21
20
  import * as React from 'react';
22
21
  import React__default, { useCallback } from 'react';
23
22
  import { Menu, Typography, List, ListItem, ListItemButton, ListItemIcon, Checkbox, ListItemText, LinearProgress, Grid2, Box, Backdrop, ListSubheader, MenuItem, useTheme, FormGroup, FormControlLabel, Tabs } from '@mui/material';
@@ -732,10 +731,14 @@ var getApiRoutes$1 = function getApiRoutes(axiosInstance) {
732
731
  return axiosInstance.get("/viewpreset/" + viewPresetId);
733
732
  },
734
733
  saveViewPreset: function saveViewPreset(viewPresetId, data) {
735
- return axiosInstance.put("/viewpreset/" + viewPresetId + "/", data);
734
+ return axiosInstance.put("/viewpreset/" + viewPresetId + "/", data.initialProps === null ? Object.assign({}, data, {
735
+ initialProps: {}
736
+ }) : data);
736
737
  },
737
738
  saveViewPresetAs: function saveViewPresetAs(data) {
738
- return axiosInstance.post("/viewpreset/", data).then(function (response) {
739
+ return axiosInstance.post("/viewpreset/", data.initialProps === null ? Object.assign({}, data, {
740
+ initialProps: {}
741
+ }) : data).then(function (response) {
739
742
  var headerLocation = response == null ? void 0 : response.request.getResponseHeader('Location');
740
743
  return getIdFromUrl(headerLocation);
741
744
  });
@@ -1686,7 +1689,7 @@ var initialState$1 = {
1686
1689
  error: undefined,
1687
1690
  hasChanges: false
1688
1691
  };
1689
- var workspacePresetChangeActions = [viewPresetActions.selectViewPreset, viewPresetActions.setActiveViewPresetId, syncGroupsActions.syncGroupRemoveGroup, syncGroupsActions.syncGroupAddGroup];
1692
+ var workspacePresetChangeActions = [viewPresetActions.selectViewPreset, viewPresetActions.setActiveViewPresetId, syncGroupsActions.syncGroupRemoveGroup, syncGroupsActions.syncGroupAddGroup, syncGroupsActions.syncGroupToggleIsTimeScrollingEnabled, syncGroupsActions.updateLinkedMap];
1690
1693
  var slice$1 = createSlice({
1691
1694
  initialState: initialState$1,
1692
1695
  name: 'workspace',
@@ -1796,6 +1799,7 @@ var slice$1 = createSlice({
1796
1799
  draft.hasChanges = false;
1797
1800
  draft.scope = action.payload.workspacePreset.scope;
1798
1801
  draft.viewType = action.payload.workspacePreset.viewType;
1802
+ draft.isTimeScrollingEnabled = action.payload.workspacePreset.isTimeScrollingEnabled;
1799
1803
  return draft;
1800
1804
  },
1801
1805
  setPreventCloseView: function setPreventCloseView(draft, action) {
@@ -1889,7 +1893,7 @@ var slice$1 = createSlice({
1889
1893
  workspacePresetChangeActions.map(function (action) {
1890
1894
  return builder.addCase(action, function (draft, payload) {
1891
1895
  var _payload$payload;
1892
- var hasChanges = action !== syncGroupsActions.syncGroupAddGroup || ((_payload$payload = payload.payload) == null ? void 0 : _payload$payload.origin) === 'user';
1896
+ var hasChanges = action !== syncGroupsActions.syncGroupAddGroup && action !== syncGroupsActions.syncGroupToggleIsTimeScrollingEnabled || ((_payload$payload = payload.payload) == null ? void 0 : _payload$payload.origin) === 'user';
1893
1897
  draft.hasChanges = hasChanges;
1894
1898
  // reset title and scope when setting empty activeViewPresetId
1895
1899
  if (action.type === viewPresetActions.setActiveViewPresetId.type) {
@@ -2284,6 +2288,7 @@ var getWorkspaceData = createSelector(getWorkspaceState, getViewPresetsStore, ge
2284
2288
  viewPresetId: viewPresetId
2285
2289
  };
2286
2290
  });
2291
+ var linkedState = pick(syncGroupsStore == null ? void 0 : syncGroupsStore.linkedState.links, store.views.allIds);
2287
2292
  return {
2288
2293
  id: store.id,
2289
2294
  title: store.title,
@@ -2292,7 +2297,9 @@ var getWorkspaceData = createSelector(getWorkspaceState, getViewPresetsStore, ge
2292
2297
  viewType: store.viewType,
2293
2298
  scope: store.scope,
2294
2299
  "abstract": store["abstract"],
2295
- mosaicNode: store.mosaicNode
2300
+ mosaicNode: store.mosaicNode,
2301
+ isTimeScrollingEnabled: (syncGroupsStore == null ? void 0 : syncGroupsStore.isTimeScrollingEnabled) || false,
2302
+ linking: linkedState
2296
2303
  };
2297
2304
  }, selectorMemoizationOptions);
2298
2305
  var getViewComponentType = createSelector(getViewById, function (store) {
@@ -4679,7 +4686,7 @@ workspaceListener.startListening({
4679
4686
  actionCreator: workspaceActions.changePreset,
4680
4687
  effect: function () {
4681
4688
  var _effect3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref3, listenerApi) {
4682
- var payload, allSyncGroups;
4689
+ var payload, allSyncGroups, isTimeScrollingEnabled;
4683
4690
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
4684
4691
  while (1) switch (_context3.prev = _context3.next) {
4685
4692
  case 0:
@@ -4699,7 +4706,14 @@ workspaceListener.startListening({
4699
4706
  allSyncGroups.map(function (syncGroup) {
4700
4707
  return listenerApi.dispatch(syncGroupsActions.syncGroupAddGroup(syncGroup));
4701
4708
  });
4702
- case 8:
4709
+ listenerApi.dispatch(genericActions.setLinkedMap({
4710
+ newLinks: payload.workspacePreset.linking || {}
4711
+ }));
4712
+ isTimeScrollingEnabled = payload.workspacePreset.isTimeScrollingEnabled || false;
4713
+ listenerApi.dispatch(syncGroupsActions.syncGroupToggleIsTimeScrollingEnabled({
4714
+ isTimeScrollingEnabled: isTimeScrollingEnabled
4715
+ }));
4716
+ case 11:
4703
4717
  case "end":
4704
4718
  return _context3.stop();
4705
4719
  }
@@ -5896,18 +5910,19 @@ workspaceListListener.startListening({
5896
5910
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
5897
5911
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
5898
5912
  * */
5913
+ var workspaceReducersMap = {
5914
+ workspace: reducer$1,
5915
+ workspaceList: reducer$3,
5916
+ viewPresetsList: reducer,
5917
+ viewPresets: reducer$2
5918
+ };
5919
+ var workspaceMiddlewares = [viewPresetsListener.middleware, workspaceListener.middleware, workspaceListListener.middleware];
5899
5920
  var workspaceModuleConfig = {
5900
5921
  id: 'workspace-module',
5901
- reducersMap: {
5902
- workspace: reducer$1,
5903
- workspaceList: reducer$3,
5904
- viewPresetsList: reducer,
5905
- viewPresets: reducer$2
5906
- },
5907
- middlewares: [viewPresetsListener.middleware, workspaceListener.middleware, workspaceListListener.middleware]
5922
+ reducersMap: workspaceReducersMap,
5923
+ middlewares: workspaceMiddlewares
5908
5924
  };
5909
5925
 
5910
- /* eslint-disable @typescript-eslint/ban-ts-comment */
5911
5926
  /* *
5912
5927
  * Licensed under the Apache License, Version 2.0 (the "License");
5913
5928
  * you may not use this file except in compliance with the License.
@@ -5925,34 +5940,29 @@ var workspaceModuleConfig = {
5925
5940
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
5926
5941
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
5927
5942
  * */
5928
- var devToolsStateSanitizer = {
5929
- stateSanitizer: function stateSanitizer(state) {
5930
- return produce(state, function (draftState) {
5931
- // @ts-ignore
5932
- if (state['services']) {
5933
- // @ts-ignore
5934
- Object.values(state['services'].byId).forEach(function (service) {
5935
- // @ts-ignore
5936
- draftState['services'].byId[service.id].layers =
5937
- // @ts-ignore
5938
- service.layers.length;
5939
- });
5940
- }
5941
- });
5942
- }
5943
- };
5944
- var store = createStore({
5945
- defaultMiddlewareOptions: {
5946
- serializableCheck: {
5947
- warnAfter: 128
5943
+ var WORKSPACE_NAMESPACE = 'workspace';
5944
+ var initWorkspaceTestI18n = function initWorkspaceTestI18n() {
5945
+ var _en, _fi, _no, _nl;
5946
+ void i18n.use(initReactI18next).init({
5947
+ lng: 'en',
5948
+ ns: WORKSPACE_NAMESPACE,
5949
+ interpolation: {
5950
+ escapeValue: false
5948
5951
  },
5949
- immutableCheck: {
5950
- warnAfter: 128
5952
+ resources: {
5953
+ en: (_en = {}, _en[WORKSPACE_NAMESPACE] = workspaceTranslations.en, _en[SHARED_NAMESPACE] = sharedTranslations.en, _en[CORE_NAMESPACE] = coreTranslations.en, _en[WEBMAP_REACT_NAMESPACE] = webmapReactTranslations.en, _en[FORM_FIELDS_NAMESPACE] = formFieldsTranslations.en, _en),
5954
+ fi: (_fi = {}, _fi[WORKSPACE_NAMESPACE] = workspaceTranslations.fi, _fi[SHARED_NAMESPACE] = sharedTranslations.fi, _fi[CORE_NAMESPACE] = coreTranslations.fi, _fi[WEBMAP_REACT_NAMESPACE] = webmapReactTranslations.fi, _fi[FORM_FIELDS_NAMESPACE] = formFieldsTranslations.fi, _fi),
5955
+ no: (_no = {}, _no[WORKSPACE_NAMESPACE] = workspaceTranslations.no, _no[SHARED_NAMESPACE] = sharedTranslations.no, _no[CORE_NAMESPACE] = coreTranslations.no, _no[WEBMAP_REACT_NAMESPACE] = webmapReactTranslations.no, _no[FORM_FIELDS_NAMESPACE] = formFieldsTranslations.no, _no),
5956
+ nl: (_nl = {}, _nl[WORKSPACE_NAMESPACE] = workspaceTranslations.nl, _nl[SHARED_NAMESPACE] = sharedTranslations.nl, _nl[CORE_NAMESPACE] = coreTranslations.nl, _nl[WEBMAP_REACT_NAMESPACE] = webmapReactTranslations.nl, _nl[FORM_FIELDS_NAMESPACE] = formFieldsTranslations.nl, _nl)
5951
5957
  }
5952
- },
5953
- devTools: devToolsStateSanitizer
5954
- });
5958
+ });
5959
+ };
5960
+ var ns = [WORKSPACE_NAMESPACE, SHARED_NAMESPACE];
5961
+ var useWorkspaceTranslation = function useWorkspaceTranslation() {
5962
+ return useTranslation(ns);
5963
+ };
5955
5964
 
5965
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
5956
5966
  /* *
5957
5967
  * Licensed under the Apache License, Version 2.0 (the "License");
5958
5968
  * you may not use this file except in compliance with the License.
@@ -5970,26 +5980,32 @@ var store = createStore({
5970
5980
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
5971
5981
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
5972
5982
  * */
5973
- var WORKSPACE_NAMESPACE = 'workspace';
5974
- var initWorkspaceTestI18n = function initWorkspaceTestI18n() {
5975
- var _en, _fi, _no, _nl;
5976
- void i18n.use(initReactI18next).init({
5977
- lng: 'en',
5978
- ns: WORKSPACE_NAMESPACE,
5979
- interpolation: {
5980
- escapeValue: false
5983
+ var devToolsStateSanitizer = {
5984
+ stateSanitizer: function stateSanitizer(state) {
5985
+ return produce(state, function (draftState) {
5986
+ // @ts-ignore
5987
+ if (state['services']) {
5988
+ // @ts-ignore
5989
+ Object.values(state['services'].byId).forEach(function (service) {
5990
+ // @ts-ignore
5991
+ draftState['services'].byId[service.id].layers =
5992
+ // @ts-ignore
5993
+ service.layers.length;
5994
+ });
5995
+ }
5996
+ });
5997
+ }
5998
+ };
5999
+ var rootReducer = combineReducers(Object.assign({}, coreModuleReducersMap, workspaceReducersMap, timeSeriesReducersMap, snackbarReducersMap, routerReducersMap));
6000
+ var createTestWorkspaceStore = function createTestWorkspaceStore() {
6001
+ var store = configureStore({
6002
+ reducer: rootReducer,
6003
+ middleware: function middleware(getDefaultMiddleware) {
6004
+ return getDefaultMiddleware().concat([].concat(coreModuleMiddlewares, workspaceMiddlewares, timeSeriesMiddlewares, snackbarMiddlewares, routerMiddlewares));
5981
6005
  },
5982
- resources: {
5983
- en: (_en = {}, _en[WORKSPACE_NAMESPACE] = workspaceTranslations.en, _en[SHARED_NAMESPACE] = sharedTranslations.en, _en[CORE_NAMESPACE] = coreTranslations.en, _en[WEBMAP_REACT_NAMESPACE] = webmapReactTranslations.en, _en[FORM_FIELDS_NAMESPACE] = formFieldsTranslations.en, _en),
5984
- fi: (_fi = {}, _fi[WORKSPACE_NAMESPACE] = workspaceTranslations.fi, _fi[SHARED_NAMESPACE] = sharedTranslations.fi, _fi[CORE_NAMESPACE] = coreTranslations.fi, _fi[WEBMAP_REACT_NAMESPACE] = webmapReactTranslations.fi, _fi[FORM_FIELDS_NAMESPACE] = formFieldsTranslations.fi, _fi),
5985
- no: (_no = {}, _no[WORKSPACE_NAMESPACE] = workspaceTranslations.no, _no[SHARED_NAMESPACE] = sharedTranslations.no, _no[CORE_NAMESPACE] = coreTranslations.no, _no[WEBMAP_REACT_NAMESPACE] = webmapReactTranslations.no, _no[FORM_FIELDS_NAMESPACE] = formFieldsTranslations.no, _no),
5986
- nl: (_nl = {}, _nl[WORKSPACE_NAMESPACE] = workspaceTranslations.nl, _nl[SHARED_NAMESPACE] = sharedTranslations.nl, _nl[CORE_NAMESPACE] = coreTranslations.nl, _nl[WEBMAP_REACT_NAMESPACE] = webmapReactTranslations.nl, _nl[FORM_FIELDS_NAMESPACE] = formFieldsTranslations.nl, _nl)
5987
- }
6006
+ devTools: devToolsStateSanitizer
5988
6007
  });
5989
- };
5990
- var ns = [WORKSPACE_NAMESPACE, SHARED_NAMESPACE];
5991
- var useWorkspaceTranslation = function useWorkspaceTranslation() {
5992
- return useTranslation(ns);
6008
+ return store;
5993
6009
  };
5994
6010
 
5995
6011
  var WorkspaceThemeProvider = function WorkspaceThemeProvider(_ref) {
@@ -6001,16 +6017,8 @@ var WorkspaceThemeProvider = function WorkspaceThemeProvider(_ref) {
6001
6017
  children: children
6002
6018
  });
6003
6019
  };
6004
- var WorkspaceWrapperProvider = withEggs([].concat(coreModuleConfig, [timeSeriesModuleConfig, workspaceModuleConfig]))(function (_ref2) {
6005
- var theme = _ref2.theme,
6006
- children = _ref2.children;
6007
- return jsx(WorkspaceThemeProvider, {
6008
- theme: theme,
6009
- children: children
6010
- });
6011
- });
6012
- var DemoWrapper = function DemoWrapper(_ref3) {
6013
- var props = Object.assign({}, (_objectDestructuringEmpty(_ref3), _ref3));
6020
+ var DemoWrapper = function DemoWrapper(_ref2) {
6021
+ var props = Object.assign({}, (_objectDestructuringEmpty(_ref2), _ref2));
6014
6022
  return jsx(WorkspaceI18nProvider, {
6015
6023
  children: jsx(WorkspaceThemeProvider, Object.assign({}, props))
6016
6024
  });
@@ -6030,15 +6038,15 @@ var defaultAuthConfig = {
6030
6038
  },
6031
6039
  sessionStorageProvider: null
6032
6040
  };
6033
- var WorkspaceWrapperProviderWithStore = function WorkspaceWrapperProviderWithStore(_ref4) {
6034
- var children = _ref4.children,
6035
- _ref4$store = _ref4.store,
6036
- store$1 = _ref4$store === void 0 ? store : _ref4$store,
6037
- _ref4$createApi = _ref4.createApi,
6038
- createApi$1 = _ref4$createApi === void 0 ? createApi : _ref4$createApi,
6039
- theme = _ref4.theme,
6040
- _ref4$auth = _ref4.auth,
6041
- auth = _ref4$auth === void 0 ? defaultAuthConfig : _ref4$auth;
6041
+ var WorkspaceWrapperProviderWithStore = function WorkspaceWrapperProviderWithStore(_ref3) {
6042
+ var children = _ref3.children,
6043
+ _ref3$store = _ref3.store,
6044
+ store = _ref3$store === void 0 ? createTestWorkspaceStore() : _ref3$store,
6045
+ _ref3$createApi = _ref3.createApi,
6046
+ createApi$1 = _ref3$createApi === void 0 ? createApi : _ref3$createApi,
6047
+ theme = _ref3.theme,
6048
+ _ref3$auth = _ref3.auth,
6049
+ auth = _ref3$auth === void 0 ? defaultAuthConfig : _ref3$auth;
6042
6050
  return jsx(WorkspaceI18nProvider, {
6043
6051
  children: jsx(AuthenticationProvider, {
6044
6052
  value: auth,
@@ -6046,8 +6054,8 @@ var WorkspaceWrapperProviderWithStore = function WorkspaceWrapperProviderWithSto
6046
6054
  createApi: createApi$1,
6047
6055
  name: API_NAME,
6048
6056
  children: jsx(Provider, {
6049
- store: store$1,
6050
- children: jsx(WorkspaceWrapperProvider, {
6057
+ store: store,
6058
+ children: jsx(WorkspaceThemeProvider, {
6051
6059
  theme: theme,
6052
6060
  children: jsx(SnackbarWrapperConnect, {
6053
6061
  children: jsx(ConfirmationServiceProvider, {
@@ -6060,8 +6068,8 @@ var WorkspaceWrapperProviderWithStore = function WorkspaceWrapperProviderWithSto
6060
6068
  })
6061
6069
  });
6062
6070
  };
6063
- var WorkspaceI18nProvider = function WorkspaceI18nProvider(_ref5) {
6064
- var children = _ref5.children;
6071
+ var WorkspaceI18nProvider = function WorkspaceI18nProvider(_ref4) {
6072
+ var children = _ref4.children;
6065
6073
  initWorkspaceTestI18n();
6066
6074
  return jsx(I18nextProvider, {
6067
6075
  i18n: i18n,
@@ -6132,7 +6140,7 @@ var LinkMenuConnect = function LinkMenuConnect(_ref) {
6132
6140
  var updatedMapIds = selectedMapIds.includes(mapId) ? selectedMapIds.filter(function (id) {
6133
6141
  return id !== mapId;
6134
6142
  }) : [].concat(selectedMapIds, [mapId]);
6135
- dispatch(genericActions.changeLinkedMap({
6143
+ dispatch(genericActions.updateLinkedMap({
6136
6144
  panelId: panelId,
6137
6145
  mapIds: updatedMapIds
6138
6146
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/workspace",
3
- "version": "9.35.0",
3
+ "version": "9.36.0",
4
4
  "description": "GeoWeb Workspace library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -18,8 +18,6 @@
18
18
  "@opengeoweb/snackbar": "*",
19
19
  "react-window": "^1.8.10",
20
20
  "lodash": "^4.17.21",
21
- "@redux-eggs/core": "^2.2.0",
22
- "@redux-eggs/redux-toolkit": "^2.2.0",
23
21
  "immer": "^10.0.3",
24
22
  "axios": "^1.7.7",
25
23
  "react-virtualized-auto-sizer": "^1.0.21",
@@ -1,5 +1,10 @@
1
- import { Egg } from '@redux-eggs/core';
2
- import { Store } from '@reduxjs/toolkit';
1
+ import { ListenerMiddleware, ReducersMapObject } from '@reduxjs/toolkit';
3
2
  import { WorkspaceModuleStore } from './types';
4
- declare const workspaceModuleConfig: Egg<Store<WorkspaceModuleStore>>;
3
+ export declare const workspaceReducersMap: ReducersMapObject<WorkspaceModuleStore>;
4
+ export declare const workspaceMiddlewares: ListenerMiddleware[];
5
+ declare const workspaceModuleConfig: {
6
+ id: string;
7
+ reducersMap: ReducersMapObject<WorkspaceModuleStore, import("redux").Action<any>>;
8
+ middlewares: ListenerMiddleware[];
9
+ };
5
10
  export default workspaceModuleConfig;
@@ -1 +1 @@
1
- export { store } from './store';
1
+ export { createTestWorkspaceStore } from './store';
@@ -1,2 +1,2 @@
1
- declare const store: import("@redux-eggs/core").EggExt & import("@reduxjs/toolkit/dist/configureStore").ToolkitStore<any, import("redux").AnyAction, [import("@reduxjs/toolkit").ThunkMiddleware<any, import("redux").AnyAction>]>;
2
- export { store };
1
+ import { ToolkitStore } from '@reduxjs/toolkit/dist/configureStore';
2
+ export declare const createTestWorkspaceStore: () => ToolkitStore;
@@ -143,6 +143,8 @@ export declare const getWorkspaceData: ((state: AppStore & import("@opengeoweb/s
143
143
  scope: import("./types").PresetScope | undefined;
144
144
  abstract: string | undefined;
145
145
  mosaicNode: import("react-mosaic-component").MosaicNode<string>;
146
+ isTimeScrollingEnabled: boolean;
147
+ linking: Pick<Record<string, string[]>, string>;
146
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) => {
147
149
  id: string | undefined;
148
150
  title: string;
@@ -158,6 +160,8 @@ export declare const getWorkspaceData: ((state: AppStore & import("@opengeoweb/s
158
160
  scope: import("./types").PresetScope | undefined;
159
161
  abstract: string | undefined;
160
162
  mosaicNode: import("react-mosaic-component").MosaicNode<string>;
163
+ isTimeScrollingEnabled: boolean;
164
+ linking: Pick<Record<string, string[]>, string>;
161
165
  }, {
162
166
  clearCache: () => void;
163
167
  }> & {
@@ -31,12 +31,14 @@ export interface WorkspacePreset {
31
31
  id?: string;
32
32
  title: string;
33
33
  syncGroups?: WorkspaceSyncGroup[];
34
+ isTimeScrollingEnabled?: boolean;
34
35
  views: WorkspaceViews;
35
36
  viewType?: ViewType;
36
37
  mosaicNode: MosaicNode<string>;
37
38
  minimumPaneSizePercentage?: number;
38
39
  scope?: PresetScope;
39
40
  abstract?: string;
41
+ linking?: Record<string, string[]>;
40
42
  }
41
43
  export interface WorkspaceState extends WorkspacePreset {
42
44
  isLoading?: boolean;
@@ -47,6 +49,7 @@ export interface WorkspacePresetFromBE {
47
49
  id?: string;
48
50
  title: string;
49
51
  syncGroups?: WorkspaceSyncGroup[];
52
+ linking?: Record<string, string[]>;
50
53
  views: WorkspaceViewsFromBE[];
51
54
  viewType?: ViewType;
52
55
  mosaicNode: MosaicNode<string>;
@@ -40,6 +40,7 @@ export declare const getWorkspaceActionDialogDetails: ((state: AppStore) => fals
40
40
  id?: string | undefined;
41
41
  title: string;
42
42
  syncGroups?: import("../workspace/types").WorkspaceSyncGroup[] | undefined;
43
+ linking?: Record<string, string[]> | undefined;
43
44
  viewType?: import("../workspace/types").ViewType | undefined;
44
45
  mosaicNode: import("react-mosaic-component").MosaicNode<string>;
45
46
  scope?: PresetScope | undefined;
@@ -71,6 +72,7 @@ export declare const getWorkspaceActionDialogDetails: ((state: AppStore) => fals
71
72
  id?: string | undefined;
72
73
  title: string;
73
74
  syncGroups?: import("../workspace/types").WorkspaceSyncGroup[] | undefined;
75
+ linking?: Record<string, string[]> | undefined;
74
76
  viewType?: import("../workspace/types").ViewType | undefined;
75
77
  mosaicNode: import("react-mosaic-component").MosaicNode<string>;
76
78
  scope?: PresetScope | undefined;