@opengeoweb/core 20.1.0-nightly-20261018 → 20.2.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/dist/index.esm.js
CHANGED
|
@@ -8363,18 +8363,35 @@ var OlMapViewLayerConnect = function OlMapViewLayerConnect(layerProps) {
|
|
|
8363
8363
|
}), "layer-" + (layer == null ? void 0 : layer.id));
|
|
8364
8364
|
};
|
|
8365
8365
|
|
|
8366
|
+
// OpenLayers counterpart of layerUtils.isHiddenFeature
|
|
8367
|
+
var isHiddenOlFeature = function isHiddenOlFeature(feature) {
|
|
8368
|
+
return feature.get('isHidden') === true;
|
|
8369
|
+
};
|
|
8370
|
+
var hideHiddenFeatures = function hideHiddenFeatures(style) {
|
|
8371
|
+
return function (feature, resolution) {
|
|
8372
|
+
if (isHiddenOlFeature(feature)) {
|
|
8373
|
+
return undefined;
|
|
8374
|
+
}
|
|
8375
|
+
return typeof style === 'function' ? style(feature, resolution) : style;
|
|
8376
|
+
};
|
|
8377
|
+
};
|
|
8366
8378
|
/** Escape drops a multi selection only. A sole selection is kept, matching the
|
|
8367
|
-
* plain click behaviour,
|
|
8368
|
-
|
|
8369
|
-
|
|
8379
|
+
* plain click behaviour, unless the drawing tool is open. Edit mode keeps the
|
|
8380
|
+
* map's own Escape handling, after which onDrawEscape drops the selection. */
|
|
8381
|
+
var shouldDeselectAllOnEscape = function shouldDeselectAllOnEscape(selectedFeatureCount, isInEditMode, hasRegisteredDrawTool, isDrawToolOpen) {
|
|
8382
|
+
if (isDrawToolOpen === void 0) {
|
|
8383
|
+
isDrawToolOpen = false;
|
|
8384
|
+
}
|
|
8385
|
+
return hasRegisteredDrawTool && !isInEditMode && selectedFeatureCount > (isDrawToolOpen ? 0 : 1);
|
|
8370
8386
|
};
|
|
8371
8387
|
var useDeselectAllOnEscape = function useDeselectAllOnEscape(_ref) {
|
|
8372
8388
|
var selectedFeatureCount = _ref.selectedFeatureCount,
|
|
8373
8389
|
isInEditMode = _ref.isInEditMode,
|
|
8374
8390
|
hasRegisteredDrawTool = _ref.hasRegisteredDrawTool,
|
|
8391
|
+
isDrawToolOpen = _ref.isDrawToolOpen,
|
|
8375
8392
|
onDeselectAll = _ref.onDeselectAll;
|
|
8376
8393
|
React.useEffect(function () {
|
|
8377
|
-
if (!shouldDeselectAllOnEscape(selectedFeatureCount, isInEditMode, hasRegisteredDrawTool)) {
|
|
8394
|
+
if (!shouldDeselectAllOnEscape(selectedFeatureCount, isInEditMode, hasRegisteredDrawTool, isDrawToolOpen)) {
|
|
8378
8395
|
return undefined;
|
|
8379
8396
|
}
|
|
8380
8397
|
var onKeyDown = function onKeyDown(event) {
|
|
@@ -8387,7 +8404,7 @@ var useDeselectAllOnEscape = function useDeselectAllOnEscape(_ref) {
|
|
|
8387
8404
|
return function () {
|
|
8388
8405
|
return window.removeEventListener('keydown', onKeyDown);
|
|
8389
8406
|
};
|
|
8390
|
-
}, [selectedFeatureCount, isInEditMode, hasRegisteredDrawTool, onDeselectAll]);
|
|
8407
|
+
}, [selectedFeatureCount, isInEditMode, hasRegisteredDrawTool, isDrawToolOpen, onDeselectAll]);
|
|
8391
8408
|
};
|
|
8392
8409
|
var shouldClearSelectionOnEmptyClick = function shouldClearSelectionOnEmptyClick(activeDrawToolId, hasRegisteredDrawTool) {
|
|
8393
8410
|
return !activeDrawToolId && hasRegisteredDrawTool;
|
|
@@ -8422,9 +8439,7 @@ var findFeatureIndexByKey = function findFeatureIndexByKey(geojson, feature) {
|
|
|
8422
8439
|
if (key === undefined || !geojson) {
|
|
8423
8440
|
return -1;
|
|
8424
8441
|
}
|
|
8425
|
-
return
|
|
8426
|
-
return layerUtils.getFeatureSelectionKey(feat) === key;
|
|
8427
|
-
});
|
|
8442
|
+
return layerUtils.findFeatureIndexById(geojson, key);
|
|
8428
8443
|
};
|
|
8429
8444
|
var getMovableSelectedFeatureIds = function getMovableSelectedFeatureIds(geojson, selectedFeatureIds) {
|
|
8430
8445
|
if (!(geojson != null && geojson.features.length) || !(selectedFeatureIds != null && selectedFeatureIds.length)) {
|
|
@@ -8471,10 +8486,14 @@ var OpenLayersFeatureLayerConnect = function OpenLayersFeatureLayerConnect(_ref3
|
|
|
8471
8486
|
var dispatch = useDispatch();
|
|
8472
8487
|
var activeDrawToolId = useSelector(drawingToolSelectors.getActiveDrawToolId);
|
|
8473
8488
|
var hasRegisteredDrawTool = useSelector(function (state) {
|
|
8474
|
-
return drawingToolSelectors.
|
|
8475
|
-
|
|
8476
|
-
|
|
8489
|
+
return drawingToolSelectors.getHasDrawToolForLayer(state, layerId);
|
|
8490
|
+
});
|
|
8491
|
+
var isDrawToolOpen = useSelector(function (state) {
|
|
8492
|
+
return drawingToolSelectors.getIsDrawToolOpenForLayer(state, layerId);
|
|
8477
8493
|
});
|
|
8494
|
+
var layerStyle = React.useMemo(function () {
|
|
8495
|
+
return isDrawToolOpen ? hideHiddenFeatures(style) : style;
|
|
8496
|
+
}, [isDrawToolOpen, style]);
|
|
8478
8497
|
var activeDrawMode = useSelector(function (store) {
|
|
8479
8498
|
return drawingToolSelectors.getActiveDrawMode(store, activeDrawToolId);
|
|
8480
8499
|
});
|
|
@@ -8539,7 +8558,7 @@ var OpenLayersFeatureLayerConnect = function OpenLayersFeatureLayerConnect(_ref3
|
|
|
8539
8558
|
});
|
|
8540
8559
|
}, [layer.geojson, layer.hoveredFeatureIds, layer.originalId, layer.selectedFeatureIds, usesIdSelection]);
|
|
8541
8560
|
var clearSelection = React.useCallback(function () {
|
|
8542
|
-
if (!shouldClearSelectionOnEmptyClick(
|
|
8561
|
+
if (!shouldClearSelectionOnEmptyClick(drawingToolSelectors.getActiveDrawToolId(store.getState()), hasRegisteredDrawTool)) {
|
|
8543
8562
|
return;
|
|
8544
8563
|
}
|
|
8545
8564
|
dispatch(layerActions.setSelectedFeatures({
|
|
@@ -8551,7 +8570,13 @@ var OpenLayersFeatureLayerConnect = function OpenLayersFeatureLayerConnect(_ref3
|
|
|
8551
8570
|
isInEditMode: false,
|
|
8552
8571
|
drawMode: ''
|
|
8553
8572
|
}));
|
|
8554
|
-
}, [
|
|
8573
|
+
}, [store, hasRegisteredDrawTool, dispatch, layerId]);
|
|
8574
|
+
var onDrawEscape = React.useCallback(function () {
|
|
8575
|
+
// the map already ended its own edit or draw mode for this Escape
|
|
8576
|
+
if (document.activeElement === document.body && drawingToolSelectors.getIsDrawToolOpenForLayer(store.getState(), layerId)) {
|
|
8577
|
+
clearSelection();
|
|
8578
|
+
}
|
|
8579
|
+
}, [store, layerId, clearSelection]);
|
|
8555
8580
|
var onFeatureClick = React.useCallback(function (feature, isShiftClick) {
|
|
8556
8581
|
var _clickedFeature$prope;
|
|
8557
8582
|
if (!feature.length) {
|
|
@@ -8603,7 +8628,9 @@ var OpenLayersFeatureLayerConnect = function OpenLayersFeatureLayerConnect(_ref3
|
|
|
8603
8628
|
if (!((_layer$geojson3 = layer.geojson) != null && _layer$geojson3.features.length)) {
|
|
8604
8629
|
return;
|
|
8605
8630
|
}
|
|
8606
|
-
var boxSelectedIndices = features.
|
|
8631
|
+
var boxSelectedIndices = features.filter(function (feature) {
|
|
8632
|
+
return !(isDrawToolOpen && isHiddenOlFeature(feature));
|
|
8633
|
+
}).map(function (feature) {
|
|
8607
8634
|
return findFeatureIndexByKey(layer.geojson, feature);
|
|
8608
8635
|
}).filter(function (idx) {
|
|
8609
8636
|
return idx !== -1;
|
|
@@ -8632,7 +8659,7 @@ var OpenLayersFeatureLayerConnect = function OpenLayersFeatureLayerConnect(_ref3
|
|
|
8632
8659
|
drawMode: ''
|
|
8633
8660
|
}));
|
|
8634
8661
|
}
|
|
8635
|
-
}, [dispatch, layer.geojson, layer.selectedFeatureIds, layerId]);
|
|
8662
|
+
}, [dispatch, layer.geojson, layer.selectedFeatureIds, layerId, isDrawToolOpen]);
|
|
8636
8663
|
var boxSelectConfig = React.useMemo(function () {
|
|
8637
8664
|
return usesIdSelection && !layer.isInEditMode ? {
|
|
8638
8665
|
onBoxSelect: onBoxSelect,
|
|
@@ -8656,6 +8683,7 @@ var OpenLayersFeatureLayerConnect = function OpenLayersFeatureLayerConnect(_ref3
|
|
|
8656
8683
|
selectedFeatureCount: selectedFeatureIndices.length,
|
|
8657
8684
|
isInEditMode: layer.isInEditMode,
|
|
8658
8685
|
hasRegisteredDrawTool: hasRegisteredDrawTool,
|
|
8686
|
+
isDrawToolOpen: isDrawToolOpen,
|
|
8659
8687
|
onDeselectAll: clearSelection
|
|
8660
8688
|
});
|
|
8661
8689
|
var movableSelectedFeatureIds = React.useMemo(function () {
|
|
@@ -8731,7 +8759,7 @@ var OpenLayersFeatureLayerConnect = function OpenLayersFeatureLayerConnect(_ref3
|
|
|
8731
8759
|
modifyFeatures: modifyFeaturesConfig,
|
|
8732
8760
|
moveFeatures: moveFeaturesConfig,
|
|
8733
8761
|
opacity: layer.opacity,
|
|
8734
|
-
style:
|
|
8762
|
+
style: layerStyle,
|
|
8735
8763
|
visible: layer.enabled,
|
|
8736
8764
|
zIndex: zIndex
|
|
8737
8765
|
}), jsx(OpenLayersMapDraw, {
|
|
@@ -8740,12 +8768,13 @@ var OpenLayersFeatureLayerConnect = function OpenLayersFeatureLayerConnect(_ref3
|
|
|
8740
8768
|
exitDrawModeCallback: exitFeatureDrawMode,
|
|
8741
8769
|
geojson: layer.geojson,
|
|
8742
8770
|
isInEditMode: layer.isInEditMode || false,
|
|
8771
|
+
onEscape: onDrawEscape,
|
|
8743
8772
|
onNoFeatureClick: onNoFeatureClick,
|
|
8744
8773
|
onViewOnlyFeatureClick: onViewOnlyFeatureClick,
|
|
8745
8774
|
selectedFeatureIndex: activeFeatureIndex,
|
|
8746
8775
|
selectedFeatureIndices: selectedFeatureIndices,
|
|
8747
8776
|
updateGeojson: updateFeature,
|
|
8748
|
-
viewOnlyStyle:
|
|
8777
|
+
viewOnlyStyle: layerStyle
|
|
8749
8778
|
})]
|
|
8750
8779
|
});
|
|
8751
8780
|
};
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import type { Feature } from 'ol';
|
|
2
|
-
import type { StyleLike } from 'ol/style/Style';
|
|
2
|
+
import type { StyleFunction, StyleLike } from 'ol/style/Style';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import type { layerTypes } from '@opengeoweb/store';
|
|
5
5
|
import type { HoverSelect } from '@opengeoweb/webmap-react';
|
|
6
6
|
import { getAffectedIndices } from '@opengeoweb/webmap-react';
|
|
7
7
|
export { getAffectedIndices };
|
|
8
|
+
export declare const hideHiddenFeatures: (style: StyleLike) => StyleFunction;
|
|
8
9
|
/** Escape drops a multi selection only. A sole selection is kept, matching the
|
|
9
|
-
* plain click behaviour,
|
|
10
|
-
|
|
10
|
+
* plain click behaviour, unless the drawing tool is open. Edit mode keeps the
|
|
11
|
+
* map's own Escape handling, after which onDrawEscape drops the selection. */
|
|
12
|
+
export declare const shouldDeselectAllOnEscape: (selectedFeatureCount: number, isInEditMode: boolean | undefined, hasRegisteredDrawTool: boolean, isDrawToolOpen?: boolean) => boolean;
|
|
11
13
|
interface DeselectAllOnEscapeOptions {
|
|
12
14
|
selectedFeatureCount: number;
|
|
13
15
|
isInEditMode: boolean | undefined;
|
|
14
16
|
hasRegisteredDrawTool: boolean;
|
|
17
|
+
isDrawToolOpen?: boolean;
|
|
15
18
|
onDeselectAll: () => void;
|
|
16
19
|
}
|
|
17
|
-
export declare const useDeselectAllOnEscape: ({ selectedFeatureCount, isInEditMode, hasRegisteredDrawTool, onDeselectAll, }: DeselectAllOnEscapeOptions) => void;
|
|
20
|
+
export declare const useDeselectAllOnEscape: ({ selectedFeatureCount, isInEditMode, hasRegisteredDrawTool, isDrawToolOpen, onDeselectAll, }: DeselectAllOnEscapeOptions) => void;
|
|
18
21
|
export declare const shouldClearSelectionOnEmptyClick: (activeDrawToolId: string | undefined, hasRegisteredDrawTool: boolean) => boolean;
|
|
19
22
|
export declare const isSketchInProgress: (isInEditMode: boolean | undefined, drawMode: string | undefined, activeFeature: GeoJSON.Feature | undefined) => boolean;
|
|
20
23
|
/** Soundings and time series set their own highlight, so they must stay out of this. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengeoweb/core",
|
|
3
|
-
"version": "20.
|
|
3
|
+
"version": "20.2.0",
|
|
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": "20.
|
|
23
|
+
"@opengeoweb/shared": "20.2.0",
|
|
24
24
|
"react-redux": "^9.2.0",
|
|
25
|
-
"@opengeoweb/store": "20.
|
|
26
|
-
"@opengeoweb/time-slider": "20.
|
|
25
|
+
"@opengeoweb/store": "20.2.0",
|
|
26
|
+
"@opengeoweb/time-slider": "20.2.0",
|
|
27
27
|
"@reduxjs/toolkit": "^2.6.1",
|
|
28
|
-
"@opengeoweb/webmap-react": "20.
|
|
29
|
-
"@opengeoweb/webmap": "20.
|
|
30
|
-
"@opengeoweb/theme": "20.
|
|
31
|
-
"@opengeoweb/layer-select": "20.
|
|
28
|
+
"@opengeoweb/webmap-react": "20.2.0",
|
|
29
|
+
"@opengeoweb/webmap": "20.2.0",
|
|
30
|
+
"@opengeoweb/theme": "20.2.0",
|
|
31
|
+
"@opengeoweb/layer-select": "20.2.0",
|
|
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": "20.
|
|
37
|
+
"@opengeoweb/snackbar": "20.2.0",
|
|
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": "20.
|
|
44
|
+
"@opengeoweb/api": "20.2.0",
|
|
45
45
|
"@types/geojson": "^7946.0.14",
|
|
46
46
|
"@turf/turf": "^7.2.0",
|
|
47
47
|
"proj4": "^2.15.0",
|