@opengeoweb/core 4.6.0 → 4.6.1

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.umd.js CHANGED
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@reduxjs/toolkit'), require('immer'), require('moment'), require('react'), require('lodash'), require('redux-saga/effects'), require('react-redux'), require('@opengeoweb/shared'), require('@opengeoweb/theme'), require('@mui/material'), require('@opengeoweb/webmap'), require('react-sortablejs'), require('sortablejs'), require('@opengeoweb/form-fields'), require('react-hook-form'), require('react-window'), require('@mui/material/Box'), require('@mui/material/Typography'), require('@mui/material/Grid'), require('@mui/system'), require('throttle-debounce'), require('lodash.clonedeep'), require('proj4'), require('@turf/turf'), require('react-draggable'), require('re-resizable'), require('@redux-eggs/redux-toolkit'), require('@redux-eggs/saga-extension')) :
3
- typeof define === 'function' && define.amd ? define(['exports', '@reduxjs/toolkit', 'immer', 'moment', 'react', 'lodash', 'redux-saga/effects', 'react-redux', '@opengeoweb/shared', '@opengeoweb/theme', '@mui/material', '@opengeoweb/webmap', 'react-sortablejs', 'sortablejs', '@opengeoweb/form-fields', 'react-hook-form', 'react-window', '@mui/material/Box', '@mui/material/Typography', '@mui/material/Grid', '@mui/system', 'throttle-debounce', 'lodash.clonedeep', 'proj4', '@turf/turf', 'react-draggable', 're-resizable', '@redux-eggs/redux-toolkit', '@redux-eggs/saga-extension'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Core = {}, global.toolkit, global.produce, global.moment, global.React, global._, global.effects, global.reactRedux, global.shared, global.theme, global.material, global.webmap, global.reactSortablejs, global.Sortable, global.formFields, global.reactHookForm, global.reactWindow, global.Box, global.Typography, global.Grid, global.system, global.throttleDebounce, global.cloneDeep, global.proj4, global.turf, global.Draggable, global.reResizable, global.reduxToolkit, global.sagaExtension));
5
- })(this, (function (exports, toolkit, produce, moment, React, _, effects, reactRedux, shared, theme, material, webmap, reactSortablejs, Sortable, formFields, reactHookForm, reactWindow, Box, Typography, Grid, system, throttleDebounce, cloneDeep, proj4, turf, Draggable, reResizable, reduxToolkit, sagaExtension) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@reduxjs/toolkit'), require('immer'), require('moment'), require('react'), require('lodash'), require('redux-saga/effects'), require('react-redux'), require('@opengeoweb/shared'), require('@opengeoweb/theme'), require('@mui/material'), require('@opengeoweb/webmap'), require('react-sortablejs'), require('sortablejs'), require('@opengeoweb/form-fields'), require('react-hook-form'), require('react-window'), require('@mui/material/Box'), require('@mui/material/Typography'), require('@mui/material/Grid'), require('@mui/system'), require('throttle-debounce'), require('lodash.clonedeep'), require('proj4'), require('@turf/turf'), require('react-draggable'), require('re-resizable'), require('axios'), require('@opengeoweb/api'), require('@redux-eggs/redux-toolkit'), require('@redux-eggs/saga-extension')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', '@reduxjs/toolkit', 'immer', 'moment', 'react', 'lodash', 'redux-saga/effects', 'react-redux', '@opengeoweb/shared', '@opengeoweb/theme', '@mui/material', '@opengeoweb/webmap', 'react-sortablejs', 'sortablejs', '@opengeoweb/form-fields', 'react-hook-form', 'react-window', '@mui/material/Box', '@mui/material/Typography', '@mui/material/Grid', '@mui/system', 'throttle-debounce', 'lodash.clonedeep', 'proj4', '@turf/turf', 'react-draggable', 're-resizable', 'axios', '@opengeoweb/api', '@redux-eggs/redux-toolkit', '@redux-eggs/saga-extension'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Core = {}, global.toolkit, global.produce, global.moment, global.React, global._, global.effects, global.reactRedux, global.shared, global.theme, global.material, global.webmap, global.reactSortablejs, global.Sortable, global.formFields, global.reactHookForm, global.reactWindow, global.Box, global.Typography, global.Grid, global.system, global.throttleDebounce, global.cloneDeep, global.proj4, global.turf, global.Draggable, global.reResizable, global.axios, global.api, global.reduxToolkit, global.sagaExtension));
5
+ })(this, (function (exports, toolkit, produce, moment, React, _, effects, reactRedux, shared, theme, material, webmap, reactSortablejs, Sortable, formFields, reactHookForm, reactWindow, Box, Typography, Grid, system, throttleDebounce, cloneDeep, proj4, turf, Draggable, reResizable, axios, api, reduxToolkit, sagaExtension) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -37,6 +37,7 @@
37
37
  var proj4__default = /*#__PURE__*/_interopDefaultLegacy(proj4);
38
38
  var turf__namespace = /*#__PURE__*/_interopNamespace(turf);
39
39
  var Draggable__default = /*#__PURE__*/_interopDefaultLegacy(Draggable);
40
+ var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
40
41
 
41
42
  /*! *****************************************************************************
42
43
  Copyright (c) Microsoft Corporation.
@@ -4332,6 +4333,47 @@
4332
4333
  FilterType["Group"] = "groups";
4333
4334
  })(FilterType || (FilterType = {}));
4334
4335
 
4336
+ /* *
4337
+ * Licensed under the Apache License, Version 2.0 (the "License");
4338
+ * you may not use this file except in compliance with the License.
4339
+ * You may obtain a copy of the License at
4340
+ *
4341
+ * http://www.apache.org/licenses/LICENSE-2.0
4342
+ *
4343
+ * Unless required by applicable law or agreed to in writing, software
4344
+ * distributed under the License is distributed on an "AS IS" BASIS,
4345
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4346
+ * See the License for the specific language governing permissions and
4347
+ * limitations under the License.
4348
+ *
4349
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4350
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
4351
+ * */
4352
+ var getFilterId = function getFilterId(filterType, filterName) {
4353
+ return filterType + "-" + filterName;
4354
+ };
4355
+ var produceFilters = function produceFilters(filterNames, filterType, draft, layerSelectFilterAdapter) {
4356
+ filterNames.forEach(function (filterName) {
4357
+ var id = getFilterId(filterType, filterName);
4358
+
4359
+ if (!draft.filters.filters.entities[id]) {
4360
+ // If this filter doesn't exit yet, add it
4361
+ layerSelectFilterAdapter.addOne(draft.filters.filters, {
4362
+ id: id,
4363
+ name: filterName,
4364
+ amount: 1,
4365
+ amountVisible: 1,
4366
+ checked: true,
4367
+ type: filterType
4368
+ });
4369
+ } else {
4370
+ // If it exists already, up the amounts
4371
+ draft.filters.filters.entities[id].amount += 1;
4372
+ draft.filters.filters.entities[id].amountVisible += 1;
4373
+ }
4374
+ });
4375
+ };
4376
+
4335
4377
  /* *
4336
4378
  * Licensed under the Apache License, Version 2.0 (the "License");
4337
4379
  * you may not use this file except in compliance with the License.
@@ -4348,17 +4390,13 @@
4348
4390
  * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4349
4391
  * Copyright 2021 - Finnish Meteorological Institute (FMI)
4350
4392
  * */
4393
+ var layerSelectFilterAdapter = toolkit.createEntityAdapter();
4394
+ var layerSelectActiveServicesAdapter = toolkit.createEntityAdapter();
4351
4395
  var initialState$1 = {
4352
4396
  filters: {
4353
4397
  searchFilter: '',
4354
- activeServices: {
4355
- byId: {},
4356
- allIds: []
4357
- },
4358
- filters: {
4359
- byId: {},
4360
- allIds: []
4361
- }
4398
+ activeServices: layerSelectActiveServicesAdapter.getInitialState(),
4399
+ filters: layerSelectFilterAdapter.getInitialState()
4362
4400
  },
4363
4401
  allServicesEnabled: true,
4364
4402
  activeLayerInfo: {
@@ -4382,66 +4420,68 @@
4382
4420
  draft.allServicesEnabled = allServicesEnabled;
4383
4421
  },
4384
4422
  addFiltersAndActiveServices: function addFiltersAndActiveServices(draft, action) {
4385
- var _a = action.payload,
4386
- serviceId = _a.serviceId,
4387
- serviceName = _a.serviceName,
4388
- serviceUrl = _a.serviceUrl,
4389
- _abstract = _a["abstract"],
4390
- keywords = _a.keywords,
4391
- scope = _a.scope,
4392
- groups = _a.groups;
4393
-
4394
- if (!draft.filters.activeServices.byId[serviceId]) {
4395
- draft.filters.activeServices.byId[serviceId] = {};
4396
-
4397
- var addFilters = function addFilters(filterNames, filterType) {
4398
- filterNames.forEach(function (filterName) {
4399
- var id = filterType + "-" + filterName;
4400
-
4401
- if (!draft.filters.filters.byId[id]) {
4402
- draft.filters.filters.byId[id] = {
4403
- id: id,
4404
- name: filterName,
4405
- amount: 1,
4406
- amountVisible: 1,
4407
- checked: true,
4408
- type: filterType
4409
- };
4410
- draft.filters.filters.allIds.push(id);
4411
- } else {
4412
- draft.filters.filters.byId[id].amount += 1;
4413
- draft.filters.filters.byId[id].amountVisible += 1;
4414
- }
4415
- });
4423
+ var _a, _b;
4424
+
4425
+ var _c = action.payload,
4426
+ serviceId = _c.serviceId,
4427
+ serviceName = _c.serviceName,
4428
+ serviceUrl = _c.serviceUrl,
4429
+ _abstract = _c["abstract"],
4430
+ keywords = _c.keywords,
4431
+ scope = _c.scope,
4432
+ groups = _c.groups,
4433
+ isLoading = _c.isLoading;
4434
+
4435
+ if (isLoading) {
4436
+ // If service is still loading, add without filters
4437
+ draft.filters.activeServices.entities[serviceId] = {
4438
+ serviceId: serviceId,
4439
+ enabled: draft.allServicesEnabled,
4440
+ filterIds: [],
4441
+ scope: scope,
4442
+ serviceName: serviceName,
4443
+ serviceUrl: serviceUrl,
4444
+ "abstract": _abstract,
4445
+ isLoading: isLoading
4416
4446
  };
4447
+ }
4417
4448
 
4418
- addFilters(groups, FilterType.Group);
4419
- addFilters(keywords, FilterType.Keyword);
4449
+ if (!isLoading) {
4450
+ // If service is done loading, add with filters
4451
+ if (!((_b = (_a = draft.filters.activeServices.entities[serviceId]) === null || _a === void 0 ? void 0 : _a.filterIds) === null || _b === void 0 ? void 0 : _b.length)) {
4452
+ // If the service has no filters yet, add them
4453
+ produceFilters(groups, FilterType.Group, draft, layerSelectFilterAdapter);
4454
+ produceFilters(keywords, FilterType.Keyword, draft, layerSelectFilterAdapter);
4455
+ }
4456
+
4457
+ var filterIds = groups.map(function (group) {
4458
+ return getFilterId(FilterType.Group, group);
4459
+ }).concat(keywords.map(function (keyword) {
4460
+ return getFilterId(FilterType.Keyword, keyword);
4461
+ }));
4462
+ draft.filters.activeServices.entities[serviceId] = {
4463
+ serviceId: serviceId,
4464
+ enabled: draft.allServicesEnabled,
4465
+ filterIds: filterIds,
4466
+ scope: scope,
4467
+ serviceName: serviceName,
4468
+ serviceUrl: serviceUrl,
4469
+ "abstract": _abstract,
4470
+ isLoading: isLoading
4471
+ };
4420
4472
  }
4421
4473
 
4422
- var filterIds = groups.map(function (group) {
4423
- return FilterType.Group + "-" + group;
4424
- }).concat(keywords.map(function (keyword) {
4425
- return FilterType.Keyword + "-" + keyword;
4426
- }));
4427
- draft.filters.activeServices.byId[serviceId] = {
4428
- serviceId: serviceId,
4429
- enabled: draft.allServicesEnabled,
4430
- filterIds: filterIds,
4431
- scope: scope,
4432
- serviceName: serviceName,
4433
- serviceUrl: serviceUrl,
4434
- "abstract": _abstract
4435
- };
4436
- if (!draft.filters.activeServices.allIds.includes(serviceId)) draft.filters.activeServices.allIds.push(serviceId);
4474
+ if (!draft.filters.activeServices.ids.includes(serviceId)) {
4475
+ draft.filters.activeServices.ids.push(serviceId);
4476
+ }
4437
4477
  },
4438
4478
  layerSelectRemoveService: function layerSelectRemoveService(draft, action) {
4439
4479
  var serviceId = action.payload.serviceId; // 1. Find a service that is to be removed
4440
4480
 
4441
- var foundService = draft.filters.activeServices.byId[serviceId]; // 2. Go through all keywords for removed service, and decrement the amount of all found keywords
4481
+ var foundService = draft.filters.activeServices.entities[serviceId]; // 2. Go through all keywords for removed service, and decrement the amount of all found keywords
4442
4482
 
4443
4483
  foundService.filterIds.forEach(function (filterId) {
4444
- var foundObject = draft.filters.filters.byId[filterId];
4484
+ var foundObject = draft.filters.filters.entities[filterId];
4445
4485
 
4446
4486
  if (foundObject && foundObject.amount) {
4447
4487
  foundObject.amount -= 1;
@@ -4449,17 +4489,14 @@
4449
4489
  }
4450
4490
 
4451
4491
  if (foundObject && foundObject.amount === 0) {
4452
- delete draft.filters.filters.byId[filterId];
4453
- draft.filters.filters.allIds = draft.filters.filters.allIds.filter(function (serviceId) {
4492
+ delete draft.filters.filters.entities[filterId];
4493
+ draft.filters.filters.ids = draft.filters.filters.ids.filter(function (serviceId) {
4454
4494
  return serviceId !== filterId;
4455
4495
  });
4456
4496
  }
4457
4497
  }); // Finally remove object from activeServices, so if the service is added again later on, new object and keywords will be re-added
4458
4498
 
4459
- delete draft.filters.activeServices.byId[serviceId];
4460
- draft.filters.activeServices.allIds = draft.filters.activeServices.allIds.filter(function (id) {
4461
- return id !== serviceId;
4462
- });
4499
+ layerSelectActiveServicesAdapter.removeOne(draft.filters.activeServices, serviceId);
4463
4500
  },
4464
4501
  enableActiveService: function enableActiveService(draft, action) {
4465
4502
  var e_1, _a;
@@ -4467,12 +4504,12 @@
4467
4504
  var _b = action.payload,
4468
4505
  serviceId = _b.serviceId,
4469
4506
  keywords = _b.filters;
4470
- draft.filters.activeServices.byId[serviceId].enabled = true;
4507
+ draft.filters.activeServices.entities[serviceId].enabled = true;
4471
4508
 
4472
4509
  try {
4473
4510
  for (var keywords_1 = __values(keywords), keywords_1_1 = keywords_1.next(); !keywords_1_1.done; keywords_1_1 = keywords_1.next()) {
4474
4511
  var keyword = keywords_1_1.value;
4475
- draft.filters.filters.byId[keyword].amountVisible += 1;
4512
+ draft.filters.filters.entities[keyword].amountVisible += 1;
4476
4513
  }
4477
4514
  } catch (e_1_1) {
4478
4515
  e_1 = {
@@ -4492,12 +4529,12 @@
4492
4529
  var _b = action.payload,
4493
4530
  serviceId = _b.serviceId,
4494
4531
  keywords = _b.filters;
4495
- draft.filters.activeServices.byId[serviceId].enabled = false;
4532
+ draft.filters.activeServices.entities[serviceId].enabled = false;
4496
4533
 
4497
4534
  try {
4498
4535
  for (var keywords_2 = __values(keywords), keywords_2_1 = keywords_2.next(); !keywords_2_1.done; keywords_2_1 = keywords_2.next()) {
4499
4536
  var keyword = keywords_2_1.value;
4500
- draft.filters.filters.byId[keyword].amountVisible -= 1;
4537
+ draft.filters.filters.entities[keyword].amountVisible -= 1;
4501
4538
  }
4502
4539
  } catch (e_2_1) {
4503
4540
  e_2 = {
@@ -4514,15 +4551,15 @@
4514
4551
  toggleFilter: function toggleFilter(draft, action) {
4515
4552
  var filterIds = action.payload.filterIds;
4516
4553
  filterIds.forEach(function (filterId) {
4517
- draft.filters.filters.byId[filterId].checked = !draft.filters.filters.byId[filterId].checked;
4554
+ draft.filters.filters.entities[filterId].checked = !draft.filters.filters.entities[filterId].checked;
4518
4555
  });
4519
4556
  },
4520
4557
  enableOnlyOneFilter: function enableOnlyOneFilter(draft, action) {
4521
4558
  var filterId = action.payload.filterId;
4522
- draft.filters.filters.allIds.forEach(function (filterId) {
4523
- draft.filters.filters.byId[filterId].checked = false;
4559
+ draft.filters.filters.ids.forEach(function (filterId) {
4560
+ draft.filters.filters.entities[filterId].checked = false;
4524
4561
  });
4525
- draft.filters.filters.byId[filterId].checked = true;
4562
+ draft.filters.filters.entities[filterId].checked = true;
4526
4563
  },
4527
4564
  setActiveLayerInfo: function setActiveLayerInfo(draft, action) {
4528
4565
  var layer = action.payload.layer;
@@ -4618,21 +4655,30 @@
4618
4655
 
4619
4656
 
4620
4657
  var getSearchFilter = toolkit.createSelector(layerSelectStore, function (store) {
4621
- return store ? store.filters.searchFilter : '';
4658
+ var _a;
4659
+
4660
+ return ((_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.searchFilter) || '';
4622
4661
  });
4623
4662
  /**
4624
4663
  * Returns active services array
4625
4664
  *
4626
4665
  * Example getActiveServices(store);
4627
4666
  * @param {object} store store: object - store object
4628
- * @returns {object} returnType: object of active services
4667
+ * @returns {ActiveServiceObjectEntities} returnType: ActiveServiceObjectEntitiesobject of active services
4629
4668
  */
4669
+ // cast to usable type - selectEntities returns Dictionary<ActiveServiceObject> which is not usable inside of the code
4630
4670
 
4631
- var getActiveServices = toolkit.createSelector(layerSelectStore, function (store) {
4632
- var _a;
4671
+ var getActiveServices = function getActiveServices(store) {
4672
+ return getActiveServicesDictionary(store);
4673
+ };
4674
+ var getActiveServicesDictionary = layerSelectActiveServicesAdapter.getSelectors(function (store) {
4675
+ var _a, _b;
4633
4676
 
4634
- return store ? (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.activeServices.byId : {};
4635
- }, selectorMemoizationOptions);
4677
+ return ((_b = (_a = store === null || store === void 0 ? void 0 : store.layerSelect) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.activeServices) || {
4678
+ entities: {},
4679
+ ids: []
4680
+ };
4681
+ }).selectEntities;
4636
4682
  /**
4637
4683
  * Returns active services by id
4638
4684
  *
@@ -4643,9 +4689,9 @@
4643
4689
  */
4644
4690
 
4645
4691
  var getActiveServiceById = function getActiveServiceById(store, serviceId) {
4646
- var _a, _b;
4692
+ var _a, _b, _c;
4647
4693
 
4648
- var enabledServices = ((_b = (_a = store === null || store === void 0 ? void 0 : store.layerSelect) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.activeServices.byId[serviceId]) || {};
4694
+ var enabledServices = ((_c = (_b = (_a = store === null || store === void 0 ? void 0 : store.layerSelect) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.activeServices) === null || _c === void 0 ? void 0 : _c.entities[serviceId]) || {};
4649
4695
  return enabledServices;
4650
4696
  };
4651
4697
  /**
@@ -4659,10 +4705,10 @@
4659
4705
  var getEnabledServiceIds = toolkit.createSelector(layerSelectStore, function (store) {
4660
4706
  var _a, _b;
4661
4707
 
4662
- var enabledServices = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.activeServices.allIds.filter(function (serviceId) {
4663
- var _a;
4708
+ var enabledServices = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.activeServices.ids.filter(function (serviceId) {
4709
+ var _a, _b, _c;
4664
4710
 
4665
- return (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.activeServices.byId[serviceId].enabled;
4711
+ return (_c = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.activeServices) === null || _b === void 0 ? void 0 : _b.entities[serviceId]) === null || _c === void 0 ? void 0 : _c.enabled;
4666
4712
  })) !== null && _b !== void 0 ? _b : [];
4667
4713
  return enabledServices;
4668
4714
  }, selectorMemoizationOptions);
@@ -4675,17 +4721,17 @@
4675
4721
  */
4676
4722
 
4677
4723
  var getCheckedFilterIds = toolkit.createSelector(layerSelectStore, function (store) {
4678
- var _a, _b;
4724
+ var _a, _b, _c;
4679
4725
 
4680
- var checkedFilters = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters.allIds.filter(function (filterId) {
4681
- var _a, _b;
4726
+ var checkedFilters = (_c = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.ids.filter(function (filterId) {
4727
+ var _a, _b, _c;
4682
4728
 
4683
- return (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters.byId[filterId]) === null || _b === void 0 ? void 0 : _b.checked;
4684
- })) !== null && _b !== void 0 ? _b : [];
4729
+ return (_c = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.entities[filterId]) === null || _c === void 0 ? void 0 : _c.checked;
4730
+ })) !== null && _c !== void 0 ? _c : [];
4685
4731
  return checkedFilters.map(function (filterId) {
4686
- var _a;
4732
+ var _a, _b, _c;
4687
4733
 
4688
- return (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters.byId[filterId].id;
4734
+ return (_c = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.entities[filterId]) === null || _c === void 0 ? void 0 : _c.id;
4689
4735
  });
4690
4736
  }, selectorMemoizationOptions);
4691
4737
  /**
@@ -4695,12 +4741,19 @@
4695
4741
  * @param {object} store store: object - store object
4696
4742
  * @returns {array} returnType: array of all keyword ids
4697
4743
  */
4744
+ // cast to usable type - selectIds returns EntityId[] which is not usable inside of the code
4698
4745
 
4699
- var getAllFilterIds = toolkit.createSelector(layerSelectStore, function (store) {
4746
+ var getAllFilterIds = function getAllFilterIds(store) {
4747
+ return getAllFilterIdsEntity(store);
4748
+ };
4749
+ var getAllFilterIdsEntity = layerSelectFilterAdapter.getSelectors(function (store) {
4700
4750
  var _a, _b;
4701
4751
 
4702
- return (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters.allIds) !== null && _b !== void 0 ? _b : [];
4703
- }, selectorMemoizationOptions);
4752
+ return ((_b = (_a = store === null || store === void 0 ? void 0 : store.layerSelect) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.filters) || {
4753
+ entities: {},
4754
+ ids: []
4755
+ };
4756
+ }).selectIds;
4704
4757
  /**
4705
4758
  * Returns all filters
4706
4759
  *
@@ -4709,15 +4762,14 @@
4709
4762
  * @returns {array} returnType: array of all filters
4710
4763
  */
4711
4764
 
4712
- var getAllFilters = toolkit.createSelector(layerSelectStore, function (store) {
4713
- var filters = store === null || store === void 0 ? void 0 : store.filters.filters.byId;
4714
-
4715
- if (filters) {
4716
- return Object.values(filters);
4717
- }
4765
+ var getAllFilters = layerSelectFilterAdapter.getSelectors(function (store) {
4766
+ var _a, _b;
4718
4767
 
4719
- return [];
4720
- });
4768
+ return ((_b = (_a = store === null || store === void 0 ? void 0 : store.layerSelect) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.filters) || {
4769
+ entities: {},
4770
+ ids: []
4771
+ };
4772
+ }).selectAll;
4721
4773
  /**
4722
4774
  * Returns if all keywords are checked
4723
4775
  *
@@ -4729,12 +4781,29 @@
4729
4781
  var isAllFiltersChecked = toolkit.createSelector(layerSelectStore, function (store) {
4730
4782
  var _a, _b;
4731
4783
 
4732
- return (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.allIds.every(function (filterId) {
4784
+ return (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.ids.every(function (filterId) {
4733
4785
  var _a, _b, _c;
4734
4786
 
4735
- return (_c = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.byId[filterId]) === null || _c === void 0 ? void 0 : _c.checked;
4787
+ return (_c = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.entities[filterId]) === null || _c === void 0 ? void 0 : _c.checked;
4736
4788
  });
4737
4789
  });
4790
+ /**
4791
+ * Gets a KeywordObject by its id
4792
+ *
4793
+ * Example: keywordObject = getKeywordObjectById(store, 'keywordId')
4794
+ * @param {object} store object from which the keyword state will be extracted
4795
+ * @param {string} filterId Id of the keyword
4796
+ * @returns {object} object containing keyword information (id, amount, amountVisible, checked)
4797
+ */
4798
+
4799
+ layerSelectFilterAdapter.getSelectors(function (store) {
4800
+ var _a, _b;
4801
+
4802
+ return ((_b = (_a = store === null || store === void 0 ? void 0 : store.layerSelect) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.filters) || {
4803
+ entities: {},
4804
+ ids: []
4805
+ };
4806
+ }).selectById;
4738
4807
  /**
4739
4808
  * Returns the active layer info
4740
4809
  *
@@ -8716,7 +8785,8 @@
8716
8785
  keywords: keywords,
8717
8786
  scope: scope,
8718
8787
  groups: groups,
8719
- "abstract": _abstract
8788
+ "abstract": _abstract,
8789
+ isLoading: false
8720
8790
  }))];
8721
8791
 
8722
8792
  case 1:
@@ -8868,7 +8938,7 @@
8868
8938
  results = _a.sent();
8869
8939
  services = results;
8870
8940
  servicesEnabled = Object.values(services).find(function (service) {
8871
- return service.enabled;
8941
+ return service === null || service === void 0 ? void 0 : service.enabled;
8872
8942
  });
8873
8943
  if (!(servicesEnabled === undefined)) return [3
8874
8944
  /*break*/
@@ -8882,7 +8952,7 @@
8882
8952
 
8883
8953
  return effects.put(layerSelectActions.enableActiveService({
8884
8954
  serviceId: serviceId,
8885
- filters: service.filterIds
8955
+ filters: service === null || service === void 0 ? void 0 : service.filterIds
8886
8956
  }));
8887
8957
  }))];
8888
8958
 
@@ -12557,18 +12627,36 @@
12557
12627
  var serviceSetLayers = React__namespace.useCallback(function (payload) {
12558
12628
  dispatch(serviceActions.serviceSetLayers(payload));
12559
12629
  }, [dispatch]);
12630
+ var addFiltersAndActiveServices = React__namespace.useCallback(function (payload) {
12631
+ dispatch(layerSelectActions.addFiltersAndActiveServices(payload));
12632
+ }, [dispatch]);
12560
12633
  React__namespace.useEffect(function () {
12561
12634
  if (isOpenInStore && preloadedServices && preloadedServices.length > 0) {
12562
12635
  mergePresetsAndUserAddedServices(preloadedServices, getUserAddedServices()).forEach(function (service) {
12636
+ var wmService = webmap.WMGetServiceFromStore(service.url);
12637
+ var scope = service.scope ? service.scope : 'system';
12638
+
12639
+ if (isMounted.current) {
12640
+ addFiltersAndActiveServices({
12641
+ serviceId: wmService.id,
12642
+ serviceName: service.name,
12643
+ serviceUrl: service.url,
12644
+ keywords: [],
12645
+ scope: scope,
12646
+ groups: [],
12647
+ "abstract": service["abstract"] || wmService["abstract"],
12648
+ isLoading: true
12649
+ });
12650
+ }
12651
+
12563
12652
  getLayersFlattenedFromService(service.url).then(function (layers) {
12564
12653
  if (isMounted.current) {
12565
- var wmService = webmap.WMGetServiceFromStore(service.url);
12566
12654
  serviceSetLayers({
12567
12655
  id: wmService.id,
12568
12656
  name: service.name,
12569
12657
  serviceUrl: service.url,
12570
12658
  layers: layers,
12571
- scope: service.scope ? service.scope : 'system',
12659
+ scope: scope,
12572
12660
  // first try to load the user abstract, otherwise the service abstract
12573
12661
  "abstract": service["abstract"] || wmService["abstract"]
12574
12662
  });
@@ -12577,9 +12665,8 @@
12577
12665
  return null;
12578
12666
  });
12579
12667
  });
12580
- } // eslint-disable-next-line react-hooks/exhaustive-deps
12581
-
12582
- }, [isOpenInStore, preloadedServices, serviceSetLayers]);
12668
+ }
12669
+ }, [addFiltersAndActiveServices, isMounted, isOpenInStore, preloadedServices, serviceSetLayers]);
12583
12670
  };
12584
12671
  var mergePresetsAndUserAddedServices = function mergePresetsAndUserAddedServices(presets, userAddedServices) {
12585
12672
  return Object.values(__assign(__assign({}, presets.reduce(function (byUrl, preset) {
@@ -12886,7 +12973,9 @@
12886
12973
 
12887
12974
  var serviceName = value === null || value === void 0 ? void 0 : value.toLowerCase();
12888
12975
  var foundName = Object.keys(services).find(function (serviceId) {
12889
- return services[serviceId].serviceName.toLowerCase() === serviceName && serviceName !== ownServiceName.toLocaleLowerCase();
12976
+ var _a;
12977
+
12978
+ return ((_a = services[serviceId]) === null || _a === void 0 ? void 0 : _a.serviceName.toLowerCase()) === serviceName && serviceName !== ownServiceName.toLocaleLowerCase();
12890
12979
  });
12891
12980
  return foundName === undefined ? true : VALIDATIONS_NAME_EXISTING;
12892
12981
  };
@@ -12916,7 +13005,9 @@
12916
13005
 
12917
13006
 
12918
13007
  var foundUrl = Object.keys(services).find(function (serviceId) {
12919
- return services[serviceId].serviceUrl === serviceUrl;
13008
+ var _a;
13009
+
13010
+ return ((_a = services[serviceId]) === null || _a === void 0 ? void 0 : _a.serviceUrl) === serviceUrl;
12920
13011
  });
12921
13012
 
12922
13013
  if (foundUrl) {
@@ -14163,7 +14254,7 @@
14163
14254
  var _d = __read(_b, 2),
14164
14255
  b = _d[1];
14165
14256
 
14166
- return a.serviceName.localeCompare(b.serviceName);
14257
+ return a.serviceName.localeCompare(b === null || b === void 0 ? void 0 : b.serviceName);
14167
14258
  }).reduce(function (r, _a) {
14168
14259
  var _b;
14169
14260
 
@@ -14487,7 +14578,7 @@
14487
14578
  var chip = all ? 'all' : service && service.serviceUrl;
14488
14579
  return /*#__PURE__*/React__namespace.createElement(shared.CustomTooltip, {
14489
14580
  title: (service === null || service === void 0 ? void 0 : service["abstract"]) ? "Abstract: " + service["abstract"] : ''
14490
- }, /*#__PURE__*/React__namespace.createElement(shared.CustomToggleButton, {
14581
+ }, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(shared.CustomToggleButton, {
14491
14582
  variant: "boxed",
14492
14583
  selected: isSelected,
14493
14584
  tabIndex: 0,
@@ -14500,7 +14591,7 @@
14500
14591
  },
14501
14592
  disabled: isDisabled,
14502
14593
  sx: style
14503
- }, service ? service.serviceName : 'All'));
14594
+ }, service ? service.serviceName : 'All')));
14504
14595
  };
14505
14596
 
14506
14597
  /* *
@@ -14674,7 +14765,7 @@
14674
14765
  all: true,
14675
14766
  isSelected: isAllSelected
14676
14767
  }), Object.keys(activeServices).map(function (serviceId) {
14677
- var _a;
14768
+ var _a, _b;
14678
14769
 
14679
14770
  var service = activeServices[serviceId];
14680
14771
  return /*#__PURE__*/React__namespace.createElement(ServiceChipConnect, {
@@ -14683,7 +14774,7 @@
14683
14774
  service: service,
14684
14775
  isSelected: (_a = activeServices[serviceId]) === null || _a === void 0 ? void 0 : _a.enabled,
14685
14776
  isAllSelected: isAllSelected,
14686
- isDisabled: activeServices[serviceId] === undefined
14777
+ isDisabled: activeServices[serviceId] === undefined || ((_b = activeServices[serviceId]) === null || _b === void 0 ? void 0 : _b.isLoading) === true
14687
14778
  });
14688
14779
  })));
14689
14780
  };
@@ -14953,7 +15044,9 @@
14953
15044
  var getService = function getService(services, serviceUrl) {
14954
15045
  var serviceIds = Object.keys(services);
14955
15046
  var serviceIndex = serviceIds.findIndex(function (serviceId) {
14956
- return services[serviceId].serviceUrl === serviceUrl;
15047
+ var _a;
15048
+
15049
+ return ((_a = services[serviceId]) === null || _a === void 0 ? void 0 : _a.serviceUrl) === serviceUrl;
14957
15050
  });
14958
15051
  if (serviceIndex < 0) return null;
14959
15052
  return services[serviceIds[serviceIndex]];
@@ -15852,7 +15945,8 @@
15852
15945
  left: 0,
15853
15946
  margin: 1,
15854
15947
  zIndex: 50,
15855
- top: '96px'
15948
+ top: '96px',
15949
+ userSelect: 'none'
15856
15950
  }
15857
15951
  }, props), /*#__PURE__*/React__namespace.createElement(material.Grid, {
15858
15952
  sx: {
@@ -24714,6 +24808,398 @@
24714
24808
  });
24715
24809
  };
24716
24810
 
24811
+ /* *
24812
+ * Licensed under the Apache License, Version 2.0 (the "License");
24813
+ * you may not use this file except in compliance with the License.
24814
+ * You may obtain a copy of the License at
24815
+ *
24816
+ * http://www.apache.org/licenses/LICENSE-2.0
24817
+ *
24818
+ * Unless required by applicable law or agreed to in writing, software
24819
+ * distributed under the License is distributed on an "AS IS" BASIS,
24820
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24821
+ * See the License for the specific language governing permissions and
24822
+ * limitations under the License.
24823
+ *
24824
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
24825
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
24826
+ * */
24827
+ /**
24828
+ * Get the title for this WMS layer based on its layerId. If not defined, layerId is used instead.
24829
+ * @param layerId
24830
+ * @returns Title for the layer
24831
+ */
24832
+
24833
+ var getTitle = function getTitle(layerId) {
24834
+ var wmjsLayer = getWMLayerById(layerId);
24835
+ return wmjsLayer ? wmjsLayer.title || wmjsLayer.name : layerId;
24836
+ };
24837
+ /**
24838
+ * Make a list of GFI Layers to display.
24839
+ * @param layers
24840
+ * @param mapId
24841
+ * @returns
24842
+ */
24843
+
24844
+
24845
+ var getLayersToUpdate = function getLayersToUpdate(layers, mapId) {
24846
+ var wmjsMap = getWMJSMapById(mapId);
24847
+ if (!wmjsMap || !layers || layers.length === 0) return [];
24848
+ return layers.filter(function (layer) {
24849
+ return layer && layer.enabled && !!getWMLayerById(layer.id);
24850
+ }).map(function (layer) {
24851
+ /*
24852
+ We need a wmjsLayer to build the getfeatureinfo url (getWMSGetFeatureInfoRequestURL function).
24853
+ But it seems that its dimension are lazely updated (by ReactMapView).
24854
+ Therefore make a clone of this layer and set its dimensions based on the layer object.
24855
+ Otherwise we risk making a getfeatureinfo call with outdated dimension values.
24856
+ */
24857
+ var wmjsLayer = getWMLayerById(layer.id).cloneLayer();
24858
+ layer.dimensions && layer.dimensions.forEach(function (dim) {
24859
+ var wmDim = wmjsLayer.getDimension(dim.name);
24860
+
24861
+ if (wmDim && wmDim.getValue() !== dim.currentValue) {
24862
+ wmDim.setValue(dim.currentValue);
24863
+ }
24864
+ });
24865
+ return {
24866
+ layerId: layer.id,
24867
+ url: wmjsMap.getWMSGetFeatureInfoRequestURL(wmjsLayer, "" + wmjsMap.getMapPin().getXY().x, "" + wmjsMap.getMapPin().getXY().y, 'text/html'),
24868
+ title: getTitle(layer.id)
24869
+ };
24870
+ });
24871
+ };
24872
+
24873
+ /* *
24874
+ * Licensed under the Apache License, Version 2.0 (the "License");
24875
+ * you may not use this file except in compliance with the License.
24876
+ * You may obtain a copy of the License at
24877
+ *
24878
+ * http://www.apache.org/licenses/LICENSE-2.0
24879
+ *
24880
+ * Unless required by applicable law or agreed to in writing, software
24881
+ * distributed under the License is distributed on an "AS IS" BASIS,
24882
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24883
+ * See the License for the specific language governing permissions and
24884
+ * limitations under the License.
24885
+ *
24886
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
24887
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
24888
+ * */
24889
+
24890
+ var GetFeatureInfoDialog = function GetFeatureInfoDialog(_a) {
24891
+ var layers = _a.layers,
24892
+ isOpen = _a.isOpen,
24893
+ onClose = _a.onClose,
24894
+ _b = _a.onMouseDown,
24895
+ onMouseDown = _b === void 0 ? function () {} : _b,
24896
+ mapId = _a.mapId,
24897
+ _c = _a.showMapId,
24898
+ showMapId = _c === void 0 ? false : _c,
24899
+ _d = _a.order,
24900
+ order = _d === void 0 ? 0 : _d,
24901
+ _e = _a.source,
24902
+ source = _e === void 0 ? 'app' : _e,
24903
+ mapPinLocation = _a.mapPinLocation;
24904
+ /* Ref and state for maplocation */
24905
+
24906
+ var mapLocationWasChanged = React__default["default"].useRef(false);
24907
+
24908
+ var _f = __read(React__default["default"].useState(false), 2),
24909
+ isInitialMapLocationChanged = _f[0],
24910
+ setInitialMapLocationIsChanged = _f[1];
24911
+ /* Ref, state and update function for results per layer map */
24912
+
24913
+
24914
+ var gfiResultMap = React__default["default"].useRef(new Map()).current;
24915
+
24916
+ var _g = __read(React__default["default"].useState(), 2),
24917
+ triggerRerender = _g[1];
24918
+
24919
+ var updateLayerResult = function updateLayerResult(_a) {
24920
+ var layerId = _a.layerId,
24921
+ data = _a.data,
24922
+ isLoading = _a.isLoading;
24923
+ gfiResultMap.set(layerId, {
24924
+ data: data,
24925
+ isLoading: isLoading
24926
+ });
24927
+ triggerRerender("" + layerId + isLoading);
24928
+ };
24929
+ /* Build a layerlist array with a set of arguments per layer to do the query for */
24930
+
24931
+
24932
+ var layerToUpdateList = getLayersToUpdate(layers, mapId);
24933
+ /*
24934
+ Build a string based on the GFI urls. If this changes for whatever reason we need to update.
24935
+ These strings can change very often, therefore they need to be debounced and only use the most recent result must be used.
24936
+ */
24937
+
24938
+ var debouncedlayerListString = api.useDebounce(layerToUpdateList.map(function (layer) {
24939
+ return layer.url;
24940
+ }).join(','), 100);
24941
+ /* Do a GFI call to the server and use the updateLayerResult to provide the results. */
24942
+
24943
+ var fetchLayerInfo = function fetchLayerInfo(url, layerId) {
24944
+ return __awaiter(void 0, void 0, void 0, function () {
24945
+ var data, error_1, errorMessage;
24946
+ return __generator(this, function (_a) {
24947
+ switch (_a.label) {
24948
+ case 0:
24949
+ _a.trys.push([0, 2,, 3]);
24950
+
24951
+ updateLayerResult({
24952
+ layerId: layerId,
24953
+ data: '',
24954
+ isLoading: true
24955
+ });
24956
+ return [4
24957
+ /*yield*/
24958
+ , axios__default["default"].get(url)];
24959
+
24960
+ case 1:
24961
+ data = _a.sent().data;
24962
+ updateLayerResult({
24963
+ layerId: layerId,
24964
+ data: data,
24965
+ isLoading: false
24966
+ });
24967
+ return [3
24968
+ /*break*/
24969
+ , 3];
24970
+
24971
+ case 2:
24972
+ error_1 = _a.sent();
24973
+ errorMessage = error_1.message();
24974
+ updateLayerResult({
24975
+ layerId: layerId,
24976
+ data: errorMessage,
24977
+ isLoading: false
24978
+ });
24979
+ return [3
24980
+ /*break*/
24981
+ , 3];
24982
+
24983
+ case 3:
24984
+ return [2
24985
+ /*return*/
24986
+ ];
24987
+ }
24988
+ });
24989
+ });
24990
+ };
24991
+ /* Wait till the user has clicked the map. */
24992
+
24993
+
24994
+ React__default["default"].useEffect(function () {
24995
+ if (mapLocationWasChanged.current !== false) {
24996
+ setInitialMapLocationIsChanged(true);
24997
+ }
24998
+
24999
+ mapLocationWasChanged.current = true;
25000
+ }, [mapPinLocation]);
25001
+ /* For each changed getfeature url string, load new data using WMS GetFeatureInfo */
25002
+
25003
+ React__default["default"].useEffect(function () {
25004
+ if (isInitialMapLocationChanged && isOpen) {
25005
+ layerToUpdateList.forEach(function (_a) {
25006
+ var url = _a.url,
25007
+ layerId = _a.layerId;
25008
+ fetchLayerInfo(url, layerId);
25009
+ });
25010
+ } // eslint-disable-next-line react-hooks/exhaustive-deps
25011
+
25012
+ }, [debouncedlayerListString]);
25013
+ var hasLayers = layers && layers.length > 0;
25014
+ return /*#__PURE__*/React__default["default"].createElement(shared.ToolContainerDraggable, {
25015
+ startPosition: {
25016
+ right: 10,
25017
+ top: 80
25018
+ },
25019
+ minWidth: 300,
25020
+ onClose: onClose,
25021
+ title: showMapId ? "Event marker info " + mapId : 'Event marker info',
25022
+ headerSize: "small",
25023
+ initialMaxHeight: 440,
25024
+ isOpen: isOpen,
25025
+ "data-testid": "moveable-getfeatureinfo",
25026
+ bounds: "parent",
25027
+ onMouseDown: onMouseDown,
25028
+ order: order,
25029
+ source: source
25030
+ }, /*#__PURE__*/React__default["default"].createElement(material.Box, {
25031
+ sx: {
25032
+ padding: 0
25033
+ }
25034
+ }, isOpen && hasLayers && isInitialMapLocationChanged && /*#__PURE__*/React__default["default"].createElement(material.Box, {
25035
+ "data-testid": "GetFeatureInfoList"
25036
+ }, layerToUpdateList.map(function (layer) {
25037
+ var layerId = layer.layerId,
25038
+ title = layer.title,
25039
+ url = layer.url;
25040
+ var result = gfiResultMap.get(layerId);
25041
+ if (!result) return null;
25042
+ return /*#__PURE__*/React__default["default"].createElement(material.Grid, {
25043
+ key: layerId,
25044
+ sx: {
25045
+ margin: '4px 6px 4px 6px',
25046
+ padding: '6px',
25047
+ backgroundColor: 'geowebColors.cards.cardContainer',
25048
+ border: 'solid 1px',
25049
+ borderColor: 'geowebColors.cards.cardContainerBorder'
25050
+ }
25051
+ }, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
25052
+ variant: "subtitle1"
25053
+ }, title, "\xA0", /*#__PURE__*/React__default["default"].createElement(material.IconButton, {
25054
+ sx: {
25055
+ "float": 'right'
25056
+ },
25057
+ size: "small",
25058
+ "aria-label": "Open layer featureinfo in another page",
25059
+ onClick: function onClick() {
25060
+ window.open(url);
25061
+ }
25062
+ }, /*#__PURE__*/React__default["default"].createElement(theme.ExitDomain, null))), !result.isLoading ? /*#__PURE__*/React__default["default"].createElement("div", {
25063
+ style: {
25064
+ fontSize: '11px',
25065
+ padding: '6px',
25066
+ margin: '0',
25067
+ fontFamily: 'Roboto,Helvetica,Arial,sans-serif',
25068
+ fontWeight: '400',
25069
+ lineHeight: '1.75',
25070
+ letterSpacing: '0.25px'
25071
+ },
25072
+ "data-testid": "layer-result-ready-" + layerId,
25073
+ // eslint-disable-next-line react/no-danger
25074
+ dangerouslySetInnerHTML: {
25075
+ __html: result.data.replace(/<hr\/>/g, '')
25076
+ }
25077
+ }) : /*#__PURE__*/React__default["default"].createElement("div", {
25078
+ "data-testid": "layer-result-loading-" + layerId
25079
+ }, /*#__PURE__*/React__default["default"].createElement(material.CircularProgress, {
25080
+ "data-testid": "spinner",
25081
+ color: "inherit"
25082
+ })));
25083
+ })), hasLayers && !isInitialMapLocationChanged && /*#__PURE__*/React__default["default"].createElement(material.Typography, {
25084
+ "data-testid": "click-on-map-for-info",
25085
+ variant: "subtitle1",
25086
+ sx: {
25087
+ padding: '10px'
25088
+ }
25089
+ }, "Click on the map for info."), !hasLayers && /*#__PURE__*/React__default["default"].createElement(material.Typography, {
25090
+ "data-testid": "NoLayers",
25091
+ variant: "subtitle1",
25092
+ sx: {
25093
+ padding: '10px'
25094
+ }
25095
+ }, "No layers added to the map.")));
25096
+ };
25097
+
25098
+ /* *
25099
+ * Licensed under the Apache License, Version 2.0 (the "License");
25100
+ * you may not use this file except in compliance with the License.
25101
+ * You may obtain a copy of the License at
25102
+ *
25103
+ * http://www.apache.org/licenses/LICENSE-2.0
25104
+ *
25105
+ * Unless required by applicable law or agreed to in writing, software
25106
+ * distributed under the License is distributed on an "AS IS" BASIS,
25107
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25108
+ * See the License for the specific language governing permissions and
25109
+ * limitations under the License.
25110
+ *
25111
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
25112
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
25113
+ * */
25114
+
25115
+ var GetFeatureInfoConnect = function GetFeatureInfoConnect(_a) {
25116
+ var _b = _a.showMapId,
25117
+ showMapId = _b === void 0 ? false : _b,
25118
+ mapId = _a.mapId;
25119
+ var dispatch = reactRedux.useDispatch();
25120
+ var getFeatureInfoType = "getfeatureinfo-" + mapId;
25121
+ var isMapPinVisible = reactRedux.useSelector(function (store) {
25122
+ return getDisplayMapPin(store, mapId);
25123
+ });
25124
+ var mapPinLocation = reactRedux.useSelector(function (store) {
25125
+ return getPinLocation(store, mapId);
25126
+ });
25127
+ var toggleMapPinIsVisible = React__namespace.useCallback(function (displayMapPin) {
25128
+ dispatch(mapActions$1.toggleMapPinIsVisible({
25129
+ mapId: mapId,
25130
+ displayMapPin: displayMapPin
25131
+ }));
25132
+ }, [dispatch, mapId]);
25133
+ var mapLayers = reactRedux.useSelector(function (store) {
25134
+ return getMapLayers(store, mapId);
25135
+ });
25136
+
25137
+ var _c = useSetupDialog(getFeatureInfoType),
25138
+ dialogOrder = _c.dialogOrder,
25139
+ isDialogOpen = _c.isDialogOpen,
25140
+ uiSource = _c.uiSource,
25141
+ setDialogOrder = _c.setDialogOrder,
25142
+ onCloseDialog = _c.onCloseDialog;
25143
+
25144
+ React__namespace.useEffect(function () {
25145
+ toggleMapPinIsVisible(isDialogOpen);
25146
+ }, [isDialogOpen, toggleMapPinIsVisible, isMapPinVisible]);
25147
+ return /*#__PURE__*/React__namespace.createElement(GetFeatureInfoDialog, {
25148
+ layers: mapLayers,
25149
+ isOpen: isDialogOpen,
25150
+ onClose: onCloseDialog,
25151
+ mapId: mapId,
25152
+ showMapId: showMapId,
25153
+ onMouseDown: setDialogOrder,
25154
+ order: dialogOrder,
25155
+ source: uiSource,
25156
+ mapPinLocation: mapPinLocation
25157
+ });
25158
+ };
25159
+
25160
+ /* *
25161
+ * Licensed under the Apache License, Version 2.0 (the "License");
25162
+ * you may not use this file except in compliance with the License.
25163
+ * You may obtain a copy of the License at
25164
+ *
25165
+ * http://www.apache.org/licenses/LICENSE-2.0
25166
+ *
25167
+ * Unless required by applicable law or agreed to in writing, software
25168
+ * distributed under the License is distributed on an "AS IS" BASIS,
25169
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25170
+ * See the License for the specific language governing permissions and
25171
+ * limitations under the License.
25172
+ *
25173
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
25174
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
25175
+ * */
25176
+
25177
+ var GetFeatureInfoButtonConnect = function GetFeatureInfoButtonConnect(_a) {
25178
+ var mapId = _a.mapId,
25179
+ _b = _a.source,
25180
+ source = _b === void 0 ? 'app' : _b;
25181
+ var dispatch = reactRedux.useDispatch();
25182
+ var gfiType = "getfeatureinfo-" + mapId;
25183
+ var isOpenInStore = reactRedux.useSelector(function (store) {
25184
+ return getisDialogOpen(store, gfiType);
25185
+ });
25186
+ var openGfiDialog = React__namespace.useCallback(function () {
25187
+ dispatch(uiActions.setActiveMapIdForDialog({
25188
+ type: gfiType,
25189
+ mapId: mapId,
25190
+ setOpen: !isOpenInStore,
25191
+ source: source,
25192
+ origin: MapActionOrigin.map
25193
+ }));
25194
+ }, [mapId, dispatch, isOpenInStore, source, gfiType]);
25195
+ return /*#__PURE__*/React__namespace.createElement(MapControlButton, {
25196
+ title: "Get information for a specific location",
25197
+ "data-testid": "open-getfeatureinfo",
25198
+ onClick: openGfiDialog,
25199
+ isActive: isOpenInStore
25200
+ }, /*#__PURE__*/React__namespace.createElement(theme.Info, null));
25201
+ };
25202
+
24717
25203
  /* *
24718
25204
  * Licensed under the Apache License, Version 2.0 (the "License");
24719
25205
  * you may not use this file except in compliance with the License.
@@ -24737,7 +25223,8 @@
24737
25223
  padding: '5px',
24738
25224
  zIndex: 50,
24739
25225
  color: theme.palette.common.black,
24740
- whiteSpace: 'nowrap'
25226
+ whiteSpace: 'nowrap',
25227
+ userSelect: 'none'
24741
25228
  };
24742
25229
  };
24743
25230
 
@@ -24782,8 +25269,10 @@
24782
25269
  shouldShowLayerManager = _a.shouldShowLayerManager,
24783
25270
  _q = _a.showClock,
24784
25271
  showClock = _q === void 0 ? true : _q,
25272
+ _r = _a.displayGetFeatureInfoButtonInMap,
25273
+ displayGetFeatureInfoButtonInMap = _r === void 0 ? false : _r,
24785
25274
  children = _a.children,
24786
- props = __rest(_a, ["id", "title", "layers", "shouldAutoUpdate", "shouldAnimate", "bbox", "srs", "shouldShowZoomControls", "displayMapPin", "showTimeSlider", "disableTimeSlider", "displayTimeInMap", "displayLayerManagerAndLegendButtonInMap", "displayDimensionSelectButtonInMap", "multiLegend", "shouldShowLayerManager", "showClock", "children"]);
25275
+ props = __rest(_a, ["id", "title", "layers", "shouldAutoUpdate", "shouldAnimate", "bbox", "srs", "shouldShowZoomControls", "displayMapPin", "showTimeSlider", "disableTimeSlider", "displayTimeInMap", "displayLayerManagerAndLegendButtonInMap", "displayDimensionSelectButtonInMap", "multiLegend", "shouldShowLayerManager", "showClock", "displayGetFeatureInfoButtonInMap", "children"]);
24787
25276
 
24788
25277
  var dispatch = reactRedux.useDispatch();
24789
25278
  var mapId = React__default["default"].useRef(id || generateMapId()).current;
@@ -24851,6 +25340,8 @@
24851
25340
  multiLegend: multiLegend
24852
25341
  }), displayDimensionSelectButtonInMap && /*#__PURE__*/React__default["default"].createElement(MultiDimensionSelectMapButtonsConnect, {
24853
25342
  mapId: mapId
25343
+ }), displayGetFeatureInfoButtonInMap && /*#__PURE__*/React__default["default"].createElement(GetFeatureInfoButtonConnect, {
25344
+ mapId: mapId
24854
25345
  })), !disableTimeSlider && /*#__PURE__*/React__default["default"].createElement(material.Box, {
24855
25346
  sx: {
24856
25347
  position: 'absolute',
@@ -24873,6 +25364,9 @@
24873
25364
  multiLegend: multiLegend
24874
25365
  }), showClock && /*#__PURE__*/React__default["default"].createElement(TimeSliderClockConnect, {
24875
25366
  mapId: mapId
25367
+ }), displayGetFeatureInfoButtonInMap && /*#__PURE__*/React__default["default"].createElement(GetFeatureInfoConnect, {
25368
+ showMapId: true,
25369
+ mapId: mapId
24876
25370
  }), /*#__PURE__*/React__default["default"].createElement(DockedLayerManagerConnect, {
24877
25371
  mapId: mapId,
24878
25372
  bounds: "parent"
@@ -25242,7 +25736,8 @@
25242
25736
  var mapPreset = initialProps.mapPreset;
25243
25737
  return /*#__PURE__*/React__default["default"].createElement(ConfigurableMapConnect, __assign({}, mapPreset, {
25244
25738
  id: id,
25245
- "data-testid": "coreConfigurableMapConnect"
25739
+ "data-testid": "coreConfigurableMapConnect",
25740
+ displayGetFeatureInfoButtonInMap: true
25246
25741
  }));
25247
25742
  }
25248
25743