@opengeoweb/webmap-react 20.2.0-nightly-20261022 → 20.2.0-nightly-20261024
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
|
@@ -7,7 +7,7 @@ import ImageState from 'ol/ImageState';
|
|
|
7
7
|
import LayerProperty from 'ol/layer/Property';
|
|
8
8
|
import { fromResolutionLike } from 'ol/resolution';
|
|
9
9
|
import ImageSource, { getRequestExtent } from 'ol/source/Image';
|
|
10
|
-
import ImageWrapper
|
|
10
|
+
import ImageWrapper from 'ol/Image';
|
|
11
11
|
import { getImageSrc, getRequestParams, createLoader } from 'ol/source/wms';
|
|
12
12
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
13
13
|
import { CustomTooltip, CanvasComponent, useWheelStopPropagation, calculateStartSize, ToolContainerDraggable, CustomIconButton, dateUtils, isDialogFocused, useMakeSureContainerStaysInsideWindow, Draggable, Resizable } from '@opengeoweb/shared';
|
|
@@ -1752,6 +1752,27 @@ var TimeawareImageSource = /*#__PURE__*/function (_ImageSource) {
|
|
|
1752
1752
|
this._layerName = layerName;
|
|
1753
1753
|
this.changed();
|
|
1754
1754
|
}
|
|
1755
|
+
/**
|
|
1756
|
+
* Sets the layer name, style and dimensions at once, so the source never requests a layer with the style or dimensions of another layer.
|
|
1757
|
+
*/
|
|
1758
|
+
}, {
|
|
1759
|
+
key: "setLayerProps",
|
|
1760
|
+
value: function setLayerProps(_ref4) {
|
|
1761
|
+
var layerName = _ref4.layerName,
|
|
1762
|
+
styleName = _ref4.styleName,
|
|
1763
|
+
dimProps = _ref4.dimProps;
|
|
1764
|
+
var dimPropsChanged = !isEqual(this._dimProperties, dimProps);
|
|
1765
|
+
if (this._layerName === layerName && this._styleName === styleName && !dimPropsChanged) {
|
|
1766
|
+
return;
|
|
1767
|
+
}
|
|
1768
|
+
this._layerName = layerName;
|
|
1769
|
+
this._styleName = styleName;
|
|
1770
|
+
// Only replace when changed, prefetching compares dimProperties by reference
|
|
1771
|
+
if (dimPropsChanged) {
|
|
1772
|
+
this._dimProperties = _objectSpread2({}, dimProps);
|
|
1773
|
+
}
|
|
1774
|
+
this.changed();
|
|
1775
|
+
}
|
|
1755
1776
|
}, {
|
|
1756
1777
|
key: "setTimeValuesValuesToPrefetch",
|
|
1757
1778
|
value: function setTimeValuesValuesToPrefetch(timeStampsToPrefetch) {
|
|
@@ -7077,8 +7098,10 @@ var useGetWMSLayerStyleList = function useGetWMSLayerStyleList(serviceUrl, name)
|
|
|
7077
7098
|
/**
|
|
7078
7099
|
* Returns a WMLayer instance. If the layerType is LayerType.mapLayer or LayerType.wmtsMapLayer, the layer will detect the right type and will contain the parsed dimensions and styles.
|
|
7079
7100
|
*
|
|
7101
|
+
* When the name changes, the same WMLayer instance is returned, but it is re-parsed asynchronously. Until that is done, it still holds the styles and dimensions of the previous layer name. Use isParsedForName to know when the WMLayer is up to date.
|
|
7102
|
+
*
|
|
7080
7103
|
* @param layerFoundation
|
|
7081
|
-
* @returns object with wmLayer
|
|
7104
|
+
* @returns object with wmLayer, if set an errorMessage, and isParsedForName which is true when wmLayer has been parsed for the requested name
|
|
7082
7105
|
*/
|
|
7083
7106
|
var useGetWMLayerInstance = function useGetWMLayerInstance(layerFoundation) {
|
|
7084
7107
|
var hasLayerFoundation = layerFoundation !== undefined;
|
|
@@ -7094,6 +7117,11 @@ var useGetWMLayerInstance = function useGetWMLayerInstance(layerFoundation) {
|
|
|
7094
7117
|
_React$useState10 = _slicedToArray(_React$useState1, 2),
|
|
7095
7118
|
errorMessage = _React$useState10[0],
|
|
7096
7119
|
setErrorMessage = _React$useState10[1];
|
|
7120
|
+
// The layer name for which the WMLayer was last parsed
|
|
7121
|
+
var _React$useState11 = React.useState(null),
|
|
7122
|
+
_React$useState12 = _slicedToArray(_React$useState11, 2),
|
|
7123
|
+
parsedName = _React$useState12[0],
|
|
7124
|
+
setParsedName = _React$useState12[1];
|
|
7097
7125
|
var refId = useRef(id || webmapUtils.generateLayerId());
|
|
7098
7126
|
var layerId = refId.current;
|
|
7099
7127
|
var _useContext = useContext(TimeContext),
|
|
@@ -7131,12 +7159,16 @@ var useGetWMLayerInstance = function useGetWMLayerInstance(layerFoundation) {
|
|
|
7131
7159
|
wmLayer.setName(name)["catch"](function (e) {
|
|
7132
7160
|
setErrorMessage(e);
|
|
7133
7161
|
})["finally"](function () {
|
|
7162
|
+
var _wmLayer$name;
|
|
7134
7163
|
setLayer(wmLayer);
|
|
7164
|
+
// Use the name of the wmLayer, as it can have been renamed again while parsing
|
|
7165
|
+
setParsedName((_wmLayer$name = wmLayer.name) !== null && _wmLayer$name !== void 0 ? _wmLayer$name : null);
|
|
7135
7166
|
});
|
|
7136
7167
|
}, [hasLayerFoundation, layerId, layerType, name, serviceUrl]);
|
|
7137
7168
|
return {
|
|
7138
7169
|
wmLayer: layer,
|
|
7139
|
-
errorMessage: errorMessage
|
|
7170
|
+
errorMessage: errorMessage,
|
|
7171
|
+
isParsedForName: !!layer && parsedName === name
|
|
7140
7172
|
};
|
|
7141
7173
|
};
|
|
7142
7174
|
/**
|
|
@@ -7375,7 +7407,8 @@ var TimeawareImageSourceWMSLayer = function TimeawareImageSourceWMSLayer(_ref) {
|
|
|
7375
7407
|
layerType: LayerType.mapLayer
|
|
7376
7408
|
}),
|
|
7377
7409
|
wmLayer = _useGetWMLayerInstanc.wmLayer,
|
|
7378
|
-
errorMessage = _useGetWMLayerInstanc.errorMessage
|
|
7410
|
+
errorMessage = _useGetWMLayerInstanc.errorMessage,
|
|
7411
|
+
isParsedForName = _useGetWMLayerInstanc.isParsedForName;
|
|
7379
7412
|
if (errorMessage && onLayerError) {
|
|
7380
7413
|
onLayerError(layerId || '', errorMessage);
|
|
7381
7414
|
}
|
|
@@ -7454,12 +7487,12 @@ var TimeawareImageSourceWMSLayer = function TimeawareImageSourceWMSLayer(_ref) {
|
|
|
7454
7487
|
firstRefTime = refTimeDim === null || refTimeDim === void 0 ? void 0 : refTimeDim.getClosestValue(refTimeToFind, true);
|
|
7455
7488
|
firstRefTime && refTimeDim && (wmTimeDim === null || wmTimeDim === void 0 ? void 0 : wmTimeDim.setTimeValuesForReferenceTime(firstRefTime, refTimeDim));
|
|
7456
7489
|
}
|
|
7457
|
-
// Make sure style is set in wmLayer as well
|
|
7458
|
-
styleName && wmLayer.setStyle(styleName);
|
|
7459
7490
|
// Make sure we have the latest dimension values before initializing
|
|
7460
7491
|
_context.n = 1;
|
|
7461
7492
|
return wmLayer.parseLayer();
|
|
7462
7493
|
case 1:
|
|
7494
|
+
// Make sure style is set in wmLayer as well. Done after parsing, so the style is checked against the styles of this layer name.
|
|
7495
|
+
styleName && wmLayer.setStyle(styleName);
|
|
7463
7496
|
onInitializeLayer === null || onInitializeLayer === void 0 || onInitializeLayer({
|
|
7464
7497
|
layerId: wmLayer.id,
|
|
7465
7498
|
style: wmLayer.currentStyle,
|
|
@@ -7509,33 +7542,30 @@ var TimeawareImageSourceWMSLayer = function TimeawareImageSourceWMSLayer(_ref) {
|
|
|
7509
7542
|
useEffect(function () {
|
|
7510
7543
|
layer === null || layer === void 0 || layer.setVisible(visible);
|
|
7511
7544
|
}, [layer, visible]);
|
|
7512
|
-
// Layer
|
|
7513
|
-
|
|
7514
|
-
|
|
7515
|
-
var _styles$, _layer$getSource;
|
|
7516
|
-
var styles = wmLayer.getStyles();
|
|
7517
|
-
var style = styleName && styleName !== 'default' && styles.some(function (style) {
|
|
7518
|
-
return style.name === styleName;
|
|
7519
|
-
}) ? styleName : '';
|
|
7520
|
-
wmLayer.setStyle(style || ((_styles$ = styles[0]) === null || _styles$ === void 0 ? void 0 : _styles$.name) || '');
|
|
7521
|
-
layer === null || layer === void 0 || (_layer$getSource = layer.getSource()) === null || _layer$getSource === void 0 || _layer$getSource.setStyle(style);
|
|
7522
|
-
}
|
|
7523
|
-
}, [layer, styleName, wmLayer]);
|
|
7524
|
-
// layerName useEffect
|
|
7525
|
-
useEffect(function () {
|
|
7526
|
-
var _layer$getSource2;
|
|
7527
|
-
layer === null || layer === void 0 || (_layer$getSource2 = layer.getSource()) === null || _layer$getSource2 === void 0 || _layer$getSource2.setLayerName(layerName);
|
|
7528
|
-
}, [layer, layerName]);
|
|
7529
|
-
// Layer dim values useEffect,
|
|
7545
|
+
// Layer name, style and dim values useEffect.
|
|
7546
|
+
// After a layer name change, this waits until the wmLayer is parsed for the new name. Until then the wmLayer still has the styles and dimensions of the previous layer.
|
|
7547
|
+
// Name, style and dimensions are set in the source at once, so it never requests the new layer with the style or dimensions of the previous one.
|
|
7530
7548
|
useEffect(function () {
|
|
7531
|
-
var _layer$
|
|
7532
|
-
|
|
7549
|
+
var _styles$, _layer$getSource;
|
|
7550
|
+
if (!wmLayer || !isParsedForName) {
|
|
7551
|
+
return;
|
|
7552
|
+
}
|
|
7553
|
+
var styles = wmLayer.getStyles();
|
|
7554
|
+
var style = styleName && styleName !== 'default' && styles.some(function (style) {
|
|
7555
|
+
return style.name === styleName;
|
|
7556
|
+
}) ? styleName : '';
|
|
7557
|
+
wmLayer.setStyle(style || ((_styles$ = styles[0]) === null || _styles$ === void 0 ? void 0 : _styles$.name) || '');
|
|
7558
|
+
dimensionsValues && (layer === null || layer === void 0 || (_layer$getSource = layer.getSource()) === null || _layer$getSource === void 0 ? void 0 : _layer$getSource.setLayerProps({
|
|
7559
|
+
layerName: layerName,
|
|
7560
|
+
styleName: style,
|
|
7561
|
+
dimProps: dimensionsValues
|
|
7562
|
+
}));
|
|
7533
7563
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
7534
|
-
}, [layer, dimensionsValuesEffectCheck]);
|
|
7564
|
+
}, [layer, wmLayer, isParsedForName, layerName, styleName, dimensionsValuesEffectCheck]);
|
|
7535
7565
|
// Prefetch useEffect
|
|
7536
7566
|
useEffect(function () {
|
|
7537
7567
|
var _wmLayer$dimensions3;
|
|
7538
|
-
if (!wmLayer) {
|
|
7568
|
+
if (!wmLayer || !isParsedForName) {
|
|
7539
7569
|
return;
|
|
7540
7570
|
}
|
|
7541
7571
|
var wmTimeDim = wmLayer === null || wmLayer === void 0 || (_wmLayer$dimensions3 = wmLayer.dimensions) === null || _wmLayer$dimensions3 === void 0 ? void 0 : _wmLayer$dimensions3.find(function (dimension) {
|
|
@@ -7545,9 +7575,9 @@ var TimeawareImageSourceWMSLayer = function TimeawareImageSourceWMSLayer(_ref) {
|
|
|
7545
7575
|
return;
|
|
7546
7576
|
}
|
|
7547
7577
|
try {
|
|
7548
|
-
var _layer$
|
|
7578
|
+
var _layer$getSource2;
|
|
7549
7579
|
var dimensionValuesToPrefetch = makeDimValuesToPrefetch(wmTimeDim, prefetchList, isAnimating);
|
|
7550
|
-
layer === null || layer === void 0 || (_layer$
|
|
7580
|
+
layer === null || layer === void 0 || (_layer$getSource2 = layer.getSource()) === null || _layer$getSource2 === void 0 || _layer$getSource2.setTimeValuesValuesToPrefetch(dimensionValuesToPrefetch);
|
|
7551
7581
|
} catch (e) {
|
|
7552
7582
|
window.console.warn(e);
|
|
7553
7583
|
}
|
|
@@ -7557,8 +7587,9 @@ var TimeawareImageSourceWMSLayer = function TimeawareImageSourceWMSLayer(_ref) {
|
|
|
7557
7587
|
// - prefetchList
|
|
7558
7588
|
// - styleName,
|
|
7559
7589
|
// - dimensionsValuesEffectCheck,
|
|
7590
|
+
// - isParsedForName
|
|
7560
7591
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
7561
|
-
}, [layer, wmLayer, prefetchListEffectCheck, layerName, styleName, dimensionsValuesEffectCheck]);
|
|
7592
|
+
}, [layer, wmLayer, prefetchListEffectCheck, layerName, styleName, dimensionsValuesEffectCheck, isParsedForName]);
|
|
7562
7593
|
// Only show debug info for data layers with time dimension
|
|
7563
7594
|
var hasTimeDim = (_wmLayer$dimensions$f = wmLayer === null || wmLayer === void 0 || (_wmLayer$dimensions4 = wmLayer.dimensions) === null || _wmLayer$dimensions4 === void 0 ? void 0 : _wmLayer$dimensions4.findIndex(function (dimension) {
|
|
7564
7595
|
return dimension.name === 'time';
|
|
@@ -7616,14 +7647,13 @@ var WMSLayer = function WMSLayer(_ref) {
|
|
|
7616
7647
|
source: new ImageSource({
|
|
7617
7648
|
loader: createLoader({
|
|
7618
7649
|
url: url,
|
|
7619
|
-
load: load,
|
|
7620
|
-
projection: projection,
|
|
7621
7650
|
params: {
|
|
7622
7651
|
LAYERS: layerName,
|
|
7623
7652
|
STYLES: styleName
|
|
7624
|
-
}
|
|
7625
|
-
|
|
7626
|
-
|
|
7653
|
+
},
|
|
7654
|
+
projection: projection,
|
|
7655
|
+
crossOrigin: 'anonymous'
|
|
7656
|
+
})
|
|
7627
7657
|
})
|
|
7628
7658
|
});
|
|
7629
7659
|
map.addLayer(layer);
|
|
@@ -7723,9 +7753,11 @@ var WMTSLayer = function WMTSLayer(_ref) {
|
|
|
7723
7753
|
if (!map || !wmtsLayer) {
|
|
7724
7754
|
return function () {};
|
|
7725
7755
|
}
|
|
7726
|
-
var source = new WMTS(_objectSpread2(_objectSpread2({}, wmtsLayer), layerProps !== null && layerProps !== void 0 && layerProps.dimensions ? {
|
|
7756
|
+
var source = new WMTS(_objectSpread2(_objectSpread2(_objectSpread2({}, wmtsLayer), layerProps !== null && layerProps !== void 0 && layerProps.dimensions ? {
|
|
7727
7757
|
dimensions: WMTSDimensionsFromDimensions(layerProps.dimensions)
|
|
7728
|
-
} : {})
|
|
7758
|
+
} : {}), {}, {
|
|
7759
|
+
crossOrigin: 'anonymous'
|
|
7760
|
+
}));
|
|
7729
7761
|
var layer = new TileLayer({
|
|
7730
7762
|
source: source
|
|
7731
7763
|
});
|
|
@@ -7787,7 +7819,8 @@ var XYZLayer = function XYZLayer(_ref) {
|
|
|
7787
7819
|
url: urlTemplate,
|
|
7788
7820
|
projection: tileProjectionCode,
|
|
7789
7821
|
minZoom: layerOptions === null || layerOptions === void 0 ? void 0 : layerOptions.minZoom,
|
|
7790
|
-
maxZoom: layerOptions === null || layerOptions === void 0 ? void 0 : layerOptions.maxZoom
|
|
7822
|
+
maxZoom: layerOptions === null || layerOptions === void 0 ? void 0 : layerOptions.maxZoom,
|
|
7823
|
+
crossOrigin: 'anonymous'
|
|
7791
7824
|
})
|
|
7792
7825
|
});
|
|
7793
7826
|
map.addLayer(layer);
|
|
@@ -8063,6 +8096,7 @@ var TiledWMSLayer = function TiledWMSLayer(_ref) {
|
|
|
8063
8096
|
source: new TileWMS({
|
|
8064
8097
|
url: url,
|
|
8065
8098
|
projection: projection,
|
|
8099
|
+
crossOrigin: 'anonymous',
|
|
8066
8100
|
params: {
|
|
8067
8101
|
LAYERS: layerName,
|
|
8068
8102
|
STYLES: styleName
|
|
@@ -10836,9 +10870,11 @@ var TimeAwareWMTSLayer = function TimeAwareWMTSLayer(_ref) {
|
|
|
10836
10870
|
if (!map || !wmtsOptions) {
|
|
10837
10871
|
return function () {};
|
|
10838
10872
|
}
|
|
10839
|
-
var source = new WMTS(_objectSpread2(_objectSpread2({}, wmtsOptions), dimensions ? {
|
|
10873
|
+
var source = new WMTS(_objectSpread2(_objectSpread2(_objectSpread2({}, wmtsOptions), dimensions ? {
|
|
10840
10874
|
dimensions: WMTSDimensionsFromDimensions(dimensions)
|
|
10841
|
-
} : {})
|
|
10875
|
+
} : {}), {}, {
|
|
10876
|
+
crossOrigin: 'anonymous'
|
|
10877
|
+
}));
|
|
10842
10878
|
var layer = new TileLayer({
|
|
10843
10879
|
source: source
|
|
10844
10880
|
});
|
|
@@ -11589,8 +11625,16 @@ var OpenLayersLayer = function OpenLayersLayer(layerProps) {
|
|
|
11589
11625
|
});
|
|
11590
11626
|
}
|
|
11591
11627
|
} else if (type === 'wmts' && _name && _service) {
|
|
11628
|
+
var capabilitiesUrl = new URL(_service, window.location.href);
|
|
11629
|
+
_toConsumableArray(capabilitiesUrl.searchParams.keys()).forEach(function (key) {
|
|
11630
|
+
if (['service', 'request'].includes(key.toLowerCase())) {
|
|
11631
|
+
capabilitiesUrl.searchParams["delete"](key);
|
|
11632
|
+
}
|
|
11633
|
+
});
|
|
11634
|
+
capabilitiesUrl.searchParams.set('SERVICE', 'WMTS');
|
|
11635
|
+
capabilitiesUrl.searchParams.set('REQUEST', 'GetCapabilities');
|
|
11592
11636
|
return jsx(WMTSLayer, {
|
|
11593
|
-
getCapsURL:
|
|
11637
|
+
getCapsURL: capabilitiesUrl.toString(),
|
|
11594
11638
|
layerName: _name,
|
|
11595
11639
|
layerOptions: layerOptions,
|
|
11596
11640
|
layerProps: layerProps
|
|
@@ -69,6 +69,14 @@ export declare class TimeawareImageSource extends ImageSource {
|
|
|
69
69
|
setImageForTimeValue(timeStampsToPrefetch: string): void;
|
|
70
70
|
setStyle(styleName: string): void;
|
|
71
71
|
setLayerName(layerName: string): void;
|
|
72
|
+
/**
|
|
73
|
+
* Sets the layer name, style and dimensions at once, so the source never requests a layer with the style or dimensions of another layer.
|
|
74
|
+
*/
|
|
75
|
+
setLayerProps({ layerName, styleName, dimProps, }: {
|
|
76
|
+
layerName: string;
|
|
77
|
+
styleName: string;
|
|
78
|
+
dimProps: Record<string, string>;
|
|
79
|
+
}): void;
|
|
72
80
|
setTimeValuesValuesToPrefetch(timeStampsToPrefetch: string[]): void;
|
|
73
81
|
}
|
|
74
82
|
export {};
|
|
@@ -48,12 +48,15 @@ export declare const useGetWMSLayerStyleList: (serviceUrl: string, name: string)
|
|
|
48
48
|
/**
|
|
49
49
|
* Returns a WMLayer instance. If the layerType is LayerType.mapLayer or LayerType.wmtsMapLayer, the layer will detect the right type and will contain the parsed dimensions and styles.
|
|
50
50
|
*
|
|
51
|
+
* When the name changes, the same WMLayer instance is returned, but it is re-parsed asynchronously. Until that is done, it still holds the styles and dimensions of the previous layer name. Use isParsedForName to know when the WMLayer is up to date.
|
|
52
|
+
*
|
|
51
53
|
* @param layerFoundation
|
|
52
|
-
* @returns object with wmLayer
|
|
54
|
+
* @returns object with wmLayer, if set an errorMessage, and isParsedForName which is true when wmLayer has been parsed for the requested name
|
|
53
55
|
*/
|
|
54
56
|
export declare const useGetWMLayerInstance: (layerFoundation?: LayerFoundation) => {
|
|
55
57
|
wmLayer: WMLayer | null;
|
|
56
58
|
errorMessage: string | null;
|
|
59
|
+
isParsedForName: boolean;
|
|
57
60
|
};
|
|
58
61
|
/**
|
|
59
62
|
* Used for querying WMTS GetCapabilities documents
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengeoweb/webmap-react",
|
|
3
|
-
"version": "20.2.0-nightly-
|
|
3
|
+
"version": "20.2.0-nightly-20261024",
|
|
4
4
|
"description": "GeoWeb react wrapper for webmap",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@opengeoweb/webmap": "20.2.0-nightly-
|
|
24
|
-
"@opengeoweb/theme": "20.2.0-nightly-
|
|
25
|
-
"@opengeoweb/shared": "20.2.0-nightly-
|
|
23
|
+
"@opengeoweb/webmap": "20.2.0-nightly-20261024",
|
|
24
|
+
"@opengeoweb/theme": "20.2.0-nightly-20261024",
|
|
25
|
+
"@opengeoweb/shared": "20.2.0-nightly-20261024",
|
|
26
26
|
"lodash": "^4.18.1",
|
|
27
27
|
"ol": "^10.4.0",
|
|
28
28
|
"proj4": "^2.9.2",
|