@opengeoweb/workspace 12.6.0 → 12.8.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
@@ -109,7 +109,9 @@ var en = {
109
109
  "workspace-dialog-confirm-reset-view-message": "The view will be reset and all changes will be lost. Are you sure you want to continue?",
110
110
  "workspace-viewpreset-success-reset": "View preset \"{{TITLE}}\" has been reset succesfully",
111
111
  "workspace-viewpreset-success-share": "View preset \"{{TITLE}}\" has been successfully shared",
112
- "workspace-viewpreset-success-unshare": "View preset \"{{TITLE}}\" has been successfully unshared"
112
+ "workspace-viewpreset-success-unshare": "View preset \"{{TITLE}}\" has been successfully unshared",
113
+ "workspace-loading-indicator-loading": "Loading",
114
+ "workspace-loading-indicator-idle": "Loaded"
113
115
  };
114
116
  var fi = {
115
117
  "workspace-menu": "Workspace menu",
@@ -190,7 +192,9 @@ var fi = {
190
192
  "workspace-dialog-confirm-reset-view-message": "ei käännetty",
191
193
  "workspace-viewpreset-success-reset": "ei käännetty",
192
194
  "workspace-viewpreset-success-share": "ei käännetty",
193
- "workspace-viewpreset-success-unshare": "ei käännetty"
195
+ "workspace-viewpreset-success-unshare": "ei käännetty",
196
+ "workspace-loading-indicator-loading": "Ladataan",
197
+ "workspace-loading-indicator-idle": "Ladattu"
194
198
  };
195
199
  var no = {
196
200
  "workspace-menu": "Arbeidsflater",
@@ -272,7 +276,9 @@ var no = {
272
276
  "workspace-dialog-confirm-reset-view-message": "Endringer i dette vinduet blir tapt. Er du sikker på at du vil fortsette?",
273
277
  "workspace-viewpreset-success-reset": "Vinduet er tilbakestilt",
274
278
  "workspace-viewpreset-success-share": "Vinduet \"{{TITLE}}\" har blitt delt",
275
- "workspace-viewpreset-success-unshare": "Vinduet \"{{TITLE}}\" deles ikke lenger"
279
+ "workspace-viewpreset-success-unshare": "Vinduet \"{{TITLE}}\" deles ikke lenger",
280
+ "workspace-loading-indicator-loading": "Laster inn",
281
+ "workspace-loading-indicator-idle": "Lastet inn"
276
282
  };
277
283
  var nl = {
278
284
  "workspace-menu": "Workspace menu",
@@ -356,7 +362,9 @@ var nl = {
356
362
  "workspace-dialog-confirm-reset-view-message": "De viewpreset zal worden hersteld en alle aanpassing zullen worden verwijderd. Weet je zeker dat je door wilt gaan?",
357
363
  "workspace-viewpreset-success-reset": "Viewpreset \"{{TITLE}}\" succesvol hersteld naar origineel",
358
364
  "workspace-viewpreset-success-share": "niet vertaald",
359
- "workspace-viewpreset-success-unshare": "niet vertaald"
365
+ "workspace-viewpreset-success-unshare": "niet vertaald",
366
+ "workspace-loading-indicator-loading": "Aan het laden",
367
+ "workspace-loading-indicator-idle": "Klaar met laden"
360
368
  };
361
369
  var workspaceTranslations = {
362
370
  en: en,
@@ -766,9 +774,6 @@ var getApiRoutes$1 = function getApiRoutes(axiosInstance) {
766
774
  var headerLocation = response == null ? void 0 : response.request.getResponseHeader('Location');
767
775
  return getIdFromUrl(headerLocation);
768
776
  });
769
- },
770
- deleteViewPreset: function deleteViewPreset(viewPresetId) {
771
- return axiosInstance["delete"]("/viewpreset/" + viewPresetId);
772
777
  }
773
778
  };
774
779
  };
@@ -1233,7 +1238,7 @@ var viewPresetsAdapter = createEntityAdapter({
1233
1238
  var initialState$2 = viewPresetsAdapter.getInitialState();
1234
1239
  var warningsPresetChangeActions = [publicWarningActions.setWarningFilters];
1235
1240
  var syncGroupChangeActions = [syncGroupsActions.syncGroupRemoveTarget, syncGroupsActions.syncGroupAddTarget];
1236
- 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];
1241
+ 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.setAutoTimestepLayerId, mapActions.setAutoUpdateLayerId, 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];
1237
1242
  var timeSeriesPresetChangeActions = [timeSeriesActions.addParameter, timeSeriesActions.addPlot, timeSeriesActions.deleteParameter, timeSeriesActions.deletePlot, timeSeriesActions.moveParameter, timeSeriesActions.movePlot, timeSeriesActions.toggleParameter, timeSeriesActions.togglePlot, timeSeriesActions.patchParameter, timeSeriesActions.updateTitle];
1238
1243
  var supportedMapActionOrigins = [layerTypes.LayerActionOrigin.layerManager, layerTypes.LayerActionOrigin.wmsLoader, mapEnums.MapActionOrigin.map];
1239
1244
  var supportedTimeSeriesActionOrigins = [TimeSeriesTypes.TimeSeriesActionOrigin.timeSeriesManager, TimeSeriesTypes.TimeSeriesActionOrigin.timeSeriesSelect];
@@ -2036,7 +2041,7 @@ var slice$1 = createSlice({
2036
2041
  draft.hasChanges = false;
2037
2042
  draft.scope = action.payload.scope || 'user';
2038
2043
  }
2039
- if (action.payload.action === WorkspacePresetAction.EDIT) {
2044
+ if (action.payload.action === WorkspacePresetAction.EDIT && action.payload.workspaceId === draft.id) {
2040
2045
  draft.title = action.payload.title;
2041
2046
  draft["abstract"] = action.payload["abstract"];
2042
2047
  }
@@ -2163,7 +2168,7 @@ var getViewPresetActiveId = createSelector(getViewPresetById, function (_store,
2163
2168
  }, function (viewPreset) {
2164
2169
  return viewPreset == null ? void 0 : viewPreset.activeViewPresetId;
2165
2170
  }, selectorMemoizationOptions);
2166
- var getViewPresetPanelId = createSelector(getViewPresets, function (store, mapId) {
2171
+ createSelector(getViewPresets, function (store, mapId) {
2167
2172
  return mapId;
2168
2173
  }, function (viewPresets, mapId) {
2169
2174
  var _viewPresets$find$pan, _viewPresets$find;
@@ -4784,11 +4789,6 @@ var getApiRoutes = function getApiRoutes(axiosInstance) {
4784
4789
  return axiosInstance.post("/viewpreset/", data).then(function () {
4785
4790
  return null;
4786
4791
  });
4787
- },
4788
- deleteViewPreset: function deleteViewPreset(presetId) {
4789
- // eslint-disable-next-line no-console
4790
- console.log('api: delete view preset', presetId);
4791
- return axiosInstance["delete"]("/viewpreset/" + presetId);
4792
4792
  }
4793
4793
  };
4794
4794
  };
@@ -5282,6 +5282,9 @@ var selectors = workspaceListAdapter.getSelectors(function (state) {
5282
5282
  };
5283
5283
  });
5284
5284
  var getWorkspaceList = selectors.selectAll;
5285
+ var getWorkspacePresetFromList = function getWorkspacePresetFromList(store, id) {
5286
+ return selectors.selectById(store, id);
5287
+ };
5285
5288
  var getIsWorkspaceListFetching = createSelector(getWorkspaceListStore, function (store) {
5286
5289
  return store;
5287
5290
  }, function (state) {
@@ -6350,6 +6353,12 @@ var updateViewPreset = function updateViewPreset(viewpresetId, data, auth) {
6350
6353
  body: JSON.stringify(data)
6351
6354
  }).then(handleResponse);
6352
6355
  };
6356
+ var deleteViewPreset = function deleteViewPreset(viewPresetId, auth) {
6357
+ return fetch(presetBaseUrl$1 + "/viewpreset/" + viewPresetId, {
6358
+ method: 'DELETE',
6359
+ headers: getHeaders(auth)
6360
+ }).then(handleResponse);
6361
+ };
6353
6362
 
6354
6363
  var WORKSPACE_SELECT_LIST_ROW_HEIGHT = 46;
6355
6364
  var getPresetIcon = function getPresetIcon(preset) {
@@ -7058,13 +7067,23 @@ var LoadingIndicatorConnect = function LoadingIndicatorConnect(_ref) {
7058
7067
  var isLoading = useSelector(function (store) {
7059
7068
  return loadingIndicatorSelectors.isLoading(store, panelId);
7060
7069
  });
7061
- return isLoading ? jsx(CloudLoading, {
7062
- "data-testid": "cloudicon-loading",
7063
- style: {
7064
- fill: '#186DFF'
7065
- }
7066
- }) : jsx(CloudIdle, {
7067
- "data-testid": "cloudicon-idle"
7070
+ var _useWorkspaceTranslat = useWorkspaceTranslation(),
7071
+ t = _useWorkspaceTranslat.t;
7072
+ return jsx(CustomTooltip, {
7073
+ title: isLoading ? t('workspace-loading-indicator-loading') : t('workspace-loading-indicator-idle'),
7074
+ children: jsx("span", {
7075
+ style: {
7076
+ height: '100%'
7077
+ },
7078
+ children: isLoading ? jsx(CloudLoading, {
7079
+ "data-testid": "cloudicon-loading",
7080
+ style: {
7081
+ fill: '#186DFF'
7082
+ }
7083
+ }) : jsx(CloudIdle, {
7084
+ "data-testid": "cloudicon-idle"
7085
+ })
7086
+ })
7068
7087
  });
7069
7088
  };
7070
7089
 
@@ -7359,6 +7378,12 @@ var LinkMenuConnect = function LinkMenuConnect(_ref) {
7359
7378
  var viewComponentType = useSelector(function (store) {
7360
7379
  return getViewComponentType(store, panelId);
7361
7380
  });
7381
+ var sharedFeature = useSelector(function (store) {
7382
+ return genericSelectors.getSelectedFeature(store.syncGroups, panelId);
7383
+ });
7384
+ var mapPinLocation = useSelector(function (store) {
7385
+ return mapSelectors.getPinLocation(store, selectedMapIds[0] || '');
7386
+ });
7362
7387
  var handleLinkViews = function handleLinkViews(event) {
7363
7388
  setAnchorEl(event.currentTarget);
7364
7389
  };
@@ -7373,6 +7398,25 @@ var LinkMenuConnect = function LinkMenuConnect(_ref) {
7373
7398
  panelId: panelId,
7374
7399
  mapIds: updatedMapIds
7375
7400
  }));
7401
+ // Sync pin to newly added map for TimeSeries components
7402
+ if (!selectedMapIds.includes(mapId) && viewComponentType === 'TimeSeries') {
7403
+ // Observation station
7404
+ if (sharedFeature) {
7405
+ dispatch(mapActions.setMapPinLocation({
7406
+ mapId: mapId,
7407
+ mapPinLocation: {
7408
+ lon: sharedFeature.lon,
7409
+ lat: sharedFeature.lat
7410
+ }
7411
+ }));
7412
+ // Grid
7413
+ } else if (mapPinLocation) {
7414
+ dispatch(mapActions.setMapPinLocation({
7415
+ mapId: mapId,
7416
+ mapPinLocation: mapPinLocation
7417
+ }));
7418
+ }
7419
+ }
7376
7420
  };
7377
7421
  return jsxs(Fragment, {
7378
7422
  children: [linkComponentTypesConstants.supportedComponentTypesForLinking.includes(viewComponentType) && jsx(CustomIconButton, {
@@ -7461,7 +7505,8 @@ var WorkspaceControls = function WorkspaceControls(_ref) {
7461
7505
  createNode = _ref.createNode,
7462
7506
  path = _ref.path,
7463
7507
  _ref$shouldPreventClo = _ref.shouldPreventCloseView,
7464
- shouldPreventCloseView = _ref$shouldPreventClo === void 0 ? false : _ref$shouldPreventClo;
7508
+ shouldPreventCloseView = _ref$shouldPreventClo === void 0 ? false : _ref$shouldPreventClo,
7509
+ removeLinkedMap = _ref.removeLinkedMap;
7465
7510
  var confirmDialog = useConfirmationDialog();
7466
7511
  var _React$useContext = React.useContext(MosaicContext),
7467
7512
  actions = _React$useContext.mosaicActions;
@@ -7497,7 +7542,7 @@ var WorkspaceControls = function WorkspaceControls(_ref) {
7497
7542
  while (1) switch (_context.prev = _context.next) {
7498
7543
  case 0:
7499
7544
  if (!shouldPreventCloseView) {
7500
- _context.next = 6;
7545
+ _context.next = 7;
7501
7546
  break;
7502
7547
  }
7503
7548
  _context.next = 3;
@@ -7508,11 +7553,13 @@ var WorkspaceControls = function WorkspaceControls(_ref) {
7508
7553
  });
7509
7554
  case 3:
7510
7555
  actions.remove(path);
7511
- _context.next = 7;
7556
+ removeLinkedMap(panelId);
7557
+ _context.next = 9;
7512
7558
  break;
7513
- case 6:
7514
- actions.remove(path);
7515
7559
  case 7:
7560
+ actions.remove(path);
7561
+ removeLinkedMap(panelId);
7562
+ case 9:
7516
7563
  case "end":
7517
7564
  return _context.stop();
7518
7565
  }
@@ -7625,6 +7672,9 @@ var WorkspaceTileConnect = /*#__PURE__*/React.memo(function (_ref) {
7625
7672
  panelId: panelId
7626
7673
  }));
7627
7674
  }, [dispatch]);
7675
+ var removeLinkedMap = React.useCallback(function (panelId) {
7676
+ dispatch(genericActions.removeLinkedMap(panelId));
7677
+ }, [dispatch]);
7628
7678
  var toggleViewPresetDialog = React.useCallback(function (_ref4) {
7629
7679
  var panelId = _ref4.panelId,
7630
7680
  isViewPresetDialogOpen = _ref4.isViewPresetDialogOpen;
@@ -7655,28 +7705,16 @@ var WorkspaceTileConnect = /*#__PURE__*/React.memo(function (_ref) {
7655
7705
  });
7656
7706
  };
7657
7707
  // eslint-disable-next-line react-hooks/exhaustive-deps
7658
- }, [unregisterView, registerView]);
7659
- var connectedMap = useSelector(function (store) {
7660
- var _initialProps$plotPre;
7661
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
7662
- var initialProps = view == null ? void 0 : view.initialProps;
7663
- var mapId = initialProps == null || (_initialProps$plotPre = initialProps.plotPreset) == null ? void 0 : _initialProps$plotPre.mapId;
7664
- if (mapId) {
7665
- var viewPresetPanelId = getViewPresetPanelId(store, mapId);
7666
- return viewPresetPanelId && viewPresetPanelId.length > 0 ? viewPresetPanelId : undefined;
7667
- }
7668
- return undefined;
7669
- });
7708
+ }, [registerView, unregisterView]);
7670
7709
  // generic componentsLookUp
7671
7710
  var genericComponentsLookupResult = React.useMemo(function () {
7672
7711
  return componentsLookUp({
7673
7712
  title: title,
7674
7713
  id: mosaicNodeId,
7675
7714
  componentType: view == null ? void 0 : view.componentType,
7676
- initialProps: view == null ? void 0 : view.initialProps,
7677
- connectedMap: connectedMap
7715
+ initialProps: view == null ? void 0 : view.initialProps
7678
7716
  });
7679
- }, [componentsLookUp, connectedMap, mosaicNodeId, title, view == null ? void 0 : view.componentType, view == null ? void 0 : view.initialProps]);
7717
+ }, [componentsLookUp, mosaicNodeId, title, view == null ? void 0 : view.componentType, view == null ? void 0 : view.initialProps]);
7680
7718
  // default componentsLookUp
7681
7719
  var defaultComponentsLookupResult = React.useMemo(function () {
7682
7720
  return defaultComponentsLookUp({
@@ -7696,7 +7734,8 @@ var WorkspaceTileConnect = /*#__PURE__*/React.memo(function (_ref) {
7696
7734
  panelId: mosaicNodeId,
7697
7735
  createNode: createNode,
7698
7736
  path: path,
7699
- shouldPreventCloseView: shouldPreventCloseView
7737
+ shouldPreventCloseView: shouldPreventCloseView,
7738
+ removeLinkedMap: removeLinkedMap
7700
7739
  }),
7701
7740
  children: [isViewPresetsFetching && jsx(LinearProgress, {
7702
7741
  "data-testid": "loading-bar",
@@ -8391,7 +8430,8 @@ var WorkspaceOptionsConnect = function WorkspaceOptionsConnect(_ref) {
8391
8430
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
8392
8431
  t = _useWorkspaceTranslat.t;
8393
8432
  var _useAuthenticationCon = useAuthenticationContext(),
8394
- currentRole = _useAuthenticationCon.currentRole;
8433
+ currentRole = _useAuthenticationCon.currentRole,
8434
+ auth = _useAuthenticationCon.auth;
8395
8435
  var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN.name;
8396
8436
  var _useAuthenticationCon2 = useAuthenticationContext(),
8397
8437
  isLoggedIn = _useAuthenticationCon2.isLoggedIn;
@@ -8404,12 +8444,17 @@ var WorkspaceOptionsConnect = function WorkspaceOptionsConnect(_ref) {
8404
8444
  var workspaceData = useSelector(function (store) {
8405
8445
  return getWorkspaceData(store);
8406
8446
  });
8447
+ var currentWorkspacePreset = useSelector(function (store) {
8448
+ return workspaceData.id ? getWorkspacePresetFromList(store, workspaceData.id) : undefined;
8449
+ });
8450
+ var workspaceCreator = (currentWorkspacePreset == null ? void 0 : currentWorkspacePreset.username) || '';
8407
8451
  var viewIds = useSelector(function (store) {
8408
8452
  return getViewIds(store);
8409
8453
  });
8410
8454
  var isNew = workspaceId === undefined || workspaceId === '';
8411
8455
  var fullTitle = getPresetTitle(title, hasChanges, isNew, t);
8412
8456
  var isUserPreset = workspaceScope === 'user';
8457
+ var isUserPresetCreator = (auth == null ? void 0 : auth.username) === workspaceCreator;
8413
8458
  React.useEffect(function () {
8414
8459
  setDocumentTitle(fullTitle, appTitle);
8415
8460
  }, [fullTitle, appTitle]);
@@ -8490,7 +8535,7 @@ var WorkspaceOptionsConnect = function WorkspaceOptionsConnect(_ref) {
8490
8535
  if (isNew) {
8491
8536
  return undefined; // to disable delete option
8492
8537
  }
8493
- if (isUserPreset) {
8538
+ if (isUserPreset && isUserPresetCreator) {
8494
8539
  return onDelete;
8495
8540
  }
8496
8541
  return isAdmin ? onDeleteSystemPreset : undefined;
@@ -8499,7 +8544,7 @@ var WorkspaceOptionsConnect = function WorkspaceOptionsConnect(_ref) {
8499
8544
  if (isNew) {
8500
8545
  return undefined;
8501
8546
  }
8502
- if (isUserPreset) {
8547
+ if (isUserPreset && isUserPresetCreator) {
8503
8548
  return onSave;
8504
8549
  }
8505
8550
  return isAdmin ? onSaveSystemPreset : undefined;
@@ -8508,10 +8553,13 @@ var WorkspaceOptionsConnect = function WorkspaceOptionsConnect(_ref) {
8508
8553
  return isAdmin ? onSaveSystemPresetAs : onSaveAs;
8509
8554
  };
8510
8555
  var handleEdit = function handleEdit() {
8511
- if (isAdmin && !isNew) {
8556
+ if (isNew) {
8557
+ return undefined;
8558
+ }
8559
+ if (isAdmin) {
8512
8560
  return onEdit;
8513
8561
  }
8514
- return isUserPreset ? onEdit : undefined;
8562
+ return isUserPreset && isUserPresetCreator ? onEdit : undefined;
8515
8563
  };
8516
8564
  return jsx(WorkspaceOptions, {
8517
8565
  hasChanges: hasChanges,
@@ -8866,10 +8914,10 @@ var WorkspacePresetsFormDialog = function WorkspacePresetsFormDialog(_ref) {
8866
8914
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
8867
8915
  t = _useWorkspaceTranslat.t;
8868
8916
  React__default.useEffect(function () {
8869
- if (action !== WorkspacePresetAction.SAVE_SYSTEM_PRESET_AS && action !== WorkspacePresetAction.SAVE_SYSTEM_PRESET && action !== WorkspacePresetAction.SAVE_AS && action !== WorkspacePresetAction.SAVE) {
8917
+ if (isOpen) {
8870
8918
  reset(formValues);
8871
8919
  }
8872
- }, [formValues, reset, action]);
8920
+ }, [formValues, reset, isOpen]);
8873
8921
  var getConfirmLabel = function getConfirmLabel(action) {
8874
8922
  switch (action) {
8875
8923
  case WorkspacePresetAction.DELETE:
@@ -9356,7 +9404,8 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
9356
9404
  onSuccess = _ref.onSuccess,
9357
9405
  onClose = _ref.onClose,
9358
9406
  title = _ref.title,
9359
- onReset = _ref.onReset;
9407
+ onReset = _ref.onReset,
9408
+ onDelete = _ref.onDelete;
9360
9409
  var _useFormContext = useFormContext(),
9361
9410
  handleFormSubmit = _useFormContext.handleSubmit,
9362
9411
  reset = _useFormContext.reset;
@@ -9432,7 +9481,9 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
9432
9481
  return _context.abrupt("break", 31);
9433
9482
  case 14:
9434
9483
  _context.next = 16;
9435
- return api.deleteViewPreset(viewPresetId);
9484
+ return onDelete({
9485
+ id: viewPresetId
9486
+ });
9436
9487
  case 16:
9437
9488
  handleSuccess(viewPresetId);
9438
9489
  return _context.abrupt("break", 31);
@@ -9552,6 +9603,37 @@ var ViewPresetsFormDialogWrapper = function ViewPresetsFormDialogWrapper(_ref5)
9552
9603
  });
9553
9604
  };
9554
9605
 
9606
+ /* *
9607
+ * Licensed under the Apache License, Version 2.0 (the "License");
9608
+ * you may not use this file except in compliance with the License.
9609
+ * You may obtain a copy of the License at
9610
+ *
9611
+ * http://www.apache.org/licenses/LICENSE-2.0
9612
+ *
9613
+ * Unless required by applicable law or agreed to in writing, software
9614
+ * distributed under the License is distributed on an "AS IS" BASIS,
9615
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9616
+ * See the License for the specific language governing permissions and
9617
+ * limitations under the License.
9618
+ *
9619
+ * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
9620
+ * Copyright 2025 - Finnish Meteorological Institute (FMI)
9621
+ * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
9622
+ * */
9623
+ var useDeleteViewPreset = function useDeleteViewPreset() {
9624
+ var _useAuthenticationCon = useAuthenticationContext(),
9625
+ auth = _useAuthenticationCon.auth;
9626
+ return useMutation({
9627
+ mutationFn: function mutationFn(_ref) {
9628
+ var id = _ref.id;
9629
+ if (!auth) {
9630
+ throw new Error('Authentication context not found');
9631
+ }
9632
+ return deleteViewPreset(id, auth);
9633
+ }
9634
+ });
9635
+ };
9636
+
9555
9637
  var ViewPresetsFormDialogConnect = function ViewPresetsFormDialogConnect(_ref) {
9556
9638
  var _ref$scope = _ref.scope,
9557
9639
  scope = _ref$scope === void 0 ? 'user' : _ref$scope;
@@ -9563,6 +9645,8 @@ var ViewPresetsFormDialogConnect = function ViewPresetsFormDialogConnect(_ref) {
9563
9645
  var viewComponentType = useSelector(function (store) {
9564
9646
  return getViewComponentType(store, panelId);
9565
9647
  });
9648
+ var _useDeleteViewPreset = useDeleteViewPreset(),
9649
+ deleteViewPreset = _useDeleteViewPreset.mutateAsync;
9566
9650
  var onReset = React__default.useCallback(function (viewPresetId) {
9567
9651
  dispatch(viewPresetActions.selectViewPreset({
9568
9652
  panelId: panelId,
@@ -9596,7 +9680,8 @@ var ViewPresetsFormDialogConnect = function ViewPresetsFormDialogConnect(_ref) {
9596
9680
  action: (dialogOptions == null ? void 0 : dialogOptions.action) || PresetAction.SAVE,
9597
9681
  title: (dialogOptions == null ? void 0 : dialogOptions.title) || '',
9598
9682
  viewPresetId: (dialogOptions == null ? void 0 : dialogOptions.viewPresetId) || '',
9599
- onReset: onReset
9683
+ onReset: onReset,
9684
+ onDelete: deleteViewPreset
9600
9685
  });
9601
9686
  };
9602
9687
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/workspace",
3
- "version": "12.6.0",
3
+ "version": "12.8.0",
4
4
  "description": "GeoWeb Workspace library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -9,30 +9,30 @@
9
9
  },
10
10
  "dependencies": {
11
11
  "react-redux": "^9.2.0",
12
- "@opengeoweb/shared": "12.6.0",
13
- "@opengeoweb/store": "12.6.0",
14
- "@opengeoweb/api": "12.6.0",
12
+ "@opengeoweb/shared": "12.8.0",
13
+ "@opengeoweb/store": "12.8.0",
14
+ "@opengeoweb/api": "12.8.0",
15
15
  "react-hook-form": "^7.50.1",
16
- "@opengeoweb/theme": "12.6.0",
16
+ "@opengeoweb/theme": "12.8.0",
17
17
  "@reduxjs/toolkit": "^2.6.1",
18
- "@opengeoweb/snackbar": "12.6.0",
18
+ "@opengeoweb/snackbar": "12.8.0",
19
19
  "react-window": "^1.8.10",
20
20
  "lodash": "^4.17.21",
21
21
  "axios": "^1.7.7",
22
22
  "react-virtualized-auto-sizer": "^1.0.21",
23
23
  "react-mosaic-component": "^6.1.0",
24
- "@opengeoweb/form-fields": "12.6.0",
25
- "@opengeoweb/timeseries": "12.6.0",
26
- "@opengeoweb/authentication": "12.6.0",
27
- "@opengeoweb/core": "12.6.0",
28
- "@opengeoweb/taf": "12.6.0",
29
- "@opengeoweb/sigmet-airmet": "12.6.0",
30
- "@opengeoweb/warnings": "12.6.0",
31
- "@opengeoweb/spaceweather": "12.6.0",
24
+ "@opengeoweb/form-fields": "12.8.0",
25
+ "@opengeoweb/timeseries": "12.8.0",
26
+ "@opengeoweb/authentication": "12.8.0",
27
+ "@opengeoweb/core": "12.8.0",
28
+ "@opengeoweb/taf": "12.8.0",
29
+ "@opengeoweb/sigmet-airmet": "12.8.0",
30
+ "@opengeoweb/warnings": "12.8.0",
31
+ "@opengeoweb/spaceweather": "12.8.0",
32
32
  "i18next": "^25.0.1",
33
33
  "react-i18next": "^15.1.1",
34
34
  "@mui/material": "^7.0.1",
35
- "@opengeoweb/webmap-react": "12.6.0",
35
+ "@opengeoweb/webmap-react": "12.8.0",
36
36
  "@tanstack/react-query": "^5.69.2"
37
37
  },
38
38
  "peerDependencies": {
@@ -43,5 +43,5 @@
43
43
  "module": "./index.esm.js",
44
44
  "type": "module",
45
45
  "main": "./index.esm.js",
46
- "types": "./index.esm.d.ts"
46
+ "types": "./index.d.ts"
47
47
  }
@@ -2,3 +2,4 @@ import { Credentials } from '@opengeoweb/api';
2
2
  import { ViewPresetListItem } from '../../store/workspace/types';
3
3
  export declare const getViewPreset: (viewpresetId: string, auth: Credentials) => Promise<ViewPresetListItem>;
4
4
  export declare const updateViewPreset: (viewpresetId: string, data: ViewPresetListItem, auth: Credentials) => Promise<null>;
5
+ export declare const deleteViewPreset: (viewPresetId: string, auth: Credentials) => Promise<void>;
@@ -0,0 +1 @@
1
+ export declare const viewPresetsEndpoints: import("msw").HttpHandler[];
@@ -0,0 +1,7 @@
1
+ import { UseMutationResult } from '@tanstack/react-query';
2
+ export declare const useDeleteViewPreset: () => UseMutationResult<void, // return type from mutationFn
3
+ unknown, // error type (can be more specific if needed)
4
+ {
5
+ id: string;
6
+ }, // variables (input argument)
7
+ unknown>;
@@ -12,6 +12,13 @@ export declare const GetViewPresetsError: {
12
12
  export declare const DeleteViewPresetError: {
13
13
  (): React.ReactElement;
14
14
  storyName: string;
15
+ parameters: {
16
+ msw: {
17
+ handlers: {
18
+ viewPresets: import("msw").HttpHandler[];
19
+ };
20
+ };
21
+ };
15
22
  };
16
23
  export declare const DuplicateViewPresetError: {
17
24
  (): React.ReactElement;
@@ -10,6 +10,9 @@ export interface ViewPresetsFormDialogProps {
10
10
  onSuccess: (action: PresetAction, presetId: string, title: string, abstract: string) => void;
11
11
  onClose: () => void;
12
12
  onReset: (viewPresetId: string) => void;
13
+ onDelete: (variables: {
14
+ id: string;
15
+ }) => Promise<void>;
13
16
  }
14
17
  declare const ViewPresetsFormDialogWrapper: React.FC<ViewPresetsFormDialogProps>;
15
18
  export default ViewPresetsFormDialogWrapper;
@@ -11,4 +11,14 @@ export declare const DeleteDemoDarkTheme: Story;
11
11
  export declare const EditDemoLightTheme: Story;
12
12
  export declare const EditDemoDarkTheme: Story;
13
13
  export declare const SaveAsWithError: () => React.ReactElement;
14
- export declare const DeleteWithError: () => React.ReactElement;
14
+ export declare const DeleteWithError: {
15
+ (): React.ReactElement;
16
+ storyName: string;
17
+ parameters: {
18
+ msw: {
19
+ handlers: {
20
+ viewPresets: import("msw").HttpHandler[];
21
+ };
22
+ };
23
+ };
24
+ };
@@ -5,6 +5,7 @@ interface WorkspaceControlsProps {
5
5
  path: MosaicBranch[];
6
6
  createNode?: () => MosaicNode<string>;
7
7
  shouldPreventCloseView?: boolean;
8
+ removeLinkedMap: (panelId: string) => void;
8
9
  }
9
10
  declare const WorkspaceControls: React.FC<WorkspaceControlsProps>;
10
11
  export default WorkspaceControls;
@@ -5,7 +5,7 @@ export declare const getViewPresetsList: (state: AppStore) => ViewPresetListItem
5
5
  id: string;
6
6
  title: string;
7
7
  date: string;
8
- scope: import("dist/libs/shared/src").SystemScope;
8
+ scope: import("@opengeoweb/shared").SystemScope;
9
9
  abstract?: string | undefined;
10
10
  username?: string | undefined;
11
11
  };