@opengeoweb/warnings 10.2.0 → 11.0.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 (42) hide show
  1. package/index.esm.js +540 -253
  2. package/package.json +1 -1
  3. package/src/index.d.ts +0 -2
  4. package/src/lib/api/warning-api/api.d.ts +2 -2
  5. package/src/lib/api/warning-api/hooks.d.ts +3 -3
  6. package/src/lib/components/AreaObjectLoader/AreaObjectLoader.d.ts +1 -1
  7. package/src/lib/components/AreaObjectLoader/AreasObjects.d.ts +1 -1
  8. package/src/lib/components/FilterList/filter-hooks.d.ts +2 -2
  9. package/src/lib/components/ObjectManager/ObjectManager.d.ts +1 -1
  10. package/src/lib/components/ObjectManager/Objects.d.ts +1 -1
  11. package/src/lib/components/PublicWarningList/PublicWarningList.d.ts +1 -1
  12. package/src/lib/components/PublicWarningList/WarningListItemMenu.d.ts +4 -3
  13. package/src/lib/components/PublicWarningsForm/PublicWarningsForm.d.ts +1 -1
  14. package/src/lib/components/WarningsModuleProvider/WarningsModuleProvider.spec.d.ts +1 -0
  15. package/src/lib/store/index.d.ts +2 -1
  16. package/src/lib/store/publicWarningForm/index.d.ts +1 -1
  17. package/src/lib/store/publicWarningForm/reducer.d.ts +6 -7
  18. package/src/lib/store/publicWarningForm/selectors.d.ts +1 -1
  19. package/src/lib/store/publicWarningForm/types.d.ts +16 -4
  20. package/src/lib/store/publicWarnings/index.d.ts +1 -1
  21. package/src/lib/store/publicWarnings/reducer.d.ts +5 -5
  22. package/src/lib/store/store.d.ts +15 -0
  23. package/src/lib/store/types.d.ts +1 -1
  24. package/src/lib/store/warningsDrawings/index.d.ts +2 -0
  25. package/src/lib/store/warningsDrawings/listener.d.ts +2 -0
  26. package/src/lib/store/{drawings → warningsDrawings}/reducer.d.ts +1 -2
  27. package/src/lib/store/warningsDrawings/reducer.spec.d.ts +1 -0
  28. package/src/lib/store/warningsDrawings/selectors.spec.d.ts +1 -0
  29. package/src/lib/storybookUtils/testUtils.d.ts +2 -0
  30. package/src/lib/utils/api.d.ts +1 -1
  31. package/src/lib/utils/fakeApi/index.d.ts +11 -9
  32. package/src/lib/utils/fakeApi.d.ts +1 -1
  33. package/src/lib/utils/sig-airmet-util.d.ts +7 -4
  34. package/src/lib/store/config.d.ts +0 -9
  35. package/src/lib/store/drawings/index.d.ts +0 -2
  36. package/src/lib/store/drawings/listener.d.ts +0 -2
  37. package/src/lib/utils/testUtils.d.ts +0 -4
  38. /package/src/lib/{store/drawings/reducer.spec.d.ts → components/PublicWarningList/PublicWarningListConnect.confirmation.integration.spec.d.ts} +0 -0
  39. /package/src/lib/{store/drawings/selectors.spec.d.ts → components/PublicWarningList/PublicWarningListConnect.draft.integration.spec.d.ts} +0 -0
  40. /package/src/lib/store/{drawings → warningsDrawings}/selectors.d.ts +0 -0
  41. /package/src/lib/store/{drawings → warningsDrawings}/types.d.ts +0 -0
  42. /package/src/lib/store/{drawings → warningsDrawings}/utils.d.ts +0 -0
package/index.esm.js CHANGED
@@ -1,17 +1,17 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useDispatch, useSelector } from 'react-redux';
3
3
  import { Polygons, Share, ExitDomain, Edit, Delete, DrawPolygon, Visibility, Add, CoastalEvent, TemperatureLow, TemperatureHigh, Rain, Snow, Lightning, Fog, Wind, Thunderstorm, VulcanicEruption, Haze, FreezingPrecipitation, ModerateAircraftIcing, SevereAircraftIcing, ModerateTurbulence, SevereTurbulence, SandStorm, RadioactiveMaterials, breakpoints, Options, Close, ChevronDown, ChevronUp, Copy, Update, Success, Expire, Remove, ArrowUpCompact, ArrowDownCompact } from '@opengeoweb/theme';
4
- import { uiTypes, uiActions, getSingularDrawtoolDrawLayerId, drawtoolSelectors, layerSelectors, uiSelectors, drawingToolActions, layerActions, useSetupDialog, selectorMemoizationOptions, useUpdateSharedData } from '@opengeoweb/store';
4
+ import { uiTypes, uiActions, getSingularDrawtoolDrawLayerId, drawingToolSelectors, layerSelectors, uiSelectors, drawingToolActions, layerActions, useSetupDialog, selectorMemoizationOptions, useUpdateSharedData, layersListener, drawingToolListener, layerReducer, uiReducer, drawingToolReducer } from '@opengeoweb/store';
5
5
  import { defaultPolygon, emptyGeoJSON, MapControlButton, getIcon, rewindGeometry, getGeoJSONPropertyValue, currentlySupportedDrawModes, defaultLayers, MapView, MapViewLayer, getFeatureExtent } from '@opengeoweb/webmap-react';
6
6
  import { SHARED_NAMESPACE, useConfirmationDialog, ToggleMenu, dateUtils, calculateStartSize, ToolContainerDraggable, AlertBanner, ConfirmationDialog, getAxiosErrorMessage, usePrevious, CustomIconButton, CustomTooltip, Avatar, getInitials, SwitchButton, CustomToggleButton, Filter, FilterChip, FilterOption, StatusTag, LastUpdateTime, ErrorBoundary, isAxiosError as isAxiosError$1 } from '@opengeoweb/shared';
7
- import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, isAnyOf } from '@reduxjs/toolkit';
7
+ import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, isAnyOf, combineReducers, configureStore } from '@reduxjs/toolkit';
8
8
  import 'i18next';
9
9
  import { useTranslation } from 'react-i18next';
10
10
  import '@opengeoweb/core';
11
11
  import { FORM_FIELDS_NAMESPACE, ReactHookFormHiddenInput, isValidGeoJsonCoordinates, ReactHookFormSelect, ReactHookFormTextField, ReactHookFormProvider, defaultFormOptions, useDraftFormHelpers, errorMessages, ReactHookFormDateTime, isXHoursBefore, isXHoursAfter, isEmpty } from '@opengeoweb/form-fields';
12
12
  import { LayerType, generateMapId, getWMJSMapById, getGeoCoordFromLatLong, WMBBOX } from '@opengeoweb/webmap';
13
- import { airmetConfig, sigmetConfig, SigmetForm, isInstanceOfCancelSigmet, AirmetForm, isInstanceOfCancelAirmet, getDefaultValidUntilValue, getProductFormMode } from '@opengeoweb/sigmet-airmet';
14
- import { snackbarActions, snackbarTypes } from '@opengeoweb/snackbar';
13
+ import { airmetConfig, sigmetConfig, SigmetForm, isInstanceOfCancelSigmet, AirmetForm, isInstanceOfCancelAirmet, getDefaultValidUntilValue, getProductFormMode, ProductAction } from '@opengeoweb/sigmet-airmet';
14
+ import { snackbarActions, snackbarTypes, snackbarListener, snackbarReducer } from '@opengeoweb/snackbar';
15
15
  import * as React from 'react';
16
16
  import React__default, { useState, useEffect, useRef, useMemo, useCallback } from 'react';
17
17
  import { styled, Box, Typography, ListItem, Grid2, Paper, ListItemButton, Stack, LinearProgress, Button, FormHelperText, MenuItem, Tabs, Tab, Card, CardContent, CircularProgress, Menu, DialogTitle, DialogContent, Switch, ListItemText } from '@mui/material';
@@ -19,8 +19,8 @@ import { VariableSizeList } from 'react-window';
19
19
  import AutoSizer from 'react-virtualized-auto-sizer';
20
20
  import { getApi, createApiInstance, createNonAuthApiInstance, createFakeApiInstance, ApiProvider, AirmetPhenomena, SigmetPhenomena, getHeaders, handleResponse, useAuthQuery, useAuthenticationContext, ProductStatus, optimisticUpdate } from '@opengeoweb/api';
21
21
  import { rest } from 'msw';
22
+ import { concat, isEqual, cloneDeep, clamp, groupBy, pick, assign } from 'lodash';
22
23
  import { useFormContext } from 'react-hook-form';
23
- import { isEqual, cloneDeep, clamp, groupBy, pick, assign } from 'lodash';
24
24
  import { getConfig, useAuthenticationContext as useAuthenticationContext$1 } from '@opengeoweb/authentication';
25
25
  import { useQueryClient, useMutation } from '@tanstack/react-query';
26
26
  import { isAxiosError } from 'axios';
@@ -1072,8 +1072,8 @@ var slice$2 = createSlice({
1072
1072
  });
1073
1073
  }
1074
1074
  });
1075
- var reducer$2 = slice$2.reducer;
1076
- var drawActions = slice$2.actions;
1075
+ var warningsDrawingsReducer = slice$2.reducer,
1076
+ warningsDrawingsActions = slice$2.actions;
1077
1077
 
1078
1078
  /* *
1079
1079
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -1144,7 +1144,7 @@ var useCloseDrawDialog = function useCloseDrawDialog(_ref) {
1144
1144
  var dispatch = useDispatch();
1145
1145
  var drawLayerId = getSingularDrawtoolDrawLayerId(mapId);
1146
1146
  var drawDialogActiveDrawModeId = useSelector(function (store) {
1147
- return drawtoolSelectors.getActiveDrawModeId(store, drawingDialogType);
1147
+ return drawingToolSelectors.getActiveDrawModeId(store, drawingDialogType);
1148
1148
  });
1149
1149
  var featureLayerContainsGeoJSON = useSelector(function (store) {
1150
1150
  return layerSelectors.getHasFeatureLayerGeoJSON(store, drawLayerId);
@@ -1204,7 +1204,7 @@ var useCloseDrawDialog = function useCloseDrawDialog(_ref) {
1204
1204
  source: source
1205
1205
  }));
1206
1206
  // reset all drawings fields
1207
- dispatch(drawActions.setDrawValues({
1207
+ dispatch(warningsDrawingsActions.setDrawValues({
1208
1208
  drawingInstanceId: drawingDialogType,
1209
1209
  objectName: '',
1210
1210
  id: ''
@@ -1251,7 +1251,7 @@ var useCloseObjectDialog = function useCloseObjectDialog(_ref3) {
1251
1251
  }
1252
1252
  // reset active object
1253
1253
  if (shouldReset) {
1254
- dispatch(drawActions.setDrawValues({
1254
+ dispatch(warningsDrawingsActions.setDrawValues({
1255
1255
  drawingInstanceId: drawingDialogType,
1256
1256
  objectName: '',
1257
1257
  id: ''
@@ -1310,7 +1310,7 @@ var useObjectDrawDialogAction = function useObjectDrawDialogAction(_ref5) {
1310
1310
  drawDialogLayerHasGeoJSON = _useDialogOptions.hasGeoJSON,
1311
1311
  drawDialogLayerId = _useDialogOptions.dialogLayerId;
1312
1312
  var drawDialogActiveDrawModeId = useSelector(function (store) {
1313
- return drawtoolSelectors.getActiveDrawModeId(store, drawingDialogType);
1313
+ return drawingToolSelectors.getActiveDrawModeId(store, drawingDialogType);
1314
1314
  });
1315
1315
  var isFormDirty = useSelector(function (store) {
1316
1316
  return getWarningFormDirty(store, drawingDialogType);
@@ -2138,7 +2138,8 @@ var slice$1 = createSlice({
2138
2138
  removeArea: function removeArea(draft, action) {
2139
2139
  var area = action.payload.area;
2140
2140
  if (draft.warning) {
2141
- var removeAreas = draft.warning.warningDetail.areas.filter(function (existingArea) {
2141
+ var _draft$warning$warnin2;
2142
+ var removeAreas = (_draft$warning$warnin2 = draft.warning.warningDetail.areas) == null ? void 0 : _draft$warning$warnin2.filter(function (existingArea) {
2142
2143
  return existingArea.objectName !== area.objectName;
2143
2144
  });
2144
2145
  draft.warning.warningDetail.areas = removeAreas;
@@ -2162,7 +2163,7 @@ var slice$1 = createSlice({
2162
2163
  draft.warning = warning;
2163
2164
  draft.selectedWarningId = warning == null ? void 0 : warning.id;
2164
2165
  draft.formState = formState;
2165
- draft.warningType = warningType;
2166
+ draft.warningType = (warning == null ? void 0 : warning.type) || warningType;
2166
2167
  draft.panelId = panelId;
2167
2168
  },
2168
2169
  // publish warning
@@ -2236,8 +2237,8 @@ var slice$1 = createSlice({
2236
2237
  });
2237
2238
  }
2238
2239
  });
2239
- var reducer$1 = slice$1.reducer;
2240
- var publicWarningFormActions = slice$1.actions;
2240
+ var publicWarningFormReducer = slice$1.reducer,
2241
+ publicWarningFormActions = slice$1.actions;
2241
2242
 
2242
2243
  var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
2243
2244
  var bounds = _ref.bounds,
@@ -2337,7 +2338,7 @@ var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
2337
2338
  while (1) switch (_context.prev = _context.next) {
2338
2339
  case 0:
2339
2340
  isActive = drawing.id === (currrentDrawing == null ? void 0 : currrentDrawing.id);
2340
- dispatch(drawActions.setDrawValues({
2341
+ dispatch(warningsDrawingsActions.setDrawValues({
2341
2342
  objectName: drawing.objectName,
2342
2343
  drawingInstanceId: drawingDialogType,
2343
2344
  id: !isActive ? drawing.id : ''
@@ -2383,7 +2384,7 @@ var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
2383
2384
  _yield$warningsApi$ge = _context2.sent;
2384
2385
  data = _yield$warningsApi$ge.data;
2385
2386
  // update draw tool values
2386
- dispatch(drawActions.setDrawValues({
2387
+ dispatch(warningsDrawingsActions.setDrawValues({
2387
2388
  objectName: data.objectName,
2388
2389
  id: drawingId,
2389
2390
  drawingInstanceId: drawingDialogType
@@ -2427,7 +2428,8 @@ var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
2427
2428
  geoJSON: object.geoJSON,
2428
2429
  objectName: object.objectName
2429
2430
  }]
2430
- }
2431
+ },
2432
+ type: 'public'
2431
2433
  }
2432
2434
  }));
2433
2435
  };
@@ -6863,6 +6865,271 @@ var warningListJSON = [
6863
6865
  }
6864
6866
  ];
6865
6867
 
6868
+ var sigmetListJSON$1 = [
6869
+ {
6870
+ id: "57eaf6c8-a247-11ef-ac05-12e0cc025418",
6871
+ lastUpdatedTime: "2024-11-14T05:14:37",
6872
+ productStatus: "DRAFT",
6873
+ sigmetAirmetDetails: {
6874
+ },
6875
+ warningDetail: {
6876
+ areas: [
6877
+ {
6878
+ geoJSON: {
6879
+ features: [
6880
+ {
6881
+ geometry: {
6882
+ type: "Polygon",
6883
+ coordinates: [
6884
+ [
6885
+ [
6886
+ 10,
6887
+ 20
6888
+ ],
6889
+ [
6890
+ 15,
6891
+ 25
6892
+ ],
6893
+ [
6894
+ 20,
6895
+ 20
6896
+ ],
6897
+ [
6898
+ 10,
6899
+ 20
6900
+ ]
6901
+ ]
6902
+ ]
6903
+ },
6904
+ properties: {
6905
+ selectionType: "fir",
6906
+ stroke: "#0075a9",
6907
+ "stroke-width": 1.5,
6908
+ "stroke-opacity": 1,
6909
+ fill: "#0075a9",
6910
+ "fill-opacity": 0.4
6911
+ },
6912
+ type: "Feature"
6913
+ }
6914
+ ],
6915
+ type: "FeatureCollection"
6916
+ },
6917
+ objectName: "ENOB"
6918
+ }
6919
+ ],
6920
+ descriptionOriginal: "",
6921
+ descriptionTranslation: "",
6922
+ firName: "BODOE OCEANIC FIR",
6923
+ incident: "-1",
6924
+ level: "SIG",
6925
+ phenomenon: "EMBD_TSGR",
6926
+ probability: "0",
6927
+ validFrom: "2024-11-14T05:30:14Z",
6928
+ validUntil: "2024-11-14T07:30:14Z"
6929
+ }
6930
+ },
6931
+ {
6932
+ id: "fc4c0002-8d32-11ef-888b-ee87a1644661",
6933
+ lastUpdatedTime: "2024-11-14T05:14:06",
6934
+ productStatus: "EXPIRED",
6935
+ sigmetAirmetDetails: {
6936
+ },
6937
+ warningDetail: {
6938
+ areas: [
6939
+ {
6940
+ geoJSON: null,
6941
+ objectName: "EFIN"
6942
+ }
6943
+ ],
6944
+ descriptionOriginal: "",
6945
+ descriptionTranslation: "",
6946
+ firName: "HELSINKI FIR",
6947
+ incident: "T01",
6948
+ level: "SIG",
6949
+ phenomenon: "OBSC_TS",
6950
+ probability: "0",
6951
+ validFrom: "2024-11-13T05:30:14Z",
6952
+ validUntil: "2024-11-13T07:30:14Z"
6953
+ }
6954
+ },
6955
+ {
6956
+ id: "fe4a14bc-8a90-11ef-9090-6c08d8abf452",
6957
+ lastUpdatedTime: "2024-10-08T08:10:30",
6958
+ productStatus: "PUBLISHED",
6959
+ sigmetAirmetDetails: {
6960
+ },
6961
+ warningDetail: {
6962
+ areas: [
6963
+ {
6964
+ geoJSON: null,
6965
+ objectName: "EHAA"
6966
+ }
6967
+ ],
6968
+ descriptionOriginal: "",
6969
+ descriptionTranslation: "",
6970
+ firName: "AMSTERDAM FIR",
6971
+ incident: "Z01",
6972
+ level: "SIG",
6973
+ phenomenon: "SEV_ICE",
6974
+ probability: "0",
6975
+ validFrom: "2024-10-08T05:30:14Z",
6976
+ validUntil: "2024-10-08T09:30:14Z"
6977
+ }
6978
+ },
6979
+ {
6980
+ id: "fe4a14bc-8a90-11ef-9090-6c08d8abf453",
6981
+ lastUpdatedTime: "2024-10-08T08:10:30",
6982
+ productStatus: "CANCELLED",
6983
+ warningDetail: {
6984
+ areas: [
6985
+ {
6986
+ geoJSON: null,
6987
+ objectName: "ENOR"
6988
+ }
6989
+ ],
6990
+ descriptionOriginal: "",
6991
+ descriptionTranslation: "",
6992
+ firName: "POLARIS FIR",
6993
+ incident: "U01",
6994
+ level: "SIG",
6995
+ phenomenon: "SEV_TURB",
6996
+ probability: "0",
6997
+ validFrom: "2024-10-08T05:30:14Z",
6998
+ validUntil: "2024-10-08T09:30:14Z"
6999
+ },
7000
+ sigmetAirmetDetails: {
7001
+ sequence: "U01",
7002
+ productStatus: "CANCELLED"
7003
+ }
7004
+ },
7005
+ {
7006
+ id: "fe4a14bc-8a90-11ef-9090-6c08d8abf454",
7007
+ lastUpdatedTime: "2024-10-08T08:10:30",
7008
+ productStatus: "PUBLISHED",
7009
+ warningDetail: {
7010
+ areas: [
7011
+ {
7012
+ geoJSON: null,
7013
+ objectName: "ENOR"
7014
+ }
7015
+ ],
7016
+ descriptionOriginal: "",
7017
+ descriptionTranslation: "",
7018
+ firName: "POLARIS FIR",
7019
+ incident: "U02",
7020
+ level: "SIG",
7021
+ phenomenon: "SEV_TURB",
7022
+ probability: "0",
7023
+ validFrom: "2024-10-08T05:30:14Z",
7024
+ validUntil: "2024-10-08T09:30:14Z"
7025
+ },
7026
+ sigmetAirmetDetails: {
7027
+ cancelsSigmetSequenceId: "U01",
7028
+ sequence: "U02",
7029
+ productStatus: "PUBLISHED"
7030
+ }
7031
+ }
7032
+ ];
7033
+
7034
+ var airmetListJSON$1 = [
7035
+ {
7036
+ id: "02d3727a-b190-11ef-ba31-067f7750936d",
7037
+ lastUpdatedTime: "2024-12-03T16:02:35",
7038
+ productStatus: "DRAFT",
7039
+ sigmetAirmetDetails: {
7040
+ },
7041
+ warningDetail: {
7042
+ areas: [
7043
+ {
7044
+ geoJSON: null,
7045
+ objectName: "EHAA"
7046
+ }
7047
+ ],
7048
+ descriptionOriginal: "",
7049
+ descriptionTranslation: "",
7050
+ firName: "AMSTERDAM FIR",
7051
+ incident: "-1",
7052
+ level: "AIR",
7053
+ phenomenon: "SFC_WIND",
7054
+ probability: "0",
7055
+ validFrom: "2024-12-03T17:00:09Z",
7056
+ validUntil: "2024-12-03T21:00:09Z"
7057
+ }
7058
+ },
7059
+ {
7060
+ id: "1a868884-9076-11ef-8e82-5a063b90cdf6",
7061
+ lastUpdatedTime: "2024-10-22T13:03:56",
7062
+ productStatus: "DRAFT",
7063
+ sigmetAirmetDetails: {
7064
+ },
7065
+ warningDetail: {
7066
+ areas: [
7067
+ {
7068
+ geoJSON: null,
7069
+ objectName: "EHAA"
7070
+ }
7071
+ ],
7072
+ descriptionOriginal: "",
7073
+ descriptionTranslation: "",
7074
+ firName: "AMSTERDAM FIR",
7075
+ incident: "-1",
7076
+ level: "AIR",
7077
+ phenomenon: "MOD_TURB",
7078
+ probability: "0",
7079
+ validFrom: "2024-10-22T15:00:09Z",
7080
+ validUntil: "2024-10-22T18:00:09Z"
7081
+ }
7082
+ },
7083
+ {
7084
+ id: "4ac7fc94-c670-11ee-8ace-92491e683685",
7085
+ lastUpdatedTime: "2024-02-08T12:26:31.803468",
7086
+ productStatus: "EXPIRED",
7087
+ sigmetAirmetDetails: {
7088
+ },
7089
+ warningDetail: {
7090
+ areas: [
7091
+ {
7092
+ geoJSON: null,
7093
+ objectName: "ENOR"
7094
+ }
7095
+ ],
7096
+ descriptionOriginal: "",
7097
+ descriptionTranslation: "",
7098
+ firName: "POLARIS FIR",
7099
+ incident: "T01",
7100
+ level: "AIR",
7101
+ phenomenon: "OBSC_TS",
7102
+ probability: "0",
7103
+ validFrom: "2024-02-08T09:00:09Z",
7104
+ validUntil: "2024-02-08T11:00:09Z"
7105
+ }
7106
+ },
7107
+ {
7108
+ id: "9dbcd4c6-c4c0-11ee-a0e9-9e39e246af14",
7109
+ lastUpdatedTime: "2024-02-06T07:15:18.166785",
7110
+ productStatus: "PUBLISHED",
7111
+ sigmetAirmetDetails: {
7112
+ },
7113
+ warningDetail: {
7114
+ areas: [
7115
+ {
7116
+ geoJSON: null,
7117
+ objectName: "EHAA"
7118
+ }
7119
+ ],
7120
+ descriptionOriginal: "",
7121
+ descriptionTranslation: "",
7122
+ firName: "AMSTERDAM FIR",
7123
+ incident: "Z01",
7124
+ level: "AIR",
7125
+ phenomenon: "SEV_ICE",
7126
+ probability: "0",
7127
+ validFrom: "2024-02-06T08:00:09Z",
7128
+ validUntil: "2024-02-06T12:00:09Z"
7129
+ }
7130
+ }
7131
+ ];
7132
+
6866
7133
  var airmetListJSON = [
6867
7134
  {
6868
7135
  uuid: "02d3727a-b190-11ef-ba31-067f7750936d",
@@ -7167,14 +7434,14 @@ var sigmetListJSON = [
7167
7434
  * Copyright 2024 - Finnish Meteorological Institute (FMI)
7168
7435
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
7169
7436
  * */
7170
- var airmetList = airmetListJSON;
7171
- var sigmetList = sigmetListJSON;
7437
+ var airmetList$1 = airmetListJSON;
7438
+ var sigmetList$1 = sigmetListJSON;
7172
7439
  var fakeSigmetTAC = 'EHAA SIGMET 1 VALID 121249/121449 EHDB- EHAA AMSTERDAM FIR FRQ TS OBS ENTIRE FIR FL010 STNR WKN';
7173
7440
  var fakeAirmetTAC = 'EHAA AIRMET -1 VALID 310700/311100 EHDB- EHAA AMSTERDAM FIR ISOL CB OBS ENTIRE FIR FL020 STNR NC';
7174
7441
  [rest.get(/^.*\/airmetlist$/, function (_, res, ctx) {
7175
- return res(ctx.status(200), ctx.json(airmetList));
7442
+ return res(ctx.status(200), ctx.json(airmetList$1));
7176
7443
  }), rest.get(/^.*\/sigmetlist$/, function (_, res, ctx) {
7177
- return res(ctx.status(200), ctx.json(sigmetList));
7444
+ return res(ctx.status(200), ctx.json(sigmetList$1));
7178
7445
  }), rest.get(/^.*\/airmet-config$/, function (_, res, ctx) {
7179
7446
  return res(ctx.status(200), ctx.json(airmetConfig));
7180
7447
  }), rest.get(/^.*\/sigmet-config$/, function (_, res, ctx) {
@@ -7206,16 +7473,31 @@ var fakeAirmetTAC = 'EHAA AIRMET -1 VALID 310700/311100 EHDB- EHAA AMSTERDAM FIR
7206
7473
  * */
7207
7474
  var drawingList = drawingListJSON;
7208
7475
  var drawingsListFullContent = drawingsListFullContentJSON;
7209
- var warningList = warningListJSON;
7476
+ var warningList = warningListJSON.map(function (pw) {
7477
+ return Object.assign({}, pw, {
7478
+ type: 'public'
7479
+ });
7480
+ });
7210
7481
  warningList.filter(function (warning) {
7211
7482
  return warning.status !== 'EXPIRED' && warning.status !== 'WITHDRAWN';
7212
7483
  }).length;
7484
+ var sigmetList = sigmetListJSON$1.map(function (s) {
7485
+ return Object.assign({}, s, {
7486
+ type: 'sigmet'
7487
+ });
7488
+ });
7489
+ var airmetList = airmetListJSON$1.map(function (a) {
7490
+ return Object.assign({}, a, {
7491
+ type: 'airmet'
7492
+ });
7493
+ });
7494
+ concat(warningList, sigmetList, airmetList);
7213
7495
  var areaKeywordList = ['North Sea districts', 'Coastal Districts', 'KNMI Specific', 'Objects', 'Baltic areas', 'NL', 'FI', 'METNorway Specific', 'Provinces', 'FIR', 'Countries'];
7214
7496
  [rest.get(/^.*\/warnings$/, function (req, res, ctx) {
7215
7497
  // respond using a mocked JSON body
7216
- return res(ctx.json(warningList));
7498
+ return res(ctx.status(200), ctx.json(warningList));
7217
7499
  }), rest.post(/^.*\/warnings\/(.*)$/, function (req, res, ctx) {
7218
- return res(ctx.json({}));
7500
+ return res(ctx.status(200), ctx.json({}));
7219
7501
  })];
7220
7502
 
7221
7503
  /* *
@@ -7285,20 +7567,14 @@ var getApiRoutes = function getApiRoutes(axiosInstance) {
7285
7567
  });
7286
7568
  },
7287
7569
  updateDrawing: function updateDrawing(drawingId, data) {
7288
- // eslint-disable-next-line no-console
7289
- console.log('api: save drawing', drawingId, data);
7290
7570
  return axiosInstance.post("/drawings/" + drawingId + "/", data);
7291
7571
  },
7292
7572
  saveDrawingAs: function saveDrawingAs(data) {
7293
- // eslint-disable-next-line no-console
7294
- console.log('api: save drawing as', data);
7295
7573
  return axiosInstance.post("/drawings/", data).then(function () {
7296
7574
  return 'new-drawing-id';
7297
7575
  });
7298
7576
  },
7299
7577
  deleteDrawing: function deleteDrawing(drawingId) {
7300
- // eslint-disable-next-line no-console
7301
- console.log('api: delete drawing', drawingId);
7302
7578
  drawingList.splice(drawingList.findIndex(function (drawing) {
7303
7579
  return drawing.id === drawingId;
7304
7580
  }), 1);
@@ -7312,20 +7588,14 @@ var getApiRoutes = function getApiRoutes(axiosInstance) {
7312
7588
  });
7313
7589
  },
7314
7590
  saveWarningAs: function saveWarningAs(data) {
7315
- // eslint-disable-next-line no-console
7316
- console.log('api: save warning as', data);
7317
7591
  return axiosInstance.post("/warnings/", data).then(function () {
7318
7592
  return 'new-warning-id';
7319
7593
  });
7320
7594
  },
7321
7595
  updateWarning: function updateWarning(warningId, data) {
7322
- // eslint-disable-next-line no-console
7323
- console.log("api: update warning " + warningId, data);
7324
7596
  return axiosInstance.post("/warnings/" + warningId + "/", data);
7325
7597
  },
7326
7598
  deleteWarning: function deleteWarning(warningId) {
7327
- // eslint-disable-next-line no-console
7328
- console.log('api: delete warning', warningId);
7329
7599
  warningList.splice(warningList.findIndex(function (warning) {
7330
7600
  return warning.id === warningId;
7331
7601
  }), 1);
@@ -7333,7 +7603,7 @@ var getApiRoutes = function getApiRoutes(axiosInstance) {
7333
7603
  }
7334
7604
  };
7335
7605
  };
7336
- // used in storybook
7606
+ // used in storybook and tests
7337
7607
  var createApi = function createApi() {
7338
7608
  var instance = createFakeApiInstance();
7339
7609
  return getApiRoutes(instance);
@@ -7819,7 +8089,7 @@ var DrawingToolFormConnect = function DrawingToolFormConnect() {
7819
8089
  });
7820
8090
  var drawToolId = drawingDialogType;
7821
8091
  var drawTool = useSelector(function (store) {
7822
- return drawtoolSelectors.selectDrawToolById(store, drawToolId);
8092
+ return drawingToolSelectors.selectDrawToolById(store, drawToolId);
7823
8093
  });
7824
8094
  var layerFeatureGeoJSON = useSelector(function (store) {
7825
8095
  return layerSelectors.getFeatureLayerGeoJSON(store, drawTool == null ? void 0 : drawTool.geoJSONLayerId);
@@ -7837,7 +8107,7 @@ var DrawingToolFormConnect = function DrawingToolFormConnect() {
7837
8107
  return uiSelectors.getDialogError(store, drawToolId);
7838
8108
  });
7839
8109
  var onSubmitForm = React.useCallback(function (formValues) {
7840
- dispatch(drawActions.submitDrawValues({
8110
+ dispatch(warningsDrawingsActions.submitDrawValues({
7841
8111
  geoJSON: formValues.geoJSON,
7842
8112
  objectName: formValues.objectName,
7843
8113
  scope: 'user',
@@ -7871,7 +8141,7 @@ var DrawingToolFormConnect = function DrawingToolFormConnect() {
7871
8141
  }
7872
8142
  }, [dispatch, drawTool == null ? void 0 : drawTool.activeDrawModeId, drawTool == null ? void 0 : drawTool.geoJSONLayerId, drawToolId]);
7873
8143
  var onChangeName = React.useCallback(function (newName) {
7874
- dispatch(drawActions.setDrawValues({
8144
+ dispatch(warningsDrawingsActions.setDrawValues({
7875
8145
  objectName: newName,
7876
8146
  id: (drawing == null ? void 0 : drawing.id) || '',
7877
8147
  drawingInstanceId: drawingDialogType,
@@ -7879,7 +8149,7 @@ var DrawingToolFormConnect = function DrawingToolFormConnect() {
7879
8149
  }));
7880
8150
  }, [dispatch, drawing == null ? void 0 : drawing.id, drawing == null ? void 0 : drawing.isFormDirty]);
7881
8151
  var onChangeFormDirty = React.useCallback(function (isFormDirty) {
7882
- dispatch(drawActions.setFormDirty({
8152
+ dispatch(warningsDrawingsActions.setFormDirty({
7883
8153
  drawingInstanceId: drawingDialogType,
7884
8154
  isFormDirty: isFormDirty
7885
8155
  }));
@@ -9527,7 +9797,7 @@ isAviationWarning) {
9527
9797
  });
9528
9798
  }
9529
9799
  var Form = function Form(_ref5) {
9530
- var _publicWarningDetails;
9800
+ var _publicWarningDetails, _publicWarningDetails2;
9531
9801
  var defaultMapPreset = _ref5.defaultMapPreset,
9532
9802
  _ref5$onSaveForm = _ref5.onSaveForm,
9533
9803
  onSaveForm = _ref5$onSaveForm === void 0 ? function () {} : _ref5$onSaveForm,
@@ -9559,7 +9829,7 @@ var Form = function Form(_ref5) {
9559
9829
  var _useTACApi = useTACApi(),
9560
9830
  fetchSigmetTAC = _useTACApi.fetchSigmetTAC,
9561
9831
  fetchAirmetTAC = _useTACApi.fetchAirmetTAC;
9562
- var initialPublicWarningArea = publicWarningDetails && (publicWarningDetails == null ? void 0 : publicWarningDetails.areas) && (publicWarningDetails == null ? void 0 : publicWarningDetails.areas.length) && (publicWarningDetails == null || (_publicWarningDetails = publicWarningDetails.areas[0]) == null ? void 0 : _publicWarningDetails.geoJSON);
9832
+ var initialPublicWarningArea = (publicWarningDetails == null || (_publicWarningDetails = publicWarningDetails.areas) == null ? void 0 : _publicWarningDetails.length) && (publicWarningDetails == null || (_publicWarningDetails2 = publicWarningDetails.areas[0]) == null ? void 0 : _publicWarningDetails2.geoJSON);
9563
9833
  var _React$useState = React.useState(initialPublicWarningArea),
9564
9834
  warningGeoJSONFeature = _React$useState[0],
9565
9835
  setWarningGeoJSONFeature = _React$useState[1];
@@ -10013,44 +10283,42 @@ var PublicWarningsFormConnect = function PublicWarningsFormConnect(_ref) {
10013
10283
  warningType = _ref$warningType === void 0 ? 'public' : _ref$warningType,
10014
10284
  mode = _ref.mode,
10015
10285
  onFormSubmit = _ref.onFormSubmit;
10016
- var publicWarning = useSelector(function (store) {
10017
- return getPublicWarning(store);
10018
- });
10019
- var publicWarningObject = useSelector(function (store) {
10020
- return getPublicWarningObject(store);
10021
- });
10022
- var publicWarningFormAction = useSelector(function (store) {
10023
- return getPublicWarningFormState(store);
10024
- });
10025
- var publicWarningFormError = useSelector(function (store) {
10026
- return getPublicWarningFormError(store);
10027
- });
10286
+ var publicWarning = useSelector(getPublicWarning);
10287
+ var publicWarningObject = useSelector(getPublicWarningObject);
10288
+ var publicWarningFormAction = useSelector(getPublicWarningFormState);
10289
+ var publicWarningFormError = useSelector(getPublicWarningFormError);
10028
10290
  var _useAuthenticationCon = useAuthenticationContext$1(),
10029
10291
  auth = _useAuthenticationCon.auth;
10030
10292
  var isEditor = editor === (auth == null ? void 0 : auth.username) || false;
10031
10293
  var dispatch = useDispatch();
10032
10294
  var publishForm = function publishForm(newFormValues) {
10033
- dispatch(publicWarningFormActions.publishWarning({
10034
- publicWarning: {
10035
- warningDetail: newFormValues,
10036
- status: PublicWarningStatus.PUBLISHED
10037
- },
10038
- refetchWarnings: onFormSubmit
10039
- }));
10295
+ if (warningType === 'public') {
10296
+ dispatch(publicWarningFormActions.publishWarning({
10297
+ publicWarning: {
10298
+ warningDetail: newFormValues,
10299
+ status: PublicWarningStatus.PUBLISHED,
10300
+ type: warningType
10301
+ },
10302
+ refetchWarnings: onFormSubmit
10303
+ }));
10304
+ }
10040
10305
  };
10041
10306
  var clearForm = function clearForm() {
10042
10307
  dispatch(publicWarningFormActions.removeAllAreas());
10043
10308
  };
10044
10309
  var saveForm = function saveForm(newFormValues) {
10045
10310
  var status = newFormValues.linked_to_id ? PublicWarningStatus.DRAFT_PUBLISHED : PublicWarningStatus.DRAFT;
10046
- dispatch(publicWarningFormActions.saveWarning({
10047
- publicWarning: {
10048
- warningDetail: newFormValues,
10049
- status: status,
10050
- editor: auth == null ? void 0 : auth.username
10051
- },
10052
- refetchWarnings: onFormSubmit
10053
- }));
10311
+ if (warningType === 'public') {
10312
+ dispatch(publicWarningFormActions.saveWarning({
10313
+ publicWarning: {
10314
+ warningDetail: newFormValues,
10315
+ status: status,
10316
+ editor: auth == null ? void 0 : auth.username,
10317
+ type: warningType
10318
+ },
10319
+ refetchWarnings: onFormSubmit
10320
+ }));
10321
+ }
10054
10322
  };
10055
10323
  var onFormDirty = function onFormDirty(isFormDirty) {
10056
10324
  dispatch(publicWarningFormActions.setFormDirty({
@@ -10727,7 +10995,7 @@ var AreaObjectLoaderConnect = function AreaObjectLoaderConnect(_ref) {
10727
10995
  });
10728
10996
  };
10729
10997
 
10730
- var _excluded$6 = ["sigmetAirmetDetail"];
10998
+ var _excluded$6 = ["sigmetAirmetDetails"];
10731
10999
  function isCancelAirmet(warningDetail) {
10732
11000
  return warningDetail.cancelsAirmetSequenceId !== undefined;
10733
11001
  }
@@ -10735,14 +11003,12 @@ function isCancelSigmet(warningDetail) {
10735
11003
  return warningDetail.cancelsSigmetSequenceId !== undefined;
10736
11004
  }
10737
11005
  var flattenPublicWarning = function flattenPublicWarning(publicWarning) {
10738
- if (!publicWarning) {
11006
+ if (publicWarning.type === 'public') {
10739
11007
  return {};
10740
11008
  }
10741
- var sigmetAirmetDetail = publicWarning.sigmetAirmetDetail,
11009
+ var sigmetAirmetDetails = publicWarning.sigmetAirmetDetails,
10742
11010
  rest = _objectWithoutPropertiesLoose(publicWarning, _excluded$6);
10743
- return Object.assign({}, rest, sigmetAirmetDetail || {}, {
10744
- status: sigmetAirmetDetail == null ? void 0 : sigmetAirmetDetail.status
10745
- });
11011
+ return Object.assign({}, rest, sigmetAirmetDetails);
10746
11012
  };
10747
11013
  var transformAirmetToWarningFormat = function transformAirmetToWarningFormat(apiAirmet) {
10748
11014
  var airmet = apiAirmet.airmet;
@@ -10777,7 +11043,8 @@ var transformAirmetToWarningFormat = function transformAirmetToWarningFormat(api
10777
11043
  descriptionOriginal: '',
10778
11044
  descriptionTranslation: ''
10779
11045
  },
10780
- sigmetAirmetDetail: Object.assign({}, airmet)
11046
+ sigmetAirmetDetails: Object.assign({}, airmet),
11047
+ type: 'airmet'
10781
11048
  };
10782
11049
  };
10783
11050
  var transformSigmetToWarningFormat = function transformSigmetToWarningFormat(apiSigmet) {
@@ -10829,7 +11096,8 @@ var transformSigmetToWarningFormat = function transformSigmetToWarningFormat(api
10829
11096
  descriptionOriginal: '',
10830
11097
  descriptionTranslation: ''
10831
11098
  },
10832
- sigmetAirmetDetail: Object.assign({}, sigmet)
11099
+ sigmetAirmetDetails: Object.assign({}, sigmet),
11100
+ type: 'sigmet'
10833
11101
  };
10834
11102
  };
10835
11103
  var mapProductStatusToWarningStatus = function mapProductStatusToWarningStatus(productStatus) {
@@ -11003,17 +11271,8 @@ var getEmptyAirmetWarning = function getEmptyAirmetWarning() {
11003
11271
  }
11004
11272
  };
11005
11273
  };
11006
- var renewWarning = function renewWarning(warning, productConfig) {
11007
- if (!warning.sigmetAirmetDetail) {
11008
- return warning;
11009
- }
11010
- return renewAviationProduct(warning, productConfig);
11011
- };
11012
- var renewAviationProduct = function renewAviationProduct(oldWarning, productConfig) {
11013
- var warningDetail = oldWarning.sigmetAirmetDetail;
11014
- if (!warningDetail) {
11015
- return oldWarning;
11016
- }
11274
+ var renewAviationProduct = function renewAviationProduct(aviationWarning, productConfig) {
11275
+ var warningDetail = aviationWarning.sigmetAirmetDetails;
11017
11276
  var newValidUntil = 'phenomenon' in warningDetail ? getDefaultValidUntilValue(productConfig, warningDetail.phenomenon, warningDetail.locationIndicatorATSR, warningDetail.validDateEnd) : warningDetail.validDateEnd;
11018
11277
  var renewedWarningDetail = Object.assign({}, warningDetail, {
11019
11278
  validDateStart: warningDetail.validDateEnd,
@@ -11022,8 +11281,18 @@ var renewAviationProduct = function renewAviationProduct(oldWarning, productConf
11022
11281
  uuid: undefined,
11023
11282
  sequence: '-1'
11024
11283
  });
11025
- return Object.assign({}, oldWarning, {
11026
- sigmetAirmetDetail: renewedWarningDetail
11284
+ return Object.assign({}, aviationWarning, {
11285
+ sigmetAirmetDetails: renewedWarningDetail
11286
+ });
11287
+ };
11288
+ var duplicateAviationProduct = function duplicateAviationProduct(aviationWarning) {
11289
+ var duplicatedWarningDetail = Object.assign({}, aviationWarning.sigmetAirmetDetails, {
11290
+ status: ProductStatus.DRAFT,
11291
+ uuid: undefined,
11292
+ sequence: '-1'
11293
+ });
11294
+ return Object.assign({}, aviationWarning, {
11295
+ sigmetAirmetDetails: duplicatedWarningDetail
11027
11296
  });
11028
11297
  };
11029
11298
 
@@ -11050,10 +11319,16 @@ var publicWarningBaseUrl = config.GW_DRAWINGS_BASE_URL || '';
11050
11319
  var getPublicWarningList = function getPublicWarningList(auth) {
11051
11320
  return fetch(publicWarningBaseUrl + "/warnings", {
11052
11321
  headers: getHeaders(auth)
11053
- }).then(handleResponse);
11322
+ }).then(handleResponse).then(function (warnings) {
11323
+ return warnings.map(function (warning) {
11324
+ return Object.assign({}, warning, {
11325
+ type: 'public'
11326
+ });
11327
+ });
11328
+ });
11054
11329
  };
11055
11330
  var updatePublicWarningEditor = function updatePublicWarningEditor(warningId, isEditor, auth) {
11056
- return fetch(publicWarningBaseUrl + "/warnings/" + warningId + "?editor=" + (isEditor ? 'true' : 'false'), {
11331
+ return fetch(publicWarningBaseUrl + "/warnings/" + warningId + "?editor=" + (isEditor ? 'true' : 'false') + "&force=true", {
11057
11332
  headers: getHeaders(auth),
11058
11333
  method: 'POST'
11059
11334
  }).then(handleResponse);
@@ -11153,7 +11428,7 @@ var useWarnings = function useWarnings(disabled) {
11153
11428
  var combinedWarnings = useMemo(function () {
11154
11429
  var transformedSigmets = (sigmetWarnings == null ? void 0 : sigmetWarnings.map(transformSigmetToWarningFormat)) || [];
11155
11430
  var transformedAirmets = (airmetWarnings == null ? void 0 : airmetWarnings.map(transformAirmetToWarningFormat)) || [];
11156
- return (publicWarnings || []).concat(transformedSigmets).concat(transformedAirmets);
11431
+ return concat(publicWarnings || [], transformedSigmets, transformedAirmets);
11157
11432
  }, [publicWarnings, sigmetWarnings, airmetWarnings]);
11158
11433
  var refetchWarnings = function refetchWarnings() {
11159
11434
  void refetchPublicWarnings();
@@ -11221,9 +11496,7 @@ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_
11221
11496
  setHasFetched(true);
11222
11497
  }
11223
11498
  }, [isFetching]);
11224
- var selectedWarningId = useSelector(function (store) {
11225
- return getSelectedWarningId(store);
11226
- });
11499
+ var selectedWarningId = useSelector(getSelectedWarningId);
11227
11500
  var selectedWarningObject = useSelector(getPublicWarning);
11228
11501
  var warningType = useSelector(getWarningType);
11229
11502
  var selectedWarning = combinedWarnings == null ? void 0 : combinedWarnings.find(function (w) {
@@ -11418,7 +11691,7 @@ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_
11418
11691
  var selectedSigmetProduct = selectedSigmet && aviationConfig ? transformSigmetToProductFormat(selectedSigmet) : getEmptySigmetWarning();
11419
11692
  var selectedAirmetProduct = selectedAirmet && aviationConfig ? transformAirmetToProductFormat(selectedAirmet) : getEmptyAirmetWarning();
11420
11693
  var selectedAviationProduct = React__default.useMemo(function () {
11421
- if (selectedWarningObject && selectedWarningObject.sigmetAirmetDetail && aviationConfig) {
11694
+ if (['sigmet', 'airmet'].includes((selectedWarningObject == null ? void 0 : selectedWarningObject.type) || '') && aviationConfig) {
11422
11695
  return flattenPublicWarning(selectedWarningObject);
11423
11696
  }
11424
11697
  if (updatedWarningType === 'sigmet') {
@@ -11897,8 +12170,8 @@ var WarningListItemMenu = function WarningListItemMenu(_ref) {
11897
12170
  onExpireWarning = _ref$onExpireWarning === void 0 ? function () {} : _ref$onExpireWarning,
11898
12171
  _ref$onWithdrawWarnin = _ref.onWithdrawWarning,
11899
12172
  onWithdrawWarning = _ref$onWithdrawWarnin === void 0 ? function () {} : _ref$onWithdrawWarnin,
11900
- _ref$onRenewWarning = _ref.onRenewWarning,
11901
- onRenewWarning = _ref$onRenewWarning === void 0 ? function () {} : _ref$onRenewWarning,
12173
+ _ref$onActionAviation = _ref.onActionAviationWarning,
12174
+ onActionAviationWarning = _ref$onActionAviation === void 0 ? function () {} : _ref$onActionAviation,
11902
12175
  t = _ref.t;
11903
12176
  var duplicate = {
11904
12177
  text: t('warning-list-button-duplicate'),
@@ -11907,6 +12180,13 @@ var WarningListItemMenu = function WarningListItemMenu(_ref) {
11907
12180
  },
11908
12181
  icon: jsx(Copy, {})
11909
12182
  };
12183
+ var aviationDuplicate = {
12184
+ text: t('warning-list-button-duplicate'),
12185
+ action: function action() {
12186
+ return onActionAviationWarning(warning, ProductAction.DUPLICATE);
12187
+ },
12188
+ icon: jsx(Copy, {})
12189
+ };
11910
12190
  // disable Expire option if warning is not active
11911
12191
  var shouldDisableExpire = !dateUtils.isBetween(dateUtils.getNowUtc(), dateUtils.createDate(warning.warningDetail.validFrom), dateUtils.createDate(warning.warningDetail.validUntil), '[]');
11912
12192
  switch (warning.status) {
@@ -11966,41 +12246,43 @@ var WarningListItemMenu = function WarningListItemMenu(_ref) {
11966
12246
  }];
11967
12247
  default:
11968
12248
  switch (warning.productStatus) {
12249
+ case ProductStatus.DRAFT:
12250
+ return [aviationDuplicate];
11969
12251
  case ProductStatus.PUBLISHED:
11970
- if (warning.sigmetAirmetDetail && (isInstanceOfCancelSigmet(warning.sigmetAirmetDetail) || isInstanceOfCancelAirmet(warning.sigmetAirmetDetail))) {
12252
+ if (warning.type !== 'public' && (isInstanceOfCancelSigmet(warning.sigmetAirmetDetails) || isInstanceOfCancelAirmet(warning.sigmetAirmetDetails))) {
11971
12253
  return [];
11972
12254
  }
11973
12255
  return [{
11974
12256
  text: t('warning-list-button-renew'),
11975
12257
  action: function action() {
11976
12258
  if (warning) {
11977
- onRenewWarning(warning);
12259
+ onActionAviationWarning(warning);
11978
12260
  }
11979
12261
  },
11980
12262
  icon: jsx(Update, {})
11981
- }];
12263
+ }, aviationDuplicate];
11982
12264
  case ProductStatus.CANCELLED:
11983
12265
  return [];
11984
12266
  case ProductStatus.EXPIRED:
11985
- if (warning.sigmetAirmetDetail && (isInstanceOfCancelSigmet(warning.sigmetAirmetDetail) || isInstanceOfCancelAirmet(warning.sigmetAirmetDetail))) {
12267
+ if (warning.type !== 'public' && (isInstanceOfCancelSigmet(warning.sigmetAirmetDetails) || isInstanceOfCancelAirmet(warning.sigmetAirmetDetails))) {
11986
12268
  return [];
11987
12269
  }
11988
12270
  return [{
11989
12271
  text: t('warning-list-button-renew'),
11990
12272
  action: function action() {
11991
12273
  if (warning) {
11992
- onRenewWarning(warning);
12274
+ onActionAviationWarning(warning, ProductAction.RENEW);
11993
12275
  }
11994
12276
  },
11995
12277
  icon: jsx(Update, {})
11996
- }];
12278
+ }, aviationDuplicate];
11997
12279
  default:
11998
12280
  return [];
11999
12281
  }
12000
12282
  }
12001
12283
  };
12002
12284
 
12003
- var _excluded$2 = ["warning", "activeWarningId", "highlightedItem", "onSelectWarning", "onEditWarning", "onDeleteWarning", "onDeleteReviewWarning", "onExpireWarning", "onWithdrawWarning", "onRenewWarning"];
12285
+ var _excluded$2 = ["warning", "activeWarningId", "highlightedItem", "onSelectWarning", "onEditWarning", "onDeleteWarning", "onDeleteReviewWarning", "onExpireWarning", "onWithdrawWarning", "onActionAviationWarning"];
12004
12286
  var renderLevelText = function renderLevelText(levelString) {
12005
12287
  if (!levelString) {
12006
12288
  return null;
@@ -12037,10 +12319,10 @@ var renderStatusIcon = function renderStatusIcon(warning, status) {
12037
12319
  icon: icon
12038
12320
  });
12039
12321
  };
12040
- if (warning.productStatus === ProductStatus.PUBLISHED && warning.sigmetAirmetDetail && (isCancelAirmet(warning.sigmetAirmetDetail) || isCancelSigmet(warning.sigmetAirmetDetail))) {
12041
- return getStatusTag("Cnls " + (isCancelAirmet(warning.sigmetAirmetDetail) ? warning.sigmetAirmetDetail.cancelsAirmetSequenceId : warning.sigmetAirmetDetail.cancelsSigmetSequenceId), 'red');
12322
+ if (warning.productStatus === ProductStatus.PUBLISHED && warning.type !== 'public' && (isCancelAirmet(warning.sigmetAirmetDetails) || isCancelSigmet(warning.sigmetAirmetDetails))) {
12323
+ return getStatusTag("Cnls " + (isCancelAirmet(warning.sigmetAirmetDetails) ? warning.sigmetAirmetDetails.cancelsAirmetSequenceId : warning.sigmetAirmetDetails.cancelsSigmetSequenceId), 'red');
12042
12324
  }
12043
- if (warning.productStatus === ProductStatus.CANCELLED && warning.sigmetAirmetDetail) {
12325
+ if (warning.productStatus === ProductStatus.CANCELLED && warning.type !== 'public') {
12044
12326
  return getStatusTag('Cnld', 'red');
12045
12327
  }
12046
12328
  switch (status) {
@@ -12079,7 +12361,7 @@ var renderStatusIcon = function renderStatusIcon(warning, status) {
12079
12361
  }
12080
12362
  };
12081
12363
  var WarningListItem = function WarningListItem(_ref) {
12082
- var _warning$warningDetai, _warning$sigmetAirmet, _sx, _sx2, _Object$assign;
12364
+ var _warning$warningDetai, _sx, _sx2, _Object$assign;
12083
12365
  var warning = _ref.warning,
12084
12366
  activeWarningId = _ref.activeWarningId,
12085
12367
  highlightedItem = _ref.highlightedItem,
@@ -12095,14 +12377,14 @@ var WarningListItem = function WarningListItem(_ref) {
12095
12377
  onExpireWarning = _ref$onExpireWarning === void 0 ? function () {} : _ref$onExpireWarning,
12096
12378
  _ref$onWithdrawWarnin = _ref.onWithdrawWarning,
12097
12379
  onWithdrawWarning = _ref$onWithdrawWarnin === void 0 ? function () {} : _ref$onWithdrawWarnin,
12098
- _ref$onRenewWarning = _ref.onRenewWarning,
12099
- onRenewWarning = _ref$onRenewWarning === void 0 ? function () {} : _ref$onRenewWarning,
12380
+ _ref$onActionAviation = _ref.onActionAviationWarning,
12381
+ onActionAviationWarning = _ref$onActionAviation === void 0 ? function () {} : _ref$onActionAviation,
12100
12382
  props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
12101
12383
  var _useWarningsTranslati = useWarningsTranslation(),
12102
12384
  t = _useWarningsTranslati.t;
12103
12385
  var phenomenonDetails = allPhenomenaDict[warning.warningDetail.phenomenon];
12104
12386
  var objectNameText = ((_warning$warningDetai = warning.warningDetail.areas) == null || (_warning$warningDetai = _warning$warningDetai[0]) == null ? void 0 : _warning$warningDetai.objectName) || '-';
12105
- var objectHoverText = (_warning$sigmetAirmet = warning.sigmetAirmetDetail) != null && _warning$sigmetAirmet.firName ? warning.sigmetAirmetDetail.firName : objectNameText;
12387
+ var objectHoverText = warning.type !== 'public' ? warning.sigmetAirmetDetails.firName : objectNameText;
12106
12388
  var _useOverflowCheck = useOverflowCheck(objectNameText),
12107
12389
  objectNameRef = _useOverflowCheck.ref;
12108
12390
  var phenomenonText = phenomenonDetails != null && phenomenonDetails.translationKey ? t(phenomenonDetails.translationKey) : '-';
@@ -12151,7 +12433,7 @@ var WarningListItem = function WarningListItem(_ref) {
12151
12433
  onDeleteWarning: onDeleteWarning,
12152
12434
  onExpireWarning: onExpireWarning,
12153
12435
  onWithdrawWarning: onWithdrawWarning,
12154
- onRenewWarning: onRenewWarning
12436
+ onActionAviationWarning: onActionAviationWarning
12155
12437
  }),
12156
12438
  buttonIcon: jsx(Options, {})
12157
12439
  }),
@@ -12552,8 +12834,8 @@ var PublicWarningList = function PublicWarningList(_ref) {
12552
12834
  onExpireWarning = _ref$onExpireWarning === void 0 ? function () {} : _ref$onExpireWarning,
12553
12835
  _ref$onWithdrawWarnin = _ref.onWithdrawWarning,
12554
12836
  onWithdrawWarning = _ref$onWithdrawWarnin === void 0 ? function () {} : _ref$onWithdrawWarnin,
12555
- _ref$onRenewWarning = _ref.onRenewWarning,
12556
- onRenewWarning = _ref$onRenewWarning === void 0 ? function () {} : _ref$onRenewWarning,
12837
+ _ref$onActionAviation = _ref.onActionAviationWarning,
12838
+ onActionAviationWarning = _ref$onActionAviation === void 0 ? function () {} : _ref$onActionAviation,
12557
12839
  hoveredFeatureId = _ref.hoveredFeatureId,
12558
12840
  expandedSections = _ref.expandedSections,
12559
12841
  setExpandedSections = _ref.setExpandedSections;
@@ -12844,7 +13126,7 @@ var PublicWarningList = function PublicWarningList(_ref) {
12844
13126
  activeWarningId: selectedWarningId,
12845
13127
  onExpireWarning: onExpireWarning,
12846
13128
  onWithdrawWarning: onWithdrawWarning,
12847
- onRenewWarning: onRenewWarning
13129
+ onActionAviationWarning: onActionAviationWarning
12848
13130
  }, key);
12849
13131
  }
12850
13132
  });
@@ -12897,8 +13179,8 @@ var slice = createSlice({
12897
13179
  }
12898
13180
  }
12899
13181
  });
12900
- var reducer = slice.reducer;
12901
- var publicWarningActions = slice.actions;
13182
+ var publicWarningsReducer = slice.reducer,
13183
+ publicWarningActions = slice.actions;
12902
13184
 
12903
13185
  /* *
12904
13186
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -12972,101 +13254,6 @@ var selectors = /*#__PURE__*/Object.freeze({
12972
13254
  selectAllPublicWarnings: selectAllPublicWarnings
12973
13255
  });
12974
13256
 
12975
- var ConfirmDeleteWarningDialog = function ConfirmDeleteWarningDialog(_ref) {
12976
- var _ref$onClose = _ref.onClose,
12977
- onClose = _ref$onClose === void 0 ? function () {} : _ref$onClose,
12978
- title = _ref.title,
12979
- description = _ref.description,
12980
- request = _ref.request,
12981
- confirmLabel = _ref.confirmLabel,
12982
- callback = _ref.callback,
12983
- isLocked = _ref.isLocked;
12984
- var _useWarningsTranslati = useWarningsTranslation(),
12985
- t = _useWarningsTranslati.t;
12986
- var defaultError = isLocked ? t('warning-dialog-delete-islocked') : undefined;
12987
- var _React$useState = React__default.useState(false),
12988
- isLoading = _React$useState[0],
12989
- setIsLoading = _React$useState[1];
12990
- var _React$useState2 = React__default.useState(defaultError),
12991
- error = _React$useState2[0],
12992
- setError = _React$useState2[1];
12993
- var onSubmit = /*#__PURE__*/function () {
12994
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
12995
- return _regeneratorRuntime().wrap(function _callee$(_context) {
12996
- while (1) switch (_context.prev = _context.next) {
12997
- case 0:
12998
- setIsLoading(true);
12999
- _context.prev = 1;
13000
- _context.next = 4;
13001
- return request();
13002
- case 4:
13003
- callback();
13004
- setIsLoading(false);
13005
- _context.next = 12;
13006
- break;
13007
- case 8:
13008
- _context.prev = 8;
13009
- _context.t0 = _context["catch"](1);
13010
- setError(getAxiosErrorMessage(_context.t0));
13011
- setIsLoading(false);
13012
- case 12:
13013
- case "end":
13014
- return _context.stop();
13015
- }
13016
- }, _callee, null, [[1, 8]]);
13017
- }));
13018
- return function onSubmit() {
13019
- return _ref2.apply(this, arguments);
13020
- };
13021
- }();
13022
- return jsx(ConfirmationDialog, Object.assign({
13023
- title: title,
13024
- open: true,
13025
- confirmLabel: confirmLabel,
13026
- cancelLabel: t('warning-dialog-cancel'),
13027
- description: !error ? description : '',
13028
- onClose: onClose,
13029
- onSubmit: onSubmit,
13030
- isLoading: isLoading,
13031
- sx: {
13032
- width: 330
13033
- }
13034
- }, error && {
13035
- content: jsxs(Box, {
13036
- sx: {
13037
- marginBottom: 0
13038
- },
13039
- children: [jsx(AlertBanner, {
13040
- title: error,
13041
- severity: isLocked ? 'warning' : 'error'
13042
- }), jsx(Typography, {
13043
- variant: "body1",
13044
- sx: {
13045
- marginTop: 1
13046
- },
13047
- children: description
13048
- })]
13049
- })
13050
- }));
13051
- };
13052
-
13053
- /* *
13054
- * Licensed under the Apache License, Version 2.0 (the "License");
13055
- * you may not use this file except in compliance with the License.
13056
- * You may obtain a copy of the License at
13057
- *
13058
- * http://www.apache.org/licenses/LICENSE-2.0
13059
- *
13060
- * Unless required by applicable law or agreed to in writing, software
13061
- * distributed under the License is distributed on an "AS IS" BASIS,
13062
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13063
- * See the License for the specific language governing permissions and
13064
- * limitations under the License.
13065
- *
13066
- * Copyright 2024 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
13067
- * Copyright 2024 - Finnish Meteorological Institute (FMI)
13068
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
13069
- * */
13070
13257
  var getLevelsForDomainFilter = function getLevelsForDomainFilter(domainFilter) {
13071
13258
  return Object.keys(domainFilter).flatMap(function (domain) {
13072
13259
  return domainFilter[domain] ? domainLevels[domain] : [];
@@ -13247,6 +13434,84 @@ var useWarningFilters = function useWarningFilters(warnings, onUpdateFilters, sa
13247
13434
  };
13248
13435
  };
13249
13436
 
13437
+ var ConfirmDeleteWarningDialog = function ConfirmDeleteWarningDialog(_ref) {
13438
+ var _ref$onClose = _ref.onClose,
13439
+ onClose = _ref$onClose === void 0 ? function () {} : _ref$onClose,
13440
+ title = _ref.title,
13441
+ description = _ref.description,
13442
+ request = _ref.request,
13443
+ confirmLabel = _ref.confirmLabel,
13444
+ callback = _ref.callback,
13445
+ isLocked = _ref.isLocked;
13446
+ var _useWarningsTranslati = useWarningsTranslation(),
13447
+ t = _useWarningsTranslati.t;
13448
+ var defaultError = isLocked ? t('warning-dialog-delete-islocked') : undefined;
13449
+ var _React$useState = React__default.useState(false),
13450
+ isLoading = _React$useState[0],
13451
+ setIsLoading = _React$useState[1];
13452
+ var _React$useState2 = React__default.useState(defaultError),
13453
+ error = _React$useState2[0],
13454
+ setError = _React$useState2[1];
13455
+ var onSubmit = /*#__PURE__*/function () {
13456
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
13457
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
13458
+ while (1) switch (_context.prev = _context.next) {
13459
+ case 0:
13460
+ setIsLoading(true);
13461
+ _context.prev = 1;
13462
+ _context.next = 4;
13463
+ return request();
13464
+ case 4:
13465
+ callback();
13466
+ setIsLoading(false);
13467
+ _context.next = 12;
13468
+ break;
13469
+ case 8:
13470
+ _context.prev = 8;
13471
+ _context.t0 = _context["catch"](1);
13472
+ setError(getAxiosErrorMessage(_context.t0));
13473
+ setIsLoading(false);
13474
+ case 12:
13475
+ case "end":
13476
+ return _context.stop();
13477
+ }
13478
+ }, _callee, null, [[1, 8]]);
13479
+ }));
13480
+ return function onSubmit() {
13481
+ return _ref2.apply(this, arguments);
13482
+ };
13483
+ }();
13484
+ return jsx(ConfirmationDialog, Object.assign({
13485
+ title: title,
13486
+ open: true,
13487
+ confirmLabel: confirmLabel,
13488
+ cancelLabel: t('warning-dialog-cancel'),
13489
+ description: !error ? description : '',
13490
+ onClose: onClose,
13491
+ onSubmit: onSubmit,
13492
+ isLoading: isLoading,
13493
+ sx: {
13494
+ width: 330
13495
+ }
13496
+ }, error && {
13497
+ content: jsxs(Box, {
13498
+ sx: {
13499
+ marginBottom: 0
13500
+ },
13501
+ children: [jsx(AlertBanner, {
13502
+ title: error,
13503
+ severity: isLocked ? 'warning' : 'error'
13504
+ }), jsx(Typography, {
13505
+ variant: "body1",
13506
+ sx: {
13507
+ marginTop: 1
13508
+ },
13509
+ children: description
13510
+ })]
13511
+ })
13512
+ }));
13513
+ };
13514
+
13250
13515
  var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
13251
13516
  var panelId = _ref.panelId,
13252
13517
  presetFilterState = _ref.presetFilterState;
@@ -13416,13 +13681,21 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
13416
13681
  var warningType = useSelector(getWarningType);
13417
13682
  var _useProductConfig = useProductConfig(warningType, false),
13418
13683
  aviationConfig = _useProductConfig.data;
13419
- var handleRenewProductClick = function handleRenewProductClick(warning, warningType) {
13684
+ var handleAviationProductClick = function handleAviationProductClick(warning, actionType) {
13420
13685
  if (!warning) {
13421
13686
  return;
13422
13687
  }
13423
- var type = warningType || (warning.warningDetail.level === 'SIG' ? 'sigmet' : 'airmet');
13424
- var renewedWarning = renewWarning(warning, aviationConfig);
13425
- void openPublicWarningDialog('edit', renewedWarning, type);
13688
+ var type = warning.warningDetail.level === 'SIG' ? 'sigmet' : 'airmet';
13689
+ var updatedWarning;
13690
+ switch (actionType) {
13691
+ case 'RENEW':
13692
+ updatedWarning = renewAviationProduct(warning, aviationConfig);
13693
+ break;
13694
+ case 'DUPLICATE':
13695
+ updatedWarning = duplicateAviationProduct(warning);
13696
+ break;
13697
+ }
13698
+ void openPublicWarningDialog('edit', updatedWarning, type);
13426
13699
  };
13427
13700
  var openSnackbar = function openSnackbar(message) {
13428
13701
  dispatch(snackbarActions.openSnackbar({
@@ -13500,7 +13773,7 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
13500
13773
  }, [filteredWarnings, expandedSections]);
13501
13774
  var allFeatures = React__default.useMemo(function () {
13502
13775
  return filteredWarningsByExpandedSections.flatMap(function (warning) {
13503
- return (warning == null ? void 0 : warning.id) && (warning != null && warning.warningDetail && 'areas' in warning.warningDetail ? warning.warningDetail.areas.filter(function (area) {
13776
+ return (warning == null ? void 0 : warning.id) && (warning != null && warning.warningDetail && warning.warningDetail.areas ? warning.warningDetail.areas.filter(function (area) {
13504
13777
  return area.geoJSON;
13505
13778
  }).map(function (area) {
13506
13779
  var isAviationWarning = warning.warningDetail.level === 'SIG' || warning.warningDetail.level === 'AIR';
@@ -13538,7 +13811,7 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
13538
13811
  onRefetchWarnings: refetchWarnings,
13539
13812
  filterHookState: filterHookState,
13540
13813
  hoveredFeatureId: hoveredFeatureId,
13541
- onRenewWarning: handleRenewProductClick
13814
+ onActionAviationWarning: handleAviationProductClick
13542
13815
  }), confirmDialogOptions && jsx(ConfirmDeleteWarningDialog, {
13543
13816
  onClose: function onClose() {
13544
13817
  return setConfirmDialogOptions(undefined);
@@ -13874,25 +14147,6 @@ publicWarningFormListener.startListening({
13874
14147
  }()
13875
14148
  });
13876
14149
 
13877
- /* *
13878
- * Licensed under the Apache License, Version 2.0 (the "License");
13879
- * you may not use this file except in compliance with the License.
13880
- * You may obtain a copy of the License at
13881
- *
13882
- * http://www.apache.org/licenses/LICENSE-2.0
13883
- *
13884
- * Unless required by applicable law or agreed to in writing, software
13885
- * distributed under the License is distributed on an "AS IS" BASIS,
13886
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13887
- * See the License for the specific language governing permissions and
13888
- * limitations under the License.
13889
- *
13890
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
13891
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
13892
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
13893
- * */
13894
- var publicWarningsListener = createListenerMiddleware();
13895
-
13896
14150
  var _excluded = ["id"];
13897
14151
  var getSnackbarMessage = function getSnackbarMessage(objectName, id) {
13898
14152
  return {
@@ -13903,9 +14157,9 @@ var getSnackbarMessage = function getSnackbarMessage(objectName, id) {
13903
14157
  }
13904
14158
  };
13905
14159
  };
13906
- var drawingsListener = createListenerMiddleware();
13907
- drawingsListener.startListening({
13908
- actionCreator: drawActions.submitDrawValues,
14160
+ var warningsDrawingsListener = createListenerMiddleware();
14161
+ warningsDrawingsListener.startListening({
14162
+ actionCreator: warningsDrawingsActions.submitDrawValues,
13909
14163
  effect: function () {
13910
14164
  var _effect = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref, listenerApi) {
13911
14165
  var payload, id, formValues, warningsApi, newID, taskError, errorMessage;
@@ -13929,7 +14183,7 @@ drawingsListener.startListening({
13929
14183
  return warningsApi.saveDrawingAs(formValues);
13930
14184
  case 9:
13931
14185
  newID = _context.sent;
13932
- listenerApi.dispatch(drawActions.setDrawValues({
14186
+ listenerApi.dispatch(warningsDrawingsActions.setDrawValues({
13933
14187
  drawingInstanceId: drawingDialogType,
13934
14188
  id: newID,
13935
14189
  objectName: formValues.objectName
@@ -13997,13 +14251,46 @@ drawingsListener.startListening({
13997
14251
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
13998
14252
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
13999
14253
  * */
14000
- var drawingModuleConfig = {
14001
- reducersMap: {
14002
- drawings: reducer$2,
14003
- publicWarningForm: reducer$1,
14004
- publicWarnings: reducer
14005
- },
14006
- middlewares: [drawingsListener.middleware, publicWarningsListener.middleware, publicWarningFormListener.middleware]
14254
+ var publicWarningsListener = createListenerMiddleware();
14255
+
14256
+ /* *
14257
+ * Licensed under the Apache License, Version 2.0 (the "License");
14258
+ * you may not use this file except in compliance with the License.
14259
+ * You may obtain a copy of the License at
14260
+ *
14261
+ * http://www.apache.org/licenses/LICENSE-2.0
14262
+ *
14263
+ * Unless required by applicable law or agreed to in writing, software
14264
+ * distributed under the License is distributed on an "AS IS" BASIS,
14265
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14266
+ * See the License for the specific language governing permissions and
14267
+ * limitations under the License.
14268
+ *
14269
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
14270
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
14271
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
14272
+ * */
14273
+ var warningsReducersMap = {
14274
+ layers: layerReducer,
14275
+ ui: uiReducer,
14276
+ drawingtools: drawingToolReducer,
14277
+ drawings: warningsDrawingsReducer,
14278
+ publicWarningForm: publicWarningFormReducer,
14279
+ publicWarnings: publicWarningsReducer,
14280
+ snackbar: snackbarReducer
14281
+ };
14282
+ var warningsMiddlewares = [layersListener.middleware, drawingToolListener.middleware, warningsDrawingsListener.middleware, publicWarningsListener.middleware, publicWarningFormListener.middleware, snackbarListener.middleware];
14283
+ var warningsRootReducer = combineReducers(warningsReducersMap);
14284
+ var createMockStore = function createMockStore(mockState) {
14285
+ return configureStore({
14286
+ reducer: warningsRootReducer,
14287
+ preloadedState: mockState,
14288
+ middleware: warningsMiddlewares
14289
+ });
14007
14290
  };
14291
+ /* _____ NOTE --> We should use the middlwares like this down below, but as it will be more strict, it exposes errors from the code itself, which won´t be fixed in this MR ______
14292
+ middleware: (getDefaultMiddleware) =>
14293
+ getDefaultMiddleware().concat(warningsMiddlewares),
14294
+ */
14008
14295
 
14009
- export { DrawingToolConnect, Wrapper as DrawingToolForm, DrawingToolFormConnect, DrawingToolMapButtonConnect, ObjectManagerConnect, ObjectManagerMapButtonConnect, PublicWarningApiWrapper, PublicWarningsFormDialog, PublicWarningsFormDialogConnect, WARN_NAMESPACE, WarningsModuleProvider, componentsLookUp, drawingModuleConfig, initialState, isAlreadyEdited, publicWarningActions, publicWarningFormListener, reducer$1 as publicWarningFormReducer, publicWarningsAdapter, publicWarningsListener, reducer as publicWarningsReducer, selectors as publicWarningsSelectors, reducer, useObjectDrawDialogAction, warningFormConfirmationOptions, drawingsListener as warningsDrawingsListener, reducer$2 as warningsDrawingsReducer, warningsTranslations };
14296
+ export { DrawingToolConnect, Wrapper as DrawingToolForm, DrawingToolFormConnect, DrawingToolMapButtonConnect, ObjectManagerConnect, ObjectManagerMapButtonConnect, PublicWarningApiWrapper, PublicWarningsFormDialog, PublicWarningsFormDialogConnect, WARN_NAMESPACE, WarningsModuleProvider, componentsLookUp, createMockStore, isAlreadyEdited, publicWarningActions, publicWarningFormActions, publicWarningFormListener, publicWarningFormReducer, publicWarningsListener, publicWarningsReducer, selectors as publicWarningsSelectors, useObjectDrawDialogAction, warningFormConfirmationOptions, warningsDrawingsActions, warningsDrawingsListener, warningsDrawingsReducer, warningsMiddlewares, warningsReducersMap, warningsTranslations };