@opengeoweb/store 11.1.0 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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),
@@ -323,40 +35,189 @@ function asyncGeneratorStep(n, t, e, r, o, a, c) {
323
35
  } catch (n) {
324
36
  return void e(n);
325
37
  }
326
- i.done ? t(u) : Promise.resolve(u).then(r, o);
38
+ i.done ? t(u) : Promise.resolve(u).then(r, o);
39
+ }
40
+ function _asyncToGenerator(n) {
41
+ return function () {
42
+ var t = this,
43
+ e = arguments;
44
+ return new Promise(function (r, o) {
45
+ var a = n.apply(t, e);
46
+ function _next(n) {
47
+ asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
48
+ }
49
+ function _throw(n) {
50
+ asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
51
+ }
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
+ }
183
+ }
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;
327
199
  }
328
- function _asyncToGenerator(n) {
329
- return function () {
330
- var t = this,
331
- e = arguments;
332
- return new Promise(function (r, o) {
333
- var a = n.apply(t, e);
334
- function _next(n) {
335
- asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
336
- }
337
- function _throw(n) {
338
- asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
339
- }
340
- _next(void 0);
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));
341
207
  });
342
- };
343
- }
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
- };
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) {
@@ -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;
@@ -1816,7 +1974,9 @@ var slice$6 = createSlice({
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,12 +1984,10 @@ 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);
1990
+ wmDimension === null || wmDimension === void 0 || wmDimension.reInitializeValues(newLayerDimension.values);
1833
1991
  var existingDimension = reduxDimensions.find(function (d) {
1834
1992
  return d.name === newLayerDimension.name;
1835
1993
  });
@@ -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
  }
@@ -3552,10 +3720,8 @@ var types$2 = /*#__PURE__*/Object.freeze({
3552
3720
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
3553
3721
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
3554
3722
  * */
3555
- var useSetupDialog = function useSetupDialog(dialogType, source) {
3556
- if (source === void 0) {
3557
- source = 'app';
3558
- }
3723
+ var useSetupDialog = function useSetupDialog(dialogType) {
3724
+ var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'app';
3559
3725
  var dispatch = useDispatch();
3560
3726
  var onCloseDialog = useCallback(function () {
3561
3727
  dispatch(uiActions.setToggleOpenDialog({
@@ -3690,23 +3856,6 @@ var removeInPlace = function removeInPlace(inDraftArray, condition) {
3690
3856
  inDraftArray.length = j;
3691
3857
  };
3692
3858
 
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
3859
  var initialState$2 = {
3711
3860
  sources: {
3712
3861
  byId: {},
@@ -3765,7 +3914,7 @@ var slice$3 = createSlice({
3765
3914
  var _action$payload2 = action.payload,
3766
3915
  panelId = _action$payload2.panelId,
3767
3916
  data = _action$payload2.data;
3768
- draft.linkedState.sharedData[panelId] = Object.assign({}, draft.linkedState.sharedData[panelId], data);
3917
+ draft.linkedState.sharedData[panelId] = _objectSpread2(_objectSpread2({}, draft.linkedState.sharedData[panelId]), data);
3769
3918
  },
3770
3919
  deleteSharedData: function deleteSharedData(draft, action) {
3771
3920
  var panelId = action.payload.panelId;
@@ -3816,7 +3965,7 @@ var slice$3 = createSlice({
3816
3965
  linked = _action$payload4.linked;
3817
3966
  var synchronizationGroup = draft.groups.byId[groupId];
3818
3967
  if (!synchronizationGroup) {
3819
- console.warn("SYNCGROUPS_ADD_TARGET: Group " + groupId + " does not exist.");
3968
+ console.warn("SYNCGROUPS_ADD_TARGET: Group ".concat(groupId, " does not exist."));
3820
3969
  return;
3821
3970
  }
3822
3971
  if (!targetId) {
@@ -3826,7 +3975,7 @@ var slice$3 = createSlice({
3826
3975
  if (synchronizationGroup.targets.allIds.includes(targetId)) {
3827
3976
  return;
3828
3977
  }
3829
- var isSourceLinked = (_synchronizationGroup = synchronizationGroup.targets.byId[targetId]) == null ? void 0 : _synchronizationGroup.linked;
3978
+ var isSourceLinked = (_synchronizationGroup = synchronizationGroup.targets.byId[targetId]) === null || _synchronizationGroup === void 0 ? void 0 : _synchronizationGroup.linked;
3830
3979
  synchronizationGroup.targets.allIds.push(targetId);
3831
3980
  synchronizationGroup.targets.byId[targetId] = {
3832
3981
  linked: linked !== false
@@ -3956,10 +4105,10 @@ var setBboxOrTimeSync = function setBboxOrTimeSync(draft, action) {
3956
4105
  });
3957
4106
  }
3958
4107
  };
3959
- var _slice$actions = slice$3.actions;
3960
- _slice$actions.syncGroupAddGroup;
4108
+ var _slice$actions = slice$3.actions,
4109
+ syncGroupAddGroup = _slice$actions.syncGroupAddGroup;
3961
4110
  _slice$actions.syncGroupAddSource;
3962
- _slice$actions.syncGroupAddTarget;
4111
+ var syncGroupAddTarget = _slice$actions.syncGroupAddTarget;
3963
4112
  _slice$actions.syncGroupClear;
3964
4113
  _slice$actions.syncGroupLinkTarget;
3965
4114
  _slice$actions.syncGroupRemoveGroup;
@@ -3969,23 +4118,6 @@ var _slice$actions = slice$3.actions;
3969
4118
  var syncGroupsReducer = slice$3.reducer,
3970
4119
  syncGroupsActions = slice$3.actions;
3971
4120
 
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
4121
  var syncGroupStore = function syncGroupStore(store) {
3990
4122
  return store.syncGroups || null;
3991
4123
  };
@@ -4025,7 +4157,7 @@ var getTargets = createSelector([syncGroupStore, function (syncGroupStore, paylo
4025
4157
  /* Remember that we have already added this target in the action payloads, prevents adding it twice */
4026
4158
  targetsInActionPayload[targetId] = true;
4027
4159
  /* Compose the payload */
4028
- var newPayload = Object.assign({
4160
+ var newPayload = _objectSpread2({
4029
4161
  targetId: targetId
4030
4162
  }, payload);
4031
4163
  actionPayloads.push(newPayload);
@@ -4045,7 +4177,7 @@ var getTargets = createSelector([syncGroupStore, function (syncGroupStore, paylo
4045
4177
  /* Remember that we have already added this target in the action payloads, prevents adding it twice */
4046
4178
  targetsInActionPayload[targetId] = true;
4047
4179
  /* Compose the payload */
4048
- var newPayload = Object.assign({
4180
+ var newPayload = _objectSpread2({
4049
4181
  targetId: targetId
4050
4182
  }, payload);
4051
4183
  actionPayloads.push(newPayload);
@@ -4082,7 +4214,7 @@ var getSourceId = createSelector([syncGroupStore, function (syncGroupStore, sour
4082
4214
  return typeof sourceId === 'string' ? sourceId : sourceId.sourceId;
4083
4215
  }, selectorMemoizationOptions);
4084
4216
  var getAllTargetGroupsForSource = createSelector([syncGroupStore, getSourceId], function (syncGroupStore, sourceId) {
4085
- if (syncGroupStore != null && syncGroupStore.groups) {
4217
+ if (syncGroupStore !== null && syncGroupStore !== void 0 && syncGroupStore.groups) {
4086
4218
  return syncGroupStore.groups.allIds.reduce(function (linkedSyncGroupIds, groupId) {
4087
4219
  var syncronizationGroup = syncGroupStore.groups.byId[groupId];
4088
4220
  var source = syncronizationGroup.targets.byId[sourceId];
@@ -4103,7 +4235,7 @@ var isTimeScrollingEnabled = createSelector(syncGroupStore, function (store) {
4103
4235
  }, selectorMemoizationOptions);
4104
4236
  var getSyncedMapIdsForTimeslider = createSelector(syncGroupStore, function (store) {
4105
4237
  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 : [];
4238
+ 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
4239
  }, selectorMemoizationOptions);
4108
4240
  var getSyncGroupTargets = createSelector(syncGroupStore, function (store) {
4109
4241
  if (!store || !store.groups) {
@@ -4194,7 +4326,7 @@ var createSyncGroupViewState = function createSyncGroupViewState(groups, sources
4194
4326
  var _groupTypes$find;
4195
4327
  var groupType = (_groupTypes$find = groupTypes.find(function (object) {
4196
4328
  return object.syncType === groups.byId[id].type;
4197
- })) == null ? void 0 : _groupTypes$find.groupType;
4329
+ })) === null || _groupTypes$find === void 0 ? void 0 : _groupTypes$find.groupType;
4198
4330
  if (groupType) {
4199
4331
  draft[groupType].groups.push({
4200
4332
  id: id,
@@ -4395,7 +4527,7 @@ var getTime = createSelector(getSyncSourceBySourceId, function (store) {
4395
4527
  return store && store.payloadByType && store.payloadByType[SYNCGROUPS_TYPE_SETTIME] ? store.payloadByType[SYNCGROUPS_TYPE_SETTIME].value : null;
4396
4528
  }, selectorMemoizationOptions);
4397
4529
  var selectLinkedState = createSelector(synchronizationGroupStore, function (syncState) {
4398
- return (syncState == null ? void 0 : syncState.linkedState) || {
4530
+ return (syncState === null || syncState === void 0 ? void 0 : syncState.linkedState) || {
4399
4531
  links: {},
4400
4532
  sharedData: {}
4401
4533
  };
@@ -4427,7 +4559,7 @@ var selectLinkedPanelId = createSelector([selectLinkedState, function (_, mapVie
4427
4559
  // Find the panelId where mapView(s) is linked
4428
4560
  var panelId = Object.keys(linkedState.links).find(function (panelId) {
4429
4561
  var _linkedState$links$pa;
4430
- return (_linkedState$links$pa = linkedState.links[panelId]) == null ? void 0 : _linkedState$links$pa.includes(mapViewId);
4562
+ return (_linkedState$links$pa = linkedState.links[panelId]) === null || _linkedState$links$pa === void 0 ? void 0 : _linkedState$links$pa.includes(mapViewId);
4431
4563
  });
4432
4564
  return panelId;
4433
4565
  });
@@ -4444,7 +4576,7 @@ var selectLinkedFeatures = createSelector([function (linkedState) {
4444
4576
  }, getLinkedFeatureProviders], function (linkedState, featureProviders) {
4445
4577
  var features = featureProviders.flatMap(function (providerId) {
4446
4578
  var _linkedState$sharedDa;
4447
- return ((_linkedState$sharedDa = linkedState.sharedData[providerId]) == null ? void 0 : _linkedState$sharedDa.features) || [];
4579
+ return ((_linkedState$sharedDa = linkedState.sharedData[providerId]) === null || _linkedState$sharedDa === void 0 ? void 0 : _linkedState$sharedDa.features) || [];
4448
4580
  }).filter(function (f) {
4449
4581
  return f !== undefined;
4450
4582
  });
@@ -4455,7 +4587,7 @@ var selectLinkedFormFeatures = createSelector([function (linkedState) {
4455
4587
  }, getLinkedFeatureProviders], function (linkedState, featureProviders) {
4456
4588
  var features = featureProviders.flatMap(function (providerId) {
4457
4589
  var _linkedState$sharedDa2;
4458
- return ((_linkedState$sharedDa2 = linkedState.sharedData[providerId]) == null ? void 0 : _linkedState$sharedDa2.formFeatures) || [];
4590
+ return ((_linkedState$sharedDa2 = linkedState.sharedData[providerId]) === null || _linkedState$sharedDa2 === void 0 ? void 0 : _linkedState$sharedDa2.formFeatures) || [];
4459
4591
  }).filter(function (f) {
4460
4592
  return f !== undefined;
4461
4593
  });
@@ -4465,7 +4597,7 @@ var getSelectedFeature = createSelector([
4465
4597
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
4466
4598
  function (state, mapId) {
4467
4599
  var _state$linkedState;
4468
- var sharedData = (_state$linkedState = state.linkedState) == null ? void 0 : _state$linkedState.sharedData[mapId];
4600
+ var sharedData = (_state$linkedState = state.linkedState) === null || _state$linkedState === void 0 ? void 0 : _state$linkedState.sharedData[mapId];
4469
4601
  var _ref = sharedData || {},
4470
4602
  _ref$features = _ref.features,
4471
4603
  features = _ref$features === void 0 ? [] : _ref$features,
@@ -4478,7 +4610,7 @@ function (state, mapId) {
4478
4610
  var _features$;
4479
4611
  var features = _ref2.features,
4480
4612
  selectedFeatureId = _ref2.selectedFeatureId;
4481
- var selectedFeature = (_features$ = features[0]) == null ? void 0 : _features$.geoJSON.features.find(function (feature) {
4613
+ var selectedFeature = (_features$ = features[0]) === null || _features$ === void 0 ? void 0 : _features$.geoJSON.features.find(function (feature) {
4482
4614
  return feature.id === selectedFeatureId;
4483
4615
  });
4484
4616
  if (selectedFeature && selectedFeature.geometry.type === 'Point') {
@@ -4488,9 +4620,9 @@ function (state, mapId) {
4488
4620
  lat: coordinates[1],
4489
4621
  lon: coordinates[0],
4490
4622
  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
4623
+ serviceId: (_selectedFeature$prop = selectedFeature.properties) === null || _selectedFeature$prop === void 0 ? void 0 : _selectedFeature$prop.serviceId,
4624
+ collectionId: (_selectedFeature$prop2 = selectedFeature.properties) === null || _selectedFeature$prop2 === void 0 ? void 0 : _selectedFeature$prop2.collectionId,
4625
+ name: (_selectedFeature$prop3 = selectedFeature.properties) === null || _selectedFeature$prop3 === void 0 ? void 0 : _selectedFeature$prop3.name
4494
4626
  };
4495
4627
  }
4496
4628
  if (selectedFeature) {
@@ -4500,9 +4632,9 @@ function (state, mapId) {
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
+ serviceId: (_selectedFeature$prop4 = selectedFeature.properties) === null || _selectedFeature$prop4 === void 0 ? void 0 : _selectedFeature$prop4.serviceId,
4636
+ collectionId: (_selectedFeature$prop5 = selectedFeature.properties) === null || _selectedFeature$prop5 === void 0 ? void 0 : _selectedFeature$prop5.collectionId,
4637
+ name: (_selectedFeature$prop6 = selectedFeature.properties) === null || _selectedFeature$prop6 === void 0 ? void 0 : _selectedFeature$prop6.name
4506
4638
  };
4507
4639
  }
4508
4640
  return null;
@@ -4522,23 +4654,6 @@ var selectors$3 = /*#__PURE__*/Object.freeze({
4522
4654
  selectSharedData: selectSharedData
4523
4655
  });
4524
4656
 
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
4657
  var useUpdateSharedData = function useUpdateSharedData(data, panelId) {
4543
4658
  var sharedData = useSelector(function (state) {
4544
4659
  return selectSharedData(state, panelId);
@@ -4548,8 +4663,8 @@ var useUpdateSharedData = function useUpdateSharedData(data, panelId) {
4548
4663
  });
4549
4664
  var dispatch = useDispatch();
4550
4665
  useEffect(function () {
4551
- var diff = Object.assign({}, sharedData, data);
4552
- if (panelId && (linkedMaps == null ? void 0 : linkedMaps.length) > 0 && !isEqual(diff, sharedData)) {
4666
+ var diff = _objectSpread2(_objectSpread2({}, sharedData), data);
4667
+ if (panelId && (linkedMaps === null || linkedMaps === void 0 ? void 0 : linkedMaps.length) > 0 && !isEqual(diff, sharedData)) {
4553
4668
  dispatch(syncGroupsActions.addSharedData({
4554
4669
  panelId: panelId,
4555
4670
  data: data
@@ -4668,7 +4783,7 @@ var slice$2 = createSlice({
4668
4783
  // When one EDR is loading with a known id (panelId), do not set the any ANY_EDR_SERVICE as the panelId is known.
4669
4784
  if (isEDRLoading && id === ANY_EDR_SERVICE && draft.ids.some(function (id) {
4670
4785
  var _draft$entities$id;
4671
- return (_draft$entities$id = draft.entities[id]) == null ? void 0 : _draft$entities$id.isEDRLoading;
4786
+ return (_draft$entities$id = draft.entities[id]) === null || _draft$entities$id === void 0 ? void 0 : _draft$entities$id.isEDRLoading;
4672
4787
  })) {
4673
4788
  draft.entities[id].isEDRLoading = false;
4674
4789
  } else {
@@ -4699,20 +4814,20 @@ var loadingIndicatorActions = slice$2.actions,
4699
4814
  * */
4700
4815
  var _loadingIndicatorAdap = loadingIndicatorAdapter.getSelectors(function (state) {
4701
4816
  var _state$loadingIndicat;
4702
- return (_state$loadingIndicat = state == null ? void 0 : state.loadingIndicator) != null ? _state$loadingIndicat : {
4817
+ return (_state$loadingIndicat = state === null || state === void 0 ? void 0 : state.loadingIndicator) !== null && _state$loadingIndicat !== void 0 ? _state$loadingIndicat : {
4703
4818
  entities: {},
4704
4819
  ids: []
4705
4820
  };
4706
4821
  }),
4707
4822
  selectLoadingIndicatorById = _loadingIndicatorAdap.selectById;
4708
4823
  var isGetMapLoading = createSelector(selectLoadingIndicatorById, function (loadingIndicator) {
4709
- return (loadingIndicator == null ? void 0 : loadingIndicator.isGetMapLoading) || false;
4824
+ return (loadingIndicator === null || loadingIndicator === void 0 ? void 0 : loadingIndicator.isGetMapLoading) || false;
4710
4825
  }, selectorMemoizationOptions);
4711
4826
  var isGetCapabilitiesLoading = createSelector(selectLoadingIndicatorById, function (loadingIndicator) {
4712
- return (loadingIndicator == null ? void 0 : loadingIndicator.isGetCapabilitiesLoading) || false;
4827
+ return (loadingIndicator === null || loadingIndicator === void 0 ? void 0 : loadingIndicator.isGetCapabilitiesLoading) || false;
4713
4828
  }, selectorMemoizationOptions);
4714
4829
  var isAnyEdrTypeLoading = function isAnyEdrTypeLoading(loadingIndicator) {
4715
- return (loadingIndicator == null ? void 0 : loadingIndicator.isEDRLoading) || false;
4830
+ return (loadingIndicator === null || loadingIndicator === void 0 ? void 0 : loadingIndicator.isEDRLoading) || false;
4716
4831
  };
4717
4832
  var isEDRLoading = createSelector(selectLoadingIndicatorById, isAnyEdrTypeLoading, selectorMemoizationOptions);
4718
4833
  var isAnyEDRLoading = createSelector([function (store) {
@@ -4731,24 +4846,7 @@ var selectors$2 = /*#__PURE__*/Object.freeze({
4731
4846
  selectLoadingIndicatorById: selectLoadingIndicatorById
4732
4847
  });
4733
4848
 
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, {
4849
+ var genericActions = _objectSpread2(_objectSpread2({}, syncGroupsActions), {}, {
4752
4850
  initialSyncState: initialState$2,
4753
4851
  setTime: setTime,
4754
4852
  setBbox: setBbox
@@ -4824,7 +4922,7 @@ var getIsMapPresent = createSelector(getMapById, function (map) {
4824
4922
  */
4825
4923
  var getLayerIds = createSelector(getMapById, function (map) {
4826
4924
  var _map$mapLayers;
4827
- return (_map$mapLayers = map == null ? void 0 : map.mapLayers) != null ? _map$mapLayers : [];
4925
+ return (_map$mapLayers = map === null || map === void 0 ? void 0 : map.mapLayers) !== null && _map$mapLayers !== void 0 ? _map$mapLayers : [];
4828
4926
  }, selectorMemoizationOptions);
4829
4927
  /**
4830
4928
  * Gets all layer states for a map
@@ -4836,7 +4934,7 @@ var getLayerIds = createSelector(getMapById, function (map) {
4836
4934
  */
4837
4935
  var getMapLayers = createSelector(getLayerIds, getLayersById, function (layerIdsInMap, allLayers) {
4838
4936
  var layersWithUndefined = layerIdsInMap.map(function (layerId) {
4839
- return allLayers == null ? void 0 : allLayers[layerId];
4937
+ return allLayers === null || allLayers === void 0 ? void 0 : allLayers[layerId];
4840
4938
  });
4841
4939
  var layersWithoutUndefined = compact(layersWithUndefined);
4842
4940
  return layersWithoutUndefined;
@@ -4853,7 +4951,7 @@ var getMapLayers = createSelector(getLayerIds, getLayersById, function (layerIds
4853
4951
  */
4854
4952
  var getMapLayersWithoutDimensionCurrentValue = createSelector(getLayerIds, getLayersById, function (layerIdsInMap, allLayers) {
4855
4953
  var layersWithUndefined = layerIdsInMap.map(function (layerId) {
4856
- return allLayers == null ? void 0 : allLayers[layerId];
4954
+ return allLayers === null || allLayers === void 0 ? void 0 : allLayers[layerId];
4857
4955
  });
4858
4956
  var layersWithoutUndefined = compact(layersWithUndefined);
4859
4957
  var layersWithoutTimeDim = layersWithoutUndefined.map(function (layer) {
@@ -4900,7 +4998,7 @@ var getMapOverLayersIds = createSelector(getMapById, function (store) {
4900
4998
  return store ? store.overLayers : [];
4901
4999
  }, selectorMemoizationOptions);
4902
5000
  var getMapFeatureLayers = createSelector(getMapById, getFeatureLayers, function (store, featureLayers) {
4903
- var featureLayersOnMap = (store == null ? void 0 : store.featureLayers) || [];
5001
+ var featureLayersOnMap = (store === null || store === void 0 ? void 0 : store.featureLayers) || [];
4904
5002
  return featureLayers.filter(function (layer) {
4905
5003
  return featureLayersOnMap.indexOf(layer.id) !== -1;
4906
5004
  });
@@ -4916,6 +5014,8 @@ var getMapFeatureLayers = createSelector(getMapById, getFeatureLayers, function
4916
5014
  var getMapOverLayers = createSelector(getMapOverLayersIds, getLayersById, function (layerIds, layers) {
4917
5015
  return layerIds.map(function (layerId) {
4918
5016
  return layers[layerId];
5017
+ }).filter(function (layer) {
5018
+ return layer === null || layer === void 0 ? void 0 : layer.name;
4919
5019
  });
4920
5020
  }, selectorMemoizationOptions);
4921
5021
  /**
@@ -4973,12 +5073,13 @@ var getSelectedTime = createSelector(function (store, mapId) {
4973
5073
  var getDataLimitsFromLayers = createSelector(getMapLayers, function (layers) {
4974
5074
  return layers.reduce(function (_ref, layer) {
4975
5075
  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) {
5076
+ var _ref2 = _slicedToArray(_ref, 2),
5077
+ start = _ref2[0],
5078
+ end = _ref2[1];
5079
+ var dimension = (_layer$dimensions = layer.dimensions) === null || _layer$dimensions === void 0 ? void 0 : _layer$dimensions.find(function (dimension) {
4979
5080
  return dimension.name === 'time';
4980
5081
  });
4981
- if (dimension != null && dimension.minValue && dimension.maxValue) {
5082
+ if (dimension !== null && dimension !== void 0 && dimension.minValue && dimension.maxValue) {
4982
5083
  var lastValue = dateUtils.unix(new Date(dimension.maxValue));
4983
5084
  var firstValue = dateUtils.unix(new Date(dimension.minValue));
4984
5085
  var newLast = Math.max(lastValue, end);
@@ -5062,7 +5163,7 @@ var linkedMapAnimationInfo = createSelector(function (store, mapId) {
5062
5163
  * @returns {string} returnType: string
5063
5164
  */
5064
5165
  var getAnimationStartTime = createSelector(getMapById, function (store) {
5065
- return store != null && store.animationStartTime ? store.animationStartTime : dateUtils.dateToString(dateUtils.sub(dateUtils.utc(), {
5166
+ return store !== null && store !== void 0 && store.animationStartTime ? store.animationStartTime : dateUtils.dateToString(dateUtils.sub(dateUtils.utc(), {
5066
5167
  hours: 6
5067
5168
  }), dateFormat);
5068
5169
  }, selectorMemoizationOptions);
@@ -5075,7 +5176,7 @@ var getAnimationStartTime = createSelector(getMapById, function (store) {
5075
5176
  * @returns {string} returnType: string
5076
5177
  */
5077
5178
  var getAnimationEndTime = createSelector(getMapById, function (store) {
5078
- return store != null && store.animationEndTime ? store.animationEndTime : dateUtils.dateToString(dateUtils.sub(dateUtils.utc(), {
5179
+ return store !== null && store !== void 0 && store.animationEndTime ? store.animationEndTime : dateUtils.dateToString(dateUtils.sub(dateUtils.utc(), {
5079
5180
  minutes: 10
5080
5181
  }), dateFormat);
5081
5182
  }, selectorMemoizationOptions);
@@ -5109,7 +5210,7 @@ var shouldEndtimeOverride = createSelector(getMapById, function (store) {
5109
5210
  * @param {string} mapId mapId: string - Id of the map
5110
5211
  */
5111
5212
  var getActiveLayerId = createSelector(getMapById, function (store) {
5112
- if (store != null && store.autoUpdateLayerId && store.autoUpdateLayerId === store.autoTimeStepLayerId) {
5213
+ if (store !== null && store !== void 0 && store.autoUpdateLayerId && store.autoUpdateLayerId === store.autoTimeStepLayerId) {
5113
5214
  return store.autoUpdateLayerId;
5114
5215
  }
5115
5216
  return undefined;
@@ -5122,7 +5223,7 @@ var getActiveLayerId = createSelector(getMapById, function (store) {
5122
5223
  * @param {string} mapId mapId: string - Id of the map
5123
5224
  */
5124
5225
  var getAutoUpdateLayerId = createSelector(getMapById, function (store) {
5125
- return store == null ? void 0 : store.autoUpdateLayerId;
5226
+ return store === null || store === void 0 ? void 0 : store.autoUpdateLayerId;
5126
5227
  }, selectorMemoizationOptions);
5127
5228
  /**
5128
5229
  * Gets autoUpdateLayerId for map
@@ -5132,7 +5233,7 @@ var getAutoUpdateLayerId = createSelector(getMapById, function (store) {
5132
5233
  * @param {string} mapId mapId: string - Id of the map
5133
5234
  */
5134
5235
  var getAutoTimeStepLayerId = createSelector(getMapById, function (store) {
5135
- return store == null ? void 0 : store.autoTimeStepLayerId;
5236
+ return store === null || store === void 0 ? void 0 : store.autoTimeStepLayerId;
5136
5237
  }, selectorMemoizationOptions);
5137
5238
  /**
5138
5239
  * Gets span of a time slider of a map
@@ -5155,10 +5256,10 @@ var getMapTimeSliderSpan = createSelector(getMapById, function (store) {
5155
5256
  */
5156
5257
  var getMapTimeStep = createSelector(getMapById, function (store) {
5157
5258
  var _store$timeStep;
5158
- return (_store$timeStep = store == null ? void 0 : store.timeStep) != null ? _store$timeStep : defaultTimeStep;
5259
+ return (_store$timeStep = store === null || store === void 0 ? void 0 : store.timeStep) !== null && _store$timeStep !== void 0 ? _store$timeStep : defaultTimeStep;
5159
5260
  }, selectorMemoizationOptions);
5160
5261
  var getMapTimeStepWithoutDefault = createSelector(getMapById, function (store) {
5161
- return store == null ? void 0 : store.timeStep;
5262
+ return store === null || store === void 0 ? void 0 : store.timeStep;
5162
5263
  }, selectorMemoizationOptions);
5163
5264
  /**
5164
5265
  * Returns the speed of animation
@@ -5193,6 +5294,20 @@ var getMapTimeSliderWidth = createSelector(getMapById, function (store) {
5193
5294
  var getMapTimeSliderCenterTime = createSelector(getMapById, function (store) {
5194
5295
  return store ? store.timeSliderCenterTime : dateUtils.unix(dateUtils.utc());
5195
5296
  }, selectorMemoizationOptions);
5297
+ var getMapTimeSliderStartCenterEndAndStep = createSelector(getMapById, function (store) {
5298
+ var _store$timeStep2;
5299
+ var timeSliderWidth = ((store === null || store === void 0 ? void 0 : store.timeSliderWidth) || 0) * 60;
5300
+ var center = store ? store.timeSliderCenterTime : dateUtils.unix(dateUtils.utc());
5301
+ var start = center ? center - timeSliderWidth / 2 : undefined;
5302
+ var end = center ? center + timeSliderWidth / 2 : undefined;
5303
+ var step = (_store$timeStep2 = store === null || store === void 0 ? void 0 : store.timeStep) !== null && _store$timeStep2 !== void 0 ? _store$timeStep2 : defaultTimeStep;
5304
+ return {
5305
+ start: start,
5306
+ center: center,
5307
+ end: end,
5308
+ step: step
5309
+ };
5310
+ }, selectorMemoizationOptions);
5196
5311
  /**
5197
5312
  * Returns the number of seconds per pixel on the time slider
5198
5313
  *
@@ -5222,7 +5337,7 @@ var isTimestepAuto = createSelector(getMapById, function (store) {
5222
5337
  * @returns {boolean} returnType: boolean
5223
5338
  */
5224
5339
  var isAnimationLengthAuto = createSelector(getMapById, function (store) {
5225
- return (store == null ? void 0 : store.isAnimationLengthAuto) || false;
5340
+ return (store === null || store === void 0 ? void 0 : store.isAnimationLengthAuto) || false;
5226
5341
  }, selectorMemoizationOptions);
5227
5342
  /**
5228
5343
  * Returns map is timespan auto
@@ -5291,7 +5406,7 @@ var getIsLayerActiveLayer = createSelector(getActiveLayerId, function (_store, _
5291
5406
  * @returns {string} returnType: string - the mapId, or null if not found
5292
5407
  */
5293
5408
  var getMapIdFromLayerId = createSelector(function (store) {
5294
- return store == null ? void 0 : store.webmap;
5409
+ return store === null || store === void 0 ? void 0 : store.webmap;
5295
5410
  }, function (_store, layerId) {
5296
5411
  return layerId;
5297
5412
  }, findMapIdFromLayerId, selectorMemoizationOptions);
@@ -5378,7 +5493,7 @@ var getAllUniqueDimensions = createSelector(getAllMapIds, function (store) {
5378
5493
  * @returns {object} returnType: latitude and longitude of pin
5379
5494
  */
5380
5495
  var getPinLocation = createSelector(getMapById, function (store) {
5381
- return store == null ? void 0 : store.mapPinLocation;
5496
+ return store === null || store === void 0 ? void 0 : store.mapPinLocation;
5382
5497
  }, selectorMemoizationOptions);
5383
5498
  /**
5384
5499
  * Returns the disable map pin boolean for the current map
@@ -5389,7 +5504,7 @@ var getPinLocation = createSelector(getMapById, function (store) {
5389
5504
  * @returns {boolean} returnType: boolean
5390
5505
  */
5391
5506
  var getDisableMapPin = createSelector([getMapById], function (map) {
5392
- return map == null ? void 0 : map.disableMapPin;
5507
+ return map === null || map === void 0 ? void 0 : map.disableMapPin;
5393
5508
  }, selectorMemoizationOptions);
5394
5509
  /**
5395
5510
  * Returns the display map pin boolean for the current map
@@ -5423,15 +5538,15 @@ var getLegendId = createSelector(getMapById, function (store) {
5423
5538
  */
5424
5539
  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
5540
  var _uiStore$dialogs$lege;
5426
- var allLayers = [].concat(baseLayers, overLayers, mapLayers).map(function (_ref2) {
5427
- _ref2.mapId;
5428
- var layer = _objectWithoutPropertiesLoose(_ref2, _excluded$2);
5541
+ var allLayers = [].concat(_toConsumableArray(baseLayers), _toConsumableArray(overLayers), _toConsumableArray(mapLayers)).map(function (_ref3) {
5542
+ _ref3.mapId;
5543
+ var layer = _objectWithoutProperties(_ref3, _excluded$2);
5429
5544
  if (layer.dimensions !== undefined) {
5430
5545
  // Filter out (reference) time dimension as these should not be part of the preset for now
5431
5546
  var dimensions = layer.dimensions.filter(function (dimension) {
5432
5547
  return dimension.name !== 'time' && dimension.name !== 'reference_time';
5433
5548
  });
5434
- return Object.assign({}, layer, {
5549
+ return _objectSpread2(_objectSpread2({}, layer), {}, {
5435
5550
  dimensions: dimensions
5436
5551
  });
5437
5552
  }
@@ -5442,16 +5557,16 @@ var getMapPreset = createSelector(getMapLayers, getMapBaseLayers, getMapOverLaye
5442
5557
  speed: mapAnimationDelay ? getSpeedFactor(mapAnimationDelay) : 1,
5443
5558
  duration: getAnimationDuration(animationEndTime, animationStartTime)
5444
5559
  };
5445
- var shouldShowLegend = legendId ? uiStore == null || (_uiStore$dialogs$lege = uiStore.dialogs[legendId]) == null ? void 0 : _uiStore$dialogs$lege.isOpen : false;
5446
- return Object.assign({
5560
+ 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;
5561
+ return _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
5447
5562
  layers: allLayers
5448
5563
  }, activeLayerId !== undefined && {
5449
5564
  activeLayerId: activeLayerId
5450
- }, autoTimeStepLayerId !== undefined && {
5565
+ }), autoTimeStepLayerId !== undefined && {
5451
5566
  autoTimeStepLayerId: autoTimeStepLayerId
5452
- }, autoUpdateLayerId !== undefined && {
5567
+ }), autoUpdateLayerId !== undefined && {
5453
5568
  autoUpdateLayerId: autoUpdateLayerId
5454
- }, {
5569
+ }), {}, {
5455
5570
  proj: {
5456
5571
  bbox: bbox,
5457
5572
  srs: srs
@@ -5523,15 +5638,15 @@ var getAnimationList = createSelector(getLayersById, getMapById, getAnimationSta
5523
5638
  // - start, end and interval for a continuous animation loop
5524
5639
  // - timeList, for a custom timeList
5525
5640
  // Here the animation is defined by a timeList
5526
- if (mapStore != null && (_mapStore$timeList = mapStore.timeList) != null && _mapStore$timeList.length) {
5641
+ if (mapStore !== null && mapStore !== void 0 && (_mapStore$timeList = mapStore.timeList) !== null && _mapStore$timeList !== void 0 && _mapStore$timeList.length) {
5527
5642
  return mapStore.timeList;
5528
5643
  }
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) {
5644
+ var autoTimeStepLayerId = mapStore === null || mapStore === void 0 ? void 0 : mapStore.autoTimeStepLayerId;
5645
+ 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
5646
  return dimension.name === 'time';
5532
5647
  }));
5533
- var _ref3 = timeDimension || {},
5534
- values = _ref3.values;
5648
+ var _ref4 = timeDimension || {},
5649
+ values = _ref4.values;
5535
5650
  var unixAnimationStart = roundWithTimeStep(Number(animationStart && dateUtils.unix(dateUtils.utc(animationStart))), animationInterval, 'ceil');
5536
5651
  var unixAnimationEnd = roundWithTimeStep(Number(animationEnd && dateUtils.unix(dateUtils.utc(animationEnd))), animationInterval, 'floor');
5537
5652
  var animationList = generateAnimationList(unixAnimationStart, unixAnimationEnd, values);
@@ -5539,10 +5654,10 @@ var getAnimationList = createSelector(getLayersById, getMapById, getAnimationSta
5539
5654
  if (!animationList.length) {
5540
5655
  var timeList = [];
5541
5656
  var intervalSeconds = animationInterval * 60;
5542
- for (var j = unixAnimationStart; j <= unixAnimationEnd; j += intervalSeconds) {
5657
+ for (var animTimeStep = unixAnimationStart; animTimeStep <= unixAnimationEnd; animTimeStep += intervalSeconds) {
5543
5658
  timeList.push({
5544
5659
  name: 'time',
5545
- value: dateUtils.fromUnix(j).toISOString()
5660
+ value: dateUtils.fromUnix(animTimeStep).toISOString()
5546
5661
  });
5547
5662
  }
5548
5663
  return timeList;
@@ -5556,12 +5671,12 @@ var getAnimationList = createSelector(getLayersById, getMapById, getAnimationSta
5556
5671
  */
5557
5672
  var getAnimationRange = createSelector(getLayersById, getAutoTimeStepLayerId, getAnimationStartTime, getAnimationEndTime, isAnimationLengthAuto, function (layers, autoTimeStepLayerId, startTime, endTime, isAnimationLengthAuto) {
5558
5673
  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) {
5674
+ 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
5675
  return dimension.name === 'time';
5561
5676
  }));
5562
- var _ref4 = layerTimeDimension || {},
5563
- minValue = _ref4.minValue,
5564
- maxValue = _ref4.maxValue;
5677
+ var _ref5 = layerTimeDimension || {},
5678
+ minValue = _ref5.minValue,
5679
+ maxValue = _ref5.maxValue;
5565
5680
  var hasTimeDimension = minValue && maxValue;
5566
5681
  var animationStartTime = isAnimationLengthAuto && autoTimeStepLayerId && hasTimeDimension ? minValue : startTime;
5567
5682
  var animationEndTime = isAnimationLengthAuto && autoTimeStepLayerId && hasTimeDimension ? maxValue : endTime;
@@ -5633,6 +5748,7 @@ var selectors$1 = /*#__PURE__*/Object.freeze({
5633
5748
  getMapTimeSliderCenterTime: getMapTimeSliderCenterTime,
5634
5749
  getMapTimeSliderSecondsPerPx: getMapTimeSliderSecondsPerPx,
5635
5750
  getMapTimeSliderSpan: getMapTimeSliderSpan,
5751
+ getMapTimeSliderStartCenterEndAndStep: getMapTimeSliderStartCenterEndAndStep,
5636
5752
  getMapTimeSliderWidth: getMapTimeSliderWidth,
5637
5753
  getMapTimeStep: getMapTimeStep,
5638
5754
  getMapTimeStepWithoutDefault: getMapTimeStepWithoutDefault,
@@ -5699,32 +5815,11 @@ var enums = /*#__PURE__*/Object.freeze({
5699
5815
  * */
5700
5816
  var IS_LEGEND_OPEN_BY_DEFAULT = false;
5701
5817
 
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
- }
5818
+ var filterLayers = function filterLayers() {
5819
+ var layers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
5820
+ var layerParser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (layer) {
5821
+ return layer;
5822
+ };
5728
5823
  return layers.reduce(function (layers, layer) {
5729
5824
  var mapLayers = layers.mapLayers,
5730
5825
  baseLayers = layers.baseLayers,
@@ -5765,39 +5860,22 @@ var parseBoolean = function parseBoolean(value) {
5765
5860
  return typeof value === 'boolean' ? value : value === 'true';
5766
5861
  };
5767
5862
  var parseLayer = function parseLayer(layer) {
5768
- return Object.assign({}, layer, !layer.id && {
5863
+ return _objectSpread2(_objectSpread2(_objectSpread2({}, layer), !layer.id && {
5769
5864
  id: webmapUtils.generateLayerId()
5770
- }, layer.enabled && {
5771
- enabled: parseBoolean(layer.enabled)
5772
- });
5773
- };
5774
-
5775
- 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, {
5865
+ }), layer.enabled && {
5866
+ enabled: parseBoolean(layer.enabled)
5867
+ });
5868
+ };
5869
+
5870
+ var filterLayers$1 = /*#__PURE__*/Object.freeze({
5871
+ __proto__: null,
5872
+ createEmtpyFilteredList: createEmtpyFilteredList,
5873
+ filterLayers: filterLayers,
5874
+ parseBoolean: parseBoolean,
5875
+ parseLayer: parseLayer
5876
+ });
5877
+
5878
+ var mapUtils = _objectSpread2(_objectSpread2({}, utils$2), {}, {
5801
5879
  replaceLayerIdsToEnsureUniqueLayerIdsInStore: replaceLayerIdsToEnsureUniqueLayerIdsInStore
5802
5880
  });
5803
5881
 
@@ -6059,7 +6137,7 @@ var getLayerActionsTargets = function getLayerActionsTargets(state, payload, act
6059
6137
  var foundTargets = findTargets(state, payload, actionType, mapId);
6060
6138
  return foundTargets.map(function (target) {
6061
6139
  var payload = target.payload;
6062
- return Object.assign({}, payload, {
6140
+ return _objectSpread2(_objectSpread2({}, payload), {}, {
6063
6141
  layerId: target.layerId,
6064
6142
  origin: SyncGroupActionOrigin.layerActions,
6065
6143
  mapId: payload.mapId
@@ -6080,9 +6158,9 @@ var getAddLayerActionsTargets = function getAddLayerActionsTargets(state, payloa
6080
6158
  targetId = _ref.targetId;
6081
6159
  var layer = payload.layer;
6082
6160
  layer.id;
6083
- var layerWithoutId = _objectWithoutPropertiesLoose(layer, _excluded$1);
6161
+ var layerWithoutId = _objectWithoutProperties(layer, _excluded$1);
6084
6162
  var layerId = webmapUtils.generateLayerId();
6085
- return Object.assign({}, payload, {
6163
+ return _objectSpread2(_objectSpread2({}, payload), {}, {
6086
6164
  layer: layerWithoutId,
6087
6165
  layerId: layerId,
6088
6166
  mapId: targetId,
@@ -6100,7 +6178,7 @@ var getAddLayerActionsTargets = function getAddLayerActionsTargets(state, payloa
6100
6178
  var getLayerDeleteActionsTargets = function getLayerDeleteActionsTargets(state, payload, actionType) {
6101
6179
  var foundTargets = findTargets(state, payload, actionType, payload.mapId);
6102
6180
  return foundTargets.map(function (target) {
6103
- return Object.assign({}, target.payload, {
6181
+ return _objectSpread2(_objectSpread2({}, target.payload), {}, {
6104
6182
  mapId: target.targetId,
6105
6183
  layerId: target.layerId,
6106
6184
  origin: SyncGroupActionOrigin["delete"]
@@ -6117,7 +6195,7 @@ var getLayerDeleteActionsTargets = function getLayerDeleteActionsTargets(state,
6117
6195
  var getLayerMoveActionsTargets = function getLayerMoveActionsTargets(state, payload, actionType) {
6118
6196
  var foundTargets = findTargets(state, payload, actionType, payload.mapId);
6119
6197
  return foundTargets.map(function (target) {
6120
- return Object.assign({}, target.payload, {
6198
+ return _objectSpread2(_objectSpread2({}, target.payload), {}, {
6121
6199
  mapId: target.targetId,
6122
6200
  origin: SyncGroupActionOrigin.move
6123
6201
  });
@@ -6131,7 +6209,7 @@ var getLayerMoveActionsTargets = function getLayerMoveActionsTargets(state, payl
6131
6209
  * @returns
6132
6210
  */
6133
6211
  var getSetAutoLayerIdActionsTargets = function getSetAutoLayerIdActionsTargets(state, payload, actionType) {
6134
- var payloadWithLayerId = Object.assign({}, payload, {
6212
+ var payloadWithLayerId = _objectSpread2(_objectSpread2({}, payload), {}, {
6135
6213
  layerId: payload.autoUpdateLayerId || payload.autoTimeStepLayerId || payload.layerId
6136
6214
  });
6137
6215
  var foundTargets = findTargets(state, payloadWithLayerId, actionType, payload.mapId);
@@ -6155,7 +6233,7 @@ var getMapBaseLayerActionsTargets = function getMapBaseLayerActionsTargets(state
6155
6233
  return foundTargets.map(function (target) {
6156
6234
  return {
6157
6235
  layers: payload.layers.map(function (layer) {
6158
- return Object.assign({}, layer, {
6236
+ return _objectSpread2(_objectSpread2({}, layer), {}, {
6159
6237
  id: webmapUtils.generateLayerId()
6160
6238
  });
6161
6239
  }),
@@ -6180,7 +6258,7 @@ genericListener.startListening({
6180
6258
  value = payload.value, origin = payload.origin;
6181
6259
  /* Test if the value is according to the expected time format */
6182
6260
  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);
6261
+ console.error("setTime value ".concat(value, " does not conform to format [YYYY-MM-DDThh:mm:ssZ]. It was triggered by ").concat(origin));
6184
6262
  } else {
6185
6263
  targets = getTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETTIME);
6186
6264
  groups = getTargetGroups(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETTIME);
@@ -6448,9 +6526,9 @@ genericListener.startListening({
6448
6526
  });
6449
6527
 
6450
6528
  /* A map with all the timerIds and their current step */
6451
- var stepMap = new Map();
6529
+ var stepMap$1 = new Map();
6452
6530
  /* A map with a list of timers and their dwell */
6453
- var timerDwellMap = new Map();
6531
+ var timerDwellMap$1 = new Map();
6454
6532
  /**
6455
6533
  * Returns the next step for given timerId.
6456
6534
  * @param timerId The timer id
@@ -6458,11 +6536,9 @@ var timerDwellMap = new Map();
6458
6536
  * @param numStepsToGoForward Amount of steps to go forwards, defaults to 1. Can be positive and negative
6459
6537
  * @returns
6460
6538
  */
6461
- var getNextStep = function getNextStep(timerId, numberOfStepsInAnimation, numStepsToGoForward) {
6462
- if (numStepsToGoForward === void 0) {
6463
- numStepsToGoForward = 1;
6464
- }
6465
- var currentStep = getCurrentStep(timerId);
6539
+ var getNextStep$1 = function getNextStep(timerId, numberOfStepsInAnimation) {
6540
+ var numStepsToGoForward = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
6541
+ var currentStep = getCurrentStep$1(timerId);
6466
6542
  var nextStep = currentStep + numStepsToGoForward;
6467
6543
  var nextStepClipped = (nextStep % numberOfStepsInAnimation + numberOfStepsInAnimation) % numberOfStepsInAnimation;
6468
6544
  return nextStepClipped;
@@ -6474,21 +6550,19 @@ var getNextStep = function getNextStep(timerId, numberOfStepsInAnimation, numSte
6474
6550
  * @param dwell The number of steps to wait at the end of the animation sequence before to continue
6475
6551
  * @returns
6476
6552
  */
6477
- var handleTimerDwell = function handleTimerDwell(timerId, numberOfStepsInAnimation, dwell) {
6478
- if (dwell === void 0) {
6479
- dwell = 8;
6480
- }
6553
+ var handleTimerDwell$1 = function handleTimerDwell(timerId, numberOfStepsInAnimation) {
6554
+ var dwell = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 8;
6481
6555
  if (dwell > 0) {
6482
- var currentStep = getCurrentStep(timerId);
6556
+ var currentStep = getCurrentStep$1(timerId);
6483
6557
  // Reset the dwell if we are not at the last animation step
6484
6558
  if (currentStep < numberOfStepsInAnimation - 1) {
6485
- timerDwellMap.set(timerId, dwell);
6559
+ timerDwellMap$1.set(timerId, dwell);
6486
6560
  return false;
6487
6561
  }
6488
6562
  // We are at the last animation step, check the dwell
6489
- var timerDwell = timerDwellMap.has(timerId) && timerDwellMap.get(timerId) || 0;
6563
+ var timerDwell = timerDwellMap$1.has(timerId) && timerDwellMap$1.get(timerId) || 0;
6490
6564
  if (currentStep === numberOfStepsInAnimation - 1 && timerDwell > 0) {
6491
- timerDwellMap.set(timerId, timerDwell - 1);
6565
+ timerDwellMap$1.set(timerId, timerDwell - 1);
6492
6566
  return true;
6493
6567
  }
6494
6568
  }
@@ -6499,16 +6573,16 @@ var handleTimerDwell = function handleTimerDwell(timerId, numberOfStepsInAnimati
6499
6573
  * @param timerId
6500
6574
  * @param timerStep
6501
6575
  */
6502
- var setStep = function setStep(timerId, timerStep) {
6503
- stepMap.set(timerId, timerStep);
6576
+ var setStep$1 = function setStep(timerId, timerStep) {
6577
+ stepMap$1.set(timerId, timerStep);
6504
6578
  };
6505
6579
  /**
6506
6580
  * Gets the current step for the timer
6507
6581
  * @param timerId
6508
6582
  * @returns
6509
6583
  */
6510
- var getCurrentStep = function getCurrentStep(timerId) {
6511
- return stepMap.get(timerId) || 0;
6584
+ var getCurrentStep$1 = function getCurrentStep(timerId) {
6585
+ return stepMap$1.get(timerId) || 0;
6512
6586
  };
6513
6587
  var MAX_NUMBER_STEPS_FORWARD_TO_PREFETCH = 2;
6514
6588
  var MAX_NUMBER_OF_PARALLEL_LOADING_IMAGES = 8;
@@ -6523,41 +6597,57 @@ var prefetchAnimationTargetsForMetronome = function prefetchAnimationTargetsForM
6523
6597
  var timerShouldStepForward = true;
6524
6598
  // The following code prefetches/buffers for all maps in the group
6525
6599
  for (var numPrefetch = 0; numPrefetch < MAX_NUMBER_STEPS_FORWARD_TO_PREFETCH; numPrefetch += 1) {
6526
- var nextStep = getNextStep(timerId, animationListValues.length, numPrefetch + 1);
6600
+ var nextStep = getNextStep$1(timerId, animationListValues.length, numPrefetch + 1);
6527
6601
  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;
6602
+ var _iterator = _createForOfIteratorHelper(targets),
6603
+ _step;
6604
+ try {
6605
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
6606
+ var target = _step.value;
6607
+ var targetMapId = target.targetId;
6608
+ var wmMap = getWMJSMapById(targetMapId);
6609
+ if (!wmMap) {
6610
+ return true; // Map was not registered so there is nothing to prefetch, do not block going forward
6611
+ }
6612
+ var layersImageUrls = getWMSRequests(wmMap, [{
6613
+ name: 'time',
6614
+ currentValue: nextTimeValueStepToCheck
6615
+ }]);
6616
+ var _iterator2 = _createForOfIteratorHelper(layersImageUrls),
6617
+ _step2;
6618
+ try {
6619
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
6620
+ var layersImageUrl = _step2.value;
6621
+ var image = wmMap.getMapImageStore.getImage(layersImageUrl.url);
6622
+ if (!image.isLoaded()) {
6623
+ if (wmMap.getMapImageStore.getNumImagesLoading() < MAX_NUMBER_OF_PARALLEL_LOADING_IMAGES) {
6624
+ image.load();
6625
+ }
6626
+ if (numPrefetch === 0) {
6627
+ var altImage = wmMap.getAlternativeImage(layersImageUrl.url, wmMap.getBBOX(), true);
6628
+ // No alternative image available yet, so skipping animation.
6629
+ if (altImage.length === 0) {
6630
+ // This is useful to indicate that the map is loading and has nothing yet to display.
6631
+ // console.warn('No data available: Not stepping forward');
6632
+ timerShouldStepForward = false;
6633
+ }
6634
+ }
6635
+ } else if (image.isStale()) {
6636
+ if (wmMap.getMapImageStore.getNumImagesLoading() < MAX_NUMBER_OF_PARALLEL_LOADING_IMAGES) {
6637
+ image.forceReload(true);
6638
+ }
6553
6639
  }
6554
6640
  }
6555
- } else if (image.isStale()) {
6556
- if (wmMap.getMapImageStore.getNumImagesLoading() < MAX_NUMBER_OF_PARALLEL_LOADING_IMAGES) {
6557
- image.forceReload(true);
6558
- }
6641
+ } catch (err) {
6642
+ _iterator2.e(err);
6643
+ } finally {
6644
+ _iterator2.f();
6559
6645
  }
6560
6646
  }
6647
+ } catch (err) {
6648
+ _iterator.e(err);
6649
+ } finally {
6650
+ _iterator.f();
6561
6651
  }
6562
6652
  }
6563
6653
  return timerShouldStepForward;
@@ -6614,8 +6704,8 @@ mapListener.startListening({
6614
6704
  var shouldAutoUpdate = isAutoUpdating(listenerApi.getState(), mapId);
6615
6705
  var prevTimeDimension = getLayerTimeDimension(listenerApi.getState(), layerId);
6616
6706
  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;
6707
+ var incomingMaxTime = newTimeDimension === null || newTimeDimension === void 0 ? void 0 : newTimeDimension.maxValue;
6708
+ var isIncomingMaxTimeLaterThanCurrentLayerTime = incomingMaxTime && (prevTimeDimension === null || prevTimeDimension === void 0 ? void 0 : prevTimeDimension.currentValue) && prevTimeDimension.currentValue !== incomingMaxTime;
6619
6709
  if (isAutoUpdateLayer &&
6620
6710
  // only update the active layer
6621
6711
  shouldAutoUpdate && isIncomingMaxTimeLaterThanCurrentLayerTime) {
@@ -6704,7 +6794,7 @@ mapListener.startListening({
6704
6794
  autoUpdateLayerId = getAutoUpdateLayerId(listenerApi.getState(), mapId);
6705
6795
  timeDimension = getLayerTimeDimension(listenerApi.getState(), autoUpdateLayerId);
6706
6796
  syncedMapIds = getSyncedMapIdsForTimeslider(listenerApi.getState()); // go to end of active layer
6707
- if (timeDimension != null && timeDimension.maxValue && autoUpdateLayerId) {
6797
+ if (timeDimension !== null && timeDimension !== void 0 && timeDimension.maxValue && autoUpdateLayerId) {
6708
6798
  listenerApi.dispatch(layerActions.layerChangeDimension({
6709
6799
  layerId: autoUpdateLayerId,
6710
6800
  origin: LayerActionOrigin.toggleAutoUpdateListener,
@@ -6777,11 +6867,11 @@ mapListener.startListening({
6777
6867
  // In case of the timeList
6778
6868
  if (timeList && timeList.length > 0) {
6779
6869
  // Determine animation step based on initialTime and timeList
6780
- var initalTimerStep = timeList == null ? void 0 : timeList.findIndex(function (timeNameValue) {
6870
+ var initalTimerStep = timeList === null || timeList === void 0 ? void 0 : timeList.findIndex(function (timeNameValue) {
6781
6871
  return timeNameValue.value === initialTime;
6782
6872
  });
6783
6873
  if (initalTimerStep !== -1) {
6784
- setStep(useMapId, initalTimerStep);
6874
+ setStep$1(useMapId, initalTimerStep);
6785
6875
  }
6786
6876
  }
6787
6877
  }
@@ -6813,14 +6903,14 @@ var handleBaseLayers = function handleBaseLayers(mapId, baseLayers, listenerApi)
6813
6903
  // This happens when switching to a preset that has non-default baselayers
6814
6904
  if (!activeAvailableBaseLayer && currentAvailableBaseLayers.length) {
6815
6905
  listenerApi.dispatch(layerActions.addAvailableBaseLayers({
6816
- layers: [Object.assign({}, baseLayer, {
6906
+ layers: [_objectSpread2(_objectSpread2({}, baseLayer), {}, {
6817
6907
  mapId: mapId,
6818
6908
  id: activeBaseLayerId
6819
6909
  })]
6820
6910
  }));
6821
6911
  }
6822
6912
  var baseLayersWithActiveId = baseLayers.map(function (layer, index) {
6823
- return index === 0 ? Object.assign({}, layer, {
6913
+ return index === 0 ? _objectSpread2(_objectSpread2({}, layer), {}, {
6824
6914
  id: activeBaseLayerId || layer.id
6825
6915
  }) : layer;
6826
6916
  });
@@ -6868,10 +6958,10 @@ mapListener.startListening({
6868
6958
  // make sure layer with new id exist and if not, default to first layer
6869
6959
  newAutoUpdateLayerId = ((_newLayerIds$layers$f = newLayerIds.layers.find(function (layer) {
6870
6960
  return layer.id === newLayerIds.autoUpdateLayerId;
6871
- })) == null ? void 0 : _newLayerIds$layers$f.id) || ((_newLayerIds$layers$ = newLayerIds.layers[0]) == null ? void 0 : _newLayerIds$layers$.id);
6961
+ })) === 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
6962
  newAutoTimeStepLayerId = ((_newLayerIds$layers$f2 = newLayerIds.layers.find(function (layer) {
6873
6963
  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);
6964
+ })) === 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
6965
  listenerApi.dispatch(mapActions.setAutoLayerId({
6876
6966
  mapId: mapId,
6877
6967
  autoUpdateLayerId: newAutoUpdateLayerId,
@@ -6879,16 +6969,16 @@ mapListener.startListening({
6879
6969
  }));
6880
6970
  }
6881
6971
  customLayers = getdefaultMapSettingsLayers(listenerApi.getState());
6882
- customBaseLayer = customLayers == null ? void 0 : customLayers.find(function (layer) {
6972
+ customBaseLayer = customLayers === null || customLayers === void 0 ? void 0 : customLayers.find(function (layer) {
6883
6973
  return layer.layerType === LayerType.baseLayer;
6884
6974
  });
6885
- customOverLayer = customLayers == null ? void 0 : customLayers.find(function (layer) {
6975
+ customOverLayer = customLayers === null || customLayers === void 0 ? void 0 : customLayers.find(function (layer) {
6886
6976
  return layer.layerType === LayerType.overLayer;
6887
6977
  }); // sets (default) baseLayers
6888
6978
  baseLayersWithDefaultLayer = baseLayers.length ? baseLayers : [customBaseLayer || defaultLayers.baseLayerGrey]; // sets (default) overLayers
6889
6979
  overLayersWithDefaultLayer = overLayers.length ? overLayers : [customOverLayer || defaultLayers.overLayer];
6890
- allBaseLayers = [].concat(baseLayersWithDefaultLayer, overLayersWithDefaultLayer).map(function (layer) {
6891
- return Object.assign({}, layer, {
6980
+ allBaseLayers = [].concat(_toConsumableArray(baseLayersWithDefaultLayer), _toConsumableArray(overLayersWithDefaultLayer)).map(function (layer) {
6981
+ return _objectSpread2(_objectSpread2({}, layer), {}, {
6892
6982
  id: webmapUtils.generateLayerId()
6893
6983
  });
6894
6984
  });
@@ -6902,7 +6992,7 @@ mapListener.startListening({
6902
6992
  _context2.next = 19;
6903
6993
  break;
6904
6994
  }
6905
- throw new Error("Projection " + proj.srs + " is not supported");
6995
+ throw new Error("Projection ".concat(proj.srs, " is not supported"));
6906
6996
  case 19:
6907
6997
  // set bbox
6908
6998
  listenerApi.dispatch(mapActions.setBbox({
@@ -7135,8 +7225,9 @@ mapListener.startListening({
7135
7225
  var timeStep = getMapTimeStep(listenerApi.getState(), mapId);
7136
7226
  var currentTime = getSelectedTime(listenerApi.getState(), mapId);
7137
7227
  var _mapSelectors$getData = getDataLimitsFromLayers(listenerApi.getState(), mapId),
7138
- dataStartTime = _mapSelectors$getData[0],
7139
- dataEndTime = _mapSelectors$getData[1];
7228
+ _mapSelectors$getData2 = _slicedToArray(_mapSelectors$getData, 2),
7229
+ dataStartTime = _mapSelectors$getData2[0],
7230
+ dataEndTime = _mapSelectors$getData2[1];
7140
7231
  if (dateUtils.isValid(currentTime)) {
7141
7232
  var makeForwardStep = function makeForwardStep() {
7142
7233
  var nextTime = currentTime + timeStep;
@@ -7167,6 +7258,186 @@ mapListener.startListening({
7167
7258
  }
7168
7259
  });
7169
7260
 
7261
+ var copyView = function copyView(view) {
7262
+ return new View({
7263
+ center: view.getCenter(),
7264
+ resolution: view.getResolution(),
7265
+ projection: view.getProjection()
7266
+ });
7267
+ };
7268
+ /**
7269
+ * The StoredView objects keep references to OpenLayers View objects that may be shared
7270
+ * between multiple maps (when maps are pan/zoom synced).
7271
+ * This file then offers and API for each map to retrieve the StoredView object
7272
+ * that is relevant for the current workspace configuration.
7273
+ *
7274
+ * React is functional, but OpenLayers is object oriented.
7275
+ * This component sits in between the two and thus you can make an argument for either style.
7276
+ * Object oriented was chosen since:
7277
+ * - This allows us to use OpenLayers's Observable as a base class to provide event handling,
7278
+ * which is useful for the implementation.
7279
+ * - For this mechanism to work smoothly with OpenLayers,
7280
+ * 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.
7281
+ */
7282
+ var StoredView = /*#__PURE__*/function (_Observable) {
7283
+ function StoredView(name, view) {
7284
+ var _this;
7285
+ _classCallCheck(this, StoredView);
7286
+ _this = _callSuper(this, StoredView);
7287
+ _this.name = name;
7288
+ _this.view = view;
7289
+ return _this;
7290
+ }
7291
+ _inherits(StoredView, _Observable);
7292
+ return _createClass(StoredView, [{
7293
+ key: "setView",
7294
+ value: function setView(view) {
7295
+ this.view = view;
7296
+ this.changed();
7297
+ }
7298
+ }]);
7299
+ }(Observable);
7300
+ var VIEW_PER_SYNCGROUP = {};
7301
+ var VIEW_PER_MAP = {};
7302
+ var getViewObjectForMapId = function getViewObjectForMapId(id) {
7303
+ var storedView = VIEW_PER_MAP[id];
7304
+ if (!storedView) {
7305
+ var newStoredView = new StoredView("view:".concat(id), new View());
7306
+ VIEW_PER_MAP[id] = newStoredView;
7307
+ return newStoredView;
7308
+ }
7309
+ return storedView;
7310
+ };
7311
+ var createViewObjectForNewMap = function createViewObjectForNewMap(createFromId, newId) {
7312
+ var orig = VIEW_PER_MAP[createFromId];
7313
+ if (!orig) {
7314
+ return;
7315
+ }
7316
+ // If there already is a view for `newId`, use that one but set the view from createFromId
7317
+ // this can happen for example when switching presets
7318
+ if (VIEW_PER_MAP[newId] !== undefined) {
7319
+ VIEW_PER_MAP[newId].setView(copyView(orig.view));
7320
+ return;
7321
+ }
7322
+ VIEW_PER_MAP[newId] = new StoredView("view:".concat(newId), copyView(orig.view));
7323
+ };
7324
+ var getViewObjectForSyncGroup = function getViewObjectForSyncGroup(id) {
7325
+ var storedView = VIEW_PER_SYNCGROUP[id];
7326
+ if (!storedView) {
7327
+ var newStoredView = new StoredView("syncgroup:".concat(id), new View());
7328
+ VIEW_PER_SYNCGROUP[id] = newStoredView;
7329
+ return newStoredView;
7330
+ }
7331
+ return storedView;
7332
+ };
7333
+
7334
+ /* *
7335
+ * Licensed under the Apache License, Version 2.0 (the "License");
7336
+ * you may not use this file except in compliance with the License.
7337
+ * You may obtain a copy of the License at
7338
+ *
7339
+ * http://www.apache.org/licenses/LICENSE-2.0
7340
+ *
7341
+ * Unless required by applicable law or agreed to in writing, software
7342
+ * distributed under the License is distributed on an "AS IS" BASIS,
7343
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7344
+ * See the License for the specific language governing permissions and
7345
+ * limitations under the License.
7346
+ *
7347
+ * Copyright 2024 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7348
+ * Copyright 2024 - Finnish Meteorological Institute (FMI)
7349
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
7350
+ * */
7351
+ var openlayersListener = createListenerMiddleware();
7352
+ var getGroupForMap = function getGroupForMap(mapId, state) {
7353
+ var syncGroupState = getSynchronizationGroupState(state);
7354
+ return syncGroupState.groups.allIds.find(function (id) {
7355
+ var group = syncGroupState.groups.byId[id];
7356
+ return group.type === SYNCGROUPS_TYPE_SETBBOX && group.targets.allIds.indexOf(mapId) !== -1;
7357
+ });
7358
+ };
7359
+ // This is fired when the preset is set up and when the projection is changed
7360
+ openlayersListener.startListening({
7361
+ actionCreator: mapActions.setBbox,
7362
+ effect: function effect(_ref, listenerApi) {
7363
+ var payload = _ref.payload;
7364
+ var mapId = payload.mapId,
7365
+ bbox = payload.bbox,
7366
+ srs = payload.srs;
7367
+ var extent = boundingExtent([[bbox.left, bbox.bottom], [bbox.right, bbox.top]]);
7368
+ var storedViewForMap = getViewObjectForMapId(mapId);
7369
+ var view = new View({
7370
+ projection: srs,
7371
+ center: getCenter(extent)
7372
+ });
7373
+ storedViewForMap.setView(view);
7374
+ // 1024 is the current best guess for width / height of a map
7375
+ // Feature request made for OL to help us get this right https://github.com/openlayers/openlayers/issues/16572
7376
+ view.setViewportSize([1024, 1024]);
7377
+ var resolution = view.getResolutionForExtent(extent);
7378
+ view.setResolution(resolution);
7379
+ // Also: if this map is part of a group and the srs has changed => change group view
7380
+ var mapSyncGroup = getGroupForMap(mapId, listenerApi.getState());
7381
+ if (!mapSyncGroup) {
7382
+ return;
7383
+ }
7384
+ var groupView = getViewObjectForSyncGroup(mapSyncGroup);
7385
+ if (!groupView.view.isDef() || groupView.view.getProjection().getCode() !== srs) {
7386
+ groupView.setView(copyView(view));
7387
+ }
7388
+ }
7389
+ });
7390
+ // This is fired when the map view is updated (regardless of if the map is in a group or not)
7391
+ // When a map is in a group, this needs to ensure the view of the map is kept up-to-date
7392
+ openlayersListener.startListening({
7393
+ actionCreator: setBboxSync,
7394
+ effect: function effect(_ref2, listenerApi) {
7395
+ var _payload$source;
7396
+ var payload = _ref2.payload;
7397
+ var mapId = (_payload$source = payload.source) === null || _payload$source === void 0 ? void 0 : _payload$source.payload.sourceId;
7398
+ var mapSyncGroup = getGroupForMap(mapId, listenerApi.getState());
7399
+ if (!mapSyncGroup) {
7400
+ return;
7401
+ }
7402
+ var groupView = getViewObjectForSyncGroup(mapSyncGroup);
7403
+ var mapView = getViewObjectForMapId(mapId);
7404
+ if (mapView.view.getProjection() === groupView.view.getProjection()) {
7405
+ mapView.view.setCenter(groupView.view.getCenter());
7406
+ mapView.view.setResolution(groupView.view.getResolution());
7407
+ } else {
7408
+ mapView.setView(copyView(groupView.view));
7409
+ }
7410
+ }
7411
+ });
7412
+ openlayersListener.startListening({
7413
+ actionCreator: syncGroupAddGroup,
7414
+ effect: function effect(_ref3) {
7415
+ var payload = _ref3.payload;
7416
+ if (payload.type !== SYNCGROUPS_TYPE_SETBBOX) {
7417
+ return;
7418
+ }
7419
+ // Ensure there is an openlayers view for the sync group
7420
+ getViewObjectForSyncGroup(payload.groupId);
7421
+ }
7422
+ });
7423
+ // Ensure sync group view has contents: when a target is added to a group whose view is undefined, copy the view from the target
7424
+ openlayersListener.startListening({
7425
+ actionCreator: syncGroupAddTarget,
7426
+ effect: function effect(_ref4, listenerApi) {
7427
+ var payload = _ref4.payload;
7428
+ var group = getSynchronizationGroup(listenerApi.getState(), payload.groupId);
7429
+ if (!group || group.type !== SYNCGROUPS_TYPE_SETBBOX) {
7430
+ return;
7431
+ }
7432
+ var groupView = getViewObjectForSyncGroup(payload.groupId);
7433
+ if (groupView.view.isDef()) {
7434
+ return;
7435
+ }
7436
+ var mapView = getViewObjectForMapId(payload.targetId);
7437
+ groupView.setView(copyView(mapView.view));
7438
+ }
7439
+ });
7440
+
7170
7441
  var _excluded = ["url"];
7171
7442
  var serviceListener = createListenerMiddleware();
7172
7443
  var fetchService = /*#__PURE__*/function () {
@@ -7180,7 +7451,7 @@ var fetchService = /*#__PURE__*/function () {
7180
7451
  return queryWMSLayers(service.serviceUrl);
7181
7452
  case 3:
7182
7453
  layers = _context.sent;
7183
- listenerApi.dispatch(serviceActions.serviceSetLayers(Object.assign({}, service, {
7454
+ listenerApi.dispatch(serviceActions.serviceSetLayers(_objectSpread2(_objectSpread2({}, service), {}, {
7184
7455
  layers: layers
7185
7456
  })));
7186
7457
  _context.next = 10;
@@ -7216,8 +7487,8 @@ var fetchInitialServices = /*#__PURE__*/function () {
7216
7487
  _context2.next = 5;
7217
7488
  return Promise.all(payload.services.map(function (_ref3) {
7218
7489
  var url = _ref3.url,
7219
- service = _objectWithoutPropertiesLoose(_ref3, _excluded);
7220
- return fetchService(Object.assign({}, service, {
7490
+ service = _objectWithoutProperties(_ref3, _excluded);
7491
+ return fetchService(_objectSpread2(_objectSpread2({}, service), {}, {
7221
7492
  serviceUrl: url
7222
7493
  }), listenerApi);
7223
7494
  }));
@@ -7348,23 +7619,6 @@ routerListener.startListening({
7348
7619
  }()
7349
7620
  });
7350
7621
 
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
7622
  // reducer utils
7369
7623
  var drawAdapter = createEntityAdapter({
7370
7624
  selectId: function selectId(draw) {
@@ -7375,9 +7629,9 @@ var getDrawToolByLayerId = function getDrawToolByLayerId(draft, layerId) {
7375
7629
  var drawTool = draft.ids.map(function (id) {
7376
7630
  return draft.entities[id];
7377
7631
  }).find(function (tool) {
7378
- return (tool == null ? void 0 : tool.geoJSONLayerId) === layerId;
7632
+ return (tool === null || tool === void 0 ? void 0 : tool.geoJSONLayerId) === layerId;
7379
7633
  });
7380
- return (drawTool == null ? void 0 : drawTool.drawToolId) || undefined;
7634
+ return (drawTool === null || drawTool === void 0 ? void 0 : drawTool.drawToolId) || undefined;
7381
7635
  };
7382
7636
  var initialState = drawAdapter.getInitialState();
7383
7637
  var slice = createSlice({
@@ -7424,11 +7678,11 @@ var slice = createSlice({
7424
7678
  var tool = drawTool.drawModes.find(function (drawMode) {
7425
7679
  return drawMode.drawModeId === drawModeId;
7426
7680
  });
7427
- if ((tool == null ? void 0 : tool.isSelectable) === false) {
7681
+ if ((tool === null || tool === void 0 ? void 0 : tool.isSelectable) === false) {
7428
7682
  drawTool.activeDrawModeId = '';
7429
7683
  return;
7430
7684
  }
7431
- if ((drawTool == null ? void 0 : drawTool.activeDrawModeId) !== drawModeId || !shouldUpdateShape) {
7685
+ if ((drawTool === null || drawTool === void 0 ? void 0 : drawTool.activeDrawModeId) !== drawModeId || !shouldUpdateShape) {
7432
7686
  drawTool.activeDrawModeId = drawModeId;
7433
7687
  } else {
7434
7688
  drawTool.activeDrawModeId = '';
@@ -7457,7 +7711,7 @@ var slice = createSlice({
7457
7711
  }
7458
7712
  var newModes = drawTool.drawModes.map(function (mode) {
7459
7713
  if (mode.drawModeId === drawModeId) {
7460
- return Object.assign({}, mode, {
7714
+ return _objectSpread2(_objectSpread2({}, mode), {}, {
7461
7715
  shape: shape
7462
7716
  }, title && {
7463
7717
  title: title
@@ -7496,11 +7750,11 @@ var slice = createSlice({
7496
7750
  var entity = draft.entities[drawToolId];
7497
7751
  if (drawToolId && entity !== undefined) {
7498
7752
  var _entity$drawModes;
7499
- var newDrawModes = entity == null || (_entity$drawModes = entity.drawModes) == null ? void 0 : _entity$drawModes.map(function (mode) {
7753
+ var newDrawModes = entity === null || entity === void 0 || (_entity$drawModes = entity.drawModes) === null || _entity$drawModes === void 0 ? void 0 : _entity$drawModes.map(function (mode) {
7500
7754
  if (mode.shape.type === 'Feature') {
7501
- return Object.assign({}, mode, {
7502
- shape: Object.assign({}, mode.shape, {
7503
- properties: Object.assign({}, mode.shape.properties, properties)
7755
+ return _objectSpread2(_objectSpread2({}, mode), {}, {
7756
+ shape: _objectSpread2(_objectSpread2({}, mode.shape), {}, {
7757
+ properties: _objectSpread2(_objectSpread2({}, mode.shape.properties), properties)
7504
7758
  })
7505
7759
  });
7506
7760
  }
@@ -7552,7 +7806,7 @@ var getDrawingtoolStore = function getDrawingtoolStore(store) {
7552
7806
  };
7553
7807
  var _drawAdapter$getSelec = drawAdapter.getSelectors(function (state) {
7554
7808
  var _state$drawingtools;
7555
- return (_state$drawingtools = state == null ? void 0 : state.drawingtools) != null ? _state$drawingtools : {
7809
+ return (_state$drawingtools = state === null || state === void 0 ? void 0 : state.drawingtools) !== null && _state$drawingtools !== void 0 ? _state$drawingtools : {
7556
7810
  entities: {},
7557
7811
  ids: []
7558
7812
  };
@@ -7560,35 +7814,35 @@ var _drawAdapter$getSelec = drawAdapter.getSelectors(function (state) {
7560
7814
  selectDrawToolById = _drawAdapter$getSelec.selectById,
7561
7815
  selectAllDrawingTools = _drawAdapter$getSelec.selectAll;
7562
7816
  var getActiveDrawToolId = createSelector(selectAllDrawingTools, function (drawtools) {
7563
- var activeDrawTool = drawtools == null ? void 0 : drawtools.find(function (drawtool) {
7817
+ var activeDrawTool = drawtools === null || drawtools === void 0 ? void 0 : drawtools.find(function (drawtool) {
7564
7818
  return drawtool.activeDrawModeId !== '';
7565
7819
  });
7566
- return (activeDrawTool == null ? void 0 : activeDrawTool.drawToolId) || '';
7820
+ return (activeDrawTool === null || activeDrawTool === void 0 ? void 0 : activeDrawTool.drawToolId) || '';
7567
7821
  });
7568
7822
  var getDrawModeById = createSelector(selectDrawToolById, function (_store, _drawToolId, drawModeId) {
7569
7823
  return drawModeId;
7570
7824
  }, function (draw, drawModeId) {
7571
- return draw == null ? void 0 : draw.drawModes.find(function (tool) {
7825
+ return draw === null || draw === void 0 ? void 0 : draw.drawModes.find(function (tool) {
7572
7826
  return tool.drawModeId === drawModeId;
7573
7827
  });
7574
7828
  });
7575
7829
  var getActiveDrawModeId = createSelector(selectDrawToolById, function (drawingTool) {
7576
- return (drawingTool == null ? void 0 : drawingTool.activeDrawModeId) || '';
7830
+ return (drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.activeDrawModeId) || '';
7577
7831
  });
7578
7832
  var getDrawToolGeoJSONLayerId = createSelector(selectDrawToolById, function (drawingTool) {
7579
- return (drawingTool == null ? void 0 : drawingTool.geoJSONLayerId) || '';
7833
+ return (drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.geoJSONLayerId) || '';
7580
7834
  });
7581
7835
  var getGeoJSONIntersectionLayerId = createSelector(selectDrawToolById, function (drawingTool) {
7582
- return drawingTool == null ? void 0 : drawingTool.geoJSONIntersectionLayerId;
7836
+ return drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.geoJSONIntersectionLayerId;
7583
7837
  });
7584
7838
  var getGeoJSONIntersectionBoundsLayerId = createSelector(selectDrawToolById, function (drawingTool) {
7585
- return drawingTool == null ? void 0 : drawingTool.geoJSONIntersectionBoundsLayerId;
7839
+ return drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.geoJSONIntersectionBoundsLayerId;
7586
7840
  });
7587
7841
  var getShouldAllowMultipleShapes = createSelector(selectDrawToolById, function (drawingTool) {
7588
- return (drawingTool == null ? void 0 : drawingTool.shouldAllowMultipleShapes) || false;
7842
+ return (drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.shouldAllowMultipleShapes) || false;
7589
7843
  });
7590
7844
  var getActiveDrawMode = createSelector(selectDrawToolById, function (drawingTool) {
7591
- return drawingTool == null ? void 0 : drawingTool.drawModes.find(function (mode) {
7845
+ return drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.drawModes.find(function (mode) {
7592
7846
  return mode.drawModeId === drawingTool.activeDrawModeId;
7593
7847
  });
7594
7848
  });
@@ -7709,10 +7963,10 @@ drawingToolListener.startListening({
7709
7963
  drawMode: ''
7710
7964
  }));
7711
7965
  geoJSONLayer = getLayerById(listenerApi.getState(), drawingTool.geoJSONLayerId);
7712
- geoJSON = geoJSONLayer == null ? void 0 : geoJSONLayer.geojson;
7966
+ geoJSON = geoJSONLayer === null || geoJSONLayer === void 0 ? void 0 : geoJSONLayer.geojson;
7713
7967
  lastFeatureIndex = geoJSON !== undefined ? getLastEmptyFeatureIndex(geoJSON) : undefined;
7714
7968
  if (lastFeatureIndex !== undefined) {
7715
- newGeoJSON = Object.assign({}, geoJSON, {
7969
+ newGeoJSON = _objectSpread2(_objectSpread2({}, geoJSON), {}, {
7716
7970
  features: geoJSON.features.filter(function (_feature, index) {
7717
7971
  return index !== lastFeatureIndex;
7718
7972
  })
@@ -7753,10 +8007,10 @@ drawingToolListener.startListening({
7753
8007
  // check tool is selected of existing drawn shape
7754
8008
  currentGeoJSONLayer = getLayerById(listenerApi.getState(), drawingTool.geoJSONLayerId);
7755
8009
  _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;
8010
+ 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
8011
  newSelectionType = newDrawMode.selectionType;
7758
8012
  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
8013
+ 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
8014
  if (shouldUpdateNewShape && shouldUpdateShape) {
7761
8015
  shapeWithSelectionType = addSelectionTypeToGeoJSON(newDrawMode.shape, newDrawMode.selectionType);
7762
8016
  geoJSONFeatureCollection = getFeatureCollection(shapeWithSelectionType, shouldAllowMultipleShapes, currentGeoJSON);
@@ -7768,12 +8022,12 @@ drawingToolListener.startListening({
7768
8022
  layerId: drawingTool.geoJSONLayerId,
7769
8023
  selectedFeatureIndex: _newGeoJSON.features.length - 1
7770
8024
  }));
7771
- listenerApi.dispatch(layerActions.updateFeature(Object.assign({
8025
+ listenerApi.dispatch(layerActions.updateFeature(_objectSpread2(_objectSpread2({
7772
8026
  layerId: drawingTool.geoJSONLayerId,
7773
8027
  geojson: _newGeoJSON
7774
8028
  }, geoJSONIntersectionLayerId && {
7775
8029
  geoJSONIntersectionLayerId: geoJSONIntersectionLayerId
7776
- }, geoJSONIntersectionBoundsLayerId && {
8030
+ }), geoJSONIntersectionBoundsLayerId && {
7777
8031
  geoJSONIntersectionBoundsLayerId: geoJSONIntersectionBoundsLayerId
7778
8032
  })));
7779
8033
  }
@@ -7907,6 +8161,179 @@ layersListener.startListening({
7907
8161
  }()
7908
8162
  });
7909
8163
 
8164
+ /* A map with all the timerIds and their current step */
8165
+ var stepMap = new Map();
8166
+ /* A map with a list of timers and their dwell */
8167
+ var timerDwellMap = new Map();
8168
+ /**
8169
+ * Returns the next step for given timerId.
8170
+ * @param timerId The timer id
8171
+ * @param numberOfStepsInAnimation Animation length in steps
8172
+ * @param numStepsToGoForward Amount of steps to go forwards, defaults to 1. Can be positive and negative
8173
+ * @returns
8174
+ */
8175
+ var getNextStep = function getNextStep(timerId, numberOfStepsInAnimation) {
8176
+ var numStepsToGoForward = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
8177
+ var currentStep = getCurrentStep(timerId);
8178
+ var nextStep = currentStep + numStepsToGoForward;
8179
+ var nextStepClipped = (nextStep % numberOfStepsInAnimation + numberOfStepsInAnimation) % numberOfStepsInAnimation;
8180
+ return nextStepClipped;
8181
+ };
8182
+ /**
8183
+ * 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.
8184
+ * @param timerId The timer id
8185
+ * @param numberOfStepsInAnimation Number of steps in the animation
8186
+ * @param dwell The number of steps to wait at the end of the animation sequence before to continue
8187
+ * @returns
8188
+ */
8189
+ var handleTimerDwell = function handleTimerDwell(timerId, numberOfStepsInAnimation) {
8190
+ var dwell = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 8;
8191
+ if (dwell > 0) {
8192
+ var currentStep = getCurrentStep(timerId);
8193
+ // Reset the dwell if we are not at the last animation step
8194
+ if (currentStep < numberOfStepsInAnimation - 1) {
8195
+ timerDwellMap.set(timerId, dwell);
8196
+ return false;
8197
+ }
8198
+ // We are at the last animation step, check the dwell
8199
+ var timerDwell = timerDwellMap.has(timerId) && timerDwellMap.get(timerId) || 0;
8200
+ if (currentStep === numberOfStepsInAnimation - 1 && timerDwell > 0) {
8201
+ timerDwellMap.set(timerId, timerDwell - 1);
8202
+ return true;
8203
+ }
8204
+ }
8205
+ return false;
8206
+ };
8207
+ /**
8208
+ * Set step for the timerId
8209
+ * @param timerId
8210
+ * @param timerStep
8211
+ */
8212
+ var setStep = function setStep(timerId, timerStep) {
8213
+ stepMap.set(timerId, timerStep);
8214
+ };
8215
+ /**
8216
+ * Gets the current step for the timer
8217
+ * @param timerId
8218
+ * @returns
8219
+ */
8220
+ var getCurrentStep = function getCurrentStep(timerId) {
8221
+ return stepMap.get(timerId) || 0;
8222
+ };
8223
+ /**
8224
+ * Checks if the next step is available for all provided layers
8225
+ * @param reduxLayers
8226
+ * @param nextTimeString
8227
+ * @returns
8228
+ */
8229
+ var isNextStepAvailable = function isNextStepAvailable(reduxLayers, nextTimeString) {
8230
+ // Get all wmLayers for the found id's
8231
+ var wmLayers = reduxLayers.map(function (reduxLayer) {
8232
+ return reduxLayer.id && getWMLayerById(reduxLayer.id);
8233
+ }).filter(function (l) {
8234
+ return !!l;
8235
+ });
8236
+ // Returns a layer which could have an image for the requested time, but which isn't loaded yet.
8237
+ var isThereSomethingNotAvailable = wmLayers.map(function (l) {
8238
+ var _l$getDimension;
8239
+ if (!l || !l.olSource) {
8240
+ // No OpenLayers source, do nothing, so do not flag that something is not available
8241
+ return {
8242
+ status: true
8243
+ };
8244
+ }
8245
+ // Check if there is a timevalue available
8246
+ var closestValue = (_l$getDimension = l.getDimension('time')) === null || _l$getDimension === void 0 ? void 0 : _l$getDimension.getClosestValue(nextTimeString);
8247
+ if (!closestValue || WMInvalidDateValues.has(closestValue)) {
8248
+ // No value available, so do not flag that something is not available
8249
+ return {
8250
+ status: true
8251
+ };
8252
+ }
8253
+ var olSource = l.olSource;
8254
+ var hasImageAvailableForRequestedTimeStep = olSource.hasImageForTimeValue(closestValue);
8255
+ // If there is no image available for requested timestep, return true and flag that this thing is not ready yet.
8256
+ if (hasImageAvailableForRequestedTimeStep) {
8257
+ return {
8258
+ status: true
8259
+ };
8260
+ }
8261
+ olSource.loadImageForTimeValue(closestValue);
8262
+ return {
8263
+ status: false
8264
+ };
8265
+ });
8266
+ var nextStepIsAvailable = isThereSomethingNotAvailable.filter(function (d) {
8267
+ return d.status === true;
8268
+ }).length === wmLayers.length;
8269
+ return nextStepIsAvailable;
8270
+ };
8271
+ /**
8272
+ * This handler is triggered by the metronome. An array of timerIds is given as argument.
8273
+ * It will update the animation loop of multiple maps and sliders
8274
+ * It will prefetch images for maps
8275
+ * @param timerIds string[] array of timerIds
8276
+ * @param listenerApi ListenerEffectAPI<CoreAppStore, Dispatch, unknown> listenerApi as received from listener
8277
+ */
8278
+ var olMetronomeHandler = function olMetronomeHandler(timerIds, listenerApi) {
8279
+ var targetsWithUpdateValue = [];
8280
+ var _iterator = _createForOfIteratorHelper(timerIds),
8281
+ _step;
8282
+ try {
8283
+ var _loop = function _loop() {
8284
+ var timerId = _step.value;
8285
+ var animationListValuesNameAndValue = getAnimationList(listenerApi.getState(), timerId);
8286
+ var animationListValues = animationListValuesNameAndValue.map(function (nameAndValue) {
8287
+ return nameAndValue.value;
8288
+ });
8289
+ var targets = getTargets(listenerApi.getState(), {
8290
+ sourceId: timerId,
8291
+ origin: timerId
8292
+ }, SYNCGROUPS_TYPE_SETTIME);
8293
+ if (targets.length === 0) {
8294
+ // When there are no targets, default to one
8295
+ targets.push({
8296
+ targetId: timerId,
8297
+ value: ''
8298
+ });
8299
+ }
8300
+ var timerIsInDwell = handleTimerDwell(timerId, animationListValues.length);
8301
+ // Collect all layers for this syncgroups target
8302
+ var reduxLayers = [];
8303
+ targets.forEach(function (target) {
8304
+ reduxLayers.push.apply(reduxLayers, _toConsumableArray(getLayersByMapId(listenerApi.getState(), target.targetId).filter(function (l) {
8305
+ return l.layerType === LayerType.mapLayer;
8306
+ })));
8307
+ });
8308
+ var nextStep = getNextStep(timerId, animationListValues.length, 1);
8309
+ var timerShouldStepForward = isNextStepAvailable(reduxLayers, animationListValues[nextStep]) && !timerIsInDwell;
8310
+ // Determine the next step
8311
+ var timerStep = timerShouldStepForward ? getNextStep(timerId, animationListValues.length) : getCurrentStep(timerId);
8312
+ setStep(timerId, timerStep);
8313
+ var updatedValue = animationListValues[timerStep];
8314
+ targetsWithUpdateValue.push.apply(targetsWithUpdateValue, _toConsumableArray(targets.map(function (target) {
8315
+ return _objectSpread2(_objectSpread2({}, target), {}, {
8316
+ value: updatedValue
8317
+ });
8318
+ })));
8319
+ var speedDelay = getMapAnimationDelay(listenerApi.getState(), timerId);
8320
+ var speed = 1000 / (speedDelay || 1);
8321
+ metronome.setSpeed(timerId, speed);
8322
+ };
8323
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
8324
+ _loop();
8325
+ }
8326
+ // Update all targets of all sync groups in one action.
8327
+ } catch (err) {
8328
+ _iterator.e(err);
8329
+ } finally {
8330
+ _iterator.f();
8331
+ }
8332
+ if (targetsWithUpdateValue.length > 0) {
8333
+ listenerApi.dispatch(setTimeSync(null, targetsWithUpdateValue, ['metronomelistener']));
8334
+ }
8335
+ };
8336
+
7910
8337
  /**
7911
8338
  * This handler is triggered by the metronome. An array of timerIds is given as argument.
7912
8339
  * It will update the animation loop of multiple maps and sliders
@@ -7915,43 +8342,55 @@ layersListener.startListening({
7915
8342
  * @param listenerApi ListenerEffectAPI<CoreAppStore, Dispatch, unknown> listenerApi as received from listener
7916
8343
  */
7917
8344
  var metronomeHandler = function metronomeHandler(timerIds, listenerApi) {
8345
+ if (isOpenLayersEnabled()) {
8346
+ olMetronomeHandler(timerIds, listenerApi);
8347
+ return;
8348
+ }
7918
8349
  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: ''
8350
+ var _iterator = _createForOfIteratorHelper(timerIds),
8351
+ _step;
8352
+ try {
8353
+ var _loop = function _loop() {
8354
+ var timerId = _step.value;
8355
+ var animationListValuesNameAndValue = getAnimationList(listenerApi.getState(), timerId);
8356
+ var animationListValues = animationListValuesNameAndValue.map(function (nameAndValue) {
8357
+ return nameAndValue.value;
7934
8358
  });
8359
+ var targets = getTargets(listenerApi.getState(), {
8360
+ sourceId: timerId,
8361
+ origin: timerId
8362
+ }, SYNCGROUPS_TYPE_SETTIME);
8363
+ if (targets.length === 0) {
8364
+ // When there are no targets, default to one
8365
+ targets.push({
8366
+ targetId: timerId,
8367
+ value: ''
8368
+ });
8369
+ }
8370
+ var timerIsInDwell = handleTimerDwell$1(timerId, animationListValues.length);
8371
+ var timerShouldStepForward = prefetchAnimationTargetsForMetronome(timerId, animationListValues, targets) && !timerIsInDwell;
8372
+ // Determine the next step
8373
+ var timerStep = timerShouldStepForward ? getNextStep$1(timerId, animationListValues.length) : getCurrentStep$1(timerId);
8374
+ setStep$1(timerId, timerStep);
8375
+ var updatedValue = animationListValues[timerStep];
8376
+ targetsWithUpdateValue.push.apply(targetsWithUpdateValue, _toConsumableArray(targets.map(function (target) {
8377
+ return _objectSpread2(_objectSpread2({}, target), {}, {
8378
+ value: updatedValue
8379
+ });
8380
+ })));
8381
+ var speedDelay = getMapAnimationDelay(listenerApi.getState(), timerId);
8382
+ var speed = 1000 / (speedDelay || 1);
8383
+ metronome.setSpeed(timerId, speed);
8384
+ };
8385
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
8386
+ _loop();
7935
8387
  }
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();
8388
+ // Update all targets of all sync groups in one action.
8389
+ } catch (err) {
8390
+ _iterator.e(err);
8391
+ } finally {
8392
+ _iterator.f();
7953
8393
  }
7954
- // Update all targets of all sync groups in one action.
7955
8394
  if (targetsWithUpdateValue.length > 0) {
7956
8395
  listenerApi.dispatch(setTimeSync(null, targetsWithUpdateValue, ['metronomelistener']));
7957
8396
  }
@@ -8000,18 +8439,26 @@ metronomeListener.startListening({
8000
8439
  * */
8001
8440
  var unifyReducerMaps = function unifyReducerMaps(reducerMaps) {
8002
8441
  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;
8442
+ var _iterator = _createForOfIteratorHelper(reducerMaps),
8443
+ _step;
8444
+ try {
8445
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
8446
+ var reducersMap = _step.value;
8447
+ for (var _i = 0, _Object$entries = Object.entries(reducersMap); _i < _Object$entries.length; _i++) {
8448
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
8449
+ key = _Object$entries$_i[0],
8450
+ reducer = _Object$entries$_i[1];
8451
+ if (key in unifiedReducerMaps && unifiedReducerMaps[key] !== reducer) {
8452
+ throw new Error("Reducer key ".concat(key, " is already defined with a different reducer"));
8453
+ } else {
8454
+ unifiedReducerMaps[key] = reducer;
8455
+ }
8013
8456
  }
8014
8457
  }
8458
+ } catch (err) {
8459
+ _iterator.e(err);
8460
+ } finally {
8461
+ _iterator.f();
8015
8462
  }
8016
8463
  return unifiedReducerMaps;
8017
8464
  };
@@ -8034,18 +8481,15 @@ var unifyReducerMaps = function unifyReducerMaps(reducerMaps) {
8034
8481
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
8035
8482
  * */
8036
8483
  var getSingularDrawtoolDrawLayerId = function getSingularDrawtoolDrawLayerId(mapId) {
8037
- return "drawlayer-" + mapId;
8484
+ return "drawlayer-".concat(mapId);
8038
8485
  };
8039
8486
 
8040
- var createLayersState = function createLayersState(layerId, props) {
8041
- var _byId;
8042
- if (props === void 0) {
8043
- props = {};
8044
- }
8487
+ var createLayersState = function createLayersState(layerId) {
8488
+ var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8045
8489
  return {
8046
- byId: (_byId = {}, _byId[layerId] = createLayer(Object.assign({
8490
+ byId: _defineProperty({}, layerId, createLayer(_objectSpread2({
8047
8491
  id: layerId
8048
- }, props)), _byId),
8492
+ }, props))),
8049
8493
  allIds: [layerId],
8050
8494
  availableBaseLayers: {
8051
8495
  allIds: [],
@@ -8062,18 +8506,26 @@ var createMultipleLayersState = function createMultipleLayersState(layers, mapId
8062
8506
  byId: {}
8063
8507
  }
8064
8508
  };
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);
8509
+ var _iterator = _createForOfIteratorHelper(layers),
8510
+ _step;
8511
+ try {
8512
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
8513
+ var layer = _step.value;
8514
+ var layerState = createLayer(_objectSpread2(_objectSpread2({}, layer), {}, {
8515
+ id: layer.id,
8516
+ mapId: mapId
8517
+ }));
8518
+ mockState.byId[layer.id] = _objectSpread2({}, layerState);
8519
+ mockState.allIds.push(layer.id);
8520
+ if (layer.layerType === LayerType.baseLayer) {
8521
+ mockState.availableBaseLayers.byId[layer.id] = _objectSpread2({}, layerState);
8522
+ mockState.availableBaseLayers.allIds.push(layer.id);
8523
+ }
8076
8524
  }
8525
+ } catch (err) {
8526
+ _iterator.e(err);
8527
+ } finally {
8528
+ _iterator.f();
8077
8529
  }
8078
8530
  return mockState;
8079
8531
  };
@@ -8090,7 +8542,7 @@ var createWebmapState = function createWebmapState() {
8090
8542
  var mapState = createMap({
8091
8543
  id: mapId
8092
8544
  });
8093
- mockState.byId[mapId] = Object.assign({}, mapState);
8545
+ mockState.byId[mapId] = _objectSpread2({}, mapState);
8094
8546
  mockState.allIds.push(mapId);
8095
8547
  }
8096
8548
  return mockState;
@@ -8108,7 +8560,7 @@ var createMapDimensionsState = function createMapDimensionsState(dimensions) {
8108
8560
  var mapState = createMap({
8109
8561
  id: mapId
8110
8562
  });
8111
- mockState.byId[mapId] = Object.assign({}, mapState);
8563
+ mockState.byId[mapId] = _objectSpread2({}, mapState);
8112
8564
  mockState.byId[mapId].dimensions = dimensions;
8113
8565
  mockState.allIds.push(mapId);
8114
8566
  }
@@ -8153,7 +8605,7 @@ var mockStateMapWithLayer = function mockStateMapWithLayer(layer, mapId) {
8153
8605
  service: layer.service,
8154
8606
  dimensions: layer.dimensions
8155
8607
  }),
8156
- syncGroups: Object.assign({}, initialState$2, {
8608
+ syncGroups: _objectSpread2(_objectSpread2({}, initialState$2), {}, {
8157
8609
  viewState: {
8158
8610
  timeslider: {
8159
8611
  groups: [{
@@ -8176,7 +8628,7 @@ var mockStateMapWithLayer = function mockStateMapWithLayer(layer, mapId) {
8176
8628
  };
8177
8629
  var mockLinkedState = function mockLinkedState() {
8178
8630
  return {
8179
- syncGroups: Object.assign({}, initialState$2, {
8631
+ syncGroups: _objectSpread2(_objectSpread2({}, initialState$2), {}, {
8180
8632
  viewState: {
8181
8633
  timeslider: {
8182
8634
  groups: [{
@@ -8289,7 +8741,7 @@ var mockStateMapWithMultipleLayers = function mockStateMapWithMultipleLayers(lay
8289
8741
  allIds: ['serviceid_1']
8290
8742
  },
8291
8743
  layers: createMultipleLayersState(layers, mapId),
8292
- syncGroups: Object.assign({}, initialState$2, {
8744
+ syncGroups: _objectSpread2(_objectSpread2({}, initialState$2), {}, {
8293
8745
  viewState: {
8294
8746
  timeslider: {
8295
8747
  groups: [{
@@ -8362,7 +8814,7 @@ var mockStateMapWithDimensions = function mockStateMapWithDimensions(layer, mapI
8362
8814
  mapId: mapId,
8363
8815
  service: layer.service,
8364
8816
  dimensions: layer.dimensions,
8365
- enabled: (layer == null ? void 0 : layer.enabled) !== undefined ? layer.enabled : true
8817
+ enabled: (layer === null || layer === void 0 ? void 0 : layer.enabled) !== undefined ? layer.enabled : true
8366
8818
  })
8367
8819
  };
8368
8820
  };
@@ -8425,23 +8877,6 @@ var constants = /*#__PURE__*/Object.freeze({
8425
8877
  supportedComponentTypesForLinking: supportedComponentTypesForLinking
8426
8878
  });
8427
8879
 
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
8880
  var storeReducerMap = {
8446
8881
  webmap: mapReducer,
8447
8882
  services: serviceReducer,
@@ -8452,7 +8887,7 @@ var storeReducerMap = {
8452
8887
  drawingtools: drawingToolReducer,
8453
8888
  router: routerReducer
8454
8889
  };
8455
- var storeMiddlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, metronomeListener.middleware, syncGroupsListener.middleware, genericListener.middleware, drawingToolListener.middleware, routerListener.middleware];
8890
+ var storeMiddlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, metronomeListener.middleware, syncGroupsListener.middleware, genericListener.middleware, drawingToolListener.middleware, routerListener.middleware, openlayersListener.middleware];
8456
8891
  var storeRootReducer = combineReducers(storeReducerMap);
8457
8892
  var createMockStore = function createMockStore(mockState) {
8458
8893
  return configureStore({
@@ -8476,26 +8911,16 @@ var getDefaultEnhancers = function getDefaultEnhancers() {
8476
8911
  * @param enableDevTools Set to true to enable redux devtools.
8477
8912
  * @returns A redux store you can use with the core components
8478
8913
  */
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
- }
8914
+ var configureOpenGeoWebStore = function configureOpenGeoWebStore() {
8915
+ var preloadedState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8916
+ var extraReducers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8917
+ var extraMiddleWares = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
8918
+ var extraEnhancers = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : getDefaultEnhancers();
8919
+ var enableDevTools = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
8495
8920
  var allReducers = unifyReducerMaps([storeReducerMap, extraReducers]);
8496
8921
  var openGeoWebReducers = combineReducers(allReducers);
8497
8922
  // Combine middlewares
8498
- var middlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, genericListener.middleware].concat(extraMiddleWares);
8923
+ var middlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, genericListener.middleware].concat(_toConsumableArray(extraMiddleWares));
8499
8924
  // Ensure we do not add middlewares twice
8500
8925
  var uniqueMiddlewares = Array.from(new Set(middlewares.map(function (obj) {
8501
8926
  return obj;
@@ -8504,11 +8929,11 @@ var configureOpenGeoWebStore = function configureOpenGeoWebStore(preloadedState,
8504
8929
  reducer: openGeoWebReducers,
8505
8930
  preloadedState: preloadedState,
8506
8931
  enhancers: function enhancers(defaultEnhancers) {
8507
- return [compose.apply(void 0, [].concat(defaultEnhancers, extraEnhancers))];
8932
+ return [compose.apply(void 0, [].concat(_toConsumableArray(defaultEnhancers), _toConsumableArray(extraEnhancers)))];
8508
8933
  },
8509
8934
  devTools: enableDevTools,
8510
8935
  middleware: function middleware(getDefaultMiddleware) {
8511
- return [].concat(getDefaultMiddleware({
8936
+ return _toConsumableArray(getDefaultMiddleware({
8512
8937
  serializableCheck: {
8513
8938
  warnAfter: 128
8514
8939
  },
@@ -8520,4 +8945,4 @@ var configureOpenGeoWebStore = function configureOpenGeoWebStore(preloadedState,
8520
8945
  });
8521
8946
  };
8522
8947
 
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 };
8948
+ 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 };