@opengeoweb/store 11.1.0 → 12.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.
package/index.esm.js CHANGED
@@ -1,321 +1,33 @@
1
1
  import { createSlice, createSelector, createAction, createListenerMiddleware, isAnyOf, createEntityAdapter, combineReducers, configureStore, compose, EnhancerArray } from '@reduxjs/toolkit';
2
2
  import { isEqual, isEmpty, compact } from 'lodash';
3
3
  import { dateUtils, PROJECTION, defaultDelay } from '@opengeoweb/shared';
4
- import { webmapUtils, parseISO8601IntervalToDateInterval, LayerType, getWMJSMapById, webmapTestSettings, WMLayer, getWMSRequests, handleDateUtilsISOString, isProjectionSupported, queryWMSLayers } from '@opengeoweb/webmap';
4
+ import { webmapUtils, parseISO8601IntervalToDateInterval, LayerType, getWMJSMapById, webmapTestSettings, WMLayer, getWMSRequests, handleDateUtilsISOString, isProjectionSupported, queryWMSLayers, getWMLayerById, WMInvalidDateValues } from '@opengeoweb/webmap';
5
5
  import { defaultTimeStep, defaultTimeSpan, defaultAnimationDelayAtStart, defaultSecondsPerPx, roundWithTimeStep, getSpeedDelay } from '@opengeoweb/timeslider';
6
6
  import { produce } from 'immer';
7
- import { getGeoJson, moveFeature, createInterSections, getLastEmptyFeatureIndex, defaultLayers, addSelectionTypeToGeoJSON, getFeatureCollection, emptyGeoJSON, defaultIntersectionStyleProperties } from '@opengeoweb/webmap-react';
7
+ import { getGeoJson, moveFeature, createInterSections, getLastEmptyFeatureIndex, defaultLayers, addSelectionTypeToGeoJSON, getFeatureCollection, emptyGeoJSON, defaultIntersectionStyleProperties, isOpenLayersEnabled } from '@opengeoweb/webmap-react';
8
8
  export { defaultLayers } from '@opengeoweb/webmap-react';
9
9
  import { useSelector, useDispatch } from 'react-redux';
10
10
  import { useCallback, useEffect } from 'react';
11
11
  import * as turf from '@turf/turf';
12
12
  import { metronome } from '@opengeoweb/metronome';
13
-
14
- /* *
15
- * Licensed under the Apache License, Version 2.0 (the "License");
16
- * you may not use this file except in compliance with the License.
17
- * You may obtain a copy of the License at
18
- *
19
- * http://www.apache.org/licenses/LICENSE-2.0
20
- *
21
- * Unless required by applicable law or agreed to in writing, software
22
- * distributed under the License is distributed on an "AS IS" BASIS,
23
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24
- * See the License for the specific language governing permissions and
25
- * limitations under the License.
26
- *
27
- * Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
28
- * Copyright 2020 - Finnish Meteorological Institute (FMI)
29
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
30
- * */
31
- var initialState$6 = {
32
- byId: {},
33
- allIds: []
34
- };
35
- var slice$7 = createSlice({
36
- initialState: initialState$6,
37
- name: 'serviceReducer',
38
- reducers: {
39
- serviceSetLayers: function serviceSetLayers(draft, action) {
40
- var id = action.payload.id;
41
- draft.byId[id] = Object.assign({}, action.payload);
42
- if (!draft.allIds.includes(id)) {
43
- draft.allIds.push(id);
44
- }
45
- },
46
- mapStoreRemoveService: function mapStoreRemoveService(draft, action) {
47
- var foundServiceIndex = draft.allIds.findIndex(function (id) {
48
- return draft.byId[id].serviceUrl === action.payload.serviceUrl;
49
- });
50
- if (foundServiceIndex !== -1) {
51
- var serviceId = draft.allIds[foundServiceIndex];
52
- draft.allIds = draft.allIds.filter(function (id) {
53
- return id !== serviceId;
54
- });
55
- delete draft.byId[serviceId];
56
- }
57
- },
58
- fetchInitialServices: function fetchInitialServices(
59
- // eslint-disable-next-line no-unused-vars
60
- draft,
61
- // eslint-disable-next-line no-unused-vars
62
- action) {
63
- // This block is intentionally left empty so no code should be put in here
64
- }
65
- }
66
- });
67
- var serviceReducer = slice$7.reducer,
68
- serviceActions = slice$7.actions;
69
-
70
- /* *
71
- * Licensed under the Apache License, Version 2.0 (the "License");
72
- * you may not use this file except in compliance with the License.
73
- * You may obtain a copy of the License at
74
- *
75
- * http://www.apache.org/licenses/LICENSE-2.0
76
- *
77
- * Unless required by applicable law or agreed to in writing, software
78
- * distributed under the License is distributed on an "AS IS" BASIS,
79
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
80
- * See the License for the specific language governing permissions and
81
- * limitations under the License.
82
- *
83
- * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
84
- * Copyright 2022 - Finnish Meteorological Institute (FMI)
85
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
86
- * */
87
- var selectorMemoizationOptions = {
88
- memoizeOptions: {
89
- maxSize: 1000,
90
- resultEqualityCheck: isEqual
91
- }
92
- };
93
-
94
- var utils$3 = /*#__PURE__*/Object.freeze({
95
- __proto__: null,
96
- selectorMemoizationOptions: selectorMemoizationOptions
97
- });
98
-
99
- /* *
100
- * Licensed under the Apache License, Version 2.0 (the "License");
101
- * you may not use this file except in compliance with the License.
102
- * You may obtain a copy of the License at
103
- *
104
- * http://www.apache.org/licenses/LICENSE-2.0
105
- *
106
- * Unless required by applicable law or agreed to in writing, software
107
- * distributed under the License is distributed on an "AS IS" BASIS,
108
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
109
- * See the License for the specific language governing permissions and
110
- * limitations under the License.
111
- *
112
- * Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
113
- * Copyright 2020 - Finnish Meteorological Institute (FMI)
114
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
115
- * */
116
- var getServicesStore = function getServicesStore(store) {
117
- return store == null ? void 0 : store.services;
118
- };
119
- /**
120
- * Retrieves all serviceIds
121
- *
122
- * Example: serviceIds = getServiceIds(store)
123
- * @param {object} store store: object - object from which the service state will be extracted
124
- * @returns {array} returnType: array - an array of all serviceIds
125
- */
126
- var getServiceIds = createSelector(getServicesStore, function (serviceState) {
127
- var _serviceState$allIds;
128
- return (_serviceState$allIds = serviceState == null ? void 0 : serviceState.allIds) != null ? _serviceState$allIds : [];
129
- }, selectorMemoizationOptions);
130
- /**
131
- * Gets map services
132
- *
133
- * Example: services = getServices(store)
134
- * @param {object} store store: object - Store object
135
- * @returns {object} returnType: ServiceState
136
- */
137
- var getServices = createSelector(getServicesStore, function (store) {
138
- var _store$byId;
139
- return (_store$byId = store == null ? void 0 : store.byId) != null ? _store$byId : {};
140
- }, selectorMemoizationOptions);
141
- /**
142
- * Gets the service object by its url
143
- *
144
- * Example: service = getServiceByName(store, 'serviceName')
145
- * @param {object} store store: object - Store object
146
- * @returns {ReduxService} returnType: Service
147
- */
148
- var getServiceByUrl = createSelector(getServicesStore, function (state, serviceUrl) {
149
- return serviceUrl;
150
- }, function (serviceState, serviceUrl) {
151
- if (!serviceState) {
152
- return undefined;
153
- }
154
- return Object.values(serviceState.byId).find(function (service) {
155
- return service.serviceUrl === serviceUrl;
156
- });
157
- }, selectorMemoizationOptions);
158
- /**
159
- * Gets the layer from the store using the serviceUrl and layerName
160
- *
161
- * Example: layers = getLayersFromService(store, 'https://geoservices.knmi.nl/...')
162
- * @param {object} store store: object - object from which the layers state will be extracted
163
- * @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
164
- * @returns {array} returnType: ServiceLayer[] - All layers within the service object.
165
- */
166
- var getLayersFromServiceSelector = createSelector(getServiceByUrl, function (service) {
167
- var _service$layers;
168
- return (_service$layers = service == null ? void 0 : service.layers) != null ? _service$layers : [];
169
- }, selectorMemoizationOptions);
170
- /**
171
- * Gets the layer from the store using the serviceUrl and layerName
172
- *
173
- * Example: layer = getLayerFromService(store, 'https://geoservices.knmi.nl/...', 'radar')
174
- * @param {object} store store: object - The application store
175
- * @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
176
- * @param {string} layerName layerName: string - Name of the layer in the service
177
- * @returns {ServiceLayer} returnType: ServiceLayer - The layer from the service object.
178
- */
179
- var getLayerFromService = createSelector(getLayersFromServiceSelector, function (_store, _serviceUrl, layerName) {
180
- return layerName;
181
- }, function (layers, layerName) {
182
- return layers.find(function (serviceLayer) {
183
- return serviceLayer.name === layerName;
184
- });
185
- }, selectorMemoizationOptions);
186
- /**
187
- * Gets the layers stylelist from the servicestore using the serviceUrl and layerName
188
- *
189
- * Example: layerStyles = getLayerStyles(store, layerService, layerName);
190
- * @param {object} store store: object - store from which the layers state will be extracted
191
- * @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
192
- * @param {string} layerName layerName: string - Name of the layer in the service
193
- * @returns {array} returnType: Style[] - array containing layer styles
194
- */
195
- var getLayerStyles = createSelector(getLayerFromService, function (layer) {
196
- var _layer$styles;
197
- return (_layer$styles = layer == null ? void 0 : layer.styles) != null ? _layer$styles : [];
198
- }, selectorMemoizationOptions);
199
-
200
- var selectors$7 = /*#__PURE__*/Object.freeze({
201
- __proto__: null,
202
- getLayerFromService: getLayerFromService,
203
- getLayerStyles: getLayerStyles,
204
- getLayersFromServiceSelector: getLayersFromServiceSelector,
205
- getServiceByUrl: getServiceByUrl,
206
- getServiceIds: getServiceIds,
207
- getServices: getServices
208
- });
209
-
210
- /* *
211
- * Licensed under the Apache License, Version 2.0 (the "License");
212
- * you may not use this file except in compliance with the License.
213
- * You may obtain a copy of the License at
214
- *
215
- * http://www.apache.org/licenses/LICENSE-2.0
216
- *
217
- * Unless required by applicable law or agreed to in writing, software
218
- * distributed under the License is distributed on an "AS IS" BASIS,
219
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
220
- * See the License for the specific language governing permissions and
221
- * limitations under the License.
222
- *
223
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
224
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
225
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
226
- * */
227
-
228
- var types$5 = /*#__PURE__*/Object.freeze({
229
- __proto__: null
230
- });
231
-
232
- /* *
233
- * Licensed under the Apache License, Version 2.0 (the "License");
234
- * you may not use this file except in compliance with the License.
235
- * You may obtain a copy of the License at
236
- *
237
- * http://www.apache.org/licenses/LICENSE-2.0
238
- *
239
- * Unless required by applicable law or agreed to in writing, software
240
- * distributed under the License is distributed on an "AS IS" BASIS,
241
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
242
- * See the License for the specific language governing permissions and
243
- * limitations under the License.
244
- *
245
- * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
246
- * Copyright 2022 - Finnish Meteorological Institute (FMI)
247
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
248
- * */
249
- var getUserAddedServices = function getUserAddedServices() {
250
- try {
251
- var storedString = window.localStorage.getItem('userAddedServices');
252
- var parsedData = JSON.parse(storedString);
253
- if (parsedData && typeof parsedData === 'object') {
254
- return Object.entries(parsedData).reduce(function (userServices, _ref) {
255
- var _ref2;
256
- var serviceUrl = _ref[0],
257
- service = _ref[1];
258
- return Object.assign({}, userServices, isNoIdService(service) ? (_ref2 = {}, _ref2[serviceUrl] = Object.assign({}, service, {
259
- scope: 'user'
260
- }), _ref2) : {});
261
- }, {});
262
- }
263
- } catch (e) {
264
- console.error('Unable to read services from localStorage: ', e);
265
- }
266
- return {};
267
- };
268
- var setUserAddedServices = function setUserAddedServices(services) {
269
- try {
270
- window.localStorage.setItem('userAddedServices', JSON.stringify(services));
271
- } catch (e) {
272
- console.error('Unable to write services to localStorage: ', e);
273
- }
274
- };
275
- var isNoIdService = function isNoIdService(param) {
276
- var serviceParam = param;
277
- return !!(serviceParam != null && serviceParam.name && serviceParam != null && serviceParam.url);
278
- };
279
-
280
- /* *
281
- * Licensed under the Apache License, Version 2.0 (the "License");
282
- * you may not use this file except in compliance with the License.
283
- * You may obtain a copy of the License at
284
- *
285
- * http://www.apache.org/licenses/LICENSE-2.0
286
- *
287
- * Unless required by applicable law or agreed to in writing, software
288
- * distributed under the License is distributed on an "AS IS" BASIS,
289
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
290
- * See the License for the specific language governing permissions and
291
- * limitations under the License.
292
- *
293
- * Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
294
- * Copyright 2020 - Finnish Meteorological Institute (FMI)
295
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
296
- * */
297
- var AnimationLength;
298
- (function (AnimationLength) {
299
- AnimationLength[AnimationLength["Minutes15"] = 15] = "Minutes15";
300
- AnimationLength[AnimationLength["Minutes30"] = 30] = "Minutes30";
301
- AnimationLength[AnimationLength["Hours1"] = 60] = "Hours1";
302
- AnimationLength[AnimationLength["Hours2"] = 120] = "Hours2";
303
- AnimationLength[AnimationLength["Hours3"] = 180] = "Hours3";
304
- AnimationLength[AnimationLength["Hours6"] = 360] = "Hours6";
305
- AnimationLength[AnimationLength["Hours12"] = 720] = "Hours12";
306
- AnimationLength[AnimationLength["Hours24"] = 1440] = "Hours24";
307
- })(AnimationLength || (AnimationLength = {}));
308
-
309
- var types$4 = /*#__PURE__*/Object.freeze({
310
- __proto__: null,
311
- get AnimationLength () { return AnimationLength; }
312
- });
13
+ import { View, Observable } from 'ol';
14
+ import { boundingExtent, getCenter } from 'ol/extent';
313
15
 
314
16
  function _arrayLikeToArray(r, a) {
315
17
  (null == a || a > r.length) && (a = r.length);
316
18
  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
317
19
  return n;
318
20
  }
21
+ function _arrayWithHoles(r) {
22
+ if (Array.isArray(r)) return r;
23
+ }
24
+ function _arrayWithoutHoles(r) {
25
+ if (Array.isArray(r)) return _arrayLikeToArray(r);
26
+ }
27
+ function _assertThisInitialized(e) {
28
+ if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
29
+ return e;
30
+ }
319
31
  function asyncGeneratorStep(n, t, e, r, o, a, c) {
320
32
  try {
321
33
  var i = n[a](c),
@@ -337,26 +49,175 @@ function _asyncToGenerator(n) {
337
49
  function _throw(n) {
338
50
  asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
339
51
  }
340
- _next(void 0);
341
- });
342
- };
52
+ _next(void 0);
53
+ });
54
+ };
55
+ }
56
+ function _callSuper(t, o, e) {
57
+ return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, [], _getPrototypeOf(t).constructor) : o.apply(t, e));
58
+ }
59
+ function _classCallCheck(a, n) {
60
+ if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
61
+ }
62
+ function _defineProperties(e, r) {
63
+ for (var t = 0; t < r.length; t++) {
64
+ var o = r[t];
65
+ o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);
66
+ }
67
+ }
68
+ function _createClass(e, r, t) {
69
+ return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", {
70
+ writable: !1
71
+ }), e;
72
+ }
73
+ function _createForOfIteratorHelper(r, e) {
74
+ var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
75
+ if (!t) {
76
+ if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e ) {
77
+ t && (r = t);
78
+ var n = 0,
79
+ F = function () {};
80
+ return {
81
+ s: F,
82
+ n: function () {
83
+ return n >= r.length ? {
84
+ done: !0
85
+ } : {
86
+ done: !1,
87
+ value: r[n++]
88
+ };
89
+ },
90
+ e: function (r) {
91
+ throw r;
92
+ },
93
+ f: F
94
+ };
95
+ }
96
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
97
+ }
98
+ var o,
99
+ a = !0,
100
+ u = !1;
101
+ return {
102
+ s: function () {
103
+ t = t.call(r);
104
+ },
105
+ n: function () {
106
+ var r = t.next();
107
+ return a = r.done, r;
108
+ },
109
+ e: function (r) {
110
+ u = !0, o = r;
111
+ },
112
+ f: function () {
113
+ try {
114
+ a || null == t.return || t.return();
115
+ } finally {
116
+ if (u) throw o;
117
+ }
118
+ }
119
+ };
120
+ }
121
+ function _defineProperty(e, r, t) {
122
+ return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
123
+ value: t,
124
+ enumerable: !0,
125
+ configurable: !0,
126
+ writable: !0
127
+ }) : e[r] = t, e;
128
+ }
129
+ function _getPrototypeOf(t) {
130
+ return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
131
+ return t.__proto__ || Object.getPrototypeOf(t);
132
+ }, _getPrototypeOf(t);
133
+ }
134
+ function _inherits(t, e) {
135
+ if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
136
+ t.prototype = Object.create(e && e.prototype, {
137
+ constructor: {
138
+ value: t,
139
+ writable: !0,
140
+ configurable: !0
141
+ }
142
+ }), Object.defineProperty(t, "prototype", {
143
+ writable: !1
144
+ }), e && _setPrototypeOf(t, e);
145
+ }
146
+ function _isNativeReflectConstruct() {
147
+ try {
148
+ var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
149
+ } catch (t) {}
150
+ return (_isNativeReflectConstruct = function () {
151
+ return !!t;
152
+ })();
153
+ }
154
+ function _iterableToArray(r) {
155
+ if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
156
+ }
157
+ function _iterableToArrayLimit(r, l) {
158
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
159
+ if (null != t) {
160
+ var e,
161
+ n,
162
+ i,
163
+ u,
164
+ a = [],
165
+ f = !0,
166
+ o = !1;
167
+ try {
168
+ if (i = (t = t.call(r)).next, 0 === l) {
169
+ if (Object(t) !== t) return;
170
+ f = !1;
171
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
172
+ } catch (r) {
173
+ o = !0, n = r;
174
+ } finally {
175
+ try {
176
+ if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
177
+ } finally {
178
+ if (o) throw n;
179
+ }
180
+ }
181
+ return a;
182
+ }
343
183
  }
344
- function _createForOfIteratorHelperLoose(r, e) {
345
- var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
346
- if (t) return (t = t.call(r)).next.bind(t);
347
- if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e ) {
348
- t && (r = t);
349
- var o = 0;
350
- return function () {
351
- return o >= r.length ? {
352
- done: !0
353
- } : {
354
- done: !1,
355
- value: r[o++]
356
- };
357
- };
184
+ function _nonIterableRest() {
185
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
186
+ }
187
+ function _nonIterableSpread() {
188
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
189
+ }
190
+ function ownKeys(e, r) {
191
+ var t = Object.keys(e);
192
+ if (Object.getOwnPropertySymbols) {
193
+ var o = Object.getOwnPropertySymbols(e);
194
+ r && (o = o.filter(function (r) {
195
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
196
+ })), t.push.apply(t, o);
197
+ }
198
+ return t;
199
+ }
200
+ function _objectSpread2(e) {
201
+ for (var r = 1; r < arguments.length; r++) {
202
+ var t = null != arguments[r] ? arguments[r] : {};
203
+ r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
204
+ _defineProperty(e, r, t[r]);
205
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
206
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
207
+ });
358
208
  }
359
- throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
209
+ return e;
210
+ }
211
+ function _objectWithoutProperties(e, t) {
212
+ if (null == e) return {};
213
+ var o,
214
+ r,
215
+ i = _objectWithoutPropertiesLoose(e, t);
216
+ if (Object.getOwnPropertySymbols) {
217
+ var n = Object.getOwnPropertySymbols(e);
218
+ for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
219
+ }
220
+ return i;
360
221
  }
361
222
  function _objectWithoutPropertiesLoose(r, e) {
362
223
  if (null == r) return {};
@@ -367,6 +228,11 @@ function _objectWithoutPropertiesLoose(r, e) {
367
228
  }
368
229
  return t;
369
230
  }
231
+ function _possibleConstructorReturn(t, e) {
232
+ if (e && ("object" == typeof e || "function" == typeof e)) return e;
233
+ if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
234
+ return _assertThisInitialized(t);
235
+ }
370
236
  function _regeneratorRuntime() {
371
237
  _regeneratorRuntime = function () {
372
238
  return e;
@@ -666,15 +532,332 @@ function _regeneratorRuntime() {
666
532
  nextLoc: n
667
533
  }, "next" === this.method && (this.arg = t), y;
668
534
  }
669
- }, e;
670
- }
671
- function _unsupportedIterableToArray(r, a) {
672
- if (r) {
673
- if ("string" == typeof r) return _arrayLikeToArray(r, a);
674
- var t = {}.toString.call(r).slice(8, -1);
675
- 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;
535
+ }, e;
536
+ }
537
+ function _setPrototypeOf(t, e) {
538
+ return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
539
+ return t.__proto__ = e, t;
540
+ }, _setPrototypeOf(t, e);
541
+ }
542
+ function _slicedToArray(r, e) {
543
+ return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
544
+ }
545
+ function _toConsumableArray(r) {
546
+ return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
547
+ }
548
+ function _toPrimitive(t, r) {
549
+ if ("object" != typeof t || !t) return t;
550
+ var e = t[Symbol.toPrimitive];
551
+ if (void 0 !== e) {
552
+ var i = e.call(t, r || "default");
553
+ if ("object" != typeof i) return i;
554
+ throw new TypeError("@@toPrimitive must return a primitive value.");
555
+ }
556
+ return ("string" === r ? String : Number)(t);
557
+ }
558
+ function _toPropertyKey(t) {
559
+ var i = _toPrimitive(t, "string");
560
+ return "symbol" == typeof i ? i : i + "";
561
+ }
562
+ function _typeof(o) {
563
+ "@babel/helpers - typeof";
564
+
565
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
566
+ return typeof o;
567
+ } : function (o) {
568
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
569
+ }, _typeof(o);
570
+ }
571
+ function _unsupportedIterableToArray(r, a) {
572
+ if (r) {
573
+ if ("string" == typeof r) return _arrayLikeToArray(r, a);
574
+ var t = {}.toString.call(r).slice(8, -1);
575
+ 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;
576
+ }
577
+ }
578
+
579
+ var initialState$6 = {
580
+ byId: {},
581
+ allIds: []
582
+ };
583
+ var slice$7 = createSlice({
584
+ initialState: initialState$6,
585
+ name: 'serviceReducer',
586
+ reducers: {
587
+ serviceSetLayers: function serviceSetLayers(draft, action) {
588
+ var id = action.payload.id;
589
+ draft.byId[id] = _objectSpread2({}, action.payload);
590
+ if (!draft.allIds.includes(id)) {
591
+ draft.allIds.push(id);
592
+ }
593
+ },
594
+ mapStoreRemoveService: function mapStoreRemoveService(draft, action) {
595
+ var foundServiceIndex = draft.allIds.findIndex(function (id) {
596
+ return draft.byId[id].serviceUrl === action.payload.serviceUrl;
597
+ });
598
+ if (foundServiceIndex !== -1) {
599
+ var serviceId = draft.allIds[foundServiceIndex];
600
+ draft.allIds = draft.allIds.filter(function (id) {
601
+ return id !== serviceId;
602
+ });
603
+ delete draft.byId[serviceId];
604
+ }
605
+ },
606
+ fetchInitialServices: function fetchInitialServices(
607
+ // eslint-disable-next-line no-unused-vars
608
+ draft,
609
+ // eslint-disable-next-line no-unused-vars
610
+ action) {
611
+ // This block is intentionally left empty so no code should be put in here
612
+ }
613
+ }
614
+ });
615
+ var serviceReducer = slice$7.reducer,
616
+ serviceActions = slice$7.actions;
617
+
618
+ /* *
619
+ * Licensed under the Apache License, Version 2.0 (the "License");
620
+ * you may not use this file except in compliance with the License.
621
+ * You may obtain a copy of the License at
622
+ *
623
+ * http://www.apache.org/licenses/LICENSE-2.0
624
+ *
625
+ * Unless required by applicable law or agreed to in writing, software
626
+ * distributed under the License is distributed on an "AS IS" BASIS,
627
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
628
+ * See the License for the specific language governing permissions and
629
+ * limitations under the License.
630
+ *
631
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
632
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
633
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
634
+ * */
635
+ var selectorMemoizationOptions = {
636
+ memoizeOptions: {
637
+ maxSize: 1000,
638
+ resultEqualityCheck: isEqual
639
+ }
640
+ };
641
+
642
+ var utils$3 = /*#__PURE__*/Object.freeze({
643
+ __proto__: null,
644
+ selectorMemoizationOptions: selectorMemoizationOptions
645
+ });
646
+
647
+ /* *
648
+ * Licensed under the Apache License, Version 2.0 (the "License");
649
+ * you may not use this file except in compliance with the License.
650
+ * You may obtain a copy of the License at
651
+ *
652
+ * http://www.apache.org/licenses/LICENSE-2.0
653
+ *
654
+ * Unless required by applicable law or agreed to in writing, software
655
+ * distributed under the License is distributed on an "AS IS" BASIS,
656
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
657
+ * See the License for the specific language governing permissions and
658
+ * limitations under the License.
659
+ *
660
+ * Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
661
+ * Copyright 2020 - Finnish Meteorological Institute (FMI)
662
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
663
+ * */
664
+ var getServicesStore = function getServicesStore(store) {
665
+ return store === null || store === void 0 ? void 0 : store.services;
666
+ };
667
+ /**
668
+ * Retrieves all serviceIds
669
+ *
670
+ * Example: serviceIds = getServiceIds(store)
671
+ * @param {object} store store: object - object from which the service state will be extracted
672
+ * @returns {array} returnType: array - an array of all serviceIds
673
+ */
674
+ var getServiceIds = createSelector(getServicesStore, function (serviceState) {
675
+ var _serviceState$allIds;
676
+ return (_serviceState$allIds = serviceState === null || serviceState === void 0 ? void 0 : serviceState.allIds) !== null && _serviceState$allIds !== void 0 ? _serviceState$allIds : [];
677
+ }, selectorMemoizationOptions);
678
+ /**
679
+ * Gets map services
680
+ *
681
+ * Example: services = getServices(store)
682
+ * @param {object} store store: object - Store object
683
+ * @returns {object} returnType: ServiceState
684
+ */
685
+ var getServices = createSelector(getServicesStore, function (store) {
686
+ var _store$byId;
687
+ return (_store$byId = store === null || store === void 0 ? void 0 : store.byId) !== null && _store$byId !== void 0 ? _store$byId : {};
688
+ }, selectorMemoizationOptions);
689
+ /**
690
+ * Gets the service object by its url
691
+ *
692
+ * Example: service = getServiceByName(store, 'serviceName')
693
+ * @param {object} store store: object - Store object
694
+ * @returns {ReduxService} returnType: Service
695
+ */
696
+ var getServiceByUrl = createSelector(getServicesStore, function (state, serviceUrl) {
697
+ return serviceUrl;
698
+ }, function (serviceState, serviceUrl) {
699
+ if (!serviceState) {
700
+ return undefined;
701
+ }
702
+ return Object.values(serviceState.byId).find(function (service) {
703
+ return service.serviceUrl === serviceUrl;
704
+ });
705
+ }, selectorMemoizationOptions);
706
+ /**
707
+ * Gets the layer from the store using the serviceUrl and layerName
708
+ *
709
+ * Example: layers = getLayersFromService(store, 'https://geoservices.knmi.nl/...')
710
+ * @param {object} store store: object - object from which the layers state will be extracted
711
+ * @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
712
+ * @returns {array} returnType: ServiceLayer[] - All layers within the service object.
713
+ */
714
+ var getLayersFromServiceSelector = createSelector(getServiceByUrl, function (service) {
715
+ var _service$layers;
716
+ return (_service$layers = service === null || service === void 0 ? void 0 : service.layers) !== null && _service$layers !== void 0 ? _service$layers : [];
717
+ }, selectorMemoizationOptions);
718
+ /**
719
+ * Gets the layer from the store using the serviceUrl and layerName
720
+ *
721
+ * Example: layer = getLayerFromService(store, 'https://geoservices.knmi.nl/...', 'radar')
722
+ * @param {object} store store: object - The application store
723
+ * @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
724
+ * @param {string} layerName layerName: string - Name of the layer in the service
725
+ * @returns {ServiceLayer} returnType: ServiceLayer - The layer from the service object.
726
+ */
727
+ var getLayerFromService = createSelector(getLayersFromServiceSelector, function (_store, _serviceUrl, layerName) {
728
+ return layerName;
729
+ }, function (layers, layerName) {
730
+ return layers.find(function (serviceLayer) {
731
+ return serviceLayer.name === layerName;
732
+ });
733
+ }, selectorMemoizationOptions);
734
+ /**
735
+ * Gets the layers stylelist from the servicestore using the serviceUrl and layerName
736
+ *
737
+ * Example: layerStyles = getLayerStyles(store, layerService, layerName);
738
+ * @param {object} store store: object - store from which the layers state will be extracted
739
+ * @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
740
+ * @param {string} layerName layerName: string - Name of the layer in the service
741
+ * @returns {array} returnType: Style[] - array containing layer styles
742
+ */
743
+ var getLayerStyles = createSelector(getLayerFromService, function (layer) {
744
+ var _layer$styles;
745
+ return (_layer$styles = layer === null || layer === void 0 ? void 0 : layer.styles) !== null && _layer$styles !== void 0 ? _layer$styles : [];
746
+ }, selectorMemoizationOptions);
747
+
748
+ var selectors$7 = /*#__PURE__*/Object.freeze({
749
+ __proto__: null,
750
+ getLayerFromService: getLayerFromService,
751
+ getLayerStyles: getLayerStyles,
752
+ getLayersFromServiceSelector: getLayersFromServiceSelector,
753
+ getServiceByUrl: getServiceByUrl,
754
+ getServiceIds: getServiceIds,
755
+ getServices: getServices
756
+ });
757
+
758
+ /* *
759
+ * Licensed under the Apache License, Version 2.0 (the "License");
760
+ * you may not use this file except in compliance with the License.
761
+ * You may obtain a copy of the License at
762
+ *
763
+ * http://www.apache.org/licenses/LICENSE-2.0
764
+ *
765
+ * Unless required by applicable law or agreed to in writing, software
766
+ * distributed under the License is distributed on an "AS IS" BASIS,
767
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
768
+ * See the License for the specific language governing permissions and
769
+ * limitations under the License.
770
+ *
771
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
772
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
773
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
774
+ * */
775
+
776
+ var types$5 = /*#__PURE__*/Object.freeze({
777
+ __proto__: null
778
+ });
779
+
780
+ /* *
781
+ * Licensed under the Apache License, Version 2.0 (the "License");
782
+ * you may not use this file except in compliance with the License.
783
+ * You may obtain a copy of the License at
784
+ *
785
+ * http://www.apache.org/licenses/LICENSE-2.0
786
+ *
787
+ * Unless required by applicable law or agreed to in writing, software
788
+ * distributed under the License is distributed on an "AS IS" BASIS,
789
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
790
+ * See the License for the specific language governing permissions and
791
+ * limitations under the License.
792
+ *
793
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
794
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
795
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
796
+ * */
797
+ var getUserAddedServices = function getUserAddedServices() {
798
+ try {
799
+ var storedString = window.localStorage.getItem('userAddedServices');
800
+ var parsedData = JSON.parse(storedString);
801
+ if (parsedData && _typeof(parsedData) === 'object') {
802
+ return Object.entries(parsedData).reduce(function (userServices, _ref) {
803
+ var _ref2 = _slicedToArray(_ref, 2),
804
+ serviceUrl = _ref2[0],
805
+ service = _ref2[1];
806
+ return _objectSpread2(_objectSpread2({}, userServices), isNoIdService(service) ? _defineProperty({}, serviceUrl, _objectSpread2(_objectSpread2({}, service), {}, {
807
+ scope: 'user'
808
+ })) : {});
809
+ }, {});
810
+ }
811
+ } catch (e) {
812
+ console.error('Unable to read services from localStorage: ', e);
676
813
  }
677
- }
814
+ return {};
815
+ };
816
+ var setUserAddedServices = function setUserAddedServices(services) {
817
+ try {
818
+ window.localStorage.setItem('userAddedServices', JSON.stringify(services));
819
+ } catch (e) {
820
+ console.error('Unable to write services to localStorage: ', e);
821
+ }
822
+ };
823
+ var isNoIdService = function isNoIdService(param) {
824
+ var serviceParam = param;
825
+ return !!(serviceParam !== null && serviceParam !== void 0 && serviceParam.name && serviceParam !== null && serviceParam !== void 0 && serviceParam.url);
826
+ };
827
+
828
+ /* *
829
+ * Licensed under the Apache License, Version 2.0 (the "License");
830
+ * you may not use this file except in compliance with the License.
831
+ * You may obtain a copy of the License at
832
+ *
833
+ * http://www.apache.org/licenses/LICENSE-2.0
834
+ *
835
+ * Unless required by applicable law or agreed to in writing, software
836
+ * distributed under the License is distributed on an "AS IS" BASIS,
837
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
838
+ * See the License for the specific language governing permissions and
839
+ * limitations under the License.
840
+ *
841
+ * Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
842
+ * Copyright 2020 - Finnish Meteorological Institute (FMI)
843
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
844
+ * */
845
+ var AnimationLength;
846
+ (function (AnimationLength) {
847
+ AnimationLength[AnimationLength["Minutes15"] = 15] = "Minutes15";
848
+ AnimationLength[AnimationLength["Minutes30"] = 30] = "Minutes30";
849
+ AnimationLength[AnimationLength["Hours1"] = 60] = "Hours1";
850
+ AnimationLength[AnimationLength["Hours2"] = 120] = "Hours2";
851
+ AnimationLength[AnimationLength["Hours3"] = 180] = "Hours3";
852
+ AnimationLength[AnimationLength["Hours6"] = 360] = "Hours6";
853
+ AnimationLength[AnimationLength["Hours12"] = 720] = "Hours12";
854
+ AnimationLength[AnimationLength["Hours24"] = 1440] = "Hours24";
855
+ })(AnimationLength || (AnimationLength = {}));
856
+
857
+ var types$4 = /*#__PURE__*/Object.freeze({
858
+ __proto__: null,
859
+ get AnimationLength () { return AnimationLength; }
860
+ });
678
861
 
679
862
  var dateFormat = dateUtils.DATE_FORMAT_UTC;
680
863
  var createMap = function createMap(_ref) {
@@ -729,7 +912,7 @@ var createMap = function createMap(_ref) {
729
912
  _ref$isTimestepAuto = _ref.isTimestepAuto,
730
913
  isTimestepAuto = _ref$isTimestepAuto === void 0 ? true : _ref$isTimestepAuto,
731
914
  _ref$isTimeSpanAuto = _ref.isTimeSpanAuto,
732
- isTimeSpanAuto = _ref$isTimeSpanAuto === void 0 ? false : _ref$isTimeSpanAuto,
915
+ isTimeSpanAuto = _ref$isTimeSpanAuto === void 0 ? true : _ref$isTimeSpanAuto,
733
916
  _ref$isTimeSliderHove = _ref.isTimeSliderHoverOn,
734
917
  isTimeSliderHoverOn = _ref$isTimeSliderHove === void 0 ? false : _ref$isTimeSliderHove,
735
918
  _ref$isTimeSliderVisi = _ref.isTimeSliderVisible,
@@ -774,20 +957,28 @@ var createMap = function createMap(_ref) {
774
957
  var checkValidLayersPayload = function checkValidLayersPayload(layers, mapId) {
775
958
  /* Check for duplicate ids */
776
959
  var layerIds = {};
777
- for (var _iterator = _createForOfIteratorHelperLoose(layers), _step; !(_step = _iterator()).done;) {
778
- var layer = _step.value;
779
- if (layer.id) {
780
- /* Check if layer is already added to a different map */
781
- if (layer.mapId && mapId && layer.mapId !== mapId) {
782
- return false;
783
- }
784
- /* Check duplicate */
785
- if (!layerIds[layer.id]) {
786
- layerIds[layer.id] = true;
787
- } else {
788
- return false;
960
+ var _iterator = _createForOfIteratorHelper(layers),
961
+ _step;
962
+ try {
963
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
964
+ var layer = _step.value;
965
+ if (layer.id) {
966
+ /* Check if layer is already added to a different map */
967
+ if (layer.mapId && mapId && layer.mapId !== mapId) {
968
+ return false;
969
+ }
970
+ /* Check duplicate */
971
+ if (!layerIds[layer.id]) {
972
+ layerIds[layer.id] = true;
973
+ } else {
974
+ return false;
975
+ }
789
976
  }
790
977
  }
978
+ } catch (err) {
979
+ _iterator.e(err);
980
+ } finally {
981
+ _iterator.f();
791
982
  }
792
983
  return true;
793
984
  };
@@ -883,7 +1074,7 @@ var produceDraftStateSetMapDimensionFromLayerChangeDimension = function produceD
883
1074
  * @param newIndex New index of element in array
884
1075
  */
885
1076
  function moveArrayElements(array, oldIndex, newIndex) {
886
- var newArray = [].concat(array);
1077
+ var newArray = _toConsumableArray(array);
887
1078
  var indexNew = Math.min(newIndex, newArray.length - 1);
888
1079
  newArray.splice(indexNew, 0, newArray.splice(oldIndex, 1)[0]);
889
1080
  return newArray;
@@ -988,13 +1179,14 @@ var parseTimeDimToISO8601Interval = function parseTimeDimToISO8601Interval(timeI
988
1179
  }
989
1180
  var intervalList = timeInterval.split(',').map(function (interval) {
990
1181
  var _interval$split = interval.split('/'),
991
- startTime = _interval$split[0],
992
- endTime = _interval$split[1],
993
- duration = _interval$split[2];
1182
+ _interval$split2 = _slicedToArray(_interval$split, 3),
1183
+ startTime = _interval$split2[0],
1184
+ endTime = _interval$split2[1],
1185
+ duration = _interval$split2[2];
994
1186
  return {
995
- startTime: startTime == null ? void 0 : startTime.trim(),
996
- endTime: endTime == null ? void 0 : endTime.trim(),
997
- duration: duration == null ? void 0 : duration.trim()
1187
+ startTime: startTime === null || startTime === void 0 ? void 0 : startTime.trim(),
1188
+ endTime: endTime === null || endTime === void 0 ? void 0 : endTime.trim(),
1189
+ duration: duration === null || duration === void 0 ? void 0 : duration.trim()
998
1190
  };
999
1191
  });
1000
1192
  // Filter out intervals with missing start, end or duration
@@ -1020,23 +1212,6 @@ var utils$2 = /*#__PURE__*/Object.freeze({
1020
1212
  produceDraftStateSetWebMapDimension: produceDraftStateSetWebMapDimension
1021
1213
  });
1022
1214
 
1023
- /* *
1024
- * Licensed under the Apache License, Version 2.0 (the "License");
1025
- * you may not use this file except in compliance with the License.
1026
- * You may obtain a copy of the License at
1027
- *
1028
- * http://www.apache.org/licenses/LICENSE-2.0
1029
- *
1030
- * Unless required by applicable law or agreed to in writing, software
1031
- * distributed under the License is distributed on an "AS IS" BASIS,
1032
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1033
- * See the License for the specific language governing permissions and
1034
- * limitations under the License.
1035
- *
1036
- * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
1037
- * Copyright 2021 - Finnish Meteorological Institute (FMI)
1038
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
1039
- * */
1040
1215
  var replaceLayerIdsToEnsureUniqueLayerIdsInStore = function replaceLayerIdsToEnsureUniqueLayerIdsInStore(layerIds) {
1041
1216
  var layers = layerIds.layers,
1042
1217
  autoTimeStepLayerId = layerIds.autoTimeStepLayerId,
@@ -1062,16 +1237,16 @@ var replaceLayerIdsToEnsureUniqueLayerIdsInStore = function replaceLayerIdsToEns
1062
1237
  });
1063
1238
  var _layersWithNewIds = layers.map(function (layer, index) {
1064
1239
  if (layer.id && index === autoTimeStepLayerIndex) {
1065
- return Object.assign({}, layer, {
1240
+ return _objectSpread2(_objectSpread2({}, layer), {}, {
1066
1241
  id: autoTimeStepLayerIdNew
1067
1242
  });
1068
1243
  }
1069
1244
  if (layer.id && index === autoUpdateLayerIndex) {
1070
- return Object.assign({}, layer, {
1245
+ return _objectSpread2(_objectSpread2({}, layer), {}, {
1071
1246
  id: autoUpdateLayerIdNew
1072
1247
  });
1073
1248
  }
1074
- return Object.assign({}, layer, {
1249
+ return _objectSpread2(_objectSpread2({}, layer), {}, {
1075
1250
  id: webmapUtils.generateLayerId()
1076
1251
  });
1077
1252
  });
@@ -1096,7 +1271,7 @@ var replaceLayerIdsToEnsureUniqueLayerIdsInStore = function replaceLayerIdsToEns
1096
1271
  // The code below is executed if neither auto timestep
1097
1272
  // nor auto update layer id was provided
1098
1273
  var layersWithNewIds = layers.map(function (layer) {
1099
- return Object.assign({}, layer, {
1274
+ return _objectSpread2(_objectSpread2({}, layer), {}, {
1100
1275
  id: webmapUtils.generateLayerId()
1101
1276
  });
1102
1277
  });
@@ -1110,11 +1285,11 @@ function replaceLayerIds(layers, autoLayerIdOld, autoLayerIdNew) {
1110
1285
  });
1111
1286
  var layersWithNewIds = layers.map(function (layer, index) {
1112
1287
  if (layer.id && index === autoLayerIndex) {
1113
- return Object.assign({}, layer, {
1288
+ return _objectSpread2(_objectSpread2({}, layer), {}, {
1114
1289
  id: autoLayerIdNew
1115
1290
  });
1116
1291
  }
1117
- return Object.assign({}, layer, {
1292
+ return _objectSpread2(_objectSpread2({}, layer), {}, {
1118
1293
  id: webmapUtils.generateLayerId()
1119
1294
  });
1120
1295
  });
@@ -1281,23 +1456,6 @@ var types$3 = /*#__PURE__*/Object.freeze({
1281
1456
  get LayerStatus () { return LayerStatus; }
1282
1457
  });
1283
1458
 
1284
- /* *
1285
- * Licensed under the Apache License, Version 2.0 (the "License");
1286
- * you may not use this file except in compliance with the License.
1287
- * You may obtain a copy of the License at
1288
- *
1289
- * http://www.apache.org/licenses/LICENSE-2.0
1290
- *
1291
- * Unless required by applicable law or agreed to in writing, software
1292
- * distributed under the License is distributed on an "AS IS" BASIS,
1293
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1294
- * See the License for the specific language governing permissions and
1295
- * limitations under the License.
1296
- *
1297
- * Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
1298
- * Copyright 2020 - Finnish Meteorological Institute (FMI)
1299
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
1300
- * */
1301
1459
  /**
1302
1460
  * Sets a dimension value for a layer in the state. If the dimension does not exist it is added to the layer.
1303
1461
  * @param draft The draft layerstate
@@ -1313,7 +1471,7 @@ var produceLayerDimensionDraftState = function produceLayerDimensionDraftState(d
1313
1471
  return layerDim.name === dimensionValueToUpdate.name;
1314
1472
  });
1315
1473
  if (existingLayerDimIndex < 0) {
1316
- layer.dimensions.push(Object.assign({}, dimensionValueToUpdate));
1474
+ layer.dimensions.push(_objectSpread2({}, dimensionValueToUpdate));
1317
1475
  } else {
1318
1476
  var layerDimension = layer.dimensions[existingLayerDimIndex];
1319
1477
  if (dimensionValueToUpdate.currentValue) {
@@ -1347,7 +1505,7 @@ var isActionLayerSynced = function isActionLayerSynced(state, layerIdFromAction,
1347
1505
  var produceDimensionActionForMapLayer = function produceDimensionActionForMapLayer(layerDim, wmjsDimension, newDimension) {
1348
1506
  // If new value does not occur in the wmjsdimension - do not update the value but set the validSyncSelection to false
1349
1507
  if (wmjsDimension.getIndexForValue(newDimension.currentValue) === -1) {
1350
- return Object.assign({}, layerDim, {
1508
+ return _objectSpread2(_objectSpread2({}, layerDim), {}, {
1351
1509
  name: newDimension.name,
1352
1510
  units: newDimension.units,
1353
1511
  currentValue: layerDim.currentValue,
@@ -1355,7 +1513,7 @@ var produceDimensionActionForMapLayer = function produceDimensionActionForMapLay
1355
1513
  });
1356
1514
  }
1357
1515
  // Otherwise, update to new value and set validSyncSelection to true
1358
- return Object.assign({}, layerDim, {
1516
+ return _objectSpread2(_objectSpread2({}, layerDim), {}, {
1359
1517
  name: newDimension.name,
1360
1518
  units: newDimension.units,
1361
1519
  currentValue: newDimension.currentValue,
@@ -1379,20 +1537,20 @@ var produceDraftStateForAllLayersForDimensionWithinMap = function produceDraftSt
1379
1537
  return;
1380
1538
  }
1381
1539
  var wmjsDimension = webmapUtils.getWMJSDimensionForLayerAndDimension(layerId, dimension.name);
1382
- if (wmjsDimension != null && wmjsDimension.linked && wmjsDimension.name === 'reference_time') {
1540
+ if (wmjsDimension !== null && wmjsDimension !== void 0 && wmjsDimension.linked && wmjsDimension.name === 'reference_time') {
1383
1541
  wmjsDimension.linked = false;
1384
1542
  }
1385
- if (layerIdFromAction === layerId || wmjsDimension != null && wmjsDimension.linked) {
1543
+ if (layerIdFromAction === layerId || wmjsDimension !== null && wmjsDimension !== void 0 && wmjsDimension.linked) {
1386
1544
  var evenWhenOutsideRange = true;
1387
1545
  var closestValue = wmjsDimension ? wmjsDimension.getClosestValue(dimension.currentValue, evenWhenOutsideRange) : dimension.currentValue;
1388
1546
  var synced = dimension.synced !== undefined ? {
1389
1547
  synced: dimension.synced
1390
1548
  } : {};
1391
- var dimensionValueToUpdate = Object.assign({
1549
+ var dimensionValueToUpdate = _objectSpread2(_objectSpread2({
1392
1550
  name: dimension.name,
1393
1551
  units: dimension.units,
1394
1552
  currentValue: closestValue
1395
- }, synced, {
1553
+ }, synced), {}, {
1396
1554
  validSyncSelection: true
1397
1555
  });
1398
1556
  /* Set the dimension value for this layer */
@@ -1419,9 +1577,9 @@ var produceDraftStateForAllLayersForDimensionWithinMap = function produceDraftSt
1419
1577
  */
1420
1578
  var filterNonTimeDimensions = function filterNonTimeDimensions(dimensions) {
1421
1579
  var _dimensions$filter;
1422
- return (_dimensions$filter = dimensions == null ? void 0 : dimensions.filter(function (dim) {
1580
+ return (_dimensions$filter = dimensions === null || dimensions === void 0 ? void 0 : dimensions.filter(function (dim) {
1423
1581
  return dim.name !== 'time';
1424
- })) != null ? _dimensions$filter : [];
1582
+ })) !== null && _dimensions$filter !== void 0 ? _dimensions$filter : [];
1425
1583
  };
1426
1584
  /**
1427
1585
  * Returns the list of dimensions without the time dimension
@@ -1429,11 +1587,11 @@ var filterNonTimeDimensions = function filterNonTimeDimensions(dimensions) {
1429
1587
  */
1430
1588
  var filterCurrentValueFromDimensions = function filterCurrentValueFromDimensions(dimensions) {
1431
1589
  var _dimensions$map;
1432
- return (_dimensions$map = dimensions == null ? void 0 : dimensions.map(function (dim) {
1590
+ return (_dimensions$map = dimensions === null || dimensions === void 0 ? void 0 : dimensions.map(function (dim) {
1433
1591
  // eslint-disable-next-line no-param-reassign
1434
1592
  dim.currentValue = '';
1435
1593
  return dim;
1436
- })) != null ? _dimensions$map : [];
1594
+ })) !== null && _dimensions$map !== void 0 ? _dimensions$map : [];
1437
1595
  };
1438
1596
  /**
1439
1597
  * The timeslider range is depending on values set via reference_time dimension.
@@ -1445,7 +1603,7 @@ var filterCurrentValueFromDimensions = function filterCurrentValueFromDimensions
1445
1603
  * @returns
1446
1604
  */
1447
1605
  var updateMinMaxValueWhenReferenceTimeChanges = function updateMinMaxValueWhenReferenceTimeChanges(draftLayer, dimensionValueToUpdate) {
1448
- if (!(draftLayer != null && draftLayer.id) || !(draftLayer != null && draftLayer.dimensions) || dimensionValueToUpdate.name !== 'reference_time') {
1606
+ if (!(draftLayer !== null && draftLayer !== void 0 && draftLayer.id) || !(draftLayer !== null && draftLayer !== void 0 && draftLayer.dimensions) || dimensionValueToUpdate.name !== 'reference_time') {
1449
1607
  return;
1450
1608
  }
1451
1609
  // If dimension reference_time is updated, we might have to update the time minValue and maxValue as well.
@@ -1459,7 +1617,7 @@ var updateMinMaxValueWhenReferenceTimeChanges = function updateMinMaxValueWhenRe
1459
1617
  if (reduxTimeDim && timeDimension && referenceTimeDimension) {
1460
1618
  // When the reference time changes, a new set of timevalues needs to be set in the layer.
1461
1619
  // From the new timevalues the min.max can be derived.
1462
- timeDimension == null || timeDimension.setTimeValuesForReferenceTime(dimensionValueToUpdate.currentValue, referenceTimeDimension);
1620
+ timeDimension === null || timeDimension === void 0 || timeDimension.setTimeValuesForReferenceTime(dimensionValueToUpdate.currentValue, referenceTimeDimension);
1463
1621
  reduxTimeDim.minValue = timeDimension.getFirstValue();
1464
1622
  reduxTimeDim.maxValue = timeDimension.getLastValue();
1465
1623
  }
@@ -1491,7 +1649,7 @@ var createLayer = function createLayer(_ref) {
1491
1649
  status = _ref$status === void 0 ? 'default' : _ref$status,
1492
1650
  _ref$useLatestReferen = _ref.useLatestReferenceTime,
1493
1651
  useLatestReferenceTime = _ref$useLatestReferen === void 0 ? true : _ref$useLatestReferen,
1494
- props = _objectWithoutPropertiesLoose(_ref, _excluded$3);
1652
+ props = _objectWithoutProperties(_ref, _excluded$3);
1495
1653
  var wmjsLayer = webmapUtils.getWMLayerById(id);
1496
1654
  var dimensions = props.dimensions || (wmjsLayer ? wmjsLayer.getDimensions() : []).map(function (dim) {
1497
1655
  return {
@@ -1500,7 +1658,7 @@ var createLayer = function createLayer(_ref) {
1500
1658
  units: dim.units
1501
1659
  };
1502
1660
  });
1503
- return Object.assign({}, props, {
1661
+ return _objectSpread2(_objectSpread2({}, props), {}, {
1504
1662
  dimensions: dimensions,
1505
1663
  id: id,
1506
1664
  opacity: opacity,
@@ -1533,7 +1691,7 @@ var slice$6 = createSlice({
1533
1691
  }
1534
1692
  if (!draft.byId[layerId]) {
1535
1693
  // TODO: (Sander de Snaijer, 2020-03-19) remove layerIds from the layer utils
1536
- draft.byId[layerId] = createLayer(Object.assign({}, layer, {
1694
+ draft.byId[layerId] = createLayer(_objectSpread2(_objectSpread2({}, layer), {}, {
1537
1695
  id: layerId,
1538
1696
  mapId: mapId
1539
1697
  }));
@@ -1547,7 +1705,7 @@ var slice$6 = createSlice({
1547
1705
  mapId = _action$payload2.mapId;
1548
1706
  var oldLayer = draft.byId[oldLayerId];
1549
1707
  if (oldLayer && !draft.byId[newLayerId]) {
1550
- draft.byId[newLayerId] = createLayer(Object.assign({}, draft.byId[oldLayerId], {
1708
+ draft.byId[newLayerId] = createLayer(_objectSpread2(_objectSpread2({}, draft.byId[oldLayerId]), {}, {
1551
1709
  id: newLayerId,
1552
1710
  mapId: mapId
1553
1711
  }));
@@ -1619,7 +1777,7 @@ var slice$6 = createSlice({
1619
1777
  sourceLayerId = _action$payload10.sourceLayerId;
1620
1778
  if (draft.byId[layerId]) {
1621
1779
  var _draft$byId$sourceLay;
1622
- draft.byId[layerId].geojson = (_draft$byId$sourceLay = draft.byId[sourceLayerId]) == null ? void 0 : _draft$byId$sourceLay.geojson;
1780
+ draft.byId[layerId].geojson = (_draft$byId$sourceLay = draft.byId[sourceLayerId]) === null || _draft$byId$sourceLay === void 0 ? void 0 : _draft$byId$sourceLay.geojson;
1623
1781
  }
1624
1782
  },
1625
1783
  layerDelete: function layerDelete(draft, action) {
@@ -1672,7 +1830,7 @@ var slice$6 = createSlice({
1672
1830
  Here we set the layers for the mapId from the action. byId and allIds is updated.
1673
1831
  */
1674
1832
  layers.forEach(function (layer) {
1675
- draft.byId[layer.id] = createLayer(Object.assign({
1833
+ draft.byId[layer.id] = createLayer(_objectSpread2({
1676
1834
  id: layer.id,
1677
1835
  mapId: mapId
1678
1836
  }, layer));
@@ -1706,7 +1864,7 @@ var slice$6 = createSlice({
1706
1864
  });
1707
1865
  // set over and base layers
1708
1866
  filtererdBaseLayers.forEach(function (layer) {
1709
- draft.byId[layer.id] = createLayer(Object.assign({
1867
+ draft.byId[layer.id] = createLayer(_objectSpread2({
1710
1868
  id: layer.id,
1711
1869
  layerType: layer.layerType,
1712
1870
  mapId: mapId
@@ -1720,7 +1878,7 @@ var slice$6 = createSlice({
1720
1878
  return;
1721
1879
  }
1722
1880
  if (!draft.byId[layer.id]) {
1723
- draft.byId[layer.id] = createLayer(Object.assign({
1881
+ draft.byId[layer.id] = createLayer(_objectSpread2({
1724
1882
  id: layer.id,
1725
1883
  layerType: layer.layerType
1726
1884
  }, layer));
@@ -1741,7 +1899,7 @@ var slice$6 = createSlice({
1741
1899
  return;
1742
1900
  }
1743
1901
  if (!draft.availableBaseLayers.byId[layer.id]) {
1744
- draft.availableBaseLayers.byId[layer.id] = createLayer(Object.assign({
1902
+ draft.availableBaseLayers.byId[layer.id] = createLayer(_objectSpread2({
1745
1903
  id: layer.id,
1746
1904
  layerType: layer.layerType
1747
1905
  }, layer));
@@ -1755,7 +1913,7 @@ var slice$6 = createSlice({
1755
1913
  if (layer.layerType !== LayerType.baseLayer || draft.availableBaseLayers.byId[layer.id] || !layer.mapId) {
1756
1914
  return;
1757
1915
  }
1758
- draft.availableBaseLayers.byId[layer.id] = createLayer(Object.assign({
1916
+ draft.availableBaseLayers.byId[layer.id] = createLayer(_objectSpread2({
1759
1917
  id: layer.id,
1760
1918
  layerType: layer.layerType
1761
1919
  }, layer));
@@ -1780,7 +1938,7 @@ var slice$6 = createSlice({
1780
1938
  if (layer.layerType !== LayerType.baseLayer || !layer.mapId) {
1781
1939
  return;
1782
1940
  }
1783
- draft.availableBaseLayers.byId[layer.id] = createLayer(Object.assign({}, layer));
1941
+ draft.availableBaseLayers.byId[layer.id] = createLayer(_objectSpread2({}, layer));
1784
1942
  draft.availableBaseLayers.allIds.push(layer.id);
1785
1943
  });
1786
1944
  },
@@ -1799,7 +1957,7 @@ var slice$6 = createSlice({
1799
1957
  layerStyle = _action$payload16.layerStyle,
1800
1958
  layerDimensions = _action$payload16.layerDimensions;
1801
1959
  if (layerStyle && draft.byId[layerStyle.layerId]) {
1802
- draft.byId[layerStyle.layerId].style = layerStyle == null ? void 0 : layerStyle.style;
1960
+ draft.byId[layerStyle.layerId].style = layerStyle === null || layerStyle === void 0 ? void 0 : layerStyle.style;
1803
1961
  }
1804
1962
  if (!layerDimensions) {
1805
1963
  return;
@@ -1810,13 +1968,15 @@ var slice$6 = createSlice({
1810
1968
  });
1811
1969
  /* Find all other layers with the same name and service, and update these at once (atomic update) */
1812
1970
  var layersToUpdate = Object.values(draft.byId).filter(function (otherLayer) {
1813
- return otherLayer.name === layer.name && otherLayer.service === layer.service && otherLayer.id;
1971
+ return (otherLayer === null || otherLayer === void 0 ? void 0 : otherLayer.name) === (layer === null || layer === void 0 ? void 0 : layer.name) && (otherLayer === null || otherLayer === void 0 ? void 0 : otherLayer.service) === (layer === null || layer === void 0 ? void 0 : layer.service) && (otherLayer === null || otherLayer === void 0 ? void 0 : otherLayer.id);
1814
1972
  });
1815
1973
  layersToUpdate.forEach(function (layerToUpdate) {
1816
1974
  var _reduxLayer$dimension;
1817
1975
  var layerId = layerToUpdate.id;
1818
1976
  var reduxLayer = draft.byId[layerId];
1819
- (_reduxLayer$dimension = reduxLayer.dimensions) != null ? _reduxLayer$dimension : reduxLayer.dimensions = [];
1977
+ /* Find the wmLayer */
1978
+ var wmLayer = webmapUtils.getWMLayerById(layerId);
1979
+ (_reduxLayer$dimension = reduxLayer.dimensions) !== null && _reduxLayer$dimension !== void 0 ? _reduxLayer$dimension : reduxLayer.dimensions = [];
1820
1980
  // remove dimensions not in incoming list of dimensions
1821
1981
  reduxLayer.dimensions = reduxLayer.dimensions.filter(function (dimension) {
1822
1982
  return incomingDimensionNames.includes(dimension.name);
@@ -1824,14 +1984,12 @@ var slice$6 = createSlice({
1824
1984
  var reduxDimensions = reduxLayer.dimensions;
1825
1985
  /* Now update or insert the dimension for each layer */
1826
1986
  layerDimensions.dimensions.forEach(function (newLayerDimension) {
1827
- /* Find the wmLayer */
1828
- var wmLayer = webmapUtils.getWMLayerById(layerId);
1829
1987
  /* Find the wmDimension */
1830
- var wmDimension = wmLayer == null ? void 0 : wmLayer.getDimension(newLayerDimension.name);
1988
+ var wmDimension = wmLayer === null || wmLayer === void 0 ? void 0 : wmLayer.getDimension(newLayerDimension.name);
1831
1989
  /* This will set the new range of start/stop values for this dimension, making getClosestValue work properly */
1832
- wmDimension == null || wmDimension.reInitializeValues(newLayerDimension.values);
1833
- var existingDimension = reduxDimensions.find(function (d) {
1834
- return d.name === newLayerDimension.name;
1990
+ wmDimension === null || wmDimension === void 0 || wmDimension.reInitializeValues(newLayerDimension.values);
1991
+ var existingDimension = reduxDimensions.find(function (dim) {
1992
+ return dim.name === newLayerDimension.name;
1835
1993
  });
1836
1994
  if (existingDimension) {
1837
1995
  if (existingDimension.name === 'reference_time' && reduxLayer.useLatestReferenceTime && newLayerDimension.maxValue) {
@@ -1846,9 +2004,24 @@ var slice$6 = createSlice({
1846
2004
  }
1847
2005
  } else if (layerId === layerDimensions.layerId) {
1848
2006
  /* Otherwise add a new one, but only for this layer. */
1849
- reduxDimensions.push(Object.assign({}, newLayerDimension));
2007
+ reduxDimensions.push(_objectSpread2({}, newLayerDimension));
1850
2008
  }
1851
2009
  });
2010
+ // Ensure that the time range is correctly set based on the current reference time value
2011
+ var timeDimension = layerDimensions.dimensions.find(function (layerDim) {
2012
+ return layerDim.name === 'time';
2013
+ });
2014
+ var refTimeDimension = layerDimensions.dimensions.find(function (layerDim) {
2015
+ return layerDim.name === 'reference_time';
2016
+ });
2017
+ if (timeDimension && refTimeDimension && wmLayer) {
2018
+ /* Find the wmDimension */
2019
+ var wmTimeDimension = wmLayer.getDimension('time');
2020
+ var wmRefTimeDimension = wmLayer.getDimension('reference_time');
2021
+ if (wmTimeDimension && wmRefTimeDimension) {
2022
+ wmTimeDimension === null || wmTimeDimension === void 0 || wmTimeDimension.setTimeValuesForReferenceTime(refTimeDimension.currentValue, wmRefTimeDimension);
2023
+ }
2024
+ }
1852
2025
  });
1853
2026
  },
1854
2027
  // feature layer actions
@@ -1860,7 +2033,7 @@ var slice$6 = createSlice({
1860
2033
  if (!layerId || layerIdsWithoutNewId.length === draft.allIds.length) {
1861
2034
  return;
1862
2035
  }
1863
- var newLayerIds = [layerId].concat(layerIdsWithoutNewId);
2036
+ var newLayerIds = [layerId].concat(_toConsumableArray(layerIdsWithoutNewId));
1864
2037
  draft.allIds = newLayerIds;
1865
2038
  },
1866
2039
  // feature layer actions
@@ -1907,7 +2080,7 @@ var slice$6 = createSlice({
1907
2080
  return;
1908
2081
  }
1909
2082
  var bounds = intersectionBoundsLayer.geojson;
1910
- var geoJSONProperties = intersectionLayer.defaultGeoJSONProperties || ((_currentLayer$geojson = currentLayer.geojson) == null || (_currentLayer$geojson = _currentLayer$geojson.features[0]) == null ? void 0 : _currentLayer$geojson.properties);
2083
+ var geoJSONProperties = intersectionLayer.defaultGeoJSONProperties || ((_currentLayer$geojson = currentLayer.geojson) === null || _currentLayer$geojson === void 0 || (_currentLayer$geojson = _currentLayer$geojson.features[0]) === null || _currentLayer$geojson === void 0 ? void 0 : _currentLayer$geojson.properties);
1911
2084
  intersectionLayer.geojson = createInterSections(updatedGeoJSON, bounds, geoJSONProperties);
1912
2085
  }
1913
2086
  },
@@ -1961,7 +2134,7 @@ var slice$6 = createSlice({
1961
2134
  var currentGeoJSON = draft.byId[layerId].geojson;
1962
2135
  var lastFeatureIndex = currentGeoJSON !== undefined && getLastEmptyFeatureIndex(currentGeoJSON);
1963
2136
  if (currentGeoJSON && lastFeatureIndex !== undefined) {
1964
- var newGeoJSON = Object.assign({}, currentGeoJSON, {
2137
+ var newGeoJSON = _objectSpread2(_objectSpread2({}, currentGeoJSON), {}, {
1965
2138
  features: currentGeoJSON.features.filter(function (_feature, index) {
1966
2139
  return index !== lastFeatureIndex;
1967
2140
  })
@@ -2000,7 +2173,7 @@ var slice$6 = createSlice({
2000
2173
  });
2001
2174
  }
2002
2175
  /* And then append the targets form the action */
2003
- targets.push.apply(targets, targetsFromAction);
2176
+ targets.push.apply(targets, _toConsumableArray(targetsFromAction));
2004
2177
  targets.forEach(function (payload) {
2005
2178
  var targetId = payload.targetId,
2006
2179
  value = payload.value;
@@ -2049,28 +2222,11 @@ var slice$6 = createSlice({
2049
2222
  var layerReducer = slice$6.reducer,
2050
2223
  layerActions = slice$6.actions;
2051
2224
 
2052
- /* *
2053
- * Licensed under the Apache License, Version 2.0 (the "License");
2054
- * you may not use this file except in compliance with the License.
2055
- * You may obtain a copy of the License at
2056
- *
2057
- * http://www.apache.org/licenses/LICENSE-2.0
2058
- *
2059
- * Unless required by applicable law or agreed to in writing, software
2060
- * distributed under the License is distributed on an "AS IS" BASIS,
2061
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2062
- * See the License for the specific language governing permissions and
2063
- * limitations under the License.
2064
- *
2065
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
2066
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
2067
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
2068
- * */
2069
2225
  var moveToTop = function moveToTop(list, element) {
2070
2226
  var filteredList = list.filter(function (item) {
2071
2227
  return item !== element;
2072
2228
  });
2073
- var newOrder = [element].concat(filteredList);
2229
+ var newOrder = [element].concat(_toConsumableArray(filteredList));
2074
2230
  return newOrder;
2075
2231
  };
2076
2232
  var createUIDialogElement = function createUIDialogElement(_ref) {
@@ -2209,14 +2365,19 @@ var createLayersWithIds = function createLayersWithIds(state, layers) {
2209
2365
  return layers;
2210
2366
  }
2211
2367
  return produce(layers, function (draft) {
2212
- for (var _iterator = _createForOfIteratorHelperLoose(draft), _step; !(_step = _iterator()).done;) {
2213
- var layer = _step.value;
2214
- if (!layer.id) {
2215
- layer.id = webmapUtils.generateLayerId();
2216
- } else if (checkIfMapLayerIdIsAlreadyTaken(state, layer.id)) {
2217
- console.warn("Warning: Layer id " + layer.id + " was already taken: Generating new one.");
2218
- layer.id = webmapUtils.generateLayerId();
2368
+ var _iterator = _createForOfIteratorHelper(draft),
2369
+ _step;
2370
+ try {
2371
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
2372
+ var layer = _step.value;
2373
+ if (!layer.id) {
2374
+ console.warn("Warning: Layer id was not provided");
2375
+ }
2219
2376
  }
2377
+ } catch (err) {
2378
+ _iterator.e(err);
2379
+ } finally {
2380
+ _iterator.f();
2220
2381
  }
2221
2382
  });
2222
2383
  };
@@ -2569,7 +2730,7 @@ var slice$4 = createSlice({
2569
2730
  return;
2570
2731
  }
2571
2732
  if (checkIfMapLayerIdIsAlreadyTaken(draft, layerId)) {
2572
- console.warn("Warning: Layer id " + layerId + " was already taken");
2733
+ console.warn("Warning: Layer id ".concat(layerId, " was already taken"));
2573
2734
  return;
2574
2735
  }
2575
2736
  if (!draft.byId[mapId].mapLayers.length) {
@@ -2590,7 +2751,7 @@ var slice$4 = createSlice({
2590
2751
  return;
2591
2752
  }
2592
2753
  if (checkIfMapLayerIdIsAlreadyTaken(draft, newLayerId)) {
2593
- console.warn("Warning: Layer id " + newLayerId + " was already taken");
2754
+ console.warn("Warning: Layer id ".concat(newLayerId, " was already taken"));
2594
2755
  return;
2595
2756
  }
2596
2757
  draft.byId[mapId].mapLayers.unshift(newLayerId);
@@ -2603,7 +2764,7 @@ var slice$4 = createSlice({
2603
2764
  return;
2604
2765
  }
2605
2766
  if (checkIfMapLayerIdIsAlreadyTaken(draft, layerId)) {
2606
- console.warn("Warning: Layer id " + layerId + " was already taken");
2767
+ console.warn("Warning: Layer id ".concat(layerId, " was already taken"));
2607
2768
  return;
2608
2769
  }
2609
2770
  if (layer.layerType === LayerType.baseLayer) {
@@ -2620,7 +2781,8 @@ var slice$4 = createSlice({
2620
2781
  var id = _ref.id;
2621
2782
  return id;
2622
2783
  });
2623
- var activeLayerId = layerIds[0];
2784
+ var _layerIds = _slicedToArray(layerIds, 1),
2785
+ activeLayerId = _layerIds[0];
2624
2786
  if (draft.byId[mapId]) {
2625
2787
  draft.byId[mapId].mapLayers = layerIds;
2626
2788
  draft.byId[mapId].autoUpdateLayerId = activeLayerId;
@@ -2701,7 +2863,7 @@ var slice$4 = createSlice({
2701
2863
  map.autoTimeStepLayerId = undefined;
2702
2864
  return;
2703
2865
  }
2704
- var _map$mapLayers = map.mapLayers,
2866
+ var _map$mapLayers = _slicedToArray(map.mapLayers, 1),
2705
2867
  activeLayerId = _map$mapLayers[0];
2706
2868
  if (map.autoUpdateLayerId === layerId) {
2707
2869
  map.autoUpdateLayerId = activeLayerId;
@@ -2743,7 +2905,7 @@ var slice$4 = createSlice({
2743
2905
  });
2744
2906
  }
2745
2907
  /* And then append the targets form the action */
2746
- targets.push.apply(targets, targetsFromAction);
2908
+ targets.push.apply(targets, _toConsumableArray(targetsFromAction));
2747
2909
  targets.forEach(function (target) {
2748
2910
  var targetId = target.targetId,
2749
2911
  value = target.value;
@@ -2770,7 +2932,7 @@ var slice$4 = createSlice({
2770
2932
  });
2771
2933
  }
2772
2934
  /* And then append the targets form the action */
2773
- targets.push.apply(targets, targetsFromAction);
2935
+ targets.push.apply(targets, _toConsumableArray(targetsFromAction));
2774
2936
  targets.forEach(function (payload) {
2775
2937
  var targetId = payload.targetId,
2776
2938
  bbox = payload.bbox,
@@ -2846,14 +3008,14 @@ var slice$4 = createSlice({
2846
3008
  });
2847
3009
  }
2848
3010
  });
2849
- var mapActions = Object.assign({}, slice$4.actions, {
3011
+ var mapActions = _objectSpread2(_objectSpread2({}, slice$4.actions), {}, {
2850
3012
  setMapPreset: setMapPreset,
2851
3013
  mapChangeDimension: mapChangeDimension
2852
3014
  });
2853
3015
  var mapReducer = slice$4.reducer;
2854
3016
 
2855
3017
  var layerStore = function layerStore(store) {
2856
- return store == null ? void 0 : store.layers;
3018
+ return store === null || store === void 0 ? void 0 : store.layers;
2857
3019
  };
2858
3020
  /**
2859
3021
  * Gets a layer from the layers part of the store by its Id
@@ -2904,7 +3066,7 @@ var getLayerByIdWithoutTimeDimension = createSelector([layerStore, function (lay
2904
3066
  */
2905
3067
  var getLayersById = createSelector(layerStore, function (store) {
2906
3068
  var _store$byId;
2907
- return (_store$byId = store == null ? void 0 : store.byId) != null ? _store$byId : null;
3069
+ return (_store$byId = store === null || store === void 0 ? void 0 : store.byId) !== null && _store$byId !== void 0 ? _store$byId : null;
2908
3070
  }, selectorMemoizationOptions);
2909
3071
  /**
2910
3072
  * Retrieves all layerIds
@@ -3001,7 +3163,7 @@ var getFeatureLayers = createSelector(getAllLayers, function (layers) {
3001
3163
  */
3002
3164
  var getLayerDimensions = createSelector(getLayerById, function (layer) {
3003
3165
  var _layer$dimensions;
3004
- return (_layer$dimensions = layer == null ? void 0 : layer.dimensions) != null ? _layer$dimensions : [];
3166
+ return (_layer$dimensions = layer === null || layer === void 0 ? void 0 : layer.dimensions) !== null && _layer$dimensions !== void 0 ? _layer$dimensions : [];
3005
3167
  }, selectorMemoizationOptions);
3006
3168
  /**
3007
3169
  * Gets dimensions of the passed layer, excluding the time dimension
@@ -3023,7 +3185,7 @@ var getLayerNonTimeDimensions = createSelector(getLayerDimensions, function (dim
3023
3185
  * @returns {object} returnType: object - object of layer time dimension
3024
3186
  */
3025
3187
  var getLayerTimeDimension = createSelector(getLayerDimensions, function (dimensions) {
3026
- return dimensions == null ? void 0 : dimensions.find(function (dimension) {
3188
+ return dimensions === null || dimensions === void 0 ? void 0 : dimensions.find(function (dimension) {
3027
3189
  return dimension.name === 'time';
3028
3190
  });
3029
3191
  }, selectorMemoizationOptions);
@@ -3039,7 +3201,7 @@ var getLayerHasTimeDimension = createSelector(getLayerTimeDimension, function (t
3039
3201
  return !!timeDimension;
3040
3202
  }, selectorMemoizationOptions);
3041
3203
  var getLayerCurrentTime = createSelector(getLayerTimeDimension, function (dimension) {
3042
- return dimension == null ? void 0 : dimension.currentValue;
3204
+ return dimension === null || dimension === void 0 ? void 0 : dimension.currentValue;
3043
3205
  }, selectorMemoizationOptions);
3044
3206
  /**
3045
3207
  * Gets specified dimension of the passed layer
@@ -3053,7 +3215,7 @@ var getLayerCurrentTime = createSelector(getLayerTimeDimension, function (dimens
3053
3215
  var getLayerDimension = createSelector(getLayerDimensions, function (_store, _layerId, dimensionName) {
3054
3216
  return dimensionName;
3055
3217
  }, function (dimensions, dimensionName) {
3056
- return dimensions == null ? void 0 : dimensions.find(function (dimension) {
3218
+ return dimensions === null || dimensions === void 0 ? void 0 : dimensions.find(function (dimension) {
3057
3219
  return dimension.name === dimensionName;
3058
3220
  });
3059
3221
  }, selectorMemoizationOptions);
@@ -3077,7 +3239,7 @@ var getLayerOpacity = createSelector(getLayerById, function (layer) {
3077
3239
  * @returns {boolean} returnType: boolean - true if enabled, false if disabled
3078
3240
  */
3079
3241
  var getLayerEnabled = createSelector(getLayerById, function (layer) {
3080
- return Boolean(layer == null ? void 0 : layer.enabled);
3242
+ return Boolean(layer === null || layer === void 0 ? void 0 : layer.enabled);
3081
3243
  }, selectorMemoizationOptions);
3082
3244
  /**
3083
3245
  * Gets layer name
@@ -3089,7 +3251,7 @@ var getLayerEnabled = createSelector(getLayerById, function (layer) {
3089
3251
  */
3090
3252
  var getLayerName = createSelector(getLayerById, function (layer) {
3091
3253
  var _layer$name;
3092
- return (_layer$name = layer == null ? void 0 : layer.name) != null ? _layer$name : '';
3254
+ return (_layer$name = layer === null || layer === void 0 ? void 0 : layer.name) !== null && _layer$name !== void 0 ? _layer$name : '';
3093
3255
  }, selectorMemoizationOptions);
3094
3256
  /**
3095
3257
  * Gets layer service
@@ -3101,7 +3263,7 @@ var getLayerName = createSelector(getLayerById, function (layer) {
3101
3263
  */
3102
3264
  var getLayerService = createSelector(getLayerById, function (layer) {
3103
3265
  var _layer$service;
3104
- return (_layer$service = layer == null ? void 0 : layer.service) != null ? _layer$service : '';
3266
+ return (_layer$service = layer === null || layer === void 0 ? void 0 : layer.service) !== null && _layer$service !== void 0 ? _layer$service : '';
3105
3267
  }, selectorMemoizationOptions);
3106
3268
  /**
3107
3269
  * Gets selected style of the passed layer
@@ -3156,7 +3318,7 @@ var getAvailableBaseLayersForMap = createSelector(layerStore, function (_store,
3156
3318
  * @returns {number} selectedFeatureIndex: the index of the selected geojson feature
3157
3319
  */
3158
3320
  var getSelectedFeatureIndex = createSelector(getLayerById, function (layer) {
3159
- return layer == null ? void 0 : layer.selectedFeatureIndex;
3321
+ return layer === null || layer === void 0 ? void 0 : layer.selectedFeatureIndex;
3160
3322
  }, selectorMemoizationOptions);
3161
3323
  /**
3162
3324
  * Returns the layer is in edit mode
@@ -3167,20 +3329,18 @@ var getSelectedFeatureIndex = createSelector(getLayerById, function (layer) {
3167
3329
  * @returns {number} isLayerInEditMode: boolean - isInEditMode
3168
3330
  */
3169
3331
  var getIsLayerInEditMode = createSelector(getLayerById, function (layer) {
3170
- return (layer == null ? void 0 : layer.isInEditMode) || false;
3332
+ return (layer === null || layer === void 0 ? void 0 : layer.isInEditMode) || false;
3171
3333
  }, selectorMemoizationOptions);
3172
3334
  var getFeatureLayerGeoJSON = createSelector(getLayerById, function (layer) {
3173
- return (layer == null ? void 0 : layer.geojson) || undefined;
3335
+ return (layer === null || layer === void 0 ? void 0 : layer.geojson) || undefined;
3174
3336
  }, selectorMemoizationOptions);
3175
3337
  var getHasFeatureLayerGeoJSON = createSelector(getFeatureLayerGeoJSON, function (geojson) {
3176
3338
  return !!geojson;
3177
3339
  }, selectorMemoizationOptions);
3178
- var getFeatureLayerGeoJSONProperties = createSelector(getLayerById, getSelectedFeatureIndex, function (layer, selecteFeatureIndex) {
3340
+ var getFeatureLayerGeoJSONProperties = createSelector(getLayerById, getSelectedFeatureIndex, function (layer) {
3179
3341
  var _layer$geojson;
3180
- if (selecteFeatureIndex === void 0) {
3181
- selecteFeatureIndex = 0;
3182
- }
3183
- return (layer == null || (_layer$geojson = layer.geojson) == null || (_layer$geojson = _layer$geojson.features[selecteFeatureIndex]) == null ? void 0 : _layer$geojson.properties) || {};
3342
+ var selecteFeatureIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
3343
+ return (layer === null || layer === void 0 || (_layer$geojson = layer.geojson) === null || _layer$geojson === void 0 || (_layer$geojson = _layer$geojson.features[selecteFeatureIndex]) === null || _layer$geojson === void 0 ? void 0 : _layer$geojson.properties) || {};
3184
3344
  }, selectorMemoizationOptions);
3185
3345
  /**
3186
3346
  * Gets layerIds that contain passed dimension
@@ -3195,7 +3355,7 @@ var getDimensionLayerIds = createSelector(getLayersIds, getLayersById, function
3195
3355
  }, function (layerIds, layers, dimensionName) {
3196
3356
  return layerIds.reduce(function (list, layerId) {
3197
3357
  var layer = layers[layerId];
3198
- var dimensions = layer != null && layer.dimensions ? layer.dimensions : [];
3358
+ var dimensions = layer !== null && layer !== void 0 && layer.dimensions ? layer.dimensions : [];
3199
3359
  if (dimensions.find(function (dimension) {
3200
3360
  return dimension.name === dimensionName;
3201
3361
  })) {
@@ -3205,13 +3365,13 @@ var getDimensionLayerIds = createSelector(getLayersIds, getLayersById, function
3205
3365
  }, []);
3206
3366
  }, selectorMemoizationOptions);
3207
3367
  var getAcceptanceTimeInMinutes = createSelector(getLayerById, function (layer) {
3208
- return layer == null ? void 0 : layer.acceptanceTimeInMinutes;
3368
+ return layer === null || layer === void 0 ? void 0 : layer.acceptanceTimeInMinutes;
3209
3369
  }, selectorMemoizationOptions);
3210
3370
  var getLayerIsInsideAcceptanceTime = createSelector(getAcceptanceTimeInMinutes, getLayerCurrentTime, function (state, _layerId, mapId) {
3211
3371
  var _state$webmap;
3212
- return (_state$webmap = state.webmap) == null || (_state$webmap = _state$webmap.byId[mapId]) == null || (_state$webmap = _state$webmap.dimensions) == null || (_state$webmap = _state$webmap.find(function (dimension) {
3372
+ return (_state$webmap = state.webmap) === null || _state$webmap === void 0 || (_state$webmap = _state$webmap.byId[mapId]) === null || _state$webmap === void 0 || (_state$webmap = _state$webmap.dimensions) === null || _state$webmap === void 0 || (_state$webmap = _state$webmap.find(function (dimension) {
3213
3373
  return dimension.name === 'time';
3214
- })) == null ? void 0 : _state$webmap.currentValue;
3374
+ })) === null || _state$webmap === void 0 ? void 0 : _state$webmap.currentValue;
3215
3375
  }, function (acceptanceTimeInMinutes, layerCurrentTime, mapCurrentTime) {
3216
3376
  if (!mapCurrentTime || !layerCurrentTime) {
3217
3377
  return 'equal';
@@ -3231,7 +3391,7 @@ var getLayerIsInsideAcceptanceTime = createSelector(getAcceptanceTimeInMinutes,
3231
3391
  return 'inside';
3232
3392
  }, selectorMemoizationOptions);
3233
3393
  var getUseLatestReferenceTime = createSelector(getLayerById, function (layer) {
3234
- return Boolean(layer == null ? void 0 : layer.useLatestReferenceTime);
3394
+ return Boolean(layer === null || layer === void 0 ? void 0 : layer.useLatestReferenceTime);
3235
3395
  }, selectorMemoizationOptions);
3236
3396
  /**
3237
3397
  * Returns the timestep for this layerId in seconds, or undefined if it has no time dimension or timeinterval.
@@ -3248,23 +3408,31 @@ var getTimeStepForLayerId = createSelector(getLayerTimeDimension, function (time
3248
3408
  return isEmpty(timeInterval) ? undefined : getTimeStepFromDataInterval(timeInterval);
3249
3409
  }
3250
3410
  var iso8601Intervals = parseTimeDimToISO8601Interval(values);
3251
- for (var _iterator = _createForOfIteratorHelperLoose(iso8601Intervals), _step; !(_step = _iterator()).done;) {
3252
- var _step$value = _step.value,
3253
- startTime = _step$value.startTime,
3254
- endTime = _step$value.endTime,
3255
- duration = _step$value.duration;
3256
- if (dateUtils.isWithinInterval(currentValue, {
3257
- start: startTime,
3258
- end: endTime
3259
- })) {
3260
- var parsedInterval = parseISO8601IntervalToDateInterval(duration);
3261
- return getTimeStepFromDataInterval(parsedInterval);
3411
+ var _iterator = _createForOfIteratorHelper(iso8601Intervals),
3412
+ _step;
3413
+ try {
3414
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
3415
+ var _step$value = _step.value,
3416
+ startTime = _step$value.startTime,
3417
+ endTime = _step$value.endTime,
3418
+ duration = _step$value.duration;
3419
+ if (dateUtils.isWithinInterval(currentValue, {
3420
+ start: startTime,
3421
+ end: endTime
3422
+ })) {
3423
+ var parsedInterval = parseISO8601IntervalToDateInterval(duration);
3424
+ return getTimeStepFromDataInterval(parsedInterval);
3425
+ }
3262
3426
  }
3427
+ } catch (err) {
3428
+ _iterator.e(err);
3429
+ } finally {
3430
+ _iterator.f();
3263
3431
  }
3264
3432
  return getTimeStepFromDataInterval(timeInterval);
3265
3433
  }, selectorMemoizationOptions);
3266
3434
  var getActiveLayerInfo = createSelector(layerStore, function (store) {
3267
- return store == null ? void 0 : store.activeLayerInfo;
3435
+ return store === null || store === void 0 ? void 0 : store.activeLayerInfo;
3268
3436
  });
3269
3437
 
3270
3438
  var selectors$6 = /*#__PURE__*/Object.freeze({
@@ -3382,7 +3550,7 @@ var getDialogOrder = createSelector(function (store, dialogType) {
3382
3550
  var order = store.ui.order;
3383
3551
  var visibleOrder = order.filter(function (orderedDialogType) {
3384
3552
  var _store$ui$dialogs$ord;
3385
- return (_store$ui$dialogs$ord = store.ui.dialogs[orderedDialogType]) == null ? void 0 : _store$ui$dialogs$ord.isOpen;
3553
+ return (_store$ui$dialogs$ord = store.ui.dialogs[orderedDialogType]) === null || _store$ui$dialogs$ord === void 0 ? void 0 : _store$ui$dialogs$ord.isOpen;
3386
3554
  });
3387
3555
  if (!visibleOrder.includes(dialogType)) {
3388
3556
  return 0;
@@ -3423,7 +3591,7 @@ var getDialogSource = createSelector(getDialogDetailsByType, function (details)
3423
3591
  * @returns {string} active window id
3424
3592
  */
3425
3593
  var getActiveWindowId = createSelector(getUiStore, function (store) {
3426
- return store == null ? void 0 : store.activeWindowId;
3594
+ return store === null || store === void 0 ? void 0 : store.activeWindowId;
3427
3595
  }, selectorMemoizationOptions);
3428
3596
  /**
3429
3597
  * Gets the panelId of which the dialog is opened from
@@ -3434,9 +3602,9 @@ var getActiveWindowId = createSelector(getUiStore, function (store) {
3434
3602
  */
3435
3603
  var getSourcePanelId = createSelector(function (store, dialogType) {
3436
3604
  var _store$ui;
3437
- return (_store$ui = store.ui) == null ? void 0 : _store$ui.dialogs[dialogType];
3605
+ return (_store$ui = store.ui) === null || _store$ui === void 0 ? void 0 : _store$ui.dialogs[dialogType];
3438
3606
  }, function (dialog) {
3439
- return (dialog == null ? void 0 : dialog.sourcePanelId) || '';
3607
+ return (dialog === null || dialog === void 0 ? void 0 : dialog.sourcePanelId) || '';
3440
3608
  }, selectorMemoizationOptions);
3441
3609
  /**
3442
3610
  * Gets if this is the active window
@@ -3448,7 +3616,7 @@ var getSourcePanelId = createSelector(function (store, dialogType) {
3448
3616
  var getIsActiveWindowId = createSelector(getUiStore, function (_store, viewId) {
3449
3617
  return viewId;
3450
3618
  }, function (store, viewId) {
3451
- return viewId === (store == null ? void 0 : store.activeWindowId);
3619
+ return viewId === (store === null || store === void 0 ? void 0 : store.activeWindowId);
3452
3620
  }, selectorMemoizationOptions);
3453
3621
  var getDialogIsLoading = createSelector(getDialogDetailsByType, function (details) {
3454
3622
  return details && details.isLoading || false;
@@ -3460,11 +3628,11 @@ var getUiDialogsByActiveMapId = function getUiDialogsByActiveMapId(store, mapId)
3460
3628
  if (store && store.ui && store.ui.order) {
3461
3629
  var foundDialogsIds = store.ui.order.filter(function (id) {
3462
3630
  var _store$ui2;
3463
- return ((_store$ui2 = store.ui) == null || (_store$ui2 = _store$ui2.dialogs[id]) == null ? void 0 : _store$ui2.activeMapId) === mapId;
3631
+ return ((_store$ui2 = store.ui) === null || _store$ui2 === void 0 || (_store$ui2 = _store$ui2.dialogs[id]) === null || _store$ui2 === void 0 ? void 0 : _store$ui2.activeMapId) === mapId;
3464
3632
  });
3465
3633
  var foundDialogs = foundDialogsIds.reduce(function (list, id) {
3466
3634
  var _store$ui3;
3467
- var dialog = (_store$ui3 = store.ui) == null ? void 0 : _store$ui3.dialogs[id];
3635
+ var dialog = (_store$ui3 = store.ui) === null || _store$ui3 === void 0 ? void 0 : _store$ui3.dialogs[id];
3468
3636
  if (dialog) {
3469
3637
  return list.concat(dialog);
3470
3638
  }
@@ -3517,6 +3685,7 @@ var DialogTypes;
3517
3685
  DialogTypes["TimeSeriesSelect"] = "timeSeriesSelect";
3518
3686
  DialogTypes["TimeSeriesManager"] = "timeSeriesManager";
3519
3687
  DialogTypes["TimeseriesInfo"] = "timeseriesInfo";
3688
+ DialogTypes["TimeseriesLocationInfo"] = "timeseriesLocationInfo";
3520
3689
  DialogTypes["KeywordFilter"] = "keywordFilter";
3521
3690
  DialogTypes["DimensionSelectEnsembleMember"] = "dimensionSelect-ensemble_member";
3522
3691
  DialogTypes["DimensionSelectElevation"] = "dimensionSelect-elevation";
@@ -3552,10 +3721,8 @@ var types$2 = /*#__PURE__*/Object.freeze({
3552
3721
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
3553
3722
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
3554
3723
  * */
3555
- var useSetupDialog = function useSetupDialog(dialogType, source) {
3556
- if (source === void 0) {
3557
- source = 'app';
3558
- }
3724
+ var useSetupDialog = function useSetupDialog(dialogType) {
3725
+ var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'app';
3559
3726
  var dispatch = useDispatch();
3560
3727
  var onCloseDialog = useCallback(function () {
3561
3728
  dispatch(uiActions.setToggleOpenDialog({
@@ -3690,23 +3857,6 @@ var removeInPlace = function removeInPlace(inDraftArray, condition) {
3690
3857
  inDraftArray.length = j;
3691
3858
  };
3692
3859
 
3693
- /* *
3694
- * Licensed under the Apache License, Version 2.0 (the "License");
3695
- * you may not use this file except in compliance with the License.
3696
- * You may obtain a copy of the License at
3697
- *
3698
- * http://www.apache.org/licenses/LICENSE-2.0
3699
- *
3700
- * Unless required by applicable law or agreed to in writing, software
3701
- * distributed under the License is distributed on an "AS IS" BASIS,
3702
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3703
- * See the License for the specific language governing permissions and
3704
- * limitations under the License.
3705
- *
3706
- * Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
3707
- * Copyright 2020 - Finnish Meteorological Institute (FMI)
3708
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
3709
- * */
3710
3860
  var initialState$2 = {
3711
3861
  sources: {
3712
3862
  byId: {},
@@ -3765,7 +3915,7 @@ var slice$3 = createSlice({
3765
3915
  var _action$payload2 = action.payload,
3766
3916
  panelId = _action$payload2.panelId,
3767
3917
  data = _action$payload2.data;
3768
- draft.linkedState.sharedData[panelId] = Object.assign({}, draft.linkedState.sharedData[panelId], data);
3918
+ draft.linkedState.sharedData[panelId] = _objectSpread2(_objectSpread2({}, draft.linkedState.sharedData[panelId]), data);
3769
3919
  },
3770
3920
  deleteSharedData: function deleteSharedData(draft, action) {
3771
3921
  var panelId = action.payload.panelId;
@@ -3816,7 +3966,7 @@ var slice$3 = createSlice({
3816
3966
  linked = _action$payload4.linked;
3817
3967
  var synchronizationGroup = draft.groups.byId[groupId];
3818
3968
  if (!synchronizationGroup) {
3819
- console.warn("SYNCGROUPS_ADD_TARGET: Group " + groupId + " does not exist.");
3969
+ console.warn("SYNCGROUPS_ADD_TARGET: Group ".concat(groupId, " does not exist."));
3820
3970
  return;
3821
3971
  }
3822
3972
  if (!targetId) {
@@ -3826,7 +3976,7 @@ var slice$3 = createSlice({
3826
3976
  if (synchronizationGroup.targets.allIds.includes(targetId)) {
3827
3977
  return;
3828
3978
  }
3829
- var isSourceLinked = (_synchronizationGroup = synchronizationGroup.targets.byId[targetId]) == null ? void 0 : _synchronizationGroup.linked;
3979
+ var isSourceLinked = (_synchronizationGroup = synchronizationGroup.targets.byId[targetId]) === null || _synchronizationGroup === void 0 ? void 0 : _synchronizationGroup.linked;
3830
3980
  synchronizationGroup.targets.allIds.push(targetId);
3831
3981
  synchronizationGroup.targets.byId[targetId] = {
3832
3982
  linked: linked !== false
@@ -3956,10 +4106,10 @@ var setBboxOrTimeSync = function setBboxOrTimeSync(draft, action) {
3956
4106
  });
3957
4107
  }
3958
4108
  };
3959
- var _slice$actions = slice$3.actions;
3960
- _slice$actions.syncGroupAddGroup;
4109
+ var _slice$actions = slice$3.actions,
4110
+ syncGroupAddGroup = _slice$actions.syncGroupAddGroup;
3961
4111
  _slice$actions.syncGroupAddSource;
3962
- _slice$actions.syncGroupAddTarget;
4112
+ var syncGroupAddTarget = _slice$actions.syncGroupAddTarget;
3963
4113
  _slice$actions.syncGroupClear;
3964
4114
  _slice$actions.syncGroupLinkTarget;
3965
4115
  _slice$actions.syncGroupRemoveGroup;
@@ -3969,23 +4119,6 @@ var _slice$actions = slice$3.actions;
3969
4119
  var syncGroupsReducer = slice$3.reducer,
3970
4120
  syncGroupsActions = slice$3.actions;
3971
4121
 
3972
- /* *
3973
- * Licensed under the Apache License, Version 2.0 (the "License");
3974
- * you may not use this file except in compliance with the License.
3975
- * You may obtain a copy of the License at
3976
- *
3977
- * http://www.apache.org/licenses/LICENSE-2.0
3978
- *
3979
- * Unless required by applicable law or agreed to in writing, software
3980
- * distributed under the License is distributed on an "AS IS" BASIS,
3981
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3982
- * See the License for the specific language governing permissions and
3983
- * limitations under the License.
3984
- *
3985
- * Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
3986
- * Copyright 2020 - Finnish Meteorological Institute (FMI)
3987
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
3988
- * */
3989
4122
  var syncGroupStore = function syncGroupStore(store) {
3990
4123
  return store.syncGroups || null;
3991
4124
  };
@@ -4025,7 +4158,7 @@ var getTargets = createSelector([syncGroupStore, function (syncGroupStore, paylo
4025
4158
  /* Remember that we have already added this target in the action payloads, prevents adding it twice */
4026
4159
  targetsInActionPayload[targetId] = true;
4027
4160
  /* Compose the payload */
4028
- var newPayload = Object.assign({
4161
+ var newPayload = _objectSpread2({
4029
4162
  targetId: targetId
4030
4163
  }, payload);
4031
4164
  actionPayloads.push(newPayload);
@@ -4045,7 +4178,7 @@ var getTargets = createSelector([syncGroupStore, function (syncGroupStore, paylo
4045
4178
  /* Remember that we have already added this target in the action payloads, prevents adding it twice */
4046
4179
  targetsInActionPayload[targetId] = true;
4047
4180
  /* Compose the payload */
4048
- var newPayload = Object.assign({
4181
+ var newPayload = _objectSpread2({
4049
4182
  targetId: targetId
4050
4183
  }, payload);
4051
4184
  actionPayloads.push(newPayload);
@@ -4082,7 +4215,7 @@ var getSourceId = createSelector([syncGroupStore, function (syncGroupStore, sour
4082
4215
  return typeof sourceId === 'string' ? sourceId : sourceId.sourceId;
4083
4216
  }, selectorMemoizationOptions);
4084
4217
  var getAllTargetGroupsForSource = createSelector([syncGroupStore, getSourceId], function (syncGroupStore, sourceId) {
4085
- if (syncGroupStore != null && syncGroupStore.groups) {
4218
+ if (syncGroupStore !== null && syncGroupStore !== void 0 && syncGroupStore.groups) {
4086
4219
  return syncGroupStore.groups.allIds.reduce(function (linkedSyncGroupIds, groupId) {
4087
4220
  var syncronizationGroup = syncGroupStore.groups.byId[groupId];
4088
4221
  var source = syncronizationGroup.targets.byId[sourceId];
@@ -4103,7 +4236,7 @@ var isTimeScrollingEnabled = createSelector(syncGroupStore, function (store) {
4103
4236
  }, selectorMemoizationOptions);
4104
4237
  var getSyncedMapIdsForTimeslider = createSelector(syncGroupStore, function (store) {
4105
4238
  var _store$viewState$time, _store$viewState$time2;
4106
- return (_store$viewState$time = (_store$viewState$time2 = store.viewState.timeslider.groups[0]) == null ? void 0 : _store$viewState$time2.selected) != null ? _store$viewState$time : [];
4239
+ return (_store$viewState$time = (_store$viewState$time2 = store.viewState.timeslider.groups[0]) === null || _store$viewState$time2 === void 0 ? void 0 : _store$viewState$time2.selected) !== null && _store$viewState$time !== void 0 ? _store$viewState$time : [];
4107
4240
  }, selectorMemoizationOptions);
4108
4241
  var getSyncGroupTargets = createSelector(syncGroupStore, function (store) {
4109
4242
  if (!store || !store.groups) {
@@ -4194,7 +4327,7 @@ var createSyncGroupViewState = function createSyncGroupViewState(groups, sources
4194
4327
  var _groupTypes$find;
4195
4328
  var groupType = (_groupTypes$find = groupTypes.find(function (object) {
4196
4329
  return object.syncType === groups.byId[id].type;
4197
- })) == null ? void 0 : _groupTypes$find.groupType;
4330
+ })) === null || _groupTypes$find === void 0 ? void 0 : _groupTypes$find.groupType;
4198
4331
  if (groupType) {
4199
4332
  draft[groupType].groups.push({
4200
4333
  id: id,
@@ -4395,7 +4528,7 @@ var getTime = createSelector(getSyncSourceBySourceId, function (store) {
4395
4528
  return store && store.payloadByType && store.payloadByType[SYNCGROUPS_TYPE_SETTIME] ? store.payloadByType[SYNCGROUPS_TYPE_SETTIME].value : null;
4396
4529
  }, selectorMemoizationOptions);
4397
4530
  var selectLinkedState = createSelector(synchronizationGroupStore, function (syncState) {
4398
- return (syncState == null ? void 0 : syncState.linkedState) || {
4531
+ return (syncState === null || syncState === void 0 ? void 0 : syncState.linkedState) || {
4399
4532
  links: {},
4400
4533
  sharedData: {}
4401
4534
  };
@@ -4406,11 +4539,11 @@ var getLinkedMaps = createSelector([selectLinkedState, function (store, panelId)
4406
4539
  return linkedState.links[panelId] || [];
4407
4540
  }, selectorMemoizationOptions);
4408
4541
  var getLinkedFeatureProviders = function getLinkedFeatureProviders(linkedState, mapId) {
4409
- return Object.keys(linkedState.links).filter(function (panelId) {
4542
+ return linkedState ? Object.keys(linkedState.links).filter(function (panelId) {
4410
4543
  return linkedState.links[panelId].find(function (id) {
4411
4544
  return id === mapId;
4412
4545
  });
4413
- });
4546
+ }) : [];
4414
4547
  };
4415
4548
  var selectSharedData = createSelector([selectLinkedState, function (store, panelId) {
4416
4549
  return panelId;
@@ -4427,7 +4560,7 @@ var selectLinkedPanelId = createSelector([selectLinkedState, function (_, mapVie
4427
4560
  // Find the panelId where mapView(s) is linked
4428
4561
  var panelId = Object.keys(linkedState.links).find(function (panelId) {
4429
4562
  var _linkedState$links$pa;
4430
- return (_linkedState$links$pa = linkedState.links[panelId]) == null ? void 0 : _linkedState$links$pa.includes(mapViewId);
4563
+ return (_linkedState$links$pa = linkedState.links[panelId]) === null || _linkedState$links$pa === void 0 ? void 0 : _linkedState$links$pa.includes(mapViewId);
4431
4564
  });
4432
4565
  return panelId;
4433
4566
  });
@@ -4444,7 +4577,7 @@ var selectLinkedFeatures = createSelector([function (linkedState) {
4444
4577
  }, getLinkedFeatureProviders], function (linkedState, featureProviders) {
4445
4578
  var features = featureProviders.flatMap(function (providerId) {
4446
4579
  var _linkedState$sharedDa;
4447
- return ((_linkedState$sharedDa = linkedState.sharedData[providerId]) == null ? void 0 : _linkedState$sharedDa.features) || [];
4580
+ return ((_linkedState$sharedDa = linkedState.sharedData[providerId]) === null || _linkedState$sharedDa === void 0 ? void 0 : _linkedState$sharedDa.features) || [];
4448
4581
  }).filter(function (f) {
4449
4582
  return f !== undefined;
4450
4583
  });
@@ -4455,7 +4588,7 @@ var selectLinkedFormFeatures = createSelector([function (linkedState) {
4455
4588
  }, getLinkedFeatureProviders], function (linkedState, featureProviders) {
4456
4589
  var features = featureProviders.flatMap(function (providerId) {
4457
4590
  var _linkedState$sharedDa2;
4458
- return ((_linkedState$sharedDa2 = linkedState.sharedData[providerId]) == null ? void 0 : _linkedState$sharedDa2.formFeatures) || [];
4591
+ return ((_linkedState$sharedDa2 = linkedState.sharedData[providerId]) === null || _linkedState$sharedDa2 === void 0 ? void 0 : _linkedState$sharedDa2.formFeatures) || [];
4459
4592
  }).filter(function (f) {
4460
4593
  return f !== undefined;
4461
4594
  });
@@ -4465,7 +4598,7 @@ var getSelectedFeature = createSelector([
4465
4598
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
4466
4599
  function (state, mapId) {
4467
4600
  var _state$linkedState;
4468
- var sharedData = (_state$linkedState = state.linkedState) == null ? void 0 : _state$linkedState.sharedData[mapId];
4601
+ var sharedData = (_state$linkedState = state.linkedState) === null || _state$linkedState === void 0 ? void 0 : _state$linkedState.sharedData[mapId];
4469
4602
  var _ref = sharedData || {},
4470
4603
  _ref$features = _ref.features,
4471
4604
  features = _ref$features === void 0 ? [] : _ref$features,
@@ -4478,41 +4611,63 @@ function (state, mapId) {
4478
4611
  var _features$;
4479
4612
  var features = _ref2.features,
4480
4613
  selectedFeatureId = _ref2.selectedFeatureId;
4481
- var selectedFeature = (_features$ = features[0]) == null ? void 0 : _features$.geoJSON.features.find(function (feature) {
4614
+ var selectedFeature = (_features$ = features[0]) === null || _features$ === void 0 ? void 0 : _features$.geoJSON.features.find(function (feature) {
4482
4615
  return feature.id === selectedFeatureId;
4483
4616
  });
4484
4617
  if (selectedFeature && selectedFeature.geometry.type === 'Point') {
4485
- var _selectedFeature$prop, _selectedFeature$prop2, _selectedFeature$prop3;
4618
+ var _selectedFeature$prop, _selectedFeature$prop2;
4486
4619
  var coordinates = selectedFeature.geometry.coordinates;
4487
4620
  return {
4488
4621
  lat: coordinates[1],
4489
4622
  lon: coordinates[0],
4490
4623
  id: selectedFeature.id,
4491
- serviceId: (_selectedFeature$prop = selectedFeature.properties) == null ? void 0 : _selectedFeature$prop.serviceId,
4492
- collectionId: (_selectedFeature$prop2 = selectedFeature.properties) == null ? void 0 : _selectedFeature$prop2.collectionId,
4493
- name: (_selectedFeature$prop3 = selectedFeature.properties) == null ? void 0 : _selectedFeature$prop3.name
4624
+ name: (_selectedFeature$prop = selectedFeature.properties) === null || _selectedFeature$prop === void 0 ? void 0 : _selectedFeature$prop.name,
4625
+ occurrences: (_selectedFeature$prop2 = selectedFeature.properties) === null || _selectedFeature$prop2 === void 0 ? void 0 : _selectedFeature$prop2.occurrences
4494
4626
  };
4495
4627
  }
4496
4628
  if (selectedFeature) {
4497
- var _selectedFeature$prop4, _selectedFeature$prop5, _selectedFeature$prop6;
4629
+ var _selectedFeature$prop3, _selectedFeature$prop4;
4498
4630
  var center = turf.center(selectedFeature);
4499
4631
  return {
4500
4632
  lat: center.geometry.coordinates[1],
4501
4633
  lon: center.geometry.coordinates[0],
4502
4634
  id: selectedFeature.id,
4503
- serviceId: (_selectedFeature$prop4 = selectedFeature.properties) == null ? void 0 : _selectedFeature$prop4.serviceId,
4504
- collectionId: (_selectedFeature$prop5 = selectedFeature.properties) == null ? void 0 : _selectedFeature$prop5.collectionId,
4505
- name: (_selectedFeature$prop6 = selectedFeature.properties) == null ? void 0 : _selectedFeature$prop6.name
4635
+ name: (_selectedFeature$prop3 = selectedFeature.properties) === null || _selectedFeature$prop3 === void 0 ? void 0 : _selectedFeature$prop3.name,
4636
+ occurrences: (_selectedFeature$prop4 = selectedFeature.properties) === null || _selectedFeature$prop4 === void 0 ? void 0 : _selectedFeature$prop4.occurrences
4506
4637
  };
4507
4638
  }
4508
4639
  return null;
4509
4640
  });
4641
+ var getSelectedFeatureAsGeoJSON = createSelector([function (state, mapId) {
4642
+ var _state$linkedState2;
4643
+ var sharedData = (_state$linkedState2 = state.linkedState) === null || _state$linkedState2 === void 0 ? void 0 : _state$linkedState2.sharedData[mapId];
4644
+ var _ref3 = sharedData || {},
4645
+ _ref3$features = _ref3.features,
4646
+ features = _ref3$features === void 0 ? [] : _ref3$features,
4647
+ selectedFeatureId = _ref3.selectedFeatureId;
4648
+ return {
4649
+ features: features,
4650
+ selectedFeatureId: selectedFeatureId
4651
+ };
4652
+ }], function (_ref4) {
4653
+ var features = _ref4.features,
4654
+ selectedFeatureId = _ref4.selectedFeatureId;
4655
+ if (features && selectedFeatureId) {
4656
+ var _features$2;
4657
+ var selectedFeature = (_features$2 = features[0]) === null || _features$2 === void 0 ? void 0 : _features$2.geoJSON.features.find(function (feature) {
4658
+ return feature.id === selectedFeatureId;
4659
+ });
4660
+ return selectedFeature;
4661
+ }
4662
+ return null;
4663
+ });
4510
4664
 
4511
4665
  var selectors$3 = /*#__PURE__*/Object.freeze({
4512
4666
  __proto__: null,
4513
4667
  getLinkedFeatureProviders: getLinkedFeatureProviders,
4514
4668
  getLinkedMaps: getLinkedMaps,
4515
4669
  getSelectedFeature: getSelectedFeature,
4670
+ getSelectedFeatureAsGeoJSON: getSelectedFeatureAsGeoJSON,
4516
4671
  getSynchronizationGroupStore: getSynchronizationGroupStore,
4517
4672
  getTime: getTime,
4518
4673
  selectLinkedFeatures: selectLinkedFeatures,
@@ -4522,23 +4677,6 @@ var selectors$3 = /*#__PURE__*/Object.freeze({
4522
4677
  selectSharedData: selectSharedData
4523
4678
  });
4524
4679
 
4525
- /* *
4526
- * Licensed under the Apache License, Version 2.0 (the "License");
4527
- * you may not use this file except in compliance with the License.
4528
- * You may obtain a copy of the License at
4529
- *
4530
- * http://www.apache.org/licenses/LICENSE-2.0
4531
- *
4532
- * Unless required by applicable law or agreed to in writing, software
4533
- * distributed under the License is distributed on an "AS IS" BASIS,
4534
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4535
- * See the License for the specific language governing permissions and
4536
- * limitations under the License.
4537
- *
4538
- * Copyright 2024 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4539
- * Copyright 2024 - Finnish Meteorological Institute (FMI)
4540
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
4541
- * */
4542
4680
  var useUpdateSharedData = function useUpdateSharedData(data, panelId) {
4543
4681
  var sharedData = useSelector(function (state) {
4544
4682
  return selectSharedData(state, panelId);
@@ -4548,8 +4686,8 @@ var useUpdateSharedData = function useUpdateSharedData(data, panelId) {
4548
4686
  });
4549
4687
  var dispatch = useDispatch();
4550
4688
  useEffect(function () {
4551
- var diff = Object.assign({}, sharedData, data);
4552
- if (panelId && (linkedMaps == null ? void 0 : linkedMaps.length) > 0 && !isEqual(diff, sharedData)) {
4689
+ var diff = _objectSpread2(_objectSpread2({}, sharedData), data);
4690
+ if (panelId && (linkedMaps === null || linkedMaps === void 0 ? void 0 : linkedMaps.length) > 0 && !isEqual(diff, sharedData)) {
4553
4691
  dispatch(syncGroupsActions.addSharedData({
4554
4692
  panelId: panelId,
4555
4693
  data: data
@@ -4668,7 +4806,7 @@ var slice$2 = createSlice({
4668
4806
  // When one EDR is loading with a known id (panelId), do not set the any ANY_EDR_SERVICE as the panelId is known.
4669
4807
  if (isEDRLoading && id === ANY_EDR_SERVICE && draft.ids.some(function (id) {
4670
4808
  var _draft$entities$id;
4671
- return (_draft$entities$id = draft.entities[id]) == null ? void 0 : _draft$entities$id.isEDRLoading;
4809
+ return (_draft$entities$id = draft.entities[id]) === null || _draft$entities$id === void 0 ? void 0 : _draft$entities$id.isEDRLoading;
4672
4810
  })) {
4673
4811
  draft.entities[id].isEDRLoading = false;
4674
4812
  } else {
@@ -4699,20 +4837,20 @@ var loadingIndicatorActions = slice$2.actions,
4699
4837
  * */
4700
4838
  var _loadingIndicatorAdap = loadingIndicatorAdapter.getSelectors(function (state) {
4701
4839
  var _state$loadingIndicat;
4702
- return (_state$loadingIndicat = state == null ? void 0 : state.loadingIndicator) != null ? _state$loadingIndicat : {
4840
+ return (_state$loadingIndicat = state === null || state === void 0 ? void 0 : state.loadingIndicator) !== null && _state$loadingIndicat !== void 0 ? _state$loadingIndicat : {
4703
4841
  entities: {},
4704
4842
  ids: []
4705
4843
  };
4706
4844
  }),
4707
4845
  selectLoadingIndicatorById = _loadingIndicatorAdap.selectById;
4708
4846
  var isGetMapLoading = createSelector(selectLoadingIndicatorById, function (loadingIndicator) {
4709
- return (loadingIndicator == null ? void 0 : loadingIndicator.isGetMapLoading) || false;
4847
+ return (loadingIndicator === null || loadingIndicator === void 0 ? void 0 : loadingIndicator.isGetMapLoading) || false;
4710
4848
  }, selectorMemoizationOptions);
4711
4849
  var isGetCapabilitiesLoading = createSelector(selectLoadingIndicatorById, function (loadingIndicator) {
4712
- return (loadingIndicator == null ? void 0 : loadingIndicator.isGetCapabilitiesLoading) || false;
4850
+ return (loadingIndicator === null || loadingIndicator === void 0 ? void 0 : loadingIndicator.isGetCapabilitiesLoading) || false;
4713
4851
  }, selectorMemoizationOptions);
4714
4852
  var isAnyEdrTypeLoading = function isAnyEdrTypeLoading(loadingIndicator) {
4715
- return (loadingIndicator == null ? void 0 : loadingIndicator.isEDRLoading) || false;
4853
+ return (loadingIndicator === null || loadingIndicator === void 0 ? void 0 : loadingIndicator.isEDRLoading) || false;
4716
4854
  };
4717
4855
  var isEDRLoading = createSelector(selectLoadingIndicatorById, isAnyEdrTypeLoading, selectorMemoizationOptions);
4718
4856
  var isAnyEDRLoading = createSelector([function (store) {
@@ -4731,24 +4869,7 @@ var selectors$2 = /*#__PURE__*/Object.freeze({
4731
4869
  selectLoadingIndicatorById: selectLoadingIndicatorById
4732
4870
  });
4733
4871
 
4734
- /* *
4735
- * Licensed under the Apache License, Version 2.0 (the "License");
4736
- * you may not use this file except in compliance with the License.
4737
- * You may obtain a copy of the License at
4738
- *
4739
- * http://www.apache.org/licenses/LICENSE-2.0
4740
- *
4741
- * Unless required by applicable law or agreed to in writing, software
4742
- * distributed under the License is distributed on an "AS IS" BASIS,
4743
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4744
- * See the License for the specific language governing permissions and
4745
- * limitations under the License.
4746
- *
4747
- * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4748
- * Copyright 2022 - Finnish Meteorological Institute (FMI)
4749
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
4750
- * */
4751
- var genericActions = Object.assign({}, syncGroupsActions, {
4872
+ var genericActions = _objectSpread2(_objectSpread2({}, syncGroupsActions), {}, {
4752
4873
  initialSyncState: initialState$2,
4753
4874
  setTime: setTime,
4754
4875
  setBbox: setBbox
@@ -4824,7 +4945,7 @@ var getIsMapPresent = createSelector(getMapById, function (map) {
4824
4945
  */
4825
4946
  var getLayerIds = createSelector(getMapById, function (map) {
4826
4947
  var _map$mapLayers;
4827
- return (_map$mapLayers = map == null ? void 0 : map.mapLayers) != null ? _map$mapLayers : [];
4948
+ return (_map$mapLayers = map === null || map === void 0 ? void 0 : map.mapLayers) !== null && _map$mapLayers !== void 0 ? _map$mapLayers : [];
4828
4949
  }, selectorMemoizationOptions);
4829
4950
  /**
4830
4951
  * Gets all layer states for a map
@@ -4836,7 +4957,7 @@ var getLayerIds = createSelector(getMapById, function (map) {
4836
4957
  */
4837
4958
  var getMapLayers = createSelector(getLayerIds, getLayersById, function (layerIdsInMap, allLayers) {
4838
4959
  var layersWithUndefined = layerIdsInMap.map(function (layerId) {
4839
- return allLayers == null ? void 0 : allLayers[layerId];
4960
+ return allLayers === null || allLayers === void 0 ? void 0 : allLayers[layerId];
4840
4961
  });
4841
4962
  var layersWithoutUndefined = compact(layersWithUndefined);
4842
4963
  return layersWithoutUndefined;
@@ -4853,7 +4974,7 @@ var getMapLayers = createSelector(getLayerIds, getLayersById, function (layerIds
4853
4974
  */
4854
4975
  var getMapLayersWithoutDimensionCurrentValue = createSelector(getLayerIds, getLayersById, function (layerIdsInMap, allLayers) {
4855
4976
  var layersWithUndefined = layerIdsInMap.map(function (layerId) {
4856
- return allLayers == null ? void 0 : allLayers[layerId];
4977
+ return allLayers === null || allLayers === void 0 ? void 0 : allLayers[layerId];
4857
4978
  });
4858
4979
  var layersWithoutUndefined = compact(layersWithUndefined);
4859
4980
  var layersWithoutTimeDim = layersWithoutUndefined.map(function (layer) {
@@ -4900,7 +5021,7 @@ var getMapOverLayersIds = createSelector(getMapById, function (store) {
4900
5021
  return store ? store.overLayers : [];
4901
5022
  }, selectorMemoizationOptions);
4902
5023
  var getMapFeatureLayers = createSelector(getMapById, getFeatureLayers, function (store, featureLayers) {
4903
- var featureLayersOnMap = (store == null ? void 0 : store.featureLayers) || [];
5024
+ var featureLayersOnMap = (store === null || store === void 0 ? void 0 : store.featureLayers) || [];
4904
5025
  return featureLayers.filter(function (layer) {
4905
5026
  return featureLayersOnMap.indexOf(layer.id) !== -1;
4906
5027
  });
@@ -4916,6 +5037,8 @@ var getMapFeatureLayers = createSelector(getMapById, getFeatureLayers, function
4916
5037
  var getMapOverLayers = createSelector(getMapOverLayersIds, getLayersById, function (layerIds, layers) {
4917
5038
  return layerIds.map(function (layerId) {
4918
5039
  return layers[layerId];
5040
+ }).filter(function (layer) {
5041
+ return layer === null || layer === void 0 ? void 0 : layer.name;
4919
5042
  });
4920
5043
  }, selectorMemoizationOptions);
4921
5044
  /**
@@ -4973,12 +5096,13 @@ var getSelectedTime = createSelector(function (store, mapId) {
4973
5096
  var getDataLimitsFromLayers = createSelector(getMapLayers, function (layers) {
4974
5097
  return layers.reduce(function (_ref, layer) {
4975
5098
  var _layer$dimensions;
4976
- var start = _ref[0],
4977
- end = _ref[1];
4978
- var dimension = (_layer$dimensions = layer.dimensions) == null ? void 0 : _layer$dimensions.find(function (dimension) {
5099
+ var _ref2 = _slicedToArray(_ref, 2),
5100
+ start = _ref2[0],
5101
+ end = _ref2[1];
5102
+ var dimension = (_layer$dimensions = layer.dimensions) === null || _layer$dimensions === void 0 ? void 0 : _layer$dimensions.find(function (dimension) {
4979
5103
  return dimension.name === 'time';
4980
5104
  });
4981
- if (dimension != null && dimension.minValue && dimension.maxValue) {
5105
+ if (dimension !== null && dimension !== void 0 && dimension.minValue && dimension.maxValue) {
4982
5106
  var lastValue = dateUtils.unix(new Date(dimension.maxValue));
4983
5107
  var firstValue = dateUtils.unix(new Date(dimension.minValue));
4984
5108
  var newLast = Math.max(lastValue, end);
@@ -5035,11 +5159,12 @@ var isAnimating = createSelector(getMapById, function (store) {
5035
5159
  * @returns {object} returnType: object - object containing isAnimating boolean and id string
5036
5160
  */
5037
5161
  var linkedMapAnimationInfo = createSelector(function (store, mapId) {
5162
+ var _genericSelectors$get;
5038
5163
  var animationInfo = {
5039
5164
  isAnimating: isAnimating(store, mapId),
5040
5165
  id: mapId
5041
5166
  };
5042
- getSynchronizationGroupStore(store).groups.allIds.forEach(function (groupId) {
5167
+ (_genericSelectors$get = getSynchronizationGroupStore(store)) === null || _genericSelectors$get === void 0 || _genericSelectors$get.groups.allIds.forEach(function (groupId) {
5043
5168
  if (getSynchronizationGroupStore(store).groups.byId[groupId].targets.byId[animationInfo.id] && getSynchronizationGroupStore(store).groups.byId[groupId].targets.byId[animationInfo.id].linked) {
5044
5169
  getSynchronizationGroupStore(store).groups.byId[groupId].targets.allIds.forEach(function (id) {
5045
5170
  if (isAnimating(store, id) === true) {
@@ -5062,7 +5187,7 @@ var linkedMapAnimationInfo = createSelector(function (store, mapId) {
5062
5187
  * @returns {string} returnType: string
5063
5188
  */
5064
5189
  var getAnimationStartTime = createSelector(getMapById, function (store) {
5065
- return store != null && store.animationStartTime ? store.animationStartTime : dateUtils.dateToString(dateUtils.sub(dateUtils.utc(), {
5190
+ return store !== null && store !== void 0 && store.animationStartTime ? store.animationStartTime : dateUtils.dateToString(dateUtils.sub(dateUtils.utc(), {
5066
5191
  hours: 6
5067
5192
  }), dateFormat);
5068
5193
  }, selectorMemoizationOptions);
@@ -5075,7 +5200,7 @@ var getAnimationStartTime = createSelector(getMapById, function (store) {
5075
5200
  * @returns {string} returnType: string
5076
5201
  */
5077
5202
  var getAnimationEndTime = createSelector(getMapById, function (store) {
5078
- return store != null && store.animationEndTime ? store.animationEndTime : dateUtils.dateToString(dateUtils.sub(dateUtils.utc(), {
5203
+ return store !== null && store !== void 0 && store.animationEndTime ? store.animationEndTime : dateUtils.dateToString(dateUtils.sub(dateUtils.utc(), {
5079
5204
  minutes: 10
5080
5205
  }), dateFormat);
5081
5206
  }, selectorMemoizationOptions);
@@ -5109,7 +5234,7 @@ var shouldEndtimeOverride = createSelector(getMapById, function (store) {
5109
5234
  * @param {string} mapId mapId: string - Id of the map
5110
5235
  */
5111
5236
  var getActiveLayerId = createSelector(getMapById, function (store) {
5112
- if (store != null && store.autoUpdateLayerId && store.autoUpdateLayerId === store.autoTimeStepLayerId) {
5237
+ if (store !== null && store !== void 0 && store.autoUpdateLayerId && store.autoUpdateLayerId === store.autoTimeStepLayerId) {
5113
5238
  return store.autoUpdateLayerId;
5114
5239
  }
5115
5240
  return undefined;
@@ -5122,7 +5247,7 @@ var getActiveLayerId = createSelector(getMapById, function (store) {
5122
5247
  * @param {string} mapId mapId: string - Id of the map
5123
5248
  */
5124
5249
  var getAutoUpdateLayerId = createSelector(getMapById, function (store) {
5125
- return store == null ? void 0 : store.autoUpdateLayerId;
5250
+ return store === null || store === void 0 ? void 0 : store.autoUpdateLayerId;
5126
5251
  }, selectorMemoizationOptions);
5127
5252
  /**
5128
5253
  * Gets autoUpdateLayerId for map
@@ -5132,7 +5257,7 @@ var getAutoUpdateLayerId = createSelector(getMapById, function (store) {
5132
5257
  * @param {string} mapId mapId: string - Id of the map
5133
5258
  */
5134
5259
  var getAutoTimeStepLayerId = createSelector(getMapById, function (store) {
5135
- return store == null ? void 0 : store.autoTimeStepLayerId;
5260
+ return store === null || store === void 0 ? void 0 : store.autoTimeStepLayerId;
5136
5261
  }, selectorMemoizationOptions);
5137
5262
  /**
5138
5263
  * Gets span of a time slider of a map
@@ -5155,10 +5280,10 @@ var getMapTimeSliderSpan = createSelector(getMapById, function (store) {
5155
5280
  */
5156
5281
  var getMapTimeStep = createSelector(getMapById, function (store) {
5157
5282
  var _store$timeStep;
5158
- return (_store$timeStep = store == null ? void 0 : store.timeStep) != null ? _store$timeStep : defaultTimeStep;
5283
+ return (_store$timeStep = store === null || store === void 0 ? void 0 : store.timeStep) !== null && _store$timeStep !== void 0 ? _store$timeStep : defaultTimeStep;
5159
5284
  }, selectorMemoizationOptions);
5160
5285
  var getMapTimeStepWithoutDefault = createSelector(getMapById, function (store) {
5161
- return store == null ? void 0 : store.timeStep;
5286
+ return store === null || store === void 0 ? void 0 : store.timeStep;
5162
5287
  }, selectorMemoizationOptions);
5163
5288
  /**
5164
5289
  * Returns the speed of animation
@@ -5193,6 +5318,20 @@ var getMapTimeSliderWidth = createSelector(getMapById, function (store) {
5193
5318
  var getMapTimeSliderCenterTime = createSelector(getMapById, function (store) {
5194
5319
  return store ? store.timeSliderCenterTime : dateUtils.unix(dateUtils.utc());
5195
5320
  }, selectorMemoizationOptions);
5321
+ var getMapTimeSliderStartCenterEndAndStep = createSelector(getMapById, function (store) {
5322
+ var _store$timeStep2;
5323
+ var timeSliderWidth = ((store === null || store === void 0 ? void 0 : store.timeSliderWidth) || 0) * 60;
5324
+ var center = store ? store.timeSliderCenterTime : dateUtils.unix(dateUtils.utc());
5325
+ var start = center ? center - timeSliderWidth / 2 : undefined;
5326
+ var end = center ? center + timeSliderWidth / 2 : undefined;
5327
+ var step = (_store$timeStep2 = store === null || store === void 0 ? void 0 : store.timeStep) !== null && _store$timeStep2 !== void 0 ? _store$timeStep2 : defaultTimeStep;
5328
+ return {
5329
+ start: start,
5330
+ center: center,
5331
+ end: end,
5332
+ step: step
5333
+ };
5334
+ }, selectorMemoizationOptions);
5196
5335
  /**
5197
5336
  * Returns the number of seconds per pixel on the time slider
5198
5337
  *
@@ -5222,7 +5361,7 @@ var isTimestepAuto = createSelector(getMapById, function (store) {
5222
5361
  * @returns {boolean} returnType: boolean
5223
5362
  */
5224
5363
  var isAnimationLengthAuto = createSelector(getMapById, function (store) {
5225
- return (store == null ? void 0 : store.isAnimationLengthAuto) || false;
5364
+ return (store === null || store === void 0 ? void 0 : store.isAnimationLengthAuto) || false;
5226
5365
  }, selectorMemoizationOptions);
5227
5366
  /**
5228
5367
  * Returns map is timespan auto
@@ -5291,7 +5430,7 @@ var getIsLayerActiveLayer = createSelector(getActiveLayerId, function (_store, _
5291
5430
  * @returns {string} returnType: string - the mapId, or null if not found
5292
5431
  */
5293
5432
  var getMapIdFromLayerId = createSelector(function (store) {
5294
- return store == null ? void 0 : store.webmap;
5433
+ return store === null || store === void 0 ? void 0 : store.webmap;
5295
5434
  }, function (_store, layerId) {
5296
5435
  return layerId;
5297
5436
  }, findMapIdFromLayerId, selectorMemoizationOptions);
@@ -5378,7 +5517,7 @@ var getAllUniqueDimensions = createSelector(getAllMapIds, function (store) {
5378
5517
  * @returns {object} returnType: latitude and longitude of pin
5379
5518
  */
5380
5519
  var getPinLocation = createSelector(getMapById, function (store) {
5381
- return store == null ? void 0 : store.mapPinLocation;
5520
+ return store === null || store === void 0 ? void 0 : store.mapPinLocation;
5382
5521
  }, selectorMemoizationOptions);
5383
5522
  /**
5384
5523
  * Returns the disable map pin boolean for the current map
@@ -5389,7 +5528,7 @@ var getPinLocation = createSelector(getMapById, function (store) {
5389
5528
  * @returns {boolean} returnType: boolean
5390
5529
  */
5391
5530
  var getDisableMapPin = createSelector([getMapById], function (map) {
5392
- return map == null ? void 0 : map.disableMapPin;
5531
+ return map === null || map === void 0 ? void 0 : map.disableMapPin;
5393
5532
  }, selectorMemoizationOptions);
5394
5533
  /**
5395
5534
  * Returns the display map pin boolean for the current map
@@ -5423,15 +5562,15 @@ var getLegendId = createSelector(getMapById, function (store) {
5423
5562
  */
5424
5563
  var getMapPreset = createSelector(getMapLayers, getMapBaseLayers, getMapOverLayers, getBbox, getSrs, getActiveLayerId, getAutoTimeStepLayerId, getAutoUpdateLayerId, isAnimating, isAutoUpdating, isTimeSliderVisible, getDisplayMapPin, isZoomControlsVisible, getMapTimeStep, getMapAnimationDelay, getAnimationStartTime, getAnimationEndTime, getMapTimeSliderSpan, isTimestepAuto, isTimeSpanAuto, getLegendId, getUiStore, function (mapLayers, baseLayers, overLayers, bbox, srs, activeLayerId, autoUpdateLayerId, autoTimeStepLayerId, isAnimating, isAutoUpdating, isTimeSliderVisible, displayMapPin, isZoomControlsVisible, mapTimeStep, mapAnimationDelay, animationStartTime, animationEndTime, timeSliderSpan, isTimestepAuto, isTimeSpanAuto, legendId, uiStore) {
5425
5564
  var _uiStore$dialogs$lege;
5426
- var allLayers = [].concat(baseLayers, overLayers, mapLayers).map(function (_ref2) {
5427
- _ref2.mapId;
5428
- var layer = _objectWithoutPropertiesLoose(_ref2, _excluded$2);
5565
+ var allLayers = [].concat(_toConsumableArray(baseLayers), _toConsumableArray(overLayers), _toConsumableArray(mapLayers)).map(function (_ref3) {
5566
+ _ref3.mapId;
5567
+ var layer = _objectWithoutProperties(_ref3, _excluded$2);
5429
5568
  if (layer.dimensions !== undefined) {
5430
5569
  // Filter out (reference) time dimension as these should not be part of the preset for now
5431
5570
  var dimensions = layer.dimensions.filter(function (dimension) {
5432
5571
  return dimension.name !== 'time' && dimension.name !== 'reference_time';
5433
5572
  });
5434
- return Object.assign({}, layer, {
5573
+ return _objectSpread2(_objectSpread2({}, layer), {}, {
5435
5574
  dimensions: dimensions
5436
5575
  });
5437
5576
  }
@@ -5442,16 +5581,16 @@ var getMapPreset = createSelector(getMapLayers, getMapBaseLayers, getMapOverLaye
5442
5581
  speed: mapAnimationDelay ? getSpeedFactor(mapAnimationDelay) : 1,
5443
5582
  duration: getAnimationDuration(animationEndTime, animationStartTime)
5444
5583
  };
5445
- var shouldShowLegend = legendId ? uiStore == null || (_uiStore$dialogs$lege = uiStore.dialogs[legendId]) == null ? void 0 : _uiStore$dialogs$lege.isOpen : false;
5446
- return Object.assign({
5584
+ var shouldShowLegend = legendId ? uiStore === null || uiStore === void 0 || (_uiStore$dialogs$lege = uiStore.dialogs[legendId]) === null || _uiStore$dialogs$lege === void 0 ? void 0 : _uiStore$dialogs$lege.isOpen : false;
5585
+ return _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
5447
5586
  layers: allLayers
5448
5587
  }, activeLayerId !== undefined && {
5449
5588
  activeLayerId: activeLayerId
5450
- }, autoTimeStepLayerId !== undefined && {
5589
+ }), autoTimeStepLayerId !== undefined && {
5451
5590
  autoTimeStepLayerId: autoTimeStepLayerId
5452
- }, autoUpdateLayerId !== undefined && {
5591
+ }), autoUpdateLayerId !== undefined && {
5453
5592
  autoUpdateLayerId: autoUpdateLayerId
5454
- }, {
5593
+ }), {}, {
5455
5594
  proj: {
5456
5595
  bbox: bbox,
5457
5596
  srs: srs
@@ -5523,15 +5662,15 @@ var getAnimationList = createSelector(getLayersById, getMapById, getAnimationSta
5523
5662
  // - start, end and interval for a continuous animation loop
5524
5663
  // - timeList, for a custom timeList
5525
5664
  // Here the animation is defined by a timeList
5526
- if (mapStore != null && (_mapStore$timeList = mapStore.timeList) != null && _mapStore$timeList.length) {
5665
+ if (mapStore !== null && mapStore !== void 0 && (_mapStore$timeList = mapStore.timeList) !== null && _mapStore$timeList !== void 0 && _mapStore$timeList.length) {
5527
5666
  return mapStore.timeList;
5528
5667
  }
5529
- var autoTimeStepLayerId = mapStore == null ? void 0 : mapStore.autoTimeStepLayerId;
5530
- var timeDimension = autoTimeStepLayerId && (layers == null || (_layers$autoTimeStepL = layers[autoTimeStepLayerId]) == null || (_layers$autoTimeStepL = _layers$autoTimeStepL.dimensions) == null ? void 0 : _layers$autoTimeStepL.find(function (dimension) {
5668
+ var autoTimeStepLayerId = mapStore === null || mapStore === void 0 ? void 0 : mapStore.autoTimeStepLayerId;
5669
+ var timeDimension = autoTimeStepLayerId && (layers === null || layers === void 0 || (_layers$autoTimeStepL = layers[autoTimeStepLayerId]) === null || _layers$autoTimeStepL === void 0 || (_layers$autoTimeStepL = _layers$autoTimeStepL.dimensions) === null || _layers$autoTimeStepL === void 0 ? void 0 : _layers$autoTimeStepL.find(function (dimension) {
5531
5670
  return dimension.name === 'time';
5532
5671
  }));
5533
- var _ref3 = timeDimension || {},
5534
- values = _ref3.values;
5672
+ var _ref4 = timeDimension || {},
5673
+ values = _ref4.values;
5535
5674
  var unixAnimationStart = roundWithTimeStep(Number(animationStart && dateUtils.unix(dateUtils.utc(animationStart))), animationInterval, 'ceil');
5536
5675
  var unixAnimationEnd = roundWithTimeStep(Number(animationEnd && dateUtils.unix(dateUtils.utc(animationEnd))), animationInterval, 'floor');
5537
5676
  var animationList = generateAnimationList(unixAnimationStart, unixAnimationEnd, values);
@@ -5539,10 +5678,10 @@ var getAnimationList = createSelector(getLayersById, getMapById, getAnimationSta
5539
5678
  if (!animationList.length) {
5540
5679
  var timeList = [];
5541
5680
  var intervalSeconds = animationInterval * 60;
5542
- for (var j = unixAnimationStart; j <= unixAnimationEnd; j += intervalSeconds) {
5681
+ for (var animTimeStep = unixAnimationStart; animTimeStep <= unixAnimationEnd; animTimeStep += intervalSeconds) {
5543
5682
  timeList.push({
5544
5683
  name: 'time',
5545
- value: dateUtils.fromUnix(j).toISOString()
5684
+ value: dateUtils.fromUnix(animTimeStep).toISOString()
5546
5685
  });
5547
5686
  }
5548
5687
  return timeList;
@@ -5556,12 +5695,12 @@ var getAnimationList = createSelector(getLayersById, getMapById, getAnimationSta
5556
5695
  */
5557
5696
  var getAnimationRange = createSelector(getLayersById, getAutoTimeStepLayerId, getAnimationStartTime, getAnimationEndTime, isAnimationLengthAuto, function (layers, autoTimeStepLayerId, startTime, endTime, isAnimationLengthAuto) {
5558
5697
  var _layers$autoTimeStepL2;
5559
- var layerTimeDimension = autoTimeStepLayerId && (layers == null || (_layers$autoTimeStepL2 = layers[autoTimeStepLayerId]) == null || (_layers$autoTimeStepL2 = _layers$autoTimeStepL2.dimensions) == null ? void 0 : _layers$autoTimeStepL2.find(function (dimension) {
5698
+ var layerTimeDimension = autoTimeStepLayerId && (layers === null || layers === void 0 || (_layers$autoTimeStepL2 = layers[autoTimeStepLayerId]) === null || _layers$autoTimeStepL2 === void 0 || (_layers$autoTimeStepL2 = _layers$autoTimeStepL2.dimensions) === null || _layers$autoTimeStepL2 === void 0 ? void 0 : _layers$autoTimeStepL2.find(function (dimension) {
5560
5699
  return dimension.name === 'time';
5561
5700
  }));
5562
- var _ref4 = layerTimeDimension || {},
5563
- minValue = _ref4.minValue,
5564
- maxValue = _ref4.maxValue;
5701
+ var _ref5 = layerTimeDimension || {},
5702
+ minValue = _ref5.minValue,
5703
+ maxValue = _ref5.maxValue;
5565
5704
  var hasTimeDimension = minValue && maxValue;
5566
5705
  var animationStartTime = isAnimationLengthAuto && autoTimeStepLayerId && hasTimeDimension ? minValue : startTime;
5567
5706
  var animationEndTime = isAnimationLengthAuto && autoTimeStepLayerId && hasTimeDimension ? maxValue : endTime;
@@ -5633,6 +5772,7 @@ var selectors$1 = /*#__PURE__*/Object.freeze({
5633
5772
  getMapTimeSliderCenterTime: getMapTimeSliderCenterTime,
5634
5773
  getMapTimeSliderSecondsPerPx: getMapTimeSliderSecondsPerPx,
5635
5774
  getMapTimeSliderSpan: getMapTimeSliderSpan,
5775
+ getMapTimeSliderStartCenterEndAndStep: getMapTimeSliderStartCenterEndAndStep,
5636
5776
  getMapTimeSliderWidth: getMapTimeSliderWidth,
5637
5777
  getMapTimeStep: getMapTimeStep,
5638
5778
  getMapTimeStepWithoutDefault: getMapTimeStepWithoutDefault,
@@ -5699,32 +5839,11 @@ var enums = /*#__PURE__*/Object.freeze({
5699
5839
  * */
5700
5840
  var IS_LEGEND_OPEN_BY_DEFAULT = false;
5701
5841
 
5702
- /* *
5703
- * Licensed under the Apache License, Version 2.0 (the "License");
5704
- * you may not use this file except in compliance with the License.
5705
- * You may obtain a copy of the License at
5706
- *
5707
- * http://www.apache.org/licenses/LICENSE-2.0
5708
- *
5709
- * Unless required by applicable law or agreed to in writing, software
5710
- * distributed under the License is distributed on an "AS IS" BASIS,
5711
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5712
- * See the License for the specific language governing permissions and
5713
- * limitations under the License.
5714
- *
5715
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
5716
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
5717
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
5718
- * */
5719
- var filterLayers = function filterLayers(layers, layerParser) {
5720
- if (layers === void 0) {
5721
- layers = [];
5722
- }
5723
- if (layerParser === void 0) {
5724
- layerParser = function layerParser(layer) {
5725
- return layer;
5726
- };
5727
- }
5842
+ var filterLayers = function filterLayers() {
5843
+ var layers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
5844
+ var layerParser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (layer) {
5845
+ return layer;
5846
+ };
5728
5847
  return layers.reduce(function (layers, layer) {
5729
5848
  var mapLayers = layers.mapLayers,
5730
5849
  baseLayers = layers.baseLayers,
@@ -5765,39 +5884,22 @@ var parseBoolean = function parseBoolean(value) {
5765
5884
  return typeof value === 'boolean' ? value : value === 'true';
5766
5885
  };
5767
5886
  var parseLayer = function parseLayer(layer) {
5768
- return Object.assign({}, layer, !layer.id && {
5887
+ return _objectSpread2(_objectSpread2(_objectSpread2({}, layer), !layer.id && {
5769
5888
  id: webmapUtils.generateLayerId()
5770
- }, layer.enabled && {
5889
+ }), layer.enabled && {
5771
5890
  enabled: parseBoolean(layer.enabled)
5772
5891
  });
5773
5892
  };
5774
5893
 
5775
5894
  var filterLayers$1 = /*#__PURE__*/Object.freeze({
5776
- __proto__: null,
5777
- createEmtpyFilteredList: createEmtpyFilteredList,
5778
- filterLayers: filterLayers,
5779
- parseBoolean: parseBoolean,
5780
- parseLayer: parseLayer
5781
- });
5782
-
5783
- /* *
5784
- * Licensed under the Apache License, Version 2.0 (the "License");
5785
- * you may not use this file except in compliance with the License.
5786
- * You may obtain a copy of the License at
5787
- *
5788
- * http://www.apache.org/licenses/LICENSE-2.0
5789
- *
5790
- * Unless required by applicable law or agreed to in writing, software
5791
- * distributed under the License is distributed on an "AS IS" BASIS,
5792
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5793
- * See the License for the specific language governing permissions and
5794
- * limitations under the License.
5795
- *
5796
- * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
5797
- * Copyright 2022 - Finnish Meteorological Institute (FMI)
5798
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
5799
- * */
5800
- var mapUtils = Object.assign({}, utils$2, {
5895
+ __proto__: null,
5896
+ createEmtpyFilteredList: createEmtpyFilteredList,
5897
+ filterLayers: filterLayers,
5898
+ parseBoolean: parseBoolean,
5899
+ parseLayer: parseLayer
5900
+ });
5901
+
5902
+ var mapUtils = _objectSpread2(_objectSpread2({}, utils$2), {}, {
5801
5903
  replaceLayerIdsToEnsureUniqueLayerIdsInStore: replaceLayerIdsToEnsureUniqueLayerIdsInStore
5802
5904
  });
5803
5905
 
@@ -6059,7 +6161,7 @@ var getLayerActionsTargets = function getLayerActionsTargets(state, payload, act
6059
6161
  var foundTargets = findTargets(state, payload, actionType, mapId);
6060
6162
  return foundTargets.map(function (target) {
6061
6163
  var payload = target.payload;
6062
- return Object.assign({}, payload, {
6164
+ return _objectSpread2(_objectSpread2({}, payload), {}, {
6063
6165
  layerId: target.layerId,
6064
6166
  origin: SyncGroupActionOrigin.layerActions,
6065
6167
  mapId: payload.mapId
@@ -6080,9 +6182,9 @@ var getAddLayerActionsTargets = function getAddLayerActionsTargets(state, payloa
6080
6182
  targetId = _ref.targetId;
6081
6183
  var layer = payload.layer;
6082
6184
  layer.id;
6083
- var layerWithoutId = _objectWithoutPropertiesLoose(layer, _excluded$1);
6185
+ var layerWithoutId = _objectWithoutProperties(layer, _excluded$1);
6084
6186
  var layerId = webmapUtils.generateLayerId();
6085
- return Object.assign({}, payload, {
6187
+ return _objectSpread2(_objectSpread2({}, payload), {}, {
6086
6188
  layer: layerWithoutId,
6087
6189
  layerId: layerId,
6088
6190
  mapId: targetId,
@@ -6100,7 +6202,7 @@ var getAddLayerActionsTargets = function getAddLayerActionsTargets(state, payloa
6100
6202
  var getLayerDeleteActionsTargets = function getLayerDeleteActionsTargets(state, payload, actionType) {
6101
6203
  var foundTargets = findTargets(state, payload, actionType, payload.mapId);
6102
6204
  return foundTargets.map(function (target) {
6103
- return Object.assign({}, target.payload, {
6205
+ return _objectSpread2(_objectSpread2({}, target.payload), {}, {
6104
6206
  mapId: target.targetId,
6105
6207
  layerId: target.layerId,
6106
6208
  origin: SyncGroupActionOrigin["delete"]
@@ -6117,7 +6219,7 @@ var getLayerDeleteActionsTargets = function getLayerDeleteActionsTargets(state,
6117
6219
  var getLayerMoveActionsTargets = function getLayerMoveActionsTargets(state, payload, actionType) {
6118
6220
  var foundTargets = findTargets(state, payload, actionType, payload.mapId);
6119
6221
  return foundTargets.map(function (target) {
6120
- return Object.assign({}, target.payload, {
6222
+ return _objectSpread2(_objectSpread2({}, target.payload), {}, {
6121
6223
  mapId: target.targetId,
6122
6224
  origin: SyncGroupActionOrigin.move
6123
6225
  });
@@ -6131,7 +6233,7 @@ var getLayerMoveActionsTargets = function getLayerMoveActionsTargets(state, payl
6131
6233
  * @returns
6132
6234
  */
6133
6235
  var getSetAutoLayerIdActionsTargets = function getSetAutoLayerIdActionsTargets(state, payload, actionType) {
6134
- var payloadWithLayerId = Object.assign({}, payload, {
6236
+ var payloadWithLayerId = _objectSpread2(_objectSpread2({}, payload), {}, {
6135
6237
  layerId: payload.autoUpdateLayerId || payload.autoTimeStepLayerId || payload.layerId
6136
6238
  });
6137
6239
  var foundTargets = findTargets(state, payloadWithLayerId, actionType, payload.mapId);
@@ -6155,7 +6257,7 @@ var getMapBaseLayerActionsTargets = function getMapBaseLayerActionsTargets(state
6155
6257
  return foundTargets.map(function (target) {
6156
6258
  return {
6157
6259
  layers: payload.layers.map(function (layer) {
6158
- return Object.assign({}, layer, {
6260
+ return _objectSpread2(_objectSpread2({}, layer), {}, {
6159
6261
  id: webmapUtils.generateLayerId()
6160
6262
  });
6161
6263
  }),
@@ -6180,7 +6282,7 @@ genericListener.startListening({
6180
6282
  value = payload.value, origin = payload.origin;
6181
6283
  /* Test if the value is according to the expected time format */
6182
6284
  if (!setTimeValidatorRexexp.test(value)) {
6183
- console.error("setTime value " + value + " does not conform to format [YYYY-MM-DDThh:mm:ssZ]. It was triggered by " + origin);
6285
+ console.error("setTime value ".concat(value, " does not conform to format [YYYY-MM-DDThh:mm:ssZ]. It was triggered by ").concat(origin));
6184
6286
  } else {
6185
6287
  targets = getTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETTIME);
6186
6288
  groups = getTargetGroups(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETTIME);
@@ -6448,9 +6550,9 @@ genericListener.startListening({
6448
6550
  });
6449
6551
 
6450
6552
  /* A map with all the timerIds and their current step */
6451
- var stepMap = new Map();
6553
+ var stepMap$1 = new Map();
6452
6554
  /* A map with a list of timers and their dwell */
6453
- var timerDwellMap = new Map();
6555
+ var timerDwellMap$1 = new Map();
6454
6556
  /**
6455
6557
  * Returns the next step for given timerId.
6456
6558
  * @param timerId The timer id
@@ -6458,11 +6560,9 @@ var timerDwellMap = new Map();
6458
6560
  * @param numStepsToGoForward Amount of steps to go forwards, defaults to 1. Can be positive and negative
6459
6561
  * @returns
6460
6562
  */
6461
- var getNextStep = function getNextStep(timerId, numberOfStepsInAnimation, numStepsToGoForward) {
6462
- if (numStepsToGoForward === void 0) {
6463
- numStepsToGoForward = 1;
6464
- }
6465
- var currentStep = getCurrentStep(timerId);
6563
+ var getNextStep$1 = function getNextStep(timerId, numberOfStepsInAnimation) {
6564
+ var numStepsToGoForward = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
6565
+ var currentStep = getCurrentStep$1(timerId);
6466
6566
  var nextStep = currentStep + numStepsToGoForward;
6467
6567
  var nextStepClipped = (nextStep % numberOfStepsInAnimation + numberOfStepsInAnimation) % numberOfStepsInAnimation;
6468
6568
  return nextStepClipped;
@@ -6474,21 +6574,19 @@ var getNextStep = function getNextStep(timerId, numberOfStepsInAnimation, numSte
6474
6574
  * @param dwell The number of steps to wait at the end of the animation sequence before to continue
6475
6575
  * @returns
6476
6576
  */
6477
- var handleTimerDwell = function handleTimerDwell(timerId, numberOfStepsInAnimation, dwell) {
6478
- if (dwell === void 0) {
6479
- dwell = 8;
6480
- }
6577
+ var handleTimerDwell$1 = function handleTimerDwell(timerId, numberOfStepsInAnimation) {
6578
+ var dwell = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 8;
6481
6579
  if (dwell > 0) {
6482
- var currentStep = getCurrentStep(timerId);
6580
+ var currentStep = getCurrentStep$1(timerId);
6483
6581
  // Reset the dwell if we are not at the last animation step
6484
6582
  if (currentStep < numberOfStepsInAnimation - 1) {
6485
- timerDwellMap.set(timerId, dwell);
6583
+ timerDwellMap$1.set(timerId, dwell);
6486
6584
  return false;
6487
6585
  }
6488
6586
  // We are at the last animation step, check the dwell
6489
- var timerDwell = timerDwellMap.has(timerId) && timerDwellMap.get(timerId) || 0;
6587
+ var timerDwell = timerDwellMap$1.has(timerId) && timerDwellMap$1.get(timerId) || 0;
6490
6588
  if (currentStep === numberOfStepsInAnimation - 1 && timerDwell > 0) {
6491
- timerDwellMap.set(timerId, timerDwell - 1);
6589
+ timerDwellMap$1.set(timerId, timerDwell - 1);
6492
6590
  return true;
6493
6591
  }
6494
6592
  }
@@ -6499,16 +6597,16 @@ var handleTimerDwell = function handleTimerDwell(timerId, numberOfStepsInAnimati
6499
6597
  * @param timerId
6500
6598
  * @param timerStep
6501
6599
  */
6502
- var setStep = function setStep(timerId, timerStep) {
6503
- stepMap.set(timerId, timerStep);
6600
+ var setStep$1 = function setStep(timerId, timerStep) {
6601
+ stepMap$1.set(timerId, timerStep);
6504
6602
  };
6505
6603
  /**
6506
6604
  * Gets the current step for the timer
6507
6605
  * @param timerId
6508
6606
  * @returns
6509
6607
  */
6510
- var getCurrentStep = function getCurrentStep(timerId) {
6511
- return stepMap.get(timerId) || 0;
6608
+ var getCurrentStep$1 = function getCurrentStep(timerId) {
6609
+ return stepMap$1.get(timerId) || 0;
6512
6610
  };
6513
6611
  var MAX_NUMBER_STEPS_FORWARD_TO_PREFETCH = 2;
6514
6612
  var MAX_NUMBER_OF_PARALLEL_LOADING_IMAGES = 8;
@@ -6523,41 +6621,57 @@ var prefetchAnimationTargetsForMetronome = function prefetchAnimationTargetsForM
6523
6621
  var timerShouldStepForward = true;
6524
6622
  // The following code prefetches/buffers for all maps in the group
6525
6623
  for (var numPrefetch = 0; numPrefetch < MAX_NUMBER_STEPS_FORWARD_TO_PREFETCH; numPrefetch += 1) {
6526
- var nextStep = getNextStep(timerId, animationListValues.length, numPrefetch + 1);
6624
+ var nextStep = getNextStep$1(timerId, animationListValues.length, numPrefetch + 1);
6527
6625
  var nextTimeValueStepToCheck = animationListValues[nextStep];
6528
- for (var _iterator = _createForOfIteratorHelperLoose(targets), _step; !(_step = _iterator()).done;) {
6529
- var target = _step.value;
6530
- var targetMapId = target.targetId;
6531
- var wmMap = getWMJSMapById(targetMapId);
6532
- if (!wmMap) {
6533
- return true; // Map was not registered so there is nothing to prefetch, do not block going forward
6534
- }
6535
- var layersImageUrls = getWMSRequests(wmMap, [{
6536
- name: 'time',
6537
- currentValue: nextTimeValueStepToCheck
6538
- }]);
6539
- for (var _iterator2 = _createForOfIteratorHelperLoose(layersImageUrls), _step2; !(_step2 = _iterator2()).done;) {
6540
- var layersImageUrl = _step2.value;
6541
- var image = wmMap.getMapImageStore.getImage(layersImageUrl.url);
6542
- if (!image.isLoaded()) {
6543
- if (wmMap.getMapImageStore.getNumImagesLoading() < MAX_NUMBER_OF_PARALLEL_LOADING_IMAGES) {
6544
- image.load();
6545
- }
6546
- if (numPrefetch === 0) {
6547
- var altImage = wmMap.getAlternativeImage(layersImageUrl.url, wmMap.getBBOX(), true);
6548
- // No alternative image available yet, so skipping animation.
6549
- if (altImage.length === 0) {
6550
- // This is useful to indicate that the map is loading and has nothing yet to display.
6551
- // console.warn('No data available: Not stepping forward');
6552
- timerShouldStepForward = false;
6626
+ var _iterator = _createForOfIteratorHelper(targets),
6627
+ _step;
6628
+ try {
6629
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
6630
+ var target = _step.value;
6631
+ var targetMapId = target.targetId;
6632
+ var wmMap = getWMJSMapById(targetMapId);
6633
+ if (!wmMap) {
6634
+ return true; // Map was not registered so there is nothing to prefetch, do not block going forward
6635
+ }
6636
+ var layersImageUrls = getWMSRequests(wmMap, [{
6637
+ name: 'time',
6638
+ currentValue: nextTimeValueStepToCheck
6639
+ }]);
6640
+ var _iterator2 = _createForOfIteratorHelper(layersImageUrls),
6641
+ _step2;
6642
+ try {
6643
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
6644
+ var layersImageUrl = _step2.value;
6645
+ var image = wmMap.getMapImageStore.getImage(layersImageUrl.url);
6646
+ if (!image.isLoaded()) {
6647
+ if (wmMap.getMapImageStore.getNumImagesLoading() < MAX_NUMBER_OF_PARALLEL_LOADING_IMAGES) {
6648
+ image.load();
6649
+ }
6650
+ if (numPrefetch === 0) {
6651
+ var altImage = wmMap.getAlternativeImage(layersImageUrl.url, wmMap.getBBOX(), true);
6652
+ // No alternative image available yet, so skipping animation.
6653
+ if (altImage.length === 0) {
6654
+ // This is useful to indicate that the map is loading and has nothing yet to display.
6655
+ // console.warn('No data available: Not stepping forward');
6656
+ timerShouldStepForward = false;
6657
+ }
6658
+ }
6659
+ } else if (image.isStale()) {
6660
+ if (wmMap.getMapImageStore.getNumImagesLoading() < MAX_NUMBER_OF_PARALLEL_LOADING_IMAGES) {
6661
+ image.forceReload(true);
6662
+ }
6553
6663
  }
6554
6664
  }
6555
- } else if (image.isStale()) {
6556
- if (wmMap.getMapImageStore.getNumImagesLoading() < MAX_NUMBER_OF_PARALLEL_LOADING_IMAGES) {
6557
- image.forceReload(true);
6558
- }
6665
+ } catch (err) {
6666
+ _iterator2.e(err);
6667
+ } finally {
6668
+ _iterator2.f();
6559
6669
  }
6560
6670
  }
6671
+ } catch (err) {
6672
+ _iterator.e(err);
6673
+ } finally {
6674
+ _iterator.f();
6561
6675
  }
6562
6676
  }
6563
6677
  return timerShouldStepForward;
@@ -6614,8 +6728,8 @@ mapListener.startListening({
6614
6728
  var shouldAutoUpdate = isAutoUpdating(listenerApi.getState(), mapId);
6615
6729
  var prevTimeDimension = getLayerTimeDimension(listenerApi.getState(), layerId);
6616
6730
  var isAutoUpdateLayer = layerId === autoUpdateLayerId;
6617
- var incomingMaxTime = newTimeDimension == null ? void 0 : newTimeDimension.maxValue;
6618
- var isIncomingMaxTimeLaterThanCurrentLayerTime = incomingMaxTime && (prevTimeDimension == null ? void 0 : prevTimeDimension.currentValue) && prevTimeDimension.currentValue !== incomingMaxTime;
6731
+ var incomingMaxTime = newTimeDimension === null || newTimeDimension === void 0 ? void 0 : newTimeDimension.maxValue;
6732
+ var isIncomingMaxTimeLaterThanCurrentLayerTime = incomingMaxTime && (prevTimeDimension === null || prevTimeDimension === void 0 ? void 0 : prevTimeDimension.currentValue) && prevTimeDimension.currentValue !== incomingMaxTime;
6619
6733
  if (isAutoUpdateLayer &&
6620
6734
  // only update the active layer
6621
6735
  shouldAutoUpdate && isIncomingMaxTimeLaterThanCurrentLayerTime) {
@@ -6704,7 +6818,7 @@ mapListener.startListening({
6704
6818
  autoUpdateLayerId = getAutoUpdateLayerId(listenerApi.getState(), mapId);
6705
6819
  timeDimension = getLayerTimeDimension(listenerApi.getState(), autoUpdateLayerId);
6706
6820
  syncedMapIds = getSyncedMapIdsForTimeslider(listenerApi.getState()); // go to end of active layer
6707
- if (timeDimension != null && timeDimension.maxValue && autoUpdateLayerId) {
6821
+ if (timeDimension !== null && timeDimension !== void 0 && timeDimension.maxValue && autoUpdateLayerId) {
6708
6822
  listenerApi.dispatch(layerActions.layerChangeDimension({
6709
6823
  layerId: autoUpdateLayerId,
6710
6824
  origin: LayerActionOrigin.toggleAutoUpdateListener,
@@ -6777,11 +6891,11 @@ mapListener.startListening({
6777
6891
  // In case of the timeList
6778
6892
  if (timeList && timeList.length > 0) {
6779
6893
  // Determine animation step based on initialTime and timeList
6780
- var initalTimerStep = timeList == null ? void 0 : timeList.findIndex(function (timeNameValue) {
6894
+ var initalTimerStep = timeList === null || timeList === void 0 ? void 0 : timeList.findIndex(function (timeNameValue) {
6781
6895
  return timeNameValue.value === initialTime;
6782
6896
  });
6783
6897
  if (initalTimerStep !== -1) {
6784
- setStep(useMapId, initalTimerStep);
6898
+ setStep$1(useMapId, initalTimerStep);
6785
6899
  }
6786
6900
  }
6787
6901
  }
@@ -6813,14 +6927,14 @@ var handleBaseLayers = function handleBaseLayers(mapId, baseLayers, listenerApi)
6813
6927
  // This happens when switching to a preset that has non-default baselayers
6814
6928
  if (!activeAvailableBaseLayer && currentAvailableBaseLayers.length) {
6815
6929
  listenerApi.dispatch(layerActions.addAvailableBaseLayers({
6816
- layers: [Object.assign({}, baseLayer, {
6930
+ layers: [_objectSpread2(_objectSpread2({}, baseLayer), {}, {
6817
6931
  mapId: mapId,
6818
6932
  id: activeBaseLayerId
6819
6933
  })]
6820
6934
  }));
6821
6935
  }
6822
6936
  var baseLayersWithActiveId = baseLayers.map(function (layer, index) {
6823
- return index === 0 ? Object.assign({}, layer, {
6937
+ return index === 0 ? _objectSpread2(_objectSpread2({}, layer), {}, {
6824
6938
  id: activeBaseLayerId || layer.id
6825
6939
  }) : layer;
6826
6940
  });
@@ -6868,10 +6982,10 @@ mapListener.startListening({
6868
6982
  // make sure layer with new id exist and if not, default to first layer
6869
6983
  newAutoUpdateLayerId = ((_newLayerIds$layers$f = newLayerIds.layers.find(function (layer) {
6870
6984
  return layer.id === newLayerIds.autoUpdateLayerId;
6871
- })) == null ? void 0 : _newLayerIds$layers$f.id) || ((_newLayerIds$layers$ = newLayerIds.layers[0]) == null ? void 0 : _newLayerIds$layers$.id);
6985
+ })) === null || _newLayerIds$layers$f === void 0 ? void 0 : _newLayerIds$layers$f.id) || ((_newLayerIds$layers$ = newLayerIds.layers[0]) === null || _newLayerIds$layers$ === void 0 ? void 0 : _newLayerIds$layers$.id);
6872
6986
  newAutoTimeStepLayerId = ((_newLayerIds$layers$f2 = newLayerIds.layers.find(function (layer) {
6873
6987
  return layer.id === newLayerIds.autoTimeStepLayerId;
6874
- })) == null ? void 0 : _newLayerIds$layers$f2.id) || ((_newLayerIds$layers$2 = newLayerIds.layers[0]) == null ? void 0 : _newLayerIds$layers$2.id);
6988
+ })) === null || _newLayerIds$layers$f2 === void 0 ? void 0 : _newLayerIds$layers$f2.id) || ((_newLayerIds$layers$2 = newLayerIds.layers[0]) === null || _newLayerIds$layers$2 === void 0 ? void 0 : _newLayerIds$layers$2.id);
6875
6989
  listenerApi.dispatch(mapActions.setAutoLayerId({
6876
6990
  mapId: mapId,
6877
6991
  autoUpdateLayerId: newAutoUpdateLayerId,
@@ -6879,16 +6993,16 @@ mapListener.startListening({
6879
6993
  }));
6880
6994
  }
6881
6995
  customLayers = getdefaultMapSettingsLayers(listenerApi.getState());
6882
- customBaseLayer = customLayers == null ? void 0 : customLayers.find(function (layer) {
6996
+ customBaseLayer = customLayers === null || customLayers === void 0 ? void 0 : customLayers.find(function (layer) {
6883
6997
  return layer.layerType === LayerType.baseLayer;
6884
6998
  });
6885
- customOverLayer = customLayers == null ? void 0 : customLayers.find(function (layer) {
6999
+ customOverLayer = customLayers === null || customLayers === void 0 ? void 0 : customLayers.find(function (layer) {
6886
7000
  return layer.layerType === LayerType.overLayer;
6887
7001
  }); // sets (default) baseLayers
6888
7002
  baseLayersWithDefaultLayer = baseLayers.length ? baseLayers : [customBaseLayer || defaultLayers.baseLayerGrey]; // sets (default) overLayers
6889
7003
  overLayersWithDefaultLayer = overLayers.length ? overLayers : [customOverLayer || defaultLayers.overLayer];
6890
- allBaseLayers = [].concat(baseLayersWithDefaultLayer, overLayersWithDefaultLayer).map(function (layer) {
6891
- return Object.assign({}, layer, {
7004
+ allBaseLayers = [].concat(_toConsumableArray(baseLayersWithDefaultLayer), _toConsumableArray(overLayersWithDefaultLayer)).map(function (layer) {
7005
+ return _objectSpread2(_objectSpread2({}, layer), {}, {
6892
7006
  id: webmapUtils.generateLayerId()
6893
7007
  });
6894
7008
  });
@@ -6902,7 +7016,7 @@ mapListener.startListening({
6902
7016
  _context2.next = 19;
6903
7017
  break;
6904
7018
  }
6905
- throw new Error("Projection " + proj.srs + " is not supported");
7019
+ throw new Error("Projection ".concat(proj.srs, " is not supported"));
6906
7020
  case 19:
6907
7021
  // set bbox
6908
7022
  listenerApi.dispatch(mapActions.setBbox({
@@ -6942,13 +7056,11 @@ mapListener.startListening({
6942
7056
  timeSliderSpan: timeSliderSpan
6943
7057
  }));
6944
7058
  }
6945
- if (toggleTimeSpanAuto !== undefined) {
6946
- // toggle timeslider span auto
6947
- listenerApi.dispatch(mapActions.toggleTimeSpanAuto({
6948
- mapId: mapId,
6949
- timeSpanAuto: toggleTimeSpanAuto
6950
- }));
6951
- }
7059
+ // toggle time span auto - defaults to true
7060
+ listenerApi.dispatch(mapActions.toggleTimeSpanAuto({
7061
+ mapId: mapId,
7062
+ timeSpanAuto: toggleTimeSpanAuto !== null && toggleTimeSpanAuto !== void 0 ? toggleTimeSpanAuto : true
7063
+ }));
6952
7064
  if (shouldShowZoomControls !== undefined) {
6953
7065
  // toggle zoom controls
6954
7066
  listenerApi.dispatch(mapActions.toggleZoomControls({
@@ -7135,8 +7247,9 @@ mapListener.startListening({
7135
7247
  var timeStep = getMapTimeStep(listenerApi.getState(), mapId);
7136
7248
  var currentTime = getSelectedTime(listenerApi.getState(), mapId);
7137
7249
  var _mapSelectors$getData = getDataLimitsFromLayers(listenerApi.getState(), mapId),
7138
- dataStartTime = _mapSelectors$getData[0],
7139
- dataEndTime = _mapSelectors$getData[1];
7250
+ _mapSelectors$getData2 = _slicedToArray(_mapSelectors$getData, 2),
7251
+ dataStartTime = _mapSelectors$getData2[0],
7252
+ dataEndTime = _mapSelectors$getData2[1];
7140
7253
  if (dateUtils.isValid(currentTime)) {
7141
7254
  var makeForwardStep = function makeForwardStep() {
7142
7255
  var nextTime = currentTime + timeStep;
@@ -7167,6 +7280,186 @@ mapListener.startListening({
7167
7280
  }
7168
7281
  });
7169
7282
 
7283
+ var copyView = function copyView(view) {
7284
+ return new View({
7285
+ center: view.getCenter(),
7286
+ resolution: view.getResolution(),
7287
+ projection: view.getProjection()
7288
+ });
7289
+ };
7290
+ /**
7291
+ * The StoredView objects keep references to OpenLayers View objects that may be shared
7292
+ * between multiple maps (when maps are pan/zoom synced).
7293
+ * This file then offers and API for each map to retrieve the StoredView object
7294
+ * that is relevant for the current workspace configuration.
7295
+ *
7296
+ * React is functional, but OpenLayers is object oriented.
7297
+ * This component sits in between the two and thus you can make an argument for either style.
7298
+ * Object oriented was chosen since:
7299
+ * - This allows us to use OpenLayers's Observable as a base class to provide event handling,
7300
+ * which is useful for the implementation.
7301
+ * - For this mechanism to work smoothly with OpenLayers,
7302
+ * we need to pass the exact same View object reference for all maps that are synchronized. Redux stores cannot be used in this context and prop drilling and/or context providers would likely lead to more invasive implementations.
7303
+ */
7304
+ var StoredView = /*#__PURE__*/function (_Observable) {
7305
+ function StoredView(name, view) {
7306
+ var _this;
7307
+ _classCallCheck(this, StoredView);
7308
+ _this = _callSuper(this, StoredView);
7309
+ _this.name = name;
7310
+ _this.view = view;
7311
+ return _this;
7312
+ }
7313
+ _inherits(StoredView, _Observable);
7314
+ return _createClass(StoredView, [{
7315
+ key: "setView",
7316
+ value: function setView(view) {
7317
+ this.view = view;
7318
+ this.changed();
7319
+ }
7320
+ }]);
7321
+ }(Observable);
7322
+ var VIEW_PER_SYNCGROUP = {};
7323
+ var VIEW_PER_MAP = {};
7324
+ var getViewObjectForMapId = function getViewObjectForMapId(id) {
7325
+ var storedView = VIEW_PER_MAP[id];
7326
+ if (!storedView) {
7327
+ var newStoredView = new StoredView("view:".concat(id), new View());
7328
+ VIEW_PER_MAP[id] = newStoredView;
7329
+ return newStoredView;
7330
+ }
7331
+ return storedView;
7332
+ };
7333
+ var createViewObjectForNewMap = function createViewObjectForNewMap(createFromId, newId) {
7334
+ var orig = VIEW_PER_MAP[createFromId];
7335
+ if (!orig) {
7336
+ return;
7337
+ }
7338
+ // If there already is a view for `newId`, use that one but set the view from createFromId
7339
+ // this can happen for example when switching presets
7340
+ if (VIEW_PER_MAP[newId] !== undefined) {
7341
+ VIEW_PER_MAP[newId].setView(copyView(orig.view));
7342
+ return;
7343
+ }
7344
+ VIEW_PER_MAP[newId] = new StoredView("view:".concat(newId), copyView(orig.view));
7345
+ };
7346
+ var getViewObjectForSyncGroup = function getViewObjectForSyncGroup(id) {
7347
+ var storedView = VIEW_PER_SYNCGROUP[id];
7348
+ if (!storedView) {
7349
+ var newStoredView = new StoredView("syncgroup:".concat(id), new View());
7350
+ VIEW_PER_SYNCGROUP[id] = newStoredView;
7351
+ return newStoredView;
7352
+ }
7353
+ return storedView;
7354
+ };
7355
+
7356
+ /* *
7357
+ * Licensed under the Apache License, Version 2.0 (the "License");
7358
+ * you may not use this file except in compliance with the License.
7359
+ * You may obtain a copy of the License at
7360
+ *
7361
+ * http://www.apache.org/licenses/LICENSE-2.0
7362
+ *
7363
+ * Unless required by applicable law or agreed to in writing, software
7364
+ * distributed under the License is distributed on an "AS IS" BASIS,
7365
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7366
+ * See the License for the specific language governing permissions and
7367
+ * limitations under the License.
7368
+ *
7369
+ * Copyright 2024 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7370
+ * Copyright 2024 - Finnish Meteorological Institute (FMI)
7371
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
7372
+ * */
7373
+ var openlayersListener = createListenerMiddleware();
7374
+ var getGroupForMap = function getGroupForMap(mapId, state) {
7375
+ var syncGroupState = getSynchronizationGroupState(state);
7376
+ return syncGroupState.groups.allIds.find(function (id) {
7377
+ var group = syncGroupState.groups.byId[id];
7378
+ return group.type === SYNCGROUPS_TYPE_SETBBOX && group.targets.allIds.indexOf(mapId) !== -1;
7379
+ });
7380
+ };
7381
+ // This is fired when the preset is set up and when the projection is changed
7382
+ openlayersListener.startListening({
7383
+ actionCreator: mapActions.setBbox,
7384
+ effect: function effect(_ref, listenerApi) {
7385
+ var payload = _ref.payload;
7386
+ var mapId = payload.mapId,
7387
+ bbox = payload.bbox,
7388
+ srs = payload.srs;
7389
+ var extent = boundingExtent([[bbox.left, bbox.bottom], [bbox.right, bbox.top]]);
7390
+ var storedViewForMap = getViewObjectForMapId(mapId);
7391
+ var view = new View({
7392
+ projection: srs,
7393
+ center: getCenter(extent)
7394
+ });
7395
+ storedViewForMap.setView(view);
7396
+ // 1024 is the current best guess for width / height of a map
7397
+ // Feature request made for OL to help us get this right https://github.com/openlayers/openlayers/issues/16572
7398
+ view.setViewportSize([1024, 1024]);
7399
+ var resolution = view.getResolutionForExtent(extent);
7400
+ view.setResolution(resolution);
7401
+ // Also: if this map is part of a group and the srs has changed => change group view
7402
+ var mapSyncGroup = getGroupForMap(mapId, listenerApi.getState());
7403
+ if (!mapSyncGroup) {
7404
+ return;
7405
+ }
7406
+ var groupView = getViewObjectForSyncGroup(mapSyncGroup);
7407
+ if (!groupView.view.isDef() || groupView.view.getProjection().getCode() !== srs) {
7408
+ groupView.setView(copyView(view));
7409
+ }
7410
+ }
7411
+ });
7412
+ // This is fired when the map view is updated (regardless of if the map is in a group or not)
7413
+ // When a map is in a group, this needs to ensure the view of the map is kept up-to-date
7414
+ openlayersListener.startListening({
7415
+ actionCreator: setBboxSync,
7416
+ effect: function effect(_ref2, listenerApi) {
7417
+ var _payload$source;
7418
+ var payload = _ref2.payload;
7419
+ var mapId = (_payload$source = payload.source) === null || _payload$source === void 0 ? void 0 : _payload$source.payload.sourceId;
7420
+ var mapSyncGroup = getGroupForMap(mapId, listenerApi.getState());
7421
+ if (!mapSyncGroup) {
7422
+ return;
7423
+ }
7424
+ var groupView = getViewObjectForSyncGroup(mapSyncGroup);
7425
+ var mapView = getViewObjectForMapId(mapId);
7426
+ if (mapView.view.getProjection() === groupView.view.getProjection()) {
7427
+ mapView.view.setCenter(groupView.view.getCenter());
7428
+ mapView.view.setResolution(groupView.view.getResolution());
7429
+ } else {
7430
+ mapView.setView(copyView(groupView.view));
7431
+ }
7432
+ }
7433
+ });
7434
+ openlayersListener.startListening({
7435
+ actionCreator: syncGroupAddGroup,
7436
+ effect: function effect(_ref3) {
7437
+ var payload = _ref3.payload;
7438
+ if (payload.type !== SYNCGROUPS_TYPE_SETBBOX) {
7439
+ return;
7440
+ }
7441
+ // Ensure there is an openlayers view for the sync group
7442
+ getViewObjectForSyncGroup(payload.groupId);
7443
+ }
7444
+ });
7445
+ // Ensure sync group view has contents: when a target is added to a group whose view is undefined, copy the view from the target
7446
+ openlayersListener.startListening({
7447
+ actionCreator: syncGroupAddTarget,
7448
+ effect: function effect(_ref4, listenerApi) {
7449
+ var payload = _ref4.payload;
7450
+ var group = getSynchronizationGroup(listenerApi.getState(), payload.groupId);
7451
+ if (!group || group.type !== SYNCGROUPS_TYPE_SETBBOX) {
7452
+ return;
7453
+ }
7454
+ var groupView = getViewObjectForSyncGroup(payload.groupId);
7455
+ if (groupView.view.isDef()) {
7456
+ return;
7457
+ }
7458
+ var mapView = getViewObjectForMapId(payload.targetId);
7459
+ groupView.setView(copyView(mapView.view));
7460
+ }
7461
+ });
7462
+
7170
7463
  var _excluded = ["url"];
7171
7464
  var serviceListener = createListenerMiddleware();
7172
7465
  var fetchService = /*#__PURE__*/function () {
@@ -7180,7 +7473,7 @@ var fetchService = /*#__PURE__*/function () {
7180
7473
  return queryWMSLayers(service.serviceUrl);
7181
7474
  case 3:
7182
7475
  layers = _context.sent;
7183
- listenerApi.dispatch(serviceActions.serviceSetLayers(Object.assign({}, service, {
7476
+ listenerApi.dispatch(serviceActions.serviceSetLayers(_objectSpread2(_objectSpread2({}, service), {}, {
7184
7477
  layers: layers
7185
7478
  })));
7186
7479
  _context.next = 10;
@@ -7216,8 +7509,8 @@ var fetchInitialServices = /*#__PURE__*/function () {
7216
7509
  _context2.next = 5;
7217
7510
  return Promise.all(payload.services.map(function (_ref3) {
7218
7511
  var url = _ref3.url,
7219
- service = _objectWithoutPropertiesLoose(_ref3, _excluded);
7220
- return fetchService(Object.assign({}, service, {
7512
+ service = _objectWithoutProperties(_ref3, _excluded);
7513
+ return fetchService(_objectSpread2(_objectSpread2({}, service), {}, {
7221
7514
  serviceUrl: url
7222
7515
  }), listenerApi);
7223
7516
  }));
@@ -7348,23 +7641,6 @@ routerListener.startListening({
7348
7641
  }()
7349
7642
  });
7350
7643
 
7351
- /* *
7352
- * Licensed under the Apache License, Version 2.0 (the "License");
7353
- * you may not use this file except in compliance with the License.
7354
- * You may obtain a copy of the License at
7355
- *
7356
- * http://www.apache.org/licenses/LICENSE-2.0
7357
- *
7358
- * Unless required by applicable law or agreed to in writing, software
7359
- * distributed under the License is distributed on an "AS IS" BASIS,
7360
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7361
- * See the License for the specific language governing permissions and
7362
- * limitations under the License.
7363
- *
7364
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7365
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
7366
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
7367
- * */
7368
7644
  // reducer utils
7369
7645
  var drawAdapter = createEntityAdapter({
7370
7646
  selectId: function selectId(draw) {
@@ -7375,9 +7651,9 @@ var getDrawToolByLayerId = function getDrawToolByLayerId(draft, layerId) {
7375
7651
  var drawTool = draft.ids.map(function (id) {
7376
7652
  return draft.entities[id];
7377
7653
  }).find(function (tool) {
7378
- return (tool == null ? void 0 : tool.geoJSONLayerId) === layerId;
7654
+ return (tool === null || tool === void 0 ? void 0 : tool.geoJSONLayerId) === layerId;
7379
7655
  });
7380
- return (drawTool == null ? void 0 : drawTool.drawToolId) || undefined;
7656
+ return (drawTool === null || drawTool === void 0 ? void 0 : drawTool.drawToolId) || undefined;
7381
7657
  };
7382
7658
  var initialState = drawAdapter.getInitialState();
7383
7659
  var slice = createSlice({
@@ -7424,11 +7700,11 @@ var slice = createSlice({
7424
7700
  var tool = drawTool.drawModes.find(function (drawMode) {
7425
7701
  return drawMode.drawModeId === drawModeId;
7426
7702
  });
7427
- if ((tool == null ? void 0 : tool.isSelectable) === false) {
7703
+ if ((tool === null || tool === void 0 ? void 0 : tool.isSelectable) === false) {
7428
7704
  drawTool.activeDrawModeId = '';
7429
7705
  return;
7430
7706
  }
7431
- if ((drawTool == null ? void 0 : drawTool.activeDrawModeId) !== drawModeId || !shouldUpdateShape) {
7707
+ if ((drawTool === null || drawTool === void 0 ? void 0 : drawTool.activeDrawModeId) !== drawModeId || !shouldUpdateShape) {
7432
7708
  drawTool.activeDrawModeId = drawModeId;
7433
7709
  } else {
7434
7710
  drawTool.activeDrawModeId = '';
@@ -7457,7 +7733,7 @@ var slice = createSlice({
7457
7733
  }
7458
7734
  var newModes = drawTool.drawModes.map(function (mode) {
7459
7735
  if (mode.drawModeId === drawModeId) {
7460
- return Object.assign({}, mode, {
7736
+ return _objectSpread2(_objectSpread2({}, mode), {}, {
7461
7737
  shape: shape
7462
7738
  }, title && {
7463
7739
  title: title
@@ -7496,11 +7772,11 @@ var slice = createSlice({
7496
7772
  var entity = draft.entities[drawToolId];
7497
7773
  if (drawToolId && entity !== undefined) {
7498
7774
  var _entity$drawModes;
7499
- var newDrawModes = entity == null || (_entity$drawModes = entity.drawModes) == null ? void 0 : _entity$drawModes.map(function (mode) {
7775
+ var newDrawModes = entity === null || entity === void 0 || (_entity$drawModes = entity.drawModes) === null || _entity$drawModes === void 0 ? void 0 : _entity$drawModes.map(function (mode) {
7500
7776
  if (mode.shape.type === 'Feature') {
7501
- return Object.assign({}, mode, {
7502
- shape: Object.assign({}, mode.shape, {
7503
- properties: Object.assign({}, mode.shape.properties, properties)
7777
+ return _objectSpread2(_objectSpread2({}, mode), {}, {
7778
+ shape: _objectSpread2(_objectSpread2({}, mode.shape), {}, {
7779
+ properties: _objectSpread2(_objectSpread2({}, mode.shape.properties), properties)
7504
7780
  })
7505
7781
  });
7506
7782
  }
@@ -7552,7 +7828,7 @@ var getDrawingtoolStore = function getDrawingtoolStore(store) {
7552
7828
  };
7553
7829
  var _drawAdapter$getSelec = drawAdapter.getSelectors(function (state) {
7554
7830
  var _state$drawingtools;
7555
- return (_state$drawingtools = state == null ? void 0 : state.drawingtools) != null ? _state$drawingtools : {
7831
+ return (_state$drawingtools = state === null || state === void 0 ? void 0 : state.drawingtools) !== null && _state$drawingtools !== void 0 ? _state$drawingtools : {
7556
7832
  entities: {},
7557
7833
  ids: []
7558
7834
  };
@@ -7560,35 +7836,35 @@ var _drawAdapter$getSelec = drawAdapter.getSelectors(function (state) {
7560
7836
  selectDrawToolById = _drawAdapter$getSelec.selectById,
7561
7837
  selectAllDrawingTools = _drawAdapter$getSelec.selectAll;
7562
7838
  var getActiveDrawToolId = createSelector(selectAllDrawingTools, function (drawtools) {
7563
- var activeDrawTool = drawtools == null ? void 0 : drawtools.find(function (drawtool) {
7839
+ var activeDrawTool = drawtools === null || drawtools === void 0 ? void 0 : drawtools.find(function (drawtool) {
7564
7840
  return drawtool.activeDrawModeId !== '';
7565
7841
  });
7566
- return (activeDrawTool == null ? void 0 : activeDrawTool.drawToolId) || '';
7842
+ return (activeDrawTool === null || activeDrawTool === void 0 ? void 0 : activeDrawTool.drawToolId) || '';
7567
7843
  });
7568
7844
  var getDrawModeById = createSelector(selectDrawToolById, function (_store, _drawToolId, drawModeId) {
7569
7845
  return drawModeId;
7570
7846
  }, function (draw, drawModeId) {
7571
- return draw == null ? void 0 : draw.drawModes.find(function (tool) {
7847
+ return draw === null || draw === void 0 ? void 0 : draw.drawModes.find(function (tool) {
7572
7848
  return tool.drawModeId === drawModeId;
7573
7849
  });
7574
7850
  });
7575
7851
  var getActiveDrawModeId = createSelector(selectDrawToolById, function (drawingTool) {
7576
- return (drawingTool == null ? void 0 : drawingTool.activeDrawModeId) || '';
7852
+ return (drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.activeDrawModeId) || '';
7577
7853
  });
7578
7854
  var getDrawToolGeoJSONLayerId = createSelector(selectDrawToolById, function (drawingTool) {
7579
- return (drawingTool == null ? void 0 : drawingTool.geoJSONLayerId) || '';
7855
+ return (drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.geoJSONLayerId) || '';
7580
7856
  });
7581
7857
  var getGeoJSONIntersectionLayerId = createSelector(selectDrawToolById, function (drawingTool) {
7582
- return drawingTool == null ? void 0 : drawingTool.geoJSONIntersectionLayerId;
7858
+ return drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.geoJSONIntersectionLayerId;
7583
7859
  });
7584
7860
  var getGeoJSONIntersectionBoundsLayerId = createSelector(selectDrawToolById, function (drawingTool) {
7585
- return drawingTool == null ? void 0 : drawingTool.geoJSONIntersectionBoundsLayerId;
7861
+ return drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.geoJSONIntersectionBoundsLayerId;
7586
7862
  });
7587
7863
  var getShouldAllowMultipleShapes = createSelector(selectDrawToolById, function (drawingTool) {
7588
- return (drawingTool == null ? void 0 : drawingTool.shouldAllowMultipleShapes) || false;
7864
+ return (drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.shouldAllowMultipleShapes) || false;
7589
7865
  });
7590
7866
  var getActiveDrawMode = createSelector(selectDrawToolById, function (drawingTool) {
7591
- return drawingTool == null ? void 0 : drawingTool.drawModes.find(function (mode) {
7867
+ return drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.drawModes.find(function (mode) {
7592
7868
  return mode.drawModeId === drawingTool.activeDrawModeId;
7593
7869
  });
7594
7870
  });
@@ -7709,10 +7985,10 @@ drawingToolListener.startListening({
7709
7985
  drawMode: ''
7710
7986
  }));
7711
7987
  geoJSONLayer = getLayerById(listenerApi.getState(), drawingTool.geoJSONLayerId);
7712
- geoJSON = geoJSONLayer == null ? void 0 : geoJSONLayer.geojson;
7988
+ geoJSON = geoJSONLayer === null || geoJSONLayer === void 0 ? void 0 : geoJSONLayer.geojson;
7713
7989
  lastFeatureIndex = geoJSON !== undefined ? getLastEmptyFeatureIndex(geoJSON) : undefined;
7714
7990
  if (lastFeatureIndex !== undefined) {
7715
- newGeoJSON = Object.assign({}, geoJSON, {
7991
+ newGeoJSON = _objectSpread2(_objectSpread2({}, geoJSON), {}, {
7716
7992
  features: geoJSON.features.filter(function (_feature, index) {
7717
7993
  return index !== lastFeatureIndex;
7718
7994
  })
@@ -7753,10 +8029,10 @@ drawingToolListener.startListening({
7753
8029
  // check tool is selected of existing drawn shape
7754
8030
  currentGeoJSONLayer = getLayerById(listenerApi.getState(), drawingTool.geoJSONLayerId);
7755
8031
  _ref3 = currentGeoJSONLayer || {}, currentGeoJSON = _ref3.geojson, _ref3$selectedFeature = _ref3.selectedFeatureIndex, selectedFeatureIndex = _ref3$selectedFeature === void 0 ? 0 : _ref3$selectedFeature;
7756
- currentSelectionType = currentGeoJSON == null || (_currentGeoJSON$featu = currentGeoJSON.features[selectedFeatureIndex]) == null || (_currentGeoJSON$featu = _currentGeoJSON$featu.properties) == null ? void 0 : _currentGeoJSON$featu.selectionType;
8032
+ currentSelectionType = currentGeoJSON === null || currentGeoJSON === void 0 || (_currentGeoJSON$featu = currentGeoJSON.features[selectedFeatureIndex]) === null || _currentGeoJSON$featu === void 0 || (_currentGeoJSON$featu = _currentGeoJSON$featu.properties) === null || _currentGeoJSON$featu === void 0 ? void 0 : _currentGeoJSON$featu.selectionType;
7757
8033
  newSelectionType = newDrawMode.selectionType;
7758
8034
  isNewToolSelected = currentSelectionType !== newSelectionType;
7759
- shouldUpdateNewShape = !(currentGeoJSON != null && (_currentGeoJSON$featu2 = currentGeoJSON.features) != null && _currentGeoJSON$featu2.length) || isNewToolSelected || !newDrawMode.isSelectable && shouldAllowMultipleShapes; // don't change anything if same tool is selected again
8035
+ shouldUpdateNewShape = !(currentGeoJSON !== null && currentGeoJSON !== void 0 && (_currentGeoJSON$featu2 = currentGeoJSON.features) !== null && _currentGeoJSON$featu2 !== void 0 && _currentGeoJSON$featu2.length) || isNewToolSelected || !newDrawMode.isSelectable && shouldAllowMultipleShapes; // don't change anything if same tool is selected again
7760
8036
  if (shouldUpdateNewShape && shouldUpdateShape) {
7761
8037
  shapeWithSelectionType = addSelectionTypeToGeoJSON(newDrawMode.shape, newDrawMode.selectionType);
7762
8038
  geoJSONFeatureCollection = getFeatureCollection(shapeWithSelectionType, shouldAllowMultipleShapes, currentGeoJSON);
@@ -7768,12 +8044,12 @@ drawingToolListener.startListening({
7768
8044
  layerId: drawingTool.geoJSONLayerId,
7769
8045
  selectedFeatureIndex: _newGeoJSON.features.length - 1
7770
8046
  }));
7771
- listenerApi.dispatch(layerActions.updateFeature(Object.assign({
8047
+ listenerApi.dispatch(layerActions.updateFeature(_objectSpread2(_objectSpread2({
7772
8048
  layerId: drawingTool.geoJSONLayerId,
7773
8049
  geojson: _newGeoJSON
7774
8050
  }, geoJSONIntersectionLayerId && {
7775
8051
  geoJSONIntersectionLayerId: geoJSONIntersectionLayerId
7776
- }, geoJSONIntersectionBoundsLayerId && {
8052
+ }), geoJSONIntersectionBoundsLayerId && {
7777
8053
  geoJSONIntersectionBoundsLayerId: geoJSONIntersectionBoundsLayerId
7778
8054
  })));
7779
8055
  }
@@ -7907,6 +8183,179 @@ layersListener.startListening({
7907
8183
  }()
7908
8184
  });
7909
8185
 
8186
+ /* A map with all the timerIds and their current step */
8187
+ var stepMap = new Map();
8188
+ /* A map with a list of timers and their dwell */
8189
+ var timerDwellMap = new Map();
8190
+ /**
8191
+ * Returns the next step for given timerId.
8192
+ * @param timerId The timer id
8193
+ * @param numberOfStepsInAnimation Animation length in steps
8194
+ * @param numStepsToGoForward Amount of steps to go forwards, defaults to 1. Can be positive and negative
8195
+ * @returns
8196
+ */
8197
+ var getNextStep = function getNextStep(timerId, numberOfStepsInAnimation) {
8198
+ var numStepsToGoForward = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
8199
+ var currentStep = getCurrentStep(timerId);
8200
+ var nextStep = currentStep + numStepsToGoForward;
8201
+ var nextStepClipped = (nextStep % numberOfStepsInAnimation + numberOfStepsInAnimation) % numberOfStepsInAnimation;
8202
+ return nextStepClipped;
8203
+ };
8204
+ /**
8205
+ * Handles dwell at the end of the animation loop sequence. The number of steps to wait till proceed can be set by the dwell parameter.
8206
+ * @param timerId The timer id
8207
+ * @param numberOfStepsInAnimation Number of steps in the animation
8208
+ * @param dwell The number of steps to wait at the end of the animation sequence before to continue
8209
+ * @returns
8210
+ */
8211
+ var handleTimerDwell = function handleTimerDwell(timerId, numberOfStepsInAnimation) {
8212
+ var dwell = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 8;
8213
+ if (dwell > 0) {
8214
+ var currentStep = getCurrentStep(timerId);
8215
+ // Reset the dwell if we are not at the last animation step
8216
+ if (currentStep < numberOfStepsInAnimation - 1) {
8217
+ timerDwellMap.set(timerId, dwell);
8218
+ return false;
8219
+ }
8220
+ // We are at the last animation step, check the dwell
8221
+ var timerDwell = timerDwellMap.has(timerId) && timerDwellMap.get(timerId) || 0;
8222
+ if (currentStep === numberOfStepsInAnimation - 1 && timerDwell > 0) {
8223
+ timerDwellMap.set(timerId, timerDwell - 1);
8224
+ return true;
8225
+ }
8226
+ }
8227
+ return false;
8228
+ };
8229
+ /**
8230
+ * Set step for the timerId
8231
+ * @param timerId
8232
+ * @param timerStep
8233
+ */
8234
+ var setStep = function setStep(timerId, timerStep) {
8235
+ stepMap.set(timerId, timerStep);
8236
+ };
8237
+ /**
8238
+ * Gets the current step for the timer
8239
+ * @param timerId
8240
+ * @returns
8241
+ */
8242
+ var getCurrentStep = function getCurrentStep(timerId) {
8243
+ return stepMap.get(timerId) || 0;
8244
+ };
8245
+ /**
8246
+ * Checks if the next step is available for all provided layers
8247
+ * @param reduxLayers
8248
+ * @param nextTimeString
8249
+ * @returns
8250
+ */
8251
+ var isNextStepAvailable = function isNextStepAvailable(reduxLayers, nextTimeString) {
8252
+ // Get all wmLayers for the found id's
8253
+ var wmLayers = reduxLayers.map(function (reduxLayer) {
8254
+ return reduxLayer.id && getWMLayerById(reduxLayer.id);
8255
+ }).filter(function (l) {
8256
+ return !!l;
8257
+ });
8258
+ // Returns a layer which could have an image for the requested time, but which isn't loaded yet.
8259
+ var isThereSomethingNotAvailable = wmLayers.map(function (l) {
8260
+ var _l$getDimension;
8261
+ if (!l || !l.olSource) {
8262
+ // No OpenLayers source, do nothing, so do not flag that something is not available
8263
+ return {
8264
+ status: true
8265
+ };
8266
+ }
8267
+ // Check if there is a timevalue available
8268
+ var closestValue = (_l$getDimension = l.getDimension('time')) === null || _l$getDimension === void 0 ? void 0 : _l$getDimension.getClosestValue(nextTimeString);
8269
+ if (!closestValue || WMInvalidDateValues.has(closestValue)) {
8270
+ // No value available, so do not flag that something is not available
8271
+ return {
8272
+ status: true
8273
+ };
8274
+ }
8275
+ var olSource = l.olSource;
8276
+ var hasImageAvailableForRequestedTimeStep = olSource.hasImageForTimeValue(closestValue);
8277
+ // If there is no image available for requested timestep, return true and flag that this thing is not ready yet.
8278
+ if (hasImageAvailableForRequestedTimeStep) {
8279
+ return {
8280
+ status: true
8281
+ };
8282
+ }
8283
+ olSource.loadImageForTimeValue(closestValue);
8284
+ return {
8285
+ status: false
8286
+ };
8287
+ });
8288
+ var nextStepIsAvailable = isThereSomethingNotAvailable.filter(function (d) {
8289
+ return d.status === true;
8290
+ }).length === wmLayers.length;
8291
+ return nextStepIsAvailable;
8292
+ };
8293
+ /**
8294
+ * This handler is triggered by the metronome. An array of timerIds is given as argument.
8295
+ * It will update the animation loop of multiple maps and sliders
8296
+ * It will prefetch images for maps
8297
+ * @param timerIds string[] array of timerIds
8298
+ * @param listenerApi ListenerEffectAPI<CoreAppStore, Dispatch, unknown> listenerApi as received from listener
8299
+ */
8300
+ var olMetronomeHandler = function olMetronomeHandler(timerIds, listenerApi) {
8301
+ var targetsWithUpdateValue = [];
8302
+ var _iterator = _createForOfIteratorHelper(timerIds),
8303
+ _step;
8304
+ try {
8305
+ var _loop = function _loop() {
8306
+ var timerId = _step.value;
8307
+ var animationListValuesNameAndValue = getAnimationList(listenerApi.getState(), timerId);
8308
+ var animationListValues = animationListValuesNameAndValue.map(function (nameAndValue) {
8309
+ return nameAndValue.value;
8310
+ });
8311
+ var targets = getTargets(listenerApi.getState(), {
8312
+ sourceId: timerId,
8313
+ origin: timerId
8314
+ }, SYNCGROUPS_TYPE_SETTIME);
8315
+ if (targets.length === 0) {
8316
+ // When there are no targets, default to one
8317
+ targets.push({
8318
+ targetId: timerId,
8319
+ value: ''
8320
+ });
8321
+ }
8322
+ var timerIsInDwell = handleTimerDwell(timerId, animationListValues.length);
8323
+ // Collect all layers for this syncgroups target
8324
+ var reduxLayers = [];
8325
+ targets.forEach(function (target) {
8326
+ reduxLayers.push.apply(reduxLayers, _toConsumableArray(getLayersByMapId(listenerApi.getState(), target.targetId).filter(function (l) {
8327
+ return l.layerType === LayerType.mapLayer;
8328
+ })));
8329
+ });
8330
+ var nextStep = getNextStep(timerId, animationListValues.length, 1);
8331
+ var timerShouldStepForward = isNextStepAvailable(reduxLayers, animationListValues[nextStep]) && !timerIsInDwell;
8332
+ // Determine the next step
8333
+ var timerStep = timerShouldStepForward ? getNextStep(timerId, animationListValues.length) : getCurrentStep(timerId);
8334
+ setStep(timerId, timerStep);
8335
+ var updatedValue = animationListValues[timerStep];
8336
+ targetsWithUpdateValue.push.apply(targetsWithUpdateValue, _toConsumableArray(targets.map(function (target) {
8337
+ return _objectSpread2(_objectSpread2({}, target), {}, {
8338
+ value: updatedValue
8339
+ });
8340
+ })));
8341
+ var speedDelay = getMapAnimationDelay(listenerApi.getState(), timerId);
8342
+ var speed = 1000 / (speedDelay || 1);
8343
+ metronome.setSpeed(timerId, speed);
8344
+ };
8345
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
8346
+ _loop();
8347
+ }
8348
+ // Update all targets of all sync groups in one action.
8349
+ } catch (err) {
8350
+ _iterator.e(err);
8351
+ } finally {
8352
+ _iterator.f();
8353
+ }
8354
+ if (targetsWithUpdateValue.length > 0) {
8355
+ listenerApi.dispatch(setTimeSync(null, targetsWithUpdateValue, ['metronomelistener']));
8356
+ }
8357
+ };
8358
+
7910
8359
  /**
7911
8360
  * This handler is triggered by the metronome. An array of timerIds is given as argument.
7912
8361
  * It will update the animation loop of multiple maps and sliders
@@ -7915,43 +8364,55 @@ layersListener.startListening({
7915
8364
  * @param listenerApi ListenerEffectAPI<CoreAppStore, Dispatch, unknown> listenerApi as received from listener
7916
8365
  */
7917
8366
  var metronomeHandler = function metronomeHandler(timerIds, listenerApi) {
8367
+ if (isOpenLayersEnabled()) {
8368
+ olMetronomeHandler(timerIds, listenerApi);
8369
+ return;
8370
+ }
7918
8371
  var targetsWithUpdateValue = [];
7919
- var _loop = function _loop() {
7920
- var timerId = _step.value;
7921
- var animationListValuesNameAndValue = getAnimationList(listenerApi.getState(), timerId);
7922
- var animationListValues = animationListValuesNameAndValue.map(function (nameAndValue) {
7923
- return nameAndValue.value;
7924
- });
7925
- var targets = getTargets(listenerApi.getState(), {
7926
- sourceId: timerId,
7927
- origin: timerId
7928
- }, SYNCGROUPS_TYPE_SETTIME);
7929
- if (targets.length === 0) {
7930
- // When there are no targets, default to one
7931
- targets.push({
7932
- targetId: timerId,
7933
- value: ''
8372
+ var _iterator = _createForOfIteratorHelper(timerIds),
8373
+ _step;
8374
+ try {
8375
+ var _loop = function _loop() {
8376
+ var timerId = _step.value;
8377
+ var animationListValuesNameAndValue = getAnimationList(listenerApi.getState(), timerId);
8378
+ var animationListValues = animationListValuesNameAndValue.map(function (nameAndValue) {
8379
+ return nameAndValue.value;
7934
8380
  });
8381
+ var targets = getTargets(listenerApi.getState(), {
8382
+ sourceId: timerId,
8383
+ origin: timerId
8384
+ }, SYNCGROUPS_TYPE_SETTIME);
8385
+ if (targets.length === 0) {
8386
+ // When there are no targets, default to one
8387
+ targets.push({
8388
+ targetId: timerId,
8389
+ value: ''
8390
+ });
8391
+ }
8392
+ var timerIsInDwell = handleTimerDwell$1(timerId, animationListValues.length);
8393
+ var timerShouldStepForward = prefetchAnimationTargetsForMetronome(timerId, animationListValues, targets) && !timerIsInDwell;
8394
+ // Determine the next step
8395
+ var timerStep = timerShouldStepForward ? getNextStep$1(timerId, animationListValues.length) : getCurrentStep$1(timerId);
8396
+ setStep$1(timerId, timerStep);
8397
+ var updatedValue = animationListValues[timerStep];
8398
+ targetsWithUpdateValue.push.apply(targetsWithUpdateValue, _toConsumableArray(targets.map(function (target) {
8399
+ return _objectSpread2(_objectSpread2({}, target), {}, {
8400
+ value: updatedValue
8401
+ });
8402
+ })));
8403
+ var speedDelay = getMapAnimationDelay(listenerApi.getState(), timerId);
8404
+ var speed = 1000 / (speedDelay || 1);
8405
+ metronome.setSpeed(timerId, speed);
8406
+ };
8407
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
8408
+ _loop();
7935
8409
  }
7936
- var timerIsInDwell = handleTimerDwell(timerId, animationListValues.length);
7937
- var timerShouldStepForward = prefetchAnimationTargetsForMetronome(timerId, animationListValues, targets) && !timerIsInDwell;
7938
- // Determine the next step
7939
- var timerStep = timerShouldStepForward ? getNextStep(timerId, animationListValues.length) : getCurrentStep(timerId);
7940
- setStep(timerId, timerStep);
7941
- var updatedValue = animationListValues[timerStep];
7942
- targetsWithUpdateValue.push.apply(targetsWithUpdateValue, targets.map(function (target) {
7943
- return Object.assign({}, target, {
7944
- value: updatedValue
7945
- });
7946
- }));
7947
- var speedDelay = getMapAnimationDelay(listenerApi.getState(), timerId);
7948
- var speed = 1000 / (speedDelay || 1);
7949
- metronome.setSpeed(timerId, speed);
7950
- };
7951
- for (var _iterator = _createForOfIteratorHelperLoose(timerIds), _step; !(_step = _iterator()).done;) {
7952
- _loop();
8410
+ // Update all targets of all sync groups in one action.
8411
+ } catch (err) {
8412
+ _iterator.e(err);
8413
+ } finally {
8414
+ _iterator.f();
7953
8415
  }
7954
- // Update all targets of all sync groups in one action.
7955
8416
  if (targetsWithUpdateValue.length > 0) {
7956
8417
  listenerApi.dispatch(setTimeSync(null, targetsWithUpdateValue, ['metronomelistener']));
7957
8418
  }
@@ -8000,18 +8461,26 @@ metronomeListener.startListening({
8000
8461
  * */
8001
8462
  var unifyReducerMaps = function unifyReducerMaps(reducerMaps) {
8002
8463
  var unifiedReducerMaps = {};
8003
- for (var _iterator = _createForOfIteratorHelperLoose(reducerMaps), _step; !(_step = _iterator()).done;) {
8004
- var reducersMap = _step.value;
8005
- for (var _i = 0, _Object$entries = Object.entries(reducersMap); _i < _Object$entries.length; _i++) {
8006
- var _Object$entries$_i = _Object$entries[_i],
8007
- key = _Object$entries$_i[0],
8008
- reducer = _Object$entries$_i[1];
8009
- if (key in unifiedReducerMaps && unifiedReducerMaps[key] !== reducer) {
8010
- throw new Error("Reducer key " + key + " is already defined with a different reducer");
8011
- } else {
8012
- unifiedReducerMaps[key] = reducer;
8464
+ var _iterator = _createForOfIteratorHelper(reducerMaps),
8465
+ _step;
8466
+ try {
8467
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
8468
+ var reducersMap = _step.value;
8469
+ for (var _i = 0, _Object$entries = Object.entries(reducersMap); _i < _Object$entries.length; _i++) {
8470
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
8471
+ key = _Object$entries$_i[0],
8472
+ reducer = _Object$entries$_i[1];
8473
+ if (key in unifiedReducerMaps && unifiedReducerMaps[key] !== reducer) {
8474
+ throw new Error("Reducer key ".concat(key, " is already defined with a different reducer"));
8475
+ } else {
8476
+ unifiedReducerMaps[key] = reducer;
8477
+ }
8013
8478
  }
8014
8479
  }
8480
+ } catch (err) {
8481
+ _iterator.e(err);
8482
+ } finally {
8483
+ _iterator.f();
8015
8484
  }
8016
8485
  return unifiedReducerMaps;
8017
8486
  };
@@ -8034,18 +8503,15 @@ var unifyReducerMaps = function unifyReducerMaps(reducerMaps) {
8034
8503
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
8035
8504
  * */
8036
8505
  var getSingularDrawtoolDrawLayerId = function getSingularDrawtoolDrawLayerId(mapId) {
8037
- return "drawlayer-" + mapId;
8506
+ return "drawlayer-".concat(mapId);
8038
8507
  };
8039
8508
 
8040
- var createLayersState = function createLayersState(layerId, props) {
8041
- var _byId;
8042
- if (props === void 0) {
8043
- props = {};
8044
- }
8509
+ var createLayersState = function createLayersState(layerId) {
8510
+ var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8045
8511
  return {
8046
- byId: (_byId = {}, _byId[layerId] = createLayer(Object.assign({
8512
+ byId: _defineProperty({}, layerId, createLayer(_objectSpread2({
8047
8513
  id: layerId
8048
- }, props)), _byId),
8514
+ }, props))),
8049
8515
  allIds: [layerId],
8050
8516
  availableBaseLayers: {
8051
8517
  allIds: [],
@@ -8062,18 +8528,26 @@ var createMultipleLayersState = function createMultipleLayersState(layers, mapId
8062
8528
  byId: {}
8063
8529
  }
8064
8530
  };
8065
- for (var _iterator = _createForOfIteratorHelperLoose(layers), _step; !(_step = _iterator()).done;) {
8066
- var layer = _step.value;
8067
- var layerState = createLayer(Object.assign({}, layer, {
8068
- id: layer.id,
8069
- mapId: mapId
8070
- }));
8071
- mockState.byId[layer.id] = Object.assign({}, layerState);
8072
- mockState.allIds.push(layer.id);
8073
- if (layer.layerType === LayerType.baseLayer) {
8074
- mockState.availableBaseLayers.byId[layer.id] = Object.assign({}, layerState);
8075
- mockState.availableBaseLayers.allIds.push(layer.id);
8531
+ var _iterator = _createForOfIteratorHelper(layers),
8532
+ _step;
8533
+ try {
8534
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
8535
+ var layer = _step.value;
8536
+ var layerState = createLayer(_objectSpread2(_objectSpread2({}, layer), {}, {
8537
+ id: layer.id,
8538
+ mapId: mapId
8539
+ }));
8540
+ mockState.byId[layer.id] = _objectSpread2({}, layerState);
8541
+ mockState.allIds.push(layer.id);
8542
+ if (layer.layerType === LayerType.baseLayer) {
8543
+ mockState.availableBaseLayers.byId[layer.id] = _objectSpread2({}, layerState);
8544
+ mockState.availableBaseLayers.allIds.push(layer.id);
8545
+ }
8076
8546
  }
8547
+ } catch (err) {
8548
+ _iterator.e(err);
8549
+ } finally {
8550
+ _iterator.f();
8077
8551
  }
8078
8552
  return mockState;
8079
8553
  };
@@ -8090,7 +8564,7 @@ var createWebmapState = function createWebmapState() {
8090
8564
  var mapState = createMap({
8091
8565
  id: mapId
8092
8566
  });
8093
- mockState.byId[mapId] = Object.assign({}, mapState);
8567
+ mockState.byId[mapId] = _objectSpread2({}, mapState);
8094
8568
  mockState.allIds.push(mapId);
8095
8569
  }
8096
8570
  return mockState;
@@ -8108,7 +8582,7 @@ var createMapDimensionsState = function createMapDimensionsState(dimensions) {
8108
8582
  var mapState = createMap({
8109
8583
  id: mapId
8110
8584
  });
8111
- mockState.byId[mapId] = Object.assign({}, mapState);
8585
+ mockState.byId[mapId] = _objectSpread2({}, mapState);
8112
8586
  mockState.byId[mapId].dimensions = dimensions;
8113
8587
  mockState.allIds.push(mapId);
8114
8588
  }
@@ -8153,7 +8627,7 @@ var mockStateMapWithLayer = function mockStateMapWithLayer(layer, mapId) {
8153
8627
  service: layer.service,
8154
8628
  dimensions: layer.dimensions
8155
8629
  }),
8156
- syncGroups: Object.assign({}, initialState$2, {
8630
+ syncGroups: _objectSpread2(_objectSpread2({}, initialState$2), {}, {
8157
8631
  viewState: {
8158
8632
  timeslider: {
8159
8633
  groups: [{
@@ -8176,7 +8650,7 @@ var mockStateMapWithLayer = function mockStateMapWithLayer(layer, mapId) {
8176
8650
  };
8177
8651
  var mockLinkedState = function mockLinkedState() {
8178
8652
  return {
8179
- syncGroups: Object.assign({}, initialState$2, {
8653
+ syncGroups: _objectSpread2(_objectSpread2({}, initialState$2), {}, {
8180
8654
  viewState: {
8181
8655
  timeslider: {
8182
8656
  groups: [{
@@ -8289,7 +8763,7 @@ var mockStateMapWithMultipleLayers = function mockStateMapWithMultipleLayers(lay
8289
8763
  allIds: ['serviceid_1']
8290
8764
  },
8291
8765
  layers: createMultipleLayersState(layers, mapId),
8292
- syncGroups: Object.assign({}, initialState$2, {
8766
+ syncGroups: _objectSpread2(_objectSpread2({}, initialState$2), {}, {
8293
8767
  viewState: {
8294
8768
  timeslider: {
8295
8769
  groups: [{
@@ -8362,7 +8836,7 @@ var mockStateMapWithDimensions = function mockStateMapWithDimensions(layer, mapI
8362
8836
  mapId: mapId,
8363
8837
  service: layer.service,
8364
8838
  dimensions: layer.dimensions,
8365
- enabled: (layer == null ? void 0 : layer.enabled) !== undefined ? layer.enabled : true
8839
+ enabled: (layer === null || layer === void 0 ? void 0 : layer.enabled) !== undefined ? layer.enabled : true
8366
8840
  })
8367
8841
  };
8368
8842
  };
@@ -8425,23 +8899,6 @@ var constants = /*#__PURE__*/Object.freeze({
8425
8899
  supportedComponentTypesForLinking: supportedComponentTypesForLinking
8426
8900
  });
8427
8901
 
8428
- /* *
8429
- * Licensed under the Apache License, Version 2.0 (the "License");
8430
- * you may not use this file except in compliance with the License.
8431
- * You may obtain a copy of the License at
8432
- *
8433
- * http://www.apache.org/licenses/LICENSE-2.0
8434
- *
8435
- * Unless required by applicable law or agreed to in writing, software
8436
- * distributed under the License is distributed on an "AS IS" BASIS,
8437
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8438
- * See the License for the specific language governing permissions and
8439
- * limitations under the License.
8440
- *
8441
- * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
8442
- * Copyright 2025 - Finnish Meteorological Institute (FMI)
8443
- * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
8444
- * */
8445
8902
  var storeReducerMap = {
8446
8903
  webmap: mapReducer,
8447
8904
  services: serviceReducer,
@@ -8452,7 +8909,7 @@ var storeReducerMap = {
8452
8909
  drawingtools: drawingToolReducer,
8453
8910
  router: routerReducer
8454
8911
  };
8455
- var storeMiddlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, metronomeListener.middleware, syncGroupsListener.middleware, genericListener.middleware, drawingToolListener.middleware, routerListener.middleware];
8912
+ var storeMiddlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, metronomeListener.middleware, syncGroupsListener.middleware, genericListener.middleware, drawingToolListener.middleware, routerListener.middleware, openlayersListener.middleware];
8456
8913
  var storeRootReducer = combineReducers(storeReducerMap);
8457
8914
  var createMockStore = function createMockStore(mockState) {
8458
8915
  return configureStore({
@@ -8476,26 +8933,16 @@ var getDefaultEnhancers = function getDefaultEnhancers() {
8476
8933
  * @param enableDevTools Set to true to enable redux devtools.
8477
8934
  * @returns A redux store you can use with the core components
8478
8935
  */
8479
- var configureOpenGeoWebStore = function configureOpenGeoWebStore(preloadedState, extraReducers, extraMiddleWares, extraEnhancers, enableDevTools) {
8480
- if (preloadedState === void 0) {
8481
- preloadedState = {};
8482
- }
8483
- if (extraReducers === void 0) {
8484
- extraReducers = {};
8485
- }
8486
- if (extraMiddleWares === void 0) {
8487
- extraMiddleWares = [];
8488
- }
8489
- if (extraEnhancers === void 0) {
8490
- extraEnhancers = getDefaultEnhancers();
8491
- }
8492
- if (enableDevTools === void 0) {
8493
- enableDevTools = false;
8494
- }
8936
+ var configureOpenGeoWebStore = function configureOpenGeoWebStore() {
8937
+ var preloadedState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8938
+ var extraReducers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8939
+ var extraMiddleWares = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
8940
+ var extraEnhancers = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : getDefaultEnhancers();
8941
+ var enableDevTools = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
8495
8942
  var allReducers = unifyReducerMaps([storeReducerMap, extraReducers]);
8496
8943
  var openGeoWebReducers = combineReducers(allReducers);
8497
8944
  // Combine middlewares
8498
- var middlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, genericListener.middleware].concat(extraMiddleWares);
8945
+ var middlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, genericListener.middleware].concat(_toConsumableArray(extraMiddleWares));
8499
8946
  // Ensure we do not add middlewares twice
8500
8947
  var uniqueMiddlewares = Array.from(new Set(middlewares.map(function (obj) {
8501
8948
  return obj;
@@ -8504,11 +8951,11 @@ var configureOpenGeoWebStore = function configureOpenGeoWebStore(preloadedState,
8504
8951
  reducer: openGeoWebReducers,
8505
8952
  preloadedState: preloadedState,
8506
8953
  enhancers: function enhancers(defaultEnhancers) {
8507
- return [compose.apply(void 0, [].concat(defaultEnhancers, extraEnhancers))];
8954
+ return [compose.apply(void 0, [].concat(_toConsumableArray(defaultEnhancers), _toConsumableArray(extraEnhancers)))];
8508
8955
  },
8509
8956
  devTools: enableDevTools,
8510
8957
  middleware: function middleware(getDefaultMiddleware) {
8511
- return [].concat(getDefaultMiddleware({
8958
+ return _toConsumableArray(getDefaultMiddleware({
8512
8959
  serializableCheck: {
8513
8960
  warnAfter: 128
8514
8961
  },
@@ -8520,4 +8967,4 @@ var configureOpenGeoWebStore = function configureOpenGeoWebStore(preloadedState,
8520
8967
  });
8521
8968
  };
8522
8969
 
8523
- export { IS_LEGEND_OPEN_BY_DEFAULT, configureOpenGeoWebStore, createMockStore, drawingToolActions, drawingToolListener, drawingToolReducer, selectors as drawingToolSelectors, filterLayers$1 as filterLayers, genericActions, genericListener, selectors$3 as genericSelectors, types as genericTypes, getSingularDrawtoolDrawLayerId, getUserAddedServices, initialState$2 as initialState, layerActions, layerReducer, selectors$6 as layerSelectors, types$3 as layerTypes, utils$1 as layerUtils, layersListener, constants as linkComponentTypesConstants, loadingIndicatorActions, constants$1 as loadingIndicatorConstants, loadingIndicatorReducer, selectors$2 as loadingIndicatorSelectors, mapActions, enums as mapEnums, mapListener, mapReducer, selectors$1 as mapSelectors, types$4 as mapTypes, mapUtils, metronomeListener, routerActions, routerListener, routerReducer, utils as routerUtils, selectorMemoizationOptions, serviceActions, serviceListener, serviceReducer, selectors$7 as serviceSelectors, types$5 as serviceTypes, setUserAddedServices, storeMiddlewares, storeReducerMap, storeTestSettings, storeTestUtils, utils$3 as storeUtils, constants$2 as syncConstants, syncGroupsActions, syncGroupsListener, syncGroupsReducer, selector as syncGroupsSelector, selectors$4 as syncGroupsSelectors, types$1 as syncGroupsTypes, types$1 as types, uiActions, uiReducer, selectors$5 as uiSelectors, types$2 as uiTypes, unifyReducerMaps, useSetupDialog, useUpdateSharedData };
8970
+ export { IS_LEGEND_OPEN_BY_DEFAULT, configureOpenGeoWebStore, createMockStore, createViewObjectForNewMap, drawingToolActions, drawingToolListener, drawingToolReducer, selectors as drawingToolSelectors, filterLayers$1 as filterLayers, genericActions, genericListener, selectors$3 as genericSelectors, types as genericTypes, getSingularDrawtoolDrawLayerId, getUserAddedServices, getViewObjectForMapId, getViewObjectForSyncGroup, initialState$2 as initialState, layerActions, layerReducer, selectors$6 as layerSelectors, types$3 as layerTypes, utils$1 as layerUtils, layersListener, constants as linkComponentTypesConstants, loadingIndicatorActions, constants$1 as loadingIndicatorConstants, loadingIndicatorReducer, selectors$2 as loadingIndicatorSelectors, mapActions, enums as mapEnums, mapListener, mapReducer, selectors$1 as mapSelectors, types$4 as mapTypes, mapUtils, metronomeListener, openlayersListener, routerActions, routerListener, routerReducer, utils as routerUtils, selectorMemoizationOptions, serviceActions, serviceListener, serviceReducer, selectors$7 as serviceSelectors, types$5 as serviceTypes, setUserAddedServices, storeMiddlewares, storeReducerMap, storeTestSettings, storeTestUtils, utils$3 as storeUtils, constants$2 as syncConstants, syncGroupsActions, syncGroupsListener, syncGroupsReducer, selector as syncGroupsSelector, selectors$4 as syncGroupsSelectors, types$1 as syncGroupsTypes, types$1 as types, uiActions, uiReducer, selectors$5 as uiSelectors, types$2 as uiTypes, unifyReducerMaps, useSetupDialog, useUpdateSharedData };