qwc2 2025.12.17 → 2025.12.19
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/components/AttributeForm.js +8 -8
- package/components/AttributeTableWidget.js +3 -3
- package/components/EditComboField.js +1 -1
- package/components/EditUploadField.js +1 -1
- package/components/IdentifyViewer.js +3 -4
- package/components/LinkFeatureForm.js +21 -4
- package/components/MeasureSwitcher.js +115 -0
- package/components/OverviewMapButton.js +147 -0
- package/components/PluginsContainer.js +3 -2
- package/components/QtDesignerForm.js +2 -2
- package/components/ResizeableWindow.js +1 -1
- package/components/SearchBox.js +7 -7
- package/components/map3d/drawtool/EditTool3D.js +1 -1
- package/components/style/IdentifyViewer.css +1 -1
- package/components/style/LocationRecorder.css +1 -6
- package/{plugins/map3d/style/OverviewMap3D.css → components/style/OverviewMapButton.css} +4 -4
- package/components/style/PluginsContainer.css +11 -6
- package/components/timeline/FixedTimeline.js +2 -2
- package/components/timeline/InfiniteTimeline.js +2 -2
- package/components/timeline/TimelineFeaturesSlider.js +1 -1
- package/components/widgets/LayerCatalogWidget.js +1 -1
- package/package.json +1 -1
- package/plugins/Editing.js +20 -5
- package/plugins/FeatureForm.js +1 -1
- package/plugins/FeatureSearch.js +3 -3
- package/plugins/GeometryDigitizer.js +40 -26
- package/plugins/Identify.js +1 -4
- package/plugins/MapExport.js +4 -4
- package/plugins/MapFilter.js +10 -10
- package/plugins/NewsPopup.js +1 -1
- package/plugins/ObliqueView.js +177 -61
- package/plugins/Print.js +7 -7
- package/plugins/Redlining.js +25 -73
- package/plugins/Reports.js +3 -3
- package/plugins/Routing.js +4 -4
- package/plugins/ValueTool.js +1 -1
- package/plugins/View3D.js +2 -2
- package/plugins/ZoomButtons.js +1 -1
- package/plugins/map/EditingSupport.js +50 -20
- package/plugins/map/RedliningSupport.js +4 -4
- package/plugins/map/SnapSupport.js +12 -10
- package/plugins/map/style/SnappingSupport.css +1 -8
- package/plugins/map3d/Draw3D.js +2 -2
- package/plugins/map3d/ExportObjects3D.js +2 -2
- package/plugins/map3d/MapExport3D.js +4 -4
- package/plugins/map3d/OverviewMap3D.js +27 -102
- package/plugins/style/ObliqueView.css +6 -2
- package/reducers/editing.js +6 -1
- package/static/translations/bg-BG.json +39 -74
- package/static/translations/ca-ES.json +39 -74
- package/static/translations/cs-CZ.json +39 -74
- package/static/translations/de-CH.json +39 -74
- package/static/translations/de-DE.json +39 -74
- package/static/translations/en-US.json +39 -74
- package/static/translations/es-ES.json +39 -74
- package/static/translations/fi-FI.json +39 -74
- package/static/translations/fr-FR.json +39 -74
- package/static/translations/hu-HU.json +39 -74
- package/static/translations/it-IT.json +39 -74
- package/static/translations/ja-JP.json +39 -74
- package/static/translations/nl-NL.json +39 -74
- package/static/translations/no-NO.json +39 -74
- package/static/translations/pl-PL.json +39 -74
- package/static/translations/pt-BR.json +39 -74
- package/static/translations/pt-PT.json +39 -74
- package/static/translations/ro-RO.json +39 -74
- package/static/translations/ru-RU.json +39 -74
- package/static/translations/sv-SE.json +39 -74
- package/static/translations/tr-TR.json +39 -74
- package/static/translations/tsconfig.json +30 -67
- package/static/translations/uk-UA.json +39 -74
- package/utils/EditingUtils.js +2 -2
- package/utils/FeatureStyles.js +13 -18
- package/utils/IdentifyUtils.js +14 -11
- package/utils/SearchProviders.js +1 -1
|
@@ -99,7 +99,7 @@ var AttributeForm = /*#__PURE__*/function (_React$Component) {
|
|
|
99
99
|
var deleteButtons = [{
|
|
100
100
|
key: 'Delete',
|
|
101
101
|
icon: 'trash',
|
|
102
|
-
label: (_this$props$deleteLab = _this.props.deleteLabel) !== null && _this$props$deleteLab !== void 0 ? _this$props$deleteLab : LocaleUtils.tr("
|
|
102
|
+
label: (_this$props$deleteLab = _this.props.deleteLabel) !== null && _this$props$deleteLab !== void 0 ? _this$props$deleteLab : LocaleUtils.tr("common.delete")
|
|
103
103
|
}];
|
|
104
104
|
deleteBar = /*#__PURE__*/React.createElement(ButtonBar, {
|
|
105
105
|
buttons: deleteButtons,
|
|
@@ -564,7 +564,7 @@ var AttributeForm = /*#__PURE__*/function (_React$Component) {
|
|
|
564
564
|
var parts = name.split("__");
|
|
565
565
|
var value = element.type === "radio" || element.type === "checkbox" ? element.checked : element.value;
|
|
566
566
|
var nullElements = ["date", "number", "radio"];
|
|
567
|
-
var
|
|
567
|
+
var textDataTypes = ["character varying", "text"];
|
|
568
568
|
if (parts.length >= 3) {
|
|
569
569
|
var _relEditConfig$fields, _relEditConfig$fields2, _relEditConfig$fields3;
|
|
570
570
|
// Relation value
|
|
@@ -577,17 +577,17 @@ var AttributeForm = /*#__PURE__*/function (_React$Component) {
|
|
|
577
577
|
var nrelFieldConfig = (_relEditConfig$fields = (_relEditConfig$fields2 = relEditConfig.fields) === null || _relEditConfig$fields2 === void 0 || (_relEditConfig$fields3 = _relEditConfig$fields2.find) === null || _relEditConfig$fields3 === void 0 ? void 0 : _relEditConfig$fields3.call(_relEditConfig$fields2, function (f) {
|
|
578
578
|
return f.id === field;
|
|
579
579
|
})) !== null && _relEditConfig$fields !== void 0 ? _relEditConfig$fields : {};
|
|
580
|
-
var nrelFieldDataType = nrelFieldConfig.
|
|
580
|
+
var nrelFieldDataType = nrelFieldConfig.data_type;
|
|
581
581
|
if (nrelFieldConfig.expression) {
|
|
582
582
|
// Skip virtual fields
|
|
583
583
|
delete relationValues[datasetname].features[index][field];
|
|
584
584
|
return;
|
|
585
585
|
}
|
|
586
|
-
if ((element instanceof RadioNodeList || nullElements.includes(element.type) ||
|
|
586
|
+
if ((element instanceof RadioNodeList || nullElements.includes(element.type) || !textDataTypes.includes(nrelFieldDataType)) && element.value === "") {
|
|
587
587
|
// Set empty value to null instead of empty string
|
|
588
588
|
value = null;
|
|
589
589
|
}
|
|
590
|
-
if (nrelFieldDataType
|
|
590
|
+
if (textDataTypes.includes(nrelFieldDataType) && textNullValue !== undefined && element.value === textNullValue) {
|
|
591
591
|
// Convert text NULL to null
|
|
592
592
|
value = null;
|
|
593
593
|
}
|
|
@@ -624,12 +624,12 @@ var AttributeForm = /*#__PURE__*/function (_React$Component) {
|
|
|
624
624
|
delete feature.properties[name];
|
|
625
625
|
return;
|
|
626
626
|
}
|
|
627
|
-
var dataType = fieldConfig.
|
|
628
|
-
if ((element instanceof RadioNodeList || nullElements.includes(element.type) ||
|
|
627
|
+
var dataType = fieldConfig.data_type;
|
|
628
|
+
if ((element instanceof RadioNodeList || nullElements.includes(element.type) || !textDataTypes.includes(dataType)) && element.value === "") {
|
|
629
629
|
// Set empty value to null instead of empty string
|
|
630
630
|
value = null;
|
|
631
631
|
}
|
|
632
|
-
if (dataType
|
|
632
|
+
if (textDataTypes.includes(dataType) && textNullValue !== undefined && element.value === textNullValue) {
|
|
633
633
|
// Convert text NULL to null
|
|
634
634
|
value = null;
|
|
635
635
|
}
|
|
@@ -730,7 +730,7 @@ var AttributeTableWidget = /*#__PURE__*/function (_React$Component) {
|
|
|
730
730
|
if (this.state.loading) {
|
|
731
731
|
loadOverlay = /*#__PURE__*/React.createElement("div", {
|
|
732
732
|
className: "attribtable-overlay"
|
|
733
|
-
}, /*#__PURE__*/React.createElement(Spinner, null), /*#__PURE__*/React.createElement("span", null, LocaleUtils.tr("
|
|
733
|
+
}, /*#__PURE__*/React.createElement(Spinner, null), /*#__PURE__*/React.createElement("span", null, LocaleUtils.tr("common.loading")));
|
|
734
734
|
} else {
|
|
735
735
|
loadOverlay = /*#__PURE__*/React.createElement("div", {
|
|
736
736
|
className: "attribtable-overlay"
|
|
@@ -942,7 +942,7 @@ var AttributeTableWidget = /*#__PURE__*/function (_React$Component) {
|
|
|
942
942
|
}, /*#__PURE__*/React.createElement("option", {
|
|
943
943
|
disabled: true,
|
|
944
944
|
value: ""
|
|
945
|
-
}, LocaleUtils.tr("
|
|
945
|
+
}, LocaleUtils.tr("common.selectlayer")), Object.entries(this.props.editConfigs).map(function (_ref4) {
|
|
946
946
|
var _ref5 = _slicedToArray(_ref4, 2),
|
|
947
947
|
wmsName = _ref5[0],
|
|
948
948
|
serviceConfigs = _ref5[1];
|
|
@@ -1009,7 +1009,7 @@ var AttributeTableWidget = /*#__PURE__*/function (_React$Component) {
|
|
|
1009
1009
|
onClick: this.deleteSelectedFeatured
|
|
1010
1010
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
1011
1011
|
icon: "ok"
|
|
1012
|
-
}), /*#__PURE__*/React.createElement("span", null, LocaleUtils.tr("
|
|
1012
|
+
}), /*#__PURE__*/React.createElement("span", null, LocaleUtils.tr("common.delete"))) : deleteButton, this.state.confirmDelete ? /*#__PURE__*/React.createElement("button", {
|
|
1013
1013
|
className: "button button-reject",
|
|
1014
1014
|
onClick: function onClick() {
|
|
1015
1015
|
return _this2.setState({
|
|
@@ -103,7 +103,7 @@ var EditComboField = /*#__PURE__*/function (_React$Component) {
|
|
|
103
103
|
}, _this.state.showPlaceholder ? /*#__PURE__*/React.createElement("option", {
|
|
104
104
|
disabled: _this.props.required,
|
|
105
105
|
value: ""
|
|
106
|
-
}, (_this$props$placehold = _this.props.placeholder) !== null && _this$props$placehold !== void 0 ? _this$props$placehold : LocaleUtils.tr("
|
|
106
|
+
}, (_this$props$placehold = _this.props.placeholder) !== null && _this$props$placehold !== void 0 ? _this$props$placehold : LocaleUtils.tr("common.select")) : null, _this.state.values.map(function (item, index) {
|
|
107
107
|
var _this$itemValueLabel2 = _this.itemValueLabel(item),
|
|
108
108
|
value = _this$itemValueLabel2.value,
|
|
109
109
|
label = _this$itemValueLabel2.label;
|
|
@@ -224,7 +224,7 @@ var EditUploadField = /*#__PURE__*/function (_React$Component) {
|
|
|
224
224
|
}, {
|
|
225
225
|
key: 'Clear',
|
|
226
226
|
icon: 'clear',
|
|
227
|
-
tooltip: LocaleUtils.tr("
|
|
227
|
+
tooltip: LocaleUtils.tr("common.clear"),
|
|
228
228
|
disabled: this.props.disabled
|
|
229
229
|
}];
|
|
230
230
|
return /*#__PURE__*/React.createElement("span", {
|
|
@@ -49,6 +49,7 @@ import { zoomToPoint } from '../actions/map';
|
|
|
49
49
|
import { openExternalUrl } from '../actions/windows';
|
|
50
50
|
import ConfigUtils from '../utils/ConfigUtils';
|
|
51
51
|
import CoordinatesUtils from '../utils/CoordinatesUtils';
|
|
52
|
+
import { EXCLUDE_ATTRS, EXCLUDE_PROPS } from '../utils/IdentifyUtils';
|
|
52
53
|
import LayerUtils from '../utils/LayerUtils';
|
|
53
54
|
import LocaleUtils from '../utils/LocaleUtils';
|
|
54
55
|
import MapUtils from '../utils/MapUtils';
|
|
@@ -59,8 +60,6 @@ import NavBar from './widgets/NavBar';
|
|
|
59
60
|
import Spinner from './widgets/Spinner';
|
|
60
61
|
import ToggleSwitch from './widgets/ToggleSwitch';
|
|
61
62
|
import './style/IdentifyViewer.css';
|
|
62
|
-
var EXCLUDE_PROPS = ['featurereport', 'displayfield', 'layername', 'layertitle', 'layerinfo', 'attribnames', 'clickPos', 'displayname', 'bbox'];
|
|
63
|
-
var EXCLUDE_ATTRS = ['htmlContent', 'htmlContentInline'];
|
|
64
63
|
var BuiltinExporters = [{
|
|
65
64
|
id: 'json',
|
|
66
65
|
title: 'json',
|
|
@@ -880,7 +879,7 @@ var IdentifyViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
880
879
|
multiViewEnabled: active
|
|
881
880
|
});
|
|
882
881
|
}
|
|
883
|
-
}))) : null, exportEnabled ? /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", null, LocaleUtils.tr("
|
|
882
|
+
}))) : null, exportEnabled ? /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", null, LocaleUtils.tr("common.export"), ":"), /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("div", {
|
|
884
883
|
className: "controlgroup"
|
|
885
884
|
}, /*#__PURE__*/React.createElement("select", {
|
|
886
885
|
className: "controlgroup-expanditem",
|
|
@@ -901,7 +900,7 @@ var IdentifyViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
901
900
|
onClick: function onClick() {
|
|
902
901
|
return _this.exportResults();
|
|
903
902
|
},
|
|
904
|
-
title: LocaleUtils.tr("
|
|
903
|
+
title: LocaleUtils.tr("common.download")
|
|
905
904
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
906
905
|
icon: "export"
|
|
907
906
|
})), /*#__PURE__*/React.createElement("button", {
|
|
@@ -23,6 +23,7 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
25
|
import React from 'react';
|
|
26
|
+
import ReactDOM from 'react-dom';
|
|
26
27
|
import { connect } from 'react-redux';
|
|
27
28
|
import PropTypes from 'prop-types';
|
|
28
29
|
import { setEditContext } from '../actions/editing';
|
|
@@ -31,6 +32,8 @@ import { getFeatureTemplate } from '../utils/EditingUtils';
|
|
|
31
32
|
import LocaleUtils from '../utils/LocaleUtils';
|
|
32
33
|
import MapUtils from '../utils/MapUtils';
|
|
33
34
|
import AttributeForm from './AttributeForm';
|
|
35
|
+
import MeasureSwitcher from './MeasureSwitcher';
|
|
36
|
+
import { BottomToolPortalContext } from './PluginsContainer';
|
|
34
37
|
import './style/LinkFeatureForm.css';
|
|
35
38
|
var LinkFeatureForm = /*#__PURE__*/function (_React$Component) {
|
|
36
39
|
function LinkFeatureForm() {
|
|
@@ -45,6 +48,12 @@ var LinkFeatureForm = /*#__PURE__*/function (_React$Component) {
|
|
|
45
48
|
pickedFeatures: null,
|
|
46
49
|
highlightedFeature: null
|
|
47
50
|
});
|
|
51
|
+
_defineProperty(_this, "changeMeasurementState", function (diff) {
|
|
52
|
+
var editContext = _this.props.editing.contexts[_this.props.editContextId];
|
|
53
|
+
_this.props.setEditContext(_this.props.editContextId, {
|
|
54
|
+
measurements: _objectSpread(_objectSpread({}, editContext.measurements), diff)
|
|
55
|
+
});
|
|
56
|
+
});
|
|
48
57
|
_defineProperty(_this, "childPickQuery", function (coordinate) {
|
|
49
58
|
var scale = Math.round(MapUtils.computeForZoom(_this.props.map.scales, _this.props.map.zoom));
|
|
50
59
|
_this.props.iface.getFeature(_this.props.editConfig, coordinate, _this.props.map.projection, scale, 96, function (featureCollection) {
|
|
@@ -200,11 +209,13 @@ var LinkFeatureForm = /*#__PURE__*/function (_React$Component) {
|
|
|
200
209
|
className: "button",
|
|
201
210
|
disabled: editContext.changed,
|
|
202
211
|
onClick: this.finish
|
|
203
|
-
}, LocaleUtils.tr("
|
|
212
|
+
}, LocaleUtils.tr("common.cancel"))));
|
|
204
213
|
} else if (editContext.feature) {
|
|
214
|
+
var _editContext$feature;
|
|
205
215
|
var drawing = editContext.action === 'Draw' && !editContext.feature.geometry && this.props.editConfig.geomType;
|
|
206
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
207
|
-
className: "link-feature-form"
|
|
216
|
+
return [/*#__PURE__*/React.createElement("div", {
|
|
217
|
+
className: "link-feature-form",
|
|
218
|
+
key: "LinkFeatureForm"
|
|
208
219
|
}, drawing ? /*#__PURE__*/React.createElement("div", {
|
|
209
220
|
className: "link-feature-form-hint"
|
|
210
221
|
}, /*#__PURE__*/React.createElement("span", null, LocaleUtils.tr("linkfeatureform.drawhint"))) : /*#__PURE__*/React.createElement(AttributeForm, {
|
|
@@ -220,13 +231,19 @@ var LinkFeatureForm = /*#__PURE__*/function (_React$Component) {
|
|
|
220
231
|
className: "button",
|
|
221
232
|
disabled: editContext.changed,
|
|
222
233
|
onClick: this.finish
|
|
223
|
-
}, drawing ? LocaleUtils.tr("
|
|
234
|
+
}, drawing ? LocaleUtils.tr("common.cancel") : LocaleUtils.tr("common.close")))), drawing || (_editContext$feature = editContext.feature) !== null && _editContext$feature !== void 0 && _editContext$feature.geometry ? /*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/React.createElement(MeasureSwitcher, {
|
|
235
|
+
changeMeasureState: this.changeMeasurementState,
|
|
236
|
+
geomType: editContext.geomType,
|
|
237
|
+
iconSize: "large",
|
|
238
|
+
measureState: editContext.measurements
|
|
239
|
+
}), this.context) : null];
|
|
224
240
|
} else {
|
|
225
241
|
return null;
|
|
226
242
|
}
|
|
227
243
|
}
|
|
228
244
|
}]);
|
|
229
245
|
}(React.Component);
|
|
246
|
+
_defineProperty(LinkFeatureForm, "contextType", BottomToolPortalContext);
|
|
230
247
|
_defineProperty(LinkFeatureForm, "propTypes", {
|
|
231
248
|
action: PropTypes.string,
|
|
232
249
|
addLayerFeatures: PropTypes.func,
|
|
@@ -0,0 +1,115 @@
|
|
|
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
|
+
/**
|
|
16
|
+
* Copyright 2025 Sourcepole AG
|
|
17
|
+
* All rights reserved.
|
|
18
|
+
*
|
|
19
|
+
* This source code is licensed under the BSD-style license found in the
|
|
20
|
+
* LICENSE file in the root directory of this source tree.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import React from "react";
|
|
24
|
+
import PropTypes from "prop-types";
|
|
25
|
+
import LocaleUtils from "../utils/LocaleUtils";
|
|
26
|
+
import Icon from "./Icon";
|
|
27
|
+
var MeasureSwitcher = /*#__PURE__*/function (_React$PureComponent) {
|
|
28
|
+
function MeasureSwitcher() {
|
|
29
|
+
_classCallCheck(this, MeasureSwitcher);
|
|
30
|
+
return _callSuper(this, MeasureSwitcher, arguments);
|
|
31
|
+
}
|
|
32
|
+
_inherits(MeasureSwitcher, _React$PureComponent);
|
|
33
|
+
return _createClass(MeasureSwitcher, [{
|
|
34
|
+
key: "render",
|
|
35
|
+
value: function render() {
|
|
36
|
+
var _this$props$className,
|
|
37
|
+
_this = this;
|
|
38
|
+
var style = {
|
|
39
|
+
width: 'fit-content'
|
|
40
|
+
};
|
|
41
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
42
|
+
className: "controlgroup " + ((_this$props$className = this.props.className) !== null && _this$props$className !== void 0 ? _this$props$className : "")
|
|
43
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
44
|
+
className: "button" + (this.props.measureState.showmeasurements ? " pressed" : ""),
|
|
45
|
+
onClick: function onClick() {
|
|
46
|
+
return _this.props.changeMeasureState({
|
|
47
|
+
showmeasurements: !_this.props.measureState.showmeasurements
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
title: LocaleUtils.tr("measureComponent.showmeasurements")
|
|
51
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
52
|
+
icon: "measure",
|
|
53
|
+
size: this.props.iconSize
|
|
54
|
+
})), this.props.measureState.showmeasurements && ['LineString', 'Circle'].includes(this.props.geomType) ? /*#__PURE__*/React.createElement("select", {
|
|
55
|
+
className: "controlgroup-fillitem",
|
|
56
|
+
onChange: function onChange(ev) {
|
|
57
|
+
return _this.props.changeMeasureState({
|
|
58
|
+
lenUnit: ev.target.value
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
style: style,
|
|
62
|
+
value: this.props.measureState.lenUnit
|
|
63
|
+
}, /*#__PURE__*/React.createElement("option", {
|
|
64
|
+
value: "metric"
|
|
65
|
+
}, LocaleUtils.tr("measureComponent.metric")), /*#__PURE__*/React.createElement("option", {
|
|
66
|
+
value: "imperial"
|
|
67
|
+
}, LocaleUtils.tr("measureComponent.imperial")), /*#__PURE__*/React.createElement("option", {
|
|
68
|
+
value: "m"
|
|
69
|
+
}, "m"), /*#__PURE__*/React.createElement("option", {
|
|
70
|
+
value: "km"
|
|
71
|
+
}, "km"), /*#__PURE__*/React.createElement("option", {
|
|
72
|
+
value: "ft"
|
|
73
|
+
}, "ft"), /*#__PURE__*/React.createElement("option", {
|
|
74
|
+
value: "mi"
|
|
75
|
+
}, "mi")) : null, this.props.measureState.showmeasurements && ['Polygon', 'Ellipse', 'Square', 'Box'].includes(this.props.geomType) ? /*#__PURE__*/React.createElement("select", {
|
|
76
|
+
className: "controlgroup-fillitem",
|
|
77
|
+
onChange: function onChange(ev) {
|
|
78
|
+
return _this.props.changeMeasureState({
|
|
79
|
+
areaUnit: ev.target.value
|
|
80
|
+
});
|
|
81
|
+
},
|
|
82
|
+
style: style,
|
|
83
|
+
value: this.props.measureState.areaUnit
|
|
84
|
+
}, /*#__PURE__*/React.createElement("option", {
|
|
85
|
+
value: "metric"
|
|
86
|
+
}, LocaleUtils.tr("measureComponent.metric")), /*#__PURE__*/React.createElement("option", {
|
|
87
|
+
value: "imperial"
|
|
88
|
+
}, LocaleUtils.tr("measureComponent.imperial")), /*#__PURE__*/React.createElement("option", {
|
|
89
|
+
value: "sqm"
|
|
90
|
+
}, "m\xB2"), /*#__PURE__*/React.createElement("option", {
|
|
91
|
+
value: "ha"
|
|
92
|
+
}, "ha"), /*#__PURE__*/React.createElement("option", {
|
|
93
|
+
value: "sqkm"
|
|
94
|
+
}, "km\xB2"), /*#__PURE__*/React.createElement("option", {
|
|
95
|
+
value: "sqft"
|
|
96
|
+
}, "ft\xB2"), /*#__PURE__*/React.createElement("option", {
|
|
97
|
+
value: "acre"
|
|
98
|
+
}, "acre"), /*#__PURE__*/React.createElement("option", {
|
|
99
|
+
value: "sqmi"
|
|
100
|
+
}, "mi\xB2")) : null);
|
|
101
|
+
}
|
|
102
|
+
}]);
|
|
103
|
+
}(React.PureComponent);
|
|
104
|
+
_defineProperty(MeasureSwitcher, "propTypes", {
|
|
105
|
+
changeMeasureState: PropTypes.func,
|
|
106
|
+
className: PropTypes.string,
|
|
107
|
+
geomType: PropTypes.string,
|
|
108
|
+
iconSize: PropTypes.string,
|
|
109
|
+
measureState: PropTypes.shape({
|
|
110
|
+
showmeasurements: PropTypes.bool,
|
|
111
|
+
lenUnit: PropTypes.string,
|
|
112
|
+
areaUnit: PropTypes.string
|
|
113
|
+
})
|
|
114
|
+
});
|
|
115
|
+
export { MeasureSwitcher as default };
|
|
@@ -0,0 +1,147 @@
|
|
|
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 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; }
|
|
3
|
+
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; }
|
|
4
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
5
|
+
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); } }
|
|
6
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
7
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
8
|
+
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); }
|
|
9
|
+
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
10
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
11
|
+
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
|
|
12
|
+
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); }
|
|
13
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
14
|
+
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; }
|
|
15
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
16
|
+
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); }
|
|
17
|
+
/**
|
|
18
|
+
* Copyright 2024 Sourcepole AG
|
|
19
|
+
* All rights reserved.
|
|
20
|
+
*
|
|
21
|
+
* This source code is licensed under the BSD-style license found in the
|
|
22
|
+
* LICENSE file in the root directory of this source tree.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
import React from 'react';
|
|
26
|
+
import ol from 'openlayers';
|
|
27
|
+
import PropTypes from 'prop-types';
|
|
28
|
+
import viewconeIcon from '../resources/viewcone.svg';
|
|
29
|
+
import OlLayer from './map/OlLayer';
|
|
30
|
+
import './style/OverviewMapButton.css';
|
|
31
|
+
var OverviewMapButton = /*#__PURE__*/function (_React$Component) {
|
|
32
|
+
function OverviewMapButton(props) {
|
|
33
|
+
var _this;
|
|
34
|
+
_classCallCheck(this, OverviewMapButton);
|
|
35
|
+
_this = _callSuper(this, OverviewMapButton, [props]);
|
|
36
|
+
_defineProperty(_this, "state", {
|
|
37
|
+
collapsed: true
|
|
38
|
+
});
|
|
39
|
+
_defineProperty(_this, "initOverviewMap", function (el) {
|
|
40
|
+
if (el) {
|
|
41
|
+
_this.map = new ol.Map({
|
|
42
|
+
layers: [_this.viewConeLayer],
|
|
43
|
+
controls: [],
|
|
44
|
+
target: el
|
|
45
|
+
});
|
|
46
|
+
_this.setupView();
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
_defineProperty(_this, "setupView", function () {
|
|
50
|
+
var overviewView = new ol.View({
|
|
51
|
+
enableRotation: false,
|
|
52
|
+
projection: _this.props.projection
|
|
53
|
+
});
|
|
54
|
+
_this.map.setView(overviewView);
|
|
55
|
+
_this.updateViewCone();
|
|
56
|
+
});
|
|
57
|
+
_defineProperty(_this, "updateViewCone", function () {
|
|
58
|
+
if (_this.props.center) {
|
|
59
|
+
_this.map.getView().setCenter(_this.props.center);
|
|
60
|
+
_this.map.getView().setResolution(_this.props.resolution);
|
|
61
|
+
_this.viewConeFeature.getGeometry().setCoordinates(_this.props.center);
|
|
62
|
+
_this.viewConeFeature.set('rotation', _this.props.coneRotation, true);
|
|
63
|
+
_this.viewConeLayer.getSource().changed();
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
_this.map = null;
|
|
67
|
+
_this.viewConeFeature = new ol.Feature(new ol.geom.Point([0, 0]));
|
|
68
|
+
_this.viewConeLayer = new ol.layer.Vector({
|
|
69
|
+
source: new ol.source.Vector({
|
|
70
|
+
features: [_this.viewConeFeature]
|
|
71
|
+
}),
|
|
72
|
+
style: function style(feature) {
|
|
73
|
+
return new ol.style.Style({
|
|
74
|
+
fill: new ol.style.Fill({
|
|
75
|
+
color: 'white'
|
|
76
|
+
}),
|
|
77
|
+
stroke: new ol.style.Stroke({
|
|
78
|
+
color: 'red',
|
|
79
|
+
width: 2
|
|
80
|
+
}),
|
|
81
|
+
image: new ol.style.Icon({
|
|
82
|
+
anchor: [0.5, 1],
|
|
83
|
+
anchorXUnits: 'fraction',
|
|
84
|
+
anchorYUnits: 'fraction',
|
|
85
|
+
src: viewconeIcon,
|
|
86
|
+
rotation: feature.get('rotation'),
|
|
87
|
+
scale: 2
|
|
88
|
+
})
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
zIndex: 10000
|
|
92
|
+
});
|
|
93
|
+
return _this;
|
|
94
|
+
}
|
|
95
|
+
_inherits(OverviewMapButton, _React$Component);
|
|
96
|
+
return _createClass(OverviewMapButton, [{
|
|
97
|
+
key: "componentDidUpdate",
|
|
98
|
+
value: function componentDidUpdate(prevProps, prevState) {
|
|
99
|
+
if (this.props.projection !== prevProps.projection) {
|
|
100
|
+
this.setupView();
|
|
101
|
+
}
|
|
102
|
+
if (this.map && (this.props.center !== prevProps.center || this.props.resolution !== prevProps.resolution || this.props.coneRotation !== prevProps.coneRotation)) {
|
|
103
|
+
this.updateViewCone();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}, {
|
|
107
|
+
key: "render",
|
|
108
|
+
value: function render() {
|
|
109
|
+
var _this2 = this;
|
|
110
|
+
var style = {
|
|
111
|
+
display: this.state.collapsed ? 'none' : 'initial'
|
|
112
|
+
};
|
|
113
|
+
return [/*#__PURE__*/React.createElement("div", {
|
|
114
|
+
className: "overview-map",
|
|
115
|
+
key: "OverivewMap"
|
|
116
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
117
|
+
className: "ol-overviewmap-map",
|
|
118
|
+
ref: this.initOverviewMap,
|
|
119
|
+
style: style
|
|
120
|
+
}), /*#__PURE__*/React.createElement("button", {
|
|
121
|
+
onClick: function onClick() {
|
|
122
|
+
return _this2.setState(function (state) {
|
|
123
|
+
return {
|
|
124
|
+
collapsed: !state.collapsed
|
|
125
|
+
};
|
|
126
|
+
});
|
|
127
|
+
},
|
|
128
|
+
type: "button"
|
|
129
|
+
}, this.state.collapsed ? '«' : '»')), this.map && this.props.layer ? /*#__PURE__*/React.createElement(OlLayer, {
|
|
130
|
+
key: this.props.layer.name,
|
|
131
|
+
map: this.map,
|
|
132
|
+
options: _objectSpread(_objectSpread({}, this.props.layer), {}, {
|
|
133
|
+
visibility: true
|
|
134
|
+
}),
|
|
135
|
+
projection: this.props.projection
|
|
136
|
+
}) : null];
|
|
137
|
+
}
|
|
138
|
+
}]);
|
|
139
|
+
}(React.Component);
|
|
140
|
+
_defineProperty(OverviewMapButton, "propTypes", {
|
|
141
|
+
center: PropTypes.array,
|
|
142
|
+
coneRotation: PropTypes.number,
|
|
143
|
+
layer: PropTypes.object,
|
|
144
|
+
projection: PropTypes.string,
|
|
145
|
+
resolution: PropTypes.number
|
|
146
|
+
});
|
|
147
|
+
export { OverviewMapButton as default };
|
|
@@ -268,9 +268,10 @@ var PluginsContainer = /*#__PURE__*/function (_React$Component) {
|
|
|
268
268
|
style: mapContainerStyle
|
|
269
269
|
}), /*#__PURE__*/React.createElement("div", {
|
|
270
270
|
className: "map-bottom-tool-container",
|
|
271
|
-
ref: this.setBottomToolContanerRef,
|
|
272
271
|
style: mapContainerStyle
|
|
273
|
-
}
|
|
272
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
273
|
+
ref: this.setBottomToolContanerRef
|
|
274
|
+
})));
|
|
274
275
|
}
|
|
275
276
|
}]);
|
|
276
277
|
}(React.Component);
|
|
@@ -652,7 +652,7 @@ var QtDesignerForm = /*#__PURE__*/function (_React$Component) {
|
|
|
652
652
|
_featurebuttons.push({
|
|
653
653
|
key: 'Pick',
|
|
654
654
|
icon: 'pick',
|
|
655
|
-
label: LocaleUtils.tr("
|
|
655
|
+
label: LocaleUtils.tr("common.pick")
|
|
656
656
|
});
|
|
657
657
|
}
|
|
658
658
|
_featurebuttons.push({
|
|
@@ -697,7 +697,7 @@ var QtDesignerForm = /*#__PURE__*/function (_React$Component) {
|
|
|
697
697
|
var _featurebuttons3 = [{
|
|
698
698
|
key: 'Pick',
|
|
699
699
|
icon: 'pick',
|
|
700
|
-
label: LocaleUtils.tr("
|
|
700
|
+
label: LocaleUtils.tr("common.pick")
|
|
701
701
|
}, {
|
|
702
702
|
key: 'Create',
|
|
703
703
|
icon: 'editdraw',
|
|
@@ -137,7 +137,7 @@ var ResizeableWindow = /*#__PURE__*/function (_React$Component) {
|
|
|
137
137
|
className: iconClasses,
|
|
138
138
|
icon: "remove",
|
|
139
139
|
onClick: _this.onClose,
|
|
140
|
-
title: LocaleUtils.tr("
|
|
140
|
+
title: LocaleUtils.tr("common.close")
|
|
141
141
|
}) : null);
|
|
142
142
|
});
|
|
143
143
|
_defineProperty(_this, "renderInternalWindowContainer", function () {
|
package/components/SearchBox.js
CHANGED
|
@@ -128,7 +128,7 @@ var SearchBox = /*#__PURE__*/function (_React$Component) {
|
|
|
128
128
|
value: _this.state.selectedProvider
|
|
129
129
|
}, /*#__PURE__*/React.createElement("div", {
|
|
130
130
|
value: ""
|
|
131
|
-
}, LocaleUtils.tr("
|
|
131
|
+
}, LocaleUtils.tr("common.all")), Object.entries(_this.props.searchProviders).map(function (_ref) {
|
|
132
132
|
var _prov$params, _prov$label;
|
|
133
133
|
var _ref2 = _slicedToArray(_ref, 2),
|
|
134
134
|
key = _ref2[0],
|
|
@@ -162,14 +162,14 @@ var SearchBox = /*#__PURE__*/function (_React$Component) {
|
|
|
162
162
|
}
|
|
163
163
|
var filterButtons = [{
|
|
164
164
|
key: "Polygon",
|
|
165
|
-
tooltip: LocaleUtils.tr("
|
|
165
|
+
tooltip: LocaleUtils.tr("common.polygon"),
|
|
166
166
|
icon: "polygon",
|
|
167
|
-
label: LocaleUtils.tr("
|
|
167
|
+
label: LocaleUtils.tr("common.polygon")
|
|
168
168
|
}, {
|
|
169
169
|
key: "Circle",
|
|
170
|
-
tooltip: LocaleUtils.tr("
|
|
170
|
+
tooltip: LocaleUtils.tr("common.circle"),
|
|
171
171
|
icon: "circle",
|
|
172
|
-
label: LocaleUtils.tr("
|
|
172
|
+
label: LocaleUtils.tr("common.circle")
|
|
173
173
|
}];
|
|
174
174
|
return /*#__PURE__*/React.createElement("div", {
|
|
175
175
|
className: "searchbox-filter-options"
|
|
@@ -182,7 +182,7 @@ var SearchBox = /*#__PURE__*/function (_React$Component) {
|
|
|
182
182
|
}), searchRegionSelection, /*#__PURE__*/React.createElement("button", {
|
|
183
183
|
className: "button",
|
|
184
184
|
onClick: _this.clearFilter,
|
|
185
|
-
title: LocaleUtils.tr("
|
|
185
|
+
title: LocaleUtils.tr("common.clear")
|
|
186
186
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
187
187
|
icon: "clear"
|
|
188
188
|
}))))), _this.state.filterGeomType === 'Circle' ? /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", null, LocaleUtils.tr("search.circleradius"), ":"), /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement(NumberInput, {
|
|
@@ -253,7 +253,7 @@ var SearchBox = /*#__PURE__*/function (_React$Component) {
|
|
|
253
253
|
className: "searchbox-noresults",
|
|
254
254
|
disabled: true,
|
|
255
255
|
key: "noresults"
|
|
256
|
-
}, LocaleUtils.tr("
|
|
256
|
+
}, LocaleUtils.tr("common.noresults"));
|
|
257
257
|
} else {
|
|
258
258
|
return null;
|
|
259
259
|
}
|
|
@@ -498,7 +498,7 @@ var EditTool3D = /*#__PURE__*/function (_React$Component) {
|
|
|
498
498
|
}];
|
|
499
499
|
var extraButtons = [{
|
|
500
500
|
key: "clone",
|
|
501
|
-
tooltip: LocaleUtils.tr("
|
|
501
|
+
tooltip: LocaleUtils.tr("common.clone"),
|
|
502
502
|
icon: "clone"
|
|
503
503
|
}, {
|
|
504
504
|
key: "NumericInput",
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
div.LocationRecorder {
|
|
2
|
-
display:
|
|
2
|
+
display: flex;
|
|
3
3
|
align-items: center;
|
|
4
|
-
padding: 0.25em 0.5em;
|
|
5
|
-
background-color: var(--container-bg-color);
|
|
6
|
-
box-shadow: 0px -2px 4px rgba(136, 136, 136, 0.5);
|
|
7
|
-
border-bottom: 1px solid rgba(136, 136, 136, 0.5);
|
|
8
4
|
column-gap: 0.25em;
|
|
9
|
-
order: 1;
|
|
10
5
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
div.overview-map
|
|
1
|
+
div.overview-map {
|
|
2
2
|
position: absolute;
|
|
3
3
|
bottom: 0;
|
|
4
4
|
right: 0;
|
|
5
5
|
z-index: 101;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
div.overview-map
|
|
8
|
+
div.overview-map > button {
|
|
9
9
|
font-size: initial!important;
|
|
10
10
|
right: 0.25em;
|
|
11
11
|
bottom: 0.25em;
|
|
@@ -21,7 +21,7 @@ div.overview-map-3d > button {
|
|
|
21
21
|
font-weight: bold;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
div.overview-map
|
|
24
|
+
div.overview-map > div.ol-overviewmap-map {
|
|
25
25
|
position: absolute;
|
|
26
26
|
right: 1px;
|
|
27
27
|
bottom: 1px;
|
|
@@ -32,6 +32,6 @@ div.overview-map-3d > div.ol-overviewmap-map-3d {
|
|
|
32
32
|
border: 1px solid var(--border-color);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
div.overview-map
|
|
35
|
+
div.overview-map.ol-collapsed > div.ol-overviewmap-map {
|
|
36
36
|
display: none;
|
|
37
37
|
}
|