qwc2 2025.10.9 → 2025.10.14
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/actions/display.js +30 -1
- package/actions/editing.js +22 -1
- package/actions/layerinfo.js +13 -1
- package/actions/layers.js +213 -3
- package/actions/localConfig.js +58 -1
- package/actions/locale.js +21 -1
- package/actions/locate.js +26 -1
- package/actions/logging.js +10 -1
- package/actions/map.js +105 -2
- package/actions/measurement.js +12 -1
- package/actions/processNotifications.js +37 -1
- package/actions/redlining.js +18 -1
- package/actions/redliningPick.js +12 -1
- package/actions/search.js +12 -1
- package/actions/serviceinfo.js +12 -1
- package/actions/task.js +55 -3
- package/actions/theme.js +339 -19
- package/actions/windows.js +164 -5
- package/components/AppMenu.js +435 -3
- package/components/AttributeForm.js +928 -32
- package/components/AttributeTableWidget.js +1105 -13
- package/components/AutoEditForm.js +189 -3
- package/components/CoordinateDisplayer.js +78 -2
- package/components/EditComboField.js +190 -6
- package/components/EditUploadField.js +315 -3
- package/components/ExportSelection.js +203 -2
- package/components/FullscreenSwitcher.js +90 -3
- package/components/Icon.js +81 -2
- package/components/IdentifyViewer.js +1161 -6
- package/components/ImportLayer.js +718 -20
- package/components/LayerInfoWindow.js +145 -2
- package/components/LinkFeatureForm.js +246 -5
- package/components/MapButton.js +88 -2
- package/components/MapSelection.js +287 -8
- package/components/MessageBar.js +68 -2
- package/components/NumericInputWindow.js +359 -2
- package/components/PickFeature.js +266 -2
- package/components/PluginsContainer.js +227 -8
- package/components/PrintSelection.js +620 -49
- package/components/ProcessNotifications.js +104 -2
- package/components/QtDesignerForm.js +1137 -18
- package/components/ResizeableWindow.js +591 -8
- package/components/SearchBox.js +1307 -20
- package/components/ServiceInfoWindow.js +107 -2
- package/components/SideBar.js +204 -4
- package/components/StandardApp.js +381 -20
- package/components/Swipeable.js +15 -1
- package/components/TaskBar.js +85 -2
- package/components/ThemeLayersListWindow.js +216 -4
- package/components/ThemeList.js +381 -7
- package/components/Toolbar.js +106 -2
- package/components/WindowManager.js +178 -2
- package/components/map/OlLayer.js +257 -6
- package/components/map/OlMap.js +405 -5
- package/components/map/layers/BingLayer.js +31 -2
- package/components/map/layers/GoogleLayer.js +222 -19
- package/components/map/layers/GraticuleLayer.js +21 -1
- package/components/map/layers/ImageLayer.js +15 -1
- package/components/map/layers/MVTLayer.js +52 -2
- package/components/map/layers/OSMLayer.js +24 -2
- package/components/map/layers/OverlayLayer.js +55 -3
- package/components/map/layers/VectorLayer.js +173 -8
- package/components/map/layers/WFSLayer.js +220 -6
- package/components/map/layers/WMSLayer.js +180 -6
- package/components/map/layers/WMTSLayer.js +67 -3
- package/components/map/layers/XYZLayer.js +24 -2
- package/components/map/layers/index.js +28 -1
- package/components/map3d/EditDataset3D.js +190 -3
- package/components/map3d/HeightProfile3D.js +402 -3
- package/components/map3d/ImportObjects3D.js +162 -2
- package/components/map3d/Map3D.js +1304 -38
- package/components/map3d/MapControls3D.js +392 -7
- package/components/map3d/SearchField3D.js +183 -11
- package/components/map3d/View3DSwitcher.js +98 -2
- package/components/map3d/drawtool/CreateTool3D.js +174 -4
- package/components/map3d/drawtool/EditTool3D.js +590 -6
- package/components/map3d/drawtool/NumericInput3D.js +336 -4
- package/components/map3d/layers/GeoTIFFLayer3D.js +15 -1
- package/components/map3d/layers/VectorLayer3D.js +53 -2
- package/components/map3d/layers/WFSLayer3D.js +109 -3
- package/components/map3d/layers/WMSLayer3D.js +70 -2
- package/components/map3d/layers/WMTSLayer3D.js +27 -3
- package/components/map3d/layers/index.js +14 -1
- package/components/map3d/utils/FirstPersonControls3D.js +423 -16
- package/components/map3d/utils/MiscUtils3D.js +221 -13
- package/components/map3d/utils/OrbitControls3D.js +176 -5
- package/components/map3d/utils/Tiles3DStyle.js +238 -9
- package/components/share/ShareLink.js +54 -2
- package/components/share/ShareQRCode.js +62 -2
- package/components/share/ShareSocials.js +125 -3
- package/components/timeline/FixedTimeline.js +236 -5
- package/components/timeline/InfiniteTimeline.js +347 -8
- package/components/timeline/TimelineFeaturesSlider.js +439 -5
- package/components/widgets/AccordeonWidget.js +96 -2
- package/components/widgets/ButtonBar.js +124 -2
- package/components/widgets/ColorButton.js +201 -3
- package/components/widgets/ComboBox.js +166 -2
- package/components/widgets/CopyButton.js +110 -2
- package/components/widgets/DateTimeInput.js +100 -3
- package/components/widgets/EditableSelect.js +230 -3
- package/components/widgets/FileSelector.js +128 -4
- package/components/widgets/Input.js +124 -2
- package/components/widgets/InputContainer.js +96 -2
- package/components/widgets/LayerCatalogWidget.js +219 -3
- package/components/widgets/MenuButton.js +157 -1
- package/components/widgets/ModalDialog.js +64 -2
- package/components/widgets/NavBar.js +119 -2
- package/components/widgets/NumberInput.js +226 -4
- package/components/widgets/PopupMenu.js +72 -1
- package/components/widgets/Primitives.js +6 -1
- package/components/widgets/ReCaptchaWidget.js +55 -1
- package/components/widgets/SearchWidget.js +255 -2
- package/components/widgets/Spinner.js +44 -2
- package/components/widgets/SuggestionInput.js +77 -2
- package/components/widgets/TextInput.js +308 -2
- package/components/widgets/ToggleSwitch.js +85 -2
- package/components/widgets/VectorLayerPicker.js +85 -3
- package/libs/openlayers.js +225 -5
- package/package.json +1 -1
- package/plugins/API.js +358 -15
- package/plugins/AttributeTable.js +109 -3
- package/plugins/Authentication.js +130 -5
- package/plugins/BackgroundSwitcher.js +218 -4
- package/plugins/Bookmark.js +289 -3
- package/plugins/BottomBar.js +298 -4
- package/plugins/CookiePopup.js +67 -3
- package/plugins/Cyclomedia.js +442 -5
- package/plugins/Editing.js +497 -9
- package/plugins/FeatureForm.js +366 -4
- package/plugins/FeatureSearch.js +458 -3
- package/plugins/GeometryDigitizer.js +664 -7
- package/plugins/HeightProfile.js +763 -15
- package/plugins/Help.js +102 -3
- package/plugins/HomeButton.js +80 -3
- package/plugins/Identify.js +543 -5
- package/plugins/LayerCatalog.js +215 -4
- package/plugins/LayerTree.js +1194 -6
- package/plugins/LocateButton.js +94 -3
- package/plugins/Map.js +320 -16
- package/plugins/MapCompare.js +94 -3
- package/plugins/MapCopyright.js +127 -5
- package/plugins/MapExport.js +613 -20
- package/plugins/MapFilter.js +868 -12
- package/plugins/MapInfoTooltip.js +277 -3
- package/plugins/MapLegend.js +253 -4
- package/plugins/MapTip.js +290 -4
- package/plugins/Measure.js +220 -4
- package/plugins/NewsPopup.js +137 -3
- package/plugins/OverviewMap.js +167 -7
- package/plugins/Panoramax.js +340 -2
- package/plugins/Portal.js +199 -4
- package/plugins/Print.js +1231 -15
- package/plugins/Redlining.js +750 -6
- package/plugins/Reports.js +332 -3
- package/plugins/Routing.js +1278 -15
- package/plugins/ScratchDrawing.js +173 -5
- package/plugins/Settings.js +241 -4
- package/plugins/Share.js +198 -3
- package/plugins/StartupMarker.js +84 -4
- package/plugins/TaskButton.js +88 -3
- package/plugins/ThemeSwitcher.js +164 -4
- package/plugins/TimeManager.js +971 -10
- package/plugins/TopBar.js +300 -7
- package/plugins/TourGuide.js +213 -2
- package/plugins/ValueTool.js +419 -4
- package/plugins/View3D.js +519 -14
- package/plugins/ZoomButtons.js +165 -3
- package/plugins/map/EditingSupport.js +199 -7
- package/plugins/map/LocateSupport.js +260 -4
- package/plugins/map/MeasurementSupport.js +216 -8
- package/plugins/map/RedliningPickSupport.js +201 -7
- package/plugins/map/RedliningSupport.js +726 -17
- package/plugins/map/SnapInteraction.js +101 -1
- package/plugins/map/SnapSupport.js +210 -2
- package/plugins/map/SnappingSupport.js +356 -17
- package/plugins/map3d/BackgroundSwitcher3D.js +44 -3
- package/plugins/map3d/BottomBar3D.js +118 -3
- package/plugins/map3d/Compare3D.js +422 -8
- package/plugins/map3d/Draw3D.js +353 -6
- package/plugins/map3d/ExportObjects3D.js +393 -18
- package/plugins/map3d/HideObjects3D.js +313 -12
- package/plugins/map3d/Identify3D.js +283 -12
- package/plugins/map3d/LayerTree3D.js +323 -3
- package/plugins/map3d/MapCopyright3D.js +128 -5
- package/plugins/map3d/MapExport3D.js +590 -10
- package/plugins/map3d/MapLight3D.js +553 -6
- package/plugins/map3d/Measure3D.js +571 -20
- package/plugins/map3d/OverviewMap3D.js +169 -3
- package/plugins/map3d/Settings3D.js +73 -3
- package/plugins/map3d/TopBar3D.js +207 -9
- package/plugins/redlining/RedliningBufferSupport.js +206 -3
- package/reducers/display.js +34 -2
- package/reducers/editing.js +68 -3
- package/reducers/index.js +9 -1
- package/reducers/layerinfo.js +26 -2
- package/reducers/layers.js +456 -9
- package/reducers/localConfig.js +122 -2
- package/reducers/locale.js +38 -2
- package/reducers/locate.js +40 -2
- package/reducers/map.js +176 -5
- package/reducers/measurement.js +42 -2
- package/reducers/processNotifications.js +49 -2
- package/reducers/redlining.js +50 -2
- package/reducers/redliningPick.js +27 -2
- package/reducers/search.js +20 -1
- package/reducers/serviceinfo.js +25 -2
- package/reducers/task.js +45 -2
- package/reducers/theme.js +51 -2
- package/reducers/windows.js +203 -2
- package/scripts/dist.sh +1 -1
- package/scripts/gen-plugin-docs.js +152 -2
- package/scripts/makeIconkit.js +85 -6
- package/scripts/themesConfig.js +742 -40
- package/scripts/updateTranslations.js +251 -10
- package/selectors/searchproviders.js +44 -2
- package/stores/StandardStore.js +42 -2
- package/utils/ConfigUtils.js +84 -3
- package/utils/CoordinatesUtils.js +234 -23
- package/utils/DxfUtils.js +237 -11
- package/utils/EditingInterface.js +421 -87
- package/utils/EditingUtils.js +357 -13
- package/utils/ElevationInterface.js +83 -22
- package/utils/FeatureStyles.js +429 -5
- package/utils/IdentifyUtils.js +443 -7
- package/utils/ImageEditor.js +79 -9
- package/utils/LayerUtils.js +1516 -50
- package/utils/LocaleUtils.js +117 -7
- package/utils/MapUtils.js +241 -59
- package/utils/MeasureUtils.js +323 -2
- package/utils/MiscUtils.js +189 -11
- package/utils/PermaLinkUtils.js +429 -6
- package/utils/PluginStore.js +27 -1
- package/utils/ResourceRegistry.js +15 -1
- package/utils/RoutingInterface.js +307 -7
- package/utils/SearchProviders.js +722 -19
- package/utils/ServiceLayerUtils.js +669 -14
- package/utils/Signal.js +32 -2
- package/utils/ThemeUtils.js +341 -7
- package/utils/VectorLayerUtils.js +589 -15
- package/utils/expr_grammar/grammar.js +2239 -2
- package/utils/expr_grammar/test.js +65 -3
package/plugins/ZoomButtons.js
CHANGED
|
@@ -1,11 +1,173 @@
|
|
|
1
|
-
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
3
|
+
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
4
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
5
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
6
|
+
function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
|
|
7
|
+
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
8
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
9
|
+
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
|
|
10
|
+
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
|
|
11
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
12
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
13
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
14
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
15
|
+
/**
|
|
2
16
|
* Copyright 2016-2024 Sourcepole AG
|
|
3
17
|
* All rights reserved.
|
|
4
18
|
*
|
|
5
19
|
* This source code is licensed under the BSD-style license found in the
|
|
6
20
|
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*/
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import React from 'react';
|
|
24
|
+
import { connect } from 'react-redux';
|
|
25
|
+
import PropTypes from 'prop-types';
|
|
26
|
+
import { changeZoomLevel, zoomToExtent, zoomToPoint } from '../actions/map';
|
|
27
|
+
import { setCurrentTask } from '../actions/task';
|
|
28
|
+
import MapButton from '../components/MapButton';
|
|
29
|
+
import MapSelection from '../components/MapSelection';
|
|
30
|
+
import LocaleUtils from '../utils/LocaleUtils';
|
|
31
|
+
import ThemeUtils from '../utils/ThemeUtils';
|
|
32
|
+
|
|
33
|
+
/**
|
|
8
34
|
* Map button for zooming the map.
|
|
9
35
|
*
|
|
10
36
|
* Two specific plugins exist: ZoomInPlugin and ZoomOutPlugin, which are instances of ZoomButton for the respective zoom directions.
|
|
11
|
-
*/
|
|
37
|
+
*/
|
|
38
|
+
var ZoomButton = /*#__PURE__*/function (_React$Component) {
|
|
39
|
+
function ZoomButton(props) {
|
|
40
|
+
var _this;
|
|
41
|
+
_classCallCheck(this, ZoomButton);
|
|
42
|
+
_this = _callSuper(this, ZoomButton, [props]);
|
|
43
|
+
_defineProperty(_this, "state", {
|
|
44
|
+
disabled: false
|
|
45
|
+
});
|
|
46
|
+
_defineProperty(_this, "buttonClicked", function () {
|
|
47
|
+
if (_this.props.enableZoomByBoxSelection) {
|
|
48
|
+
_this.props.setCurrentTask(_this.props.currentTask === _this.task ? null : _this.task);
|
|
49
|
+
} else if (!_this.state.disabled) {
|
|
50
|
+
_this.props.changeZoomLevel(_this.props.currentZoom + _this.props.direction);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
_defineProperty(_this, "updateZoom", function (geom) {
|
|
54
|
+
var zoomBox = geom.coordinates[0];
|
|
55
|
+
if (_this.props.direction > 0) {
|
|
56
|
+
_this.props.zoomToExtent(zoomBox, _this.props.mapCrs);
|
|
57
|
+
} else {
|
|
58
|
+
var center = [0.5 * (zoomBox[0] + zoomBox[2]), 0.5 * (zoomBox[1] + zoomBox[3])];
|
|
59
|
+
var zoom = Math.max(0, _this.props.currentZoom + _this.props.direction);
|
|
60
|
+
_this.props.zoomToPoint(center, zoom, _this.props.mapCrs);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
_this.task = props.direction > 0 ? "ZoomIn" : "ZoomOut";
|
|
64
|
+
return _this;
|
|
65
|
+
}
|
|
66
|
+
_inherits(ZoomButton, _React$Component);
|
|
67
|
+
return _createClass(ZoomButton, [{
|
|
68
|
+
key: "componentDidUpdate",
|
|
69
|
+
value: function componentDidUpdate(prevProps) {
|
|
70
|
+
if (prevProps.currentZoom !== this.props.currentZoom || prevProps.maxZoom !== this.props.maxZoom) {
|
|
71
|
+
if (this.props.direction > 0) {
|
|
72
|
+
this.setState({
|
|
73
|
+
disabled: this.props.currentZoom >= this.props.maxZoom
|
|
74
|
+
});
|
|
75
|
+
} else if (this.props.direction < 0) {
|
|
76
|
+
this.setState({
|
|
77
|
+
disabled: this.props.currentZoom <= 0
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (this.props.currentTask === this.task && this.props.click !== prevProps.click) {
|
|
82
|
+
var _this$props$click;
|
|
83
|
+
var point = (_this$props$click = this.props.click) === null || _this$props$click === void 0 ? void 0 : _this$props$click.coordinate;
|
|
84
|
+
if (point) {
|
|
85
|
+
var zoom = Math.max(0, this.props.currentZoom + this.props.direction);
|
|
86
|
+
this.props.zoomToPoint(point, zoom, this.mapCrs);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}, {
|
|
91
|
+
key: "render",
|
|
92
|
+
value: function render() {
|
|
93
|
+
var _this2 = this;
|
|
94
|
+
if (!ThemeUtils.themeFlagsAllowed(this.props.theme, this.props.themeFlagWhitelist, this.props.themeFlagBlacklist)) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
var defaultPosition = this.props.direction > 0 ? 4 : 3;
|
|
98
|
+
var position = this.props.position >= 0 ? this.props.position : defaultPosition;
|
|
99
|
+
var tooltip = this.props.direction > 0 ? LocaleUtils.tr("tooltip.zoomin") : LocaleUtils.tr("tooltip.zoomout");
|
|
100
|
+
var active = this.props.enableZoomByBoxSelection && this.props.currentTask === this.task;
|
|
101
|
+
return [/*#__PURE__*/React.createElement(MapButton, {
|
|
102
|
+
active: active,
|
|
103
|
+
disabled: this.state.disabled,
|
|
104
|
+
icon: this.props.direction > 0 ? "plus" : "minus",
|
|
105
|
+
key: this.task + "Button",
|
|
106
|
+
onClick: this.buttonClicked,
|
|
107
|
+
position: position,
|
|
108
|
+
tooltip: tooltip
|
|
109
|
+
}), this.props.currentTask === this.task ? /*#__PURE__*/React.createElement(MapSelection, {
|
|
110
|
+
active: true,
|
|
111
|
+
cursor: this.props.direction > 0 ? "zoom-in" : "zoom-out",
|
|
112
|
+
geomType: "DragBox",
|
|
113
|
+
geometryChanged: function geometryChanged(geom) {
|
|
114
|
+
return _this2.updateZoom(geom);
|
|
115
|
+
},
|
|
116
|
+
key: "MapSelection"
|
|
117
|
+
}) : null];
|
|
118
|
+
}
|
|
119
|
+
}]);
|
|
120
|
+
}(React.Component);
|
|
121
|
+
_defineProperty(ZoomButton, "propTypes", {
|
|
122
|
+
changeZoomLevel: PropTypes.func,
|
|
123
|
+
click: PropTypes.object,
|
|
124
|
+
currentTask: PropTypes.string,
|
|
125
|
+
currentZoom: PropTypes.number,
|
|
126
|
+
direction: PropTypes.number,
|
|
127
|
+
/** Enable zoom in or out by box selection. */
|
|
128
|
+
enableZoomByBoxSelection: PropTypes.bool,
|
|
129
|
+
mapCrs: PropTypes.string,
|
|
130
|
+
maxZoom: PropTypes.number,
|
|
131
|
+
/** The position slot index of the map button, from the bottom (0: bottom slot). */
|
|
132
|
+
position: PropTypes.number,
|
|
133
|
+
setCurrentTask: PropTypes.func,
|
|
134
|
+
theme: PropTypes.object,
|
|
135
|
+
/** Omit the button in themes matching one of these flags. */
|
|
136
|
+
themeFlagBlacklist: PropTypes.arrayOf(PropTypes.string),
|
|
137
|
+
/** Only show the button in themes matching one of these flags. */
|
|
138
|
+
themeFlagWhitelist: PropTypes.arrayOf(PropTypes.string),
|
|
139
|
+
zoomToExtent: PropTypes.func,
|
|
140
|
+
zoomToPoint: PropTypes.func
|
|
141
|
+
});
|
|
142
|
+
export var ZoomInPlugin = connect(function (state) {
|
|
143
|
+
return {
|
|
144
|
+
click: state.map.click,
|
|
145
|
+
currentTask: state.task.id,
|
|
146
|
+
currentZoom: state.map.zoom,
|
|
147
|
+
maxZoom: state.map.resolutions.length - 1,
|
|
148
|
+
direction: +1,
|
|
149
|
+
mapCrs: state.map.projection,
|
|
150
|
+
theme: state.theme.current
|
|
151
|
+
};
|
|
152
|
+
}, {
|
|
153
|
+
changeZoomLevel: changeZoomLevel,
|
|
154
|
+
setCurrentTask: setCurrentTask,
|
|
155
|
+
zoomToExtent: zoomToExtent,
|
|
156
|
+
zoomToPoint: zoomToPoint
|
|
157
|
+
})(ZoomButton);
|
|
158
|
+
export var ZoomOutPlugin = connect(function (state) {
|
|
159
|
+
return {
|
|
160
|
+
click: state.map.click || {},
|
|
161
|
+
currentTask: state.task.id,
|
|
162
|
+
currentZoom: state.map.zoom,
|
|
163
|
+
maxZoom: state.map.resolutions.length - 1,
|
|
164
|
+
direction: -1,
|
|
165
|
+
mapCrs: state.map.projection,
|
|
166
|
+
theme: state.theme.current
|
|
167
|
+
};
|
|
168
|
+
}, {
|
|
169
|
+
changeZoomLevel: changeZoomLevel,
|
|
170
|
+
setCurrentTask: setCurrentTask,
|
|
171
|
+
zoomToExtent: zoomToExtent,
|
|
172
|
+
zoomToPoint: zoomToPoint
|
|
173
|
+
})(ZoomButton);
|
|
@@ -1,13 +1,205 @@
|
|
|
1
|
-
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
3
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
5
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
6
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
7
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
8
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
9
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
10
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
11
|
+
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
12
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
13
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
14
|
+
function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
|
|
15
|
+
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
16
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
17
|
+
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
|
|
18
|
+
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
|
|
19
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
20
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
21
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
22
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
23
|
+
/**
|
|
2
24
|
* Copyright 2017-2024 Sourcepole AG
|
|
3
25
|
* All rights reserved.
|
|
4
26
|
*
|
|
5
27
|
* This source code is licensed under the BSD-style license found in the
|
|
6
28
|
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*/
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
import React from 'react';
|
|
32
|
+
import { connect } from 'react-redux';
|
|
33
|
+
import ol from 'openlayers';
|
|
34
|
+
import PropTypes from 'prop-types';
|
|
35
|
+
import { setEditContext } from '../../actions/editing';
|
|
36
|
+
import FeatureStyles from "../../utils/FeatureStyles";
|
|
37
|
+
|
|
38
|
+
/**
|
|
8
39
|
* Editing support for the map component.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
40
|
+
*/
|
|
41
|
+
var EditingSupport = /*#__PURE__*/function (_React$Component) {
|
|
42
|
+
function EditingSupport(props) {
|
|
43
|
+
var _this;
|
|
44
|
+
_classCallCheck(this, EditingSupport);
|
|
45
|
+
_this = _callSuper(this, EditingSupport, [props]);
|
|
46
|
+
_defineProperty(_this, "editStyle", function () {
|
|
47
|
+
var geometryFunction = function geometryFunction(feature) {
|
|
48
|
+
if (feature.getGeometry().getType() === "Point") {
|
|
49
|
+
return new ol.geom.MultiPoint([feature.getGeometry().getCoordinates()]);
|
|
50
|
+
} else if (feature.getGeometry().getType() === "LineString") {
|
|
51
|
+
return new ol.geom.MultiPoint(feature.getGeometry().getCoordinates());
|
|
52
|
+
} else if (feature.getGeometry().getType() === "Polygon") {
|
|
53
|
+
return new ol.geom.MultiPoint(feature.getGeometry().getCoordinates()[0]);
|
|
54
|
+
} else if (feature.getGeometry().getType() === "MultiPoint") {
|
|
55
|
+
return feature.getGeometry();
|
|
56
|
+
} else if (feature.getGeometry().getType() === "MultiLineString") {
|
|
57
|
+
return new ol.geom.MultiPoint(feature.getGeometry().getCoordinates()[0]);
|
|
58
|
+
} else if (feature.getGeometry().getType() === "MultiPolygon") {
|
|
59
|
+
return new ol.geom.MultiPoint(feature.getGeometry().getCoordinates()[0][0]);
|
|
60
|
+
}
|
|
61
|
+
return feature.getGeometry();
|
|
62
|
+
};
|
|
63
|
+
return [FeatureStyles.interaction(_this.props.editContext.geometryStyle), FeatureStyles.interactionVertex(_objectSpread({
|
|
64
|
+
geometryFunction: geometryFunction
|
|
65
|
+
}, _this.props.editContext.vertexStyle))];
|
|
66
|
+
});
|
|
67
|
+
_defineProperty(_this, "createLayer", function () {
|
|
68
|
+
var source = new ol.source.Vector();
|
|
69
|
+
_this.layer = new ol.layer.Vector({
|
|
70
|
+
source: source,
|
|
71
|
+
zIndex: 1000000,
|
|
72
|
+
style: _this.editStyle()
|
|
73
|
+
});
|
|
74
|
+
_this.props.map.addLayer(_this.layer);
|
|
75
|
+
});
|
|
76
|
+
_defineProperty(_this, "addDrawInteraction", function () {
|
|
77
|
+
_this.reset();
|
|
78
|
+
_this.createLayer();
|
|
79
|
+
var drawInteraction = new ol.interaction.Draw({
|
|
80
|
+
stopClick: true,
|
|
81
|
+
type: _this.props.editContext.geomType.replace(/Z$/, ''),
|
|
82
|
+
source: _this.layer.getSource(),
|
|
83
|
+
condition: function condition(event) {
|
|
84
|
+
return event.originalEvent.buttons === 1;
|
|
85
|
+
},
|
|
86
|
+
style: _this.editStyle()
|
|
87
|
+
});
|
|
88
|
+
drawInteraction.on('drawstart', function (evt) {
|
|
89
|
+
_this.currentFeature = evt.feature;
|
|
90
|
+
}, _this);
|
|
91
|
+
drawInteraction.on('drawend', function () {
|
|
92
|
+
_this.commitCurrentFeature();
|
|
93
|
+
_this.props.map.removeInteraction(drawInteraction);
|
|
94
|
+
}, _this);
|
|
95
|
+
_this.props.map.addInteraction(drawInteraction);
|
|
96
|
+
_this.interaction = drawInteraction;
|
|
97
|
+
});
|
|
98
|
+
_defineProperty(_this, "addEditInteraction", function () {
|
|
99
|
+
_this.reset();
|
|
100
|
+
_this.createLayer();
|
|
101
|
+
var format = new ol.format.GeoJSON();
|
|
102
|
+
_this.currentFeature = format.readFeature(_this.props.editContext.feature);
|
|
103
|
+
_this.layer.getSource().addFeature(_this.currentFeature);
|
|
104
|
+
var modifyInteraction = new ol.interaction.Modify({
|
|
105
|
+
features: new ol.Collection([_this.currentFeature]),
|
|
106
|
+
condition: function condition(event) {
|
|
107
|
+
return event.originalEvent.buttons === 1;
|
|
108
|
+
},
|
|
109
|
+
deleteCondition: function deleteCondition(event) {
|
|
110
|
+
// delete vertices on SHIFT + click
|
|
111
|
+
if (event.type === "pointerdown" && ol.events.condition.shiftKeyOnly(event)) {
|
|
112
|
+
_this.props.map.setIgnoreNextClick(true);
|
|
113
|
+
}
|
|
114
|
+
return ol.events.condition.shiftKeyOnly(event) && ol.events.condition.singleClick(event);
|
|
115
|
+
},
|
|
116
|
+
style: FeatureStyles.sketchInteraction()
|
|
117
|
+
});
|
|
118
|
+
modifyInteraction.on('modifyend', function () {
|
|
119
|
+
_this.commitCurrentFeature();
|
|
120
|
+
}, _this);
|
|
121
|
+
modifyInteraction.setActive(_this.props.editContext.geomType && _this.props.editContext.permissions.updatable && !_this.props.editContext.geomReadOnly && !_this.props.editContext.geomNonZeroZ);
|
|
122
|
+
_this.props.map.addInteraction(modifyInteraction);
|
|
123
|
+
_this.interaction = modifyInteraction;
|
|
124
|
+
});
|
|
125
|
+
_defineProperty(_this, "commitCurrentFeature", function () {
|
|
126
|
+
if (!_this.currentFeature) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
var format = new ol.format.GeoJSON();
|
|
130
|
+
var feature = format.writeFeatureObject(_this.currentFeature);
|
|
131
|
+
if (_this.props.editContext.feature) {
|
|
132
|
+
feature = _objectSpread(_objectSpread({}, _this.props.editContext.feature), {}, {
|
|
133
|
+
geometry: feature.geometry
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
var _addZCoordinateIfNeeded = function addZCoordinateIfNeeded(entry) {
|
|
137
|
+
return Array.isArray(entry[0]) ? entry.map(_addZCoordinateIfNeeded) : [].concat(_toConsumableArray(entry.slice(0, 2)), [0]);
|
|
138
|
+
};
|
|
139
|
+
if (_this.props.editContext.geomType.endsWith('Z')) {
|
|
140
|
+
feature.geometry.coordinates = _addZCoordinateIfNeeded(feature.geometry.coordinates);
|
|
141
|
+
}
|
|
142
|
+
_this.props.setEditContext(_this.props.editContext.id, {
|
|
143
|
+
feature: feature,
|
|
144
|
+
changed: true
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
_defineProperty(_this, "reset", function () {
|
|
148
|
+
if (_this.interaction) {
|
|
149
|
+
_this.props.map.removeInteraction(_this.interaction);
|
|
150
|
+
}
|
|
151
|
+
_this.interaction = null;
|
|
152
|
+
_this.currentFeature = null;
|
|
153
|
+
if (_this.layer) {
|
|
154
|
+
_this.props.map.removeLayer(_this.layer);
|
|
155
|
+
}
|
|
156
|
+
_this.layer = null;
|
|
157
|
+
});
|
|
158
|
+
_this.interaction = null;
|
|
159
|
+
_this.layer = null;
|
|
160
|
+
_this.currentFeature = null;
|
|
161
|
+
return _this;
|
|
162
|
+
}
|
|
163
|
+
_inherits(EditingSupport, _React$Component);
|
|
164
|
+
return _createClass(EditingSupport, [{
|
|
165
|
+
key: "componentDidUpdate",
|
|
166
|
+
value: function componentDidUpdate(prevProps) {
|
|
167
|
+
if (this.props.editContext === prevProps.editContext) {
|
|
168
|
+
// pass
|
|
169
|
+
} else if (this.props.editContext.action === 'Pick' && this.props.editContext.feature) {
|
|
170
|
+
// If a feature without geometry was picked, enter draw mode, otherwise enter edit mode
|
|
171
|
+
if (!this.props.editContext.feature.geometry && this.props.editContext.geomType) {
|
|
172
|
+
this.addDrawInteraction();
|
|
173
|
+
} else {
|
|
174
|
+
this.addEditInteraction();
|
|
175
|
+
}
|
|
176
|
+
} else if (this.props.editContext.action === 'Draw' && this.props.editContext.geomType) {
|
|
177
|
+
// Usually, draw mode starts without a feature, but draw also can start with a pre-set geometry
|
|
178
|
+
if (!(this.props.editContext.feature || {}).geometry || prevProps.editContext.geomType !== this.props.editContext.geomType) {
|
|
179
|
+
this.addDrawInteraction();
|
|
180
|
+
} else if ((this.props.editContext.feature || {}).geometry) {
|
|
181
|
+
this.addEditInteraction();
|
|
182
|
+
}
|
|
183
|
+
} else {
|
|
184
|
+
this.reset();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}, {
|
|
188
|
+
key: "render",
|
|
189
|
+
value: function render() {
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
}]);
|
|
193
|
+
}(React.Component);
|
|
194
|
+
_defineProperty(EditingSupport, "propTypes", {
|
|
195
|
+
editContext: PropTypes.object,
|
|
196
|
+
map: PropTypes.object,
|
|
197
|
+
setEditContext: PropTypes.func
|
|
198
|
+
});
|
|
199
|
+
export default connect(function (state) {
|
|
200
|
+
return {
|
|
201
|
+
editContext: state.editing.contexts[state.editing.currentContext] || {}
|
|
202
|
+
};
|
|
203
|
+
}, {
|
|
204
|
+
setEditContext: setEditContext
|
|
205
|
+
})(EditingSupport);
|