@opengeoweb/workspace 14.5.2 → 15.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/index.esm.js +1100 -994
  2. package/package.json +17 -17
  3. package/src/index.d.ts +1 -0
  4. package/src/lib/WorkspaceAdmin.stories.d.ts +8 -1
  5. package/src/lib/api/utils.d.ts +2 -0
  6. package/src/lib/api/{viewpresets-api → viewpreset-api}/api.d.ts +3 -0
  7. package/src/lib/api/{viewpresets-api → viewpreset-api}/fakeApi/mockData.d.ts +22 -0
  8. package/src/lib/api/{viewpresets-api → viewpreset-api}/hooks.d.ts +3 -0
  9. package/src/lib/api/viewpreset-api/queryOptions.d.ts +27 -0
  10. package/src/lib/api/workspace-api/api.d.ts +4 -1
  11. package/src/lib/api/workspace-api/hooks.d.ts +0 -5
  12. package/src/lib/api/workspace-api/queryOptions.d.ts +28 -0
  13. package/src/lib/components/LabelsPanel/PresetLabelsPanel.d.ts +1 -1
  14. package/src/lib/components/LabelsPanel/PresetsLabelsPanelWrapper.d.ts +11 -0
  15. package/src/lib/components/LabelsPanel/PresetsLabelsPanelWrapper.spec.d.ts +1 -0
  16. package/src/lib/components/ViewPresetMenu/ViewPresetsError.stories.d.ts +6 -3
  17. package/src/lib/components/ViewPresetsFormDialog/ViewPresetsForm.d.ts +0 -2
  18. package/src/lib/components/ViewPresetsFormDialog/ViewPresetsFormDialog.d.ts +1 -2
  19. package/src/lib/components/ViewPresetsFormDialog/ViewPresetsFormDialogConnect.d.ts +0 -2
  20. package/src/lib/components/WorkspaceDetail/WorkspaceDetail.stories.d.ts +2 -6
  21. package/src/lib/components/WorkspaceDetail/WorkspaceDetailError.stories.d.ts +9 -4
  22. package/src/lib/components/WorkspaceMenu/WorkspaceMenu.stories.d.ts +1 -0
  23. package/src/lib/components/WorkspacePresetsFormDialog/WorkspacePresetsForm.d.ts +0 -2
  24. package/src/lib/components/WorkspacePresetsFormDialog/WorkspacePresetsFormDialog.d.ts +1 -2
  25. package/src/lib/components/WorkspaceSelectList/WorkspaceMenuLabelsWrapper.d.ts +1 -2
  26. package/src/lib/components/WorkspaceSelectList/WorkspaceSelectListRow.d.ts +1 -1
  27. package/src/lib/store/store.d.ts +1 -0
  28. package/src/lib/store/viewPresets/listener.d.ts +2 -2
  29. package/src/lib/store/viewPresets/reducer.d.ts +3 -0
  30. package/src/lib/store/viewPresets/types.d.ts +3 -0
  31. package/src/lib/store/workspace/reducer.d.ts +1 -0
  32. package/src/lib/store/workspaceList/listener.d.ts +2 -2
  33. package/src/lib/store/workspaceList/selectors.d.ts +8 -8
  34. package/src/lib/storyUtils/StoryWrapper.d.ts +4 -2
  35. package/src/lib/utils/api.d.ts +1 -11
  36. package/src/lib/utils/fakeApi.stories.d.ts +1 -3
  37. package/src/lib/api/viewpresets-api/queryOptions.d.ts +0 -12
  38. /package/src/lib/api/{viewpresets-api → viewpreset-api}/fakeApi/fakeApi.d.ts +0 -0
package/index.esm.js CHANGED
@@ -3,11 +3,12 @@ import { createApiInstance, createNonAuthApiInstance, getApi, getHeaders, handle
3
3
  import { syncGroupsTypes, syncGroupsActions, layerActions, mapActions, uiActions, genericActions, layerTypes, mapEnums, selectorMemoizationOptions, genericSelectors, mapSelectors, syncGroupsSelectors, routerActions, createViewObjectForNewMap, mapListener, serviceListener, layersListener, syncGroupsListener, openlayersListener, uiReducer, loadingIndicatorReducer, syncGroupsReducer, layerReducer, serviceReducer, mapReducer, uiTypes, linkComponentTypesConstants, loadingIndicatorSelectors, uiSelectors } from '@opengeoweb/store';
4
4
  import { chunk, union, cloneDeep, pick, isEmpty, isEqual, isString } from 'lodash';
5
5
  import { getLeaves, createBalancedTreeFromLeaves, MosaicContext, getAndAssertNodeAtPathExists, MosaicWindow, Mosaic } from 'react-mosaic-component';
6
+ import { sessionStorageProvider, getAxiosErrorMessage, isAxiosError, isAxiosAuthError, safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, ConfirmationServiceProvider, CustomIconButton, useConfirmationDialog, usePrevious, AlertBanner, CustomAccordion, CustomTooltip, dateUtils, SystemScope, SearchHighlight, ToggleMenu, SearchField, Filter, LastUpdateTime, renderCounter, CustomDialog, ToolContainer, CustomToggleButton, ConfirmationButtons } from '@opengeoweb/shared';
7
+ import { queryOptions, useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
8
+ import { soundingsActions, SoundingsTypes, soundingsSelectors, soundingsReducer } from '@opengeoweb/soundings';
6
9
  import { timeSeriesActions, TimeSeriesTypes, timeSeriesSelectors, timeSeriesReducer } from '@opengeoweb/time-series';
7
10
  import { publicWarningActions, publicWarningsSelectors, warningsTranslations, WARN_NAMESPACE } from '@opengeoweb/warnings';
8
11
  import { snackbarTypes, snackbarActions, snackbarListener, snackbarReducer, SnackbarWrapperConnect } from '@opengeoweb/snackbar';
9
- import { queryOptions, useQuery, useMutation } from '@tanstack/react-query';
10
- import { sessionStorageProvider, getAxiosErrorMessage, isAxiosError, isAxiosAuthError, safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, ConfirmationServiceProvider, CustomIconButton, useConfirmationDialog, usePrevious, AlertBanner, CustomAccordion, CustomTooltip, dateUtils, SystemScope, SearchHighlight, ToggleMenu, SearchField, Filter, LastUpdateTime, renderCounter, CustomDialog, ToolContainer, CustomToggleButton, ConfirmationButtons } from '@opengeoweb/shared';
11
12
  import { isAxiosError as isAxiosError$1 } from 'axios';
12
13
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
13
14
  import { useTranslation, I18nextProvider } from 'react-i18next';
@@ -24,6 +25,7 @@ import 'react-mosaic-component/react-mosaic-component.css';
24
25
  import { useFormContext, useWatch, useForm, FormProvider } from 'react-hook-form';
25
26
  import AutoSizer from 'react-virtualized-auto-sizer';
26
27
  import { FixedSizeList } from 'react-window';
28
+ import { http, HttpResponse, delay } from 'msw';
27
29
 
28
30
  var en = {
29
31
  "workspace-menu": "Workspace menu",
@@ -143,7 +145,10 @@ var en = {
143
145
  "workspace-labels-dataSource": "Data Source",
144
146
  "workspace-labels-viewType": "View Type",
145
147
  "workspace-presets-form-active-labels": "Active labels ({{count}})",
146
- "workspace-label-active": "ACTIVE"
148
+ "workspace-label-active": "ACTIVE",
149
+ "fetch-config-error-retry": "Retry",
150
+ "fetch-config-error-title": "An error has occured whilst fetching the label configuration",
151
+ "fetch-config-no-labels-available": "There are no labels available, please contact your administrator"
147
152
  };
148
153
  var fi = {
149
154
  "workspace-menu": "Workspace menu",
@@ -492,7 +497,10 @@ var nl = {
492
497
  "workspace-labels-dataSource": "niet vertaald",
493
498
  "workspace-labels-viewType": "niet vertaald",
494
499
  "workspace-presets-form-active-labels": "niet vertaald ({{count}})",
495
- "workspace-label-active": "ACTIVE"
500
+ "workspace-label-active": "ACTIVE",
501
+ "fetch-config-error-retry": "Opnieuw proberen",
502
+ "fetch-config-error-title": "Het ophalen van de label configuratie is mislukt",
503
+ "fetch-config-no-labels-available": "Er zijn geen labels beschikbaar, neem contact op met de administrator"
496
504
  };
497
505
  var workspaceTranslations = {
498
506
  en: en,
@@ -504,11 +512,6 @@ var workspaceTranslations = {
504
512
  function _OverloadYield(e, d) {
505
513
  this.v = e, this.k = d;
506
514
  }
507
- function _arrayLikeToArray(r, a) {
508
- (null == a || a > r.length) && (a = r.length);
509
- for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
510
- return n;
511
- }
512
515
  function asyncGeneratorStep(n, t, e, r, o, a, c) {
513
516
  try {
514
517
  var i = n[a](c),
@@ -534,23 +537,6 @@ function _asyncToGenerator(n) {
534
537
  });
535
538
  };
536
539
  }
537
- function _createForOfIteratorHelperLoose(r, e) {
538
- var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
539
- if (t) return (t = t.call(r)).next.bind(t);
540
- if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) {
541
- t && (r = t);
542
- var o = 0;
543
- return function () {
544
- return o >= r.length ? {
545
- done: true
546
- } : {
547
- done: false,
548
- value: r[o++]
549
- };
550
- };
551
- }
552
- throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
553
- }
554
540
  function _objectDestructuringEmpty(t) {
555
541
  if (null == t) throw new TypeError("Cannot destructure " + t);
556
542
  }
@@ -738,13 +724,6 @@ function _regeneratorValues(e) {
738
724
  }
739
725
  throw new TypeError(typeof e + " is not iterable");
740
726
  }
741
- function _unsupportedIterableToArray(r, a) {
742
- if (r) {
743
- if ("string" == typeof r) return _arrayLikeToArray(r, a);
744
- var t = {}.toString.call(r).slice(8, -1);
745
- return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
746
- }
747
- }
748
727
  function _regeneratorRuntime() {
749
728
 
750
729
  var r = _regenerator(),
@@ -814,10 +793,38 @@ function _regeneratorRuntime() {
814
793
  })();
815
794
  }
816
795
 
817
- var API_NAME = 'workspacepresets';
796
+ /* *
797
+ * Licensed under the Apache License, Version 2.0 (the "License");
798
+ * you may not use this file except in compliance with the License.
799
+ * You may obtain a copy of the License at
800
+ *
801
+ * http://www.apache.org/licenses/LICENSE-2.0
802
+ *
803
+ * Unless required by applicable law or agreed to in writing, software
804
+ * distributed under the License is distributed on an "AS IS" BASIS,
805
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
806
+ * See the License for the specific language governing permissions and
807
+ * limitations under the License.
808
+ *
809
+ * Copyright 2026 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
810
+ * Copyright 2026 - Finnish Meteorological Institute (FMI)
811
+ * Copyright 2026 - The Norwegian Meteorological Institute (MET Norway)
812
+ * */
813
+ /*
814
+ configureLibraryDefaults([LIB_KEY], {
815
+ staleTime: 5 * 60 * 1000,
816
+ });
817
+ */
818
+ var LIB_KEY = 'workspace-lib';
819
+ var getPresetBaseUrl = function getPresetBaseUrl() {
820
+ var config = sessionStorageProvider.getConfig();
821
+ return (config == null ? void 0 : config.GW_PRESET_BACKEND_URL) || '';
822
+ };
818
823
  var getIdFromUrl = function getIdFromUrl(url) {
819
824
  return url && /[^/]+$/.exec(url)[0];
820
825
  };
826
+
827
+ var API_NAME = 'workspacepresets';
821
828
  var getApiRoutes$1 = function getApiRoutes(axiosInstance) {
822
829
  return {
823
830
  // workspace presets
@@ -840,105 +847,31 @@ var getApiRoutes$1 = function getApiRoutes(axiosInstance) {
840
847
  }
841
848
  return getWorkspacePresets;
842
849
  }(),
843
- getWorkspacePreset: function () {
844
- var _getWorkspacePreset = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(workspacePresetId) {
850
+ saveViewPreset: function () {
851
+ var _saveViewPreset = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(viewPresetId, data) {
845
852
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
846
853
  while (1) switch (_context2.prev = _context2.next) {
847
854
  case 0:
848
- return _context2.abrupt("return", axiosInstance.get("/workspacepreset/" + workspacePresetId));
849
- case 1:
850
- case "end":
851
- return _context2.stop();
852
- }
853
- }, _callee2);
854
- }));
855
- function getWorkspacePreset(_x2) {
856
- return _getWorkspacePreset.apply(this, arguments);
857
- }
858
- return getWorkspacePreset;
859
- }(),
860
- saveWorkspacePreset: function () {
861
- var _saveWorkspacePreset = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(workspacePresetId, data) {
862
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
863
- while (1) switch (_context3.prev = _context3.next) {
864
- case 0:
865
- return _context3.abrupt("return", axiosInstance.put("/workspacepreset/" + workspacePresetId + "/", data));
866
- case 1:
867
- case "end":
868
- return _context3.stop();
869
- }
870
- }, _callee3);
871
- }));
872
- function saveWorkspacePreset(_x3, _x4) {
873
- return _saveWorkspacePreset.apply(this, arguments);
874
- }
875
- return saveWorkspacePreset;
876
- }(),
877
- saveWorkspacePresetAs: function () {
878
- var _saveWorkspacePresetAs = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(data) {
879
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
880
- while (1) switch (_context4.prev = _context4.next) {
881
- case 0:
882
- return _context4.abrupt("return", axiosInstance.post("/workspacepreset/", data).then(function (response) {
883
- var headerLocation = response == null ? void 0 : response.request.getResponseHeader('Location');
884
- return getIdFromUrl(headerLocation);
885
- }));
886
- case 1:
887
- case "end":
888
- return _context4.stop();
889
- }
890
- }, _callee4);
891
- }));
892
- function saveWorkspacePresetAs(_x5) {
893
- return _saveWorkspacePresetAs.apply(this, arguments);
894
- }
895
- return saveWorkspacePresetAs;
896
- }(),
897
- // view presets
898
- getViewPresets: function () {
899
- var _getViewPresets = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(params) {
900
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
901
- while (1) switch (_context5.prev = _context5.next) {
902
- case 0:
903
- return _context5.abrupt("return", axiosInstance.get('/viewpreset', {
904
- params: params
905
- }));
906
- case 1:
907
- case "end":
908
- return _context5.stop();
909
- }
910
- }, _callee5);
911
- }));
912
- function getViewPresets(_x6) {
913
- return _getViewPresets.apply(this, arguments);
914
- }
915
- return getViewPresets;
916
- }(),
917
- saveViewPreset: function () {
918
- var _saveViewPreset = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(viewPresetId, data) {
919
- return _regeneratorRuntime().wrap(function _callee6$(_context6) {
920
- while (1) switch (_context6.prev = _context6.next) {
921
- case 0:
922
- return _context6.abrupt("return", axiosInstance.put("/viewpreset/" + viewPresetId + "/", data.initialProps === null ? Object.assign({}, data, {
855
+ return _context2.abrupt("return", axiosInstance.put("/viewpreset/" + viewPresetId + "/", data.initialProps === null ? Object.assign({}, data, {
923
856
  initialProps: {}
924
857
  }) : data));
925
858
  case 1:
926
859
  case "end":
927
- return _context6.stop();
860
+ return _context2.stop();
928
861
  }
929
- }, _callee6);
862
+ }, _callee2);
930
863
  }));
931
- function saveViewPreset(_x7, _x8) {
864
+ function saveViewPreset(_x2, _x3) {
932
865
  return _saveViewPreset.apply(this, arguments);
933
866
  }
934
867
  return saveViewPreset;
935
868
  }(),
936
869
  saveViewPresetAs: function () {
937
- var _saveViewPresetAs = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(data) {
938
- return _regeneratorRuntime().wrap(function _callee7$(_context7) {
939
- while (1) switch (_context7.prev = _context7.next) {
870
+ var _saveViewPresetAs = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(data) {
871
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
872
+ while (1) switch (_context3.prev = _context3.next) {
940
873
  case 0:
941
- return _context7.abrupt("return", axiosInstance.post("/viewpreset/", data.initialProps === null ? Object.assign({}, data, {
874
+ return _context3.abrupt("return", axiosInstance.post("/viewpreset/", data.initialProps === null ? Object.assign({}, data, {
942
875
  initialProps: {}
943
876
  }) : data).then(function (response) {
944
877
  var headerLocation = response == null ? void 0 : response.request.getResponseHeader('Location');
@@ -946,11 +879,11 @@ var getApiRoutes$1 = function getApiRoutes(axiosInstance) {
946
879
  }));
947
880
  case 1:
948
881
  case "end":
949
- return _context7.stop();
882
+ return _context3.stop();
950
883
  }
951
- }, _callee7);
884
+ }, _callee3);
952
885
  }));
953
- function saveViewPresetAs(_x9) {
886
+ function saveViewPresetAs(_x4) {
954
887
  return _saveViewPresetAs.apply(this, arguments);
955
888
  }
956
889
  return saveViewPresetAs;
@@ -1088,6 +1021,161 @@ var toViewsArray = function toViewsArray(wsViews) {
1088
1021
  });
1089
1022
  };
1090
1023
 
1024
+ var getViewPreset = /*#__PURE__*/function () {
1025
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(viewpresetId, auth) {
1026
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
1027
+ while (1) switch (_context.prev = _context.next) {
1028
+ case 0:
1029
+ return _context.abrupt("return", fetch(getPresetBaseUrl() + "/viewpreset/" + viewpresetId, {
1030
+ headers: getHeaders(auth)
1031
+ }).then(handleResponse));
1032
+ case 1:
1033
+ case "end":
1034
+ return _context.stop();
1035
+ }
1036
+ }, _callee);
1037
+ }));
1038
+ return function getViewPreset(_x, _x2) {
1039
+ return _ref.apply(this, arguments);
1040
+ };
1041
+ }();
1042
+ var getViewPresets$1 = /*#__PURE__*/function () {
1043
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(auth, params) {
1044
+ var baseUrl, searchParams, queryString, url;
1045
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
1046
+ while (1) switch (_context2.prev = _context2.next) {
1047
+ case 0:
1048
+ baseUrl = getPresetBaseUrl() + "/viewpreset";
1049
+ searchParams = new URLSearchParams();
1050
+ if (params) {
1051
+ Object.entries(params).forEach(function (_ref3) {
1052
+ var key = _ref3[0],
1053
+ value = _ref3[1];
1054
+ if (value !== undefined && value !== null) {
1055
+ searchParams.append(key, String(value));
1056
+ }
1057
+ });
1058
+ }
1059
+ queryString = searchParams.toString();
1060
+ url = queryString ? baseUrl + "?" + queryString : baseUrl;
1061
+ return _context2.abrupt("return", fetch(url, {
1062
+ headers: getHeaders(auth)
1063
+ }).then(handleResponse));
1064
+ case 6:
1065
+ case "end":
1066
+ return _context2.stop();
1067
+ }
1068
+ }, _callee2);
1069
+ }));
1070
+ return function getViewPresets(_x3, _x4) {
1071
+ return _ref2.apply(this, arguments);
1072
+ };
1073
+ }();
1074
+ var updateViewPreset = /*#__PURE__*/function () {
1075
+ var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(viewpresetId, data, auth) {
1076
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
1077
+ while (1) switch (_context3.prev = _context3.next) {
1078
+ case 0:
1079
+ return _context3.abrupt("return", fetch(getPresetBaseUrl() + "/viewpreset/" + viewpresetId, {
1080
+ headers: getHeaders(auth),
1081
+ method: 'PUT',
1082
+ body: JSON.stringify(data)
1083
+ }).then(handleResponse));
1084
+ case 1:
1085
+ case "end":
1086
+ return _context3.stop();
1087
+ }
1088
+ }, _callee3);
1089
+ }));
1090
+ return function updateViewPreset(_x5, _x6, _x7) {
1091
+ return _ref4.apply(this, arguments);
1092
+ };
1093
+ }();
1094
+ var deleteViewPreset = /*#__PURE__*/function () {
1095
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(viewPresetId, auth) {
1096
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
1097
+ while (1) switch (_context4.prev = _context4.next) {
1098
+ case 0:
1099
+ return _context4.abrupt("return", fetch(getPresetBaseUrl() + "/viewpreset/" + viewPresetId, {
1100
+ method: 'DELETE',
1101
+ headers: getHeaders(auth)
1102
+ }).then(handleResponse));
1103
+ case 1:
1104
+ case "end":
1105
+ return _context4.stop();
1106
+ }
1107
+ }, _callee4);
1108
+ }));
1109
+ return function deleteViewPreset(_x8, _x9) {
1110
+ return _ref5.apply(this, arguments);
1111
+ };
1112
+ }();
1113
+
1114
+ var API_KEY$1 = 'viewpreset-api';
1115
+ var generateViewPresetQueryKeys = function generateViewPresetQueryKeys() {
1116
+ for (var _len = arguments.length, queryKeys = new Array(_len), _key = 0; _key < _len; _key++) {
1117
+ queryKeys[_key] = arguments[_key];
1118
+ }
1119
+ return [LIB_KEY, API_KEY$1].concat(queryKeys);
1120
+ };
1121
+ var viewpresetQueryOptions = {
1122
+ keys: {
1123
+ all: function all() {
1124
+ return generateViewPresetQueryKeys();
1125
+ },
1126
+ views: function views() {
1127
+ return [].concat(viewpresetQueryOptions.keys.all(), ['view']);
1128
+ },
1129
+ lists: function lists() {
1130
+ return [].concat(viewpresetQueryOptions.keys.all(), ['list']);
1131
+ }
1132
+ },
1133
+ getViewPreset: function getViewPreset$1(id, credentials) {
1134
+ return queryOptions({
1135
+ queryKey: [].concat(viewpresetQueryOptions.keys.views(), [id]),
1136
+ queryFn: function () {
1137
+ var _queryFn = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
1138
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
1139
+ while (1) switch (_context.prev = _context.next) {
1140
+ case 0:
1141
+ return _context.abrupt("return", getViewPreset(id, credentials));
1142
+ case 1:
1143
+ case "end":
1144
+ return _context.stop();
1145
+ }
1146
+ }, _callee);
1147
+ }));
1148
+ function queryFn() {
1149
+ return _queryFn.apply(this, arguments);
1150
+ }
1151
+ return queryFn;
1152
+ }()
1153
+ });
1154
+ },
1155
+ getViewPresets: function getViewPresets(params, credentials) {
1156
+ return queryOptions({
1157
+ queryKey: [].concat(viewpresetQueryOptions.keys.lists(), [JSON.stringify(params != null ? params : {})]),
1158
+ queryFn: function () {
1159
+ var _queryFn2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
1160
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
1161
+ while (1) switch (_context2.prev = _context2.next) {
1162
+ case 0:
1163
+ return _context2.abrupt("return", getViewPresets$1(credentials, params));
1164
+ case 1:
1165
+ case "end":
1166
+ return _context2.stop();
1167
+ }
1168
+ }, _callee2);
1169
+ }));
1170
+ function queryFn() {
1171
+ return _queryFn2.apply(this, arguments);
1172
+ }
1173
+ return queryFn;
1174
+ }()
1175
+ });
1176
+ }
1177
+ };
1178
+
1091
1179
  /* *
1092
1180
  * Licensed under the Apache License, Version 2.0 (the "License");
1093
1181
  * you may not use this file except in compliance with the License.
@@ -1443,10 +1531,12 @@ var viewPresetsAdapter = createEntityAdapter({
1443
1531
  var initialState$2 = viewPresetsAdapter.getInitialState();
1444
1532
  var warningsPresetChangeActions = [publicWarningActions.setWarningFilters];
1445
1533
  var syncGroupChangeActions = [syncGroupsActions.syncGroupRemoveTarget, syncGroupsActions.syncGroupAddTarget];
1446
- var mapPresetChangeActions = [layerActions.setBaseLayers, layerActions.layerDelete, layerActions.addLayer, layerActions.duplicateMapLayer, layerActions.layerChangeEnabled, layerActions.layerChangeName, layerActions.layerChangeStyle, layerActions.layerChangeOpacity, layerActions.layerChangeDimension, layerActions.layerChangeAcceptanceTime, 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, mapActions.changeOverlayer, uiActions.setActiveMapIdForDialog, uiActions.setToggleOpenDialog, genericActions.setBbox, mapActions.setBbox];
1534
+ var mapPresetChangeActions = [layerActions.setBaseLayers, layerActions.layerDelete, layerActions.addLayer, layerActions.duplicateMapLayer, layerActions.layerChangeEnabled, layerActions.layerChangeName, layerActions.layerChangeStyle, layerActions.layerChangeOpacity, layerActions.layerChangeDimension, layerActions.layerChangeAcceptanceTime, 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, mapActions.changeOverlayer, uiActions.setActiveMapIdForDialog, uiActions.setToggleOpenDialog, genericActions.setBbox, mapActions.setBbox, mapActions.toggleClock];
1447
1535
  var timeSeriesPresetChangeActions = [timeSeriesActions.addParameter, timeSeriesActions.addPlot, timeSeriesActions.deleteParameter, timeSeriesActions.deletePlot, timeSeriesActions.moveParameter, timeSeriesActions.movePlot, timeSeriesActions.toggleParameter, timeSeriesActions.togglePlot, timeSeriesActions.patchParameter, timeSeriesActions.updateTitle];
1536
+ var soundingsChangeActions = [soundingsActions.updateSelectedSource, soundingsActions.updateSelectedLocation, soundingsActions.updateSelectedTime, soundingsActions.updateDiagramType, soundingsActions.toggleLocationMarkers];
1448
1537
  var supportedMapActionOrigins = [layerTypes.LayerActionOrigin.layerManager, layerTypes.LayerActionOrigin.wmsLoader, mapEnums.MapActionOrigin.map];
1449
1538
  var supportedTimeSeriesActionOrigins = [TimeSeriesTypes.TimeSeriesActionOrigin.timeSeriesManager, TimeSeriesTypes.TimeSeriesActionOrigin.timeSeriesSelect];
1539
+ var supportedSoundingsActionOrigins = [SoundingsTypes.SoundingsActionOrigin.soundingsComponent];
1450
1540
  var slice$2 = createSlice({
1451
1541
  initialState: initialState$2,
1452
1542
  name: 'viewPresets',
@@ -1852,11 +1942,43 @@ var slice$2 = createSlice({
1852
1942
  }
1853
1943
  });
1854
1944
  });
1945
+ soundingsChangeActions.map(function (soundingsAction) {
1946
+ return builder.addCase(soundingsAction, function (draft, action) {
1947
+ var _action$payload19 = action.payload,
1948
+ panelId = _action$payload19.panelId,
1949
+ origin = _action$payload19.origin;
1950
+ var isChangeOriginSupported = supportedSoundingsActionOrigins.includes(origin);
1951
+ if (isChangeOriginSupported && panelId && panelId !== '') {
1952
+ var entity = draft.entities[panelId];
1953
+ if (entity && !(entity != null && entity.hasChanges)) {
1954
+ entity.hasChanges = true;
1955
+ viewPresetsAdapter.setOne(draft, entity);
1956
+ }
1957
+ }
1958
+ });
1959
+ });
1855
1960
  }
1856
1961
  });
1857
1962
  var viewPresetsReducer = slice$2.reducer,
1858
1963
  viewPresetActions = slice$2.actions;
1859
1964
 
1965
+ /* *
1966
+ * Licensed under the Apache License, Version 2.0 (the "License");
1967
+ * you may not use this file except in compliance with the License.
1968
+ * You may obtain a copy of the License at
1969
+ *
1970
+ * http://www.apache.org/licenses/LICENSE-2.0
1971
+ *
1972
+ * Unless required by applicable law or agreed to in writing, software
1973
+ * distributed under the License is distributed on an "AS IS" BASIS,
1974
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1975
+ * See the License for the specific language governing permissions and
1976
+ * limitations under the License.
1977
+ *
1978
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
1979
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
1980
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
1981
+ * */
1860
1982
  var getCleanSearchQuery = function getCleanSearchQuery(searchQuery) {
1861
1983
  return searchQuery.trim().split(/\s+/).join();
1862
1984
  };
@@ -1918,33 +2040,15 @@ var filterAndSortPresets = function filterAndSortPresets(presets, selectedFilter
1918
2040
  var matchesLabelFilters = function matchesLabelFilters(preset) {
1919
2041
  var _preset$labels;
1920
2042
  var presetLabels = (_preset$labels = preset.labels) != null ? _preset$labels : {};
1921
- var _loop = function _loop() {
1922
- var _presetLabels$key;
1923
- var _step$value = _step.value,
1924
- key = _step$value.key,
1925
- selectedValues = _step$value.values;
1926
- var presetValues = (_presetLabels$key = presetLabels[key]) != null ? _presetLabels$key : [];
1927
- // If user filtered on this group but preset has no labels in it → exclude
1928
- if (!presetValues.length) {
1929
- return {
1930
- v: false
1931
- };
1932
- }
1933
- var hasAllSelectedValues = selectedValues.every(function (label) {
1934
- return presetValues.includes(label);
1935
- });
1936
- if (!hasAllSelectedValues) {
1937
- return {
1938
- v: false
1939
- };
1940
- }
1941
- },
1942
- _ret;
1943
- for (var _iterator = _createForOfIteratorHelperLoose(activeGroups), _step; !(_step = _iterator()).done;) {
1944
- _ret = _loop();
1945
- if (_ret) return _ret.v;
1946
- }
1947
- return true;
2043
+ return activeGroups.every(function (_ref2) {
2044
+ var _presetLabels$key;
2045
+ var key = _ref2.key,
2046
+ selectedValues = _ref2.values;
2047
+ var presetValues = (_presetLabels$key = presetLabels[key]) != null ? _presetLabels$key : [];
2048
+ return selectedValues.some(function (label) {
2049
+ return presetValues.includes(label);
2050
+ });
2051
+ });
1948
2052
  };
1949
2053
  return scopeFiltered.filter(matchesLabelFilters);
1950
2054
  }();
@@ -2157,6 +2261,9 @@ var slice$1 = createSlice({
2157
2261
  draft.viewType = getViewType$1(draft.views.allIds.length, action.payload.componentType);
2158
2262
  },
2159
2263
  setNewWorkspaceView: function setNewWorkspaceView(_draft, _action) {},
2264
+ teardownComplete: function teardownComplete() {
2265
+ // Signal-only action for listener coordination
2266
+ },
2160
2267
  deleteWorkspaceView: function deleteWorkspaceView(draft, action) {
2161
2268
  var id = action.payload.id;
2162
2269
  draft.views.allIds = draft.views.allIds.filter(function (viewId) {
@@ -2387,11 +2494,17 @@ var slice$1 = createSlice({
2387
2494
  }).addCase(viewPresetActions.onSuccessViewPresetAction, function (draft, action) {
2388
2495
  var _action$payload5 = action.payload,
2389
2496
  panelId = _action$payload5.panelId,
2497
+ activeViewPresetId = _action$payload5.activeViewPresetId,
2390
2498
  title = _action$payload5.title,
2391
2499
  presetAction = _action$payload5.action,
2392
2500
  scope = _action$payload5.scope,
2393
2501
  _abstract = _action$payload5["abstract"],
2394
2502
  labels = _action$payload5.labels;
2503
+ // If preset is not the active/selected one
2504
+ var shouldSkipInactivePresetUpdate = activeViewPresetId !== undefined && activeViewPresetId !== action.payload.viewPresetId && (presetAction === PresetAction.EDIT || presetAction === PresetAction.SHARE || presetAction === PresetAction.SAVE_AS && action.payload.shouldSetActiveViewPreset === false);
2505
+ if (shouldSkipInactivePresetUpdate) {
2506
+ return;
2507
+ }
2395
2508
  var entity = draft.views.byId[panelId];
2396
2509
  if (entity && presetAction !== PresetAction.DELETE) {
2397
2510
  entity.title = title;
@@ -2703,7 +2816,7 @@ var getViewComponentType = createSelector(getViewById, function (store) {
2703
2816
  var _store$componentType;
2704
2817
  return (_store$componentType = store == null ? void 0 : store.componentType) != null ? _store$componentType : 'Map';
2705
2818
  }, selectorMemoizationOptions);
2706
- var getViewPresetToSendToBackend = createSelector(getViewById, getViewComponentType, mapSelectors.getMapPreset, syncGroupsSelectors.getAllTargetGroupsForSource, timeSeriesSelectors.getTimeSeriesPreset, publicWarningsSelectors.getWarningsPresetById, mapSelectors.getMultiMapInitialProps, mapSelectors.getTimeSliderInitialProps, function (store) {
2819
+ var getViewPresetToSendToBackend = createSelector(getViewById, getViewComponentType, mapSelectors.getMapPreset, syncGroupsSelectors.getAllTargetGroupsForSource, timeSeriesSelectors.getTimeSeriesPreset, publicWarningsSelectors.getWarningsPresetById, mapSelectors.getMultiMapInitialProps, mapSelectors.getTimeSliderInitialProps, soundingsSelectors.getSoundingsPreset, function (store) {
2707
2820
  return store;
2708
2821
  }, function (panelId) {
2709
2822
  return panelId;
@@ -2712,7 +2825,7 @@ var getViewPresetToSendToBackend = createSelector(getViewById, getViewComponentT
2712
2825
  keepAllDims = false;
2713
2826
  }
2714
2827
  return keepAllDims;
2715
- }, function (workspaceView, viewComponentType, mapPreset, syncGroupsIds, timeSeriesPreset, warningsPreset, multiMapPreset, timeSliderPreset, store, panelId, keepAllDims) {
2828
+ }, function (workspaceView, viewComponentType, mapPreset, syncGroupsIds, timeSeriesPreset, warningsPreset, multiMapPreset, timeSliderPreset, soundingsPreset, store, panelId, keepAllDims) {
2716
2829
  var _workspaceView$scope, _initialPropsByCompon;
2717
2830
  var title = workspaceView == null ? void 0 : workspaceView.title;
2718
2831
  var scope = (_workspaceView$scope = workspaceView == null ? void 0 : workspaceView.scope) != null ? _workspaceView$scope : 'system';
@@ -2729,7 +2842,8 @@ var getViewPresetToSendToBackend = createSelector(getViewById, getViewComponentT
2729
2842
  HarmonieTempAndPrecipPreset: harmonieProps != null && harmonieProps.layers ? {
2730
2843
  layers: harmonieProps.layers
2731
2844
  } : undefined,
2732
- TimeSlider: timeSliderPreset
2845
+ TimeSlider: timeSliderPreset,
2846
+ Soundings: soundingsPreset
2733
2847
  };
2734
2848
  return Object.assign({}, emptyViewPreset(viewComponentType), {
2735
2849
  id: workspaceView == null ? void 0 : workspaceView.id,
@@ -2879,16 +2993,12 @@ var getViewPresetLabelFilters = createSelector(getViewPresetById, function (_sto
2879
2993
  return viewPreset == null ? void 0 : viewPreset.labelFilters;
2880
2994
  }, selectorMemoizationOptions);
2881
2995
 
2882
- var getPresetBaseUrl = function getPresetBaseUrl() {
2883
- var config = sessionStorageProvider.getConfig();
2884
- return (config == null ? void 0 : config.GW_PRESET_BACKEND_URL) || '';
2885
- };
2886
- var getViewPreset = /*#__PURE__*/function () {
2887
- var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(viewpresetId, auth) {
2996
+ var getWorkspaceLabelsConfig = /*#__PURE__*/function () {
2997
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(auth) {
2888
2998
  return _regeneratorRuntime().wrap(function _callee$(_context) {
2889
2999
  while (1) switch (_context.prev = _context.next) {
2890
3000
  case 0:
2891
- return _context.abrupt("return", fetch(getPresetBaseUrl() + "/viewpreset/" + viewpresetId, {
3001
+ return _context.abrupt("return", fetch(getPresetBaseUrl() + "/workspace-labels-config", {
2892
3002
  headers: getHeaders(auth)
2893
3003
  }).then(handleResponse));
2894
3004
  case 1:
@@ -2897,19 +3007,17 @@ var getViewPreset = /*#__PURE__*/function () {
2897
3007
  }
2898
3008
  }, _callee);
2899
3009
  }));
2900
- return function getViewPreset(_x, _x2) {
3010
+ return function getWorkspaceLabelsConfig(_x) {
2901
3011
  return _ref.apply(this, arguments);
2902
3012
  };
2903
3013
  }();
2904
- var updateViewPreset = /*#__PURE__*/function () {
2905
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(viewpresetId, data, auth) {
3014
+ var getWorkspacePreset = /*#__PURE__*/function () {
3015
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(workspaceId, auth) {
2906
3016
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
2907
3017
  while (1) switch (_context2.prev = _context2.next) {
2908
3018
  case 0:
2909
- return _context2.abrupt("return", fetch(getPresetBaseUrl() + "/viewpreset/" + viewpresetId, {
2910
- headers: getHeaders(auth),
2911
- method: 'PUT',
2912
- body: JSON.stringify(data)
3019
+ return _context2.abrupt("return", fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId, {
3020
+ headers: getHeaders(auth)
2913
3021
  }).then(handleResponse));
2914
3022
  case 1:
2915
3023
  case "end":
@@ -2917,17 +3025,16 @@ var updateViewPreset = /*#__PURE__*/function () {
2917
3025
  }
2918
3026
  }, _callee2);
2919
3027
  }));
2920
- return function updateViewPreset(_x3, _x4, _x5) {
3028
+ return function getWorkspacePreset(_x2, _x3) {
2921
3029
  return _ref2.apply(this, arguments);
2922
3030
  };
2923
3031
  }();
2924
- var deleteViewPreset = /*#__PURE__*/function () {
2925
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(viewPresetId, auth) {
2926
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
3032
+ var getWorkspace = /*#__PURE__*/function () {
3033
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(workspaceId, auth) {
3034
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
2927
3035
  while (1) switch (_context3.prev = _context3.next) {
2928
3036
  case 0:
2929
- return _context3.abrupt("return", fetch(getPresetBaseUrl() + "/viewpreset/" + viewPresetId, {
2930
- method: 'DELETE',
3037
+ return _context3.abrupt("return", fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId, {
2931
3038
  headers: getHeaders(auth)
2932
3039
  }).then(handleResponse));
2933
3040
  case 1:
@@ -2936,49 +3043,137 @@ var deleteViewPreset = /*#__PURE__*/function () {
2936
3043
  }
2937
3044
  }, _callee3);
2938
3045
  }));
2939
- return function deleteViewPreset(_x6, _x7) {
3046
+ return function getWorkspace(_x4, _x5) {
2940
3047
  return _ref3.apply(this, arguments);
2941
3048
  };
2942
3049
  }();
3050
+ var deleteWorkspace = /*#__PURE__*/function () {
3051
+ var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(workspaceId, auth) {
3052
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
3053
+ while (1) switch (_context4.prev = _context4.next) {
3054
+ case 0:
3055
+ return _context4.abrupt("return", fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId, {
3056
+ headers: getHeaders(auth),
3057
+ method: 'DELETE'
3058
+ }).then(handleResponse));
3059
+ case 1:
3060
+ case "end":
3061
+ return _context4.stop();
3062
+ }
3063
+ }, _callee4);
3064
+ }));
3065
+ return function deleteWorkspace(_x6, _x7) {
3066
+ return _ref4.apply(this, arguments);
3067
+ };
3068
+ }();
3069
+ var updateWorkspace = /*#__PURE__*/function () {
3070
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(workspaceId, data, auth) {
3071
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
3072
+ while (1) switch (_context5.prev = _context5.next) {
3073
+ case 0:
3074
+ return _context5.abrupt("return", fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId, {
3075
+ headers: getHeaders(auth),
3076
+ method: 'PUT',
3077
+ body: JSON.stringify(data)
3078
+ }).then(handleResponse));
3079
+ case 1:
3080
+ case "end":
3081
+ return _context5.stop();
3082
+ }
3083
+ }, _callee5);
3084
+ }));
3085
+ return function updateWorkspace(_x8, _x9, _x0) {
3086
+ return _ref5.apply(this, arguments);
3087
+ };
3088
+ }();
3089
+ var saveWorkspacePreset = /*#__PURE__*/function () {
3090
+ var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(workspaceId, data, auth) {
3091
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
3092
+ while (1) switch (_context6.prev = _context6.next) {
3093
+ case 0:
3094
+ return _context6.abrupt("return", fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId + "/", {
3095
+ headers: getHeaders(auth),
3096
+ method: 'PUT',
3097
+ body: JSON.stringify(data)
3098
+ }).then(handleResponse));
3099
+ case 1:
3100
+ case "end":
3101
+ return _context6.stop();
3102
+ }
3103
+ }, _callee6);
3104
+ }));
3105
+ return function saveWorkspacePreset(_x1, _x10, _x11) {
3106
+ return _ref6.apply(this, arguments);
3107
+ };
3108
+ }();
3109
+ var createWorkspace = /*#__PURE__*/function () {
3110
+ var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(data, auth) {
3111
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
3112
+ while (1) switch (_context7.prev = _context7.next) {
3113
+ case 0:
3114
+ return _context7.abrupt("return", fetch(getPresetBaseUrl() + "/workspacepreset", {
3115
+ headers: getHeaders(auth),
3116
+ method: 'POST',
3117
+ body: JSON.stringify(data)
3118
+ }).then(handleResponse));
3119
+ case 1:
3120
+ case "end":
3121
+ return _context7.stop();
3122
+ }
3123
+ }, _callee7);
3124
+ }));
3125
+ return function createWorkspace(_x12, _x13) {
3126
+ return _ref7.apply(this, arguments);
3127
+ };
3128
+ }();
3129
+ var saveWorkspacePresetAs = /*#__PURE__*/function () {
3130
+ var _ref8 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(data, auth) {
3131
+ var _response$headers$get;
3132
+ var response, headerLocation;
3133
+ return _regeneratorRuntime().wrap(function _callee8$(_context8) {
3134
+ while (1) switch (_context8.prev = _context8.next) {
3135
+ case 0:
3136
+ _context8.next = 2;
3137
+ return fetch(getPresetBaseUrl() + "/workspacepreset", {
3138
+ headers: getHeaders(auth),
3139
+ method: 'POST',
3140
+ body: JSON.stringify(data)
3141
+ });
3142
+ case 2:
3143
+ response = _context8.sent;
3144
+ _context8.next = 5;
3145
+ return handleResponse(response);
3146
+ case 5:
3147
+ headerLocation = (_response$headers$get = response.headers.get('Location')) != null ? _response$headers$get : response.headers.get('location');
3148
+ return _context8.abrupt("return", getIdFromUrl(headerLocation));
3149
+ case 7:
3150
+ case "end":
3151
+ return _context8.stop();
3152
+ }
3153
+ }, _callee8);
3154
+ }));
3155
+ return function saveWorkspacePresetAs(_x14, _x15) {
3156
+ return _ref8.apply(this, arguments);
3157
+ };
3158
+ }();
2943
3159
 
2944
- /* *
2945
- * Licensed under the Apache License, Version 2.0 (the "License");
2946
- * you may not use this file except in compliance with the License.
2947
- * You may obtain a copy of the License at
2948
- *
2949
- * http://www.apache.org/licenses/LICENSE-2.0
2950
- *
2951
- * Unless required by applicable law or agreed to in writing, software
2952
- * distributed under the License is distributed on an "AS IS" BASIS,
2953
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2954
- * See the License for the specific language governing permissions and
2955
- * limitations under the License.
2956
- *
2957
- * Copyright 2026 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
2958
- * Copyright 2026 - Finnish Meteorological Institute (FMI)
2959
- * Copyright 2026 - The Norwegian Meteorological Institute (MET Norway)
2960
- * */
2961
- /*
2962
- configureLibraryDefaults([LIB_KEY], {
2963
- staleTime: 5 * 60 * 1000,
2964
- });
2965
- */
2966
- var LIB_KEY = 'workspace-lib';
2967
-
2968
- var API_KEY = 'viewpresets-api';
2969
- var generateViewPresetsQueryKeys = function generateViewPresetsQueryKeys(queryKeys) {
3160
+ var API_KEY = 'workspace-api';
3161
+ var generateWorkspaceQueryKeys = function generateWorkspaceQueryKeys() {
3162
+ for (var _len = arguments.length, queryKeys = new Array(_len), _key = 0; _key < _len; _key++) {
3163
+ queryKeys[_key] = arguments[_key];
3164
+ }
2970
3165
  return [LIB_KEY, API_KEY].concat(queryKeys);
2971
3166
  };
2972
- var viewpresetsQueryOptions = {
2973
- getViewPreset: function getViewPreset$1(id, credentials) {
3167
+ var workspaceQueryOptions = {
3168
+ getWorkspacePreset: function getWorkspacePreset$1(id, credentials) {
2974
3169
  return queryOptions({
2975
- queryKey: generateViewPresetsQueryKeys([id]),
3170
+ queryKey: generateWorkspaceQueryKeys(id),
2976
3171
  queryFn: function () {
2977
3172
  var _queryFn = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
2978
3173
  return _regeneratorRuntime().wrap(function _callee$(_context) {
2979
3174
  while (1) switch (_context.prev = _context.next) {
2980
3175
  case 0:
2981
- return _context.abrupt("return", getViewPreset(id, credentials));
3176
+ return _context.abrupt("return", getWorkspacePreset(id, credentials));
2982
3177
  case 1:
2983
3178
  case "end":
2984
3179
  return _context.stop();
@@ -2991,196 +3186,56 @@ var viewpresetsQueryOptions = {
2991
3186
  return queryFn;
2992
3187
  }()
2993
3188
  });
3189
+ },
3190
+ saveWorkspacePreset: function saveWorkspacePreset$1(id, data, credentials) {
3191
+ return queryOptions({
3192
+ queryKey: generateWorkspaceQueryKeys(id),
3193
+ staleTime: 0,
3194
+ queryFn: function () {
3195
+ var _queryFn2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
3196
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
3197
+ while (1) switch (_context2.prev = _context2.next) {
3198
+ case 0:
3199
+ return _context2.abrupt("return", saveWorkspacePreset(id, data, credentials));
3200
+ case 1:
3201
+ case "end":
3202
+ return _context2.stop();
3203
+ }
3204
+ }, _callee2);
3205
+ }));
3206
+ function queryFn() {
3207
+ return _queryFn2.apply(this, arguments);
3208
+ }
3209
+ return queryFn;
3210
+ }()
3211
+ });
3212
+ },
3213
+ saveWorkspacePresetAs: function saveWorkspacePresetAs$1(data, credentials) {
3214
+ return queryOptions({
3215
+ queryKey: generateWorkspaceQueryKeys('save-as'),
3216
+ staleTime: 0,
3217
+ queryFn: function () {
3218
+ var _queryFn3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
3219
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
3220
+ while (1) switch (_context3.prev = _context3.next) {
3221
+ case 0:
3222
+ return _context3.abrupt("return", saveWorkspacePresetAs(data, credentials));
3223
+ case 1:
3224
+ case "end":
3225
+ return _context3.stop();
3226
+ }
3227
+ }, _callee3);
3228
+ }));
3229
+ function queryFn() {
3230
+ return _queryFn3.apply(this, arguments);
3231
+ }
3232
+ return queryFn;
3233
+ }()
3234
+ });
2994
3235
  }
2995
3236
  };
2996
3237
 
2997
- var viewPresetsList = [
2998
- {
2999
- title: "Radar",
3000
- abstract: "abstract radar",
3001
- id: "radar",
3002
- date: "2022-06-01T12:34:27.787184",
3003
- scope: "system"
3004
- },
3005
- {
3006
- title: "Temperature",
3007
- id: "temp",
3008
- date: "2022-06-01T12:34:27.787184",
3009
- scope: "user"
3010
- },
3011
- {
3012
- title: "Radar",
3013
- id: "screenRadar",
3014
- date: "2022-06-01T12:34:27.787184",
3015
- scope: "user",
3016
- username: "user.name"
3017
- },
3018
- {
3019
- id: "screenConfigC",
3020
- title: "Satellite",
3021
- date: "2022-06-01T12:34:27.787184",
3022
- scope: "system"
3023
- },
3024
- {
3025
- title: "map_OBSTA",
3026
- id: "map_OBSTA",
3027
- date: "2022-06-01T12:34:27.787184",
3028
- scope: "system"
3029
- },
3030
- {
3031
- title: "map_OBSPP",
3032
- id: "map_OBSPP",
3033
- date: "2022-06-01T12:34:27.787184",
3034
- scope: "system"
3035
- },
3036
- {
3037
- title: "map_OBSWind",
3038
- id: "map_OBSWind",
3039
- date: "2022-06-01T12:34:27.787184",
3040
- scope: "system"
3041
- },
3042
- {
3043
- title: "map_OBSRH",
3044
- id: "map_OBSRH",
3045
- date: "2022-06-01T12:34:27.787184",
3046
- scope: "system"
3047
- },
3048
- {
3049
- title: "map_OBSQG",
3050
- id: "map_OBSQG",
3051
- date: "2022-06-01T12:34:27.787184",
3052
- scope: "system"
3053
- },
3054
- {
3055
- title: "harmPrecip",
3056
- id: "harmPrecip",
3057
- date: "2022-06-01T12:34:27.787184",
3058
- scope: "system"
3059
- },
3060
- {
3061
- title: "harmTemp",
3062
- id: "harmTemp",
3063
- date: "2022-06-01T12:34:27.787184",
3064
- scope: "system"
3065
- },
3066
- {
3067
- title: "screenHarm",
3068
- id: "screenHarm",
3069
- date: "2022-06-01T12:34:27.787184",
3070
- scope: "system"
3071
- },
3072
- {
3073
- title: "Harmonie",
3074
- id: "viewHarmonie",
3075
- date: "2022-06-01T12:34:27.787184",
3076
- scope: "system"
3077
- },
3078
- {
3079
- title: "harmRefTime",
3080
- id: "harmRefTime",
3081
- date: "2022-06-01T12:34:27.787184",
3082
- scope: "system"
3083
- },
3084
- {
3085
- title: "harmRefTimeAll",
3086
- id: "harmRefTimeAll",
3087
- date: "2022-06-01T12:34:27.787184",
3088
- scope: "system"
3089
- },
3090
- {
3091
- title: "screenHarmAll",
3092
- id: "screenHarmAll",
3093
- date: "2022-06-01T12:34:27.787184",
3094
- scope: "system"
3095
- },
3096
- {
3097
- title: "harmPressure",
3098
- id: "harmPressure",
3099
- date: "2022-06-01T12:34:27.787184",
3100
- scope: "system"
3101
- },
3102
- {
3103
- title: "Empty map",
3104
- id: "emptyMap",
3105
- date: "2022-06-01T12:34:27.787184",
3106
- scope: "system"
3107
- },
3108
- {
3109
- title: "Timeseries map",
3110
- id: "TimeseriesMap",
3111
- date: "2022-06-01T12:34:27.787184",
3112
- scope: "system"
3113
- },
3114
- {
3115
- title: "KNMI WMS UWCW HA43 DINI forecast",
3116
- id: "view_knmi_timeseries_ha43_dini_wms",
3117
- date: "2022-06-01T12:34:27.787184",
3118
- scope: "system"
3119
- },
3120
- {
3121
- title: "KNMI EDR UWCW HA43 DINI forecast",
3122
- id: "view_knmi_timeseries_ha43_dini_edr",
3123
- date: "2022-06-01T12:34:27.787184",
3124
- scope: "system"
3125
- },
3126
- {
3127
- title: "sat",
3128
- id: "sat",
3129
- date: "2022-06-01T12:34:27.787184",
3130
- scope: "system"
3131
- },
3132
- {
3133
- title: "rad",
3134
- id: "rad",
3135
- date: "2022-06-01T12:34:27.787184",
3136
- scope: "system"
3137
- },
3138
- {
3139
- title: "screenRadAndObs",
3140
- id: "screenRadAndObs",
3141
- date: "2022-06-01T12:34:27.787184",
3142
- scope: "system"
3143
- },
3144
- {
3145
- title: "demosyncgroupbbox_radar",
3146
- id: "demosyncgroupbbox_radar",
3147
- date: "2022-06-01T12:34:27.787184",
3148
- scope: "system"
3149
- },
3150
- {
3151
- title: "demosyncgroupbbox_temp",
3152
- id: "demosyncgroupbbox_temp",
3153
- date: "2022-06-01T12:34:27.787184",
3154
- scope: "system"
3155
- },
3156
- {
3157
- title: "demosyncgrouptime_radar",
3158
- id: "demosyncgrouptime_radar",
3159
- date: "2022-06-01T12:34:27.787184",
3160
- scope: "system"
3161
- },
3162
- {
3163
- title: "demosyncgrouptime_temp",
3164
- id: "demosyncgrouptime_temp",
3165
- date: "2022-06-01T12:34:27.787184",
3166
- scope: "system"
3167
- },
3168
- {
3169
- title: "Cap Warnings",
3170
- id: "capView",
3171
- date: "2022-06-01T12:34:27.787184",
3172
- scope: "system",
3173
- abstract: "abstract cap"
3174
- },
3175
- {
3176
- title: "Warning List",
3177
- id: "warningList",
3178
- date: "2022-06-01T12:34:27.787184",
3179
- scope: "system"
3180
- }
3181
- ];
3182
-
3183
- var workspacePresetsListFullContent = [
3238
+ var workspacePresets = [
3184
3239
  {
3185
3240
  id: "screenConfigRadarTemp",
3186
3241
  title: "Radar and temperature",
@@ -4342,6 +4397,27 @@ var workspacePresetsListFullContent = [
4342
4397
  }
4343
4398
  ],
4344
4399
  mosaicNode: "radarView"
4400
+ },
4401
+ {
4402
+ id: "test-1",
4403
+ title: "Test view preset error",
4404
+ scope: "system",
4405
+ username: "user.name",
4406
+ abstract: "",
4407
+ viewType: "multiWindow",
4408
+ views: [
4409
+ {
4410
+ mosaicNodeId: "screen_no_1",
4411
+ viewPresetId: "temp"
4412
+ }
4413
+ ],
4414
+ syncGroups: [
4415
+ {
4416
+ id: "Area_RadarTemp",
4417
+ type: "SYNCGROUPS_TYPE_SETBBOX"
4418
+ }
4419
+ ],
4420
+ mosaicNode: "screen_no_1"
4345
4421
  }
4346
4422
  ];
4347
4423
 
@@ -4503,11 +4579,6 @@ var workspacePresetsList = [
4503
4579
  ];
4504
4580
 
4505
4581
  var ERROR_NOT_FOUND = 'Request failed with status code 400';
4506
- var extractWorkspacePresetFromJSON = function extractWorkspacePresetFromJSON(workspacePresetId) {
4507
- return workspacePresetsListFullContent.find(function (element) {
4508
- return element.id === workspacePresetId;
4509
- });
4510
- };
4511
4582
  var filterWorkspacePresetList = function filterWorkspacePresetList(params) {
4512
4583
  if (isEmpty(params)) {
4513
4584
  return workspacePresetsList;
@@ -4524,28 +4595,6 @@ var filterWorkspacePresetList = function filterWorkspacePresetList(params) {
4524
4595
  return list;
4525
4596
  }, []);
4526
4597
  };
4527
- var filterViewPresetList = function filterViewPresetList(params) {
4528
- if (isEmpty(params)) {
4529
- return viewPresetsList;
4530
- }
4531
- return viewPresetsList.reduce(function (list, viewPresetRaw) {
4532
- var _params$scope;
4533
- var workspacePreset = viewPresetRaw;
4534
- if (params != null && (_params$scope = params.scope) != null && _params$scope.includes(workspacePreset.scope)) {
4535
- return list.concat(workspacePreset);
4536
- }
4537
- return list;
4538
- }, []);
4539
- };
4540
- var sortViewPresets = function sortViewPresets(viewPresets) {
4541
- var presetOrder = ['system', 'user'];
4542
- return [].concat(viewPresets).sort(function (left, right) {
4543
- if (left.scope === right.scope) {
4544
- return left.title.localeCompare(right.title);
4545
- }
4546
- return presetOrder.indexOf(left.scope) - presetOrder.indexOf(right.scope);
4547
- });
4548
- };
4549
4598
  var getApiRoutes = function getApiRoutes(axiosInstance) {
4550
4599
  return {
4551
4600
  getWorkspacePresets: function () {
@@ -4572,131 +4621,42 @@ var getApiRoutes = function getApiRoutes(axiosInstance) {
4572
4621
  }
4573
4622
  return getWorkspacePresets;
4574
4623
  }(),
4575
- getWorkspacePreset: function () {
4576
- var _getWorkspacePreset = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(workspacePresetId) {
4624
+ saveViewPreset: function () {
4625
+ var _saveViewPreset = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(presetId, data) {
4577
4626
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
4578
4627
  while (1) switch (_context2.prev = _context2.next) {
4579
- case 0:
4580
- return _context2.abrupt("return", axiosInstance.get("/workspacepreset/" + workspacePresetId).then(function () {
4581
- if (!extractWorkspacePresetFromJSON(workspacePresetId)) {
4582
- throw new Error(ERROR_NOT_FOUND);
4583
- }
4584
- return {
4585
- data: extractWorkspacePresetFromJSON(workspacePresetId)
4586
- };
4587
- }));
4588
- case 1:
4589
- case "end":
4590
- return _context2.stop();
4591
- }
4592
- }, _callee2);
4593
- }));
4594
- function getWorkspacePreset(_x2) {
4595
- return _getWorkspacePreset.apply(this, arguments);
4596
- }
4597
- return getWorkspacePreset;
4598
- }(),
4599
- saveWorkspacePreset: function () {
4600
- var _saveWorkspacePreset = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(workspacePresetId, data) {
4601
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
4602
- while (1) switch (_context3.prev = _context3.next) {
4603
- case 0:
4604
- // eslint-disable-next-line no-console
4605
- console.log('api: save workspace preset', workspacePresetId, data);
4606
- return _context3.abrupt("return", axiosInstance.put("/workspacepreset/" + workspacePresetId + "/", data));
4607
- case 2:
4608
- case "end":
4609
- return _context3.stop();
4610
- }
4611
- }, _callee3);
4612
- }));
4613
- function saveWorkspacePreset(_x3, _x4) {
4614
- return _saveWorkspacePreset.apply(this, arguments);
4615
- }
4616
- return saveWorkspacePreset;
4617
- }(),
4618
- saveWorkspacePresetAs: function () {
4619
- var _saveWorkspacePresetAs = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(data) {
4620
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
4621
- while (1) switch (_context4.prev = _context4.next) {
4622
- case 0:
4623
- // eslint-disable-next-line no-console
4624
- console.log('api: save workspace preset as', data);
4625
- return _context4.abrupt("return", axiosInstance.post("/workspacepreset/", data).then(function () {
4626
- return null;
4627
- }));
4628
- case 2:
4629
- case "end":
4630
- return _context4.stop();
4631
- }
4632
- }, _callee4);
4633
- }));
4634
- function saveWorkspacePresetAs(_x5) {
4635
- return _saveWorkspacePresetAs.apply(this, arguments);
4636
- }
4637
- return saveWorkspacePresetAs;
4638
- }(),
4639
- // view presets
4640
- getViewPresets: function () {
4641
- var _getViewPresets = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(params) {
4642
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
4643
- while (1) switch (_context5.prev = _context5.next) {
4644
- case 0:
4645
- return _context5.abrupt("return", axiosInstance.get('/viewpreset', {
4646
- params: params
4647
- }).then(function () {
4648
- var data = filterViewPresetList(params);
4649
- return {
4650
- data: sortViewPresets(data)
4651
- };
4652
- }));
4653
- case 1:
4654
- case "end":
4655
- return _context5.stop();
4656
- }
4657
- }, _callee5);
4658
- }));
4659
- function getViewPresets(_x6) {
4660
- return _getViewPresets.apply(this, arguments);
4661
- }
4662
- return getViewPresets;
4663
- }(),
4664
- saveViewPreset: function () {
4665
- var _saveViewPreset = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(presetId, data) {
4666
- return _regeneratorRuntime().wrap(function _callee6$(_context6) {
4667
- while (1) switch (_context6.prev = _context6.next) {
4668
4628
  case 0:
4669
4629
  // eslint-disable-next-line no-console
4670
4630
  console.log('api: save view preset', presetId, data);
4671
- return _context6.abrupt("return", axiosInstance.put("/viewpreset/" + presetId + "/", data));
4631
+ return _context2.abrupt("return", axiosInstance.put("/viewpreset/" + presetId + "/", data));
4672
4632
  case 2:
4673
4633
  case "end":
4674
- return _context6.stop();
4634
+ return _context2.stop();
4675
4635
  }
4676
- }, _callee6);
4636
+ }, _callee2);
4677
4637
  }));
4678
- function saveViewPreset(_x7, _x8) {
4638
+ function saveViewPreset(_x2, _x3) {
4679
4639
  return _saveViewPreset.apply(this, arguments);
4680
4640
  }
4681
4641
  return saveViewPreset;
4682
4642
  }(),
4683
4643
  saveViewPresetAs: function () {
4684
- var _saveViewPresetAs = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(data) {
4685
- return _regeneratorRuntime().wrap(function _callee7$(_context7) {
4686
- while (1) switch (_context7.prev = _context7.next) {
4644
+ var _saveViewPresetAs = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(data) {
4645
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
4646
+ while (1) switch (_context3.prev = _context3.next) {
4687
4647
  case 0:
4688
4648
  // eslint-disable-next-line no-console
4689
4649
  console.log('api: save view preset as', data);
4690
- return _context7.abrupt("return", axiosInstance.post("/viewpreset/", data).then(function () {
4650
+ return _context3.abrupt("return", axiosInstance.post("/viewpreset/", data).then(function () {
4691
4651
  return null;
4692
4652
  }));
4693
4653
  case 2:
4694
4654
  case "end":
4695
- return _context7.stop();
4655
+ return _context3.stop();
4696
4656
  }
4697
- }, _callee7);
4657
+ }, _callee3);
4698
4658
  }));
4699
- function saveViewPresetAs(_x9) {
4659
+ function saveViewPresetAs(_x4) {
4700
4660
  return _saveViewPresetAs.apply(this, arguments);
4701
4661
  }
4702
4662
  return saveViewPresetAs;
@@ -4945,14 +4905,15 @@ workspaceListListener.startListening({
4945
4905
  actionCreator: workspaceListActions.submitFormWorkspaceActionDialogOptions,
4946
4906
  effect: function () {
4947
4907
  var _effect3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref3, listenerApi) {
4948
- var payload, workspaceApi, workspaceState, presetId, presetAction, data, emptyMapPresetTitle, emptyWorkspacePresetTitle, scope, _yield$workspaceApi$g2, originalData, workspaceDataNewTitle, _originalData$views, _data$views2, _yield$workspaceApi$g3, _originalData, mergedViews, payloadToSave, isSaveWorkspaceAction, isSaveAsWorkspaceAction, hasWorkspaceAlreadyBeenSaved, workspaceId, workspaceData, viewsWithInitialProps, newWorkspace, message, category;
4908
+ var _listenerApi$getState;
4909
+ var payload, workspaceState, credentials, presetId, presetAction, data, emptyMapPresetTitle, emptyWorkspacePresetTitle, scope, originalData, workspaceDataNewTitle, _originalData$views, _data$views2, _originalData, mergedViews, payloadToSave, isSaveWorkspaceAction, isSaveAsWorkspaceAction, hasWorkspaceAlreadyBeenSaved, workspaceId, workspaceData, viewsWithInitialProps, newWorkspace, _listenerApi$getState2, _credentials, hasChanges, message, category;
4949
4910
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
4950
4911
  while (1) switch (_context3.prev = _context3.next) {
4951
4912
  case 0:
4952
4913
  payload = _ref3.payload;
4953
4914
  listenerApi.cancelActiveListeners();
4954
- workspaceApi = getWorkspaceApi();
4955
4915
  workspaceState = listenerApi.getState();
4916
+ credentials = (_listenerApi$getState = listenerApi.getState().common) == null || (_listenerApi$getState = _listenerApi$getState.auth) == null ? void 0 : _listenerApi$getState.credentials;
4956
4917
  _context3.prev = 4;
4957
4918
  presetId = payload.presetId, presetAction = payload.presetAction, data = payload.data, emptyMapPresetTitle = payload.emptyMapPresetTitle, emptyWorkspacePresetTitle = payload.emptyWorkspacePresetTitle;
4958
4919
  scope = data.scope || 'user'; // duplicate
@@ -4961,14 +4922,13 @@ workspaceListListener.startListening({
4961
4922
  if (presetAction === WorkspacePresetAction.DELETE || presetAction === WorkspacePresetAction.DELETE_SYSTEM_PRESET) ;
4962
4923
  // edit
4963
4924
  if (!(presetAction === WorkspacePresetAction.EDIT)) {
4964
- _context3.next = 18;
4925
+ _context3.next = 19;
4965
4926
  break;
4966
4927
  }
4967
4928
  _context3.next = 12;
4968
- return workspaceApi.getWorkspacePreset(presetId);
4929
+ return getQueryClient().fetchQuery(workspaceQueryOptions.getWorkspacePreset(presetId, credentials));
4969
4930
  case 12:
4970
- _yield$workspaceApi$g2 = _context3.sent;
4971
- originalData = _yield$workspaceApi$g2.data;
4931
+ originalData = _context3.sent;
4972
4932
  workspaceDataNewTitle = Object.assign({}, originalData, {
4973
4933
  title: data.title,
4974
4934
  "abstract": data["abstract"],
@@ -4977,9 +4937,12 @@ workspaceListListener.startListening({
4977
4937
  updated: data.updated,
4978
4938
  updatedBy: data.updatedBy
4979
4939
  });
4980
- _context3.next = 17;
4981
- return workspaceApi.saveWorkspacePreset(presetId, workspaceDataNewTitle);
4982
- case 17:
4940
+ _context3.next = 16;
4941
+ return getQueryClient().fetchQuery(workspaceQueryOptions.saveWorkspacePreset(presetId, workspaceDataNewTitle, credentials));
4942
+ case 16:
4943
+ _context3.next = 18;
4944
+ return getQueryClient().invalidateQueries(workspaceQueryOptions.getWorkspacePreset(presetId, credentials));
4945
+ case 18:
4983
4946
  listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
4984
4947
  workspaceId: presetId,
4985
4948
  action: presetAction,
@@ -4991,16 +4954,15 @@ workspaceListListener.startListening({
4991
4954
  updatedBy: data.updatedBy,
4992
4955
  scope: scope
4993
4956
  }));
4994
- case 18:
4957
+ case 19:
4995
4958
  if (!(presetAction === WorkspacePresetAction.EDIT_TITLE)) {
4996
- _context3.next = 28;
4959
+ _context3.next = 30;
4997
4960
  break;
4998
4961
  }
4999
- _context3.next = 21;
5000
- return workspaceApi.getWorkspacePreset(presetId);
5001
- case 21:
5002
- _yield$workspaceApi$g3 = _context3.sent;
5003
- _originalData = _yield$workspaceApi$g3.data;
4962
+ _context3.next = 22;
4963
+ return getQueryClient().fetchQuery(workspaceQueryOptions.getWorkspacePreset(presetId, credentials));
4964
+ case 22:
4965
+ _originalData = _context3.sent;
5004
4966
  // 2) Merge the single (or few) edited view titles from `data.views`
5005
4967
  mergedViews = ((_originalData$views = _originalData.views) != null ? _originalData$views : []).map(function (view) {
5006
4968
  var _data$views, _updated$title;
@@ -5015,8 +4977,11 @@ workspaceListListener.startListening({
5015
4977
  views: mergedViews
5016
4978
  });
5017
4979
  _context3.next = 27;
5018
- return workspaceApi.saveWorkspacePreset(presetId, payloadToSave);
4980
+ return getQueryClient().fetchQuery(workspaceQueryOptions.saveWorkspacePreset(presetId, payloadToSave, credentials));
5019
4981
  case 27:
4982
+ _context3.next = 29;
4983
+ return getQueryClient().invalidateQueries(workspaceQueryOptions.getWorkspacePreset(presetId, credentials));
4984
+ case 29:
5020
4985
  // 4) Notify success so reducer updates local state
5021
4986
  listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
5022
4987
  workspaceId: presetId,
@@ -5029,12 +4994,12 @@ workspaceListListener.startListening({
5029
4994
  // Reducer uses mosaicNodeId+title from `views` to patch state.
5030
4995
  views: (_data$views2 = data.views) != null ? _data$views2 : []
5031
4996
  }));
5032
- case 28:
4997
+ case 30:
5033
4998
  // save (as) user/system presets
5034
4999
  isSaveWorkspaceAction = presetAction === WorkspacePresetAction.SAVE_SYSTEM_PRESET || presetAction === WorkspacePresetAction.SAVE;
5035
5000
  isSaveAsWorkspaceAction = presetAction === WorkspacePresetAction.SAVE_SYSTEM_PRESET_AS || presetAction === WorkspacePresetAction.SAVE_AS;
5036
5001
  if (!(isSaveWorkspaceAction || isSaveAsWorkspaceAction)) {
5037
- _context3.next = 47;
5002
+ _context3.next = 54;
5038
5003
  break;
5039
5004
  }
5040
5005
  hasWorkspaceAlreadyBeenSaved = getWorkspaceDialogIsSaved(workspaceState);
@@ -5058,27 +5023,36 @@ workspaceListListener.startListening({
5058
5023
  views: viewsWithInitialProps
5059
5024
  });
5060
5025
  if (!(!hasWorkspaceAlreadyBeenSaved && isSaveAsWorkspaceAction)) {
5061
- _context3.next = 41;
5026
+ _context3.next = 44;
5062
5027
  break;
5063
5028
  }
5064
- _context3.next = 39;
5065
- return workspaceApi.saveWorkspacePresetAs(newWorkspace);
5066
- case 39:
5029
+ _credentials = (_listenerApi$getState2 = listenerApi.getState().common) == null || (_listenerApi$getState2 = _listenerApi$getState2.auth) == null ? void 0 : _listenerApi$getState2.credentials;
5030
+ _context3.next = 42;
5031
+ return getQueryClient().fetchQuery(workspaceQueryOptions.saveWorkspacePresetAs(newWorkspace, _credentials));
5032
+ case 42:
5067
5033
  workspaceId = _context3.sent;
5068
5034
  newWorkspace = Object.assign({}, newWorkspace, {
5069
5035
  id: workspaceId
5070
5036
  });
5071
- case 41:
5037
+ case 44:
5072
5038
  listenerApi.dispatch(workspaceListActions.onSuccessWorkspaceSaveDialog({
5073
5039
  presetId: workspaceId
5074
5040
  }));
5075
5041
  if (isSaveAsWorkspaceAction) {
5076
- _context3.next = 45;
5042
+ _context3.next = 52;
5077
5043
  break;
5078
5044
  }
5079
- _context3.next = 45;
5080
- return workspaceApi.saveWorkspacePreset(workspaceId, newWorkspace);
5081
- case 45:
5045
+ hasChanges = hasWorkspaceChanges(listenerApi.getState());
5046
+ if (!hasChanges) {
5047
+ _context3.next = 52;
5048
+ break;
5049
+ }
5050
+ _context3.next = 50;
5051
+ return getQueryClient().fetchQuery(workspaceQueryOptions.saveWorkspacePreset(workspaceId, newWorkspace, credentials));
5052
+ case 50:
5053
+ _context3.next = 52;
5054
+ return getQueryClient().invalidateQueries(workspaceQueryOptions.getWorkspacePreset(presetId, credentials));
5055
+ case 52:
5082
5056
  listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
5083
5057
  action: presetAction,
5084
5058
  workspaceId: workspaceId,
@@ -5091,7 +5065,7 @@ workspaceListListener.startListening({
5091
5065
  listenerApi.dispatch(routerActions.navigateToUrl({
5092
5066
  url: getWorkspaceRouteUrl(workspaceId)
5093
5067
  }));
5094
- case 47:
5068
+ case 54:
5095
5069
  // Reset
5096
5070
  if (presetAction === WorkspacePresetAction.RESET) {
5097
5071
  // In case we're resetting the `New workspace` preset
@@ -5116,10 +5090,10 @@ workspaceListListener.startListening({
5116
5090
  scope: scope
5117
5091
  }));
5118
5092
  }
5119
- _context3.next = 55;
5093
+ _context3.next = 62;
5120
5094
  break;
5121
- case 50:
5122
- _context3.prev = 50;
5095
+ case 57:
5096
+ _context3.prev = 57;
5123
5097
  _context3.t0 = _context3["catch"](4);
5124
5098
  message = isAxiosError(_context3.t0) ? getAxiosErrorMessage(_context3.t0) : _context3.t0.message;
5125
5099
  category = isAxiosAuthError(_context3.t0) ? WorkspaceListErrorCategory.AUTH : WorkspaceListErrorCategory.GENERIC;
@@ -5130,11 +5104,11 @@ workspaceListListener.startListening({
5130
5104
  message: message
5131
5105
  }
5132
5106
  }));
5133
- case 55:
5107
+ case 62:
5134
5108
  case "end":
5135
5109
  return _context3.stop();
5136
5110
  }
5137
- }, _callee3, null, [[4, 50]]);
5111
+ }, _callee3, null, [[4, 57]]);
5138
5112
  }));
5139
5113
  function effect(_x5, _x6) {
5140
5114
  return _effect3.apply(this, arguments);
@@ -5207,21 +5181,25 @@ workspaceListener.startListening({
5207
5181
  actionCreator: workspaceActions.changePreset,
5208
5182
  effect: function () {
5209
5183
  var _effect3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref3, listenerApi) {
5210
- var _payload$workspacePre, _payload$workspacePre2;
5211
- var payload, allSyncGroups, isTimeScrollingEnabled, views;
5184
+ var _listenerApi$getOrigi, _payload$workspacePre, _payload$workspacePre2;
5185
+ var payload, originalMosaicNode, allSyncGroups, isTimeScrollingEnabled, views;
5212
5186
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
5213
5187
  while (1) switch (_context4.prev = _context4.next) {
5214
5188
  case 0:
5215
5189
  payload = _ref3.payload;
5216
5190
  // Cancel any in-progress instances of this listener
5217
5191
  listenerApi.cancelActiveListeners();
5218
- // see https://gitlab.com/opengeoweb/geoweb-assets/-/issues/4413
5219
- _context4.next = 4;
5220
- return listenerApi.condition(function (_action, currentState) {
5221
- var _currentState$workspa;
5222
- return ((_currentState$workspa = currentState.workspace) == null ? void 0 : _currentState$workspa.mosaicNode) === '';
5223
- }, 500);
5224
- case 4:
5192
+ // Unmount old components before changing workspace preset
5193
+ // Check state BEFORE reducer ran - if there was a workspace,
5194
+ // wait for React to unmount old components before setting up new ones
5195
+ originalMosaicNode = (_listenerApi$getOrigi = listenerApi.getOriginalState().workspace) == null ? void 0 : _listenerApi$getOrigi.mosaicNode;
5196
+ if (!originalMosaicNode) {
5197
+ _context4.next = 6;
5198
+ break;
5199
+ }
5200
+ _context4.next = 6;
5201
+ return listenerApi.take(workspaceActions.teardownComplete.match);
5202
+ case 6:
5225
5203
  listenerApi.dispatch(syncGroupsActions.syncGroupClear());
5226
5204
  listenerApi.dispatch(workspaceActions.setPreset(payload));
5227
5205
  allSyncGroups = getSyncGroups(payload.workspacePreset.syncGroups);
@@ -5236,7 +5214,7 @@ workspaceListener.startListening({
5236
5214
  isTimeScrollingEnabled: isTimeScrollingEnabled
5237
5215
  }));
5238
5216
  views = toViewsArray(payload.workspacePreset.views);
5239
- _context4.next = 14;
5217
+ _context4.next = 16;
5240
5218
  return Promise.all(views.map(/*#__PURE__*/function () {
5241
5219
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(view) {
5242
5220
  var _view$initialProps$sy, _view$initialProps;
@@ -5268,7 +5246,7 @@ workspaceListener.startListening({
5268
5246
  return _ref4.apply(this, arguments);
5269
5247
  };
5270
5248
  }()));
5271
- case 14:
5249
+ case 16:
5272
5250
  views.forEach(function (view) {
5273
5251
  var panelId = view.mosaicNodeId;
5274
5252
  if (!panelId) {
@@ -5280,7 +5258,7 @@ workspaceListener.startListening({
5280
5258
  isInline: hasInlineConfig
5281
5259
  }));
5282
5260
  });
5283
- case 15:
5261
+ case 17:
5284
5262
  case "end":
5285
5263
  return _context4.stop();
5286
5264
  }
@@ -5306,7 +5284,7 @@ var fetchWorkspaceViewPreset = /*#__PURE__*/function () {
5306
5284
  }));
5307
5285
  // fetch view
5308
5286
  _context5.next = 4;
5309
- return getQueryClient().fetchQuery(viewpresetsQueryOptions.getViewPreset(viewPresetId, credentials));
5287
+ return getQueryClient().fetchQuery(viewpresetQueryOptions.getViewPreset(viewPresetId, credentials));
5310
5288
  case 4:
5311
5289
  data = _context5.sent;
5312
5290
  dispatch(viewPresetActions.fetchedViewPreset({
@@ -5380,7 +5358,7 @@ workspaceListener.startListening({
5380
5358
  matcher: isAnyOf(workspaceActions.fetchWorkspace, routerActions.navigateBackOrForward),
5381
5359
  effect: function () {
5382
5360
  var _effect5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee9(action, listenerApi) {
5383
- var _listenerApi$getState2, common, payload, workspaceId, workspaceApi, _yield$workspaceApi$g, workspaceData, fullLoadingWorkspace, workspaceIdsInBatches, actionsToDispatch, errorType;
5361
+ var _listenerApi$getState2, common, payload, workspaceId, _common$auth, workspaceData, fullLoadingWorkspace, workspaceIdsInBatches, actionsToDispatch, errorType;
5384
5362
  return _regeneratorRuntime().wrap(function _callee9$(_context9) {
5385
5363
  while (1) switch (_context9.prev = _context9.next) {
5386
5364
  case 0:
@@ -5399,18 +5377,16 @@ workspaceListener.startListening({
5399
5377
  isWorkspaceListDialogOpen: false
5400
5378
  }));
5401
5379
  // fetch workspace
5402
- workspaceApi = getWorkspaceApi();
5403
- _context9.next = 10;
5404
- return workspaceApi.getWorkspacePreset(workspaceId);
5405
- case 10:
5406
- _yield$workspaceApi$g = _context9.sent;
5407
- workspaceData = _yield$workspaceApi$g.data;
5380
+ _context9.next = 9;
5381
+ return getQueryClient().fetchQuery(workspaceQueryOptions.getWorkspacePreset(workspaceId, common == null || (_common$auth = common.auth) == null ? void 0 : _common$auth.credentials));
5382
+ case 9:
5383
+ workspaceData = _context9.sent;
5408
5384
  if (workspaceData) {
5409
- _context9.next = 14;
5385
+ _context9.next = 12;
5410
5386
  break;
5411
5387
  }
5412
5388
  throw new Error(ERROR_NOT_FOUND);
5413
- case 14:
5389
+ case 12:
5414
5390
  listenerApi.dispatch(workspaceActions.loadedWorkspace({
5415
5391
  workspaceId: workspaceId,
5416
5392
  workspace: workspaceData
@@ -5420,6 +5396,12 @@ workspaceListener.startListening({
5420
5396
  listenerApi.dispatch(workspaceActions.changePreset({
5421
5397
  workspacePreset: fullLoadingWorkspace
5422
5398
  }));
5399
+ _context9.next = 17;
5400
+ return listenerApi.condition(function (_, state) {
5401
+ var _state$workspace;
5402
+ return ((_state$workspace = state.workspace) == null ? void 0 : _state$workspace.id) === fullLoadingWorkspace.id;
5403
+ });
5404
+ case 17:
5423
5405
  // fetch all individual view presets in batches and collect all actions
5424
5406
  workspaceIdsInBatches = getListInChunks(workspaceData.views);
5425
5407
  actionsToDispatch = [];
@@ -5441,9 +5423,7 @@ workspaceListener.startListening({
5441
5423
  }
5442
5424
  return _context7.abrupt("return");
5443
5425
  case 2:
5444
- return _context7.abrupt("return", fetchWorkspaceViewPreset(function (thunkAction) {
5445
- actionsToDispatch.push(thunkAction);
5446
- }, view.viewPresetId, view.mosaicNodeId, common == null ? void 0 : common.auth.credentials));
5426
+ return _context7.abrupt("return", fetchWorkspaceViewPreset(listenerApi.dispatch, view.viewPresetId, view.mosaicNodeId, common == null ? void 0 : common.auth.credentials));
5447
5427
  case 3:
5448
5428
  case "end":
5449
5429
  return _context7.stop();
@@ -5467,11 +5447,18 @@ workspaceListener.startListening({
5467
5447
  case 21:
5468
5448
  // Trigger all actions at once
5469
5449
  actionsToDispatch.map(listenerApi.dispatch);
5470
- _context9.next = 28;
5450
+ _context9.next = 31;
5471
5451
  break;
5472
5452
  case 24:
5473
5453
  _context9.prev = 24;
5474
5454
  _context9.t0 = _context9["catch"](4);
5455
+ if (!listenerApi.signal.aborted) {
5456
+ _context9.next = 29;
5457
+ break;
5458
+ }
5459
+ console.warn('Fetch workspace listener was canceled, this should not happen too often. Triggers on mount in strict mode.');
5460
+ return _context9.abrupt("return");
5461
+ case 29:
5475
5462
  errorType = _context9.t0.message === ERROR_NOT_FOUND ? WorkspaceErrorType.NOT_FOUND : WorkspaceErrorType.GENERIC;
5476
5463
  listenerApi.dispatch(workspaceActions.errorWorkspace({
5477
5464
  workspaceId: workspaceId,
@@ -5480,7 +5467,7 @@ workspaceListener.startListening({
5480
5467
  type: errorType
5481
5468
  }
5482
5469
  }));
5483
- case 28:
5470
+ case 31:
5484
5471
  case "end":
5485
5472
  return _context9.stop();
5486
5473
  }
@@ -5496,7 +5483,7 @@ workspaceListener.startListening({
5496
5483
  actionCreator: workspaceActions.saveWorkspacePreset,
5497
5484
  effect: function () {
5498
5485
  var _effect6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee0(_ref9, listenerApi) {
5499
- var payload, workspace, _workspace$scope, workspaceApi;
5486
+ var payload, workspace, _listenerApi$getState3, _workspace$scope, credentials;
5500
5487
  return _regeneratorRuntime().wrap(function _callee0$(_context0) {
5501
5488
  while (1) switch (_context0.prev = _context0.next) {
5502
5489
  case 0:
@@ -5505,10 +5492,13 @@ workspaceListener.startListening({
5505
5492
  listenerApi.cancelActiveListeners();
5506
5493
  workspace = payload.workspace;
5507
5494
  _context0.prev = 3;
5508
- workspaceApi = getWorkspaceApi();
5495
+ credentials = (_listenerApi$getState3 = listenerApi.getState().common) == null || (_listenerApi$getState3 = _listenerApi$getState3.auth) == null ? void 0 : _listenerApi$getState3.credentials;
5509
5496
  _context0.next = 7;
5510
- return workspaceApi.saveWorkspacePreset(workspace.id, workspace);
5497
+ return getQueryClient().fetchQuery(workspaceQueryOptions.saveWorkspacePreset(workspace.id, workspace, credentials));
5511
5498
  case 7:
5499
+ _context0.next = 9;
5500
+ return getQueryClient().invalidateQueries(workspaceQueryOptions.getWorkspacePreset(workspace.id, credentials));
5501
+ case 9:
5512
5502
  listenerApi.dispatch(workspaceActions.loadedWorkspace(undefined));
5513
5503
  listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
5514
5504
  action: WorkspacePresetAction.SAVE,
@@ -5517,10 +5507,10 @@ workspaceListener.startListening({
5517
5507
  scope: (_workspace$scope = workspace.scope) != null ? _workspace$scope : 'user',
5518
5508
  views: workspace.views || [emptyWorkspaceBEData]
5519
5509
  }));
5520
- _context0.next = 14;
5510
+ _context0.next = 16;
5521
5511
  break;
5522
- case 11:
5523
- _context0.prev = 11;
5512
+ case 13:
5513
+ _context0.prev = 13;
5524
5514
  _context0.t0 = _context0["catch"](3);
5525
5515
  listenerApi.dispatch(workspaceActions.errorWorkspace({
5526
5516
  workspaceId: workspace.id,
@@ -5529,11 +5519,11 @@ workspaceListener.startListening({
5529
5519
  type: WorkspaceErrorType.SAVE
5530
5520
  }
5531
5521
  }));
5532
- case 14:
5522
+ case 16:
5533
5523
  case "end":
5534
5524
  return _context0.stop();
5535
5525
  }
5536
- }, _callee0, null, [[3, 11]]);
5526
+ }, _callee0, null, [[3, 13]]);
5537
5527
  }));
5538
5528
  function effect(_x16, _x17) {
5539
5529
  return _effect6.apply(this, arguments);
@@ -5545,17 +5535,24 @@ workspaceListener.startListening({
5545
5535
  actionCreator: workspaceActions.changeToEmptyMapWorkspace,
5546
5536
  effect: function () {
5547
5537
  var _effect7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee1(action, listenerApi) {
5548
- var _action$payload, newMapPresetText, newWorkspaceText, intialViewMapPreset;
5538
+ var _action$payload, newMapPresetText, newWorkspaceText, currentWorkspace, intialViewMapPreset;
5549
5539
  return _regeneratorRuntime().wrap(function _callee1$(_context1) {
5550
5540
  while (1) switch (_context1.prev = _context1.next) {
5551
5541
  case 0:
5552
5542
  _action$payload = action.payload, newMapPresetText = _action$payload.newMapPresetText, newWorkspaceText = _action$payload.newWorkspaceText; // Cancel any in-progress instances of this listener
5553
5543
  listenerApi.cancelActiveListeners();
5544
+ currentWorkspace = listenerApi.getState().workspace;
5545
+ if (!((currentWorkspace == null ? void 0 : currentWorkspace.id) === '' && currentWorkspace != null && currentWorkspace.mosaicNode)) {
5546
+ _context1.next = 5;
5547
+ break;
5548
+ }
5549
+ return _context1.abrupt("return");
5550
+ case 5:
5554
5551
  intialViewMapPreset = mapSelectors.getdefaultMapSettings(listenerApi.getState());
5555
5552
  listenerApi.dispatch(workspaceActions.changePreset({
5556
5553
  workspacePreset: createCustomEmptyMapWorkspace(newWorkspaceText, newMapPresetText, intialViewMapPreset)
5557
5554
  }));
5558
- case 4:
5555
+ case 7:
5559
5556
  case "end":
5560
5557
  return _context1.stop();
5561
5558
  }
@@ -5648,27 +5645,46 @@ workspaceListener.startListening({
5648
5645
  return effect;
5649
5646
  }()
5650
5647
  });
5648
+ var waitForFrame = /*#__PURE__*/function () {
5649
+ var _ref1 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {
5650
+ return _regeneratorRuntime().wrap(function _callee11$(_context11) {
5651
+ while (1) switch (_context11.prev = _context11.next) {
5652
+ case 0:
5653
+ return _context11.abrupt("return", new Promise(function (resolve) {
5654
+ requestAnimationFrame(function () {
5655
+ return resolve();
5656
+ });
5657
+ }));
5658
+ case 1:
5659
+ case "end":
5660
+ return _context11.stop();
5661
+ }
5662
+ }, _callee11);
5663
+ }));
5664
+ return function waitForFrame() {
5665
+ return _ref1.apply(this, arguments);
5666
+ };
5667
+ }();
5651
5668
  workspaceListener.startListening({
5652
5669
  actionCreator: workspaceActions.updateWorkspaceViews,
5653
5670
  effect: function () {
5654
- var _effect9 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee11(_, listenerApi) {
5671
+ var _effect9 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee12(_, listenerApi) {
5655
5672
  var viewIds;
5656
- return _regeneratorRuntime().wrap(function _callee11$(_context11) {
5657
- while (1) switch (_context11.prev = _context11.next) {
5673
+ return _regeneratorRuntime().wrap(function _callee12$(_context12) {
5674
+ while (1) switch (_context12.prev = _context12.next) {
5658
5675
  case 0:
5659
5676
  // Cancel any in-progress instances of this listener
5660
5677
  listenerApi.cancelActiveListeners();
5661
- // Delay before starting actual work
5662
- _context11.next = 3;
5663
- return listenerApi.delay(100);
5678
+ _context12.next = 3;
5679
+ return waitForFrame();
5664
5680
  case 3:
5665
5681
  /* This will trigger all maps and other components
5666
5682
  to get the correct size after views are updated */
5667
5683
  window.dispatchEvent(new Event('resize'));
5668
5684
  // Adjust the bbox of the original view after the new map is added. This is a temporal solution until the OpenLayers ticket
5669
5685
  // https://github.com/openlayers/openlayers/issues/16572 is solved.
5670
- _context11.next = 6;
5671
- return listenerApi.delay(10);
5686
+ _context12.next = 6;
5687
+ return waitForFrame();
5672
5688
  case 6:
5673
5689
  viewIds = getViewIds(listenerApi.getState());
5674
5690
  viewIds.forEach(function (viewId) {
@@ -5684,9 +5700,9 @@ workspaceListener.startListening({
5684
5700
  });
5685
5701
  case 8:
5686
5702
  case "end":
5687
- return _context11.stop();
5703
+ return _context12.stop();
5688
5704
  }
5689
- }, _callee11);
5705
+ }, _callee12);
5690
5706
  }));
5691
5707
  function effect(_x22, _x23) {
5692
5708
  return _effect9.apply(this, arguments);
@@ -5804,39 +5820,38 @@ viewPresetsListener.startListening({
5804
5820
  actionCreator: viewPresetActions.fetchViewPresets,
5805
5821
  effect: function () {
5806
5822
  var _effect = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref, listenerApi) {
5807
- var payload, panelId, filterParams, workspaceApi, _yield$workspaceApi$g, viewPresets;
5823
+ var payload, _listenerApi$getState, common, panelId, filterParams, viewPresets;
5808
5824
  return _regeneratorRuntime().wrap(function _callee$(_context) {
5809
5825
  while (1) switch (_context.prev = _context.next) {
5810
5826
  case 0:
5811
5827
  payload = _ref.payload;
5812
5828
  listenerApi.cancelActiveListeners();
5829
+ _listenerApi$getState = listenerApi.getState(), common = _listenerApi$getState.common;
5813
5830
  panelId = payload.panelId, filterParams = payload.filterParams;
5814
- _context.prev = 3;
5815
- workspaceApi = getWorkspaceApi();
5831
+ _context.prev = 4;
5816
5832
  _context.next = 7;
5817
- return workspaceApi.getViewPresets(filterParams);
5833
+ return getQueryClient().fetchQuery(viewpresetQueryOptions.getViewPresets(filterParams, common == null ? void 0 : common.auth.credentials));
5818
5834
  case 7:
5819
- _yield$workspaceApi$g = _context.sent;
5820
- viewPresets = _yield$workspaceApi$g.data;
5835
+ viewPresets = _context.sent;
5821
5836
  listenerApi.dispatch(viewPresetActions.fetchedViewPresets({
5822
5837
  viewPresets: viewPresets,
5823
5838
  panelId: panelId,
5824
5839
  filterParams: filterParams
5825
5840
  }));
5826
- _context.next = 15;
5841
+ _context.next = 14;
5827
5842
  break;
5828
- case 12:
5829
- _context.prev = 12;
5830
- _context.t0 = _context["catch"](3);
5843
+ case 11:
5844
+ _context.prev = 11;
5845
+ _context.t0 = _context["catch"](4);
5831
5846
  listenerApi.dispatch(viewPresetActions.errorViewPreset({
5832
5847
  error: processError(_context.t0, ViewPresetErrorComponent.PRESET_LIST, 'workspace-mappreset-error-fetch'),
5833
5848
  panelId: panelId
5834
5849
  }));
5835
- case 15:
5850
+ case 14:
5836
5851
  case "end":
5837
5852
  return _context.stop();
5838
5853
  }
5839
- }, _callee, null, [[3, 12]]);
5854
+ }, _callee, null, [[4, 11]]);
5840
5855
  }));
5841
5856
  function effect(_x, _x2) {
5842
5857
  return _effect.apply(this, arguments);
@@ -5849,21 +5864,20 @@ viewPresetsListener.startListening({
5849
5864
  actionCreator: viewPresetsListActions.fetchViewPresetsList,
5850
5865
  effect: function () {
5851
5866
  var _effect2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_, listenerApi) {
5852
- var workspaceApi, _yield$workspaceApi$g2, viewPresets;
5867
+ var _listenerApi$getState2, common, viewPresets;
5853
5868
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
5854
5869
  while (1) switch (_context2.prev = _context2.next) {
5855
5870
  case 0:
5871
+ _listenerApi$getState2 = listenerApi.getState(), common = _listenerApi$getState2.common;
5856
5872
  listenerApi.cancelActiveListeners();
5857
- workspaceApi = getWorkspaceApi();
5858
5873
  _context2.next = 4;
5859
- return workspaceApi.getViewPresets();
5874
+ return getQueryClient().fetchQuery(viewpresetQueryOptions.getViewPresets(undefined, common == null ? void 0 : common.auth.credentials));
5860
5875
  case 4:
5861
- _yield$workspaceApi$g2 = _context2.sent;
5862
- viewPresets = _yield$workspaceApi$g2.data;
5876
+ viewPresets = _context2.sent;
5863
5877
  listenerApi.dispatch(viewPresetsListActions.fetchedViewPresetsList({
5864
5878
  viewPresets: viewPresets
5865
5879
  }));
5866
- case 7:
5880
+ case 6:
5867
5881
  case "end":
5868
5882
  return _context2.stop();
5869
5883
  }
@@ -5990,51 +6004,54 @@ viewPresetsListener.startListening({
5990
6004
  listenerApi.cancelActiveListeners();
5991
6005
  action = payload.action, viewPresetId = payload.viewPresetId, title = payload.title, panelId = payload.panelId; // eslint-disable-next-line @typescript-eslint/naming-convention
5992
6006
  is_shared = 'is_shared' in payload ? payload.is_shared : undefined;
5993
- _context6.prev = 4;
5994
- listenerApi.dispatch(snackbarActions.openSnackbar(getSnackbarMessage(action, title, is_shared)));
5995
- activeMapPresetId = getViewPresetActiveId(listenerApi.getState(), panelId);
5996
- hasChanges = false; // if active preset has been deleted, select the empty new preset
5997
- if (action === PresetAction.DELETE && viewPresetId === activeMapPresetId) {
5998
- listenerApi.dispatch(viewPresetActions.setActiveViewPresetId({
5999
- panelId: panelId,
6000
- viewPresetId: ''
6001
- }));
6002
- hasChanges = true;
6003
- }
6004
- // Fetch the full list to update the list store with the latest presets
6005
- listenerApi.dispatch(viewPresetsListActions.fetchViewPresetsList());
6006
- // Also retrieve new list with current filter and search query for current panel
6007
- viewPresetFilters = getViewPresetListFiltersForView(listenerApi.getState(), panelId);
6008
- viewPresetSearchQuery = getViewPresetListSearchQueryForView(listenerApi.getState(), panelId);
6009
- listenerApi.dispatch(viewPresetActions.fetchViewPresets({
6010
- panelId: panelId,
6011
- filterParams: constructFilterParams(viewPresetFilters, viewPresetSearchQuery)
6012
- }));
6013
- if (action !== PresetAction.EDIT) {
6014
- listenerApi.dispatch(viewPresetActions.setViewPresetHasChanges({
6015
- panelId: panelId,
6016
- hasChanges: hasChanges
6017
- }));
6018
- }
6019
- if (action === PresetAction.SAVE_AS && viewPresetId) {
6020
- listenerApi.dispatch(viewPresetActions.setActiveViewPresetId({
6007
+ _context6.next = 6;
6008
+ return getQueryClient().invalidateQueries(viewpresetQueryOptions.getViewPreset(viewPresetId));
6009
+ case 6:
6010
+ _context6.next = 8;
6011
+ return getQueryClient().invalidateQueries({
6012
+ queryKey: viewpresetQueryOptions.keys.lists()
6013
+ });
6014
+ case 8:
6015
+ try {
6016
+ listenerApi.dispatch(snackbarActions.openSnackbar(getSnackbarMessage(action, title, is_shared)));
6017
+ activeMapPresetId = getViewPresetActiveId(listenerApi.getState(), panelId);
6018
+ hasChanges = false; // if active preset has been deleted, select the empty new preset
6019
+ if (action === PresetAction.DELETE && viewPresetId === activeMapPresetId) {
6020
+ listenerApi.dispatch(viewPresetActions.setActiveViewPresetId({
6021
+ panelId: panelId,
6022
+ viewPresetId: ''
6023
+ }));
6024
+ hasChanges = true;
6025
+ }
6026
+ // Fetch the full list to update the list store with the latest presets
6027
+ listenerApi.dispatch(viewPresetsListActions.fetchViewPresetsList());
6028
+ // Also retrieve new list with current filter and search query for current panel
6029
+ viewPresetFilters = getViewPresetListFiltersForView(listenerApi.getState(), panelId);
6030
+ viewPresetSearchQuery = getViewPresetListSearchQueryForView(listenerApi.getState(), panelId);
6031
+ listenerApi.dispatch(viewPresetActions.fetchViewPresets({
6021
6032
  panelId: panelId,
6022
- viewPresetId: viewPresetId
6033
+ filterParams: constructFilterParams(viewPresetFilters, viewPresetSearchQuery)
6023
6034
  }));
6035
+ if (action !== PresetAction.EDIT) {
6036
+ listenerApi.dispatch(viewPresetActions.setViewPresetHasChanges({
6037
+ panelId: panelId,
6038
+ hasChanges: hasChanges
6039
+ }));
6040
+ }
6041
+ if (action === PresetAction.SAVE_AS && viewPresetId && payload.shouldSetActiveViewPreset !== false) {
6042
+ listenerApi.dispatch(viewPresetActions.setActiveViewPresetId({
6043
+ panelId: panelId,
6044
+ viewPresetId: viewPresetId
6045
+ }));
6046
+ }
6047
+ } catch (_error) {
6048
+ // TODO: use error handling of mapPreset https://gitlab.com/opengeoweb/opengeoweb/-/issues/3043
6024
6049
  }
6025
- _context6.next = 17;
6026
- return getQueryClient().invalidateQueries(viewpresetsQueryOptions.getViewPreset(viewPresetId));
6027
- case 17:
6028
- _context6.next = 21;
6029
- break;
6030
- case 19:
6031
- _context6.prev = 19;
6032
- _context6.t0 = _context6["catch"](4);
6033
- case 21:
6050
+ case 9:
6034
6051
  case "end":
6035
6052
  return _context6.stop();
6036
6053
  }
6037
- }, _callee6, null, [[4, 19]]);
6054
+ }, _callee6);
6038
6055
  }));
6039
6056
  function effect(_x1, _x10) {
6040
6057
  return _effect4.apply(this, arguments);
@@ -6072,6 +6089,7 @@ var workspaceReducersMap = {
6072
6089
  viewPresetsList: viewPresetsListReducer,
6073
6090
  viewPresets: viewPresetsReducer,
6074
6091
  timeSeries: timeSeriesReducer,
6092
+ soundings: soundingsReducer,
6075
6093
  snackbar: snackbarReducer
6076
6094
  };
6077
6095
  var workspaceMiddlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, syncGroupsListener.middleware, workspaceListener.middleware, workspaceListListener.middleware, viewPresetsListener.middleware, snackbarListener.middleware, openlayersListener.middleware];
@@ -6765,245 +6783,11 @@ var defaultComponentsLookUp = function defaultComponentsLookUp(_ref3) {
6765
6783
  case 'ViewError':
6766
6784
  return jsx(ViewError, {
6767
6785
  mosaicNodeId: mosaicNodeId,
6768
- viewPresetId: viewPresetId
6769
- });
6770
- default:
6771
- return null;
6772
- }
6773
- };
6774
-
6775
- var config = sessionStorageProvider.getConfig();
6776
- var presetBaseUrl = (config == null ? void 0 : config.GW_PRESET_BACKEND_URL) || '';
6777
- var labelsConfigUrl = '/assets/workspaceLabelsConfig.json';
6778
- var getWorkspaceLabelsConfig = /*#__PURE__*/function () {
6779
- var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
6780
- return _regeneratorRuntime().wrap(function _callee$(_context) {
6781
- while (1) switch (_context.prev = _context.next) {
6782
- case 0:
6783
- return _context.abrupt("return", fetch(labelsConfigUrl).then(handleResponse));
6784
- case 1:
6785
- case "end":
6786
- return _context.stop();
6787
- }
6788
- }, _callee);
6789
- }));
6790
- return function getWorkspaceLabelsConfig() {
6791
- return _ref.apply(this, arguments);
6792
- };
6793
- }();
6794
- var getWorkspace = /*#__PURE__*/function () {
6795
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(workspaceId, auth) {
6796
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
6797
- while (1) switch (_context2.prev = _context2.next) {
6798
- case 0:
6799
- return _context2.abrupt("return", fetch(presetBaseUrl + "/workspacepreset/" + workspaceId, {
6800
- headers: getHeaders(auth)
6801
- }).then(handleResponse));
6802
- case 1:
6803
- case "end":
6804
- return _context2.stop();
6805
- }
6806
- }, _callee2);
6807
- }));
6808
- return function getWorkspace(_x, _x2) {
6809
- return _ref2.apply(this, arguments);
6810
- };
6811
- }();
6812
- var deleteWorkspace = /*#__PURE__*/function () {
6813
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(workspaceId, auth) {
6814
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
6815
- while (1) switch (_context3.prev = _context3.next) {
6816
- case 0:
6817
- return _context3.abrupt("return", fetch(presetBaseUrl + "/workspacepreset/" + workspaceId, {
6818
- headers: getHeaders(auth),
6819
- method: 'DELETE'
6820
- }).then(handleResponse));
6821
- case 1:
6822
- case "end":
6823
- return _context3.stop();
6824
- }
6825
- }, _callee3);
6826
- }));
6827
- return function deleteWorkspace(_x3, _x4) {
6828
- return _ref3.apply(this, arguments);
6829
- };
6830
- }();
6831
- var updateWorkspace = /*#__PURE__*/function () {
6832
- var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(workspaceId, data, auth) {
6833
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
6834
- while (1) switch (_context4.prev = _context4.next) {
6835
- case 0:
6836
- return _context4.abrupt("return", fetch(presetBaseUrl + "/workspacepreset/" + workspaceId, {
6837
- headers: getHeaders(auth),
6838
- method: 'PUT',
6839
- body: JSON.stringify(data)
6840
- }).then(handleResponse));
6841
- case 1:
6842
- case "end":
6843
- return _context4.stop();
6844
- }
6845
- }, _callee4);
6846
- }));
6847
- return function updateWorkspace(_x5, _x6, _x7) {
6848
- return _ref4.apply(this, arguments);
6849
- };
6850
- }();
6851
- var createWorkspace = /*#__PURE__*/function () {
6852
- var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(data, auth) {
6853
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
6854
- while (1) switch (_context5.prev = _context5.next) {
6855
- case 0:
6856
- return _context5.abrupt("return", fetch(presetBaseUrl + "/workspacepreset", {
6857
- headers: getHeaders(auth),
6858
- method: 'POST',
6859
- body: JSON.stringify(data)
6860
- }).then(handleResponse));
6861
- case 1:
6862
- case "end":
6863
- return _context5.stop();
6864
- }
6865
- }, _callee5);
6866
- }));
6867
- return function createWorkspace(_x8, _x9) {
6868
- return _ref5.apply(this, arguments);
6869
- };
6870
- }();
6871
-
6872
- var useWorkspaceLabelsConfig = function useWorkspaceLabelsConfig() {
6873
- return useQuery({
6874
- queryKey: ['workspace-labels-config'],
6875
- queryFn: getWorkspaceLabelsConfig
6876
- });
6877
- };
6878
- var onWorkspaceApiError = function onWorkspaceApiError(dispatch, error, t) {
6879
- dispatch(workspaceListActions.onErrorWorkspacePresetAction({
6880
- error: {
6881
- message: error.message + " " + t('workspace-error-generic'),
6882
- type: WorkspaceListErrorType.VERBATIM_ERROR,
6883
- category: error.message === 'Authentication context not found' ? WorkspaceListErrorCategory.AUTH : WorkspaceListErrorCategory.GENERIC
6884
- }
6885
- }));
6886
- };
6887
- var useDeleteWorkspacePreset = function useDeleteWorkspacePreset() {
6888
- var _useAuthenticationCon = useAuthenticationContext(),
6889
- auth = _useAuthenticationCon.auth;
6890
- var _useSelector = useSelector(getWorkspaceActionFormValues),
6891
- title = _useSelector.title;
6892
- var _useWorkspaceTranslat = useWorkspaceTranslation(),
6893
- t = _useWorkspaceTranslat.t;
6894
- var dispatch = useDispatch();
6895
- return useMutation({
6896
- mutationFn: function () {
6897
- var _mutationFn = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
6898
- var id;
6899
- return _regeneratorRuntime().wrap(function _callee$(_context) {
6900
- while (1) switch (_context.prev = _context.next) {
6901
- case 0:
6902
- id = _ref.id;
6903
- if (auth) {
6904
- _context.next = 3;
6905
- break;
6906
- }
6907
- throw new Error('Authentication context not found');
6908
- case 3:
6909
- return _context.abrupt("return", deleteWorkspace(id, auth));
6910
- case 4:
6911
- case "end":
6912
- return _context.stop();
6913
- }
6914
- }, _callee);
6915
- }));
6916
- function mutationFn(_x) {
6917
- return _mutationFn.apply(this, arguments);
6918
- }
6919
- return mutationFn;
6920
- }(),
6921
- onSuccess: function onSuccess(data, variables) {
6922
- dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
6923
- workspaceId: variables.id,
6924
- action: WorkspacePresetAction.DELETE,
6925
- emptyWorkspacePresetTitle: t('workspace-new'),
6926
- title: title
6927
- }));
6928
- },
6929
- onError: function onError(error) {
6930
- onWorkspaceApiError(dispatch, error, t);
6931
- }
6932
- });
6933
- };
6934
- var useCreateWorkspacePreset = function useCreateWorkspacePreset() {
6935
- var _useAuthenticationCon2 = useAuthenticationContext(),
6936
- auth = _useAuthenticationCon2.auth;
6937
- var _useWorkspaceTranslat2 = useWorkspaceTranslation(),
6938
- t = _useWorkspaceTranslat2.t;
6939
- var dispatch = useDispatch();
6940
- return useMutation({
6941
- mutationFn: function () {
6942
- var _mutationFn2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2) {
6943
- var data;
6944
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
6945
- while (1) switch (_context2.prev = _context2.next) {
6946
- case 0:
6947
- data = _ref2.data;
6948
- if (auth) {
6949
- _context2.next = 3;
6950
- break;
6951
- }
6952
- throw new Error('Authentication context not found');
6953
- case 3:
6954
- return _context2.abrupt("return", createWorkspace(data, auth));
6955
- case 4:
6956
- case "end":
6957
- return _context2.stop();
6958
- }
6959
- }, _callee2);
6960
- }));
6961
- function mutationFn(_x2) {
6962
- return _mutationFn2.apply(this, arguments);
6963
- }
6964
- return mutationFn;
6965
- }(),
6966
- onSuccess: function onSuccess(data, variables) {
6967
- var location = data == null ? void 0 : data.get('location');
6968
- var newId = getIdFromUrl(location);
6969
- var scope = variables.data.scope || 'user';
6970
- dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
6971
- workspaceId: newId,
6972
- action: variables.action || WorkspacePresetAction.SAVE_AS,
6973
- title: variables.data.title,
6974
- scope: scope
6975
- }));
6976
- },
6977
- onError: function onError(error) {
6978
- onWorkspaceApiError(dispatch, error, t);
6979
- }
6980
- });
6981
- };
6982
-
6983
- /* *
6984
- * Licensed under the Apache License, Version 2.0 (the "License");
6985
- * you may not use this file except in compliance with the License.
6986
- * You may obtain a copy of the License at
6987
- *
6988
- * http://www.apache.org/licenses/LICENSE-2.0
6989
- *
6990
- * Unless required by applicable law or agreed to in writing, software
6991
- * distributed under the License is distributed on an "AS IS" BASIS,
6992
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
6993
- * See the License for the specific language governing permissions and
6994
- * limitations under the License.
6995
- *
6996
- * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
6997
- * Copyright 2025 - Finnish Meteorological Institute (FMI)
6998
- * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
6999
- * */
7000
- var LABELS_CONFIG_DEFAULT = {
7001
- purpose: ['Aviation', 'Monitor', 'Public', 'Maritime', 'Warning', 'Media', 'Nowcasting (0–12h)'],
7002
- parameters: ['Pressure', 'Temperature', 'Wind', 'Humidity', 'Water vapour', 'Visibility', 'Geopotential', 'Snow', 'Cloud', 'Waves', 'Index', 'Precipitation'],
7003
- phenomena: ['Turbulence', 'MTW', 'CAT', 'Icing', 'Freezing rain', 'FlashFlood', 'Wind gust', 'Rain', 'Snow', 'Road ice', 'Lightning strike', 'Drifting snow', 'Wave height + water level', 'Forest fire', 'Polar Low', 'Heat wave', 'Gale warning'],
7004
- viewType: [].concat(ALL_COMPONENT_TYPES),
7005
- dataType: ['observation', 'forecast', 'archive'],
7006
- dataSource: ['Meps', 'Arome Arctic', 'Ecmwf', 'Ensemble', 'AIFS', 'BRIS', 'radar', 'satellite', 'synop']
6786
+ viewPresetId: viewPresetId
6787
+ });
6788
+ default:
6789
+ return null;
6790
+ }
7007
6791
  };
7008
6792
 
7009
6793
  var VIEW_TYPE_KEY = 'viewType';
@@ -7037,13 +6821,12 @@ var PresetLabelsPanel = function PresetLabelsPanel(_ref) {
7037
6821
  control: control,
7038
6822
  name: 'views'
7039
6823
  });
7040
- var availableLabels = labelsConfig != null ? labelsConfig : LABELS_CONFIG_DEFAULT;
7041
6824
  var labels = React.useMemo(function () {
7042
- return normalizeLabels(watchedLabels, availableLabels);
7043
- }, [watchedLabels, availableLabels]);
6825
+ return normalizeLabels(watchedLabels, labelsConfig);
6826
+ }, [watchedLabels, labelsConfig]);
7044
6827
  var groupKeys = React.useMemo(function () {
7045
- return Array.from(new Set([VIEW_TYPE_KEY].concat(Object.keys(availableLabels != null ? availableLabels : {}), watchedLabels ? Object.keys(watchedLabels) : [])));
7046
- }, [availableLabels, watchedLabels]);
6828
+ return Array.from(new Set([VIEW_TYPE_KEY].concat(Object.keys(labelsConfig != null ? labelsConfig : {}), watchedLabels ? Object.keys(watchedLabels) : [])));
6829
+ }, [labelsConfig, watchedLabels]);
7047
6830
  var orderedGroupKeys = React.useMemo(function () {
7048
6831
  var withoutViewType = groupKeys.filter(function (key) {
7049
6832
  return key !== VIEW_TYPE_KEY;
@@ -7105,9 +6888,9 @@ var PresetLabelsPanel = function PresetLabelsPanel(_ref) {
7105
6888
  return (_labels$VIEW_TYPE_KEY = labels[VIEW_TYPE_KEY]) != null ? _labels$VIEW_TYPE_KEY : [];
7106
6889
  }, [labels]);
7107
6890
  var viewTypeConfigItems = React.useMemo(function () {
7108
- var _availableLabels$VIEW;
7109
- return ((_availableLabels$VIEW = availableLabels == null ? void 0 : availableLabels[VIEW_TYPE_KEY]) != null ? _availableLabels$VIEW : []).slice();
7110
- }, [availableLabels]);
6891
+ var _labelsConfig$VIEW_TY;
6892
+ return ((_labelsConfig$VIEW_TY = labelsConfig == null ? void 0 : labelsConfig[VIEW_TYPE_KEY]) != null ? _labelsConfig$VIEW_TY : []).slice();
6893
+ }, [labelsConfig]);
7111
6894
  var viewTypeItems = React.useMemo(function () {
7112
6895
  if (isMenuFilterMode) {
7113
6896
  if (viewTypeConfigItems.length > 0) {
@@ -7194,9 +6977,9 @@ var PresetLabelsPanel = function PresetLabelsPanel(_ref) {
7194
6977
  };
7195
6978
  var groups = React.useMemo(function () {
7196
6979
  return orderedGroupKeys.map(function (key) {
7197
- var _availableLabels$key;
6980
+ var _labelsConfig$key;
7198
6981
  var isViewType = key === VIEW_TYPE_KEY;
7199
- var items = isViewType ? viewTypeItems : (_availableLabels$key = availableLabels[key]) != null ? _availableLabels$key : [];
6982
+ var items = isViewType ? viewTypeItems : (_labelsConfig$key = labelsConfig[key]) != null ? _labelsConfig$key : [];
7200
6983
  var locked = !isMenuFilterMode && isViewType;
7201
6984
  return {
7202
6985
  key: key,
@@ -7205,7 +6988,7 @@ var PresetLabelsPanel = function PresetLabelsPanel(_ref) {
7205
6988
  locked: locked
7206
6989
  };
7207
6990
  });
7208
- }, [orderedGroupKeys, availableLabels, viewTypeItems, isMenuFilterMode, titleForGroup]);
6991
+ }, [orderedGroupKeys, labelsConfig, viewTypeItems, isMenuFilterMode, titleForGroup]);
7209
6992
  var _React$useState = React.useState(false),
7210
6993
  expandAll = _React$useState[0],
7211
6994
  setExpandAll = _React$useState[1];
@@ -7397,11 +7180,183 @@ var PresetLabelsPanel = function PresetLabelsPanel(_ref) {
7397
7180
  });
7398
7181
  };
7399
7182
 
7183
+ var useWorkspaceLabelsConfig = function useWorkspaceLabelsConfig() {
7184
+ var _useAuthenticationCon = useAuthenticationContext(),
7185
+ auth = _useAuthenticationCon.auth;
7186
+ return useQuery({
7187
+ queryKey: ['workspace-labels-config'],
7188
+ queryFn: function () {
7189
+ var _queryFn = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
7190
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
7191
+ while (1) switch (_context.prev = _context.next) {
7192
+ case 0:
7193
+ return _context.abrupt("return", getWorkspaceLabelsConfig(auth));
7194
+ case 1:
7195
+ case "end":
7196
+ return _context.stop();
7197
+ }
7198
+ }, _callee);
7199
+ }));
7200
+ function queryFn() {
7201
+ return _queryFn.apply(this, arguments);
7202
+ }
7203
+ return queryFn;
7204
+ }()
7205
+ });
7206
+ };
7207
+ var onWorkspaceApiError = function onWorkspaceApiError(dispatch, error, t) {
7208
+ dispatch(workspaceListActions.onErrorWorkspacePresetAction({
7209
+ error: {
7210
+ message: error.message + " " + t('workspace-error-generic'),
7211
+ type: WorkspaceListErrorType.VERBATIM_ERROR,
7212
+ category: error.message === 'Authentication context not found' ? WorkspaceListErrorCategory.AUTH : WorkspaceListErrorCategory.GENERIC
7213
+ }
7214
+ }));
7215
+ };
7216
+ var useDeleteWorkspacePreset = function useDeleteWorkspacePreset() {
7217
+ var _useAuthenticationCon2 = useAuthenticationContext(),
7218
+ auth = _useAuthenticationCon2.auth;
7219
+ var _useSelector = useSelector(getWorkspaceActionFormValues),
7220
+ title = _useSelector.title;
7221
+ var _useWorkspaceTranslat = useWorkspaceTranslation(),
7222
+ t = _useWorkspaceTranslat.t;
7223
+ var dispatch = useDispatch();
7224
+ return useMutation({
7225
+ mutationFn: function () {
7226
+ var _mutationFn = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref) {
7227
+ var id;
7228
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
7229
+ while (1) switch (_context2.prev = _context2.next) {
7230
+ case 0:
7231
+ id = _ref.id;
7232
+ if (auth) {
7233
+ _context2.next = 3;
7234
+ break;
7235
+ }
7236
+ throw new Error('Authentication context not found');
7237
+ case 3:
7238
+ return _context2.abrupt("return", deleteWorkspace(id, auth));
7239
+ case 4:
7240
+ case "end":
7241
+ return _context2.stop();
7242
+ }
7243
+ }, _callee2);
7244
+ }));
7245
+ function mutationFn(_x) {
7246
+ return _mutationFn.apply(this, arguments);
7247
+ }
7248
+ return mutationFn;
7249
+ }(),
7250
+ onSuccess: function onSuccess(data, variables) {
7251
+ dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
7252
+ workspaceId: variables.id,
7253
+ action: WorkspacePresetAction.DELETE,
7254
+ emptyWorkspacePresetTitle: t('workspace-new'),
7255
+ title: title
7256
+ }));
7257
+ },
7258
+ onError: function onError(error) {
7259
+ onWorkspaceApiError(dispatch, error, t);
7260
+ }
7261
+ });
7262
+ };
7263
+ var useCreateWorkspacePreset = function useCreateWorkspacePreset() {
7264
+ var _useAuthenticationCon3 = useAuthenticationContext(),
7265
+ auth = _useAuthenticationCon3.auth;
7266
+ var _useWorkspaceTranslat2 = useWorkspaceTranslation(),
7267
+ t = _useWorkspaceTranslat2.t;
7268
+ var dispatch = useDispatch();
7269
+ return useMutation({
7270
+ mutationFn: function () {
7271
+ var _mutationFn2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref2) {
7272
+ var data;
7273
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
7274
+ while (1) switch (_context3.prev = _context3.next) {
7275
+ case 0:
7276
+ data = _ref2.data;
7277
+ if (auth) {
7278
+ _context3.next = 3;
7279
+ break;
7280
+ }
7281
+ throw new Error('Authentication context not found');
7282
+ case 3:
7283
+ return _context3.abrupt("return", createWorkspace(data, auth));
7284
+ case 4:
7285
+ case "end":
7286
+ return _context3.stop();
7287
+ }
7288
+ }, _callee3);
7289
+ }));
7290
+ function mutationFn(_x2) {
7291
+ return _mutationFn2.apply(this, arguments);
7292
+ }
7293
+ return mutationFn;
7294
+ }(),
7295
+ onSuccess: function onSuccess(data, variables) {
7296
+ var location = data == null ? void 0 : data.get('location');
7297
+ var newId = getIdFromUrl(location);
7298
+ var scope = variables.data.scope || 'user';
7299
+ dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
7300
+ workspaceId: newId,
7301
+ action: variables.action || WorkspacePresetAction.SAVE_AS,
7302
+ title: variables.data.title,
7303
+ scope: scope
7304
+ }));
7305
+ },
7306
+ onError: function onError(error) {
7307
+ onWorkspaceApiError(dispatch, error, t);
7308
+ }
7309
+ });
7310
+ };
7311
+
7312
+ var PresetLabelsPanelWrapper = function PresetLabelsPanelWrapper(_ref) {
7313
+ var viewComponentType = _ref.viewComponentType,
7314
+ onLabelsChange = _ref.onLabelsChange,
7315
+ menuLabels = _ref.menuLabels,
7316
+ _ref$isMenuFilterMode = _ref.isMenuFilterMode,
7317
+ isMenuFilterMode = _ref$isMenuFilterMode === void 0 ? false : _ref$isMenuFilterMode;
7318
+ var _useWorkspaceTranslat = useWorkspaceTranslation(),
7319
+ t = _useWorkspaceTranslat.t;
7320
+ var _useWorkspaceLabelsCo = useWorkspaceLabelsConfig(),
7321
+ labelsConfig = _useWorkspaceLabelsCo.data,
7322
+ isLoading = _useWorkspaceLabelsCo.isFetching,
7323
+ labelsError = _useWorkspaceLabelsCo.error,
7324
+ refetchLabelsConfig = _useWorkspaceLabelsCo.refetch;
7325
+ if (isLoading) {
7326
+ return jsx(LinearProgress, {
7327
+ color: "secondary",
7328
+ "data-testid": "labelspanel-loading-bar",
7329
+ sx: {
7330
+ marginBottom: '-4px'
7331
+ }
7332
+ });
7333
+ }
7334
+ if (labelsError || labelsConfig === undefined) {
7335
+ return jsx(AlertBanner, {
7336
+ actionButtonProps: {
7337
+ title: t('fetch-config-error-retry'),
7338
+ onClick: function onClick() {
7339
+ void refetchLabelsConfig();
7340
+ }
7341
+ },
7342
+ info: labelsError ? labelsError.message : t('fetch-config-no-labels-available'),
7343
+ severity: "error",
7344
+ title: t('fetch-config-error-title')
7345
+ });
7346
+ }
7347
+ return jsx(PresetLabelsPanel, {
7348
+ isMenuFilterMode: isMenuFilterMode,
7349
+ labelsConfig: labelsConfig,
7350
+ menuLabels: menuLabels,
7351
+ onLabelsChange: onLabelsChange,
7352
+ viewComponentType: viewComponentType
7353
+ });
7354
+ };
7355
+
7400
7356
  var WorkspaceMenuLabelsPanel = function WorkspaceMenuLabelsPanel(_ref) {
7401
7357
  var value = _ref.value,
7402
7358
  onChange = _ref.onChange,
7403
- menuLabels = _ref.menuLabels,
7404
- labelsConfig = _ref.labelsConfig;
7359
+ menuLabels = _ref.menuLabels;
7405
7360
  var methods = useForm({
7406
7361
  defaultValues: {
7407
7362
  labels: value != null ? value : {},
@@ -7409,10 +7364,9 @@ var WorkspaceMenuLabelsPanel = function WorkspaceMenuLabelsPanel(_ref) {
7409
7364
  }
7410
7365
  });
7411
7366
  return jsx(FormProvider, Object.assign({}, methods, {
7412
- children: jsx(PresetLabelsPanel, {
7367
+ children: jsx(PresetLabelsPanelWrapper, {
7413
7368
  "data-testid": "workspace-menu-labels-panel",
7414
7369
  isMenuFilterMode: true,
7415
- labelsConfig: labelsConfig,
7416
7370
  menuLabels: menuLabels,
7417
7371
  onLabelsChange: onChange
7418
7372
  })
@@ -7783,7 +7737,7 @@ var WorkspacePresetInfo = function WorkspacePresetInfo(_ref) {
7783
7737
  });
7784
7738
  };
7785
7739
 
7786
- var WORKSPACE_SELECT_LIST_ROW_HEIGHT = 46;
7740
+ var WORKSPACE_SELECT_LIST_ROW_HEIGHT = 41;
7787
7741
  var getPresetIcon = function getPresetIcon(preset, currentUsername) {
7788
7742
  if (preset.scope === 'system') {
7789
7743
  return jsx(WorkspacePresetsSystemIcon, {
@@ -7903,12 +7857,13 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
7903
7857
  disablePadding: true,
7904
7858
  sx: {
7905
7859
  mb: 0.5,
7860
+ ml: 0.5,
7906
7861
  borderRadius: 1.5,
7907
7862
  backgroundColor: 'geowebColors.cards.cardContainer',
7908
- boxShadow: '0px 1px 3px rgba(15, 23, 42, 0.12)',
7863
+ boxShadow: '0px 4px 4px rgba(15, 23, 42, 0.2), 2px 2px 6px rgba(15, 23, 42, 0.12)',
7909
7864
  transition: 'box-shadow 0.15s ease-out, transform 0.15s ease-out',
7910
7865
  ' .MuiListItemText-primary': {
7911
- fontSize: '12px',
7866
+ fontSize: '16px',
7912
7867
  fontWeight: 500,
7913
7868
  textOverflow: 'ellipsis',
7914
7869
  overflow: 'hidden',
@@ -7938,7 +7893,9 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
7938
7893
  role: "listitem",
7939
7894
  selected: isSelected,
7940
7895
  sx: {
7941
- padding: 1,
7896
+ pl: 2,
7897
+ pr: 1,
7898
+ py: 1,
7942
7899
  height: WORKSPACE_SELECT_LIST_ROW_HEIGHT + "px"
7943
7900
  },
7944
7901
  children: [jsx(ListItemIcon, {
@@ -8032,7 +7989,7 @@ var MIN_HEIGHT_SCROLLABLE_LIST = 88; // Slightly less than 2 rows
8032
7989
  var LIST_PADDING_TOP = 8;
8033
7990
  var DEFAULT_RESULTS_HEIGHT = 22;
8034
7991
  // row height = height + margin
8035
- var rowHeight = WORKSPACE_SELECT_LIST_ROW_HEIGHT + 4;
7992
+ var rowHeight = WORKSPACE_SELECT_LIST_ROW_HEIGHT + 12;
8036
7993
  var WorkspaceSelectList = function WorkspaceSelectList(_ref) {
8037
7994
  var workspacePresets = _ref.workspacePresets,
8038
7995
  currentSelectedId = _ref.currentSelectedId,
@@ -8063,7 +8020,8 @@ var WorkspaceSelectList = function WorkspaceSelectList(_ref) {
8063
8020
  children: [jsxs(Box, {
8064
8021
  sx: {
8065
8022
  marginBottom: '4px',
8066
- fontSize: '12px'
8023
+ fontSize: '12px',
8024
+ ml: 0.5
8067
8025
  },
8068
8026
  children: [workspacePresets.length, " ", t('workspace-results')]
8069
8027
  }), jsx(AutoSizer, {
@@ -8086,7 +8044,9 @@ var WorkspaceSelectList = function WorkspaceSelectList(_ref) {
8086
8044
  style = _ref3.style;
8087
8045
  var preset = items[index];
8088
8046
  return jsx("div", {
8089
- style: style,
8047
+ style: Object.assign({}, style, {
8048
+ paddingRight: '8px'
8049
+ }),
8090
8050
  children: jsx(WorkspaceSelectListRow, {
8091
8051
  infoOpenPresetId: infoOpenPresetId,
8092
8052
  isAdmin: isAdmin,
@@ -8118,9 +8078,8 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8118
8078
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
8119
8079
  t = _useWorkspaceTranslat.t;
8120
8080
  var dispatch = useDispatch();
8081
+ var queryClient = useQueryClient();
8121
8082
  var store = useStore();
8122
- var _useWorkspaceLabelsCo = useWorkspaceLabelsConfig(),
8123
- labelsConfig = _useWorkspaceLabelsCo.data;
8124
8083
  var _useAuthenticationCon = useAuthenticationContext(),
8125
8084
  currentRole = _useAuthenticationCon.currentRole,
8126
8085
  isLoggedIn = _useAuthenticationCon.isLoggedIn,
@@ -8148,6 +8107,12 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8148
8107
  return Array.isArray(group) && group.length > 0;
8149
8108
  });
8150
8109
  }, [viewPresetLabelFilters]);
8110
+ var activeLabelFilterCount = React.useMemo(function () {
8111
+ if (!viewPresetLabelFilters) {
8112
+ return 0;
8113
+ }
8114
+ return Object.values(viewPresetLabelFilters).flat().length;
8115
+ }, [viewPresetLabelFilters]);
8151
8116
  var filteredPresets = React.useMemo(function () {
8152
8117
  return filterAndSortPresets(viewPresets, viewPresetListFilters, username, isAdmin, viewPresetLabelFilters != null ? viewPresetLabelFilters : undefined);
8153
8118
  }, [viewPresets, viewPresetListFilters, username, isAdmin, viewPresetLabelFilters]);
@@ -8214,6 +8179,22 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8214
8179
  filterParams: filterParams
8215
8180
  }));
8216
8181
  }, [dispatch, panelId, viewPresetListSearchQuery]);
8182
+ var refreshViewPresets = React.useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
8183
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
8184
+ while (1) switch (_context.prev = _context.next) {
8185
+ case 0:
8186
+ _context.next = 2;
8187
+ return queryClient.invalidateQueries({
8188
+ queryKey: viewpresetQueryOptions.keys.lists()
8189
+ });
8190
+ case 2:
8191
+ fetchViewPresets();
8192
+ case 3:
8193
+ case "end":
8194
+ return _context.stop();
8195
+ }
8196
+ }, _callee);
8197
+ })), [queryClient, fetchViewPresets]);
8217
8198
  var constructInitialProps = function constructInitialProps() {
8218
8199
  switch (viewComponentType) {
8219
8200
  case 'WarningList':
@@ -8233,16 +8214,17 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8233
8214
  switch (workspaceAction) {
8234
8215
  case WorkspacePresetAction.DUPLICATE:
8235
8216
  {
8236
- getQueryClient().fetchQuery(viewpresetsQueryOptions.getViewPreset(presetId, auth)).then(function (presetFromBE) {
8237
- var _getViewById, _ref2, _preset$initialProps;
8217
+ getQueryClient().fetchQuery(viewpresetQueryOptions.getViewPreset(presetId, auth)).then(function (presetFromBE) {
8218
+ var _getViewById, _ref3, _preset$initialProps;
8238
8219
  var preset = presetFromBE;
8239
8220
  var fallbackInitialProps = (_getViewById = getViewById(store.getState(), panelId)) == null ? void 0 : _getViewById.initialProps;
8240
- var initialPropsForForm = (_ref2 = (_preset$initialProps = preset.initialProps) != null ? _preset$initialProps : fallbackInitialProps) != null ? _ref2 : constructInitialProps();
8221
+ var initialPropsForForm = (_ref3 = (_preset$initialProps = preset.initialProps) != null ? _preset$initialProps : fallbackInitialProps) != null ? _ref3 : constructInitialProps();
8241
8222
  openViewPresetsDialog({
8242
8223
  title: t('workspace-mappreset-save-as'),
8243
8224
  action: PresetAction.SAVE_AS,
8244
8225
  viewPresetId: presetId,
8245
8226
  panelId: panelId,
8227
+ shouldSetActiveViewPreset: false,
8246
8228
  formValues: {
8247
8229
  title: preset.title,
8248
8230
  description: preset.description,
@@ -8258,6 +8240,7 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8258
8240
  action: PresetAction.SAVE_AS,
8259
8241
  viewPresetId: presetId,
8260
8242
  panelId: panelId,
8243
+ shouldSetActiveViewPreset: false,
8261
8244
  formValues: {
8262
8245
  title: preset.title,
8263
8246
  description: preset.description,
@@ -8286,7 +8269,7 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8286
8269
  updated: new Date().toISOString()
8287
8270
  }
8288
8271
  });
8289
- void getQueryClient().fetchQuery(viewpresetsQueryOptions.getViewPreset(presetId, auth)).then(function (fullPreset) {
8272
+ void getQueryClient().fetchQuery(viewpresetQueryOptions.getViewPreset(presetId, auth)).then(function (fullPreset) {
8290
8273
  openViewPresetsDialog({
8291
8274
  title: t('workspace-mappreset-dialog-title-edit'),
8292
8275
  action: PresetAction.EDIT,
@@ -8308,13 +8291,14 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8308
8291
  }
8309
8292
  case WorkspacePresetAction.SHARE:
8310
8293
  {
8311
- void getQueryClient().fetchQuery(viewpresetsQueryOptions.getViewPreset(presetId, auth)).then(function (preset) {
8294
+ void getQueryClient().fetchQuery(viewpresetQueryOptions.getViewPreset(presetId, auth)).then(function (preset) {
8312
8295
  return void updateViewPreset(presetId, Object.assign({}, preset, {
8313
8296
  is_shared: !preset.is_shared
8314
8297
  }), auth).then(function () {
8315
8298
  dispatch(viewPresetActions.onSuccessViewPresetAction({
8316
8299
  panelId: panelId,
8317
8300
  viewPresetId: presetId,
8301
+ activeViewPresetId: activeViewPresetId,
8318
8302
  action: PresetAction.SHARE,
8319
8303
  title: preset.title,
8320
8304
  description: preset.description,
@@ -8405,14 +8389,15 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8405
8389
  flexDirection: 'column',
8406
8390
  height: '100%'
8407
8391
  },
8408
- children: [!!isViewPresetsListFetching && jsx(LinearProgress, {
8409
- color: "secondary",
8410
- "data-testid": "loading-bar",
8392
+ children: [jsx(Box, {
8411
8393
  sx: {
8412
- position: 'absolute',
8413
- width: '100%',
8414
- top: 0
8415
- }
8394
+ height: 4,
8395
+ overflow: 'hidden'
8396
+ },
8397
+ children: !!isViewPresetsListFetching && jsx(LinearProgress, {
8398
+ color: "secondary",
8399
+ "data-testid": "loading-bar"
8400
+ })
8416
8401
  }), !isViewPresetsListFetching && !!error && jsx(AlertBanner, Object.assign({
8417
8402
  info: error.message,
8418
8403
  shouldClose: true,
@@ -8422,16 +8407,9 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8422
8407
  title: t('workspace-retry'),
8423
8408
  onClick: fetchViewPresets
8424
8409
  }
8425
- })), !error && jsx(Box, {
8426
- sx: {
8427
- padding: 1,
8428
- pt: 1,
8429
- flexShrink: 0
8430
- },
8431
- children: jsx(SearchField, {
8432
- searchFilter: viewPresetListSearchQuery,
8433
- setSearchFilter: onSearchFilter
8434
- })
8410
+ })), !error && jsx(SearchField, {
8411
+ searchFilter: viewPresetListSearchQuery,
8412
+ setSearchFilter: onSearchFilter
8435
8413
  }), jsxs(Box, {
8436
8414
  sx: {
8437
8415
  display: 'grid',
@@ -8452,7 +8430,6 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8452
8430
  },
8453
8431
  children: jsx(FormProvider, Object.assign({}, labelsFormMethods, {
8454
8432
  children: jsx(WorkspaceMenuLabelsPanel, {
8455
- labelsConfig: labelsConfig,
8456
8433
  menuLabels: viewPresetLabelFilters,
8457
8434
  onChange: onLabelsFilterChange
8458
8435
  })
@@ -8482,6 +8459,7 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8482
8459
  width: '100%'
8483
8460
  },
8484
8461
  children: jsx(Filter, {
8462
+ activeLabelFilterCount: activeLabelFilterCount,
8485
8463
  filters: viewPresetListFilters,
8486
8464
  isAllSelected: isAllSelectedForFilters,
8487
8465
  isLabelFilterOpen: isLabelFilterOpen,
@@ -8499,9 +8477,23 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8499
8477
  },
8500
8478
  children: jsx(LastUpdateTime, {
8501
8479
  hideLabel: true,
8502
- onPressRefresh: function onPressRefresh() {
8503
- return fetchViewPresets();
8504
- }
8480
+ onPressRefresh: function () {
8481
+ var _onPressRefresh = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
8482
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
8483
+ while (1) switch (_context2.prev = _context2.next) {
8484
+ case 0:
8485
+ return _context2.abrupt("return", refreshViewPresets());
8486
+ case 1:
8487
+ case "end":
8488
+ return _context2.stop();
8489
+ }
8490
+ }, _callee2);
8491
+ }));
8492
+ function onPressRefresh() {
8493
+ return _onPressRefresh.apply(this, arguments);
8494
+ }
8495
+ return onPressRefresh;
8496
+ }()
8505
8497
  })
8506
8498
  })]
8507
8499
  }), jsxs(Box, {
@@ -8638,8 +8630,6 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8638
8630
  var dispatch = useDispatch();
8639
8631
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
8640
8632
  t = _useWorkspaceTranslat.t;
8641
- var _useWorkspaceLabelsCo = useWorkspaceLabelsConfig(),
8642
- labelsConfig = _useWorkspaceLabelsCo.data;
8643
8633
  var _useAuthenticationCon = useAuthenticationContext(),
8644
8634
  currentRole = _useAuthenticationCon.currentRole,
8645
8635
  isLoggedIn = _useAuthenticationCon.isLoggedIn,
@@ -8662,6 +8652,12 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8662
8652
  return Array.isArray(group) && group.length > 0;
8663
8653
  });
8664
8654
  }, [labelFilters]);
8655
+ var activeLabelFilterCount = React.useMemo(function () {
8656
+ if (!labelFilters) {
8657
+ return 0;
8658
+ }
8659
+ return Object.values(labelFilters).flat().length;
8660
+ }, [labelFilters]);
8665
8661
  var filteredPresets = React.useMemo(function () {
8666
8662
  return filterAndSortPresets(workspacePresets, selectedFilters, username, isAdmin, labelFilters != null ? labelFilters : undefined);
8667
8663
  }, [workspacePresets, selectedFilters, username, isAdmin, labelFilters]);
@@ -8954,15 +8950,15 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8954
8950
  height: '100%'
8955
8951
  },
8956
8952
  tabIndex: 0,
8957
- children: [!!isFetching && jsx(LinearProgress, {
8958
- color: "secondary",
8959
- "data-testid": "loading-bar",
8953
+ children: [jsx(Box, {
8960
8954
  sx: {
8961
- position: 'absolute',
8962
- width: '100%',
8963
- top: 0,
8964
- left: 0
8965
- }
8955
+ height: 4,
8956
+ overflow: 'hidden'
8957
+ },
8958
+ children: !!isFetching && jsx(LinearProgress, {
8959
+ color: "secondary",
8960
+ "data-testid": "loading-bar"
8961
+ })
8966
8962
  }), !!error && jsx("div", {
8967
8963
  style: {
8968
8964
  whiteSpace: 'normal'
@@ -8982,15 +8978,9 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8982
8978
  }
8983
8979
  }
8984
8980
  }))
8985
- }), !error && jsx(Box, {
8986
- sx: {
8987
- padding: 1,
8988
- pt: 1
8989
- },
8990
- children: jsx(SearchField, {
8991
- searchFilter: workspaceSearchQuery,
8992
- setSearchFilter: searchFilter
8993
- })
8981
+ }), !error && jsx(SearchField, {
8982
+ searchFilter: workspaceSearchQuery,
8983
+ setSearchFilter: searchFilter
8994
8984
  }), jsxs(Box, {
8995
8985
  sx: {
8996
8986
  display: 'grid',
@@ -9008,7 +8998,6 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
9008
8998
  },
9009
8999
  children: jsx(FormProvider, Object.assign({}, labelsFormMethods, {
9010
9000
  children: jsx(WorkspaceMenuLabelsPanel, {
9011
- labelsConfig: labelsConfig,
9012
9001
  menuLabels: labelFilters,
9013
9002
  onChange: onLabelsFilterChange
9014
9003
  })
@@ -9024,7 +9013,8 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
9024
9013
  },
9025
9014
  children: [!error && jsxs(Box, {
9026
9015
  sx: {
9027
- marginBottom: 1
9016
+ marginBottom: 1,
9017
+ mx: 0.5
9028
9018
  },
9029
9019
  children: [jsx(Box, {
9030
9020
  sx: {
@@ -9032,6 +9022,7 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
9032
9022
  width: '100%'
9033
9023
  },
9034
9024
  children: jsx(Filter, {
9025
+ activeLabelFilterCount: activeLabelFilterCount,
9035
9026
  filters: workspaceListFilters,
9036
9027
  isAllSelected: isAllSelected,
9037
9028
  isLabelFilterOpen: isLabelFilterOpen,
@@ -9049,6 +9040,9 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
9049
9040
  },
9050
9041
  children: jsx(LastUpdateTime, {
9051
9042
  hideLabel: true,
9043
+ iconButtonSx: {
9044
+ marginLeft: 0
9045
+ },
9052
9046
  onPressRefresh: function onPressRefresh() {
9053
9047
  return fetchWorkspaceList();
9054
9048
  }
@@ -9098,7 +9092,7 @@ var WorkspaceMenu = function WorkspaceMenu(_ref) {
9098
9092
  return !prev;
9099
9093
  });
9100
9094
  }, []);
9101
- var dialogWidth = isLabelFilterOpen ? 700 : 380;
9095
+ var dialogWidth = isLabelFilterOpen ? 700 : 483;
9102
9096
  return jsx(CustomDialog, {
9103
9097
  "data-testid": "workspace-menu",
9104
9098
  hasLayout: false,
@@ -9486,6 +9480,8 @@ var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_
9486
9480
  return currentWarningsPreset;
9487
9481
  case 'TimeSeries':
9488
9482
  return timeSeriesSelectors.getTimeSeriesPreset(store.getState());
9483
+ case 'Soundings':
9484
+ return soundingsSelectors.getSoundingsPreset(store.getState());
9489
9485
  case 'Map':
9490
9486
  return {
9491
9487
  mapPreset: mapSelectors.getMapPreset(store.getState(), panelId),
@@ -10047,6 +10043,11 @@ var WorkspaceViewConnect = function WorkspaceViewConnect(_ref) {
10047
10043
  return window.removeEventListener('orientationchange', handleOrientationChange);
10048
10044
  };
10049
10045
  }, [handleOrientationChange]);
10046
+ React.useEffect(function () {
10047
+ if (!mosaicNode) {
10048
+ dispatch(workspaceActions.teardownComplete());
10049
+ }
10050
+ }, [mosaicNode, dispatch]);
10050
10051
  return jsx(WorkspaceView, {
10051
10052
  activeWindowId: activeWindowId,
10052
10053
  componentsLookUp: componentsLookUp,
@@ -10359,8 +10360,7 @@ var WorkspacePresetsForm = function WorkspacePresetsForm(_ref) {
10359
10360
  confirmLabel = _ref.confirmLabel,
10360
10361
  cancelLabel = _ref.cancelLabel,
10361
10362
  onClose = _ref.onClose,
10362
- dialogTitle = _ref.dialogTitle,
10363
- labelsConfig = _ref.labelsConfig;
10363
+ dialogTitle = _ref.dialogTitle;
10364
10364
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
10365
10365
  t = _useWorkspaceTranslat.t;
10366
10366
  var _useFormContext = useFormContext(),
@@ -10490,9 +10490,7 @@ var WorkspacePresetsForm = function WorkspacePresetsForm(_ref) {
10490
10490
  bgcolor: 'geowebColors.background.surface',
10491
10491
  maxWidth: '80%'
10492
10492
  },
10493
- children: jsx(PresetLabelsPanel, {
10494
- labelsConfig: labelsConfig
10495
- })
10493
+ children: jsx(PresetLabelsPanelWrapper, {})
10496
10494
  }), jsxs(Box, {
10497
10495
  sx: {
10498
10496
  pl: {
@@ -10639,8 +10637,7 @@ var WorkspacePresetsFormDialog = function WorkspacePresetsFormDialog(_ref) {
10639
10637
  isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
10640
10638
  error = _ref.error,
10641
10639
  _ref$isWorkspaceSaved = _ref.isWorkspaceSaved,
10642
- isWorkspaceSaved = _ref$isWorkspaceSaved === void 0 ? false : _ref$isWorkspaceSaved,
10643
- labelsConfig = _ref.labelsConfig;
10640
+ isWorkspaceSaved = _ref$isWorkspaceSaved === void 0 ? false : _ref$isWorkspaceSaved;
10644
10641
  var _useFormContext = useFormContext(),
10645
10642
  handleFormSubmit = _useFormContext.handleSubmit,
10646
10643
  reset = _useFormContext.reset;
@@ -10817,7 +10814,6 @@ var WorkspacePresetsFormDialog = function WorkspacePresetsFormDialog(_ref) {
10817
10814
  formValues: formValues,
10818
10815
  hasSavedWorkspace: isWorkspaceSaved,
10819
10816
  isLoading: isLoading,
10820
- labelsConfig: labelsConfig,
10821
10817
  onClose: onClose,
10822
10818
  onSubmit: onSubmit,
10823
10819
  showInlineActions: withLabelsPanel
@@ -10849,8 +10845,6 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
10849
10845
  deleteWorkspace = _useDeleteWorkspacePr.mutate;
10850
10846
  var _useCreateWorkspacePr = useCreateWorkspacePreset(),
10851
10847
  createWorkspace = _useCreateWorkspacePr.mutate;
10852
- var _useWorkspaceLabelsCo = useWorkspaceLabelsConfig(),
10853
- labelsConfig = _useWorkspaceLabelsCo.data;
10854
10848
  var title = useSelector(function (store) {
10855
10849
  return getSelectedWorkspaceTitle(store);
10856
10850
  });
@@ -10909,7 +10903,7 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
10909
10903
  }
10910
10904
  _context.prev = 4;
10911
10905
  _context.next = 7;
10912
- return getQueryClient().fetchQuery(viewpresetsQueryOptions.getViewPreset(view.viewPresetId, auth));
10906
+ return getQueryClient().fetchQuery(viewpresetQueryOptions.getViewPreset(view.viewPresetId, auth));
10913
10907
  case 7:
10914
10908
  preset = _context.sent;
10915
10909
  _viewPresetId = view.viewPresetId, _rest = _objectWithoutPropertiesLoose(view, _excluded2);
@@ -10991,7 +10985,6 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
10991
10985
  isLoading: isFetching,
10992
10986
  isOpen: Boolean(dialogDetails),
10993
10987
  isWorkspaceSaved: hasSavedWorkspace,
10994
- labelsConfig: labelsConfig,
10995
10988
  onClose: closeWorkspaceActionDialog,
10996
10989
  onFormSubmit: onSubmitForm,
10997
10990
  presetId: presetId || undefined
@@ -11045,8 +11038,7 @@ var ViewPresetsForm = function ViewPresetsForm(_ref) {
11045
11038
  confirmLabel = _ref.confirmLabel,
11046
11039
  cancelLabel = _ref.cancelLabel,
11047
11040
  onClose = _ref.onClose,
11048
- dialogTitle = _ref.dialogTitle,
11049
- labelsConfig = _ref.labelsConfig;
11041
+ dialogTitle = _ref.dialogTitle;
11050
11042
  var fieldName = 'title';
11051
11043
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
11052
11044
  t = _useWorkspaceTranslat.t;
@@ -11114,8 +11106,7 @@ var ViewPresetsForm = function ViewPresetsForm(_ref) {
11114
11106
  bgcolor: 'geowebColors.background.surface',
11115
11107
  maxWidth: '80%'
11116
11108
  },
11117
- children: jsx(PresetLabelsPanel, {
11118
- labelsConfig: labelsConfig,
11109
+ children: jsx(PresetLabelsPanelWrapper, {
11119
11110
  viewComponentType: viewComponentType
11120
11111
  })
11121
11112
  }), jsxs(Box, {
@@ -11255,7 +11246,6 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
11255
11246
  viewPresetId = _ref.viewPresetId,
11256
11247
  viewComponentType = _ref.viewComponentType,
11257
11248
  formValues = _ref.formValues,
11258
- labelsConfig = _ref.labelsConfig,
11259
11249
  onSuccess = _ref.onSuccess,
11260
11250
  onClose = _ref.onClose,
11261
11251
  title = _ref.title,
@@ -11347,7 +11337,7 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
11347
11337
  return _context.abrupt("break", 31);
11348
11338
  case 19:
11349
11339
  _context.next = 21;
11350
- return getQueryClient().fetchQuery(viewpresetsQueryOptions.getViewPreset(viewPresetId, auth));
11340
+ return getQueryClient().fetchQuery(viewpresetQueryOptions.getViewPreset(viewPresetId, auth));
11351
11341
  case 21:
11352
11342
  originalViewPreset = _context.sent;
11353
11343
  viewPresetEdited = Object.assign({}, originalViewPreset, {
@@ -11469,7 +11459,6 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
11469
11459
  error: error,
11470
11460
  formValues: formValues,
11471
11461
  isLoading: isLoading,
11472
- labelsConfig: labelsConfig,
11473
11462
  onClose: onClose,
11474
11463
  onSubmit: onSubmit,
11475
11464
  showInlineActions: withLabelsPanel,
@@ -11520,13 +11509,15 @@ var useDeleteViewPreset = function useDeleteViewPreset() {
11520
11509
  var ViewPresetsFormDialogConnect = function ViewPresetsFormDialogConnect(_ref) {
11521
11510
  var _dialogOptions$formVa;
11522
11511
  var _ref$scope = _ref.scope,
11523
- scope = _ref$scope === void 0 ? 'user' : _ref$scope,
11524
- labelsConfig = _ref.labelsConfig;
11512
+ scope = _ref$scope === void 0 ? 'user' : _ref$scope;
11525
11513
  var dispatch = useDispatch();
11526
11514
  var dialogOptions = useSelector(function (store) {
11527
11515
  return getDialogOptions(store);
11528
11516
  });
11529
11517
  var panelId = dialogOptions == null ? void 0 : dialogOptions.panelId;
11518
+ var activeViewPresetId = useSelector(function (store) {
11519
+ return getViewPresetActiveId(store, panelId);
11520
+ });
11530
11521
  var fallbackComponentType = useSelector(function (store) {
11531
11522
  return getViewComponentType(store, panelId);
11532
11523
  });
@@ -11550,6 +11541,8 @@ var ViewPresetsFormDialogConnect = function ViewPresetsFormDialogConnect(_ref) {
11550
11541
  dispatch(viewPresetActions.onSuccessViewPresetAction({
11551
11542
  panelId: panelId,
11552
11543
  viewPresetId: newViewPresetId,
11544
+ activeViewPresetId: activeViewPresetId,
11545
+ shouldSetActiveViewPreset: dialogOptions == null ? void 0 : dialogOptions.shouldSetActiveViewPreset,
11553
11546
  action: action,
11554
11547
  title: title,
11555
11548
  description: description,
@@ -11563,7 +11556,6 @@ var ViewPresetsFormDialogConnect = function ViewPresetsFormDialogConnect(_ref) {
11563
11556
  action: (dialogOptions == null ? void 0 : dialogOptions.action) || PresetAction.SAVE,
11564
11557
  formValues: dialogOptions == null ? void 0 : dialogOptions.formValues,
11565
11558
  isOpen: isOpen,
11566
- labelsConfig: labelsConfig,
11567
11559
  onClose: onClose,
11568
11560
  onDelete: deleteViewPreset,
11569
11561
  onReset: onReset,
@@ -11586,8 +11578,6 @@ var WorkspaceDetail = function WorkspaceDetail(_ref) {
11586
11578
  t = _useWorkspaceTranslat.t;
11587
11579
  var _useAuthenticationCon = useAuthenticationContext(),
11588
11580
  currentRole = _useAuthenticationCon.currentRole;
11589
- var _useWorkspaceLabelsCo = useWorkspaceLabelsConfig(),
11590
- labelsConfig = _useWorkspaceLabelsCo.data;
11591
11581
  var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN.name;
11592
11582
  var error = useSelector(function (store) {
11593
11583
  return getWorkspaceError(store);
@@ -11688,10 +11678,126 @@ var WorkspaceDetail = function WorkspaceDetail(_ref) {
11688
11678
  })
11689
11679
  })]
11690
11680
  }), jsx(ViewPresetsFormDialogConnect, {
11691
- labelsConfig: labelsConfig,
11692
11681
  scope: isAdmin ? 'system' : 'user'
11693
11682
  })]
11694
11683
  });
11695
11684
  };
11696
11685
 
11697
- export { ALL_COMPONENT_TYPES, AVIATION_COMPONENT_TYPES, CAP_COMPONENT_TYPES, ComponentsLookUpWrapper, DemoWrapper, PresetAction, SUPPORTED_COMPONENT_TYPES, SUPPORTED_TIMESERIES_COMPONENT_TYPES, ViewPresetErrorComponent, ViewPresetErrorType, WARNING_LIST_COMPONENT_TYPES, WORKSPACE_NAMESPACE, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspaceModuleProvider, WorkspacePresetAction, WorkspaceStoreWrapper, WorkspaceThemeProvider, WorkspaceTopBar, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, getEmptyMapWorkspace, getWorkspaceRouteUrl, selectors$2 as selectors, viewPresetActions, viewPresetsListReducer, viewPresetsListener, viewPresetsReducer, workspaceActions, workspaceListActions, workspaceListListener, workspaceListReducer, workspaceListener, workspaceMiddlewares, workspaceReducer, workspaceReducersMap, routes as workspaceRoutes, workspaceTranslations };
11686
+ /* *
11687
+ * Licensed under the Apache License, Version 2.0 (the "License");
11688
+ * you may not use this file except in compliance with the License.
11689
+ * You may obtain a copy of the License at
11690
+ *
11691
+ * http://www.apache.org/licenses/LICENSE-2.0
11692
+ *
11693
+ * Unless required by applicable law or agreed to in writing, software
11694
+ * distributed under the License is distributed on an "AS IS" BASIS,
11695
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11696
+ * See the License for the specific language governing permissions and
11697
+ * limitations under the License.
11698
+ *
11699
+ * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
11700
+ * Copyright 2025 - Finnish Meteorological Institute (FMI)
11701
+ * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
11702
+ * */
11703
+ var LABELS_CONFIG_DEFAULT = {
11704
+ purpose: ['Aviation', 'Monitor', 'Public', 'Maritime', 'Warning', 'Media', 'Nowcasting (0–12h)'],
11705
+ parameters: ['Pressure', 'Temperature', 'Wind', 'Humidity', 'Water vapour', 'Visibility', 'Geopotential', 'Snow', 'Cloud', 'Waves', 'Index', 'Precipitation'],
11706
+ phenomena: ['Turbulence', 'MTW', 'CAT', 'Icing', 'Freezing rain', 'FlashFlood', 'Wind gust', 'Rain', 'Snow', 'Road ice', 'Lightning strike', 'Drifting snow', 'Wave height + water level', 'Forest fire', 'Polar Low', 'Heat wave', 'Gale warning'],
11707
+ viewType: [].concat(ALL_COMPONENT_TYPES),
11708
+ dataType: ['observation', 'forecast', 'archive'],
11709
+ dataSource: ['Meps', 'Arome Arctic', 'Ecmwf', 'Ensemble', 'AIFS', 'BRIS', 'radar', 'satellite', 'synop']
11710
+ };
11711
+
11712
+ var workspaceEndpoints = [http["delete"](/^.*\/workspacepreset\/(.*)$/, /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
11713
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
11714
+ while (1) switch (_context.prev = _context.next) {
11715
+ case 0:
11716
+ _context.next = 2;
11717
+ return delay();
11718
+ case 2:
11719
+ return _context.abrupt("return", HttpResponse.json(null));
11720
+ case 3:
11721
+ case "end":
11722
+ return _context.stop();
11723
+ }
11724
+ }, _callee);
11725
+ }))), http.post(/^.*\/workspacepreset$/, /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
11726
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
11727
+ while (1) switch (_context2.prev = _context2.next) {
11728
+ case 0:
11729
+ _context2.next = 2;
11730
+ return delay();
11731
+ case 2:
11732
+ return _context2.abrupt("return", HttpResponse.json(null, {
11733
+ status: 200,
11734
+ headers: {
11735
+ Location: '/workspacepreset/workspace-id-1'
11736
+ }
11737
+ }));
11738
+ case 3:
11739
+ case "end":
11740
+ return _context2.stop();
11741
+ }
11742
+ }, _callee2);
11743
+ }))), http.put(/^.*\/workspacepreset\/(.*)$/, /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
11744
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
11745
+ while (1) switch (_context3.prev = _context3.next) {
11746
+ case 0:
11747
+ _context3.next = 2;
11748
+ return delay();
11749
+ case 2:
11750
+ return _context3.abrupt("return", HttpResponse.json(null));
11751
+ case 3:
11752
+ case "end":
11753
+ return _context3.stop();
11754
+ }
11755
+ }, _callee3);
11756
+ }))), http.get(/^.*\/workspacepreset\/(.*)$/, /*#__PURE__*/function () {
11757
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref4) {
11758
+ var _params$;
11759
+ var params, presetId, preset;
11760
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
11761
+ while (1) switch (_context4.prev = _context4.next) {
11762
+ case 0:
11763
+ params = _ref4.params;
11764
+ _context4.next = 3;
11765
+ return delay();
11766
+ case 3:
11767
+ presetId = String((_params$ = params[0]) != null ? _params$ : '');
11768
+ preset = workspacePresets.find(function (item) {
11769
+ return item.id === presetId;
11770
+ });
11771
+ if (preset) {
11772
+ _context4.next = 7;
11773
+ break;
11774
+ }
11775
+ return _context4.abrupt("return", HttpResponse.json({
11776
+ message: 'Not found'
11777
+ }, {
11778
+ status: 404
11779
+ }));
11780
+ case 7:
11781
+ return _context4.abrupt("return", HttpResponse.json(preset));
11782
+ case 8:
11783
+ case "end":
11784
+ return _context4.stop();
11785
+ }
11786
+ }, _callee4);
11787
+ }));
11788
+ return function (_x) {
11789
+ return _ref5.apply(this, arguments);
11790
+ };
11791
+ }()), http.get(/^.*\/workspace-labels-config$/, /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
11792
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
11793
+ while (1) switch (_context5.prev = _context5.next) {
11794
+ case 0:
11795
+ return _context5.abrupt("return", HttpResponse.json(LABELS_CONFIG_DEFAULT));
11796
+ case 1:
11797
+ case "end":
11798
+ return _context5.stop();
11799
+ }
11800
+ }, _callee5);
11801
+ })))];
11802
+
11803
+ export { ALL_COMPONENT_TYPES, AVIATION_COMPONENT_TYPES, CAP_COMPONENT_TYPES, ComponentsLookUpWrapper, DemoWrapper, PresetAction, SUPPORTED_COMPONENT_TYPES, SUPPORTED_TIMESERIES_COMPONENT_TYPES, ViewPresetErrorComponent, ViewPresetErrorType, WARNING_LIST_COMPONENT_TYPES, WORKSPACE_NAMESPACE, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspaceModuleProvider, WorkspacePresetAction, WorkspaceStoreWrapper, WorkspaceThemeProvider, WorkspaceTopBar, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, getEmptyMapWorkspace, getWorkspaceRouteUrl, selectors$2 as selectors, viewPresetActions, viewPresetsListReducer, viewPresetsListener, viewPresetsReducer, workspaceActions, workspaceEndpoints, workspaceListActions, workspaceListListener, workspaceListReducer, workspaceListener, workspaceMiddlewares, workspaceReducer, workspaceReducersMap, routes as workspaceRoutes, workspaceTranslations };