@opengeoweb/core 20.2.0 → 21.0.0-nightly-20261030
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/dist/index.esm.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
2
2
|
import { FormControl, MenuItem, Grid, InputLabel, Paper, Box, Typography, CircularProgress, List, ListSubheader, ListItemButton, ListItemText, DialogContentText, TextField, InputAdornment, Button, useTheme, Tooltip, ListItem, ListItemIcon, Checkbox, Popper, Fade, styled, LinearProgress, Autocomplete, Switch, Select } from '@mui/material';
|
|
3
3
|
import React, { useMemo, useState, useCallback, useEffect, useContext } from 'react';
|
|
4
4
|
import { safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, TooltipSelect, CustomIconButton, CustomDialog, CustomTooltip, ToggleMenu, AlertIcon, useScrollingInIsolation, sliderHeaderStyle, CustomSlider, SearchField, SearchHighlight, tooltipContainerStyles, renderCounter, AlertBanner, CustomAccordion, PROJECTION, calculateStartSize, useWheelStopPropagation, ToolContainerDraggable, useDebounce, dateUtils, sessionStorageProvider, usePrevious } from '@opengeoweb/shared';
|
|
5
|
-
import { webmapUtils,
|
|
5
|
+
import { webmapUtils, queryWMSLayers, invalidateWMSGetCapabilities, LayerType, queryWMSServiceInfo, WMJSDimension, WMDefaultStyleName, getWMSServiceId, handleDateUtilsISOString, generateLayerId, getWMLayerById, getMapDimURL, WMLayer } from '@opengeoweb/webmap';
|
|
6
6
|
import _, { isEqual, isArray, range, zip, throttle } from 'lodash';
|
|
7
7
|
import { useDispatch, useSelector, connect, useStore, shallowEqual, Provider } from 'react-redux';
|
|
8
8
|
import { mapSelectors, layerSelectors, layerActions, layerTypes, filterLayers, mapActions, mapEnums, loadingIndicatorSelectors, layerUtils, serviceSelectors, serviceActions, uiSelectors, uiTypes, useSetupDialog, getUserAddedServices, uiActions, genericActions, drawingToolSelectors, syncGroupsSelectors, syncConstants, getViewObjectForSyncGroup, getViewObjectForMapId, loadingIndicatorActions, genericSelectors, PUBLIC_WARNING_DRAW_TOOL_ID, defaultLayers, getSingularDrawtoolDrawLayerId, syncGroupsSelector, syncGroupsActions, routerUtils, mapUtils } from '@opengeoweb/store';
|
|
@@ -39,7 +39,6 @@ var en = {
|
|
|
39
39
|
feature_info_title: "Click on the map for info.",
|
|
40
40
|
feature_info_no_layers: "No layers added to the map.",
|
|
41
41
|
feature_info_no_getfeatureinfo: "GetFeatureInfo is not supported.",
|
|
42
|
-
"add-layer-popup-title": "Load WMS layer(s)",
|
|
43
42
|
"add-layer-popup-service-url": "Service URL",
|
|
44
43
|
"add-layer-popup-available-services": "Available services",
|
|
45
44
|
"add-layer-popup-available-layers": "Available layers for {{serviceName}}",
|
|
@@ -137,7 +136,6 @@ var fi = {
|
|
|
137
136
|
feature_info_title: "Napsauta karttaa nähdäksesi lisätietoja.",
|
|
138
137
|
feature_info_no_layers: "Karttatasoja ei lisättynä kartalle",
|
|
139
138
|
feature_info_no_getfeatureinfo: "GetFeatureInfoa ei tueta",
|
|
140
|
-
"add-layer-popup-title": "Lataa WMS karttataso(t)",
|
|
141
139
|
"add-layer-popup-service-url": "Palvelun URL",
|
|
142
140
|
"add-layer-popup-available-services": "Käytettävissä olevat palvelut",
|
|
143
141
|
"add-layer-popup-available-layers": "Palvelusta {{serviceName}} saatavilla olevat karttatasot",
|
|
@@ -228,7 +226,6 @@ var no = {
|
|
|
228
226
|
feature_info_title: "Klikk på kartet for å få mer informasjon.",
|
|
229
227
|
feature_info_no_layers: "Ingen lag lagt til i kartet.",
|
|
230
228
|
feature_info_no_getfeatureinfo: "GetFeatureInfo støttes ikke",
|
|
231
|
-
"add-layer-popup-title": "Last inn WMS-lag",
|
|
232
229
|
"add-layer-popup-service-url": "Tjeneste-URL",
|
|
233
230
|
"add-layer-popup-available-services": "Tilgjengelige tjenester",
|
|
234
231
|
"add-layer-popup-available-layers": "Tilgjengelige tjenester for {{serviceName}}",
|
|
@@ -319,7 +316,6 @@ var nl = {
|
|
|
319
316
|
feature_info_title: "Klik op de kaart voor informatie.",
|
|
320
317
|
feature_info_no_layers: "Geen lagen toegevoegd op de kaart.",
|
|
321
318
|
feature_info_no_getfeatureinfo: "GetFeatureInfo wordt niet ondersteund",
|
|
322
|
-
"add-layer-popup-title": "Laad WMS lagen",
|
|
323
319
|
"add-layer-popup-service-url": "Service-URL",
|
|
324
320
|
"add-layer-popup-available-services": "Beschikbare services",
|
|
325
321
|
"add-layer-popup-available-layers": "Beschikbare lagen voor {{serviceName}}",
|
|
@@ -1030,29 +1026,21 @@ var WMSLayerTreeHeader = function WMSLayerTreeHeader(_ref) {
|
|
|
1030
1026
|
};
|
|
1031
1027
|
|
|
1032
1028
|
var WMSLayerTree = function WMSLayerTree(_ref) {
|
|
1033
|
-
var _layerTree$children;
|
|
1034
1029
|
var service = _ref.service,
|
|
1035
1030
|
onClickLayer = _ref.onClickLayer,
|
|
1036
1031
|
highlightedLayers = _ref.highlightedLayers;
|
|
1037
1032
|
var _useCoreTranslation = useCoreTranslation(),
|
|
1038
1033
|
t = _useCoreTranslation.t;
|
|
1039
|
-
var initialTree = {
|
|
1040
|
-
name: 'loading wms getcapabilities',
|
|
1041
|
-
leaf: true,
|
|
1042
|
-
path: [],
|
|
1043
|
-
title: '',
|
|
1044
|
-
children: []
|
|
1045
|
-
};
|
|
1046
1034
|
var _React$useState = React.useState([]),
|
|
1047
1035
|
processedOK = _React$useState[0],
|
|
1048
1036
|
setProcessedOK = _React$useState[1];
|
|
1049
|
-
var handleInternalSelect = function handleInternalSelect(layerName) {
|
|
1050
|
-
onClickLayer(service.url, layerName);
|
|
1037
|
+
var handleInternalSelect = function handleInternalSelect(layerName, ogctype) {
|
|
1038
|
+
onClickLayer(service.url, layerName, ogctype);
|
|
1051
1039
|
setProcessedOK([].concat(processedOK, [layerName]));
|
|
1052
1040
|
};
|
|
1053
|
-
var _React$useState2 = React.useState(
|
|
1054
|
-
|
|
1055
|
-
|
|
1041
|
+
var _React$useState2 = React.useState([]),
|
|
1042
|
+
layers = _React$useState2[0],
|
|
1043
|
+
setLayers = _React$useState2[1];
|
|
1056
1044
|
var _React$useState3 = React.useState(false),
|
|
1057
1045
|
isLoading = _React$useState3[0],
|
|
1058
1046
|
setIsLoading = _React$useState3[1];
|
|
@@ -1074,14 +1062,14 @@ var WMSLayerTree = function WMSLayerTree(_ref) {
|
|
|
1074
1062
|
_context.n = 1;
|
|
1075
1063
|
return invalidateWMSGetCapabilities(service.url);
|
|
1076
1064
|
case 1:
|
|
1077
|
-
|
|
1065
|
+
queryWMSLayers(service.url).then(function (layersResult) {
|
|
1078
1066
|
if (isMounted) {
|
|
1079
|
-
|
|
1067
|
+
setLayers(layersResult);
|
|
1080
1068
|
setIsLoading(false);
|
|
1081
1069
|
}
|
|
1082
|
-
})["catch"](function (
|
|
1070
|
+
})["catch"](function () {
|
|
1083
1071
|
if (isMounted) {
|
|
1084
|
-
|
|
1072
|
+
setLayers([]);
|
|
1085
1073
|
setIsLoading(false);
|
|
1086
1074
|
}
|
|
1087
1075
|
});
|
|
@@ -1104,7 +1092,7 @@ var WMSLayerTree = function WMSLayerTree(_ref) {
|
|
|
1104
1092
|
height: 200,
|
|
1105
1093
|
overflow: 'auto'
|
|
1106
1094
|
};
|
|
1107
|
-
if (!(
|
|
1095
|
+
if (!(layers != null && layers.length) && !isLoading) {
|
|
1108
1096
|
return jsxs(Fragment, {
|
|
1109
1097
|
children: [jsx(WMSLayerTreeHeader, {
|
|
1110
1098
|
serviceName: service.name
|
|
@@ -1124,22 +1112,9 @@ var WMSLayerTree = function WMSLayerTree(_ref) {
|
|
|
1124
1112
|
})]
|
|
1125
1113
|
});
|
|
1126
1114
|
}
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
return (
|
|
1131
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
1132
|
-
Array.prototype.concat.apply((children || []).map(function (treeElem) {
|
|
1133
|
-
return Object.assign({}, treeElem, {
|
|
1134
|
-
parent: parent || null
|
|
1135
|
-
});
|
|
1136
|
-
}), (children || []).map(function (treeElem) {
|
|
1137
|
-
return _flatten(treeElem.children || [], treeElem.title);
|
|
1138
|
-
}))
|
|
1139
|
-
);
|
|
1140
|
-
};
|
|
1141
|
-
var flattenedLayerTree = _flatten(layerTree.children, []);
|
|
1142
|
-
var layerMap = _.groupBy(flattenedLayerTree, 'parent');
|
|
1115
|
+
var layerMap = _.groupBy(layers, function (layer) {
|
|
1116
|
+
return layer.path.length > 1 ? layer.path[layer.path.length - 1] : '';
|
|
1117
|
+
});
|
|
1143
1118
|
// Check if a layer of the same name and service is in an array
|
|
1144
1119
|
var layerExists = function layerExists(targetLayer, layers) {
|
|
1145
1120
|
return layers.filter(function (layerInMap) {
|
|
@@ -1186,7 +1161,7 @@ var WMSLayerTree = function WMSLayerTree(_ref) {
|
|
|
1186
1161
|
return layer.leaf ? jsx(ListItemButton, {
|
|
1187
1162
|
"data-testid": "selectableLayer",
|
|
1188
1163
|
onClick: function onClick() {
|
|
1189
|
-
return handleInternalSelect(layer.name);
|
|
1164
|
+
return handleInternalSelect(layer.name, layer.ogctype);
|
|
1190
1165
|
},
|
|
1191
1166
|
selected: processedOK.includes(layer.name) || layerExists(layer, highlightedLayers),
|
|
1192
1167
|
children: jsx(ListItemText, {
|
|
@@ -1204,7 +1179,7 @@ var WMSLayerTree = function WMSLayerTree(_ref) {
|
|
|
1204
1179
|
|
|
1205
1180
|
var connectRedux$2 = connect(function (store, props) {
|
|
1206
1181
|
return {
|
|
1207
|
-
loadedLayers: mapSelectors.getMapLayers(store, props.mapId)
|
|
1182
|
+
loadedLayers: props.layerType === LayerType.baseLayer ? layerSelectors.getAvailableBaseLayersForMap(store, props.mapId) : mapSelectors.getMapLayers(store, props.mapId)
|
|
1208
1183
|
};
|
|
1209
1184
|
}, {
|
|
1210
1185
|
addLayer: layerActions.addLayer,
|
|
@@ -1234,17 +1209,25 @@ var ConnectedTree = function ConnectedTree(_ref) {
|
|
|
1234
1209
|
origin: layerTypes.LayerActionOrigin.wmsLoader
|
|
1235
1210
|
});
|
|
1236
1211
|
};
|
|
1237
|
-
var addBaseLayer = function addBaseLayer(serviceURL, layerName) {
|
|
1238
|
-
var
|
|
1212
|
+
var addBaseLayer = function addBaseLayer(serviceURL, layerName, type) {
|
|
1213
|
+
var existingBaseLayer = loadedLayers == null ? void 0 : loadedLayers.find(function (layer) {
|
|
1214
|
+
return layer.service === serviceURL && layer.name === layerName;
|
|
1215
|
+
});
|
|
1216
|
+
var newBaseLayer = existingBaseLayer != null ? existingBaseLayer : Object.assign({
|
|
1239
1217
|
service: serviceURL,
|
|
1240
|
-
name: layerName
|
|
1218
|
+
name: layerName
|
|
1219
|
+
}, type === 'WMTS' ? {
|
|
1220
|
+
type: 'wmts'
|
|
1221
|
+
} : {}, {
|
|
1241
1222
|
id: webmapUtils.generateLayerId(),
|
|
1242
1223
|
layerType: LayerType.baseLayer,
|
|
1243
1224
|
mapId: mapId
|
|
1244
|
-
};
|
|
1245
|
-
addAvailableBaseLayer({
|
|
1246
|
-
layer: newBaseLayer
|
|
1247
1225
|
});
|
|
1226
|
+
if (!existingBaseLayer) {
|
|
1227
|
+
addAvailableBaseLayer({
|
|
1228
|
+
layer: newBaseLayer
|
|
1229
|
+
});
|
|
1230
|
+
}
|
|
1248
1231
|
setBaseLayers({
|
|
1249
1232
|
mapId: mapId,
|
|
1250
1233
|
layers: [newBaseLayer],
|
|
@@ -1253,9 +1236,9 @@ var ConnectedTree = function ConnectedTree(_ref) {
|
|
|
1253
1236
|
};
|
|
1254
1237
|
return jsx(WMSLayerTree, {
|
|
1255
1238
|
highlightedLayers: loadedLayers,
|
|
1256
|
-
onClickLayer: function onClickLayer(serviceURL, layerName) {
|
|
1239
|
+
onClickLayer: function onClickLayer(serviceURL, layerName, type) {
|
|
1257
1240
|
if (layerType === LayerType.baseLayer) {
|
|
1258
|
-
addBaseLayer(serviceURL, layerName);
|
|
1241
|
+
addBaseLayer(serviceURL, layerName, type);
|
|
1259
1242
|
} else {
|
|
1260
1243
|
addMapLayer(serviceURL, layerName);
|
|
1261
1244
|
}
|
|
@@ -1376,11 +1359,15 @@ var AddLayersPopup = function AddLayersPopup(_ref) {
|
|
|
1376
1359
|
setLoading(false);
|
|
1377
1360
|
// Check if valid URL was passed
|
|
1378
1361
|
} else if (validateServiceUrl(serviceURL)) {
|
|
1379
|
-
// Check if service is WMS server
|
|
1380
|
-
|
|
1362
|
+
// Check if service is WMS or WMTS server
|
|
1363
|
+
queryWMSServiceInfo(serviceURL).then(function (service) {
|
|
1364
|
+
var _capabilities$Capabil, _rootLayer$Title, _rootLayer$Name;
|
|
1381
1365
|
// Shorten URL as a naming backup
|
|
1382
1366
|
var shortenedURL = serviceURL.substring(serviceURL.indexOf('//') + 2, serviceURL.indexOf('?'));
|
|
1383
|
-
|
|
1367
|
+
var capabilities = service.getCapabilitiesJson;
|
|
1368
|
+
var rootLayer = (_capabilities$Capabil = capabilities.Capability) == null ? void 0 : _capabilities$Capabil.Layer;
|
|
1369
|
+
var serviceName = rootLayer ? ((_rootLayer$Title = rootLayer.Title) == null ? void 0 : _rootLayer$Title.value) || ((_rootLayer$Name = rootLayer.Name) == null ? void 0 : _rootLayer$Name.value) || shortenedURL : service.title || shortenedURL;
|
|
1370
|
+
handleAddToList(serviceName);
|
|
1384
1371
|
setUrlError('');
|
|
1385
1372
|
setLoading(false);
|
|
1386
1373
|
})["catch"](function () {
|
|
@@ -1419,7 +1406,7 @@ var AddLayersPopup = function AddLayersPopup(_ref) {
|
|
|
1419
1406
|
return handleClose == null ? void 0 : handleClose();
|
|
1420
1407
|
},
|
|
1421
1408
|
open: open,
|
|
1422
|
-
title: t('
|
|
1409
|
+
title: t('layermanager-baselayers-tooltip'),
|
|
1423
1410
|
children: jsxs(Fragment, {
|
|
1424
1411
|
children: [jsx(DialogContentText, {
|
|
1425
1412
|
children: t('wms-loader-description')
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { layerTypes, serviceTypes } from '@opengeoweb/store';
|
|
3
|
+
import type { OGCTYPE } from '@opengeoweb/webmap';
|
|
3
4
|
interface WMSLayerTreeProps {
|
|
4
5
|
service: serviceTypes.InitialService;
|
|
5
|
-
onClickLayer: (serviceURL: string, layerName: string) => void;
|
|
6
|
+
onClickLayer: (serviceURL: string, layerName: string, ogctype?: OGCTYPE) => void;
|
|
6
7
|
highlightedLayers: layerTypes.Layer[];
|
|
7
8
|
}
|
|
8
9
|
declare const WMSLayerTree: React.FC<WMSLayerTreeProps>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengeoweb/core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "21.0.0-nightly-20261030",
|
|
4
4
|
"description": "GeoWeb Core library for the opengeoweb project",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -20,28 +20,28 @@
|
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@opengeoweb/shared": "
|
|
23
|
+
"@opengeoweb/shared": "21.0.0-nightly-20261030",
|
|
24
24
|
"react-redux": "^9.2.0",
|
|
25
|
-
"@opengeoweb/store": "
|
|
26
|
-
"@opengeoweb/time-slider": "
|
|
25
|
+
"@opengeoweb/store": "21.0.0-nightly-20261030",
|
|
26
|
+
"@opengeoweb/time-slider": "21.0.0-nightly-20261030",
|
|
27
27
|
"@reduxjs/toolkit": "^2.6.1",
|
|
28
|
-
"@opengeoweb/webmap-react": "
|
|
29
|
-
"@opengeoweb/webmap": "
|
|
30
|
-
"@opengeoweb/theme": "
|
|
31
|
-
"@opengeoweb/layer-select": "
|
|
28
|
+
"@opengeoweb/webmap-react": "21.0.0-nightly-20261030",
|
|
29
|
+
"@opengeoweb/webmap": "21.0.0-nightly-20261030",
|
|
30
|
+
"@opengeoweb/theme": "21.0.0-nightly-20261030",
|
|
31
|
+
"@opengeoweb/layer-select": "21.0.0-nightly-20261030",
|
|
32
32
|
"lodash": "^4.18.1",
|
|
33
33
|
"ol": "^10.4.0",
|
|
34
34
|
"react-sortablejs": "^6.1.4",
|
|
35
35
|
"sortablejs": "^1.15.1",
|
|
36
36
|
"@mui/system": "^9.0.1",
|
|
37
|
-
"@opengeoweb/snackbar": "
|
|
37
|
+
"@opengeoweb/snackbar": "21.0.0-nightly-20261030",
|
|
38
38
|
"react-draggable": "^4.4.6",
|
|
39
39
|
"i18next": "^25.0.1",
|
|
40
40
|
"react-i18next": "^15.1.1",
|
|
41
41
|
"dompurify": "^3.4.13",
|
|
42
42
|
"@mui/material": "^9.0.1",
|
|
43
43
|
"@tanstack/react-query": "^5.85.5",
|
|
44
|
-
"@opengeoweb/api": "
|
|
44
|
+
"@opengeoweb/api": "21.0.0-nightly-20261030",
|
|
45
45
|
"@types/geojson": "^7946.0.14",
|
|
46
46
|
"@turf/turf": "^7.2.0",
|
|
47
47
|
"proj4": "^2.15.0",
|